#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 3e2 + 4;
const int maxm = 7e4 + 4;
const double pi = acos(-1.0);
bool vis[maxn];
int kind[maxn], r[maxn], b[maxn], sumr, sumb, n, maxvr, maxvb;
char col[2];
vector<int> v;
int dp[maxm][maxn];
const int offset = 150;
int main() {
  int ik, i, j, k, kase;
  scanf("%d", &n);
  for (i = 0; i < n; ++i) {
    scanf("%s%d%d", col, &r[i], &b[i]);
    sumr += r[i];
    sumb += b[i];
    kind[i] = (col[0] == 'B');
  }
  for (i = 0; i < n; ++i)
    if (kind[i] == 0) v.push_back(r[i]);
  sort(v.begin(), v.end());
  for (i = 0; i < v.size(); ++i) maxvr += v[i] - max(v[i] - i, 0);
  for (i = 0; i < n; ++i)
    if (kind[i]) maxvr += min(r[i], int(v.size()));
  if (sumr - sumb >= maxvr) {
    printf("%d\n", n + sumr - maxvr);
    return 0;
  }
  v.clear();
  for (i = 0; i < n; ++i)
    if (kind[i]) v.push_back(b[i]);
  sort(v.begin(), v.end());
  for (i = 0; i < v.size(); ++i) maxvb += v[i] - max(v[i] - i, 0);
  for (i = 0; i < n; ++i)
    if (!kind[i]) maxvb += min(b[i], int(v.size()));
  if (sumb - sumr >= maxvb) {
    printf("%d\n", n + sumb - maxvb);
    return 0;
  }
  int limit = (1 << n) - 1;
  memset(dp, 0x3f, sizeof dp);
  dp[0][sumr - sumb + offset] = sumr;
  for (i = 0; i < limit; ++i) {
    int cntr = 0, cntb = 0;
    for (j = 0; j < n; ++j)
      if (i >> j & 1) {
        if (kind[j])
          cntb++;
        else
          cntr++;
      }
    for (j = 0; j < n; ++j)
      if (!(i >> j & 1)) {
        int nxt = i + (1 << j);
        if (kind[j]) {
          int cnt = 0;
          for (k = 0; k < n; ++k)
            if (!(i >> k & 1) && k != j)
              if (b[k] >= cntb + 1) cnt++;
          for (k = 0; k < maxn; ++k)
            if (dp[i][k] != inf && k + cnt < maxn)
              dp[nxt][k + cnt] = min(dp[nxt][k + cnt], dp[i][k]);
        } else {
          int cnt = 0;
          for (k = 0; k < n; ++k)
            if (!(i >> k & 1) && k != j)
              if (r[k] >= cntr + 1) cnt++;
          for (k = 0; k < maxn; ++k)
            if (dp[i][k] != inf && k - cnt >= 0)
              dp[nxt][k - cnt] = min(dp[nxt][k - cnt], dp[i][k] - cnt);
        }
      }
  }
  int ans = inf;
  for (i = 0; i < maxn; ++i)
    if (i >= offset)
      ans = min(ans, dp[limit][i] + n);
    else
      ans = min(ans, dp[limit][i] + (offset - i) + n);
  printf("%d\n", ans);
  return 0;
}
