#include <bits/stdc++.h>
using namespace std;
#define pb push_back
int parent[1000005];
int color[1000005];
bool visited[1000005];
int a[1000005];
vector<int>adj[1000005];
vector<int>ans[1000005];
int res[1000005];
int n,k;
int c1,c2;
void dfs(int ele)
{
visited[ele]=true;
int flag=0;
ans[color[ele]].pb(ele);
if(ans[color[ele]].size()>k)
{
int size=ans[color[ele]].size();
res[ele]=ans[color[ele]][size-k-1];
// return ;
}
else
res[ele]=-1;
for(int i=0;i<adj[ele].size();i++)
{
if(!visited[adj[ele][i]])
{
// c1++;
//parent[adj[ele][i]]=ele;
dfs(adj[ele][i]);
if(ans[color[ele]].size()>0)
ans[color[ele]].pop_back();
//c2++;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int x,y;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>color[i];
}
for(int i=0;i<n-1;i++)
{
cin>>x>>y;
adj[x].pb(y);
adj[y].pb(x);
}
parent[1]=-1;
//memset(res,-1,1000001);
dfs(1);
for(int i=1;i<=n;i++)
{
cout<<res[i]<<" ";
}
// cout<<"c1 "<<c1<<" "<<c2<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCmludCBwYXJlbnRbMTAwMDAwNV07CmludCBjb2xvclsxMDAwMDA1XTsKYm9vbCB2aXNpdGVkWzEwMDAwMDVdOwppbnQgYVsxMDAwMDA1XTsKdmVjdG9yPGludD5hZGpbMTAwMDAwNV07CnZlY3RvcjxpbnQ+YW5zWzEwMDAwMDVdOwppbnQgcmVzWzEwMDAwMDVdOwppbnQgbixrOwppbnQgYzEsYzI7CnZvaWQgZGZzKGludCBlbGUpCnsKIAl2aXNpdGVkW2VsZV09dHJ1ZTsKIAlpbnQgZmxhZz0wOwogCWFuc1tjb2xvcltlbGVdXS5wYihlbGUpOwogCWlmKGFuc1tjb2xvcltlbGVdXS5zaXplKCk+aykKIAl7CiAJCWludCBzaXplPWFuc1tjb2xvcltlbGVdXS5zaXplKCk7CiAJCXJlc1tlbGVdPWFuc1tjb2xvcltlbGVdXVtzaXplLWstMV07CiAvLwkJcmV0dXJuIDsKIAl9CiAJZWxzZQogCQkgcmVzW2VsZV09LTE7CiAJZm9yKGludCBpPTA7aTxhZGpbZWxlXS5zaXplKCk7aSsrKQogCXsKIAkJaWYoIXZpc2l0ZWRbYWRqW2VsZV1baV1dKQogCQl7CiAJCS8vCWMxKys7CiAJCQkKIAkJCS8vcGFyZW50W2FkaltlbGVdW2ldXT1lbGU7CiAJCQlkZnMoYWRqW2VsZV1baV0pOwogCQkJaWYoYW5zW2NvbG9yW2VsZV1dLnNpemUoKT4wKQogCQkJCWFuc1tjb2xvcltlbGVdXS5wb3BfYmFjaygpOwogCQkJLy9jMisrOwogCQl9CiAJfQp9CgppbnQgbWFpbigpCnsKICAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CglpbnQgeCx5OwoJY2luPj5uPj5rOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJY2luPj5jb2xvcltpXTsKCX0KCWZvcihpbnQgaT0wO2k8bi0xO2krKykKCXsKCQljaW4+Png+Pnk7CgkJYWRqW3hdLnBiKHkpOwoJCWFkalt5XS5wYih4KTsKIAoJfQoJcGFyZW50WzFdPS0xOwoJLy9tZW1zZXQocmVzLC0xLDEwMDAwMDEpOwoJZGZzKDEpOwoJCgoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJY291dDw8cmVzW2ldPDwiICI7CQoJfQovLwljb3V0PDwiYzEgIjw8YzE8PCIgIjw8YzI8PGVuZGw7CglyZXR1cm4gMDsKfQ==