#include <bits/stdc++.h>
using namespace std;
int const N = 2e5 + 123;
int n, m, maxi, mini, ans, cnt, k, cntH[N], cntV[N];
vector<int> a, b;
string s1, s2;
set<int> mx, my, hor, ver;
set<int>::iterator itL, itR, itMx, itMy;
void goH(int v) {
  itR = hor.upper_bound(v);
  itL = itR;
  --itL;
  int er = (*itR) - (*itL);
  int ins1 = v - (*itL);
  int ins2 = (*itR) - v;
  --cntH[er];
  if (cntH[er] == 0) my.erase(er);
  my.insert(ins1);
  ++cntH[ins1];
  my.insert(ins2);
  ++cntH[ins2];
  hor.insert(v);
}
void goV(int v) {
  itR = ver.upper_bound(v);
  itL = itR;
  --itL;
  int er = (*itR) - (*itL);
  int ins1 = v - (*itL);
  int ins2 = (*itR) - v;
  --cntV[er];
  if (cntV[er] == 0) mx.erase(er);
  ++cntV[ins1];
  mx.insert(ins1);
  ++cntV[ins2];
  mx.insert(ins2);
  ver.insert(v);
}
int main() {
  int w, h, n;
  scanf("%d%d%d", &w, &h, &n);
  mx.insert(w);
  my.insert(h);
  hor.insert(0);
  hor.insert(h);
  ver.insert(0);
  ver.insert(w);
  cntH[h] = 1;
  cntV[w] = 1;
  for (int i = 0; i < n; ++i) {
    getchar();
    char t;
    t = getchar();
    int v;
    scanf("%d", &v);
    if (t == 'H') {
      goH(v);
    } else {
      goV(v);
    }
    itMx = mx.end();
    --itMx;
    itMy = my.end();
    --itMy;
    int maxiX = (*itMx);
    int maxiY = (*itMy);
    if (i) printf("\n");
    printf("%I64d", maxiX * 1LL * maxiY);
  }
  return 0;
}
