#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v[510000];
int num[510000];
int par[510000];
int st[510000];
int upd[2777777];
int ept[2777777];
int ctr = 0;
void inline dfs(int now) {
  st[now] = ctr;
  for (int i = 0; i < v[now].size(); ++i) {
    if (v[now][i] != par[now]) {
      par[v[now][i]] = now;
      dfs(v[now][i]);
    }
  }
  num[now] = ctr++;
}
void inline _add(int idx, int s, int e, int l, int r, int val) {
  if (s >= l && e <= r) {
    upd[idx] = val;
    return;
  }
  if (s >= r || e <= l) return;
  if (s >= e) return;
  int m = (s + e) >> 1;
  if (s + 1 < e) {
    int lc = (idx << 1) + 1;
    int rc = lc + 1;
    _add(lc, s, m, l, r, val);
    _add(rc, m, e, l, r, val);
  }
}
void inline _emp(int idx, int s, int e, int p, int val) {
  if (s >= e) return;
  if (s <= p && e > p) {
    ept[idx] = val;
    int m = (s + e) >> 1;
    if (s + 1 < e) {
      int lc = (idx << 1) + 1;
      int rc = lc + 1;
      _emp(lc, s, m, p, val);
      _emp(rc, m, e, p, val);
    }
  } else
    return;
}
void inline _check(int idx, int s, int e, int l, int r, int &up, int &em) {
  if (s >= r || e <= l) return;
  if (l <= s && e <= r) {
    em = max(em, ept[idx]);
    if (e != r) return;
  }
  if (s + 1 == e && s + 1 == r) {
    up = upd[idx];
    return;
  }
  if (s >= e) return;
  int lc = (idx << 1) + 1;
  int rc = lc + 1;
  upd[lc] = max(upd[idx], upd[lc]);
  upd[rc] = max(upd[idx], upd[rc]);
  int m = (s + e) >> 1;
  if (s + 1 < e) {
    _check(lc, s, m, l, r, up, em);
    _check(rc, m, e, l, r, up, em);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; ++i) {
    par[i] = -1;
    int a, b;
    scanf("%d %d", &a, &b);
    a--;
    b--;
    v[a].push_back(b);
    v[b].push_back(a);
  }
  par[0] = 0;
  dfs(0);
  int q;
  scanf("%d", &q);
  for (int i = 1; i <= q; i++) {
    int c, p;
    scanf("%d %d", &c, &p);
    if (c == 1) {
      p--;
      _add(0, 0, n, st[p], num[p] + 1, i);
    } else if (c == 2) {
      p--;
      _emp(0, 0, n, num[p], i);
    } else {
      p--;
      int a = 0, b = 0;
      _check(0, 0, n, st[p], num[p] + 1, a, b);
      if (a > b)
        printf("1\n");
      else
        printf("0\n");
    }
  }
}
