#include <bits/stdc++.h>
using namespace std;
inline int scan() {
  char c = getchar();
  int x = 0;
  while (c < '0' || c > '9') {
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 1) + (x << 3) + c - '0';
    c = getchar();
  }
  return x;
}
set<pair<int, pair<int, int> > > horizontal, vertical;
set<int> hcut, vcut;
int main() {
  int w = scan(), h = scan(), n = scan();
  hcut.insert(0);
  vcut.insert(0);
  hcut.insert(h);
  vcut.insert(w);
  horizontal.insert(make_pair(h, make_pair(0, h)));
  vertical.insert(make_pair(w, make_pair(0, w)));
  for (int i = 0; i < n; ++i) {
    char type;
    int x;
    cin >> type;
    x = scan();
    if (type == 'V') {
      vcut.insert(x);
      set<int>::iterator it = vcut.lower_bound(x);
      set<int>::iterator it2 = it;
      it++;
      it2--;
      vertical.erase(make_pair((*it) - (*it2), make_pair(*it2, *it)));
      vertical.insert(make_pair((*it) - x, make_pair(x, *it)));
      vertical.insert(make_pair(x - (*it2), make_pair(*it2, x)));
    } else {
      hcut.insert(x);
      set<int>::iterator it = hcut.lower_bound(x);
      set<int>::iterator it2 = it;
      it++;
      it2--;
      horizontal.erase(make_pair((*it) - (*it2), make_pair(*it2, *it)));
      horizontal.insert(make_pair((*it) - x, make_pair(x, *it)));
      horizontal.insert(make_pair(x - (*it2), make_pair(*it2, x)));
    }
    long long hori = horizontal.rbegin()->first;
    long long verti = vertical.rbegin()->first;
    printf("%I64d\n", hori * verti);
  }
}
