#include <bits/stdc++.h>
using namespace std;
int max(int a, int b) { return a > b ? a : b; }
int N;
char in[1050];
int par[1050];
bool vst[1050];
vector<int> edge[1050];
list<int> L;
void dfs(int u) {
  vst[u] = true;
  int i, sz = edge[u].size(), v;
  for (i = 0; i < sz; i++) {
    v = edge[u][i];
    if (!vst[par[v]]) {
      dfs(par[v]);
    }
  }
  L.push_back(u);
}
int out[1050];
int main() {
  int i;
  scanf("%d", &N);
  scanf("%s", in);
  for (i = 0; i < N; i++) par[i] = i;
  for (i = 0; i < N; i++) {
    if (in[i] == 'R')
      edge[par[i + 1]].push_back(par[i]);
    else if (in[i] == 'L')
      edge[par[i]].push_back(par[i + 1]);
    else
      par[i + 1] = par[i];
  }
  for (i = 0; i < N; i++) {
    if (!vst[par[i]]) dfs(par[i]);
  }
  for (list<int>::iterator it = L.begin(); it != L.end(); it++) {
    int maxv = 0;
    int sz = edge[*it].size(), v;
    for (i = 0; i < sz; i++) {
      v = edge[*it][i];
      maxv = max(maxv, out[v]);
    }
    out[*it] = maxv + 1;
  }
  for (i = 0; i < N; i++) out[i] = out[par[i]];
  for (i = 0; i < N; i++) printf("%d%c", out[i], i == N - 1 ? '\n' : ' ');
  return 0;
}
