#include <bits/stdc++.h>
inline int scan() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
inline void Out(int a) {
  if (a < 0) {
    putchar('-');
    a = -a;
  }
  if (a >= 10) Out(a / 10);
  putchar(a % 10 + '0');
}
using namespace std;
int wmm[200005];
int hmm[200005];
int main() {
  int w, h, n;
  cin >> w >> h >> n;
  set<int> w1;
  set<int> h1;
  set<int> wm;
  wm.insert(w);
  wmm[w]++;
  set<int> hm;
  hm.insert(h);
  hmm[h]++;
  w1.insert(w);
  w1.insert(0);
  h1.insert(h);
  h1.insert(0);
  while (n--) {
    char ch;
    int a;
    cin >> ch >> a;
    if (ch == 'V') {
      set<int>::iterator it;
      it = w1.lower_bound(a);
      if (*it == a) continue;
      int maxs = *it;
      *it--;
      int mins = *it;
      wmm[maxs - mins]--;
      if (wmm[maxs - mins] == 0) wm.erase(maxs - mins);
      wmm[maxs - a]++;
      wm.insert(maxs - a);
      wmm[a - mins]++;
      wm.insert(a - mins);
      w1.insert(a);
    } else {
      set<int>::iterator it;
      it = h1.lower_bound(a);
      if (*it == a) continue;
      int maxs = *it;
      *it--;
      int mins = *it;
      hmm[maxs - mins]--;
      if (hmm[maxs - mins] == 0) hm.erase(maxs - mins);
      hmm[maxs - a]++;
      hm.insert(maxs - a);
      hmm[a - mins]++;
      hm.insert(a - mins);
      h1.insert(a);
    }
    set<int>::iterator it1 = wm.end();
    *it1--;
    long long Max1 = *it1;
    set<int>::iterator it2 = hm.end();
    *it2--;
    long long Max2 = *it2;
    long long ans = Max1 * Max2;
    cout << ans << endl;
  }
  return 0;
}
