#include <bits/stdc++.h>
using namespace std ;
typedef unsigned long long ll ;
ll b[30] ;
ll fact[22] ;
ll contor(vector<ll> permutation) {
ll num = 0;
ll len = permutation.size();
for (ll i = 0; i < len; ++i) {
ll cnt = 0;
for (ll j = i + 1; j < len; ++j)
if (permutation[i] > permutation[j]) ++cnt;
num += cnt * fact[len - i - 1];
}
return num + 1;
}
vector<ll> revContor(ll bits, ll num) {
num = num - 1;
vector<bool> vis(bits + 1, false);
vector<ll> permutation(bits, -1);
ll n, residue = num;
for (ll i = 0; i < bits; ++i) {
n = residue / (fact[bits - i - 1]);
residue = residue % (fact[bits - i - 1]);
for (ll j = 1; j <= bits; ++j) {
if (!vis[j] && !(n--)) {
vis[j] = true;
permutation[i] = j;
break;
}
}
}
return permutation;
}
int main()
{
int n , m ;
cin >> n >> m ;
fact[0] = 1;
for(ll i = 1; i <= n ;i ++)
fact[i] = fact[i - 1] * i ;
for(int i = 1; i <= m ;i ++)
{
char s[2] ;
cin >> s ;
if(s[0] == 'P')
{
ll x ;cin >> x ;
vector<ll> t = revContor(n , x) ;
for(auto xx : t)
cout << xx << " " ;
puts("") ;
}
else
{
vector<ll> b ;
for(ll i = 1 , x ; i <= n ;i ++) cin >> x , b.push_back(x) ;
cout << contor(b) << endl ;
}
}
return 0 ;
}