#include <bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, less<int> > cH, kH, cV, kV;
set<int> pH, pV, nH, nV;
int w, h, n;
char op;
int rs;
int main() {
  scanf("%d%d%d", &w, &h, &n);
  cH.push(w);
  cV.push(h);
  pH.insert(0);
  pV.insert(0);
  pH.insert(w);
  pV.insert(h);
  nH.insert(0);
  nV.insert(0);
  nH.insert(-w);
  nV.insert(-h);
  while (n--) {
    scanf("%c%c%d", &op, &op, &rs);
    if (op == 'V') {
      set<int>::iterator kp = pH.lower_bound(rs);
      set<int>::iterator sp = nH.lower_bound(-rs);
      kH.push(*kp + *sp);
      cH.push(*kp - rs);
      cH.push(rs + *sp);
      pH.insert(rs);
      nH.insert(-rs);
      while (!kH.empty() && kH.top() == cH.top()) {
        cH.pop();
        kH.pop();
      }
      printf("%I64d\n", (long long)cH.top() * (long long)cV.top());
    } else {
      set<int>::iterator kp = pV.lower_bound(rs);
      set<int>::iterator sp = nV.lower_bound(-rs);
      kV.push(*kp + *sp);
      cV.push(*kp - rs);
      cV.push(rs + *sp);
      pV.insert(rs);
      nV.insert(-rs);
      while (!kV.empty() && kV.top() == cV.top()) {
        cV.pop();
        kV.pop();
      }
      printf("%I64d\n", (long long)cH.top() * (long long)cV.top());
    }
  }
  return 0;
}
