#include <bits/stdc++.h>
using namespace std;
map<int, int> xdisp, ydisp;
set<int> x, y;
void printmp(map<int, int>& mp) {
  cout << "map:" << endl;
  for (map<int, int>::iterator it = mp.begin(); it != mp.end(); it++)
    cout << it->first << " " << it->second << endl;
  cout << endl;
}
void dec(map<int, int>& mp, int n) {
  mp[n]--;
  if (mp[n] == 0) {
    mp.erase(n);
  }
}
void handle(set<int>& p, map<int, int>& d, int n) {
  set<int>::iterator it = p.lower_bound(n);
  int u = *it;
  int l = *(--it);
  dec(d, u - l);
  d[n - l]++;
  d[u - n]++;
  p.insert(n);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int w, h, n;
  char c;
  int l;
  scanf("%d %d %d", &w, &h, &n);
  x.insert(0), x.insert(w);
  y.insert(0), y.insert(h);
  xdisp[w]++, ydisp[h]++;
  for (int i = 0; i < n; i++) {
    scanf(" %c %d", &c, &l);
    if (c == 'H') {
      handle(y, ydisp, l);
    } else {
      handle(x, xdisp, l);
    }
    cout << (long long)(--xdisp.end())->first * (--ydisp.end())->first << endl;
  }
}
