func_code_string: #include <bits/stdc++.h>   using namespace std;   char str[606];   long long tmp[80];   long long mat[2000][32];   int see[2000];   int main() {     int M;     scanf( %d , &M);     for (int i = 0; i < M; i++) {       scanf( %s , str);       int len = 0;       while (str[len]) len++;       for (int j = 0; j < 80; j++) tmp[j] = 0;       for (int j = 0; j < len; j++) {         long long &t = tmp[(len - j - 1) / 8];         t = t * 10 + str[j] -  0 ;       }       for (int j = 0; j < 250; j++) {         long long t = tmp[0] & 255;         for (int k = 0; k < 8; k++)           if (t & (1 << k)) mat[j * 8 + k][i / 64] |= 1ll << (i % 64);         for (int k = 79; k; k--) {           tmp[k - 1] += (tmp[k] & 255) * 100000000ll;           tmp[k] >>= 8;         }         tmp[0] >>= 8;       }     }     for (int i = 0, j = 0; i < 2000 && j < M; j++) {       bool seen = false;       for (int k = i; k < 2000; k++) {         if (mat[k][j / 64] & (1ll << (j % 64))) {           for (int l = j / 64; l < 32; l++) {             swap(mat[i][l], mat[k][l]);           }           seen = true;           break;         }       }       if (!seen) {         int cnt = 0;         for (int k = 0; k < i; k++)           if (mat[k][j / 64] & (1ll << (j % 64))) cnt++;         printf( %d , cnt);         for (int k = 0; k < i; k++)           if (mat[k][j / 64] & (1ll << (j % 64))) printf(  %d , see[k]);         puts(  );         continue;       }       see[i] = j;       printf( 0 n );       for (int k = 0; k < 2000; k++)         if (k != i && (mat[k][j / 64] & (1ll << (j % 64)))) {           for (int l = j / 64; l < 32; l++) mat[k][l] ^= mat[i][l];         }       i++;     }     return 0;   }   