Can you help with test case my code goes wrong.
code->
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
int t;
cin >> t;
while (t--) {
ll n;
cin >> n;
ll arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
unordered_map < ll, ll > mp;
vector < ll > pf(n, 0);
pf[0] = arr[0];
mp[0] = -1;
for (int i = 1; i < n; i++) {
pf[i] = arr[i] ^ pf[i - 1];
}
ll res = 0;
vector < ll > dp(n, 0);
dp[0] = arr[0];
for (int i = 1; i < n; i++) {
if (mp.find(pf[i - 1]) != mp.end()) {
if (dp[i] >= dp[mp[pf[i - 1] + 1]]) {
mp[pf[i - 1]] = i - 1;
}
} else {
mp[pf[i - 1]] = i - 1;
}
ll req = arr[i] ^ pf[i - 1];
if (mp.find(req) != mp.end()) {
dp[i] = arr[i] + dp[mp[req] + 1];
} else {
dp[i] = arr[i];
}
res = max(res, dp[i]);
}
cout << res << endl;
}
}