#include<bits/stdc++.h> // code by CHOW using namespace std; // Speed #define code ios_base::sync_with_stdio(false); #define by cin.tie(NULL); #define RR cout.tie(NULL); // Aliases using ll = long long; using lld = long double; using ull = unsigned long long; // Constants const lld pi = 3.141592653589793238; const ll INF = LONG_LONG_MAX; const ll mod = 1e9 + 7; // Macros #define pb push_back #define mp make_pair // Mathematical functions ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b); } ll lcm(ll a, ll b) { return (a / gcd(a, b) * b); } ll moduloMultiplication(ll a, ll b, ll mod) { ll res = 0; a %= mod; while (b) { if (b & 1) res = (res + a) % mod; b >>= 1; } return res; } ll powermod(ll x, ll y, ll p) { ll res = 1; x = x % p; if (x == 0) return 0; while (y > 0) { if (y & 1) res = (res * x) % p; y = y >> 1; x = (x * x) % p; } return res; } // DP int longestCommonSubstringLength(string s1, string s2) { int m = s1.length(), n = s2.length(); vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); int maxLength = 0; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (s1[i - 1] == s2[j - 1]) { dp[i][j] = dp[i - 1][j - 1] + 1; maxLength = max(maxLength, dp[i][j]); } } } return maxLength; } int longestCommonSubsequenceLength(string s1, string s2) { int m = s1.length(), n = s2.length(); vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (s1[i - 1] == s2[j - 1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } return dp[m][n]; } // Sorting bool sorta(const pair<int, int> &a, const pair<int, int> &b) { return (a.second < b.second); } bool sortd(const pair<int, int> &a, const pair<int, int> &b) { return (a.second > b.second); } // Bits string decToBinary(int n) { string s = ""; int i = 0; while (n > 0) { s = to_string(n % 2) + s; n = n / 2; i++; } return s; } ll binaryToDecimal(string n) { string num = n; ll dec_value = 0; int base = 1; int len = num.length(); for (int i = len - 1; i >= 0; i--) { if (num[i] == '1') dec_value += base; base = base * 2; } return dec_value; } ll HeightPowerOfTwo(ll n) { int k =0; while(n>=(1LL<<k)){ k++; } return k-1; } // Check bool isSubstring(const std::string &s1, const std::string &s2) { // Use the find function to search for s1 in s2 return s2.find(s1) != std::string::npos; } bool isPrime(ll n) { if (n <= 1) return false; if (n <= 3) return true; if (n % 2 == 0 || n % 3 == 0) return false; for (int i = 5; i * i <= n; i = i + 6) if (n % i == 0 || n % (i + 2) == 0) return false; return true; } bool isPowerOfTwo(int n) { if (n == 0) return false; return (ceil(log2(n)) == floor(log2(n))); } bool isPerfectSquare(ll x) { if (x >= 0) { ll sr = sqrt(x); return (sr * sr == x); } return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll t; cin >> t; while (t--) { ll n; cin>>n; // handle differently for[1,5] cases. if(n<=5){ if(n==1){ cout<<0<<endl; cout<<1<<endl; } if(n==2){ cout<<2<<endl; cout<<1<<" "<<2<<endl; } if(n==3){ cout<<2<<endl; cout<<1<<" "<<2<<" "<<3<<endl; } if(n==4){ cout<<6<<endl; cout<<1<<" "<<2<<" "<<3<<" "<<4<<endl; } if(n==5){ cout<<5<<endl; cout<<"2 1 3 4 5"<<endl; } continue; } if(!((n-1)&n-2)){ // means odd that is just +1 the perfect power of 2. ll t = HeightPowerOfTwo(n-1); ll sl= 1LL<<t; ll last = sl-1; cout<<n<<endl; t = HeightPowerOfTwo(n-2); sl= 1<<t; last = sl-1; for(int i =1; i<n-2; i++){ if(i==last) continue; else{ cout<<i<<" "; } } cout<<last<<" "<<n-2<<" "<<n-1<<" "<<n<<endl; } else if(n&1){ // handling for odd cases cout<<n<<endl; ll t = HeightPowerOfTwo(n); ll sl= 1LL<<t; ll last = sl-1; for(int i =1; i<n; i++){ if(i==last) continue; else{ cout<<i<<" "; } } cout<<last<<" "<<n<<endl; } else if(!(n&n-1)){ // it is like making the odd wala case ll t = HeightPowerOfTwo(n); ll sl= 1LL<<t; ll last = sl-1; cout<<last+n<<endl; t= HeightPowerOfTwo(n-1); sl = 1<<t; last = sl-1; for(int i =1; i<n-1; i++){ if(i==last) continue; else{ cout<<i<<" "; } } cout<<last<<" "<<n-1<<" "<<n<<endl; } // simple even wala case else{ ll t = HeightPowerOfTwo(n); ll sl= 1LL<<t; ll last = sl-1; cout<<sl+last<<endl; for(int i=1; i<=n; i++){ if(i==last) continue; else{ cout<<i<<" "; } } cout<<last<<endl; } } }