#include <bits/stdc++.h>
using namespace std;
void add(map<int, int> &m, int d) {
  map<int, int>::iterator it = m.find(d);
  if (it == m.end()) {
    m[d] = 1;
  } else
    m[d]++;
}
int main() {
  int w, h, n;
  while (~scanf("%d%d%d", &w, &h, &n)) {
    set<int> xp, yp;
    xp.insert(w), xp.insert(0);
    yp.insert(h), yp.insert(0);
    map<int, int> mx, my;
    mx[w] = 1, my[h] = 1;
    char s[5];
    set<int>::iterator it1, it2;
    for (int i = 0; i < n; i++) {
      int v;
      scanf("%s %d", s, &v);
      if (s[0] == 'H') {
        it1 = yp.lower_bound(v);
        it2 = it1;
        it1--;
        int d = *it2 - *it1;
        add(my, v - *it1);
        add(my, *it2 - v);
        if (--my[d] == 0) my.erase(d);
        yp.insert(v);
      } else {
        it1 = xp.lower_bound(v);
        it2 = it1;
        it1--;
        add(mx, v - *it1);
        add(mx, *it2 - v);
        int d = *it2 - *it1;
        if (--mx[d] == 0) mx.erase(d);
        xp.insert(v);
      }
      printf("%I64d\n", (long long)my.rbegin()->first * mx.rbegin()->first);
    }
  }
  return 0;
}
