#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef long long ll;
#define test ll t;cin>>t;while(t--)
#define f first
#define s second
#define pb push_back
#define pop pop_back
#define int long long int
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define mod 1000000007
#define inf 1LL<<60

int32_t main()
{
	fast;
    /*freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);*/
	int n;
   test
   {
         cin>>n;
         vector<int>u(n),s(n);
         for(int i=0;i<n;i++)
         {
             cin>>u[i];
         }

          for(int i=0;i<n;i++)
         {
             cin>>s[i];
         }

         unordered_map<int,vector<int> > mp;
         for(int i=0;i<n;i++)
         {
             mp[u[i]].pb(s[i]);
         }
         for(auto x:mp)
         {
             auto vec=x.s;
             sort(vec.begin(),vec.end(),greater<int>());
             vector<int>pre(vec.size(),0);
             pre[0]=vec[0];
             for(int i=1;i<vec.size();i++)
             {
                 pre[i]=pre[i-1]+vec[i];
             }
             mp[x.f]=pre;
         }
       vector<int>ans(n+1,0);

          for(auto uni:mp)
            {
                auto vec=uni.s;
                auto u=uni.f;

                for(int k=1;k<=vec.size();k++)
                {
                   ans[k]+=vec[vec.size()-vec.size()%k-1];
                }

            }
        //  for(int k=1;k<=n;k++)
        //  {
        //      int sum=0;
        //     for(auto x:mp)
        //     {
        //         auto vec=x.s;
        //         auto u=x.f;
        //         if(k<=vec.size())
        //         sum+=vec[vec.size()-vec.size()%k-1];
        //     }
        //     ans.pb(sum);
        //  }
        //  for(auto x:ans)
        //     cout<<x<<" ";
        for(int i=1;i<=n;i++)
        cout<<ans[i]<<" ";
         cout<<"\n";
   }
	return 0;
}

