#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN = 2e3+5;
int n, m, k, a[maxN][maxN], pref[maxN][maxN], hieu_hang[maxN][maxN], hieu_cot[maxN][maxN], pref_hang[maxN][maxN], pref_cot[maxN][maxN];
void solve()
{
}
int32_t main()
{
freopen("MAXSQR.INP", "r", stdin);
freopen("MAXSQR.OUT", "w", stdout);
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>m>>k;
for(int i=1; i<=k; i+=1)
{
int lx, rx, ly, ry;
cin>>lx>>rx>>ly>>ry;
pref[lx][rx]++;
pref[lx][ry+1]--;
pref[ly+1][rx]--;
pref[ly+1][ry+1]++;
}
for(int i=1; i<=n; i+=1)
{
for(int j=1; j<=m; j+=1) pref[i][j] = pref[i-1][j] + pref[i][j-1] - pref[i-1][j-1] + pref[i][j];
}
// for(int i=1; i<=n; i+=1)
// {
// for(int j=1; j<=m; j+=1) cout<<pref[i][j]<<" "; cout<<'\n';
// }
for(int i=1; i<=n; i+=1)
{
for(int j=1; j<=m; j+=1) hieu_hang[i][j] = pref[i][j] - pref[i][j-1];
}
for(int j=1; j<=m; j+=1)
{
for(int i=1; i<=n; i+=1) hieu_cot[i][j] = pref[i][j] - pref[i-1][j];
}
for(int i=1; i<=n; i+=1)
{
for(int j=1; j<=m; j+=1)
{
if(hieu_hang[i][j]) hieu_hang[i][j] = 1;
}
}
for(int j=1; j<=m; j+=1)
{
for(int i=1; i<=n; i+=1)
{
if(hieu_cot[i][j]) hieu_cot[i][j] = 1;
}
}
for(int i=1; i<=n; i+=1)
{
for(int j=1; j<=m; j+=1) pref_hang[i][j] = pref_hang[i-1][j] + pref_hang[i][j-1] - pref_hang[i-1][j-1] + hieu_hang[i][j];
}
for(int i=1; i<=n; i+=1)
{
for(int j=1; j<=m; j+=1) pref_cot[i][j] = pref_cot[i-1][j] + pref_cot[i][j-1] - pref_cot[i-1][j-1] + hieu_cot[i][j];
}
// cout<<"\n\n\n";
// for(int i=1; i<=n; i+=1)
// {
// for(int j=1; j<=m; j+=1) cout<<hieu_cot[i][j]<<" "; cout<<'\n';
// }
// cout<<"\n\n\n";
// for(int i=1; i<=n; i+=1)
// {
// for(int j=1; j<=m; j+=1) cout<<hieu_hang[i][j]<<" "; cout<<'\n';
// }
int l = 1, r = min(n, m), ans = 0;
while(r-l>=0)
{
int mid = (l+r)>>1;
bool check = 0;
for(int i=1; i<=n; i+=1)
{
if(check) break;
for(int j=1; j<=m; j+=1)
{
int mid1 = mid-1;
int j1 = j+1, i1 = i+1;
if(i+mid1 > n || j+mid1>m) continue;
int tmp1 = pref_hang[i+mid1][j+mid1] + pref_hang[i-1][j1-1] - pref_hang[i-1][j+mid1] - pref_hang[i+mid1][j1-1];
int tmp2 = pref_cot[i+mid1][j+mid1] + pref_cot[i1-1][j-1] - pref_cot[i1-1][j+mid1] - pref_cot[i+mid1][j-1];
if(tmp1 == tmp2 && tmp1 == 0)
{
// cout<<mid<<" "<<i<<" "<<j<<'\n';
check = 1;
break;
}
}
}
if(check || mid <= 1) l = mid+1, ans = mid;
else r = mid-1;
}
cout<<ans<<'\n';
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOID0gMmUzKzU7CgppbnQgbiwgbSwgaywgYVttYXhOXVttYXhOXSwgcHJlZlttYXhOXVttYXhOXSwgaGlldV9oYW5nW21heE5dW21heE5dLCBoaWV1X2NvdFttYXhOXVttYXhOXSwgcHJlZl9oYW5nW21heE5dW21heE5dLCBwcmVmX2NvdFttYXhOXVttYXhOXTsKCnZvaWQgc29sdmUoKQp7CgkKfQoKaW50MzJfdCBtYWluKCkKewoJZnJlb3BlbigiTUFYU1FSLklOUCIsICJyIiwgc3RkaW4pOwoJZnJlb3BlbigiTUFYU1FSLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CgljaW4+Pm4+Pm0+Pms7Cglmb3IoaW50IGk9MTsgaTw9azsgaSs9MSkKCXsKCQlpbnQgbHgsIHJ4LCBseSwgcnk7IAoJCWNpbj4+bHg+PnJ4Pj5seT4+cnk7CgkJcHJlZltseF1bcnhdKys7CgkJcHJlZltseF1bcnkrMV0tLTsKCQlwcmVmW2x5KzFdW3J4XS0tOwoJCXByZWZbbHkrMV1bcnkrMV0rKzsKCX0KCWZvcihpbnQgaT0xOyBpPD1uOyBpKz0xKQoJewoJCWZvcihpbnQgaj0xOyBqPD1tOyBqKz0xKSBwcmVmW2ldW2pdID0gcHJlZltpLTFdW2pdICsgcHJlZltpXVtqLTFdIC0gcHJlZltpLTFdW2otMV0gKyBwcmVmW2ldW2pdOwoJfQoJLy8gZm9yKGludCBpPTE7IGk8PW47IGkrPTEpCgkvLyB7CgkvLyAJZm9yKGludCBqPTE7IGo8PW07IGorPTEpIGNvdXQ8PHByZWZbaV1bal08PCIgIjsgY291dDw8J1xuJzsKCS8vIH0KCWZvcihpbnQgaT0xOyBpPD1uOyBpKz0xKQoJewoJCWZvcihpbnQgaj0xOyBqPD1tOyBqKz0xKSBoaWV1X2hhbmdbaV1bal0gPSBwcmVmW2ldW2pdIC0gcHJlZltpXVtqLTFdOwoJfQoJZm9yKGludCBqPTE7IGo8PW07IGorPTEpCgl7CgkJZm9yKGludCBpPTE7IGk8PW47IGkrPTEpIGhpZXVfY290W2ldW2pdID0gcHJlZltpXVtqXSAtIHByZWZbaS0xXVtqXTsKCX0KCWZvcihpbnQgaT0xOyBpPD1uOyBpKz0xKQoJewoJCWZvcihpbnQgaj0xOyBqPD1tOyBqKz0xKQoJCXsKCQkJaWYoaGlldV9oYW5nW2ldW2pdKSBoaWV1X2hhbmdbaV1bal0gPSAxOwoJCX0KCX0KCWZvcihpbnQgaj0xOyBqPD1tOyBqKz0xKQoJewoJCWZvcihpbnQgaT0xOyBpPD1uOyBpKz0xKQoJCXsKCQkJaWYoaGlldV9jb3RbaV1bal0pIGhpZXVfY290W2ldW2pdID0gMTsKCQl9Cgl9Cglmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkKCXsKCQlmb3IoaW50IGo9MTsgajw9bTsgais9MSkgcHJlZl9oYW5nW2ldW2pdID0gcHJlZl9oYW5nW2ktMV1bal0gKyBwcmVmX2hhbmdbaV1bai0xXSAtIHByZWZfaGFuZ1tpLTFdW2otMV0gKyBoaWV1X2hhbmdbaV1bal07Cgl9Cglmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkKCXsKCQlmb3IoaW50IGo9MTsgajw9bTsgais9MSkgcHJlZl9jb3RbaV1bal0gPSBwcmVmX2NvdFtpLTFdW2pdICsgcHJlZl9jb3RbaV1bai0xXSAtIHByZWZfY290W2ktMV1bai0xXSArIGhpZXVfY290W2ldW2pdOwoJfQoJLy8gY291dDw8IlxuXG5cbiI7CgkvLyBmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkKCS8vIHsKCS8vIAlmb3IoaW50IGo9MTsgajw9bTsgais9MSkgY291dDw8aGlldV9jb3RbaV1bal08PCIgIjsgY291dDw8J1xuJzsKCS8vIH0KCS8vIGNvdXQ8PCJcblxuXG4iOwoJLy8gZm9yKGludCBpPTE7IGk8PW47IGkrPTEpCgkvLyB7CgkvLyAJZm9yKGludCBqPTE7IGo8PW07IGorPTEpIGNvdXQ8PGhpZXVfaGFuZ1tpXVtqXTw8IiAiOyBjb3V0PDwnXG4nOwoJLy8gfQoJaW50IGwgPSAxLCByID0gbWluKG4sIG0pLCBhbnMgPSAwOwoJd2hpbGUoci1sPj0wKQoJewoJCWludCBtaWQgPSAobCtyKT4+MTsKCQlib29sIGNoZWNrID0gMDsKCQlmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkKCQl7CgkJCWlmKGNoZWNrKSBicmVhazsKCQkJZm9yKGludCBqPTE7IGo8PW07IGorPTEpCgkJCXsKCQkJCWludCBtaWQxID0gbWlkLTE7CgkJCQlpbnQgajEgPSBqKzEsIGkxID0gaSsxOwoJCQkJaWYoaSttaWQxID4gbiB8fCBqK21pZDE+bSkgY29udGludWU7CgkJCQlpbnQgdG1wMSA9IHByZWZfaGFuZ1tpK21pZDFdW2orbWlkMV0gKyBwcmVmX2hhbmdbaS0xXVtqMS0xXSAtIHByZWZfaGFuZ1tpLTFdW2orbWlkMV0gLSBwcmVmX2hhbmdbaSttaWQxXVtqMS0xXTsKCQkJCWludCB0bXAyID0gcHJlZl9jb3RbaSttaWQxXVtqK21pZDFdICsgcHJlZl9jb3RbaTEtMV1bai0xXSAtIHByZWZfY290W2kxLTFdW2orbWlkMV0gLSBwcmVmX2NvdFtpK21pZDFdW2otMV07CgkJCQlpZih0bXAxID09IHRtcDIgJiYgdG1wMSA9PSAwKSAKCQkJCXsKCQkJCQkvLyBjb3V0PDxtaWQ8PCIgIjw8aTw8IiAiPDxqPDwnXG4nOwoJCQkJCWNoZWNrID0gMTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCQlpZihjaGVjayB8fCBtaWQgPD0gMSkgbCA9IG1pZCsxLCBhbnMgPSBtaWQ7CgkJZWxzZSByID0gbWlkLTE7Cgl9Cgljb3V0PDxhbnM8PCdcbic7Cn0=