func_code_string: #include <bits/stdc++.h>   using namespace std;   class Mod {    public:     int mod;     Mod(int mod_ = 1e9 + 7) : mod(mod_) {}     int add(int a, int b) { return (a + b) % mod; }     int mul(long long a, int b) { return (a * b) % mod; }     int pow(long long a, int x) {       int ans = 1;       while (x) {         if (x & 1) {           ans = (ans * a) % mod;         }         x >>= 1;         a = (a * a) % mod;       }       return ans;     }   };   class IO {    public:     static void read(int &val) { scanf( %d , &val); }     static void read(long long &val) { scanf( %lld , &val); }     static void read(char *val) { scanf( %s , val); }     static void read(string &val) {       const int BUFFER_SIZE = 1e5 + 5;       static char buffer[BUFFER_SIZE];       scanf( %s , buffer);       val = buffer;     }     static void read_n(vector<int> &val, int n) {       val.resize(n);       for (int i = 0; i < n; i++) {         scanf( %d , &val[i]);       }     }     static void write(int val) { printf( %d n , val); }     static void write(long long val) { printf( %lld n , val); }     static void write(const char *val) { printf( %s n , val); }     static void write(const string &val) { printf( %s n , val.c_str()); }     static void write(const vector<int> &val) {       for (int i = 0; i < val.size(); i++) {         if (i > 0) {           putchar(   );         }         printf( %d , val[i]);       }       putchar(  n );     }   };   long long gcd_ex(long long a, long long b, long long &x, long long &y) {     if (b == 0) {       x = 1;       y = 0;       return a;     }     long long ans = gcd_ex(b, a % b, y, x);     y -= (a / b) * x;     return ans;   }   class Solver {     long long x;     stringstream ans;     int cnt_ans = 0;     void print(long long x, long long a) {       long long cur = 0;       while (a) {         if (a & 1) {           if (cur > 0) {             ans << cur <<   +   << x << endl;             cnt_ans++;           }           cur += x;         }         a >>= 1;         ans << x <<   +   << x << endl;         cnt_ans++;         x <<= 1;       }     }       public:     void read() { IO::read(x); }     void solve() {       long long e = 1;       while ((e << 1) <= x) {         e <<= 1;       }       print(x, e);       ans << e * x <<   ^   << x << endl;       cnt_ans++;       long long y = ((e * x) ^ x);       long long a, b;       gcd_ex(x, y, a, b);       if (a < 0) {         swap(a, b);         swap(x, y);       }       b = -b;       if (!(a & 1)) {         a += y;         b += x;       }       print(x, a);       print(y, b);       ans << a * x <<   ^   << b * y << endl;       cnt_ans++;       IO::write(cnt_ans);       IO::write(ans.str());     }   };   void init() { ios::sync_with_stdio(false); }   int main() {     init();     int t = 1;     while (t--) {       Solver solver;       solver.read();       solver.solve();     }     return 0;   }   