func_code_string: #include <bits/stdc++.h>   using namespace std;   using LL = long long;   using pii = pair<int, int>;   using UI = unsigned int;   const int mod = 1e9 + 7;   const int inf = 0x3f3f3f3f;   const double EPS = 1e-8;   const double PI = acos(-1.0);   const int N = 5e5 + 10;   const int M = N + (1 << 20);   int n, a[N][2];   int deg[1 << 20];   bool vis[N << 1];   vector<pii> G[M];   vector<int> ans;   void dfs(int x, int idx) {     pii p;     while (G[x].size()) {       p = G[x].back();       G[x].pop_back();       if (!vis[p.second]) {         vis[p.second] = 1;         dfs(p.first, p.second);       }     }     if (idx != -1) {       ans.emplace_back(idx);     }   }   void add_edge(int x, int y, int idx) {     G[x].emplace_back(y, idx);     G[y].emplace_back(x, idx);   }   bool ok(int k) {     int mask = (1 << k) - 1;     for (int i = (0); i < ((1 << k)); ++i) {       deg[i] = 0;     }     for (int i = (0); i < ((1 << k) + n); ++i) {       G[i].clear();     }     int x, y, z;     int offset = 1 << k;     for (int i = (0); i < (n); ++i) {       x = a[i][0] & mask;       y = a[i][1] & mask;       deg[x] += 1;       deg[y] += 1;       add_edge(x, i + offset, i << 1);       add_edge(y, i + offset, i << 1 | 1);     }     for (int i = (0); i < (1 << k); ++i) {       if (deg[i] & 1) return 0;     }     for (int i = (0); i < (n << 1); ++i) {       vis[i] = 0;     }     ans.clear();     for (int i = (0); i < (n + (1 << k)); ++i) {       if (G[i].size()) {         dfs(i, -1);         break;       }     }     if (ans.size() < n * 2) {       return 0;     }     printf( %d n , k);     for (int i = (0); i < (ans.size()); ++i) {       printf( %d  , ans[i] + 1);     }     puts(  );     return 1;   }   int main() {     scanf( %d , &n);     for (int i = (0); i < (n); ++i) {       scanf( %d %d , &a[i][0], &a[i][1]);     }     for (int i = (20); i > (0); --i) {       if (ok(i)) {         return 0;       }     }     puts( 0 );     for (int i = (1); i < (n + 1); ++i) {       printf( %d %d  , i * 2 - 1, i * 2);     }     puts(  );     return 0;   }   