#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define M 105
vector<int> child[N];
int number;
int box[N]={0};
int bfs(int v)
{
for(int e:child[v])
{
box[v]+=bfs(e);
}
return box[v];
}
void findb(int v,int w)
{
if(child[v].size()==0) return;
int num1=child[v][0],num2=child[v][1];
if(box[num1]<=box[num2])
{
box[num1]+=w;
number=num1;
findb(num1,w);
}
else
{
box[num2]+=w;
number=num2;
findb(num2,w);
}
return;
}
int main()
{
int n,m,p,s,t;
int weight[M];
scanf("%d%d",&n,&m);
for(int i=n; i<2*n; i++) scanf("%d",box+i);
for(int i=0; i<m; i++) scanf("%d",weight+i);
for(int i=0; i<n-1; i++)
{
scanf("%d%d%d",&p,&s,&t);
child[p].push_back(s),child[p].push_back(t);
}
bfs(1);
for(int i=0; i<m; i++)
{
findb(1,weight[i]);
printf("%d ",number);
}
}