#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef string str;
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define len(x) ((int)(x).size())
#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define forr(i, l, r) for (int i = (int)(l); i <= (int)(r); ++i)
#define ford(i, r, l) for (int i = (int)(r); i >= (int)(l); --i)
#define cmin(a, b) a = min(a, b)
#define cmax(a, b) a = max(a, b)
void solve() {
int n;
cin >> n;
auto check = [&](int M) {
ll sum = 0;
forr(i, 1, n) sum += 1LL * i * (M / i);
return sum >= n;
};
int low = 1, high = n, ans = n;
while (low <= high) {
int mid = low + (high - low) / 2;
if (check(mid)) {
ans = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
cout << ans << "\n";
vi a;
int bag = 1;
ford(i, n, 1) {
int limit = ans / i;
while (limit-- > 0 && len(a) + i <= n) {
forn(j, i) a.pb(bag);
bag++;
}
}
while (len(a) < n) {
a.pb(bag++);
}
forn(i, n) {
cout << a[i] << (i == n - 1 ? "" : " ");
}
cout << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
if (cin >> t) {
while (t--) {
solve();
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHN0cmluZyBzdHI7CgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSBsZW4oeCkgKChpbnQpKHgpLnNpemUoKSkKI2RlZmluZSBmb3JuKGksIG4pIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCkobik7ICsraSkKI2RlZmluZSBmb3JyKGksIGwsIHIpIGZvciAoaW50IGkgPSAoaW50KShsKTsgaSA8PSAoaW50KShyKTsgKytpKQojZGVmaW5lIGZvcmQoaSwgciwgbCkgZm9yIChpbnQgaSA9IChpbnQpKHIpOyBpID49IChpbnQpKGwpOyAtLWkpCiNkZWZpbmUgY21pbihhLCBiKSBhID0gbWluKGEsIGIpCiNkZWZpbmUgY21heChhLCBiKSBhID0gbWF4KGEsIGIpCgp2b2lkIHNvbHZlKCkgewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICBhdXRvIGNoZWNrID0gWyZdKGludCBNKSB7CiAgICAgICAgbGwgc3VtID0gMDsKICAgICAgICBmb3JyKGksIDEsIG4pIHN1bSArPSAxTEwgKiBpICogKE0gLyBpKTsKICAgICAgICByZXR1cm4gc3VtID49IG47CiAgICB9OwoKICAgIGludCBsb3cgPSAxLCBoaWdoID0gbiwgYW5zID0gbjsKICAgIHdoaWxlIChsb3cgPD0gaGlnaCkgewogICAgICAgIGludCBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwogICAgICAgIGlmIChjaGVjayhtaWQpKSB7CiAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKCiAgICB2aSBhOwogICAgaW50IGJhZyA9IDE7CiAgICBmb3JkKGksIG4sIDEpIHsKICAgICAgICBpbnQgbGltaXQgPSBhbnMgLyBpOwogICAgICAgIHdoaWxlIChsaW1pdC0tID4gMCAmJiBsZW4oYSkgKyBpIDw9IG4pIHsKICAgICAgICAgICAgZm9ybihqLCBpKSBhLnBiKGJhZyk7CiAgICAgICAgICAgIGJhZysrOwogICAgICAgIH0KICAgIH0KICAgIHdoaWxlIChsZW4oYSkgPCBuKSB7CiAgICAgICAgYS5wYihiYWcrKyk7CiAgICB9CgogICAgZm9ybihpLCBuKSB7CiAgICAgICAgY291dCA8PCBhW2ldIDw8IChpID09IG4gLSAxID8gIiIgOiAiICIpOwogICAgfQogICAgY291dCA8PCAiXG4iOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIAogICAgaW50IHQ7CiAgICBpZiAoY2luID4+IHQpIHsKICAgICAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgICAgIHNvbHZlKCk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K