func_code_string: #include <bits/stdc++.h>   #pragma comment(linker,  /stack:640000000 )   using namespace std;   int fx[] = {0, 0, -1, 1, -1, 1, 1, -1};   int fy[] = {1, -1, 0, 0, 1, 1, -1, -1};   struct debugger {     template <typename T>     debugger& operator,(const T& v) {       cerr << v <<    ;       return *this;     }   } dbg;   const int N = (int)3e5;   int a[N], b[N], c[N], d[N], n, b1[N], c1[N];   int bits[32][N], k[32];   bool valid() {     memset(bits, 0, sizeof(bits));     for (int i = 0; i < 31; i++) {       for (int j = 0; j < n; j++) {         if (a[j] < 0) return false;         if (a[j] & (1 << i))           bits[i][j] = 1;         else           bits[i][j] = 0;       }     }     memset(k, 0, sizeof(k));     for (int i = 0; i < 31; i++) {       for (int j = 0; j < n; j++) {         k[i] += bits[i][j];       }     }     memset(b1, 0, sizeof(b1));     memset(c1, 0, sizeof(c1));     for (int i = 0; i < 31; i++) {       for (int j = 0; j < n; j++) {         int _b = bits[i][j] ? k[i] : 0;         int _c = bits[i][j] ? n : k[i];         b1[j] += _b << i;         c1[j] += _c << i;       }     }     for (int i = 0; i < n; i++) {       if (b[i] != b1[i] || c[i] != c1[i]) return false;     }     return true;   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d , &b[i]);     for (int i = 0; i < n; i++) scanf( %d , &c[i]);     long long int sum = 0LL;     for (int i = 0; i < n; i++) {       d[i] = b[i] + c[i];       sum += (long long int)d[i];     }     sum /= (2 * n);     for (int i = 0; i < n; i++) a[i] = (d[i] - sum) / n;     if (!valid())       printf( -1 n );     else {       for (int i = 0; i < n; i++) printf( %d  , a[i]);       printf(  n );     }     return 0;   }   