#include <bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
#define MAXN (int)2e5+5
using namespace std;
typedef long long ll;
vector<pii>g[MAXN];
void Bumerang(int n, int q, int* p, int* w, int* bs, int* k, ll* ans){
    set<array<int,3>>s;
    map<pii,int>m;
    for(int i=2;i<=n;i++){
            g[i].emplace_back(p[i],w[i]);
            g[p[i]].emplace_back(i,w[i]);
            s.insert({-w[i],i,p[i]});
            m[{i,p[i]}]=w[i];

    }
    for(int i=1;i<=q;i++){
        int a=bs[i],b=k[i];
        ll z=0;
        s.erase({-m[{a,p[a]}],a,p[a]});
        s.insert({-b,a,p[a]});
        m[{a,p[a]}]=b;
        set<array<int,3>>s2;
        for(int j=0;j<3;j++){
            array<int,3>x=*s.begin();s.erase(s.begin());
            s2.insert(x);
            x[0]=-x[0];
            z+=x[0];
        }while(!s2.empty()){
            array<int,3> x=*s2.begin();
            s.insert(x);
            s2.erase(s2.begin());
        }
        ans[i]=z;
    }
}