#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
#define db double
#define pii pair<int,int>
#define endl "\n"
using namespace std;
void solve()
{
int n; cin >> n;
vector<int> color(n + 1, 0);
color[1] = 1;
for (int i = 2; i <= n; i++)
{
if (color[i] == 0)
color[i] = 2;
for (int j = 2 * i; j <= n; j += i)
if (color[j] < color[i] + 1)
color[j] = color[i] + 1;
}
cout << *max_element(color.begin(), color.end()) << endl;
for (int i = 1; i <= n; i++)
cout << color[i] << " ";
cout << endl;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T; cin >> T;
while (T--)
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZGIgZG91YmxlCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBlbmRsICJcbiIKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHNvbHZlKCkKewogICAgaW50IG47IGNpbiA+PiBuOwogICAgdmVjdG9yPGludD4gY29sb3IobiArIDEsIDApOwogICAgY29sb3JbMV0gPSAxOwoKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBpZiAoY29sb3JbaV0gPT0gMCkKICAgICAgICAgICAgY29sb3JbaV0gPSAyOwogICAgICAgICAgICAKICAgICAgICBmb3IgKGludCBqID0gMiAqIGk7IGogPD0gbjsgaiArPSBpKQogICAgICAgICAgICBpZiAoY29sb3Jbal0gPCBjb2xvcltpXSArIDEpCiAgICAgICAgICAgICAgICBjb2xvcltqXSA9IGNvbG9yW2ldICsgMTsKICAgIH0KCiAgICBjb3V0IDw8ICptYXhfZWxlbWVudChjb2xvci5iZWdpbigpLCBjb2xvci5lbmQoKSkgPDwgZW5kbDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBjb3V0IDw8IGNvbG9yW2ldIDw8ICIgIjsKICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50MzJfdCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CgogICAgaW50IFQ7IGNpbiA+PiBUOwogICAgd2hpbGUgKFQtLSkKICAgICAgICBzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9