#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 1;
int n, q;
vector<int> adj[N];
int sz[N], dep[N], par[N], heavy[N];
int head[N], rev[N], pos[N], curPos;
void dfs(int u, int parent) {
sz[u] = 1;
par[u] = parent;
for (int v : adj[u]) {
if (v == parent) continue;
dep[v] = dep[u] + 1;
dfs(v, u);
sz[u] += sz[v];
if (sz[v] > sz[heavy[u]]) heavy[u] = v;
}
}
void decompose(int u, int h) {
head[u] = h;
pos[u] = ++curPos;
rev[curPos] = u;
if (heavy[u] != 0) decompose(heavy[u], h);
for (int v : adj[u]) {
if (v == par[u] || heavy[u] == v) continue;
decompose(v, v);
}
}
int st[4 * N];
void update(int id, int l, int r, int pos) {
if (l == r) {
st[id] ^= 1;
return;
}
if (pos <= (l + r) / 2) update(id << 1, l, (l + r) / 2, pos);
else update(id << 1 | 1, (l + r) / 2 + 1, r, pos);
st[id] = st[id << 1] + st[id << 1 | 1];
}
int walk(int id, int l, int r, int x, int y) {
if (r < x || y < l) return -1;
if (st[id] == 0) return -1;
if (l == r) return l;
int left = walk(id << 1, l, (l + r) / 2, x, y);
if (left != -1) return left;
return walk(id << 1 | 1, (l + r) / 2 + 1, r, x, y);
}
int queryPath(int v) {
stack<pair<int,int>> st;
while (dep[head[v]] > dep[1]) {
st.emplace(pos[head[v]], pos[v]);
v = par[head[v]];
}
st.emplace(1, pos[v]);
while (st.size()) {
auto [l, r] = st.top(); st.pop();
int res = walk(1, 1, n, l, r);
if (res != -1) return rev[res];
}
return -1;
}
void solve() {
cin >> n >> q;
for (int i = 1; i < n; ++i) {
int u, v; cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs(1, 0);
decompose(1, 1);
while (q--) {
int t, u; cin >> t >> u;
if (t & 1) cout << queryPath(u) << '\n';
else update(1, 1, n, pos[u]);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDJlNSArIDE7CgppbnQgbiwgcTsKdmVjdG9yPGludD4gYWRqW05dOwoKaW50IHN6W05dLCBkZXBbTl0sIHBhcltOXSwgaGVhdnlbTl07CmludCBoZWFkW05dLCByZXZbTl0sIHBvc1tOXSwgY3VyUG9zOwoKdm9pZCBkZnMoaW50IHUsIGludCBwYXJlbnQpIHsKICAgc3pbdV0gPSAxOwogICBwYXJbdV0gPSBwYXJlbnQ7CiAgIGZvciAoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgaWYgKHYgPT0gcGFyZW50KSBjb250aW51ZTsKICAgICAgZGVwW3ZdID0gZGVwW3VdICsgMTsKICAgICAgZGZzKHYsIHUpOwogICAgICBzelt1XSArPSBzelt2XTsKICAgICAgaWYgKHN6W3ZdID4gc3pbaGVhdnlbdV1dKSBoZWF2eVt1XSA9IHY7CiAgIH0KfQoKdm9pZCBkZWNvbXBvc2UoaW50IHUsIGludCBoKSB7CiAgIGhlYWRbdV0gPSBoOwogICBwb3NbdV0gPSArK2N1clBvczsKICAgcmV2W2N1clBvc10gPSB1OwogICBpZiAoaGVhdnlbdV0gIT0gMCkgZGVjb21wb3NlKGhlYXZ5W3VdLCBoKTsKICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICBpZiAodiA9PSBwYXJbdV0gfHwgaGVhdnlbdV0gPT0gdikgY29udGludWU7CiAgICAgIGRlY29tcG9zZSh2LCB2KTsKICAgfQp9CgppbnQgc3RbNCAqIE5dOwoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwb3MpIHsKICAgaWYgKGwgPT0gcikgewogICAgICBzdFtpZF0gXj0gMTsKICAgICAgcmV0dXJuOwogICB9CiAgIGlmIChwb3MgPD0gKGwgKyByKSAvIDIpIHVwZGF0ZShpZCA8PCAxLCBsLCAobCArIHIpIC8gMiwgcG9zKTsKICAgZWxzZSB1cGRhdGUoaWQgPDwgMSB8IDEsIChsICsgcikgLyAyICsgMSwgciwgcG9zKTsKICAgc3RbaWRdID0gc3RbaWQgPDwgMV0gKyBzdFtpZCA8PCAxIHwgMV07Cn0KCmludCB3YWxrKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgeCwgaW50IHkpIHsKICAgaWYgKHIgPCB4IHx8IHkgPCBsKSByZXR1cm4gLTE7CiAgIGlmIChzdFtpZF0gPT0gMCkgcmV0dXJuIC0xOwogICBpZiAobCA9PSByKSByZXR1cm4gbDsKICAgaW50IGxlZnQgPSB3YWxrKGlkIDw8IDEsIGwsIChsICsgcikgLyAyLCB4LCB5KTsKICAgaWYgKGxlZnQgIT0gLTEpIHJldHVybiBsZWZ0OwogICByZXR1cm4gd2FsayhpZCA8PCAxIHwgMSwgKGwgKyByKSAvIDIgKyAxLCByLCB4LCB5KTsKfQoKaW50IHF1ZXJ5UGF0aChpbnQgdikgewogICBzdGFjazxwYWlyPGludCxpbnQ+PiBzdDsgCiAgIHdoaWxlIChkZXBbaGVhZFt2XV0gPiBkZXBbMV0pIHsKICAgICAgc3QuZW1wbGFjZShwb3NbaGVhZFt2XV0sIHBvc1t2XSk7CiAgICAgIHYgPSBwYXJbaGVhZFt2XV07CiAgIH0KICAgc3QuZW1wbGFjZSgxLCBwb3Nbdl0pOwogICB3aGlsZSAoc3Quc2l6ZSgpKSB7CiAgICAgIGF1dG8gW2wsIHJdID0gc3QudG9wKCk7IHN0LnBvcCgpOwogICAgICBpbnQgcmVzID0gd2FsaygxLCAxLCBuLCBsLCByKTsKICAgICAgaWYgKHJlcyAhPSAtMSkgcmV0dXJuIHJldltyZXNdOwogICB9CiAgIHJldHVybiAtMTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgY2luID4+IG4gPj4gcTsKICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyArK2kpIHsKICAgICAgaW50IHUsIHY7IGNpbiA+PiB1ID4+IHY7CiAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7CiAgIH0KICAgZGZzKDEsIDApOwogICBkZWNvbXBvc2UoMSwgMSk7CiAgIHdoaWxlIChxLS0pIHsKICAgICAgaW50IHQsIHU7IGNpbiA+PiB0ID4+IHU7CiAgICAgIGlmICh0ICYgMSkgY291dCA8PCBxdWVyeVBhdGgodSkgPDwgJ1xuJzsKICAgICAgZWxzZSB1cGRhdGUoMSwgMSwgbiwgcG9zW3VdKTsKICAgfQp9CgppbnQgbWFpbigpIHsKICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgIGNpbi50aWUobnVsbHB0ciksIGNvdXQudGllKG51bGxwdHIpOwogICBzb2x2ZSgpOwogICByZXR1cm4gMDsKfQ==