#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const pair&p){ os< ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,pair&p){ is>>p.first>>p.second; return is; } template istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } vector xor_convolution(vector a,vector b){ vector ret; return ret; }; // 未verify // 長さが2べきであること // b_j = sum a_i, i∈j // b_j = sum a_i, j∈i template vector SubsetConvolution(vector &a){ int n=(int)a.size(); vector ret=a; for(int i=1;i vector AndConvolution(vector &a,vector &b){ assert(a.size()==b.size()); int n=(int)a.size(); vector ret(n),A=a,B=b; // FWT for(int i=1;i vector XorConvolution(vector &a,vector &b){ assert(a.size()==b.size()); int n=(int)a.size(); vector ret(n),A=a,B=b; // FWT for(int i=1;i>n>>x; vector a(n); cin>>a; vector c(1< cnt(1< cnt_k(1<>k)&1) ; else cnt_k[a[i]]++,mugen++; } auto conv_k=XorConvolution(cnt_k,cnt_k); conv_k[0]-=mugen; for(int i=0;i