#include <bits/stdc++.h>
typedef struct {
  int x1, y1, x2, y2;
} chocolat;
typedef struct {
  int a1, b1, a2, b2;
} dots;
chocolat a[101];
int b[101];
dots c[101];
int k, i, j, W, H, a1, b1, a2, b2, n, p;
bool t;
using namespace std;
int main() {
  cin >> W >> H >> n;
  a[0].x1 = 0;
  a[0].y1 = 0;
  a[0].x2 = W;
  a[0].y2 = H;
  k = 0;
  for (i = 1; i <= n; i++) {
    cin >> c[i].a1 >> c[i].b1 >> c[i].a2 >> c[i].b2;
    if (c[i].a1 > c[i].a2) swap(c[i].a2, c[i].a1);
    if (c[i].b1 > c[i].b2) swap(c[i].b2, c[i].b1);
  }
  for (i = 1; i <= n; i++) {
    t = true;
    for (j = 0; j <= n && t; j++)
      for (p = 1; p <= n; p++)
        if (c[p].a1 != -1)
          if ((c[p].b1 == c[p].b2 && a[j].y1 < c[p].b2 && c[p].b2 < a[j].y2 &&
               a[j].x1 == c[p].a1 && a[j].x2 == c[p].a2) ||
              (a[j].y2 == c[p].b2 && a[j].y1 == c[p].b1 && c[p].a1 == c[p].a2 &&
               a[j].x1 < c[p].a1 && c[p].a1 < a[j].x2)) {
            k++;
            a[k].x1 = c[p].a1;
            a[k].y1 = c[p].b1;
            a[k].x2 = a[j].x2;
            a[k].y2 = a[j].y2;
            a[j].x2 = c[p].a2;
            a[j].y2 = c[p].b2;
            c[p].a1 = -1;
            t = false;
            break;
          }
  }
  for (i = 0; i <= k; i++) b[i] = (a[i].x2 - a[i].x1) * (a[i].y2 - a[i].y1);
  sort(b, b + k + 1);
  for (i = 0; i <= k; i++) cout << b[i] << " ";
  return 0;
}
