#include <bits/stdc++.h>
using namespace std;
const int SZ = (1 << 21) + 69;
int seg[SZ][4] = {}, n, id = 0;
string s;
void upd(int idx, int L, int R, int x, char c) {
  if (L <= x && x <= R) {
    if (L == R) {
      seg[idx][0] = seg[idx][1] = seg[idx][2] = seg[idx][3] = 0;
      int v;
      if (c == '(') {
        v = 1;
      } else if (c == ')') {
        v = -1;
      } else {
        v = 0;
      }
      seg[idx][0] = v;
      if (v == 1) {
        seg[idx][1] = 1;
      } else if (v == -1) {
        seg[idx][2] = 1;
      }
      seg[idx][3] = v;
    } else {
      upd(2 * idx, L, (L + R) / 2, x, c);
      upd(2 * idx + 1, (L + R) / 2 + 1, R, x, c);
      seg[idx][0] = max(seg[2 * idx][0], seg[2 * idx][3] + seg[2 * idx + 1][0]);
      seg[idx][1] =
          seg[2 * idx + 1][1] + max(seg[2 * idx][1] - seg[2 * idx + 1][2], 0);
      seg[idx][2] =
          seg[2 * idx][2] + max(seg[2 * idx + 1][2] - seg[2 * idx][1], 0);
      seg[idx][3] = seg[2 * idx][3] + seg[2 * idx + 1][3];
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s;
  for (int i = 0; i < n; i++) {
    if (s[i] == 'L') {
      id = max(0, id - 1);
    } else if (s[i] == 'R') {
      id++;
    } else {
      upd(1, 0, n - 1, id, s[i]);
    }
    if (seg[1][1] || seg[1][2]) {
      cout << "-1";
    } else {
      cout << seg[1][0];
    }
    if (i < n - 1) {
      cout << " ";
    }
  }
  cout << "\n";
}
