#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
const int maxN=2e5+15;
vector<vector<int>>g(maxN);
vector<int> w(maxN);
int n;
void init(vector<int>P,vector<int>W){
n=P.size();
w=W;
for(int i=1;i<n;i++) g[P[i]].push_back(i);
}
ll query(int l,int r){
vector<ll>s(n,0);
ll ans=0;
for (int i=n-1;i>=0;i--){
ll sum=0;
for(int ch:g[i]) sum+=s[ch];
ll v=sum;
if(v<l) v=l;
if(v>r) v=r;
ans+=abs(v-sum)*w[i];
s[i]=v;
}
return ans;
}