#include <bits/stdc++.h>
using namespace std;
int N;
char buf[20];
set<int> B, S, Q;
const int INF = 1e9;
inline int get_b() { return ((int)(B).size()) ? *B.rbegin() : -INF; }
inline int get_s() { return ((int)(S).size()) ? *S.begin() : INF; }
int main() {
  scanf("%d", &N);
  long long ans = 1;
  const int MOD = 1e9 + 7;
  for (int a = 0; a < N; a++) {
    scanf("%s", buf);
    int x;
    scanf("%d", &x);
    if (buf[1] == 'D') {
      int bv = get_b();
      int sv = get_s();
      if (bv < x && x < sv)
        Q.insert(x);
      else if (x < bv)
        B.insert(x);
      else
        S.insert(x);
    } else {
      if (B.find(x) != B.end()) {
        if (get_b() != x) ans = 0;
        B.erase(x);
        for (int e : Q) S.insert(e);
        Q.clear();
      } else if (S.find(x) != S.end()) {
        if (get_s() != x) ans = 0;
        S.erase(x);
        for (int e : Q) B.insert(e);
        Q.clear();
      } else {
        ans = (ans * 2) % MOD;
        for (int e : Q) {
          if (e < x)
            B.insert(e);
          else if (e > x)
            S.insert(e);
        }
        Q.clear();
      }
    }
  }
  ans = ans * (int)(Q.size() + 1) % MOD;
  printf("%lld\n", ans);
  return 0;
}
