program cestini;
const
MAXQ = 300000;
var
M, N, Q, T, i, test, len : LongInt;
S, ans : AnsiString;
qtype : Array[0..MAXQ-1] of Char;
a, b , index : Array[0..MAXQ-1] of LongInt;
v: array of array of char;
procedure inizia (N:Longint; M:Longint) ;
var j:longint;
begin
setLength(V, M,0);
setLength(V[0], len);
for j:=0 to len do V[0][j]:= S[j+1];
index[0]:=len;
for j:=1 to M-1 do index[j]:= 0;
end;
Procedure sposta (a:longint;b:longint);
begin
setLength(V[b], index[b]+1);
V[b][index[b]]:=V[a][index[a]-1];
index[a]:=index[a]-1;
index[b]:=index[b]+1;
end;
function controlla (a:Longint;i:Longint) : Ansistring;
begin
controlla:=V[a][i]; ans:=ans+ controlla;
end;
begin
{
decommenta le due righe seguenti se vuoi leggere/scrivere da file
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
ReadLn(T);
for test:=1 to T do begin
ReadLn();
ReadLn(N, M, Q);
ReadLn(S);
len:=Length(S);
ans := '';
Inizia(N,M);
for i:=0 to Q-1 do
begin
ReadLn(qtype[i], a[i], b[i]);
if qtype[i]='s' then sposta(a[i],b[i])
else if qtype[i]='c' then controlla(a[i],b[i]);
end;
Write('Case #', test, ': ');
WriteLn(ans);
end;
end.
cHJvZ3JhbSBjZXN0aW5pOwoKY29uc3QKICAgIE1BWFEgPSAzMDAwMDA7Cgp2YXIKICAgIE0sIE4sIFEsIFQsIGksIHRlc3QsIGxlbiA6IExvbmdJbnQ7CiAgICBTLCBhbnMgICAgICAgICAgICAgIDogQW5zaVN0cmluZzsKICAgIHF0eXBlICAgICAgICAgICAgICAgOiBBcnJheVswLi5NQVhRLTFdIG9mIENoYXI7CiAgICBhLCBiICwgaW5kZXggICAgICAgIDogQXJyYXlbMC4uTUFYUS0xXSBvZiBMb25nSW50OwogICAgdjogYXJyYXkgb2YgYXJyYXkgb2YgY2hhcjsKICAgIApwcm9jZWR1cmUgaW5pemlhIChOOkxvbmdpbnQ7IE06TG9uZ2ludCkgICA7CnZhciBqOmxvbmdpbnQ7CmJlZ2luCiAgc2V0TGVuZ3RoKFYsIE0sMCk7ICAgICAgICAgICAgCiAgc2V0TGVuZ3RoKFZbMF0sIGxlbik7ICAgICAgICAgICAKICBmb3Igajo9MCB0byBsZW4gZG8gVlswXVtqXTo9IFNbaisxXTsgCiAgaW5kZXhbMF06PWxlbjsgICAgICAgICAgCiAgZm9yIGo6PTEgdG8gTS0xIGRvIGluZGV4W2pdOj0gMDsgCiAgCmVuZDsKUHJvY2VkdXJlIHNwb3N0YSAoYTpsb25naW50O2I6bG9uZ2ludCk7CmJlZ2luCiAgIHNldExlbmd0aChWW2JdLCBpbmRleFtiXSsxKTsgCiAgIFZbYl1baW5kZXhbYl1dOj1WW2FdW2luZGV4W2FdLTFdOwogICBpbmRleFthXTo9aW5kZXhbYV0tMTsgCiAgIGluZGV4W2JdOj1pbmRleFtiXSsxOyAgIAplbmQ7ICAgCgpmdW5jdGlvbiBjb250cm9sbGEgKGE6TG9uZ2ludDtpOkxvbmdpbnQpIDogQW5zaXN0cmluZzsKYmVnaW4KICAgY29udHJvbGxhOj1WW2FdW2ldOyBhbnM6PWFucysgY29udHJvbGxhOyAKICAgICAgICAgICAgICAgICAgICAgICAgCmVuZDsgCiAgICAKYmVnaW4KewogICAgZGVjb21tZW50YSBsZSBkdWUgcmlnaGUgc2VndWVudGkgc2UgdnVvaSBsZWdnZXJlL3Njcml2ZXJlIGRhIGZpbGUKICAgIGFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsKfQoKICAgIFJlYWRMbihUKTsKICAgIGZvciB0ZXN0Oj0xIHRvIFQgZG8gYmVnaW4KICAgICAgICBSZWFkTG4oKTsKICAgICAgICBSZWFkTG4oTiwgTSwgUSk7CiAgICAgICAgUmVhZExuKFMpOwogICAgICAgIGxlbjo9TGVuZ3RoKFMpOwogICAgICAgIGFucyA6PSAnJzsKICAgICAgICBJbml6aWEoTixNKTsKICAgICAgICBmb3IgaTo9MCB0byBRLTEgZG8KICAgICAgICAgICAgICBiZWdpbiAKICAgICAgICAgICAgICAgICAgIFJlYWRMbihxdHlwZVtpXSwgYVtpXSwgYltpXSk7CiAgICAgICAgICAgICAgICAgICBpZiBxdHlwZVtpXT0ncycgdGhlbiBzcG9zdGEoYVtpXSxiW2ldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcXR5cGVbaV09J2MnIHRoZW4gY29udHJvbGxhKGFbaV0sYltpXSk7CiAgICAgICAgICAgICAgZW5kOyAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIFdyaXRlKCdDYXNlICMnLCB0ZXN0LCAnOiAnKTsKICAgICAgICBXcml0ZUxuKGFucyk7CiAgICBlbmQ7CgplbmQuCg==