#include <bits/stdc++.h>
using namespace std;
long long MOD = int(1e9) + 7;
inline int inp() {
  register int n = 0, s = 1, c = getchar();
  if (c == '-') s = -1;
  while (c < 48) c = getchar();
  while (c > 47) n = (n << 3) + (n << 1) + c - '0', c = getchar();
  return n * s;
}
inline void writeInt(long long n) {
  long long N = n, rev, count = 0;
  rev = N;
  if (N == 0) {
    putchar('0');
    putchar('\n');
    return;
  }
  while ((rev % 10) == 0) {
    count++;
    rev /= 10;
  }
  rev = 0;
  while (N != 0) {
    rev = (rev << 3) + (rev << 1) + N % 10;
    N /= 10;
  }
  while (rev != 0) {
    putchar(rev % 10 + '0');
    rev /= 10;
  }
  while (count--) putchar('0');
}
const int N = 1000 * 100 + 5;
int debug = 1;
int main() {
  ios::sync_with_stdio(false);
  int i, j, n, t, w, h;
  cin >> w >> h >> n;
  set<int> cutx, cuty;
  cutx.insert(0);
  cutx.insert(h);
  cuty.insert(0);
  cuty.insert(w);
  set<pair<int, pair<int, int> > > widthx, widthy;
  widthx.insert(make_pair(h, make_pair(0, h)));
  widthy.insert(make_pair(w, make_pair(0, w)));
  for (i = 0; i < n; i++) {
    char c;
    int x;
    cin >> c >> x;
    if (c == 'H') {
      int l = *(--cutx.lower_bound(x));
      int r = *(cutx.upper_bound(x));
      cutx.insert(x);
      widthx.erase(widthx.find(make_pair(r - l, make_pair(l, r))));
      widthx.insert(make_pair(x - l, make_pair(l, x)));
      widthx.insert(make_pair(r - x, make_pair(x, r)));
    } else {
      int l = *(--cuty.lower_bound(x));
      int r = *(cuty.upper_bound(x));
      cuty.insert(x);
      widthy.erase(widthy.find(make_pair(r - l, make_pair(l, r))));
      widthy.insert(make_pair(x - l, make_pair(l, x)));
      widthy.insert(make_pair(r - x, make_pair(x, r)));
    }
    long long ansx = (widthx.rbegin())->first;
    long long ansy = (widthy.rbegin())->first;
    cout << ansx * ansy << endl;
  }
  cin >> i;
}
