#include <bits/stdc++.h>
using namespace std;
int read() {
  int f = 1, x = 0;
  char s = getchar();
  while (s < '0' || s > '9') {
    if (s == '-') f = -1;
    s = getchar();
  }
  while (s >= '0' && s <= '9') {
    x = x * 10 + s - '0';
    s = getchar();
  }
  return x * f;
}
int n, f[3000 + 5];
char str[3000 + 5];
bool Find1(int x) {
  if (!x) return 0;
  if (str[x] == 'R') return 1;
  if (str[x] == 'L') return 0;
  return Find1(x - 1);
}
bool Find2(int x) {
  if (x == n) return 0;
  if (str[x] == 'L') return 1;
  if (str[x] == 'R') return 0;
  return Find2(x + 1);
}
int main() {
  n = read();
  scanf("%s", str + 1);
  memset(f, 0, sizeof(f));
  for (int i = 1; i <= n; i++)
    if (!Find1(i - 1) && (!Find2(i))) f[i] = 1;
  for (int i = 1; i <= n; i++)
    if (f[i] == 1) {
      for (int j = i - 1; j >= 1; j--) {
        if (str[j] == 'L') f[j] = max(f[j], f[j + 1] + 1);
        if (str[j] == '=') f[j] = max(f[j], f[j + 1]);
        if (str[j] == 'R') break;
      }
      for (int j = i + 1; j <= n; j++) {
        if (str[j - 1] == 'R') f[j] = max(f[j], f[j - 1] + 1);
        if (str[j - 1] == '=') f[j] = max(f[j], f[j - 1]);
        if (str[j - 1] == 'L') break;
      }
    }
  printf("%d", f[1]);
  for (int i = 2; i <= n; i++) printf(" %d", f[i]);
  puts("");
  return 0;
}
