#include <bits/stdc++.h>
using namespace std;
#define io_speed_up ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
template<typename T>void rd(T&x){int f=0,c;while(!isdigit(c=getchar()))f^=!(c^45);x=(c&15);while(isdigit(c=getchar()))x=x*10+(c&15);if(f)x=-x;} //读整型
template<typename T>void pt(T x,int c=10){if(x<0)putchar('-'),x=-x;if(x>9)pt(x/10,-1);putchar(x%10+48);if(c!=-1)putchar(c);}
template<typename T>void umax(T&x,const T&y){if(x<y)x=y;}
template<typename T>void umin(T&x,const T&y){if(x>y)x=y;}
#define rep(i,a,b) for (int i=a;i<=b;i++)
#define per(i,a,b) for (int i=a;i>=b;i--)
#define for1(i,n) for (int i=1;i<=n;i++)
#define for0(i,n) for (int i=0;i<n;i++)
#define ms(a,b) memset(a,b,sizeof a)
#define all(n) (n).begin(), (n).end()
#define sz(x) (int)x.size()
#define fi first
#define se second
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<long,long>;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+5;
const int mod = 1e9+7;
int n,a[maxn];
int main()
{
io_speed_up;
int T;
cin>>T;
while(T--) {
cin>>n;
int k = n/2; //[2,k] -> n , [k+1,n-1] -> 1
ll sum = 1LL*(n-1)*(n-1);
int pre = n;
rep(i,2,k) {
sum += 1LL*(n-i)*(n-i);
a[pre] = i;
pre = i;
}
a[pre] = 1;
pre = 1;
rep(i,k+1,n-1) {
sum += 1LL*(i-1)*(i-1);
a[pre] = i;
pre = i;
}
a[pre] = n;
cout<<sum<<"\n";
rep(i,1,n) cout<<a[i]<<" \n"[i==n];
cout<<n-1<<"\n";
rep(i,2,k) cout<<i<<" "<<n<<"\n";
rep(i,k+1,n-1) cout<<i<<" "<<1<<"\n";
cout<<1<<" "<<n<<"\n";
}
return 0;
}
CgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpb19zcGVlZF91cCBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksY2luLnRpZSgwKSxjb3V0LnRpZSgwKQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPnZvaWQgcmQoVCZ4KXtpbnQgZj0wLGM7d2hpbGUoIWlzZGlnaXQoYz1nZXRjaGFyKCkpKWZePSEoY140NSk7eD0oYyYxNSk7d2hpbGUoaXNkaWdpdChjPWdldGNoYXIoKSkpeD14KjEwKyhjJjE1KTtpZihmKXg9LXg7fSAvL+ivu+aVtOWeiwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPnZvaWQgcHQoVCB4LGludCBjPTEwKXtpZih4PDApcHV0Y2hhcignLScpLHg9LXg7aWYoeD45KXB0KHgvMTAsLTEpO3B1dGNoYXIoeCUxMCs0OCk7aWYoYyE9LTEpcHV0Y2hhcihjKTt9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+dm9pZCB1bWF4KFQmeCxjb25zdCBUJnkpe2lmKHg8eSl4PXk7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPnZvaWQgdW1pbihUJngsY29uc3QgVCZ5KXtpZih4PnkpeD15O30KI2RlZmluZSByZXAoaSxhLGIpIGZvciAoaW50IGk9YTtpPD1iO2krKykKI2RlZmluZSBwZXIoaSxhLGIpIGZvciAoaW50IGk9YTtpPj1iO2ktLSkKI2RlZmluZSBmb3IxKGksbikgZm9yIChpbnQgaT0xO2k8PW47aSsrKQojZGVmaW5lIGZvcjAoaSxuKSBmb3IgKGludCBpPTA7aTxuO2krKykKI2RlZmluZSBtcyhhLGIpICBtZW1zZXQoYSxiLHNpemVvZiBhKQojZGVmaW5lIGFsbChuKSAobikuYmVnaW4oKSwgKG4pLmVuZCgpCiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCnVzaW5nIGxsID0gbG9uZyBsb25nOwp1c2luZyBsZCA9IGxvbmcgZG91YmxlOwp1c2luZyBwaWkgPSBwYWlyPGludCxpbnQ+Owp1c2luZyBwbGwgPSBwYWlyPGxvbmcsbG9uZz47CmNvbnN0IGludCBpbmYgPSAweDNmM2YzZjNmOwpjb25zdCBpbnQgbWF4biA9IDFlNSs1Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7CmludCBuLGFbbWF4bl07CmludCBtYWluKCkKewogICAgaW9fc3BlZWRfdXA7CiAgICBpbnQgVDsKICAgIGNpbj4+VDsKICAgIHdoaWxlKFQtLSkgewogICAgICAgIGNpbj4+bjsgCiAgICAgICAgaW50IGsgPSBuLzI7IC8vWzIsa10gLT4gbiAsICBbaysxLG4tMV0gLT4gMQogICAgICAgIGxsIHN1bSA9IDFMTCoobi0xKSoobi0xKTsKICAgICAgICBpbnQgcHJlID0gbjsKICAgICAgICByZXAoaSwyLGspIHsKICAgICAgICAgICAgc3VtICs9IDFMTCoobi1pKSoobi1pKTsKICAgICAgICAgICAgYVtwcmVdID0gaTsKICAgICAgICAgICAgcHJlID0gaTsKICAgICAgICB9CiAgICAgICAgYVtwcmVdID0gMTsKICAgICAgICBwcmUgPSAxOwogICAgICAgIHJlcChpLGsrMSxuLTEpIHsKICAgICAgICAgICAgc3VtICs9IDFMTCooaS0xKSooaS0xKTsKICAgICAgICAgICAgYVtwcmVdID0gaTsKICAgICAgICAgICAgcHJlID0gaTsKICAgICAgICB9CiAgICAgICAgYVtwcmVdID0gbjsKICAgICAgICBjb3V0PDxzdW08PCJcbiI7CiAgICAgICAgcmVwKGksMSxuKSBjb3V0PDxhW2ldPDwiIFxuIltpPT1uXTsKICAgICAgICAKICAgICAgICBjb3V0PDxuLTE8PCJcbiI7CiAgICAgICAgcmVwKGksMixrKSBjb3V0PDxpPDwiICI8PG48PCJcbiI7CiAgICAgICAgcmVwKGksaysxLG4tMSkgY291dDw8aTw8IiAiPDwxPDwiXG4iOwogICAgICAgIGNvdXQ8PDE8PCIgIjw8bjw8IlxuIjsKIAogICAgfQogICAgcmV0dXJuIDA7Cn0K