#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e6+10;
const int Mod=1e9+7;
ll n,m,k,x,y,xx,yy;
ll ans;
int main(){
cin>>n>>m>>k;
n=(n%Mod+Mod)%Mod;
m=(m%Mod+Mod)%Mod;
cin>>x>>y;
x=(x%Mod+Mod)%Mod;
y=(y%Mod+Mod)%Mod;
while(k--){
cin>>xx>>yy;
xx=(xx%Mod+Mod)%Mod;
yy=(yy%Mod+Mod)%Mod;
if(xx!=x&&yy!=y){
if(xx>x)ans=((ans+n-xx+1+Mod)%Mod+Mod)%Mod;
else ans=((ans+xx)%Mod+Mod)%Mod;
if(yy>y)ans=((ans+m-yy+1+Mod)%Mod+Mod)%Mod;
else ans=((ans+yy)%Mod+Mod)%Mod;
}else{
if(xx==x){
if(yy>y){
ans=(ans+(m-yy+1+Mod)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步捡
ans=(ans+(yy-2+Mod)%Mod*(m-yy+1+Mod)%Mod+Mod)%Mod;//第二步捡
}else{
ans=(ans+(yy)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步
ans=(ans+(m-yy-1+Mod)%Mod*(yy)%Mod+Mod)%Mod;
}
}else{
if(xx>x){
ans=(ans+(n-xx+1+Mod)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步捡
ans=(ans+(xx-2+Mod)%Mod*(n-xx+1+Mod)%Mod+Mod)%Mod;
}else{
ans=(ans+(xx)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步
ans=(ans+(n-xx-1+Mod)%Mod*(xx)%Mod+Mod)%Mod;
}
}
}
// cout<<ans<<endl;
}
cout<<(ans%Mod+Mod)%Mod;
return 0;
}