#include <bits/stdc++.h>

using namespace std;

typedef complex<int> P;

int compress(vector<int>& x1, vector<int>& x2, int w) {
	vector<int> needX;
	needX.push_back(0); needX.push_back(w);
	for (int i = 0; i < x1.size(); ++i) {
		for (int j = -1; j <= 1; ++j) {
			int x = x1[i]+j;
			if (0 <= x && x < w) needX.push_back(x);
		}
	}
	for (int i = 0; i < x2.size(); ++i) {
		for (int j = -1; j <= 1; ++j) {
			int x = x2[i]+j;
			if (0 <= x && x < w) needX.push_back(x);
		}
	}
	sort(needX.begin(), needX.end());
	needX.erase(unique(needX.begin(), needX.end()), needX.end());

	for (int i = 0; i < x1.size(); ++i) {
		x1[i] = find(needX.begin(), needX.end(), x1[i]) - needX.begin();
	}
	for (int i = 0; i < x2.size(); ++i) {
		x2[i] = find(needX.begin(), needX.end(), x2[i]) - needX.begin();
	}

	return find(needX.begin(), needX.end(), w) - needX.begin();
}

char m[6100][6100];

void paint(int x, int y, int w, int h) {
	stack<P> S; S.push( P(x, y) );
	while ( !S.empty() ) {
		P p = S.top(); S.pop();
		int x = p.real(), y = p.imag();

		if (x < 0 || x >= w || y < 0 || y >= h) continue;
		if (m[y][x]) continue;

		m[y][x] = 1;

		S.push( P(x+1, y) );
		S.push( P(x-1, y) );
		S.push( P(x, y+1) );
		S.push( P(x, y-1) );
	}

}
int main() {
	int W, H;
	while ( cin >> W >> H, W || H ) {
		fill(&m[0][0], &m[0][0]+6100*6100, (char)0);

		int N; cin >> N;
		vector<int> X1(N), Y1(N), X2(N), Y2(N);
		for (int i = 0; i < N; ++i) {
			cin >> X1[i] >> Y1[i] >> X2[i] >> Y2[i]; --X2[i], --Y2[i];
		}
		W = compress(X1, X2, W);
		H = compress(Y1, Y2, H);

		for (int i = 0; i < N; ++i) {
			int x1 = X1[i], y1 = Y1[i], x2 = X2[i], y2 = Y2[i];

			++m[y1][x1];
			--m[y2+1][x1];

			--m[y1][x2+1];
			++m[y2+1][x2+1];
		}

		for (int y = 0; y < H; ++y) {
			for (int x = 0; x <= W; ++x) {
				m[y+1][x] += m[y][x];
			}
		}
		for (int y = 0; y <= H; ++y) {
			for (int x = 0; x < W; ++x) {
				m[y][x+1] += m[y][x];
			}
		}

		int ans = 0;
		for (int y = 0; y < H; ++y) {
			for (int x = 0; x < W; ++x) {
				if (!m[y][x]) {
					paint(x, y, W, H);
					++ans;
				}
			}
		}
		cout << ans << endl;
	}
}