#include #define ll long long using namespace std; int blockSize = 500; vector sortedBlock[1000]; ll blockXorVal[1000]; void update(int block,int a[],int n) { int startIndex = block*blockSize; int endIndex = (block+1)*blockSize; endIndex--; endIndex = min(endIndex,n); int prefXor = 0; sortedBlock[block].clear(); for(int i=startIndex;i<=endIndex;i++) { prefXor^=a[i]; sortedBlock[block].push_back(prefXor); } blockXorVal[block] = prefXor; sort(sortedBlock[block].begin(),sortedBlock[block].end()); } int query(int index,int val,int a[]) { int ans = 0; int startBlock = 0; int endBlock = index/blockSize; int currXor = 0; while(startBlock