#include <bits/stdc++.h>
using namespace std;
int D[10000];
char S[10000];
int n;
int dfs(int x) {
  if (x == n) {
    return 1;
  }
  if (D[x] != 0) return D[x];
  if (S[x] == 'L') {
    int z = dfs(x + 1) + 1;
    return z;
  } else if (S[x] == '=') {
    int z = dfs(x + 1);
    return z;
  }
  return 1;
}
int main(int argc, char** argv) {
  scanf("%d", &n);
  scanf("%s", S + 1);
  memset(D, 0, sizeof(D));
  if (S[1] == 'R') D[1] = 1;
  if (S[1] == '=' && S[2] == 'R') D[1] = D[2] = 1;
  if (S[n - 2] == 'L' && S[n - 1] == '=') D[n] = D[n - 1] = 1;
  if (S[n - 1] == 'L') D[n] = 1;
  for (int i = 2; i < n; i++) {
    if (S[i - 1] == 'L' && S[i] == 'R') D[i] = 1;
  }
  for (int i = 1; i < n; i++) {
    if (D[i] != 0) continue;
    if (S[i] == 'R') {
      if (S[i - 1] == '=')
        D[i] = D[i - 1];
      else if (S[i - 1] == 'R')
        D[i] = D[i - 1] + 1;
    } else if (S[i] == 'L') {
      int z = dfs(i + 1) + 1;
      if (i == 1) {
        D[i] = z;
        continue;
      }
      if (S[i - 1] == '=') D[i] = max(D[i - 1], z);
      if (S[i - 1] == 'R') D[i] = max(D[i - 1] + 1, z);
      if (S[i - 1] == 'L') D[i] = z;
    } else if (S[i] == '=') {
      int z = dfs(i + 1);
      if (i == 1) {
        D[i] = z;
        continue;
      }
      if (S[i - 1] == '=') D[i] = max(D[i - 1], z);
      if (S[i - 1] == 'R') D[i] = max(D[i - 1] + 1, z);
      if (S[i - 1] == 'L') D[i] = z;
    }
  }
  if (S[n - 1] == 'R')
    D[n] = D[n - 1] + 1;
  else if (S[n - 1] == '=')
    D[n] = D[n - 1];
  for (int i = 1; i <= n; i++) {
    if (i != 1) cout << " ";
    cout << D[i];
  }
  cout << endl;
  return 0;
}
