#include <bits/stdc++.h>
using namespace std;
multiset<long long> ww;
multiset<long long> hh;
multiset<long long> maxh;
multiset<long long> maxw;
int main() {
  char s[10];
  long long w, h, n, x;
  while (~scanf("%lld%lld%lld", &w, &h, &n)) {
    multiset<long long>::iterator itL, itR, it, tempit;
    maxh.clear();
    maxw.clear();
    ww.clear();
    hh.clear();
    maxh.insert(h);
    maxw.insert(w);
    hh.insert(0);
    hh.insert(h);
    ww.insert(0);
    ww.insert(w);
    while (n--) {
      scanf("%s%lld", s, &x);
      if (s[0] == 'H') {
        hh.insert(x);
        tempit = hh.lower_bound(x);
        itL = tempit;
        itR = tempit;
        long long L = *(--itL);
        long long R = *(++itR);
        it = maxh.lower_bound(R - L);
        maxh.erase(it);
        maxh.insert(x - L);
        maxh.insert(R - x);
        tempit = maxh.end();
        long long H = *(--tempit);
        tempit = maxw.end();
        long long W = *(--tempit);
        printf("%lld\n", W * H);
      } else {
        ww.insert(x);
        tempit = ww.lower_bound(x);
        itL = tempit;
        itR = tempit;
        long long L = *(--itL);
        long long R = *(++itR);
        it = maxw.lower_bound(R - L);
        maxw.erase(it);
        maxw.insert(x - L);
        maxw.insert(R - x);
        tempit = maxw.end();
        long long H = *(--tempit);
        tempit = maxh.end();
        long long W = *(--tempit);
        printf("%lld\n", W * H);
      }
    }
  }
  return 0;
}
