#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e4+10,M=N<<1,S=1e7+10;
int n,m;
int h[N],e[M],ne[M],w[M],idx;
bool st[N];
int q[N],p[N],k[110];
bool f[S],ans[110];
void add(int a,int b,int c)
{
e[++idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx;
}
int get_size(int u,int fa)
{
if(st[u])return 0;
int res=1;
for(int i=h[u],j=e[i];i;i=ne[i],j=e[i])
if(j!=fa)res+=get_size(j,u);
return res;
}
int get_wc(int u,int fa,int tot,int &wc)
{
if(st[u])return 0;
int sum=1,ms=0;
for(int i=h[u],j=e[i];i;i=ne[i],j=e[i])
if(j!=fa)
{
int t=get_wc(j,u,tot,wc);
ms=max(ms,t);
sum+=t;
}
ms=max(ms,tot-sum);
if(ms<=tot/2)wc=u;
return sum;
}
void get_dist(int u,int fa,int dist,int &qt)
{
if(st[u])return;
q[qt++]=dist;
for(int i=h[u],j=e[i];i;i=ne[i],j=e[i])
if(j!=fa)get_dist(j,u,dist+w[i],qt);
}
void calc(int u)
{
if(st[u])return;
get_wc(u,-1,get_size(u,-1),u);
st[u]=1;
int pt=0;
f[0]=1;
for(int i=h[u],j=e[i];i;i=ne[i],j=e[i])
{
int qt=0;
get_dist(j,u,w[i],qt);
for(int l=0;l<qt;l++)
{
auto t=q[l];
if(t>1e7)continue;
p[pt++]=t;
f[t]=1;
}
}
for(int i=1;i<=m;i++)
if(!ans[i])
{
if(f[k[i]])
{
ans[i]=1;
continue;
}
for(int j=0;j<pt;j++)
if(k[i]>=p[j]&&f[k[i]-p[j]])
{
ans[i]=1;
break;
}
}
for(int i=0;i<pt;i++)
if(p[i]<=1e7)f[p[i]]=0;
for(int i=h[u],j=e[i];i;i=ne[i],j=e[i])calc(j);
}
int main()
{
#ifdef Luogu
freopen("E:\\in and out\\in.in","r",stdin);
freopen("E:\\in and out\\out.out","w",stdout);
#endif
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<n;i++)
{
int a,b,c;
cin>>a>>b>>c;
add(a,b,c),add(b,a,c);
}
for(int i=1;i<=m;i++)cin>>k[i];
calc(1);
for(int i=1;i<=m;i++)puts(ans[i]?"AYE":"NAY");
return 0;
}