//{ Driver Code Starts
#include <bits/stdc++.h>
using namespace std;
// } Driver Code Ends
class Solution {
public:
long subarrayXor(vector<int> &arr, int k) {
int n = arr.size();
unordered_map<int, int> mp;
int count = 0;
int xorSum = 0;
for (int i = 0; i < n; i++) {
xorSum ^= arr[i];
if (xorSum == k)
count++;
if (mp.find(xorSum ^ k) != mp.end()) {
count += mp[xorSum ^ k];
}
mp[xorSum]++;
}
return count;
}
};
//{ Driver Code Starts.
int main() {
int tc;
cin >> tc;
cin.ignore(); // Ignore the newline after the number of test cases
while (tc-- > 0) {
string input;
getline(cin, input); // Read the whole line for the array
stringstream ss(input);
vector<int> arr;
int num;
while (ss >> num) {
arr.push_back(num); // Push numbers into the vector
}
int k;
cin >> k;
cin.ignore(); // Ignore the newline after k
Solution obj;
cout << obj.subarrayXor(arr, k) << endl;
cout << "~" << endl;
}
return 0;
}
// } Driver Code Ends
Ly97IERyaXZlciBDb2RlIFN0YXJ0cwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgovLyB9IERyaXZlciBDb2RlIEVuZHMKCmNsYXNzIFNvbHV0aW9uIHsKICBwdWJsaWM6CiAgICBsb25nIHN1YmFycmF5WG9yKHZlY3RvcjxpbnQ+ICZhcnIsIGludCBrKSB7CiAgICAgICAgaW50IG4gPSBhcnIuc2l6ZSgpOwogICAgICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IG1wOwogICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgaW50IHhvclN1bSA9IDA7CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIHhvclN1bSBePSBhcnJbaV07CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoeG9yU3VtID09IGspCiAgICAgICAgICAgICAgICBjb3VudCsrOwoKICAgICAgICAgICAgaWYgKG1wLmZpbmQoeG9yU3VtIF4gaykgIT0gbXAuZW5kKCkpIHsKICAgICAgICAgICAgICAgIGNvdW50ICs9IG1wW3hvclN1bSBeIGtdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtcFt4b3JTdW1dKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY291bnQ7CiAgICB9Cn07CgoKCi8veyBEcml2ZXIgQ29kZSBTdGFydHMuCgppbnQgbWFpbigpIHsKICAgIGludCB0YzsKICAgIGNpbiA+PiB0YzsKICAgIGNpbi5pZ25vcmUoKTsgLy8gSWdub3JlIHRoZSBuZXdsaW5lIGFmdGVyIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcwoKICAgIHdoaWxlICh0Yy0tID4gMCkgewogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOyAvLyBSZWFkIHRoZSB3aG9sZSBsaW5lIGZvciB0aGUgYXJyYXkKCiAgICAgICAgc3RyaW5nc3RyZWFtIHNzKGlucHV0KTsKICAgICAgICB2ZWN0b3I8aW50PiBhcnI7CiAgICAgICAgaW50IG51bTsKCiAgICAgICAgd2hpbGUgKHNzID4+IG51bSkgewogICAgICAgICAgICBhcnIucHVzaF9iYWNrKG51bSk7IC8vIFB1c2ggbnVtYmVycyBpbnRvIHRoZSB2ZWN0b3IKICAgICAgICB9CgogICAgICAgIGludCBrOwogICAgICAgIGNpbiA+PiBrOwogICAgICAgIGNpbi5pZ25vcmUoKTsgLy8gSWdub3JlIHRoZSBuZXdsaW5lIGFmdGVyIGsKCiAgICAgICAgU29sdXRpb24gb2JqOwogICAgICAgIGNvdXQgPDwgb2JqLnN1YmFycmF5WG9yKGFyciwgaykgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJ+IiA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0KLy8gfSBEcml2ZXIgQ29kZSBFbmRz