/**
* Author: Sergey Kopeliovich (Burunduk30@gmail.com)
*/
#include <bits/stdc++.h>
using namespace std;
#define forn(i, n) for (int i = 0; i < (int)(n); i++)
#define pb push_back
const int N = 5e5;
int q, n, a, b, T, l[N], r[N];
vector<int> c[N];
void dfs( int v, int pr = -1 ) {
l[v] = T++;
for (int x : c[v])
if (x != pr)
dfs(x, v);
r[v] = T;
}
struct Fenwick {
int n, sum[N];
void add( int y ) {
for (int x = y; x < N; x |= x + 1)
sum[x] ^= 1;
}
int get( int x ) {
int r = 0;
for (; x >= 0; x &= x + 1, x--)
r ^= sum[x];
return r;
}
int get( int l, int r ) {
return get(r) ^ get(l - 1);
}
} f;
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> n;
forn(i, n - 1) {
cin >> a >> b, a--, b--;
c[a].pb(b), c[b].pb(a);
}
dfs(0);
cin >> q;
while (q--) {
char ch;
cin >> ch >> a >> b, a--, b--;
if (ch == 'U')
f.add(l[a]), f.add(l[b]);
else {
a = (l[a] < l[b] ? b : a);
cout << (f.get(l[a], r[a] - 1) ^ 1) << "\n";
}
}
return 0;
}