#include <bits/stdc++.h>
#define ll long long
using namespace std;
constexpr int N = 2e5 + 5;
int n;
set<int> adj[N];
vector<int> tree[N], col(N), par(N), ans(N);
int find(int u){
if(u == par[u]){
return u;
}
return par[u] = find(par[u]);
}
void unite(int x, int y){
x = find(x);
y = find(y);
if (x == y)
return ;
if(adj[x].size() < adj[y].size()) swap(x, y);
par[y] = x;
for(int v : adj[y]){
adj[x].insert(v);
}
}
void dfs(int u, int p){
for(int v : tree[u]){
if(v != p){
dfs(v, u);
unite(u, v);
}
}
ans[u] = adj[find(u)].size();
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n;
for(int i = 1; i < n + 1; i++){
cin >> col[i];
adj[i].insert(col[i]);
par[i] = i;
}
for(int i = 1; i < n; i++){
int u, v;
cin >> u >> v;
tree[u].push_back(v);
tree[v].push_back(u);
}
dfs(1, -1);
for(int i = 1; i < n + 1; i++){
cout << ans[i] << " ";
}
cout << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3RleHByIGludCBOID0gMmU1ICsgNTsKaW50IG47CnNldDxpbnQ+IGFkaltOXTsKdmVjdG9yPGludD4gdHJlZVtOXSwgY29sKE4pLCBwYXIoTiksIGFucyhOKTsKCmludCBmaW5kKGludCB1KXsKICAgIGlmKHUgPT0gcGFyW3VdKXsKICAgICAgICByZXR1cm4gdTsKICAgIH0KICAgIHJldHVybiBwYXJbdV0gPSBmaW5kKHBhclt1XSk7Cn0KCnZvaWQgdW5pdGUoaW50IHgsIGludCB5KXsKICAgIHggPSBmaW5kKHgpOwogICAgeSA9IGZpbmQoeSk7CiAgICBpZiAoeCA9PSB5KQogICAgICAgIHJldHVybiA7CiAgICBpZihhZGpbeF0uc2l6ZSgpIDwgYWRqW3ldLnNpemUoKSkgc3dhcCh4LCB5KTsKICAgIHBhclt5XSA9IHg7CiAgICBmb3IoaW50IHYgOiBhZGpbeV0pewogICAgICAgIGFkalt4XS5pbnNlcnQodik7CiAgICB9Cn0KCnZvaWQgZGZzKGludCB1LCBpbnQgcCl7CiAgICBmb3IoaW50IHYgOiB0cmVlW3VdKXsKICAgICAgICBpZih2ICE9IHApewogICAgICAgICAgICBkZnModiwgdSk7CiAgICAgICAgICAgIHVuaXRlKHUsIHYpOwogICAgICAgIH0KICAgIH0KICAgIGFuc1t1XSA9IGFkaltmaW5kKHUpXS5zaXplKCk7Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpID0gMTsgaSA8IG4gKyAxOyBpKyspewogICAgICAgIGNpbiA+PiBjb2xbaV07CiAgICAgICAgYWRqW2ldLmluc2VydChjb2xbaV0pOwogICAgICAgIHBhcltpXSA9IGk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKXsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIHRyZWVbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIHRyZWVbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZGZzKDEsIC0xKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBuICsgMTsgaSsrKXsKICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQo=