#include <bits/stdc++.h>
using namespace std;
void add(int x, multiset<int> &A, set<int> &cuts) {
  auto it = cuts.lower_bound(x);
  auto it2 = it;
  it2--;
  int lf = *it2, rt = *it;
  A.erase(A.find(-(rt - lf)));
  A.insert(-(x - lf));
  A.insert(-(rt - x));
  cuts.insert(x);
}
int main() {
  int m, n, k;
  cin >> m >> n >> k;
  multiset<int> H, V;
  set<int> cutSetH, cutSetV;
  cutSetH.insert(0);
  cutSetV.insert(0);
  cutSetH.insert(n);
  cutSetV.insert(m);
  H.insert(-n);
  V.insert(-m);
  for (int i = 0; i < k; ++i) {
    string type;
    int point;
    cin >> type >> point;
    if (type == "H")
      add(point, H, cutSetH);
    else
      add(point, V, cutSetV);
    int maxH = -(*(H.begin()));
    int maxV = -(*(V.begin()));
    cout << 1LL * maxH * maxV << "\n";
  }
}
