← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var q int
	if _, err := fmt.Fscan(reader, &q); err != nil {
		return
	}

	for tc := 0; tc < q; tc++ {
		var s string
		fmt.Fscan(reader, &s)

		var m int
		fmt.Fscan(reader, &m)

		b := make([]int, m)
		for i := 0; i < m; i++ {
			fmt.Fscan(reader, &b[i])
		}

		freq := make([]int, 26)
		for i := 0; i < len(s); i++ {
			freq[s[i]-'a']++
		}

		ans := make([]byte, m)
		assigned := make([]bool, m)
		assignedCount := 0

		currentChar := 25

		for assignedCount < m {
			var Z []int
			for i := 0; i < m; i++ {
				if !assigned[i] && b[i] == 0 {
					Z = append(Z, i)
				}
			}

			for currentChar >= 0 && freq[currentChar] < len(Z) {
				currentChar--
			}

			for _, idx := range Z {
				ans[idx] = byte(currentChar + 'a')
				assigned[idx] = true
				assignedCount++
			}

			currentChar--

			for i := 0; i < m; i++ {
				if !assigned[i] {
					for _, idx := range Z {
						b[i] -= abs(i - idx)
					}
				}
			}
		}

		fmt.Fprintln(writer, string(ans))
	}
}