#include <bits/stdc++.h>
using namespace std;
struct comp {
  bool operator()(const long long int& lhs, const long long int& rhs) const {
    return rhs < lhs;
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long int t = 1;
  while (t--) {
    long long int w, h, n;
    cin >> w >> h >> n;
    set<long long int> we;
    set<long long int> hi;
    we.insert(0);
    we.insert(w);
    hi.insert(0);
    hi.insert(h);
    long long int a = w, b = h;
    map<long long int, long long int> ca;
    map<long long int, long long int> cb;
    ca[w]++;
    cb[h]++;
    set<long long int, comp> pqa;
    pqa.insert(w);
    set<long long int, comp> pqb;
    pqb.insert(h);
    while (n--) {
      char c;
      cin >> c;
      if (c == 'H') {
        long long int o;
        cin >> o;
        auto pos = hi.lower_bound(o);
        pos--;
        auto pos1 = pos;
        pos++;
        cb[*pos - *pos1]--;
        if (cb[*pos - *pos1] == 0) pqb.erase(*pos - *pos1);
        pqb.insert(*pos - o);
        cb[*pos - o]++;
        pqb.insert(o - *pos1);
        cb[o - *pos1]++;
        hi.insert(o);
        b = *(pqb.begin());
      } else {
        long long int o;
        cin >> o;
        auto pos = we.lower_bound(o);
        pos--;
        auto pos1 = pos;
        pos++;
        ca[*pos - *pos1]--;
        if (ca[*pos - *pos1] == 0) pqa.erase(*pos - *pos1);
        pqa.insert(*pos - o);
        ca[*pos - o]++;
        pqa.insert(o - *pos1);
        ca[o - *pos1]++;
        we.insert(o);
        a = *(pqa.begin());
      }
      cout << a * b << endl;
    }
  }
}
