#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sp ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
#define cps CLOCKS_PER_SEC
#define mod (ll)1000000007
#define f first
#define s second
#define debug1(x) cout<<x<<"\n"
#define debug2(x,y) cout<<x<<" "<<y<<"\n"
#define debug3(x,y,z) cout<<x<<" "<<y<<" "<<z<<"\n"
#define nl cout<<"\n";
#define pq priority_queue
#define inf 0x3f3f3f3f
#define test cout<<"abcd\n";
#define pi pair<int,int>
#define pii pair<int,pi>
#define pb push_back
#define mxn 100011
ll ans=0,d;
int a[mxn],sz[mxn];
map<ll,ll> mp[mxn];
void init(){
for(int i=1; i<mxn; ++i){
a[i]=i;
sz[i]=1;
}}
int root(int i){
while(i!=a[i]){
a[i]=a[a[i]];
i=a[i];
}
return i;
}
void unn(int p,int q){
p=root(p);
q=root(q);
if(p==q)return;
if(sz[p]<sz[q])swap(p,q);
a[q]=a[p];
sz[p]+=sz[q];
for(auto &it:mp[q])
for(int i=-d; i<=d; ++i)
if(mp[p].find(it.f+i)!=mp[p].end())
ans+=(it.s*mp[p][it.f+i]);
for(auto &it:mp[q])
mp[p][it.f]+=it.s;
}
int main(){
sp;
init();
int n,u,v;
ll x;
cin>>n>>d;
for(int i=1; i<=n; ++i){
cin>>x;
mp[i][x]=1;
}
vector<pi> g;
g.pb({0,0});
for(int i=1; i<n; ++i){
cin>>u>>v;
g.pb({u,v});
}
int c[n];
for(int i=1; i<n; ++i)
cin>>c[i];
ll b[n];
for(int i=n-1; i>0; --i){
b[i]=ans;
unn(g[c[i]].f,g[c[i]].s);
}
for(int i=1; i<n; ++i)
cout<<b[i]<<"\n";
return 0;}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHNwIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLGNpbi50aWUoTlVMTCksY291dC50aWUoTlVMTCkKI2RlZmluZSBjcHMgQ0xPQ0tTX1BFUl9TRUMKI2RlZmluZSBtb2QgKGxsKTEwMDAwMDAwMDcKI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgcyBzZWNvbmQKI2RlZmluZSBkZWJ1ZzEoeCkgY291dDw8eDw8IlxuIgojZGVmaW5lIGRlYnVnMih4LHkpIGNvdXQ8PHg8PCIgIjw8eTw8IlxuIgojZGVmaW5lIGRlYnVnMyh4LHkseikgY291dDw8eDw8IiAiPDx5PDwiICI8PHo8PCJcbiIKI2RlZmluZSBubCBjb3V0PDwiXG4iOwojZGVmaW5lIHBxIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgaW5mIDB4M2YzZjNmM2YKI2RlZmluZSB0ZXN0IGNvdXQ8PCJhYmNkXG4iOwojZGVmaW5lIHBpIHBhaXI8aW50LGludD4KI2RlZmluZSBwaWkgcGFpcjxpbnQscGk+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXhuIDEwMDAxMQpsbCBhbnM9MCxkOwppbnQgYVtteG5dLHN6W214bl07Cm1hcDxsbCxsbD4gbXBbbXhuXTsKIAp2b2lkIGluaXQoKXsKZm9yKGludCBpPTE7IGk8bXhuOyArK2kpewogICAgYVtpXT1pOwogICAgc3pbaV09MTsKfX0KIAppbnQgcm9vdChpbnQgaSl7CndoaWxlKGkhPWFbaV0pewogICAgYVtpXT1hW2FbaV1dOwogICAgaT1hW2ldOwp9CnJldHVybiBpOwp9CiAKdm9pZCB1bm4oaW50IHAsaW50IHEpewpwPXJvb3QocCk7CnE9cm9vdChxKTsKaWYocD09cSlyZXR1cm47CmlmKHN6W3BdPHN6W3FdKXN3YXAocCxxKTsKYVtxXT1hW3BdOwpzeltwXSs9c3pbcV07CmZvcihhdXRvICZpdDptcFtxXSkKICAgIGZvcihpbnQgaT0tZDsgaTw9ZDsgKytpKQogICAgICAgICAgICBpZihtcFtwXS5maW5kKGl0LmYraSkhPW1wW3BdLmVuZCgpKQogICAgICAgICAgICBhbnMrPShpdC5zKm1wW3BdW2l0LmYraV0pOwpmb3IoYXV0byAmaXQ6bXBbcV0pCiAgICBtcFtwXVtpdC5mXSs9aXQuczsKfQogCmludCBtYWluKCl7CnNwOwppbml0KCk7CmludCBuLHUsdjsKbGwgeDsKY2luPj5uPj5kOwpmb3IoaW50IGk9MTsgaTw9bjsgKytpKXsKICAgIGNpbj4+eDsKICAgIG1wW2ldW3hdPTE7Cn0KdmVjdG9yPHBpPiBnOwpnLnBiKHswLDB9KTsKZm9yKGludCBpPTE7IGk8bjsgKytpKXsKICAgIGNpbj4+dT4+djsKICAgIGcucGIoe3Usdn0pOwp9CmludCBjW25dOwpmb3IoaW50IGk9MTsgaTxuOyArK2kpCmNpbj4+Y1tpXTsKbGwgYltuXTsKZm9yKGludCBpPW4tMTsgaT4wOyAtLWkpewogICBiW2ldPWFuczsKICAgIHVubihnW2NbaV1dLmYsZ1tjW2ldXS5zKTsKfQpmb3IoaW50IGk9MTsgaTxuOyArK2kpCmNvdXQ8PGJbaV08PCJcbiI7CiAKcmV0dXJuIDA7fQ==