D. Задача на доске
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп написал на доске некоторую строку $$$s$$$ из строчных букв латинского алфавита ('a'-'z'). Эта строка вам известна и задана во входных данных.

После этого он стёр какие-то буквы из строки $$$s$$$, а оставшиеся буквы он переписал в произвольном порядке. В результате он получил некоторую новую строку $$$t$$$. Её вам и предстоит найти по некоторой дополнительной информации.

Предположим, что длина строки $$$t$$$ равна $$$m$$$, а символы пронумерованы слева направо от $$$1$$$ до $$$m$$$. В таком случае вам задана последовательность из $$$m$$$ целых чисел: $$$b_1, b_2, \ldots, b_m$$$, где $$$b_i$$$ равно сумме расстояний $$$|i-j|$$$ от индекса $$$i$$$ до всех таких индексов $$$j$$$, что $$$t_j > t_i$$$ (считайте, что 'a'<'b'<...<'z'). Иными словами, для вычисления $$$b_i$$$ Поликарп находит все такие индексы $$$j$$$, что в индексе $$$j$$$ находится буква, которая стоит позже в алфавите чем $$$t_i$$$, и суммирует все значения $$$|i-j|$$$.

Например, если $$$t$$$=«abzb», то:

  • так как $$$t_1$$$='a', то все остальные индексы содержат буквы, которые позже в алфавите, то есть: $$$b_1=|1-2|+|1-3|+|1-4|=1+2+3=6$$$;
  • так как $$$t_2$$$='b', то только индекс $$$j=3$$$ содержит букву, которая позже в алфавите, то есть: $$$b_2=|2-3|=1$$$;
  • так как $$$t_3$$$='z', то индексов $$$j$$$, что $$$t_j>t_i$$$ не существует: $$$b_3=0$$$;
  • так как $$$t_4$$$='b', то только индекс $$$j=3$$$ содержит букву, которая позже в алфавите, то есть: $$$b_4=|4-3|=1$$$.

Таким образом, если $$$t$$$=«abzb», то $$$b=[6,1,0,1]$$$.

По заданной строке $$$s$$$ и массиву $$$b$$$ найдите любую возможную строку $$$t$$$, для которой выполняются следующие два требования одновременно:

  • $$$t$$$ получается из $$$s$$$ путём стирания некоторых букв (возможно, нуля) и потом записи оставшихся в произвольном порядке;
  • по строке $$$t$$$ получается заданный во входных данных массив $$$b$$$, если его построить по правилам, которые описаны выше.
Входные данные

В первой строке записано целое число $$$q$$$ ($$$1 \le q \le 100$$$) — количество наборов входных данных в тесте. Далее следуют $$$q$$$ наборов входных данных.

Каждый набор входных данных состоит из трех строк:

  • строки $$$s$$$, которая имеет длину от $$$1$$$ до $$$50$$$ и состоит из строчных букв латинского алфавита;
  • строки, которая содержит целое число $$$m$$$ ($$$1 \le m \le |s|$$$), где $$$|s|$$$ — длина строки $$$s$$$, а $$$m$$$ — длина массива $$$b$$$;
  • строки, которая содержит целые числа $$$b_1, b_2, \dots, b_m$$$ ($$$0 \le b_i \le 1225$$$).

Гарантируется, что в каждом наборе данных входные данные таковы, что ответ существует.

Выходные данные

Выведите $$$q$$$ строк: $$$k$$$-я из них должна содержать ответ (строку $$$t$$$) на $$$k$$$-й набор входных данных. Гарантируется, что ответ на каждый набор входных данных существует. Если ответов несколько, то выведите любой.

Пример
Входные данные
4
abac
3
2 1 0
abc
1
0
abba
3
1 0 1
ecoosdcefr
10
38 13 24 14 11 5 3 24 17 0
Выходные данные
aac
b
aba
codeforces
Примечание

В первом наборе входных данных подходят такие строки $$$t$$$: «aac», «aab».

Во втором наборе входных данных подходят такие строки $$$t$$$: «a», «b», «c».

В третьем наборе входных данных подходит только строка $$$t$$$ равная «aba», но символ 'b' может быть со второй или с третьей позиции.