#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
const long long MAX = 2000000000;
const double ERROR = 0.0000001;
const long long N = 200000 + 10;
const long long small_N = 5000 + 10;
const long long vsmall_N = 100;
const long long LEN = 31;
int main() {
  int T = 1;
  for (int t = 1; t <= T; t++) {
    long long w, h, n;
    cin >> w >> h >> n;
    set<long long> height_cuts;
    height_cuts.insert(0);
    height_cuts.insert(h);
    set<pair<long long, pair<long long, long long> > > height_interval;
    height_interval.insert(make_pair(h, make_pair(0, h)));
    set<long long> width_cuts;
    width_cuts.insert(0);
    width_cuts.insert(w);
    set<pair<long long, pair<long long, long long> > > width_interval;
    width_interval.insert(make_pair(w, make_pair(0, w)));
    for (long long i = 0; i < n; ++i) {
      char cut_type;
      long long pos;
      cin >> cut_type >> pos;
      if (cut_type == 'H') {
        long long left = *--height_cuts.lower_bound(pos);
        long long right = *height_cuts.upper_bound(pos);
        height_interval.erase(make_pair(right - left, make_pair(left, right)));
        height_interval.insert(make_pair(pos - left, make_pair(left, pos)));
        height_interval.insert(make_pair(right - pos, make_pair(pos, right)));
        height_cuts.insert(pos);
      } else {
        long long left = *--width_cuts.lower_bound(pos);
        long long right = *width_cuts.lower_bound(pos);
        width_interval.erase(make_pair(right - left, make_pair(left, right)));
        width_interval.insert(make_pair(pos - left, make_pair(left, pos)));
        width_interval.insert(make_pair(right - pos, make_pair(pos, right)));
        width_cuts.insert(pos);
      }
      cout << ((*--width_interval.end()).first) *
                  ((*--height_interval.end()).first)
           << "\n";
    }
  }
}
