#include <bits/stdc++.h>
using namespace std;
set<pair<int, int> > st[105][105];
bool vis[105][105];
vector<int> ve;
int w, h, n, sum;
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
bool check(int x, int y) { return (x >= 0 && x < w && y >= 0 && y < h); }
void dfs(int x, int y) {
  vis[x][y] = true;
  sum++;
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i];
    int ny = y + dy[i];
    if (st[x][y].count(make_pair(nx, ny)) == 0) {
      if (check(nx, ny) && !vis[nx][ny]) {
        dfs(nx, ny);
      }
    }
  }
}
int main() {
  cin >> w >> h >> n;
  while (n--) {
    int x, y, x2, y2;
    cin >> x >> y >> x2 >> y2;
    if (x == x2) {
      for (int i = y; i < y2; i++) {
        st[x - 1][i].insert(make_pair(x, i));
        st[x][i].insert(make_pair(x - 1, i));
      }
    } else {
      for (int i = x; i < x2; i++) {
        st[i][y - 1].insert(make_pair(i, y));
        st[i][y].insert(make_pair(i, y - 1));
      }
    }
  }
  for (int i = 0; i < w; i++) {
    for (int j = 0; j < h; j++) {
      if (!vis[i][j]) {
        sum = 0;
        dfs(i, j);
        ve.push_back(sum);
      }
    }
  }
  sort(ve.begin(), ve.end());
  for (int i = 0; i < ve.size(); i++) cout << ve[i] << ' ';
  return 0;
}
