#include <bits/stdc++.h>
using namespace std;
const int maxn=1299;
char a[maxn],ans[maxn];
int shu[27],vis[maxn],m,b[maxn];
int main()
{
int t,n;
cin>>t;
while(t--)
{
memset(shu,0,sizeof(shu));
cin>>(a+1)>>m;
for(int i=1;i<=m;i++) cin>>b[i];
for(int i=1;i<=strlen(a+1);i++)
shu[a[i]-'a'+1]++;
int num=26,da=0;
while(1)
{
int zero=0,k;
for(int i=1;i<=m;i++)
if(b[i]==0&&vis[i]==0) zero++;
for(int i=num;i>=1;i--)
if(shu[i]>=zero)
{ k=i;break;}
int cc=0,he=0;
for(int i=1;i<=m;i++)
{
if(b[i]==0&&vis[i]==0)//当前最大的字母
{
vis[i]=1;da++;
ans[i]=char(k+'a'-1);
for(int j=1;j<i;j++)
if(b[j]) b[j]-=(i-j);//减去i字母后面的影响
cc++,he+=i;
}
else if(b[i])
b[i]=b[i]-(cc*i-he);//减去i字母前面的影响
}
num=k-1;//找下一个字母
if(da==m) break;
}
for(int i=1;i<=m;i++) cout<<ans[i];
cout<<endl;
for(int i=1;i<=m;i++) vis[i]=0;
}
}