// ADASALES SPOJ https://w...content-available-to-author-only...j.com/problems/ADASALES/
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#include<iostream>
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define vec vector<ll>
#define mk make_pair
#define pb push_back
#define ppb pop_back
#define setbit(n) __builtin_popcountll(n)
#define rep(i,a,b) for(int i=a; i<=b;i++)
#define rep1(i,n) for(int i=0;i<n;i++)
#define rrep(i,a,b) for(int i=a; i>=b;i--)
#define rrep1(i,n) for(int i=n;i>=0;i--)
#define cin(arr,n) for(int i=0; i<n;i++){cin>>arr[i];}
#define cin1(vec,n) rep1(i,n){ll x;cin>>x;vec.pb(x);}
#define so(vec) sort(vec.begin(),vec.end())
#define rev(v) reverse(v.begin(),v.end())
#define cout(v) rep1(i,v.size()){cout<<v[i]<<" ";}
#define prdouble(x) cout<<fixed<<setprecision(10)<<x;
#define out(v) cout<<v<<" ";
#define all(v) v.begin(),v.end()
#define yes cout<<"YES";
#define no cout<<"NO";
#define no1 cout<<"-1";
#define lb cout<<"\n";
template <typename T>
T myMax(T x, T y)
{
return (x > y) ? x : y;
}
const ll N = 1e5+7;
const ll M = 2e9+7;
const ll Mn = -(1e9+7);
using namespace std;
using namespace __gnu_pbds;
#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>
#define ordered_multiset tree<ll,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update>
//For policy based data structures:-
//order_of_key (K): Number of items strictly smaller than K
//find_by_order(k): Kth element in a Set (counting from zero)
//deleting element in ordered multiset:-
//ordered_multiset::iterator it = v.find_by_order(v.order_of_key(a[i]));
//v.erase(it);
//deleting element in ordered set:-
//ordered_set::iterator it = v.find_by_order(v.order_of_key(a[i]));
//v.erase(it);
vector<ll> v;
vector<ll> g[N];
// ll visi[N];
ll in[N];
ll out[N];
void dfs1(ll node, ll par){ // filling in
for(auto it:g[node]){
if(it!=par){
dfs1(it,node);
// cout<<node<<" : "<<it<<" "<<in[it];lb;
in[node] = max({in[node],in[it]+max(0LL,v[it]-v[node])});
}
}
}
void dfs2(ll node,ll par){ // filling out
ll mx1=-1;
ll mx2=-1;
for(auto it:g[node]){
if(it!=par){
if(in[it]+max(0LL,v[it]-v[node])>mx1){
mx2=mx1;
mx1=in[it]+max(0LL,v[it]-v[node]);
}
else if(in[it]+max(0LL,v[it]-v[node])>mx2){
mx2=in[it]+max(0LL,v[it]-v[node]);
}
}
}
for(auto it:g[node]){
if(it!=par){
ll use=mx1;
if(mx1==in[it]+max(0LL,v[it]-v[node])){
use=mx2;
}
out[it]=max({out[it],use+max(0LL,v[node]-v[it]),out[node]+max(0LL,v[node]-v[it])});
dfs2(it,node);
}
}
}
void solve(){
ll n,q;
cin>>n>>q;
cin1(v,n);
for(int i=0;i<n-1;i++){
ll a,b;
cin>>a>>b;
g[a].pb(b);
g[b].pb(a);
}
ll par=-1;
dfs1(0LL,par);
// for(int i=0;i<n;i++){
// cout<<i<<" "<<in[i]<<" ";
// }
dfs2(0LL,par);
for(int i=0;i<q;i++){
ll x;
cin>>x;
cout<<max(in[x],out[x]);lb;
}
}
int main(){
fast;
ll t;
t=1;
// cin>>t;
rep1(i,t){
solve();
// cout<<"\n";
}
return 0;
}
CQkJCQkvLyBBREFTQUxFUyBTUE9KICAgIGh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uai5jb20vcHJvYmxlbXMvQURBU0FMRVMvCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPZmFzdCIpCiNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4LGF2eDIsZm1hIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemF0aW9uKCJ1bnJvbGwtbG9vcHMiKQojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApCiNkZWZpbmUgbGwgbG9uZyBsb25nIAojZGVmaW5lIHZlYyB2ZWN0b3I8bGw+IAojZGVmaW5lIG1rIG1ha2VfcGFpciAKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwcGIgcG9wX2JhY2sKI2RlZmluZSBzZXRiaXQobikgX19idWlsdGluX3BvcGNvdW50bGwobikKI2RlZmluZSByZXAoaSxhLGIpIGZvcihpbnQgaT1hOyBpPD1iO2krKykgCiNkZWZpbmUgcmVwMShpLG4pICBmb3IoaW50IGk9MDtpPG47aSsrKQojZGVmaW5lIHJyZXAoaSxhLGIpIGZvcihpbnQgaT1hOyBpPj1iO2ktLSkgCiNkZWZpbmUgcnJlcDEoaSxuKSAgZm9yKGludCBpPW47aT49MDtpLS0pCiNkZWZpbmUgY2luKGFycixuKSBmb3IoaW50IGk9MDsgaTxuO2krKyl7Y2luPj5hcnJbaV07fQojZGVmaW5lIGNpbjEodmVjLG4pIHJlcDEoaSxuKXtsbCB4O2Npbj4+eDt2ZWMucGIoeCk7fQojZGVmaW5lIHNvKHZlYykgc29ydCh2ZWMuYmVnaW4oKSx2ZWMuZW5kKCkpCiNkZWZpbmUgcmV2KHYpIHJldmVyc2Uodi5iZWdpbigpLHYuZW5kKCkpCiNkZWZpbmUgY291dCh2KSByZXAxKGksdi5zaXplKCkpe2NvdXQ8PHZbaV08PCIgIjt9CiNkZWZpbmUgcHJkb3VibGUoeCkgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbigxMCk8PHg7CiNkZWZpbmUgb3V0KHYpIGNvdXQ8PHY8PCIgIjsgCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgeWVzIGNvdXQ8PCJZRVMiOwojZGVmaW5lIG5vIGNvdXQ8PCJOTyI7CiNkZWZpbmUgbm8xIGNvdXQ8PCItMSI7CiNkZWZpbmUgbGIgY291dDw8IlxuIjsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgbXlNYXgoVCB4LCBUIHkpCnsKcmV0dXJuICh4ID4geSkgPyB4IDogeTsKfQpjb25zdCBsbCBOID0gMWU1Kzc7CmNvbnN0IGxsIE0gPSAyZTkrNzsKY29uc3QgbGwgTW4gPSAtKDFlOSs3KTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxsbCwgbnVsbF90eXBlLGxlc3M8bGw+LCByYl90cmVlX3RhZyx0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CiNkZWZpbmUgb3JkZXJlZF9tdWx0aXNldCB0cmVlPGxsLG51bGxfdHlwZSxsZXNzX2VxdWFsPGxsPixyYl90cmVlX3RhZyx0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CgovL0ZvciBwb2xpY3kgYmFzZWQgZGF0YSBzdHJ1Y3R1cmVzOi0KLy9vcmRlcl9vZl9rZXkgKEspOiBOdW1iZXIgb2YgaXRlbXMgc3RyaWN0bHkgc21hbGxlciB0aGFuIEsKLy9maW5kX2J5X29yZGVyKGspOiBLdGggZWxlbWVudCBpbiBhIFNldCAoY291bnRpbmcgZnJvbSB6ZXJvKQovL2RlbGV0aW5nIGVsZW1lbnQgaW4gb3JkZXJlZCBtdWx0aXNldDotCi8vb3JkZXJlZF9tdWx0aXNldDo6aXRlcmF0b3IgaXQgPSB2LmZpbmRfYnlfb3JkZXIodi5vcmRlcl9vZl9rZXkoYVtpXSkpOwovL3YuZXJhc2UoaXQpOwovL2RlbGV0aW5nIGVsZW1lbnQgaW4gb3JkZXJlZCBzZXQ6LQovL29yZGVyZWRfc2V0OjppdGVyYXRvciBpdCA9IHYuZmluZF9ieV9vcmRlcih2Lm9yZGVyX29mX2tleShhW2ldKSk7Ci8vdi5lcmFzZShpdCk7Cgp2ZWN0b3I8bGw+IHY7CnZlY3RvcjxsbD4gZ1tOXTsKLy8gbGwgdmlzaVtOXTsKbGwgaW5bTl07CmxsIG91dFtOXTsKCnZvaWQgZGZzMShsbCBub2RlLCBsbCBwYXIpeyAvLyBmaWxsaW5nIGluIAogICAgZm9yKGF1dG8gaXQ6Z1tub2RlXSl7CiAgICAgICAgaWYoaXQhPXBhcil7CiAgICAgICAgICAgIGRmczEoaXQsbm9kZSk7CiAgICAgICAgICAgIC8vIGNvdXQ8PG5vZGU8PCIgOiAiPDxpdDw8IiAiPDxpbltpdF07bGI7CiAgICAgICAgICAgIGluW25vZGVdID0gbWF4KHtpbltub2RlXSxpbltpdF0rbWF4KDBMTCx2W2l0XS12W25vZGVdKX0pOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBkZnMyKGxsIG5vZGUsbGwgcGFyKXsgLy8gZmlsbGluZyBvdXQKICAgIGxsIG14MT0tMTsKICAgIGxsIG14Mj0tMTsKICAgIGZvcihhdXRvIGl0Omdbbm9kZV0pewogICAgICAgIGlmKGl0IT1wYXIpewogICAgICAgICAgICBpZihpbltpdF0rbWF4KDBMTCx2W2l0XS12W25vZGVdKT5teDEpewogICAgICAgICAgICAgICAgbXgyPW14MTsKICAgICAgICAgICAgICAgIG14MT1pbltpdF0rbWF4KDBMTCx2W2l0XS12W25vZGVdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGluW2l0XSttYXgoMExMLHZbaXRdLXZbbm9kZV0pPm14Mil7CiAgICAgICAgICAgICAgICBteDI9aW5baXRdK21heCgwTEwsdltpdF0tdltub2RlXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IoYXV0byBpdDpnW25vZGVdKXsKICAgICAgICBpZihpdCE9cGFyKXsKICAgICAgICAgICAgbGwgdXNlPW14MTsKICAgICAgICAgICAgaWYobXgxPT1pbltpdF0rbWF4KDBMTCx2W2l0XS12W25vZGVdKSl7CiAgICAgICAgICAgICAgICB1c2U9bXgyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG91dFtpdF09bWF4KHtvdXRbaXRdLHVzZSttYXgoMExMLHZbbm9kZV0tdltpdF0pLG91dFtub2RlXSttYXgoMExMLHZbbm9kZV0tdltpdF0pfSk7CiAgICAgICAgICAgIGRmczIoaXQsbm9kZSk7CiAgICAgICAgfQogICAgfQoKfQoKdm9pZCBzb2x2ZSgpewogICAgbGwgbixxOwogICAgY2luPj5uPj5xOwogICAgY2luMSh2LG4pOwogICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKICAgICAgICBsbCBhLGI7CiAgICAgICAgY2luPj5hPj5iOwogICAgICAgIGdbYV0ucGIoYik7CiAgICAgICAgZ1tiXS5wYihhKTsKICAgIH0KICAgIGxsIHBhcj0tMTsKICAgIGRmczEoMExMLHBhcik7CiAgICAvLyBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgIC8vICAgICBjb3V0PDxpPDwiICI8PGluW2ldPDwiICI7CiAgICAvLyB9CiAgICBkZnMyKDBMTCxwYXIpOwogICAgZm9yKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgbGwgeDsKICAgICAgICBjaW4+Png7CiAgICAgICAgY291dDw8bWF4KGluW3hdLG91dFt4XSk7bGI7CiAgICB9Cn0KaW50IG1haW4oKXsKZmFzdDsKbGwgdDsKdD0xOwovLyBjaW4+PnQ7CnJlcDEoaSx0KXsKc29sdmUoKTsKLy8gY291dDw8IlxuIjsKfQogICAgcmV0dXJuIDA7Cn0=