#include #include #include #include #include #include #include #include #include #include using namespace std; long long extgcd(long long a, long long b, long long &x, long long &y){ long long d=a; if(b!=0){ d = extgcd(b, a%b, y, x); y -= (a/b) * x; }else{ x = 1; y = 0; } return d; } long long mod_inverse(long long a, long long m){ long long x,y; extgcd(a,m,x,y); return (m+x%m)%m; } // A[n*p] * X[p*m] = B[n*m] template int gaussian_elimination_with_mod(vector>& A, vector>& B, int n, int p, int m, const T mod){ int R = max(n,p); int C = p+m; vector> V( R, vector(C, 0) ); for(int i=0; i left(R, -1); //foward for(int col=0; col=0; i--){ bool zero = true; bool valid = true; for(int col=0; col=0; j--){ for(int k=0; k> n; vector a(n); for(int i=0; i> a[i]; } vector> A(n, vector(64, 0)); for(int i=0; i> j) & 1LL; } } vector> B(64); long long rank = gaussian_elimination_with_mod(A,B, n,64,0, 2); cerr << rank << endl; cout << (1LL<