#include <bits/stdc++.h>
using namespace std;
multiset<long long> horizontal;
multiset<long long>::iterator it2;
multiset<long long> vertical;
set<long long> H;
set<long long> V;
set<long long>::iterator it;
map<long long, long long> mapH;
map<long long, long long> mapV;
int main() {
  long long w, h, Q;
  scanf("%lld%lld%lld", &w, &h, &Q);
  mapV[0] = w;
  mapH[0] = h;
  H.insert(0);
  V.insert(0);
  horizontal.insert(h);
  vertical.insert(w);
  long long ans = 0;
  while (Q--) {
    char ch;
    long long num;
    cin >> ch;
    scanf("%lld", &num);
    if (ch == 'H') {
      it = H.lower_bound(num);
      it--;
      H.insert(num);
      long long low = *it;
      long long up = mapH[*it];
      it2 = horizontal.find(up - low);
      horizontal.erase(it2);
      horizontal.insert(num - low);
      horizontal.insert(up - num);
      mapH[low] = num;
      mapH[num] = up;
    } else if (ch == 'V') {
      it = V.lower_bound(num);
      it--;
      V.insert(num);
      long long low = *it;
      long long up = mapV[*it];
      it2 = vertical.find(up - low);
      vertical.erase(it2);
      vertical.insert(num - low);
      vertical.insert(up - num);
      mapV[low] = num;
      mapV[num] = up;
    }
    it2 = horizontal.end();
    it2--;
    ans = *it2;
    it2 = vertical.end();
    it2--;
    ans *= *it2;
    printf("%lld\n", ans);
  }
  return 0;
}
