역 Move-to-Front 변환

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

Move-to-Front(MTF) 변환은 입력 데이터를 수열로 바꾸는 부호화 방식이다. MTF 변환을 거친 데이터에 엔트로피 부호화를 적용하면 압축률이 더 좋아지는 경우가 많다. 변환 자체는 간단하다. 다음은 소문자 알파벳으로만 이루어진 문자열의 MTF 변환이다.

  1. 소문자 알파벳 목록을 유지한다. 목록은 처음에 사전순으로 정렬되어 있다. 즉 시작할 때 목록은 [abcdefghijklmnopqrstuvwxyz]이다.
  2. 문자열에서 문자 α\alpha를 하나 읽는다. 목록에서 α\alpha의 인덱스를 출력한 다음, α\alpha를 목록 맨 앞으로 옮긴다.
  3. 문자열의 모든 문자를 읽을 때까지 2번을 반복한다.

문자열 hakka에 이 변환을 적용하면 다음 순서로 진행된다.

  1. 첫 번째 문자 h는 [abcdefghijklmnopqrstuvwxyz]에서 인덱스가 7이다. 7을 출력하고 h를 맨 앞으로 옮긴다.
  2. 두 번째 문자 a는 [habcdefgijklmnopqrstuvwxyz]에서 인덱스가 1이다. 1을 출력하고 a를 맨 앞으로 옮긴다.
  3. 세 번째 문자 k는 [ahbcdefgijklmnopqrstuvwxyz]에서 인덱스가 10이다. 10을 출력하고 k를 맨 앞으로 옮긴다.
  4. 네 번째 문자 k는 [kahbcdefgijlmnopqrstuvwxyz]에서 인덱스가 0이다. 0을 출력하고 k를 맨 앞으로 옮긴다.
  5. 다섯 번째 문자 a는 [kahbcdefgijlmnopqrstuvwxyz]에서 인덱스가 1이다. 1을 출력하고 a를 맨 앞으로 옮긴다.

즉 MTF 변환은 hakka를 수열 (7,1,10,0,1)(7, 1, 10, 0, 1)로 보낸다.

MTF 변환의 역변환을 구하는 프로그램을 작성하라. 수열 (a1,,an)(a_1, \dots, a_n)이 주어지면, MTF 변환이 (a1,,an)(a_1, \dots, a_n)으로 보내는 문자열 ss를 구하면 된다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. T50T \le 50이다.

각 테스트 케이스는 두 줄이다. 첫 줄에는 수열의 길이를 나타내는 양의 정수 nn이 주어진다. 1n1001 \le n \le 100이다. 둘째 줄에는 공백으로 구분된 정수 a1,,ana_1, \dots, a_n이 주어진다. 모든 ii에 대해 ai{0,1,,25}a_i \in \{0, 1, \dots, 25\}이다.

출력

각 테스트 케이스마다 MTF 변환이 (a1,,an)(a_1, \dots, a_n)으로 보내는 문자열 ss를 한 줄에 출력한다.