// 106 #include using namespace std; int n; int a[100005], ord[100005], pos[100005]; int pre[100005], nxt[100005]; int ans[100005]; int t; int main() { scanf("%d", &t); while (t--) { int ll; scanf("%d %d", &ll, &n); printf("%d %d\n", ll, (n + 1) >> 1); for (int i = 1; i <= n; ++i) scanf("%d", &a[i]), ord[i] = i; sort(ord + 1, ord + n + 1, [](int x, int y) { return a[x] != a[y] ? a[x] < a[y] : x < y; }); for (int rank = 1; rank <= n; ++rank) { int x = ord[rank]; pos[x] = rank, pre[x] = (rank == 1 ? 0 : ord[rank - 1]), nxt[x] = (rank == n ? 0 : ord[rank + 1]); } int mid = ord[n / 2 + 1], cnt = 0; for (int len = n; len >= 1; --len) { if (len & 1) ans[++cnt] = a[mid]; if (len == 1) break; int x = len; if (len & 1) { if (pos[x] <= pos[mid]) mid = nxt[mid]; } else if (pos[x] >= pos[mid]) mid = pre[mid]; if (pre[x]) nxt[pre[x]] = nxt[x]; if (nxt[x]) pre[nxt[x]] = pre[x]; } for (int i = cnt; i >= 1; --i) printf("%d%c", ans[i], ((cnt - i + 1) % 10) ? ' ' : '\n'); if (cnt % 10) puts(""); } return 0; }