#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int MaxN = int(2e5) + 256;
const int MOD = int(1e9) + 7;
template <typename T>
inline T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
inline bool Palindrome(const string& s) {
  return equal(s.begin(), s.end(), s.rbegin());
}
int main() {
  int w, h, k;
  scanf("%d%d%d\n", &w, &h, &k);
  multiset<int> W = {w}, H = {h};
  set<int> ws = {0, w}, hs = {0, h};
  while (k--) {
    char c;
    int d;
    scanf("%c%d\n", &c, &d);
    if (c != 'H') {
      auto it = ws.upper_bound(d);
      auto jt = it;
      --jt;
      W.erase(W.find(*it - *jt));
      W.insert(d - *jt);
      W.insert(*it - d);
      ws.insert(d);
    } else {
      auto it = hs.upper_bound(d);
      auto jt = it;
      --jt;
      H.erase(H.find(*it - *jt));
      H.insert(d - *jt);
      H.insert(*it - d);
      hs.insert(d);
    }
    printf("%lld\n", 1ll * *W.rbegin() * *H.rbegin());
  }
  return 0;
}
