#include #include #include #include #include using namespace std; typedef long long LL; const int maxn=12005; const int maxb=150; int n,m,a[maxn],s[maxn],w[maxb][maxn],LP[maxb],RP[maxb],bid[maxn],mem[maxn],*rt=mem+1,ch[60*maxn][2],cnt[60*maxn],ncnt; int modify(int o,int val,int k) { int no=++ncnt; ch[no][0]=ch[o][0]; ch[no][1]=ch[o][1]; cnt[no]=cnt[o]+1; if(k<0) return no; ch[no][val>>k&1]=modify(ch[no][val>>k&1],val,k-1); return no; } int xw(int lrt,int rrt,int val,int k) { if(k<0) return 0; int c=val>>k&1; if(cnt[ch[rrt][c^1]]-cnt[ch[lrt][c^1]]>0) return (1<>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) s[i]=s[i-1]^a[i]; for(int i=1;i<=n;i++) rt[i]=modify(rt[i-1],s[i],30); int blo=sqrt(n),tot=0,res=0; if(blo*blo