#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define sz(a) (int)(a).size()
#define all(a) (a).begin(), (a).end()
#define bit(s, i) (((s) >> (i)) & 1)
#define ii pair <int, int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define ll long long
#define eb emplace_back
#define pb push_back
#define __builtin_popcount __builtin_popcountll
template <class X, class Y>
bool maxi(X &x, Y y) {
if(x < y) {
x = y;
return true;
}
return false;
}
template <class X, class Y>
bool mini(X &x, Y y) {
if(x > y) {
x = y;
return true;
}
return false;
}
void solve();
int32_t main() {
#define task "test"
if(fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
int tc = 1; //cin >> tc;
FOR(i, 1, tc){
solve();
}
}
const int N=2e5+5;
int n,q,we[N],tin[N],tout[N],tour[N*2],Time,up[N][18]; ll d[N];
vector<ii> adj[N];
ii edge[N];
struct Node{
ll mx,mi,lz,best1,best2; bool turn;
Node(){
mx=-1e18; mi=1e18; lz=0; turn=0;
best1=best2=-1e18;
}
} st[N*8];
void dfs(int u, int p){
tin[u]=++Time; tour[Time]=u;
for(auto [v,w]:adj[u]) if(v!=p){
d[v]=d[u]+w;
up[v][0]=u;
FOR(i,1,17) up[v][i]=up[up[v][i-1]][i-1];
dfs(v,u);
tour[++Time]=u;
}
tout[u]=Time;
}
void combine(Node &c, Node &a, Node &b){
c.mx=-1e18, c.mi=1e18;
c.best1=c.best2=-1e18;
if(a.turn) maxi(c.mx,a.mx), mini(c.mi,a.mi), maxi(c.best1,a.best1), maxi(c.best2,a.best2);
if(b.turn) maxi(c.mx,b.mx), mini(c.mi,b.mi), maxi(c.best1,b.best1), maxi(c.best2,b.best2);
if(a.turn&&b.turn){
maxi(c.best1,a.mx-2*b.mi);
maxi(c.best2,b.mx-2*a.mi);
}
}
void build(int id, int l, int r){
st[id].turn=1;
if(l==r){
st[id].mx=st[id].mi=d[tour[l]];
st[id].best1=st[id].best2=-d[tour[l]];
return;
}
int mid=(l+r)>>1;
build(id<<1,l,mid);
build(id<<1|1,mid+1,r);
combine(st[id],st[id<<1],st[id<<1|1]);
}
void apply_add(int id, ll val){
st[id].mi+=val;
st[id].mx+=val;
st[id].lz+=val;
st[id].best1-=val;
st[id].best2-=val;
}
void down(int id){
if(st[id].lz==0) return;
apply_add(id<<1,st[id].lz);
apply_add(id<<1|1,st[id].lz);
st[id].lz=0;
}
void upd_del(int u, int v, int val, int id, int l, int r){
if(u>r||v<l) return;
if(u<=l&&r<=v){
// cout<<l<<" "<<r<<" "<<id<<" "<<val<<'\n';
st[id].turn=val;
return;
}
int mid=(l+r)>>1;
down(id);
upd_del(u,v,val,id<<1,l,mid);
upd_del(u,v,val,id<<1|1,mid+1,r);
combine(st[id],st[id<<1],st[id<<1|1]);
}
void upd_add(int u, int v, ll val, int id, int l, int r){
if(u>r||v<l) return;
if(u<=l&&r<=v){
apply_add(id,val);
return;
}
int mid=(l+r)>>1;
down(id);
upd_add(u,v,val,id<<1,l,mid);
upd_add(u,v,val,id<<1|1,mid+1,r);
combine(st[id],st[id<<1],st[id<<1|1]);
}
Node get(int u, int v, int id, int l, int r){
// cout<<l<<" "<<r<<" "<<id<<" "<<st[id].turn<<'\n';
if(!st[id].turn) return Node();
if(u<=l&&r<=v){
return st[id];
}
int mid=(l+r)>>1;
down(id);
if(u>mid) return get(u,v,id<<1|1,mid+1,r);
if(v<=mid) return get(u,v,id<<1,l,mid);
Node c; c.turn=1;
Node a=get(u,v,id<<1,l,mid), b=get(u,v,id<<1|1,mid+1,r);
combine(c,a,b);
return c;
}
void solve() {
cin>>n;
FOR(i,1,n-1){
int u,v,w; cin>>u>>v>>w;
adj[u].eb(v,w); adj[v].eb(u,w);
we[i]=w;
edge[i]={u,v};
}
dfs(1,1);
// FOR(i,1,Time) cout<<tour[i]<<" ";
build(1,1,Time);
cin>>q;
FOR(_,1,q){
int t; cin>>t;
if(t==1){
int x,k;
vector<int> ds;
cin>>x>>k;
FOR(i,1,k){
int p; cin>>p;
ds.eb(p);
}
vector<ii> it;
for(int p:ds){
if(tin[p]<=tin[x]&&tout[x]<=tout[p]) {
int c=x;
FORD(i,17,0) if(d[up[c][i]]>d[p]) c=up[c][i];
if(1<=tin[c]-1) it.eb(1,tin[c]-1);
if(tout[c]+1<=Time) it.eb(tout[c]+1,Time);
}
else it.eb(tin[p],tout[p]);
}
for(auto [l,r]:it){
// cout<<l<<" "<<r<<'\n';
upd_del(l,r,0,1,1,Time);
}
ll dep=get(tin[x],tin[x],1,1,Time).mi;
// cout<<get(1,tin[x],1,1,Time).best1<<'\n';
cout<<max({0ll,max(get(1,tin[x],1,1,Time).best1,get(tin[x],Time,1,1,Time).best2)+dep})<<'\n';
for(auto [l,r]:it){
upd_del(l,r,1,1,1,Time);
}
}
else{
int i,w; cin>>i>>w;
if(tin[edge[i].fi]>tin[edge[i].se]) swap(edge[i].fi,edge[i].se);
upd_add(tin[edge[i].se],tout[edge[i].se],w-we[i],1,1,Time);
we[i]=w;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPD0gKGIpOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPj0gKGIpOyAtLWkpCiNkZWZpbmUgc3ooYSkgKGludCkoYSkuc2l6ZSgpCiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLCAoYSkuZW5kKCkKI2RlZmluZSBiaXQocywgaSkgKCgocykgPj4gKGkpKSAmIDEpCiNkZWZpbmUgaWkgcGFpciA8aW50LCBpbnQ+CiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBfX2J1aWx0aW5fcG9wY291bnQgX19idWlsdGluX3BvcGNvdW50bGwKCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtYXhpKFggJngsIFkgeSkgewogICAgICAgIGlmKHggPCB5KSB7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBib29sIG1pbmkoWCAmeCwgWSB5KSB7CiAgICAgICAgaWYoeCA+IHkpIHsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cgp2b2lkIHNvbHZlKCk7CmludDMyX3QgbWFpbigpIHsKICAgICNkZWZpbmUgdGFzayAidGVzdCIKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsICJyIikpewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CgogICAgaW50IHRjID0gMTsgLy9jaW4gPj4gdGM7CiAgICBGT1IoaSwgMSwgdGMpewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0KCmNvbnN0IGludCBOPTJlNSs1OwoKaW50IG4scSx3ZVtOXSx0aW5bTl0sdG91dFtOXSx0b3VyW04qMl0sVGltZSx1cFtOXVsxOF07IGxsIGRbTl07CnZlY3RvcjxpaT4gYWRqW05dOwppaSBlZGdlW05dOwoKc3RydWN0IE5vZGV7CiAgICBsbCBteCxtaSxseixiZXN0MSxiZXN0MjsgYm9vbCB0dXJuOwogICAgTm9kZSgpewogICAgICAgIG14PS0xZTE4OyBtaT0xZTE4OyBsej0wOyB0dXJuPTA7CiAgICAgICAgYmVzdDE9YmVzdDI9LTFlMTg7CiAgICB9Cn0gc3RbTio4XTsKCnZvaWQgZGZzKGludCB1LCBpbnQgcCl7CiAgICB0aW5bdV09KytUaW1lOyB0b3VyW1RpbWVdPXU7CiAgICBmb3IoYXV0byBbdix3XTphZGpbdV0pIGlmKHYhPXApewogICAgICAgIGRbdl09ZFt1XSt3OwogICAgICAgIHVwW3ZdWzBdPXU7CiAgICAgICAgRk9SKGksMSwxNykgdXBbdl1baV09dXBbdXBbdl1baS0xXV1baS0xXTsKICAgICAgICBkZnModix1KTsKICAgICAgICB0b3VyWysrVGltZV09dTsKICAgIH0KICAgIHRvdXRbdV09VGltZTsKfQoKdm9pZCBjb21iaW5lKE5vZGUgJmMsIE5vZGUgJmEsIE5vZGUgJmIpewogICAgYy5teD0tMWUxOCwgYy5taT0xZTE4OwogICAgYy5iZXN0MT1jLmJlc3QyPS0xZTE4OwogICAgaWYoYS50dXJuKSBtYXhpKGMubXgsYS5teCksIG1pbmkoYy5taSxhLm1pKSwgbWF4aShjLmJlc3QxLGEuYmVzdDEpLCBtYXhpKGMuYmVzdDIsYS5iZXN0Mik7CiAgICBpZihiLnR1cm4pIG1heGkoYy5teCxiLm14KSwgbWluaShjLm1pLGIubWkpLCBtYXhpKGMuYmVzdDEsYi5iZXN0MSksIG1heGkoYy5iZXN0MixiLmJlc3QyKTsKICAgIGlmKGEudHVybiYmYi50dXJuKXsKICAgICAgICBtYXhpKGMuYmVzdDEsYS5teC0yKmIubWkpOwogICAgICAgIG1heGkoYy5iZXN0MixiLm14LTIqYS5taSk7CiAgICB9Cn0KCnZvaWQgYnVpbGQoaW50IGlkLCBpbnQgbCwgaW50IHIpewogICAgc3RbaWRdLnR1cm49MTsKICAgIGlmKGw9PXIpewogICAgICAgIHN0W2lkXS5teD1zdFtpZF0ubWk9ZFt0b3VyW2xdXTsKICAgICAgICBzdFtpZF0uYmVzdDE9c3RbaWRdLmJlc3QyPS1kW3RvdXJbbF1dOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICBidWlsZChpZDw8MSxsLG1pZCk7CiAgICBidWlsZChpZDw8MXwxLG1pZCsxLHIpOwogICAgY29tYmluZShzdFtpZF0sc3RbaWQ8PDFdLHN0W2lkPDwxfDFdKTsKfQoKdm9pZCBhcHBseV9hZGQoaW50IGlkLCBsbCB2YWwpewogICAgc3RbaWRdLm1pKz12YWw7CiAgICBzdFtpZF0ubXgrPXZhbDsKICAgIHN0W2lkXS5seis9dmFsOwogICAgc3RbaWRdLmJlc3QxLT12YWw7CiAgICBzdFtpZF0uYmVzdDItPXZhbDsKfQp2b2lkIGRvd24oaW50IGlkKXsKICAgIGlmKHN0W2lkXS5sej09MCkgcmV0dXJuOwogICAgYXBwbHlfYWRkKGlkPDwxLHN0W2lkXS5seik7CiAgICBhcHBseV9hZGQoaWQ8PDF8MSxzdFtpZF0ubHopOwogICAgc3RbaWRdLmx6PTA7Cn0KCnZvaWQgdXBkX2RlbChpbnQgdSwgaW50IHYsIGludCB2YWwsIGludCBpZCwgaW50IGwsIGludCByKXsKICAgIGlmKHU+cnx8djxsKSByZXR1cm47CiAgICBpZih1PD1sJiZyPD12KXsKLy8gICAgICAgICAgICBjb3V0PDxsPDwiICI8PHI8PCIgIjw8aWQ8PCIgIjw8dmFsPDwnXG4nOwogICAgICAgIHN0W2lkXS50dXJuPXZhbDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgZG93bihpZCk7CiAgICB1cGRfZGVsKHUsdix2YWwsaWQ8PDEsbCxtaWQpOwogICAgdXBkX2RlbCh1LHYsdmFsLGlkPDwxfDEsbWlkKzEscik7CiAgICBjb21iaW5lKHN0W2lkXSxzdFtpZDw8MV0sc3RbaWQ8PDF8MV0pOwp9Cgp2b2lkIHVwZF9hZGQoaW50IHUsIGludCB2LCBsbCB2YWwsIGludCBpZCwgaW50IGwsIGludCByKXsKICAgIGlmKHU+cnx8djxsKSByZXR1cm47CiAgICBpZih1PD1sJiZyPD12KXsKICAgICAgICBhcHBseV9hZGQoaWQsdmFsKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgZG93bihpZCk7CiAgICB1cGRfYWRkKHUsdix2YWwsaWQ8PDEsbCxtaWQpOwogICAgdXBkX2FkZCh1LHYsdmFsLGlkPDwxfDEsbWlkKzEscik7CiAgICBjb21iaW5lKHN0W2lkXSxzdFtpZDw8MV0sc3RbaWQ8PDF8MV0pOwp9CgpOb2RlIGdldChpbnQgdSwgaW50IHYsIGludCBpZCwgaW50IGwsIGludCByKXsKLy8gICAgY291dDw8bDw8IiAiPDxyPDwiICI8PGlkPDwiICI8PHN0W2lkXS50dXJuPDwnXG4nOwogICAgaWYoIXN0W2lkXS50dXJuKSByZXR1cm4gTm9kZSgpOwogICAgaWYodTw9bCYmcjw9dil7CiAgICAgICAgcmV0dXJuIHN0W2lkXTsKICAgIH0KICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICBkb3duKGlkKTsKICAgIGlmKHU+bWlkKSByZXR1cm4gZ2V0KHUsdixpZDw8MXwxLG1pZCsxLHIpOwogICAgaWYodjw9bWlkKSByZXR1cm4gZ2V0KHUsdixpZDw8MSxsLG1pZCk7CiAgICBOb2RlIGM7IGMudHVybj0xOwogICAgTm9kZSBhPWdldCh1LHYsaWQ8PDEsbCxtaWQpLCBiPWdldCh1LHYsaWQ8PDF8MSxtaWQrMSxyKTsKICAgIGNvbWJpbmUoYyxhLGIpOwogICAgcmV0dXJuIGM7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4+Pm47CiAgICBGT1IoaSwxLG4tMSl7CiAgICAgICAgaW50IHUsdix3OyBjaW4+PnU+PnY+Pnc7CiAgICAgICAgYWRqW3VdLmViKHYsdyk7IGFkalt2XS5lYih1LHcpOwogICAgICAgIHdlW2ldPXc7CiAgICAgICAgZWRnZVtpXT17dSx2fTsKICAgIH0KICAgIGRmcygxLDEpOwoKLy8gICAgRk9SKGksMSxUaW1lKSBjb3V0PDx0b3VyW2ldPDwiICI7CgogICAgYnVpbGQoMSwxLFRpbWUpOwogICAgY2luPj5xOwogICAgRk9SKF8sMSxxKXsKICAgICAgICBpbnQgdDsgY2luPj50OwogICAgICAgIGlmKHQ9PTEpewogICAgICAgICAgICBpbnQgeCxrOwogICAgICAgICAgICB2ZWN0b3I8aW50PiBkczsKCiAgICAgICAgICAgIGNpbj4+eD4+azsKICAgICAgICAgICAgRk9SKGksMSxrKXsKICAgICAgICAgICAgICAgIGludCBwOyBjaW4+PnA7CiAgICAgICAgICAgICAgICBkcy5lYihwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmVjdG9yPGlpPiBpdDsKICAgICAgICAgICAgZm9yKGludCBwOmRzKXsKICAgICAgICAgICAgICAgIGlmKHRpbltwXTw9dGluW3hdJiZ0b3V0W3hdPD10b3V0W3BdKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IGM9eDsKICAgICAgICAgICAgICAgICAgICBGT1JEKGksMTcsMCkgaWYoZFt1cFtjXVtpXV0+ZFtwXSkgYz11cFtjXVtpXTsKICAgICAgICAgICAgICAgICAgICBpZigxPD10aW5bY10tMSkgaXQuZWIoMSx0aW5bY10tMSk7CiAgICAgICAgICAgICAgICAgICAgaWYodG91dFtjXSsxPD1UaW1lKSBpdC5lYih0b3V0W2NdKzEsVGltZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGl0LmViKHRpbltwXSx0b3V0W3BdKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yKGF1dG8gW2wscl06aXQpewovLyAgICAgICAgICAgICAgICBjb3V0PDxsPDwiICI8PHI8PCdcbic7CiAgICAgICAgICAgICAgICB1cGRfZGVsKGwsciwwLDEsMSxUaW1lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGwgZGVwPWdldCh0aW5beF0sdGluW3hdLDEsMSxUaW1lKS5taTsKLy8gICAgICAgICAgICBjb3V0PDxnZXQoMSx0aW5beF0sMSwxLFRpbWUpLmJlc3QxPDwnXG4nOwogICAgICAgICAgICBjb3V0PDxtYXgoezBsbCxtYXgoZ2V0KDEsdGluW3hdLDEsMSxUaW1lKS5iZXN0MSxnZXQodGluW3hdLFRpbWUsMSwxLFRpbWUpLmJlc3QyKStkZXB9KTw8J1xuJzsKCiAgICAgICAgICAgIGZvcihhdXRvIFtsLHJdOml0KXsKICAgICAgICAgICAgICAgIHVwZF9kZWwobCxyLDEsMSwxLFRpbWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGludCBpLHc7IGNpbj4+aT4+dzsKICAgICAgICAgICAgaWYodGluW2VkZ2VbaV0uZmldPnRpbltlZGdlW2ldLnNlXSkgc3dhcChlZGdlW2ldLmZpLGVkZ2VbaV0uc2UpOwogICAgICAgICAgICB1cGRfYWRkKHRpbltlZGdlW2ldLnNlXSx0b3V0W2VkZ2VbaV0uc2VdLHctd2VbaV0sMSwxLFRpbWUpOwogICAgICAgICAgICB3ZVtpXT13OwogICAgICAgIH0KICAgIH0KCn0K