#include<bits/stdc++.h>
using namespace std;
priority_queue<long long> q;
struct nnoe
{
    long long v;
    int chudu;
};
nnoe nno[200861];
bool mys(nnoe a,nnoe b)
{
    return a.v>b.v;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {

        int n;
        scanf("%d",&n);
        long long summ=0;
        for(int i=1;i<=n;i++)
        {
            long long a;
            scanf("%lld",&a);
            nno[i].v=a;
            nno[i].chudu=0;
            summ+=a;
        }
        for(int i=1;i<=n-1;i++)
        {
            int x,y;
            scanf("%d %d",&x,&y);
            nno[x].chudu++;
            nno[y].chudu++;
        }
        sort(nno+1,nno+1+n,mys);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=nno[i].chudu-1;j++)
                q.push(nno[i].v);
        }
        for(int i=1;i<=n-2;i++)
        {
            printf("%lld ",summ);
            summ+=q.top();
            q.pop();
        }
        printf("%lld\n",summ);
    }
    return 0;
}
