#include <bits/stdc++.h>
long long mpow(long long a, long long n, long long mod) {
  long long ret = 1;
  long long b = a;
  while (n) {
    if (n & 1) ret = (ret * b) % mod;
    b = (b * b) % mod;
    n >>= 1;
  }
  return (long long)ret;
}
using namespace std;
using namespace std;
set<int> hor, ver;
set<int>::iterator it, it1, it2;
multiset<int> greath, greatw;
multiset<int>::iterator mit, mit1, mit2;
void solve() {
  int w, h, n;
  cin >> w >> h >> n;
  hor.insert(0);
  hor.insert(h);
  ver.insert(0);
  ver.insert(w);
  greath.insert(h);
  greatw.insert(w);
  while (n--) {
    char x;
    int val;
    cin >> x;
    scanf("%d", &val);
    if (x == 'H') {
      hor.insert(val);
      it = hor.lower_bound(val);
      it1 = it;
      it2 = it;
      it1--;
      it2++;
      int val1 = *(it2) - *(it1);
      mit = greath.lower_bound(val1);
      greath.erase(mit);
      greath.insert(val - *(it1));
      greath.insert(*(it2)-val);
    }
    if (x == 'V') {
      ver.insert(val);
      it = ver.lower_bound(val);
      it1 = it;
      it2 = it;
      it1--;
      it2++;
      int val1 = *(it2) - *(it1);
      mit = greatw.lower_bound(val1);
      greatw.erase(mit);
      greatw.insert(val - *(it1));
      greatw.insert(*(it2)-val);
    }
    mit = greatw.end();
    it = greath.end();
    mit--;
    it--;
    long long X = *(it);
    long long Y = *(mit);
    printf("%lld\n", X * Y);
  }
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
