#include <bits/stdc++.h>
using namespace std;
void docut(multiset<int> &dist, multiset<int> &sp, int pos) {
  if (dist.find(pos) != dist.end()) return;
  multiset<int>::iterator it = dist.lower_bound(pos);
  multiset<int>::iterator it2 = it;
  it--;
  sp.erase(sp.find(*it2 - *it));
  sp.insert(pos - *it);
  sp.insert(*it2 - pos);
  dist.insert(pos);
}
int main() {
  int w, h, n, i, pos;
  char s[2];
  cin >> w >> h >> n;
  multiset<int> hor, ver, mxh, mxv;
  hor.insert(0);
  hor.insert(h);
  ver.insert(0);
  ver.insert(w);
  mxh.insert(h);
  mxv.insert(w);
  for (i = 0; i < n; i++) {
    scanf("%s%d", s, &pos);
    if (s[0] == 'H') {
      docut(hor, mxh, pos);
    } else {
      docut(ver, mxv, pos);
    }
    long long mx1 = *(--mxh.end());
    long long mx2 = *(--mxv.end());
    cout << mx1 * mx2 << endl;
  }
  return 0;
}
