#include <bits/stdc++.h>
using namespace std;
int xbit[200000 + 10], ybit[200000 + 10], mxval;
int xcnt[200000 + 10], ycnt[200000 + 10];
void update(int *BIT, int idx, int val) {
  idx++;
  while (idx <= mxval) BIT[idx] += val, idx += idx & -idx;
}
long long int query(int *BIT, int idx) {
  idx++;
  long long int ret = 0;
  while (idx) ret += BIT[idx], idx -= idx & -idx;
  return ret;
}
int main() {
  mxval = 200000 + 1;
  int i, j, k, t, cs, m, mn, mx, my, w, h, n, v, lo, hi, key, l, r, mid;
  char str[5];
  scanf("%d %d %d", &w, &h, &n);
  update(xbit, 0, 1);
  update(xbit, h, 1);
  update(ybit, 0, 1);
  update(ybit, w, 1);
  xcnt[h]++;
  ycnt[w]++;
  mx = h;
  my = w;
  while (n--) {
    scanf("%s %d", str, &v);
    if (str[0] == 'H') {
      lo = 0;
      hi = v - 1;
      key = query(xbit, v);
      while (lo != hi) {
        mid = (lo + hi) / 2;
        if (query(xbit, mid) >= key)
          hi = mid;
        else
          lo = mid + 1;
      }
      l = lo;
      lo = v + 1;
      hi = h;
      key = query(xbit, v) + 1;
      while (lo != hi) {
        mid = (lo + hi) / 2;
        if (query(xbit, mid) >= key)
          hi = mid;
        else
          lo = mid + 1;
      }
      r = lo;
      xcnt[r - l]--;
      xcnt[v - l]++;
      xcnt[r - v]++;
      while (!xcnt[mx]) mx--;
      update(xbit, v, 1);
    } else {
      lo = 0;
      hi = v - 1;
      key = query(ybit, v);
      while (lo != hi) {
        mid = (lo + hi) / 2;
        if (query(ybit, mid) >= key)
          hi = mid;
        else
          lo = mid + 1;
      }
      l = lo;
      lo = v + 1;
      hi = w;
      key = query(ybit, v) + 1;
      while (lo != hi) {
        mid = (lo + hi) / 2;
        if (query(ybit, mid) >= key)
          hi = mid;
        else
          lo = mid + 1;
      }
      r = lo;
      ycnt[r - l]--;
      ycnt[v - l]++;
      ycnt[r - v]++;
      while (!ycnt[my]) my--;
      update(ybit, v, 1);
    }
    printf("%I64d\n", (long long int)mx * my);
  }
  return 0;
}
