#include <bits/stdc++.h>
using namespace std;
#define n nnathw
#define fi first
#define se second
#define MAX 100100
#define pb push_back
#define inf 100000000
int n,q;
vector<pair<int,int> > adj[MAX];
int w[MAX], head[MAX], parent[MAX], treesize[MAX], depth[MAX], pos[MAX];
int cnt = 0;
struct segtree
{
vector<int> st1,st2;
int n;
vector<int> a;
segtree(int _n, vector<int> &_a)
{
n = _n;
a.resize(n+1);
st1.resize(n*4+10, 0);
st2.resize(n*4+10,inf);
for(int i = 1; i<=n; i++) a[i] = _a[i];
}
void build(int id, int l, int r)
{
if(l == r){
st2[id] = a[l];
}else{
int m = (l+r)/2;
build(id*2, l,m);
build(id*2 + 1, m+1, r);
st2[id] = min(st2[id*2], st2[id*2+1]);
}
}
void update(int id,int l, int r, int pos)
{
if(l == r){
st1[id] = 1;
}else{
int m = (l+r)/2;
if(pos <=m){
update(id*2,l,m,pos);
}else{
update(id*2+1,m+1,r,pos);
}
st1[id] = st1[id*2] + st1[id*2 + 1];
}
}
pair<int,int> get(int id, int l, int r, int u, int v)
{
if(r < u || v < l) return make_pair(0,inf);
if(u <= l && r<=v) return make_pair(st1[id], st2[id]);
int m = (l+r)/2;
pair<int,int> t1 = get(id*2,l,m,u,v);
pair<int,int> t2 = get(id*2+1,m+1,r,u,v);
return make_pair(t1.fi + t2.fi, min(t1.se, t2.se));
}
};
void nhap()
{
cin >> n >> q;
for(int i = 0; i<n-1; i++){
int a,b,c; cin >> a >> b >> c;
adj[a].pb(make_pair(b,c));
adj[b].pb(make_pair(a,c));
}
depth[1] = 0;
w[1] = 0;
parent[1] = 0;
}
void dfs(int v, int par)
{
treesize[v] = 1;
int index = -1;
int ans_index = -1;
for(pair<int,int> u : adj[v]){
++index;
if(u.fi == par) continue;
parent[u.fi] = v;
w[u.fi] = u.se;
depth[u.fi] = depth[v] + 1;
dfs(u.fi, v);
treesize[v] += treesize[u.fi];
if(ans_index == -1 || treesize[u.fi] > treesize[adj[v][ans_index].fi]) ans_index = index;
}
if(ans_index != -1 && ans_index != 0 ) swap(adj[v][0], adj[v][ans_index]);
}
void decompose(int v, int par, int h)
{
head[v] = h;
pos[v] = ++cnt;
for(pair<int,int> u : adj[v]){
if(u.fi == par) continue;
if(u.fi == adj[v][0].fi){
decompose(u.fi,v,h);
}else{
decompose(u.fi,v,u.fi);
}
}
}
void process()
{
vector<int> a(n+1);
for(int i = 1; i<=n; i++) a[pos[i]] = w[i];
segtree st(n,a);
st.build(1,1,n);
while(q--)
{
int type; cin >> type;
if(type == 2){
int s; cin >> s;
st.update(1,1,n,pos[s]);
}else{
int u,v; cin >> u >> v;
if(u == v){
cout << 0 << endl;
continue;
}
bool flag = true;
int res = inf;
while(head[u] != head[v]){
if(depth[head[u]] < depth[head[v]]) swap(u,v);
pair<int,int> k = st.get(1,1,n,pos[head[u]],pos[u]);
if(k.fi != 0){
flag = false;
break;
}
res = min(res,k.se);
u = parent[head[u]];
}
if(depth[u] > depth[v]) swap(u,v);
pair<int,int> k = st.get(1,1,n,pos[u]+1,pos[v]);
res = min(res,k.se);
if(k.fi != 0) flag = false;
k = st.get(1,1,n,pos[u],pos[u]);
if(k.fi != 0) flag = false;
if(flag){
cout << res << endl;
}else{
cout << -1 << endl;
}
}
}
}
signed main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
// freopen("backup.inp","r",stdin);
// freopen("backup.out","w",stdout);
nhap();
dfs(1,-1);
decompose(1,-1,-1);
process();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIG4gbm5hdGh3CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBNQVggMTAwMTAwCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgaW5mIDEwMDAwMDAwMAoKaW50IG4scTsKdmVjdG9yPHBhaXI8aW50LGludD4gPiBhZGpbTUFYXTsKaW50IHdbTUFYXSwgaGVhZFtNQVhdLCBwYXJlbnRbTUFYXSwgdHJlZXNpemVbTUFYXSwgZGVwdGhbTUFYXSwgcG9zW01BWF07CmludCBjbnQgPSAwOwoKc3RydWN0IHNlZ3RyZWUKewogICAgdmVjdG9yPGludD4gc3QxLHN0MjsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gYTsKCiAgICBzZWd0cmVlKGludCBfbiwgdmVjdG9yPGludD4gJl9hKQogICAgewogICAgICAgIG4gPSBfbjsKICAgICAgICBhLnJlc2l6ZShuKzEpOwogICAgICAgIHN0MS5yZXNpemUobio0KzEwLCAwKTsKICAgICAgICBzdDIucmVzaXplKG4qNCsxMCxpbmYpOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGk8PW47IGkrKykgYVtpXSA9IF9hW2ldOwogICAgfQoKICAgIHZvaWQgYnVpbGQoaW50IGlkLCBpbnQgbCwgaW50IHIpCiAgICB7CiAgICAgICAgaWYobCA9PSByKXsKICAgICAgICAgICAgc3QyW2lkXSA9IGFbbF07CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGludCBtID0gKGwrcikvMjsKICAgICAgICAgICAgYnVpbGQoaWQqMiwgbCxtKTsKICAgICAgICAgICAgYnVpbGQoaWQqMiArIDEsIG0rMSwgcik7CiAgICAgICAgICAgIHN0MltpZF0gPSBtaW4oc3QyW2lkKjJdLCBzdDJbaWQqMisxXSk7CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgdXBkYXRlKGludCBpZCxpbnQgbCwgaW50IHIsIGludCBwb3MpCiAgICB7CiAgICAgICAgaWYobCA9PSByKXsKICAgICAgICAgICAgc3QxW2lkXSA9IDE7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGludCBtID0gKGwrcikvMjsKICAgICAgICAgICAgaWYocG9zIDw9bSl7CiAgICAgICAgICAgICAgICB1cGRhdGUoaWQqMixsLG0scG9zKTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICB1cGRhdGUoaWQqMisxLG0rMSxyLHBvcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3QxW2lkXSA9IHN0MVtpZCoyXSArIHN0MVtpZCoyICsgMV07CiAgICAgICAgfQogICAgfQoKICAgIHBhaXI8aW50LGludD4gZ2V0KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYpCiAgICB7CiAgICAgICAgaWYociA8IHUgfHwgdiA8IGwpIHJldHVybiBtYWtlX3BhaXIoMCxpbmYpOwogICAgICAgIGlmKHUgPD0gbCAmJiByPD12KSByZXR1cm4gbWFrZV9wYWlyKHN0MVtpZF0sIHN0MltpZF0pOwogICAgICAgIGludCBtID0gKGwrcikvMjsKICAgICAgICBwYWlyPGludCxpbnQ+IHQxID0gZ2V0KGlkKjIsbCxtLHUsdik7CiAgICAgICAgcGFpcjxpbnQsaW50PiB0MiA9IGdldChpZCoyKzEsbSsxLHIsdSx2KTsKICAgICAgICByZXR1cm4gbWFrZV9wYWlyKHQxLmZpICsgdDIuZmksIG1pbih0MS5zZSwgdDIuc2UpKTsKICAgIH0KfTsKCnZvaWQgbmhhcCgpCnsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IoaW50IGkgPSAwOyBpPG4tMTsgaSsrKXsKICAgICAgICBpbnQgYSxiLGM7IGNpbiA+PiBhID4+IGIgPj4gYzsKICAgICAgICBhZGpbYV0ucGIobWFrZV9wYWlyKGIsYykpOwogICAgICAgIGFkaltiXS5wYihtYWtlX3BhaXIoYSxjKSk7CiAgICB9CiAgICBkZXB0aFsxXSA9IDA7CiAgICB3WzFdID0gMDsKICAgIHBhcmVudFsxXSA9IDA7Cn0KCnZvaWQgZGZzKGludCB2LCBpbnQgcGFyKQp7CiAgICB0cmVlc2l6ZVt2XSA9IDE7CiAgICBpbnQgaW5kZXggPSAtMTsKICAgIGludCBhbnNfaW5kZXggPSAtMTsKICAgIGZvcihwYWlyPGludCxpbnQ+IHUgOiBhZGpbdl0pewogICAgICAgICsraW5kZXg7CiAgICAgICAgaWYodS5maSA9PSBwYXIpIGNvbnRpbnVlOwogICAgICAgIHBhcmVudFt1LmZpXSA9IHY7CiAgICAgICAgd1t1LmZpXSA9IHUuc2U7CiAgICAgICAgZGVwdGhbdS5maV0gPSBkZXB0aFt2XSArIDE7CiAgICAgICAgZGZzKHUuZmksIHYpOwogICAgICAgIHRyZWVzaXplW3ZdICs9IHRyZWVzaXplW3UuZmldOwogICAgICAgIGlmKGFuc19pbmRleCA9PSAtMSB8fCB0cmVlc2l6ZVt1LmZpXSA+IHRyZWVzaXplW2Fkalt2XVthbnNfaW5kZXhdLmZpXSkgYW5zX2luZGV4ID0gaW5kZXg7CiAgICB9CiAgICBpZihhbnNfaW5kZXggIT0gLTEgJiYgYW5zX2luZGV4ICE9IDAgKSBzd2FwKGFkalt2XVswXSwgYWRqW3ZdW2Fuc19pbmRleF0pOwp9Cgp2b2lkIGRlY29tcG9zZShpbnQgdiwgaW50IHBhciwgaW50IGgpCnsKICAgIGhlYWRbdl0gPSBoOwogICAgcG9zW3ZdID0gKytjbnQ7CiAgICBmb3IocGFpcjxpbnQsaW50PiB1IDogYWRqW3ZdKXsKICAgICAgICBpZih1LmZpID09IHBhcikgY29udGludWU7CiAgICAgICAgaWYodS5maSA9PSBhZGpbdl1bMF0uZmkpewogICAgICAgICAgICBkZWNvbXBvc2UodS5maSx2LGgpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBkZWNvbXBvc2UodS5maSx2LHUuZmkpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBwcm9jZXNzKCkKewogICAgdmVjdG9yPGludD4gYShuKzEpOwogICAgZm9yKGludCBpID0gMTsgaTw9bjsgaSsrKSBhW3Bvc1tpXV0gPSB3W2ldOwogICAgc2VndHJlZSBzdChuLGEpOwogICAgc3QuYnVpbGQoMSwxLG4pOwogICAgd2hpbGUocS0tKQogICAgewoKICAgIGludCB0eXBlOyBjaW4gPj4gdHlwZTsKCiAgICBpZih0eXBlID09IDIpewogICAgICAgIGludCBzOyBjaW4gPj4gczsKICAgICAgICBzdC51cGRhdGUoMSwxLG4scG9zW3NdKTsKICAgIH1lbHNlewogICAgICAgIGludCB1LHY7IGNpbiA+PiB1ID4+IHY7CiAgICAgICAgaWYodSA9PSB2KXsKICAgICAgICAgICAgY291dCA8PCAwIDw8IGVuZGw7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBib29sIGZsYWcgPSB0cnVlOwogICAgICAgIGludCByZXMgPSBpbmY7CiAgICAgICAgd2hpbGUoaGVhZFt1XSAhPSBoZWFkW3ZdKXsKICAgICAgICAgICAgaWYoZGVwdGhbaGVhZFt1XV0gPCBkZXB0aFtoZWFkW3ZdXSkgc3dhcCh1LHYpOwogICAgICAgICAgICBwYWlyPGludCxpbnQ+IGsgPSBzdC5nZXQoMSwxLG4scG9zW2hlYWRbdV1dLHBvc1t1XSk7CiAgICAgICAgICAgIGlmKGsuZmkgIT0gMCl7CiAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXMgPSBtaW4ocmVzLGsuc2UpOwogICAgICAgICAgICB1ID0gcGFyZW50W2hlYWRbdV1dOwogICAgICAgIH0KICAgICAgICBpZihkZXB0aFt1XSA+IGRlcHRoW3ZdKSBzd2FwKHUsdik7CiAgICAgICAgcGFpcjxpbnQsaW50PiBrID0gc3QuZ2V0KDEsMSxuLHBvc1t1XSsxLHBvc1t2XSk7CiAgICAgICAgcmVzID0gbWluKHJlcyxrLnNlKTsKICAgICAgICBpZihrLmZpICE9IDApIGZsYWcgPSBmYWxzZTsKICAgICAgICBrID0gc3QuZ2V0KDEsMSxuLHBvc1t1XSxwb3NbdV0pOwogICAgICAgIGlmKGsuZmkgIT0gMCkgZmxhZyA9IGZhbHNlOwogICAgICAgIGlmKGZsYWcpewogICAgICAgICAgICBjb3V0IDw8IHJlcyA8PCBlbmRsOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBjb3V0IDw8IC0xIDw8IGVuZGw7CiAgICAgICAgfQogICAgfQoKICAgIH0KfQoKc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwovLyAgICBmcmVvcGVuKCJiYWNrdXAuaW5wIiwiciIsc3RkaW4pOwovLyAgICBmcmVvcGVuKCJiYWNrdXAub3V0IiwidyIsc3Rkb3V0KTsKICAgIG5oYXAoKTsKICAgIGRmcygxLC0xKTsKICAgIGRlY29tcG9zZSgxLC0xLC0xKTsKICAgIHByb2Nlc3MoKTsKICAgIHJldHVybiAwOwp9Cg==