#include <ext/hash_map>
#include <map>
#define ll long long
#define mp make_pair
#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);++(i))
#define oo (1LL<<55)
using namespace __gnu_cxx;
int N,K,T,M;
hash_map<int,ll> H;
inline void convert(char A[],int last,char B[],int &Blast)
{
memset(B,0,sizeof(B));
FOR(i,1,N) ++B[ A[i] ];
Blast = A[last];
}
inline int code(char A[],int last)
{
int rez(0);
FOR(i,0,K)
rez = (rez * 21) + A[i];
rez = (rez * 21) + last;
return rez;
}
inline void remake(int Cfg,char B[],char &last)
{
last = Cfg % 21;
Cfg /= 21;
for(int i = K;i >= 0;--i)
B[i] = Cfg % 21,Cfg /= 21;
}
ll count(int Cfg)
{
if(Cfg < 0)
exit(-1);
if(H.find(Cfg) != H.end() )
return H[Cfg];
char B[7]={0},last;
remake(Cfg,B,last);
if(B[K] == N)
return (H[Cfg] = 1);
ll rez = 0;
FOR(i,0,K-1)
{
if(!B[i])
continue;
--B[i],++B[i+1];
rez += (ll)((i == last) ? B[i] : B[i]+1) * count( code(B,i+1) );
if(rez >= oo)
{
rez = oo;
break;
}
++B[i],--B[i+1];
}
return (H[Cfg] = rez);
}
int main()
{
freopen("nkperm.in","r",stdin);
freopen("nkperm.out","w",stdout);
scanf("%d%d%d",&N,&K,&T);
M = N*K;
ll nr,cnt;
int last,x,poz;
for(char ch;T-- && scanf(" %c",&ch);)
if(ch == 'B')
{
scanf("%lld",&nr);
char B[8]={0},A[21]={0};
last = 0;
FOR(i,1,N*K)
{
FOR(j,1,N)
{
if(j==last || A[j] == K)
continue;
++A[j];
convert(A,j,B,poz);
if( (cnt = count( code(B,poz) ) ) >= nr)
{
printf("%d ",(last = j));
--A[j];
break;
}
else
nr -= cnt;
--A[j];
}
++A[last];
}
printf("\n");
}
else
{
char B[8]={0},A[21]={0};
nr = last = 0;
FOR(i,1,N*K)
{
scanf(" %d",&x);
FOR(j,1,x-1)
{
if(j==last || A[j] == K)
continue;
++A[j];
convert(A,j,B,poz);
nr += count( code(B,poz) );
--A[j];
}
++A[(last = x)];
}
printf("%lld\n",nr+1);
}
return 0;
}