#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <map>
using namespace std;
#define pb push_back
const int N = 2e5 + 5, BT = 30;
int g[BT * N][2];
int cnt[BT * N];
int root = 0, vl = 0;
int n = 1;
int st[N];
void add(int x)
{
    int cur = root;
    for (int i = BT - 1; i >= 0; i--)
    {
        int cb = (x >> i) & 1;
        if (!g[cur][cb])
        {
            g[cur][cb] = ++vl;
            cnt[g[cur][cb]] = 1;
        }
        else
        {
            cnt[g[cur][cb]]++;
        }
        cur = g[cur][cb];
    }
}
void del(int x)
{
    int cur = root;
    for (int i = BT - 1; i >= 0; i--)
    {
        int cb = (x >> i) & 1;
        cnt[g[cur][cb]]--;
        cur = g[cur][cb];
    }
}
int get(int x)
{
    int cur = root;
    int ans = 0;
    for (int i = BT - 1; i >= 0; i--)
    {
        int cb = (x >> i) & 1;
        int odw = cb ^ 1;
        if (cnt[g[cur][odw]])
        {
            ans += (1 << i);
            cur = g[cur][odw];
        }
        else
        {
            cur = g[cur][cb];
        }
    }
    return ans;
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);
    add(0);
    st[1] = 0;
	int q; cin >> q;
	while (q--) {
		string s; cin >> s;
		int x, b; cin >> x >> b;
		if (s[0] == 'A') {
			++n;
			st[n] = st[x] ^ b;
            add(st[n]);
		}
		else {
            cout << get(st[x]) << "\n";
		}
	}
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |