func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 998244353;   double eps = 1e-8;   vector<int> b, c;   int vis[2100000], a[210000], ans[210000], x;   int read() {     int v = 0, f = 1;     char c = getchar();     while (c < 48 || 57 < c) {       if (c ==  - ) f = -1;       c = getchar();     }     while (48 <= c && c <= 57) v = (v << 3) + v + v + c - 48, c = getchar();     return v * f;   }   void ins(int u) {     int t = u;     for (int &v : b) u = min(u, u ^ v);     if (u) {       b.push_back(u);       c.push_back(t);       for (int i = (int)(int)b.size() - 1; i >= (int)1; i--)         if (b[i] > b[i - 1])           swap(b[i], b[i - 1]);         else           break;     }   }   void dfs(int u, int s) {     ans[s] = u;     vis[u] = 1;     if (s == (1 << x) - 1) return;     for (int &v : c)       if (!vis[u ^ v]) {         dfs(u ^ v, s + 1);         return;       }   }   int main() {     int n = read();     for (int i = (int)1; i <= (int)n; i++) a[i] = read();     sort(a + 1, a + n + 1);     x = 0;     int j = 1;     for (int i = (int)1; i <= (int)19; i++) {       while (j <= n && a[j] <= ((1 << i) - 1)) {         ins(a[j]);         j++;       }       if (b.size() == i) x = i;     }     b.clear();     c.clear();     for (int i = (int)1; i <= (int)n; i++)       if (a[i] <= ((1 << x) - 1))         ins(a[i]);       else         break;     dfs(0, 0);     printf( %d n , x);     for (int i = (int)0; i <= (int)(1 << x) - 1; i++) printf( %d  , ans[i]);     return 0;   }   