#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; template vector Gauss_Jordan(const vector &v, const int &MAX){ //v[i]<2^MAX int n=v.size(); vector ret=v; int d=0; for(int k=MAX-1; k>=0; k--){ int p=-1; for(int i=d; i>k)&1){ p=i; break; } } if(p==-1) continue; swap(ret[d], ret[p]); for(int i=0; i>k)&1) ret[i]^=ret[d]; } d++; } return ret; } template int matrix_rank(const vector &v, const int &MAX){ int n=v.size(); vector a=Gauss_Jordan(v, MAX); for(int i=0; i a(n); for(int i=0; i