program GRCAE;
const
MAX = 100000;
var
n, m: integer;
key: array[1..17] of integer;
inputStr: string;
procedure HoanViChuoi(inputStr: string; n: integer; key: array of integer);
var
len, numGroups, i, j, k: integer;
groups, encodedGroups: array of string;
begin
len := Length(inputStr);
numGroups := len div n;
// Tạo và chia thành các nhóm
SetLength(groups, numGroups);
k := 1;
for i := 1 to numGroups do
begin
groups[i] := Copy(inputStr, k, n);
k := k + n;
end;
// Hoán vị từng nhóm theo khóa
SetLength(encodedGroups, numGroups);
for i := 1 to numGroups do
begin
encodedGroups[i] := '';
for j := 1 to n do
encodedGroups[i] := encodedGroups[i] + groups[i][key[j]];
end;
// Hiển thị kết quả
for i := 1 to numGroups do
Writeln(encodedGroups[i]);
end;
begin
// Đọc dữ liệu từ file GRCAE.INP
Assign(Input, 'GRCAE.INP');
Reset(Input);
Readln(n, m);
for var i := 1 to n do
Read(key[i]);
Readln; // Đọc dòng thừa
Readln(inputStr);
Close(Input);
// Mã hóa xâu và hiển thị kết quả vào file GRCAE.OUT
Assign(Output, 'GRCAE.OUT');
Rewrite(Output);
HoanViChuoi(inputStr, n, key);
Close(Output);
end.