#include <bits/stdc++.h>
using namespace std;
map<long long, int> mph1, mph2, mpw1, mpw2;
map<int, int> cnth, cntw;
int main() {
  long long w, h, maxw, maxh, x, y, z;
  int i, n;
  char ch;
  long long ans = 0;
  map<long long, int>::iterator it1, it2;
  scanf("%lld", &w), scanf("%lld", &h), scanf("%d", &n);
  mph1[h + 1] = 1;
  mph2[-1] = 1;
  mpw1[w + 1] = 1;
  mpw2[-1] = 1;
  getchar();
  maxh = h;
  maxw = w;
  cnth[h] = 1;
  cntw[w] = 1;
  for (i = (0); i < (n); ++i) {
    ch = getchar();
    scanf("%lld", &x);
    if (ch == 'H') {
      mph1[x + 1] = 1;
      mph2[-(x + 1)] = 1;
      it1 = mph1.upper_bound(x + 1);
      it2 = mph2.upper_bound(-(x + 1));
      y = (*it1).first;
      z = (*it2).first;
      cnth[y + z]--;
      if (cnth[y + z] == 0) cnth.erase(y + z);
      cnth[y - x - 1]++;
      cnth[x + z + 1]++;
    } else {
      mpw1[x + 1] = 1;
      mpw2[-(x + 1)] = 1;
      it1 = mpw1.upper_bound(x + 1);
      it2 = mpw2.upper_bound(-(x + 1));
      y = (*it1).first;
      z = (*it2).first;
      cntw[y + z]--;
      if (cntw[y + z] == 0) cntw.erase(y + z);
      cntw[y - x - 1]++;
      cntw[x + z + 1]++;
    }
    ans = ((long long)((cnth.rbegin())->first) *
           (long long)((cntw.rbegin())->first));
    printf("%lld\n", ans);
    getchar();
  }
}
