ll@N,@A[N],S[N]; S[0]=A[0]; rep(i,1,N)S[i]=S[i-1]^A[i]; maplast_index; mint dp[N]{},ps[N+1]{}; rep(i, N-1) { if(last_index.count(S[i])) { int idx = last_index[S[i]]; dp[i] = ps[i]-ps[idx]; } else { dp[i] = ps[i] + 1; } ps[i + 1] = ps[i] + dp[i]; last_index[S[i]]=i; } wt(ps[N-1]+1);