#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int oo = 2e9;
const int N = 1e5+5;
const int LG = 18;
struct Query {
int type, u, v;
} qs[N];
int n, q;
vector<pair<int, int>> adj[N];
int destroyed[N], ans[N];
bool active[N];
int P[N];
int depth[N], up[N][LG], min_w[N][LG];
int find(int u) {
return P[u] == u ? u : P[u] = find(P[u]);
}
void join(int u, int v) {
u = find(u); v = find(v);
if (u != v) P[v] = u;
}
void dfs(int u, int p, int w) {
up[u][0] = p;
min_w[u][0] = w;
for (int i = 1; i < LG; i++) {
up[u][i] = up[up[u][i - 1]][i - 1];
min_w[u][i] = min(min_w[u][i - 1], min_w[up[u][i - 1]][i - 1]);
}
for (auto [v, c] : adj[u]) {
if (v == p) continue;
depth[v] = depth[u] + 1;
dfs(v, u, c);
}
}
int get_ans(int u, int v) {
if (depth[u] < depth[v]) swap(u, v);
int ans = oo;
for (int i = LG - 1; i >= 0; i--)
if (depth[u] - (1 << i) >= depth[v]) {
ans = min(ans, min_w[u][i]);
u = up[u][i];
}
if (u == v) return ans;
for (int i = LG - 1; i >= 0; i--)
if (up[u][i] != up[v][i]) {
ans = min({ans, min_w[u][i], min_w[v][i]});
u = up[u][i];
v = up[v][i];
}
return min({ans, min_w[u][0], min_w[v][0]});;
}
void solve() {
cin >> n >> q;
for (int i = 0; i < n - 1; i++) {
int u, v, w; cin >> u >> v >> w;
adj[u].emplace_back(v, w);
adj[v].emplace_back(u, w);
}
for (int i = 0; i < LG; i++) min_w[0][i] = oo;
dfs(1, 0, oo);
for (int i = 1; i <= q; i++) {
cin >> qs[i].type;
if (qs[i].type == 1) cin >> qs[i].u >> qs[i].v;
else {
cin >> qs[i].u;
destroyed[qs[i].u]++;
}
}
for (int i = 1; i <= n; i++) {
P[i] = i;
if (!destroyed[i]) active[i] = 1;
}
for (int u = 1; u <= n; u++) {
if (!active[u]) continue;
for (auto [v, c] : adj[u])
if (active[v]) join(u, v);
}
for (int i = q; i >= 1; i--) {
if (qs[i].type == 1) {
int u = qs[i].u, v = qs[i].v;
if (u == v) ans[i] = 0;
else if (find(u) == find(v)) ans[i] = get_ans(u, v);
else ans[i] = -1;
} else {
int u = qs[i].u;
destroyed[u]--;
if (!destroyed[u]) {
active[u] = 1;
for (auto [v, c] : adj[u])
if (active[v]) join(u, v);
}
}
}
for (int i = 1; i <= q; i++)
if (qs[i].type == 1) cout << ans[i] << '\n';
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define TASK "BACKUP"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << clock() << " ms.\n";
#endif
return 0;
};
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmNvbnN0IGludCBvbyA9IDJlOTsKY29uc3QgaW50IE4gPSAxZTUrNTsKY29uc3QgaW50IExHID0gMTg7CgpzdHJ1Y3QgUXVlcnkgewogICAgaW50IHR5cGUsIHUsIHY7Cn0gcXNbTl07CgppbnQgbiwgcTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhZGpbTl07CmludCBkZXN0cm95ZWRbTl0sIGFuc1tOXTsKCmJvb2wgYWN0aXZlW05dOwppbnQgUFtOXTsKaW50IGRlcHRoW05dLCB1cFtOXVtMR10sIG1pbl93W05dW0xHXTsKCmludCBmaW5kKGludCB1KSB7CiAgICByZXR1cm4gUFt1XSA9PSB1ID8gdSA6IFBbdV0gPSBmaW5kKFBbdV0pOwp9Cgp2b2lkIGpvaW4oaW50IHUsIGludCB2KSB7CiAgICB1ID0gZmluZCh1KTsgdiA9IGZpbmQodik7CiAgICBpZiAodSAhPSB2KSBQW3ZdID0gdTsKfQoKdm9pZCBkZnMoaW50IHUsIGludCBwLCBpbnQgdykgewogICAgdXBbdV1bMF0gPSBwOwogICAgbWluX3dbdV1bMF0gPSB3OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBMRzsgaSsrKSB7CiAgICAgICAgdXBbdV1baV0gPSB1cFt1cFt1XVtpIC0gMV1dW2kgLSAxXTsKICAgICAgICBtaW5fd1t1XVtpXSA9IG1pbihtaW5fd1t1XVtpIC0gMV0sIG1pbl93W3VwW3VdW2kgLSAxXV1baSAtIDFdKTsKICAgIH0KICAgIGZvciAoYXV0byBbdiwgY10gOiBhZGpbdV0pIHsKICAgICAgICBpZiAodiA9PSBwKSBjb250aW51ZTsKICAgICAgICBkZXB0aFt2XSA9IGRlcHRoW3VdICsgMTsKICAgICAgICBkZnModiwgdSwgYyk7CiAgICB9Cn0KCmludCBnZXRfYW5zKGludCB1LCBpbnQgdikgewogICAgaWYgKGRlcHRoW3VdIDwgZGVwdGhbdl0pIHN3YXAodSwgdik7CiAgICBpbnQgYW5zID0gb287CiAgICBmb3IgKGludCBpID0gTEcgLSAxOyBpID49IDA7IGktLSkKICAgICAgICBpZiAoZGVwdGhbdV0gLSAoMSA8PCBpKSA+PSBkZXB0aFt2XSkgewogICAgICAgICAgICBhbnMgPSBtaW4oYW5zLCBtaW5fd1t1XVtpXSk7CiAgICAgICAgICAgIHUgPSB1cFt1XVtpXTsKICAgICAgICB9CiAgICBpZiAodSA9PSB2KSByZXR1cm4gYW5zOwogICAgZm9yIChpbnQgaSA9IExHIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgaWYgKHVwW3VdW2ldICE9IHVwW3ZdW2ldKSB7CiAgICAgICAgICAgIGFucyA9IG1pbih7YW5zLCBtaW5fd1t1XVtpXSwgbWluX3dbdl1baV19KTsKICAgICAgICAgICAgdSA9IHVwW3VdW2ldOwogICAgICAgICAgICB2ID0gdXBbdl1baV07CiAgICAgICAgfQogICAgcmV0dXJuIG1pbih7YW5zLCBtaW5fd1t1XVswXSwgbWluX3dbdl1bMF19KTs7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHc7IGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBhZGpbdV0uZW1wbGFjZV9iYWNrKHYsIHcpOwogICAgICAgIGFkalt2XS5lbXBsYWNlX2JhY2sodSwgdyk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IExHOyBpKyspIG1pbl93WzBdW2ldID0gb287CiAgICBkZnMoMSwgMCwgb28pOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSB7CiAgICAgICAgY2luID4+IHFzW2ldLnR5cGU7CiAgICAgICAgaWYgKHFzW2ldLnR5cGUgPT0gMSkgY2luID4+IHFzW2ldLnUgPj4gcXNbaV0udjsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY2luID4+IHFzW2ldLnU7CiAgICAgICAgICAgIGRlc3Ryb3llZFtxc1tpXS51XSsrOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIFBbaV0gPSBpOwogICAgICAgIGlmICghZGVzdHJveWVkW2ldKSBhY3RpdmVbaV0gPSAxOwogICAgfQogICAgZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CiAgICAgICAgaWYgKCFhY3RpdmVbdV0pIGNvbnRpbnVlOwogICAgICAgIGZvciAoYXV0byBbdiwgY10gOiBhZGpbdV0pCiAgICAgICAgICAgIGlmIChhY3RpdmVbdl0pIGpvaW4odSwgdik7CiAgICB9CiAgICBmb3IgKGludCBpID0gcTsgaSA+PSAxOyBpLS0pIHsKICAgICAgICBpZiAocXNbaV0udHlwZSA9PSAxKSB7CiAgICAgICAgICAgIGludCB1ID0gcXNbaV0udSwgdiA9IHFzW2ldLnY7CiAgICAgICAgICAgIGlmICh1ID09IHYpIGFuc1tpXSA9IDA7CiAgICAgICAgICAgIGVsc2UgaWYgKGZpbmQodSkgPT0gZmluZCh2KSkgYW5zW2ldID0gZ2V0X2Fucyh1LCB2KTsKICAgICAgICAgICAgZWxzZSBhbnNbaV0gPSAtMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnQgdSA9IHFzW2ldLnU7CiAgICAgICAgICAgIGRlc3Ryb3llZFt1XS0tOwogICAgICAgICAgICBpZiAoIWRlc3Ryb3llZFt1XSkgewogICAgICAgICAgICAgICAgYWN0aXZlW3VdID0gMTsKICAgICAgICAgICAgICAgIGZvciAoYXV0byBbdiwgY10gOiBhZGpbdV0pCiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVt2XSkgam9pbih1LCB2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKICAgICAgICBpZiAocXNbaV0udHlwZSA9PSAxKSBjb3V0IDw8IGFuc1tpXSA8PCAnXG4nOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgICNkZWZpbmUgVEFTSyAiQkFDS1VQIgogICAgaWYgKGZvcGVuKFRBU0siLklOUCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKFRBU0siLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQogICAgCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZkZWYgTE9DQUwKICAgIGNlcnIgPDwgIlxuVGltZSBlbGFwc2VkOiAiIDw8IGNsb2NrKCkgPDwgIiBtcy5cbiI7CiAgICAjZW5kaWYKICAgIHJldHVybiAwOwp9Owo=