#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
set<int> buy, sell, unknown;
int n;
inline int add(int a, int b) {
  a += b;
  if (a >= MOD) {
    a -= MOD;
  }
  return a;
}
inline int mult(int a, int b) { return (1LL * a * b) % MOD; }
void die() {
  puts("0");
  exit(0);
}
int main() {
  scanf("%d", &n);
  static char buffer[10];
  int p = 1;
  for (int i = int(0); i < int(n); i++) {
    int value;
    scanf("%s %d", buffer, &value);
    if (buffer[1] == 'D') {
      if (!buy.empty() && value < *buy.rbegin()) {
        buy.insert(value);
      } else if (!sell.empty() && value > *sell.begin()) {
        sell.insert(value);
      } else {
        unknown.insert(value);
      }
    } else {
      if (buy.count(value)) {
        if (value < *buy.rbegin()) {
          die();
        }
        buy.erase(prev(buy.end()));
      } else if (sell.count(value)) {
        if (value > *sell.begin()) {
          die();
        }
        sell.erase(sell.begin());
      } else {
        p = mult(p, 2);
      }
      for (auto &each : unknown) {
        if (each < value) {
          buy.insert(each);
        } else if (each > value) {
          sell.insert(each);
        }
      }
      unknown.clear();
    }
  }
  int ans = mult(p, add((int)unknown.size(), 1));
  printf("%d\n", ans);
  return 0;
}
