#include <bits/stdc++.h>
using namespace std;
long long w, h, x, n;
char c;
multiset<long long> ww, hh, dw, dh;
multiset<long long>::iterator it, it1, it2;
int main() {
  cin >> w >> h >> n;
  dw.insert(w);
  dh.insert(h);
  for (int i = 0; i < n; i++) {
    cin >> c >> x;
    if (c == 'V') {
      ww.insert(x);
      it = ww.find(x);
      it1 = it;
      it1++;
      if (ww.size() == 1) {
        dw.clear();
        dw.insert(w - x);
        dw.insert(x);
      } else if (it == ww.begin()) {
        it2 = dw.find(*it1);
        dw.erase(it2);
        dw.insert(*it1 - x);
        dw.insert(x);
      } else if (it1 == ww.end()) {
        it--;
        it2 = dw.find(w - *it);
        dw.erase(it2);
        dw.insert(x - *it);
        dw.insert(w - x);
      } else {
        it--;
        it2 = dw.find(*it1 - *it);
        dw.erase(it2);
        dw.insert(x - *it);
        dw.insert(*it1 - x);
      }
    } else {
      hh.insert(x);
      it = hh.find(x);
      it1 = it;
      it1++;
      if (hh.size() == 1) {
        dh.clear();
        dh.insert(h - x);
        dh.insert(x);
      } else if (it == hh.begin()) {
        it2 = dh.find(*it1);
        dh.erase(it2);
        dh.insert(*it1 - x);
        dh.insert(x);
      } else if (it1 == hh.end()) {
        it--;
        it2 = dh.find(h - *it);
        dh.erase(it2);
        dh.insert(x - *it);
        dh.insert(h - x);
      } else {
        it--;
        it2 = dh.find(*it1 - *it);
        dh.erase(it2);
        dh.insert(x - *it);
        dh.insert(*it1 - x);
      }
    }
    it1 = dw.end();
    it1--;
    it2 = dh.end();
    it2--;
    cout << *it1 * *it2 << endl;
  }
  return 0;
}
