#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

int n;
const int F[]={1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441};
const int N=555555;
const int L=13;
char op[N*3]={'\0'};
int fn[L][N*3];
int ins[3][N*3];
int p[N];
int m;
int main(){
	scanf("%d",&n);
	int x=F[n];
	scanf("%s",op);
	m=strlen(op);
	int d=0;
	for(int i=0;i<m;i++){
		if(op[i]=='R'){
			d++;
		}
	}
	int s=d+2*x;
	fn[0][0]=0;
	for(int i=1;i<s;i++){
		fn[0][i]=i;
	}
	for(int i=1;i<=n;i++){
		// cerr<<"n="<<i<<endl;
		bool qaq=false;
		int it=0;
		for(int k=0;k<3;k++){
			for(int j=0;j<F[i-1];j++){
				ins[k][j]=k*F[i-1]+j;
				// cerr<<ins[k][j]<<endl;
			}
		}
		for(int j=0;;j++){
			if(j>=m||op[j]=='R'){
				int a=F[i]+it;
				if(a>=s){
					break;
				}
				for(int k=0;k<3;k++){
					int f=qaq?k==1?2:k==2?1:0:k;
					// cerr<<f<<" << "<<a<<endl;
					if(F[i-1]+it<s)ins[f][F[i-1]+it]=a;
					a=ins[f][fn[i-1][it]];
					// cerr<<f<<" >> "<<a<<endl;
				}
				// cerr<<"it="<<it<<" "<<a<<endl;
				fn[i][it]=a;
				it++;
			}
			else{
				qaq^=1;
			}
		}
	}
	stack<int> ans;
	for(int i=0;i<x;i++){
		ins[0][i]=i;
	}
	for(int i=0;i<d+x;i++){
		int out=ins[0][fn[n][i]];
		if(i+x<s){
			ins[0][i+x]=out;// pipe
		}
		ans.push(out);
	}
	for(int i=0;i<x;i++){
		p[ans.top()]=i;
		ans.pop();
	}
	for(int i=0;i<x;i++){
		printf("%d ",p[i]);
	}
	printf("\n");
	return 0;
}