#include <bits/stdc++.h>
using namespace std;
long subarrayXor(vector<int> &arr, int k) {
// code here
int prefXor = 0;
long count = 0;
unordered_map<int, int> freq;
for(int i : arr){
prefXor ^= i;
int temp = prefXor ^ k;
if(prefXor == k) count++;
if(freq.find(temp) != freq.end()){
count += freq[temp];
}
freq[prefXor]++;
}
return count;
}
int main() {
// your code goes here
vector<int> arr = {4, 2, 2, 6, 4};
cout << subarrayXor(arr, 6);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIHN1YmFycmF5WG9yKHZlY3RvcjxpbnQ+ICZhcnIsIGludCBrKSB7CiAgICAvLyBjb2RlIGhlcmUKICAgIGludCBwcmVmWG9yID0gMDsKICAgIGxvbmcgY291bnQgPSAwOwogICAgdW5vcmRlcmVkX21hcDxpbnQsIGludD4gZnJlcTsKICAgIAogICAgZm9yKGludCBpIDogYXJyKXsKICAgIAlwcmVmWG9yIF49IGk7CiAgICAJaW50IHRlbXAgPSBwcmVmWG9yIF4gazsKICAgIAlpZihwcmVmWG9yID09IGspIGNvdW50Kys7CiAgICAJCiAgICAJaWYoZnJlcS5maW5kKHRlbXApICE9IGZyZXEuZW5kKCkpewogICAgCQljb3VudCArPSBmcmVxW3RlbXBdOwogICAgCX0KICAgIAkKICAgIAlmcmVxW3ByZWZYb3JdKys7CiAgICB9CiAgICAKICAgIHJldHVybiBjb3VudDsKICAgIAp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXZlY3RvcjxpbnQ+IGFyciA9IHs0LCAyLCAyLCA2LCA0fTsKCWNvdXQgPDwgc3ViYXJyYXlYb3IoYXJyLCA2KTsKCXJldHVybiAwOwp9