#include using namespace std; #define ALL(x) begin(x),end(x) #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 vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } // Aを変形してBにできるか <=> AとBの標準形が一致するか struct BinaryBasis{ vector basis; bool update; BinaryBasis():update(false){} // 基底に加える bool add(ll bit){ for(auto &p:basis) bit=min(bit,bit^p); if(bit){ basis.push_back(bit); return update=true; } else return false; } // bitを基底で表現できるか bool check(ll bit){ for(auto &p:basis) bit=min(bit,bit^p); return bit==0; } // 掃き出して標準形に void normalize(){ if(update){ sort(begin(basis),end(basis)); update=false; } for(int i=(int)basis.size()-1;i>=0;i--){ for(int j=i-1;j>=0;j--) basis[i]=min(basis[i],basis[i]^basis[j]); } } bool operator==(BinaryBasis &a){ normalize(),a.normalize(); return basis==a.basis; } // 0-indexedでk番目を返す ll get_kth(ll k){ if((1ll<=0;i--){ if(k<(1ll<>n; BinaryBasis b; rep(i,n){ ll x;cin>>x; b.add(x); } cout<<(1<