#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll M=300000;
vector<ll> g[300000];
ll in[300000], out[300000];
void dfs1(ll u, ll par,ll A[]){
in[u] = 0;
for(ll v:g[u]){
if (v == par) continue;
dfs1(v, u,A);
ll tu=0;
if ((A[v]-A[u])>0)
tu=(A[v]-A[u]);
in[u] = max(in[u], tu+in[v]);
}
}
void dfs2(ll u, ll par,ll A[]){
ll mx1(-1), mx2(-1);
//find top 2 maximum values of in[v]
for(ll v: g[u]){
if(v == par) continue;
ll tu=0;
if ((A[v]-A[u])>0)
tu=(A[v]-A[u]);
if(in[v]+tu >= mx1) mx2 = mx1, mx1 = in[v]+tu;
else if(in[v]+tu > mx2) mx2 = in[v]+tu;
}
for(ll v:g[u]){
if (v == par) continue;
ll use = mx1;
ll tu=0;
if ((A[u]-A[v])>0)
tu=(A[u]-A[v]);
ll tu2=0;
if ((A[v]-A[u])>0)
tu2=(A[v]-A[u]);
if(mx1 == in[v]+tu2)
use = mx2;
out[v] = max(tu+out[u], tu+use);
//cout<<v<<" "<<use<<endl;
dfs2(v, u,A);
}
}
int main()
{
ll N,Q;
cin>>N>>Q;
ll A[N];
for(ll i=0;i<N;i++)
cin>>A[i];
ll n=N-1;
ll a,b;
while(n--)
{
cin>>a>>b;
//a--;b--;
g[a].push_back(b);
g[b].push_back(a);
}
dfs1(0,-1,A);
out[0]=0;
dfs2(0,-1,A);
while(Q--){
cin>>a;
//a--;
cout<<max(in[a],out[a])<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmxsIE09MzAwMDAwOwp2ZWN0b3I8bGw+IGdbMzAwMDAwXTsKbGwgIGluWzMwMDAwMF0sIG91dFszMDAwMDBdOwp2b2lkIGRmczEobGwgdSwgbGwgcGFyLGxsIEFbXSl7Cglpblt1XSA9IDA7Cglmb3IobGwgdjpnW3VdKXsKCQlpZiAodiA9PSBwYXIpIGNvbnRpbnVlOwoJCWRmczEodiwgdSxBKTsKCQlsbCB0dT0wOwoJCWlmICgoQVt2XS1BW3VdKT4wKQoJCXR1PShBW3ZdLUFbdV0pOwoJCWluW3VdID0gbWF4KGluW3VdLCB0dStpblt2XSk7Cgl9Cn0Kdm9pZCBkZnMyKGxsIHUsIGxsIHBhcixsbCBBW10pewoJbGwgbXgxKC0xKSwgbXgyKC0xKTsKICAgIC8vZmluZCB0b3AgMiBtYXhpbXVtIHZhbHVlcyBvZiBpblt2XQogICAgZm9yKGxsIHY6IGdbdV0pewogICAgICAgICAgICBpZih2ID09IHBhcikgY29udGludWU7CiAgICAgICAgICAgIGxsIHR1PTA7CiAgICAJCWlmICgoQVt2XS1BW3VdKT4wKQogICAgCQl0dT0oQVt2XS1BW3VdKTsKICAgICAgICAgICAgaWYoaW5bdl0rdHUgPj0gbXgxKSBteDIgPSBteDEsIG14MSA9IGluW3ZdK3R1OwogICAgICAgICAgICBlbHNlIGlmKGluW3ZdK3R1ID4gbXgyKSBteDIgPSBpblt2XSt0dTsKICAgIH0KCWZvcihsbCB2OmdbdV0pewoJCWlmICh2ID09IHBhcikgY29udGludWU7CgkJbGwgdXNlID0gbXgxOwoJCWxsIHR1PTA7CgkJaWYgKChBW3VdLUFbdl0pPjApCgkJdHU9KEFbdV0tQVt2XSk7CgkJbGwgdHUyPTA7CiAgICAJaWYgKChBW3ZdLUFbdV0pPjApCiAgICAJCXR1Mj0oQVt2XS1BW3VdKTsKCQlpZihteDEgPT0gaW5bdl0rdHUyKSAKCQkJdXNlID0gbXgyOwoJCW91dFt2XSA9IG1heCh0dStvdXRbdV0sIHR1K3VzZSk7CgkJLy9jb3V0PDx2PDwiICI8PHVzZTw8ZW5kbDsKCQlkZnMyKHYsIHUsQSk7Cgl9Cn0KaW50IG1haW4oKQp7CglsbCBOLFE7CgljaW4+Pk4+PlE7CglsbCBBW05dOwoJZm9yKGxsIGk9MDtpPE47aSsrKQoJY2luPj5BW2ldOwoJbGwgbj1OLTE7CglsbCBhLGI7Cgl3aGlsZShuLS0pCgl7CgkJY2luPj5hPj5iOwoJCS8vYS0tO2ItLTsKCQlnW2FdLnB1c2hfYmFjayhiKTsKCQlnW2JdLnB1c2hfYmFjayhhKTsKCX0KCWRmczEoMCwtMSxBKTsKCW91dFswXT0wOwoJZGZzMigwLC0xLEEpOwoJd2hpbGUoUS0tKXsKCSBjaW4+PmE7CgkgLy9hLS07Cgljb3V0PDxtYXgoaW5bYV0sb3V0W2FdKTw8ZW5kbDsKCX0KfSAKCiA=