Help for Starters 168 (Rated) "Equate XOR"

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;

    }

}