/* Shubhulol */
//Header files
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <functional>
//Macros
#define ll long long
#define ld long double
#define db double
#define str string
#define lli long long int
#define ull unsigned long long
#define f(i,x,n) for(ll int i=x;i<n;i++)
#define re(j,x,n) for(ll int j=x;j>=n;j--)
#define f1(k,x,n) for(ll int k=x;k<=n;k++)
#define mp(x,y) std::make_pair(string(x),int(y))
#define pb push_back
#define input file();
#define bit(x, i) (x >>(i - 1) & 1ll)
#define w() int x; cin>>x; while(x--)
#define all(v) (v).begin(),(v).end()
#define MAX 1000001
#define nl '\n';
#define c1(x) cin>>x;
#define c2(x,s) cin>>x>>s;
#define o1(x) cout<<x<<'\n';
#define o2(x,y) cout<<x<<" "<<y<<'\n';
#define o3(x,y,z) cout<<x<<" "<<y<<" "<<z<<'\n';
#define o4(a,b,c,d) cout<<a<<" "<<b<<" "<<c<<" "<<d<<'\n';
//Variables
const ll MOD = 1e9 + 7;
const ll max = 1000000;
int inf = 0x3f3f3f3f;
ll infl = 0x3f3f3f3f3f3f3f3fLL;
ld infd = 1.0 / 0.0;
//inclusion
using namespace __gnu_pbds;
using namespace std;
//Unordered ds
typedef tree<pair<ll int, ll int>, null_type, less<pair<ll int, ll int> >, rb_tree_tag, tree_order_statistics_node_update>
new_data_set;
//Input file
void file() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}
void solve()
{
ll n = 0;
//c1 input
c1(n);
//o1 output
o1(n / 2);
//special case
if (n == 1) {
o1(1);
o2(1, 1);
return;
}
f1(i, 1, n) {
if (i == n)
{
o2(1, i);
}
else if (i == 1 && n >= 3) {
o4(3, 1, 2, 3);
i += 2;
} else {
o3(2, i, (i + 1));
i += 1;
}
}
}
int main()
{
input
w() {
solve();
cout << nl;
}
return 0;
}
// int main()
// {
// input
// solve();
// return 0;
// }
LyogU2h1Ymh1bG9sICovCgovL0hlYWRlciBmaWxlcwojaW5jbHVkZSAJCQk8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgCQkJPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZQkJCTxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgojaW5jbHVkZSAJCQk8ZnVuY3Rpb25hbD4KCi8vTWFjcm9zCiNkZWZpbmUgCQkJbGwgbG9uZyBsb25nCiNkZWZpbmUgCQkJbGQgbG9uZyBkb3VibGUKI2RlZmluZSAJCQlkYiBkb3VibGUKI2RlZmluZQkJCQlzdHIgc3RyaW5nCiNkZWZpbmUgICAgICAgICAgICAgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSAJCQl1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgCQkJZihpLHgsbikgZm9yKGxsIGludCBpPXg7aTxuO2krKykKI2RlZmluZSAJCQlyZShqLHgsbikgZm9yKGxsIGludCBqPXg7aj49bjtqLS0pCiNkZWZpbmUgCQkJZjEoayx4LG4pIGZvcihsbCBpbnQgaz14O2s8PW47aysrKQojZGVmaW5lIAkJCW1wKHgseSkgc3RkOjptYWtlX3BhaXIoc3RyaW5nKHgpLGludCh5KSkKI2RlZmluZSAJCQlwYiBwdXNoX2JhY2sKI2RlZmluZSAJCQlpbnB1dCAgZmlsZSgpOwojZGVmaW5lIAkJCWJpdCh4LCBpKSAoeCA+PihpIC0gMSkgJiAxbGwpCiNkZWZpbmUgCQkJdygpIGludCB4OyBjaW4+Png7IHdoaWxlKHgtLSkKI2RlZmluZSAJCQlhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgCQkJTUFYIDEwMDAwMDEKI2RlZmluZSAJCQlubCAnXG4nOwojZGVmaW5lICAJCQljMSh4KSBjaW4+Png7CiNkZWZpbmUJCQkJYzIoeCxzKSBjaW4+Png+PnM7CiNkZWZpbmUgCQkJbzEoeCkgY291dDw8eDw8J1xuJzsKI2RlZmluZSAJCQlvMih4LHkpIGNvdXQ8PHg8PCIgIjw8eTw8J1xuJzsKI2RlZmluZSAJCQlvMyh4LHkseikgY291dDw8eDw8IiAiPDx5PDwiICI8PHo8PCdcbic7CiNkZWZpbmUgCQkJbzQoYSxiLGMsZCkgY291dDw8YTw8IiAiPDxiPDwiICI8PGM8PCIgIjw8ZDw8J1xuJzsKCi8vVmFyaWFibGVzCmNvbnN0IGxsIE1PRCA9IDFlOSArIDc7CmNvbnN0IGxsIG1heCA9IDEwMDAwMDA7CmludCBpbmYgPSAweDNmM2YzZjNmOwpsbCBpbmZsID0gMHgzZjNmM2YzZjNmM2YzZjNmTEw7CmxkIGluZmQgPSAxLjAgLyAwLjA7CgovL2luY2x1c2lvbgp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vVW5vcmRlcmVkIGRzCnR5cGVkZWYgdHJlZTxwYWlyPGxsIGludCwgbGwgaW50PiwgbnVsbF90eXBlLCBsZXNzPHBhaXI8bGwgaW50LCBsbCBpbnQ+ID4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+Cm5ld19kYXRhX3NldDsKCi8vSW5wdXQgZmlsZQp2b2lkIGZpbGUoKSB7CiNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCglpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7Cn0KCnZvaWQgc29sdmUoKQp7CglsbCBuID0gMDsKCS8vYzEgaW5wdXQKCWMxKG4pOwoJLy9vMSBvdXRwdXQKCW8xKG4gLyAyKTsKCS8vc3BlY2lhbCBjYXNlCglpZiAobiA9PSAxKSB7CgkJbzEoMSk7CgkJbzIoMSwgMSk7CgkJcmV0dXJuOwoJfQoJZjEoaSwgMSwgbikgewoJCWlmIChpID09IG4pCgkJewoJCQlvMigxLCBpKTsKCQl9CgkJZWxzZSBpZiAoaSA9PSAxICYmIG4gPj0gMykgewoJCQlvNCgzLCAxLCAyLCAzKTsKCQkJaSArPSAyOwoJCX0gZWxzZSB7CgkJCW8zKDIsIGksIChpICsgMSkpOwoJCQlpICs9IDE7CgkJfQoJfQp9CgppbnQgbWFpbigpCnsKCWlucHV0Cgl3KCkgewoJCXNvbHZlKCk7CgkJY291dCA8PCBubDsKCX0KCXJldHVybiAwOwp9CgovLyBpbnQgbWFpbigpCi8vIHsKLy8gCWlucHV0Ci8vIAlzb2x2ZSgpOwovLyAJcmV0dXJuIDA7Ci8vIH0K