#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN = 2e5+5;
int n, a[maxN], ans[maxN];
vector<int>adj[maxN];
set<int>s[maxN];
void dfs(int u, int v)
{
for(auto i: adj[u])
{
if(i == v) continue;
dfs(i, u);
if(siz(s[i]) > siz(s[u])) swap(s[i], s[u]);
for(auto j: s[i]) s[u].insert(j);
}
ans[u] = siz(s[u]);
}
void solve()
{
}
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n;
for(int i=1; i<=n; i+=1) cin>>a[i];
for(int i=1; i<n; i+=1)
{
int x,y; cin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
for(int i=1; i<=n; i+=1) s[i].insert(a[i]);
dfs(1, 0);
for(int i=1; i<=n; i+=1) cout<<ans[i]<<" ";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOID0gMmU1KzU7CgppbnQgbiwgYVttYXhOXSwgYW5zW21heE5dOwp2ZWN0b3I8aW50PmFkalttYXhOXTsKc2V0PGludD5zW21heE5dOwoKdm9pZCBkZnMoaW50IHUsIGludCB2KQp7CiAgICBmb3IoYXV0byBpOiBhZGpbdV0pCiAgICB7CiAgICAgICAgaWYoaSA9PSB2KSBjb250aW51ZTsKICAgICAgICBkZnMoaSwgdSk7CiAgICAgICAgaWYoc2l6KHNbaV0pID4gc2l6KHNbdV0pKSBzd2FwKHNbaV0sIHNbdV0pOwogICAgICAgIGZvcihhdXRvIGo6IHNbaV0pIHNbdV0uaW5zZXJ0KGopOwogICAgfQogICAgYW5zW3VdID0gc2l6KHNbdV0pOwp9Cgp2b2lkIHNvbHZlKCkKewogICAgCn0KCmludDMyX3QgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiAgICBjaW4+Pm47CiAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkgY2luPj5hW2ldOwogICAgZm9yKGludCBpPTE7IGk8bjsgaSs9MSkKICAgIHsKICAgICAgICBpbnQgeCx5OyBjaW4+Png+Pnk7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgZm9yKGludCBpPTE7IGk8PW47IGkrPTEpIHNbaV0uaW5zZXJ0KGFbaV0pOwogICAgZGZzKDEsIDApOwogICAgZm9yKGludCBpPTE7IGk8PW47IGkrPTEpIGNvdXQ8PGFuc1tpXTw8IiAiOwp9