#include <bits/stdc++.h>
using namespace std;
struct FT {
  vector<int> bit;
  int maxval;
  FT() {}
  FT(int n) {
    maxval = n + 1;
    bit = vector<int>(n + 6);
  }
  void update(int pos, int val) { upd(pos + 1, val); }
  void upd(int pos, int val) {
    while (pos <= maxval) {
      bit[pos] += val;
      pos += (pos & -pos);
    }
  }
  int query(int pos) { return qry(pos + 1); }
  int qry(int pos) {
    int sum = 0;
    while (pos) {
      sum += bit[pos];
      pos -= (pos & -pos);
    }
    return sum;
  }
  int FindUp(int pos) {
    int lo = pos, hi = maxval - 1;
    int sum = query(pos);
    while (hi - lo > 1) {
      int med = (lo + hi) / 2;
      if (query(med) == sum)
        lo = med;
      else
        hi = med;
    }
    return hi;
  }
  int FindDown(int pos) {
    int lo = 0, hi = pos;
    int sum = query(pos);
    if (query(lo) == sum) return lo;
    while (hi - lo > 1) {
      int med = (lo + hi) / 2;
      if (query(med) == sum)
        hi = med;
      else
        lo = med;
    }
    return hi;
  }
};
void ERASE(multiset<int> &SET, int x) {
  multiset<int>::iterator it = SET.find(x);
  if (SET.end() != it) SET.erase(it);
}
int main() {
  ios_base ::sync_with_stdio(0);
  int n, m, Q;
  while (cin >> n >> m >> Q) {
    vector<FT> ft(2);
    ft[0] = FT(n);
    ft[1] = FT(m);
    ft[0].update(0, 1), ft[0].update(n, 1);
    ft[1].update(0, 1), ft[1].update(m, 1);
    multiset<int> SET[2];
    SET[0].insert(n);
    SET[1].insert(m);
    for (int i = 0; i < Q; ++i) {
      char c;
      int pos;
      cin >> c >> pos;
      if (c == 'V') {
        int a = ft[0].FindDown(pos);
        int b = ft[0].FindUp(pos);
        ERASE(SET[0], b - a);
        SET[0].insert(pos - a);
        SET[0].insert(b - pos);
        ft[0].update(pos, 1);
      } else {
        int a = ft[1].FindDown(pos);
        int b = ft[1].FindUp(pos);
        ERASE(SET[1], b - a);
        SET[1].insert(pos - a);
        SET[1].insert(b - pos);
        ft[1].update(pos, 1);
      }
      long long ans = *(--SET[0].end());
      ans *= *(--SET[1].end());
      cout << ans << '\n';
    }
  }
}
