#include<stdio.h>
#include<string.h>
#include<algorithm>
#define maxn 1000+10
using namespace std;
int book[maxn];
struct times{
int time;
int score;
}a[maxn];
bool cmp(const times &c,const times &b)
{
return c.score>b.score;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
int max=0;
memset(book,0,sizeof(book));
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i].time);
if(a[i].time>max)
max = a[i].time;
}
for(int i=0;i<n;i++)
scanf("%d",&a[i].score);
sort(a,a+n,cmp);
int s = 0;
int nin=0;
for(int i=0;i<n;i++)
{
if(book[a[i].time]>=a[i].time||a[i].time<=nin)
{
s += a[i].score;
}
else
{
for(int j=a[i].time;j<=max;j++)
{
book[j]++;
if(book[j]>=j)
nin = j;
}
}
}
printf("%d\n",s);
}
return 0;
}
#include<string.h>
#include<algorithm>
#define maxn 1000+10
using namespace std;
int book[maxn];
struct times{
int time;
int score;
}a[maxn];
bool cmp(const times &c,const times &b)
{
return c.score>b.score;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
int max=0;
memset(book,0,sizeof(book));
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i].time);
if(a[i].time>max)
max = a[i].time;
}
for(int i=0;i<n;i++)
scanf("%d",&a[i].score);
sort(a,a+n,cmp);
int s = 0;
int nin=0;
for(int i=0;i<n;i++)
{
if(book[a[i].time]>=a[i].time||a[i].time<=nin)
{
s += a[i].score;
}
else
{
for(int j=a[i].time;j<=max;j++)
{
book[j]++;
if(book[j]>=j)
nin = j;
}
}
}
printf("%d\n",s);
}
return 0;
}