//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "0"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define el "\n"
#define MASK(i) (1LL<<(i))
#define BIT(i,j) (((i)>>(j))&1)
#define TIME 1.0*clock()/CLOCKS_PER_SEC
#define LOG 20
const ll MAX=5e5+5;
int n,q;
vector<int> adj[MAX];
//hld
int par[MAX],heavy[MAX],h[MAX],treeSize[MAX];
void dfs1(int u, int p)
{
treeSize[u]=1;
int mx=0;
for(int v:adj[u])
{
if(v==p) continue;
par[v]=u;
h[v]=h[u]+1;
dfs1(v,u);
treeSize[u]+=treeSize[v];
if(treeSize[v]>mx)
{
mx=treeSize[v];
heavy[u]=v;
}
}
}
int pos[MAX],head[MAX],cur=0;
void dfs2(int u, int p)
{
head[u]=p;
pos[u]=++cur;
if(heavy[u]!=0) dfs2(heavy[u],p);
for(int v:adj[u])
{
if(v!=par[u] && v!=heavy[u]) dfs2(v,v);
}
}
void buildHLD()
{
dfs1(1,0);
dfs2(1,1);
}
//segtree
int st[4*MAX],lazy[4*MAX];
void Push(int u, int l, int r)
{
if(lazy[u]==-1) return;
st[u]=lazy[u];
if(l!=r)
{
lazy[u<<1]=lazy[u];
lazy[u<<1|1]=lazy[u];
}
lazy[u]=-1;
return;
}
void update(int u, int l, int r, int ul, int ur, int val)
{
if(ul>ur) return;
Push(u,l,r);
if(l>ur || r<ul) return;
// cout<<u<<' '<<l<<' '<<r<<' '<<lazy[u]<<el;
if(ul<=l&&r<=ur)
{
st[u]=val;
lazy[u]=val;
if(l!=r)
{
lazy[u<<1]=val;
lazy[u<<1|1]=val;
}
// cout<<"OK\n"<<u<<' '<<l<<' '<<r<<' '<<st[u]<<el;
return;
}
int mid=(l+r)>>1;
update(u<<1,l,mid,ul,ur,val); update(u<<1|1,mid+1,r,ul,ur,val);
}
int query(int u, int l, int r, int pos)
{
Push(u,l,r);
// cout<<u<<' '<<l<<' '<<r<<' '<<lazy[u]<<el;
if(l==r)
{
return st[u];
}
int mid=(l+r)>>1;
if(pos<=mid) return query(u<<1,l,mid,pos);
return query(u<<1|1,mid+1,r,pos);
}
void updateAncestor(int u)
{
while(u!=0)
{
// cout<<pos[head[u]]<<' '<<pos[u]<<el;
update(1,1,n,pos[head[u]],pos[u],0);
u=par[head[u]];
}
}
int main()
{
fastio
if(fopen(FILE ".inp","r"))
{
freopen(FILE ".inp","r",stdin);
freopen(FILE ".out","w",stdout);
}
cin>>n;
foru(i,1,n-1)
{
int u,v; cin>>u>>v;
adj[u].pb(v);
adj[v].pb(u);
}
buildHLD();
cin>>q;
while(q--)
{
int c,v; cin>>c>>v;
if(c==1)
{
update(1,1,n,pos[v],pos[v]+treeSize[v]-1,1);
// foru(i,1,n) cout<<query(1,1,n,pos[i])<<' ';
// cout<<el;
}
else if(c==2) updateAncestor(v);
else cout<<query(1,1,n,pos[v])<<el;
}
return 0;
}
Ly9OaWNlRHVjawojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRklMRSAiMCIKI2RlZmluZSBmb3J1KGksYSxiKSBmb3IoaW50IGk9KGludCkoYSk7IGk8PShpbnQpKGIpOyArK2kpCiNkZWZpbmUgZm9yZChpLGEsYikgZm9yKGludCBpPShpbnQpKGEpOyBpPj0oaW50KShiKTsgLS1pKQojZGVmaW5lIGZhc3RpbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgTUFTSyhpKSAoMUxMPDwoaSkpCiNkZWZpbmUgQklUKGksaikgKCgoaSk+PihqKSkmMSkKI2RlZmluZSBUSU1FIDEuMCpjbG9jaygpL0NMT0NLU19QRVJfU0VDCiNkZWZpbmUgTE9HIDIwCgpjb25zdCBsbCBNQVg9NWU1KzU7CmludCBuLHE7CnZlY3RvcjxpbnQ+IGFkaltNQVhdOwoKLy9obGQKaW50IHBhcltNQVhdLGhlYXZ5W01BWF0saFtNQVhdLHRyZWVTaXplW01BWF07CnZvaWQgZGZzMShpbnQgdSwgaW50IHApCnsKICAgIHRyZWVTaXplW3VdPTE7CiAgICBpbnQgbXg9MDsKICAgIGZvcihpbnQgdjphZGpbdV0pCiAgICB7CiAgICAgICAgaWYodj09cCkgY29udGludWU7CiAgICAgICAgcGFyW3ZdPXU7CiAgICAgICAgaFt2XT1oW3VdKzE7CiAgICAgICAgZGZzMSh2LHUpOwogICAgICAgIHRyZWVTaXplW3VdKz10cmVlU2l6ZVt2XTsKICAgICAgICBpZih0cmVlU2l6ZVt2XT5teCkKICAgICAgICB7CiAgICAgICAgICAgIG14PXRyZWVTaXplW3ZdOwogICAgICAgICAgICBoZWF2eVt1XT12OwogICAgICAgIH0KICAgIH0KfQppbnQgcG9zW01BWF0saGVhZFtNQVhdLGN1cj0wOwp2b2lkIGRmczIoaW50IHUsIGludCBwKQp7CiAgICBoZWFkW3VdPXA7CiAgICBwb3NbdV09KytjdXI7CiAgICBpZihoZWF2eVt1XSE9MCkgZGZzMihoZWF2eVt1XSxwKTsKICAgIGZvcihpbnQgdjphZGpbdV0pCiAgICB7CiAgICAgICAgaWYodiE9cGFyW3VdICYmIHYhPWhlYXZ5W3VdKSBkZnMyKHYsdik7CiAgICB9Cn0Kdm9pZCBidWlsZEhMRCgpCnsKICAgIGRmczEoMSwwKTsKICAgIGRmczIoMSwxKTsKfQoKLy9zZWd0cmVlCmludCBzdFs0Kk1BWF0sbGF6eVs0Kk1BWF07CnZvaWQgUHVzaChpbnQgdSwgaW50IGwsIGludCByKQp7CiAgICBpZihsYXp5W3VdPT0tMSkgcmV0dXJuOwogICAgc3RbdV09bGF6eVt1XTsKICAgIGlmKGwhPXIpCiAgICB7CiAgICAgICAgbGF6eVt1PDwxXT1sYXp5W3VdOwogICAgICAgIGxhenlbdTw8MXwxXT1sYXp5W3VdOwogICAgfQogICAgbGF6eVt1XT0tMTsKICAgIHJldHVybjsKfQp2b2lkIHVwZGF0ZShpbnQgdSwgaW50IGwsIGludCByLCBpbnQgdWwsIGludCB1ciwgaW50IHZhbCkKewogICAgaWYodWw+dXIpIHJldHVybjsKICAgIFB1c2godSxsLHIpOwogICAgaWYobD51ciB8fCByPHVsKSByZXR1cm47Ci8vICAgIGNvdXQ8PHU8PCcgJzw8bDw8JyAnPDxyPDwnICc8PGxhenlbdV08PGVsOwogICAgaWYodWw8PWwmJnI8PXVyKQogICAgewogICAgICAgIHN0W3VdPXZhbDsKICAgICAgICBsYXp5W3VdPXZhbDsKICAgICAgICBpZihsIT1yKQogICAgICAgIHsKICAgICAgICAgICAgbGF6eVt1PDwxXT12YWw7CiAgICAgICAgICAgIGxhenlbdTw8MXwxXT12YWw7CiAgICAgICAgfQovLyAgICAgICAgY291dDw8Ik9LXG4iPDx1PDwnICc8PGw8PCcgJzw8cjw8JyAnPDxzdFt1XTw8ZWw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZD0obCtyKT4+MTsKICAgIHVwZGF0ZSh1PDwxLGwsbWlkLHVsLHVyLHZhbCk7IHVwZGF0ZSh1PDwxfDEsbWlkKzEscix1bCx1cix2YWwpOwp9CmludCBxdWVyeShpbnQgdSwgaW50IGwsIGludCByLCBpbnQgcG9zKQp7CiAgICBQdXNoKHUsbCxyKTsKLy8gICAgY291dDw8dTw8JyAnPDxsPDwnICc8PHI8PCcgJzw8bGF6eVt1XTw8ZWw7CiAgICBpZihsPT1yKQogICAgewogICAgICAgIHJldHVybiBzdFt1XTsKICAgIH0KICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICBpZihwb3M8PW1pZCkgcmV0dXJuIHF1ZXJ5KHU8PDEsbCxtaWQscG9zKTsKICAgIHJldHVybiBxdWVyeSh1PDwxfDEsbWlkKzEscixwb3MpOwp9Cgp2b2lkIHVwZGF0ZUFuY2VzdG9yKGludCB1KQp7CiAgICB3aGlsZSh1IT0wKQogICAgewovLyAgICAgICAgY291dDw8cG9zW2hlYWRbdV1dPDwnICc8PHBvc1t1XTw8ZWw7CiAgICAgICAgdXBkYXRlKDEsMSxuLHBvc1toZWFkW3VdXSxwb3NbdV0sMCk7CiAgICAgICAgdT1wYXJbaGVhZFt1XV07CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgZmFzdGlvCiAgICBpZihmb3BlbihGSUxFICIuaW5wIiwiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oRklMRSAiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKEZJTEUgIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luPj5uOwogICAgZm9ydShpLDEsbi0xKQogICAgewogICAgICAgIGludCB1LHY7IGNpbj4+dT4+djsKICAgICAgICBhZGpbdV0ucGIodik7CiAgICAgICAgYWRqW3ZdLnBiKHUpOwogICAgfQogICAgYnVpbGRITEQoKTsKICAgIGNpbj4+cTsKICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgICBpbnQgYyx2OyBjaW4+PmM+PnY7CiAgICAgICAgaWYoYz09MSkKICAgICAgICB7CiAgICAgICAgICAgIHVwZGF0ZSgxLDEsbixwb3Nbdl0scG9zW3ZdK3RyZWVTaXplW3ZdLTEsMSk7Ci8vICAgICAgICAgICAgZm9ydShpLDEsbikgY291dDw8cXVlcnkoMSwxLG4scG9zW2ldKTw8JyAnOwovLyAgICAgICAgICAgIGNvdXQ8PGVsOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGM9PTIpIHVwZGF0ZUFuY2VzdG9yKHYpOwogICAgICAgIGVsc2UgY291dDw8cXVlcnkoMSwxLG4scG9zW3ZdKTw8ZWw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=