#include <bits/stdc++.h>
using namespace std;
const bool distribute = true;
const int tests = 1;
void solve(istream *in) {
  int w, h, n;
  *in >> w >> h >> n;
  multiset<long long> valuesH, valuesV;
  set<long long> cutsH, cutsV;
  cutsH.insert(0);
  cutsV.insert(0);
  cutsH.insert(w);
  cutsV.insert(h);
  valuesH.insert(w);
  valuesV.insert(h);
  std::set<long long>::iterator it, it2;
  for (int i = 0; i < n; i++) {
    char c;
    long long pos;
    *in >> c >> pos;
    if (c == 'V') {
      it = cutsH.insert(pos).first;
      it--;
      long long l = *it;
      it++;
      it++;
      long long r = *it;
      it = valuesH.find(r - l);
      it2 = valuesH.find(r - l);
      it2++;
      valuesH.erase(it, it2);
      valuesH.insert(pos - l);
      valuesH.insert(r - pos);
    } else {
      it = cutsV.insert(pos).first;
      it--;
      long long l = *it;
      it++;
      it++;
      long long r = *it;
      it = valuesV.find(r - l);
      it2 = valuesV.find(r - l);
      it2++;
      valuesV.erase(it, it2);
      valuesV.insert(pos - l);
      valuesV.insert(r - pos);
    }
    cout << ((*valuesH.rbegin()) * (*valuesV.rbegin())) << endl;
  }
}
int main() {
  istream *in;
  in = &cin;
  if (!distribute) in = new ifstream("in.txt");
  for (int i = 0; i < (distribute ? 1 : tests); i++) solve(in);
  return 0;
}
