#include <bits/stdc++.h>
using namespace std;
struct node {
  int x1, y1, x2, y2;
} num[1000], pro[1000];
int ans[1000];
bool flag;
int main() {
  int w, h, n, i, j, k, l;
  int a, b, c, d;
  while (cin >> w >> h >> n) {
    num[0].x1 = 0;
    num[0].y1 = h;
    num[0].x2 = w;
    num[0].y2 = 0;
    for (i = 0; i < n; i++)
      cin >> pro[i].x1 >> pro[i].y1 >> pro[i].x2 >> pro[i].y2;
    j = 1;
    for (l = 0; l < n; l++)
      for (i = 0; i < n; i++) {
        flag = false;
        for (k = 0; k < j; k++) {
          if (pro[i].x1 == pro[i].x2) {
            if (num[k].x1 < pro[i].x1 && pro[i].x1 < num[k].x2 &&
                num[k].y2 == pro[i].y1 && pro[i].y2 == num[k].y1) {
              num[j].x1 = pro[i].x2;
              num[j].y1 = pro[i].y2;
              num[j].x2 = num[k].x2;
              num[j++].y2 = num[k].y2;
              num[k].x2 = pro[i].x1;
              num[k].y2 = pro[i].y1;
              flag = true;
              break;
            }
          } else {
            if (pro[i].x1 == num[k].x1 && num[k].x2 == pro[i].x2 &&
                num[k].y2 < pro[i].y1 && pro[i].y1 < num[k].y1) {
              num[j].x1 = pro[i].x1;
              num[j].y1 = pro[i].y1;
              num[j].x2 = num[k].x2;
              num[j++].y2 = num[k].y2;
              num[k].x2 = pro[i].x2;
              num[k].y2 = pro[i].y2;
              flag = true;
              break;
            }
          }
        }
        if (flag) break;
      }
    for (k = 0; k < j; k++)
      ans[k] = abs(num[k].x1 - num[k].x2) * abs(num[k].y1 - num[k].y2);
    sort(ans, ans + j);
    cout << ans[0];
    for (i = 1; i < j; i++) cout << " " << ans[i];
    cout << endl;
  }
  return 0;
}
