#include <bits/stdc++.h>
using namespace std;
struct edje {
  int from, to;
  long long w;
  edje(int from, int to, long long w) : from(from), to(to), w(w) {}
  bool operator<(const edje& e) const { return w < e.w; }
};
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
const long long oo = (long long)((1e18) + 1);
const double eps = 1e-9;
const long long mod7 = 1000000007;
long long mod(long long a, long long b) { return (a % b + b) % b; }
long long strTonumModa(string s, long long athemod) {
  long long ans = 0;
  for (long long i = 0; i < ((long long)s.size()); i++) {
    ans = (ans * 10 + s[i] - '0') % athemod;
  }
  return ans;
}
long long mod_exp(long long base, long long p, long long MOD) {
  if (p == 0) return 1;
  if (p == 1) return base;
  long long ret = mod_exp(base, p / 2, MOD) % MOD;
  ret = (ret * ret) % MOD;
  if (p % 2 == 1) ret = (ret * base) % MOD;
  return ret;
}
string getstr(long long x) {
  stringstream ss;
  ss << x;
  string str = ss.str();
  return str;
}
bool comp(pair<long long, pair<long long, long long> > a,
          pair<long long, pair<long long, long long> > b) {
  return a.first > b.first;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long w, h;
  int n;
  cin >> w >> h >> n;
  set<long long> Xintervals, Yintervals;
  Xintervals.insert(0);
  Xintervals.insert(w);
  Yintervals.insert(0);
  Yintervals.insert(h);
  multiset<long long> Xdistances, Ydistances;
  Xdistances.insert(w);
  Ydistances.insert(h);
  char in;
  long long cur;
  for (int i = 0; i < (int)(n); ++i) {
    cin >> in >> cur;
    if (in == 'V') {
      set<long long>::iterator r = Xintervals.lower_bound(cur);
      set<long long>::iterator l = r;
      l--;
      long long ml = *l, mr = *r;
      Xdistances.erase(Xdistances.find(mr - ml));
      Xdistances.insert(mr - cur);
      Xdistances.insert(cur - ml);
      Xintervals.insert(cur);
    } else {
      set<long long>::iterator r = Yintervals.lower_bound(cur);
      set<long long>::iterator l = r;
      l--;
      long long ml = *l, mr = *r;
      Ydistances.erase(Ydistances.find(mr - ml));
      Ydistances.insert(mr - cur);
      Ydistances.insert(cur - ml);
      Yintervals.insert(cur);
    }
    long long W = (long long)*(--Xdistances.end());
    long long H = (long long)*(--Ydistances.end());
    cout << W * H << endl;
  }
  return 0;
}
