#include<iostream>
#include<cmath>
#include<map>
#define rep(a,b,c) for(int a=b;a<=c;a++)
#define a_all a.begin(),a.end()
#define int long long
using namespace std;
#define int long long
struct coord {
int x,y;
} a[400010];
int n,m,k;
int disk=-2e9;
map<pair<int,int>,bool> vis;
int calc(int nx,int ny) {
int ans = 0;
for(int i=1;i<=k;i++)
ans+=abs(nx-a[i].x)+abs(ny-a[i].y);
return ans;
}
bool of(int nx,int ny) {
return (nx<1||nx>n||ny<1||ny>m);
}
signed main() {
cin.tie(0); cout.tie(0);
ios::sync_with_stdio(0);
cin>>n>>m>>k;
rep(i,1,k) {
cin>>a[i].x>>a[i].y;
vis[make_pair(a[i].x,a[i].y)]=1;
}
rep(i,1,k) {
int ax=a[i].x-1,ay=a[i].y;
int bx=a[i].x+1,by=a[i].y;
int cx=a[i].x,cy=a[i].y+1;
int dx=a[i].x,dy=a[i].y-1;
int d1=calc(ax,ay),d2=calc(bx,by),d3=calc(cx,cy),d4=calc(dx,dy);
if(of(ax,ay) || vis[make_pair(ax,ay)]) d1=-2e9;
if(of(bx,by) || vis[make_pair(bx,by)]) d2=-2e9;
if(of(cx,cy) || vis[make_pair(cx,cy)]) d3=-2e9;
if(of(dx,dy) || vis[make_pair(dx,dy)]) d4=-2e9;
disk=max(disk,max(d1,max(d2,max(d3,d4))));
}
int ax=1,ay=n;
int bx=1,by=1;
int cx=n,cy=1;
int dx=n,dy=m;
int d1=calc(ax,ay),d2=calc(bx,by),d3=calc(cx,cy),d4=calc(dx,dy);
if(of(ax,ay) || vis[make_pair(ax,ay)]) d1=-2e9;
if(of(bx,by) || vis[make_pair(bx,by)]) d2=-2e9;
if(of(cx,cy) || vis[make_pair(cx,cy)]) d3=-2e9;
if(of(dx,dy) || vis[make_pair(dx,dy)]) d4=-2e9;
disk=max(disk,max(d1,max(d2,max(d3,d4))));
cout<<disk;
return 0;
}