#include<iostream>
#include<vector>
using namespace std;
int n,m,q,ans=0;
vector<vector<bool> > a;
void paint (int x0, int y0, int x1, int y1)
{
    for (int i=x0; i<=x1; i++)
        for (int j=y0; j<=y1; j++)
            a[i][j]=true;
}
bool check (int x0, int y0, int x1, int y1)
{
    for (int i=x0; i<=x1; i++)
        for (int j=y0; j<=y1; j++)
            if (a[i][j])
                return false;
    return true;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m>>q;
    a.resize(n);
    for (int i=0; i<n; i++)
        a.resize(m);
    for (int i=0; i<q; i++)
    {
        int x0,y0,x1,y1;
        cin>>x0>>y0>>x1>>y1;
        paint(x0-1,y0-1,x1-1,y1-1);
//        cout<<"\n\n";
//        for (int l=0; l<n; l++)
//        {
//            for (int j=0; j<m; j++)
//                cout<<a[l][j]<<' ';
//            cout<<'\n';
//        }
    }


    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
        {
            for (int l=ans+1; l<=n; l++)
            {
                int x1,y1;
                x1=i+l-1;
                y1=j+l-1;
                if (x1>=n || y1>=m)
                    break;
                if (check(i,j,x1,y1))
                {
                    ans=l;
//                    cout<<i<<' '<<j<<' '<<x1<<' '<<y1<<' '<<ans<<'\n';
                }
                else
                    break;
            }
        }
    cout<<ans<<'\n';
}
