/**
 * 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;
}