#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;
typedef int ll;
//要求字典序最小的方案,就要根据L的数目决定,两个R之间的L的数目
char s[200001];
ll x[200001];
int main(){
ll n,cnt,cnt1,cnt2;
scanf("%d %s",&n,s);
x[0]=0;
cnt=0;
cnt1=0,cnt2=0;
for(ll i=0;i<n-1;i++){
if(s[i]=='L'){
cnt1++;
}
else {
cnt++;
x[cnt]=x[cnt-1]+cnt1+cnt2+1;
ll b=x[cnt];
cnt2=cnt1;//保存上一段L的个数
while(cnt1){
x[++cnt]=(--b);
cnt1--;
}
}
}
if(cnt1>0){//如果最后的字母是L
cnt++;
x[cnt]=x[cnt-1]+cnt1+cnt2+1;
ll b=x[cnt];
cnt2=cnt1;
while(cnt1){
x[++cnt]=(--b);
cnt1--;
}
}
else {
x[++cnt]=n;//最后的为R
}
for(ll i=1;i<=cnt;i++){
printf("%d\n",x[i]);
}
return 0;
}