#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> P;

int vis[3010][3010];

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	int w, h;
	while(cin >> w >> h, w) {
		int n;
		cin >> n;
		int x1[1000], y1[1000], x2[1000], y2[1000];
		map<int, int> xm, ym;
		xm[0] = ym[0] = -1;
		xm[w - 1] = -1;
		ym[h - 1] = -1;
		for(int i = 0; i < n; i++) {
			cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
			x2[i]--, y2[i]--;
			for(int d = -1; d <= 1; d++) {
				if(0 <= x1[i] + d && x1[i] + d < w) xm[x1[i] + d] = -1;
				if(0 <= x2[i] + d && x2[i] + d < w) xm[x2[i] + d] = -1;
				if(0 <= y1[i] + d && y1[i] + d < h) ym[y1[i] + d] = -1;
				if(0 <= y2[i] + d && y2[i] + d < h) ym[y2[i] + d] = -1;
			}
		}

		int xc = 0, yc = 0;
		for(auto v : xm) {
			xm[v.first] = xc++;
		}
		for(auto v : ym) {
			ym[v.first] = yc++;
		}

		memset(vis, 0, sizeof vis);
		for(int i = 0; i < n; i++) {
			x1[i] = xm[x1[i]];
			x2[i] = xm[x2[i]];
			y1[i] = ym[y1[i]];
			y2[i] = ym[y2[i]];
			for(int y = y1[i]; y <= y2[i]; y++) {
				for(int x = x1[i]; x <= x2[i]; x++) {
					vis[y][x] = 1;
				}
			}
		}

		int ans = 0;
		for(int i = 0; i < yc; i++) {
			for(int j = 0; j < xc; j++) {
				if(vis[i][j]) continue;
				ans++;
				vis[i][j] = 1;
				queue<P> q;
				q.push({ j, i });
				int dx[4] = { 1, 0, -1, 0 }, dy[4] = { 0, 1, 0, -1 };
				while(q.size()) {
					int x = q.front().first, y = q.front().second;
					q.pop();
					for(int k = 0; k < 4; k++) {
						int nx = x + dx[k], ny = y + dy[k];
						if(0 <= nx && nx < xc && 0 <= ny && ny < yc && !vis[ny][nx]) {
							vis[ny][nx] = 1;
							q.push({ nx, ny });
						}
					}
				}
			}
		}
		cout << ans << endl;
	}
}