import std.stdio;
import std.conv;
import std.string;
import std.typecons;
import std.algorithm;
import std.array;
import std.range;
import std.math;
import std.regex : regex;
import std.container;
import std.bigint;


void main()
{
  int w, h, n;
  readf("%s %s %s\n", &w, &h, &n);
  auto f = new bool[][](w, h);
  foreach (_; 0..n) {
    int x, y, a;
    readf("%s %s %s\n", &x, &y, &a);
    if (a == 1) {
      foreach (i; 0..x) {
        f[i][] = true;
      }
    } else if (a == 2) {
      foreach (i; x..w) {
        f[i][] = true;
      }
    } else if (a == 3) {
      foreach (i; 0..y) {
        foreach (j; 0..w) {
          f[j][i] = true;
        } 
      }
    } else {
      foreach (i; y..h) {
        foreach (j; 0..w) {
          f[j][i] = true;
        } 
      }
    }
  }

  int res;
  foreach (i; 0..w) {
    foreach (j; 0..h) {
      if (!f[i][j]) res++;
    }
  }
  res.writeln;
}
