#include <bits/stdc++.h>
using namespace std;
const int N = 110000;
int dp[1 << 16][257][2];
int A[20], B[20], t[20];
int n;
int ans = 0;
int s1, s2, t1, t2;
int ans1 = 1e7;
vector<int> q[20];
int f(int x) {
  int res = 0;
  for (int i = 0; i < n; i++) {
    if (x & (1 << i)) res++;
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  int b = 0;
  int r = 0;
  for (int i = 0; i < n; i++) {
    char c;
    cin >> c >> A[i] >> B[i];
    int da = max(A[i] - n, 0);
    A[i] = A[i] - da;
    if (r >= da) {
      r -= da;
    } else {
      ans += da - r;
      b += da - r;
      r = 0;
    }
    int db = max(B[i] - n, 0);
    B[i] = B[i] - db;
    if (b >= db) {
      b -= db;
    } else {
      ans += db - b;
      r += db - b;
      b = 0;
    }
    t[i] = (c == 'R');
  }
  for (int i = 0; i < (1 << n); i++) {
    q[f(i)].push_back(i);
    for (int j = 0; j <= n * n; j++) {
      for (int l = 0; l < 2; l++) {
        dp[i][j][l] = 1e7;
      }
    }
  }
  if (b >= n * n) b = n * n - 1;
  if (r >= n * n) r = n * n - 1;
  int k = (b > 0);
  dp[0][max(b, r)][k] = 0;
  for (int i = 0; i <= n; i++) {
    for (auto mask : q[i]) {
      int xx = 0;
      int yy = 0;
      for (int j = 0; j < n; j++) {
        if ((mask & (1 << j)) && t[j] == 1) xx++;
      }
      yy = i - xx;
      for (int j = 0; j < n * n; j++) {
        for (int l = 0; l < 2; l++) {
          int x = dp[mask][j][l];
          if (x > 5e6) continue;
          for (int k = 0; k < n; k++) {
            if ((mask & (1 << k))) continue;
            if (l == 0) {
              int y = max(A[k] - j - xx, B[k] - yy);
              if (y < 0) y = 0;
              int nr = j + y;
              int nb = y;
              int c1 = max(A[k] - xx, 0);
              int c2 = max(B[k] - yy, 0);
              nr -= c1;
              nb -= c2;
              if (nb < 0) nb = 0;
              if (nr < 0) nr = 0;
              if (nb >= n * n) nb = n * n - 1;
              if (nr >= n * n) nr = n * n - 1;
              dp[mask ^ (1 << k)][max(nb, nr)][(nb > 0)] =
                  min(y + x, dp[mask ^ (1 << k)][max(nb, nr)][(nb > 0)]);
              if ((mask ^ (1 << k)) + 1 == (1 << n)) ans1 = min(ans1, x + y);
            } else {
              int y = max(A[k] - xx, B[k] - j - yy);
              if (y < 0) y = 0;
              int nr = y;
              int nb = y + j;
              int c1 = max(A[k] - xx, 0);
              int c2 = max(B[k] - yy, 0);
              nr -= c1;
              nb -= c2;
              if (nb < 0) nb = 0;
              if (nr < 0) nr = 0;
              if (nb >= n * n) nb = n * n - 1;
              if (nr >= n * n) nr = n * n - 1;
              dp[mask ^ (1 << k)][max(nb, nr)][(nb > 0)] =
                  min(y + x, dp[mask ^ (1 << k)][max(nb, nr)][(nb > 0)]);
              if ((mask ^ (1 << k)) + 1 == (1 << n)) ans1 = min(ans1, x + y);
            }
          }
        }
      }
    }
  }
  cout << ans1 + ans + n;
}
