#include <bits/stdc++.h>
using namespace std;
int main() {
  set<long long> a1, a2;
  set<long long>::iterator it1, it2, it3;
  priority_queue<pair<long long, long long> > pq1, pq2;
  char c[1];
  long long w, h, n, j, i, k, l, x1, y1;
  cin >> w >> h >> n;
  pq1.push(pair<long long, long long>(w, 0));
  pq2.push(pair<long long, long long>(h, 0));
  a1.insert(w);
  a1.insert(0);
  a2.insert(h);
  a2.insert(0);
  y1 = h;
  x1 = w;
  for (i = 1; i <= n; i++) {
    cin >> c[0];
    scanf("%lld", &j);
    if (c[0] == 'V') {
      a1.insert(j);
      while (1) {
        pair<long long, long long> front = pq1.top();
        pq1.pop();
        it1 = a1.lower_bound(front.second + 1);
        it2 = a1.lower_bound(front.first + front.second);
        if (it1 == it2) {
          x1 = front.first;
          pq1.push(front);
          break;
        } else {
          pq1.push(
              pair<long long, long long>(*it1 - front.second, front.second));
          it3 = it1;
          it3++;
          while (it1 != it2) {
            pq1.push(pair<long long, long long>(*it3 - *it1, *it1));
            it3++;
            it1++;
          }
        }
      }
    } else {
      a2.insert(j);
      while (1) {
        pair<long long, long long> front = pq2.top();
        pq2.pop();
        it1 = a2.lower_bound(front.second + 1);
        it2 = a2.lower_bound(front.first + front.second);
        if (it1 == it2) {
          y1 = front.first;
          pq2.push(front);
          break;
        } else {
          pq2.push(
              pair<long long, long long>(*it1 - front.second, front.second));
          it3 = it1;
          it3++;
          while (it1 != it2) {
            pq2.push(pair<long long, long long>(*it3 - *it1, *it1));
            it3++;
            it1++;
          }
        }
      }
    }
    printf("%lld\n", x1 * y1);
  }
  return 0;
}
