#include<bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pb push_back
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define getbit(x,k) ((x)&(1<<k))
#define MASK(x) (((1)<<(x))-1)
#define M 20
const ll inf=1e9;
const int maxn=2e5+5,mod=1e18+9;
using namespace std;
inline ll bp(ll a){return a*a;}
mt19937_64 rang(chrono::steady_clock::now().time_since_epoch().count());
int n,A[maxn];
vector<int>eg[maxn];
int old[maxn],ans[maxn];
int tin[maxn],tout[maxn],counter=0;
struct SegTree
{
int sz;
vector<int>st;
SegTree(){}
SegTree(int sz): sz(sz),st(sz*4+10,0) {}
void update(int l, int r, int lab, int a, int val)
{
if(l==r)
{
st[lab]=val;
return;
}
int mid=(l+r)/2;
if(a<=mid) update(l,mid,lab*2,a,val);
else update(mid+1,r,lab*2+1,a,val);
st[lab]=st[lab*2]+st[lab*2+1];
}
int get(int l, int r, int lab, int a, int b)
{
if(l>b || r<a) return 0;
if(l>=a && r<=b) return st[lab];
int mid=(l+r)/2;
return get(l,mid,lab*2,a,b)+get(mid+1,r,lab*2+1,a,b);
}
}f;
void dfs(int u, int p)
{
tin[u]=++counter;
for(int v:eg[u])if(v!=p) dfs(v,u);
tout[u]=counter;
if(old[A[u]]!=-1) f.update(1,f.sz,1,tin[old[A[u]]],0);
f.update(1,f.sz,1,tin[u],1);old[A[u]]=u;
ans[u]=f.get(1,f.sz,1,tin[u],tout[u]);
}
vector<int>N;
void nen()
{
sort(N.begin(),N.end());
N.erase(unique(N.begin(),N.end()),N.end());
for(int i=1;i<=n;i++)
A[i]=lower_bound(N.begin(),N.end(),A[i])-N.begin()+1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>A[i];
N.pb(A[i]);
}
nen();
for(int i=1;i<n;i++)
{
int a,b;cin>>a>>b;
eg[a].pb(b);eg[b].pb(a);
}
memset(old,-1,sizeof old);
f=SegTree(n);
dfs(1,1);
for(int i=1;i<=n;i++)
cout<<ans[i]<<' ';
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBsbCBwYWlyPGxsLGxsPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgZ2V0Yml0KHgsaykgKCh4KSYoMTw8aykpCiNkZWZpbmUgTUFTSyh4KSAoKCgxKTw8KHgpKS0xKQojZGVmaW5lIE0gMjAKY29uc3QgbGwgaW5mPTFlOTsKY29uc3QgaW50IG1heG49MmU1KzUsbW9kPTFlMTgrOTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmlubGluZSBsbCBicChsbCBhKXtyZXR1cm4gYSphO30KbXQxOTkzN182NCByYW5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CgoKaW50IG4sQVttYXhuXTsKdmVjdG9yPGludD5lZ1ttYXhuXTsKaW50IG9sZFttYXhuXSxhbnNbbWF4bl07CmludCB0aW5bbWF4bl0sdG91dFttYXhuXSxjb3VudGVyPTA7CnN0cnVjdCBTZWdUcmVlCnsKICAgIGludCBzejsKICAgIHZlY3RvcjxpbnQ+c3Q7CiAgICBTZWdUcmVlKCl7fQogICAgU2VnVHJlZShpbnQgc3opOiBzeihzeiksc3Qoc3oqNCsxMCwwKSB7fQogICAgdm9pZCB1cGRhdGUoaW50IGwsIGludCByLCBpbnQgbGFiLCBpbnQgYSwgaW50IHZhbCkKICAgIHsKICAgICAgICBpZihsPT1yKQogICAgICAgIHsKICAgICAgICAgICAgc3RbbGFiXT12YWw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaW50IG1pZD0obCtyKS8yOwogICAgICAgIGlmKGE8PW1pZCkgdXBkYXRlKGwsbWlkLGxhYioyLGEsdmFsKTsKICAgICAgICBlbHNlIHVwZGF0ZShtaWQrMSxyLGxhYioyKzEsYSx2YWwpOwogICAgICAgIHN0W2xhYl09c3RbbGFiKjJdK3N0W2xhYioyKzFdOwogICAgfQogICAgaW50IGdldChpbnQgbCwgaW50IHIsIGludCBsYWIsIGludCBhLCBpbnQgYikKICAgIHsKICAgICAgICBpZihsPmIgfHwgcjxhKSByZXR1cm4gMDsKICAgICAgICBpZihsPj1hICYmIHI8PWIpIHJldHVybiBzdFtsYWJdOwogICAgICAgIGludCBtaWQ9KGwrcikvMjsKICAgICAgICByZXR1cm4gZ2V0KGwsbWlkLGxhYioyLGEsYikrZ2V0KG1pZCsxLHIsbGFiKjIrMSxhLGIpOwogICAgfQp9ZjsKCnZvaWQgZGZzKGludCB1LCBpbnQgcCkKewogICAgdGluW3VdPSsrY291bnRlcjsKICAgIGZvcihpbnQgdjplZ1t1XSlpZih2IT1wKSBkZnModix1KTsKICAgIHRvdXRbdV09Y291bnRlcjsKICAgIGlmKG9sZFtBW3VdXSE9LTEpIGYudXBkYXRlKDEsZi5zeiwxLHRpbltvbGRbQVt1XV1dLDApOwogICAgZi51cGRhdGUoMSxmLnN6LDEsdGluW3VdLDEpO29sZFtBW3VdXT11OwogICAgYW5zW3VdPWYuZ2V0KDEsZi5zeiwxLHRpblt1XSx0b3V0W3VdKTsKfQp2ZWN0b3I8aW50Pk47CnZvaWQgbmVuKCkKewogICAgc29ydChOLmJlZ2luKCksTi5lbmQoKSk7CiAgICBOLmVyYXNlKHVuaXF1ZShOLmJlZ2luKCksTi5lbmQoKSksTi5lbmQoKSk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgICAgICBBW2ldPWxvd2VyX2JvdW5kKE4uYmVnaW4oKSxOLmVuZCgpLEFbaV0pLU4uYmVnaW4oKSsxOwp9CmludCBtYWluKCkKewogICAgY2luPj5uOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgY2luPj5BW2ldOwogICAgICAgIE4ucGIoQVtpXSk7CiAgICB9CiAgICBuZW4oKTsKICAgIGZvcihpbnQgaT0xO2k8bjtpKyspCiAgICB7CiAgICAgICAgaW50IGEsYjtjaW4+PmE+PmI7CiAgICAgICAgZWdbYV0ucGIoYik7ZWdbYl0ucGIoYSk7CiAgICB9CiAgICBtZW1zZXQob2xkLC0xLHNpemVvZiBvbGQpOwogICAgZj1TZWdUcmVlKG4pOwogICAgZGZzKDEsMSk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgICAgICBjb3V0PDxhbnNbaV08PCcgJzsKfQo=