long subarrayXor(vector<int> &arr, int k) {
// code here
int ans = 0, prefixXor = 0;
unordered_map<int, int> mp;
for(int i=0; i<arr.size(); i++) {
prefixXor ^= arr[i];
if(mp.find(prefixXor^k) != mp.end())
ans += mp[prefixXor^k];
if(prefixXor == k)
ans++;
mp[prefixXor]++;
}
return ans;
}