func_code_string: #include <bits/stdc++.h>   #include <unordered_map>   #include <cctype>   #include <string.h>      #define PB push_back   #define EB emplace_back    #define MP make_pair   #define endl   n    #define ll long long   #define ull unsigned long long   #define STR string   #define VEC vector<int>   #define IOS {ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);}   #define loop(i,a,b,c) for(ll i=a;i<b;i+=c)   #define MOD (int)1000000007   #define sp       #define pii pair<int,int>         using namespace std;   using namespace std::chrono;      /* Debugging */   template <typename T>   void printarr(T *A, int n){     for (int i = 0; i < n; i++)     {       cout<<A[i]<<   ;     }     cout<<endl;     }   template <typename T>   void arrinit(T *A, int n, T data){     for (int i = 0; i < n; i++)     {       A[i] = data;     }        }   template <typename T>   void takeinput(T *A, int n){     for(int i=0;i<n;i++){       cin>>A[i];     }   }   template <typename T>   void printcont(T A){     for(auto a: A){       cout<<a+1<<   ;     }     cout<<endl;   }   template <typename T>   T binpowmod(T a, T b, T p){     if(b==0) return 1;     if(b==1) return a;     if(b%2==0) return ((binpowmod(a,b/2,p)%p)*(binpowmod(a,b/2,p)%p))%p;     return ((a%p)*(binpowmod(a,b-1,p)%p))%p;   }   // template <typename T>   // T gcd(T a,T b){   //   if(a==0) return b;   //   if(b==0) return a;   //   if(a>b) return gcd(b,a%b);   //   return gcd(b%a,a); 1 2 3 4  => 1 2    // }      void solve (){     int n;     cin>>n;     int k = n;     vector <pii> steps{};     if(n<=8){       for (int i = 3; i < n; i++)       {           steps.PB({i,i+1});       }       while(n!=1){           steps.PB({k,2});           if(n%2==1) n = n/2 + 1;           else n/=2;       }       }     else{       for (int i = 3; i < n; i++)       {           if(i!=8)steps.PB({i,i+1});       }       while(n!=1){           steps.PB({k,8});           if(n%8!=0) n = n/8 + 1;           else n = n/8;       }       steps.PB({8,2});       steps.PB({8,2});       steps.PB({8,2});     }     cout<<steps.size()<<endl;     for (int i = 0; i < steps.size(); i++)     {         cout<<steps[i].first<<   <<steps[i].second<<endl;     }             }      int main(){       auto start = high_resolution_clock::now();        IOS       // freopen( input.txt , r ,stdin);       // freopen( output.txt , w ,stdout);       // freopen( output.txt , w ,stderr);       ll t;       cin>>t;         while(t--){         solve();       }       auto stop = high_resolution_clock::now();        auto duration = duration_cast<milliseconds>(stop - start);        // cout << Time taken :  <<duration.count() <<  milliseconds n ;       return 0;   }