문자열 디코딩

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

문제

문자열을 인코딩하는 다음과 같은 방법이 있다.

인코딩할 문자열의 각 문자를 순서대로 $x_1, x_2, \dots, x_n$이라고 하자. 인코딩은 다음 절차를 따른다.

  1. 자연수 $m$과, 집합 ${1, 2, \dots, n}$의 서로 다른 $n$개의 수로 이루어진 순열 $p_1, p_2, \dots, p_n$을 정한다.
  2. 아래 3번 과정을 정확히 $m$번 반복한다.
  3. 모든 $1 \le i \le n$에 대해 $y_i = x_{p_i}$로 둔 다음, 각 $x_i$를 $y_i$로 바꾼다. (즉 한 번의 과정에서 새 문자열의 $i$번째 문자는 이전 문자열의 $p_i$번째 문자가 된다.)

예를 들어 문자열 "hello"를 $m = 3$, 순열 $p = (2, 3, 1, 5, 4)$로 인코딩하면 다음과 같이 바뀐다.

"hello" → "elhol" → "lhelo" → "helol"

인코딩된 문자열과, 인코딩에 사용한 $m$ 및 순열 $p_1, \dots, p_n$이 주어질 때, 인코딩하기 전의 원래 문자열을 복원(디코딩)하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫째 줄에는 두 정수 $n$과 $m$이 주어진다. ($1 \le n \le 80$, $1 \le m \le 10^9$)

둘째 줄에는 인코딩에 사용한 서로 다른 $n$개의 정수 $p_1, p_2, \dots, p_n$이 주어진다. ($1 \le p_i \le n$)

셋째 줄에는 인코딩된 문자열이 주어진다. 이 문자열의 길이는 $n$이며, 공백이 포함될 수 있다.

입력의 마지막 줄에는 $0$이 두 개 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 디코딩한 원래 문자열을 한 줄에 출력한다.