#include <bits/stdc++.h>
using namespace std;
bool vis[205][205];
int cnt;
vector<int> ans;
void dfs(int x, int y) {
  if (x % 2 == 0 && y % 2 == 0) cnt++;
  vis[x][y] = 1;
  if (!vis[x + 1][y]) dfs(x + 1, y);
  if (!vis[x][y + 1]) dfs(x, y + 1);
  if (!vis[x - 1][y] && (x - 1 >= 0)) dfs(x - 1, y);
  if (!vis[x][y - 1] && (y - 1 >= 0)) dfs(x, y - 1);
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int w, h, n;
  cin >> w >> h >> n;
  for (int i = 0; i <= w * 2; i++) {
    vis[i][h * 2 - 1] = 1;
  }
  for (int i = 0; i <= h * 2; i++) {
    vis[w * 2 - 1][i] = 1;
  }
  for (int i = 0; i < n; i++) {
    int x0, y0, x1, y1;
    cin >> x0 >> y0 >> x1 >> y1;
    if (x0 == x1) {
      x0 *= 2;
      x0--;
      for (int j = max(y0 * 2 - 1, 0); j <= y1 * 2 - 1; j++) {
        vis[x0][j] = 1;
      }
    } else if (y0 == y1) {
      y0 *= 2;
      y0--;
      for (int j = max(x0 * 2 - 1, 0); j <= x1 * 2 - 1; j++) {
        vis[j][y0] = 1;
      }
    }
  }
  for (int i = 0; i <= w * 2 - 1; i++) {
    for (int j = 0; j <= h * 2 - 1; j++) {
      if (!vis[i][j]) {
        dfs(i, j);
        ans.push_back(cnt);
        cnt = 0;
      }
    }
  }
  sort(ans.begin(), ans.end());
  for (auto i : ans) cout << i << " ";
  return 0;
}
