for i in range(int(input())):
s=input()
n=int(input())
A=list(map(int,input().split()))
D,L=dict(),[]
for j in range(len(s)):
if s[j] in D:
D[s[j]]+=1
else:
D[s[j]]=1
L.append(s[j])
L.sort(reverse=True)
N=[None for j in range(n)]
G=[]
pos=0
count=0
while count<n:
S=[]
for j in range(n):
diff=0
for e in G:
diff+=abs(e-j)
if diff==A[j]:
S.append(j)
S=list(set(S).difference(set(G)))
while len(S)>D[L[pos]]:
pos+=1
for j in S:
N[j]=L[pos]
G.append(j)
count+=1
pos+=1
ans=''
for j in N:
ans+=j
print(ans)
1622A - Construct a Rectangle | 1620A - Equal or Not Equal |
1517A - Sum of 2050 | 620A - Professor GukiZ's Robot |
1342A - Road To Zero | 1520A - Do Not Be Distracted |
352A - Jeff and Digits | 1327A - Sum of Odd Integers |
1276A - As Simple as One and Two | 812C - Sagheer and Nubian Market |
272A - Dima and Friends | 1352C - K-th Not Divisible by n |
545C - Woodcutters | 1528B - Kavi on Pairing Duty |
339B - Xenia and Ringroad | 189A - Cut Ribbon |
1182A - Filling Shapes | 82A - Double Cola |
45A - Codecraft III | 1242A - Tile Painting |
1663E - Are You Safe | 1663D - Is it rated - 3 |
1311A - Add Odd or Subtract Even | 977F - Consecutive Subsequence |
939A - Love Triangle | 755A - PolandBall and Hypothesis |
760B - Frodo and pillows | 1006A - Adjacent Replacements |
1195C - Basketball Exercise | 1206A - Choose Two Numbers |