#include <bits/stdc++.h>
using namespace std;
clock_t time_p = clock();
void Time() {
  time_p = clock() - time_p;
  cerr << "Time Taken : " << (float)(time_p) / CLOCKS_PER_SEC << "\n";
}
const int INF = 1e9 + 7;
long double pi = 3.1415926535897932;
const long long INF64 = 9e18;
const long long mod = 1e9 + 7;
void solve() {
  int w, h, n;
  cin >> w >> h >> n;
  set<int> st1, st2;
  long long mx1 = -1, mx2 = -1;
  st1.insert(0);
  st2.insert(0);
  st1.insert(h);
  st2.insert(w);
  multiset<int, greater<int> > mst, mst2;
  mst.insert(h);
  mst2.insert(w);
  for (int i = 0; i < n; ++i) {
    char c;
    int x;
    cin >> c >> x;
    if (c == 'H') {
      auto idx = st1.upper_bound(x);
      int forth = -1, back = -1;
      if (idx != st1.end()) forth = *idx;
      if (idx != st1.begin()) {
        --idx;
        back = *idx;
      }
      int space = forth - back;
      auto it = mst.lower_bound(space);
      mst.erase(it);
      mst.insert(forth - x);
      mst.insert(x - back);
      st1.insert(x);
    } else {
      auto idx = st2.upper_bound(x);
      int forth = -1, back = -1;
      if (idx != st2.end()) forth = *idx;
      if (idx != st2.begin()) {
        --idx;
        back = *idx;
      }
      int space = forth - back;
      auto it = mst2.lower_bound(space);
      mst2.erase(it);
      mst2.insert(forth - x);
      mst2.insert(x - back);
      st2.insert(x);
    }
    mx1 = *mst.begin();
    mx2 = *mst2.begin();
    cout << mx1 * mx2 << endl;
  }
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.precision(15);
  cout.precision(15);
  cerr << fixed;
  cout << fixed;
  int t;
  solve();
  Time();
  return 0;
}
