func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[1000100], g[1000100];   int main() {     for (int i = 1; i < 20; i++) {       int msk = (1 << i) - 1;       for (int j = (1 << i - 1); j < (1 << i); j++) {         g[j] = (1 << i - 1) | g[j ^ msk];       }     }     int n, x;     scanf( %d , &n);     for (int i = 0; i < n; i++) {       scanf( %d , &a[i]);     }     for (int i = 19; i >= 0; i--) {       vector<int> v, piv;       for (int j = 0; j < n; j++) {         if (a[j] >= (1 << i)) continue;         int x = a[j];         for (int k = 0; k < v.size(); k++) {           if (x & (piv[k] & -piv[k])) x ^= piv[k];         }         if (x > 0) {           v.push_back(a[j]);           piv.push_back(x);         }       }       if (v.size() == i) {         printf( %d n , i);         for (int j = 0; j < (1 << i); j++) {           int x = 0;           for (int k = 0; k < i; k++) {             if (g[j] & (1 << k)) x ^= v[k];           }           printf( %d  , x);         }         puts(  );         break;       }     }     return 0;   }   