#include <bits/stdc++.h>
using namespace std;
const long long maxn = 200020;
long long n, m, q, cnt, tot, maxx, maxy;
long long stra[maxn], strb[maxn], fx[maxn], fy[maxn], sum[maxn];
struct haha {
  long long len, nxt, pre, flag;
} a[maxn], b[maxn];
struct hahaha {
  char opt[10];
  long long len, flag;
} num[maxn];
void read() {
  cin >> n >> m >> q;
  for (long long i = 1, k; i <= q; i++) {
    char str[5];
    scanf("%s", str + 1);
    scanf("%lld", &k);
    if (str[1] == 'V' && (((k == 0) || (k == n)) || fx[k]) ||
        str[1] == 'H' && (((k == 0) || (k == m)) || fy[k])) {
      num[i].flag = 1;
      continue;
    }
    num[i].opt[1] = str[1];
    num[i].len = k;
    num[i].flag = 0;
    if (num[i].opt[1] == 'H') {
      strb[++tot] = num[i].len;
      fy[num[i].len] = 1;
    } else {
      stra[++cnt] = num[i].len;
      fx[num[i].len] = 1;
    }
  }
}
void deal_first() {
  sort(stra + 1, stra + cnt + 1);
  sort(strb + 1, strb + tot + 1);
  if (strb[tot] != m) strb[++tot] = m;
  if (stra[cnt] != n) stra[++cnt] = n;
  for (long long i = 1, pre = 0; i <= cnt + 1; i++) {
    if (stra[i] == pre) continue;
    a[pre].nxt = stra[i];
    a[stra[i]].pre = pre;
    a[stra[i]].flag = 1;
    a[stra[i]].len = stra[i] - pre;
    maxx = max(maxx, (stra[i] - pre));
    pre = stra[i];
  }
  for (long long i = 1, pre = 0; i <= tot; i++) {
    if (strb[i] == pre) continue;
    b[pre].nxt = strb[i];
    b[strb[i]].pre = pre;
    b[strb[i]].flag = 1;
    b[strb[i]].len = strb[i] - pre;
    maxy = max(maxy, (strb[i] - pre));
    pre = strb[i];
  }
  sum[q] = maxx * maxy;
}
void do_it() {
  for (long long i = q; i >= 2; i--) {
    if (num[i].flag) {
      sum[i - 1] = sum[i];
      continue;
    }
    long long len = num[i].len;
    if (num[i].opt[1] == 'H') {
      if (!b[len].flag) continue;
      b[len].flag = 0;
      b[b[len].nxt].len += b[len].len;
      maxy = max(maxy, b[b[len].nxt].len);
      b[b[len].pre].nxt = b[len].nxt;
      b[b[len].nxt].pre = b[len].pre;
      sum[i - 1] = maxx * maxy;
    } else {
      if (!a[len].flag) continue;
      a[len].flag = 0;
      a[a[len].nxt].len += a[len].len;
      maxx = max(maxx, a[a[len].nxt].len);
      a[a[len].pre].nxt = a[len].nxt;
      a[a[len].nxt].pre = a[len].pre;
      sum[i - 1] = maxx * maxy;
    }
  }
  for (register long long i = 1; i <= q; i++) printf("%lld\n", sum[i]);
}
signed main() {
  read();
  deal_first();
  do_it();
  return 0;
}
