#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 550;
multiset<int> W, H, Lw, Lh;
int wnum[205000], hnum[205000];
int w, h, n;
int main() {
  char ch[20];
  while (scanf("%d%d%d", &w, &h, &n) != EOF) {
    W.clear(), H.clear();
    Lw.clear(), Lh.clear();
    W.insert(0), W.insert(w);
    H.insert(0), H.insert(h);
    Lw.insert(w), Lh.insert(h);
    memset(wnum, 0, sizeof wnum);
    memset(hnum, 0, sizeof hnum);
    wnum[w] = 1, hnum[h] = 1;
    int x;
    for (int i = 0; i < n; i++) {
      scanf("%s%d", ch, &x);
      if (ch[0] == 'H') {
        set<int>::iterator ite = H.lower_bound(x);
        if (*ite == x) continue;
        int y = *ite;
        --ite;
        int z = *ite;
        hnum[y - z]--;
        if (!hnum[y - z]) Lh.erase(y - z);
        Lh.insert(y - x);
        Lh.insert(x - z);
        hnum[y - x]++;
        hnum[x - z]++;
        H.insert(x);
      } else {
        set<int>::iterator ite = W.lower_bound(x);
        if (*ite == x) continue;
        int y = *ite;
        --ite;
        int z = *ite;
        wnum[y - z]--;
        if (!wnum[y - z]) Lw.erase(y - z);
        Lw.insert(y - x);
        Lw.insert(x - z);
        wnum[y - x]++;
        wnum[x - z]++;
        W.insert(x);
      }
      int ans = *Lw.rbegin(), res = *Lh.rbegin();
      printf("%I64d\n", (long long)ans * res);
    }
  }
  return 0;
}
