#include <bits/stdc++.h>
using namespace std;
string to_string(string s) { return '"' + s + '"'; }
string to_string(const char* s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto& x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += "}";
  return res;
}
void debug_out() { cerr << '\n'; }
template <typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
  cerr << " " << to_string(H);
  debug_out(T...);
}
template <typename A, typename B>
istream& operator>>(istream& input, pair<A, B>& x) {
  input >> x.first >> x.second;
  return input;
}
template <typename A>
istream& operator>>(istream& input, vector<A>& x) {
  for (auto& i : x) input >> i;
  return input;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, val = 1, i = 0;
  string s;
  cin >> n;
  cin >> s;
  vector<int> vec(n);
  while (i <= n - 1) {
    int j = i;
    while ((j <= n - 2) && (s[j] != 'R')) {
      j++;
    }
    vec[j] = 1;
    for (int k = j - 1; k >= i; k--) {
      vec[k] = (s[k] == 'L') ? vec[k + 1] + 1 : vec[k + 1];
    }
    vec[i] = max(vec[i], val);
    while (i <= n - 2 && s[i] == '=') {
      vec[i + 1] = vec[i], i++;
    }
    i = j + 1;
    val = vec[j] + 1;
  }
  for (auto el : vec) {
    cout << el << " ";
  }
  cout << '\n';
}
