#include<bits/stdc++.h>
#define int __int128
using namespace std;
const int mod=1000000007ll;
int a[1000005ll],b[1000005ll];
inline void read(__int128 &s){
s=0ll;
char c=' ';
while(c>'9'||c<'0') c=getchar();
while(c>='0'&&c<='9'){
s=(s*10ll+c-'0')%mod;
c=getchar();
}
}
inline void write(__int128 x){
if(x<0ll)putchar('-'),x=-x;
if(x>9ll)write(x/10ll);
putchar(x%10ll+'0');
}
int X,Y,A[100005],B[100005];
signed main() {
int n,m,k,x,y;
read(n),read(m),read(k),read(x),read(y);
X=x,Y=y;
n%=mod,m%=mod,x%=mod,y%=mod;
for(int i=1;i<=k;i++){
read(a[i]),read(b[i]);
A[i]=a[i],B[i]=b[i];
a[i]%=mod,b[i]%=mod;
}
int ans=0ll;
for(int i=1ll;i<=k;i++){
if(A[i]==X){
if(B[i]<Y)(ans+=(int)(1ll*((b[i]*(((n+m)%mod-2ll+mod)%mod))%mod+((((y-b[i]+mod)%mod-1ll+mod)%mod)*b[i])%mod)%mod+(((m-y+mod)%mod)*b[i])%mod))%=mod;
else (ans+=(int)(1ll*((((m-b[i])%mod+1ll+mod)%mod)*(((n+m)%mod-2ll+mod)%mod)+(((b[i]-y+mod)%mod-1ll+mod)%mod)*(((m-b[i]+mod)%mod+1ll+mod)%mod))%mod+((y-1ll+mod)%mod)*(((m-b[i]+mod)%mod+1)%mod)%mod))%=mod;
continue;
}
if(B[i]==Y){
if(A[i]<X)(ans+=(int)(1ll*((a[i]*(((n+m)%mod-2ll+mod)%mod))%mod+((((x-a[i]+mod)%mod-1ll+mod)%mod)*a[i])%mod)%mod+(((n-x+mod)%mod)*a[i])%mod))%=mod;
else(ans+=(int)(1ll*((((n+m)%mod-2ll+mod)%mod)*(((n-a[i]+mod)%mod+1ll+mod)%mod)%mod+((((a[i]-x+mod)%mod-1ll+mod)%mod)*(((n-a[i]%mod)+1ll+mod)%mod))%mod)%mod+(((x-1ll+mod)%mod)*(((n-a[i]+mod)%mod+1ll)%mod))%mod))%=mod;
continue;
}
if(A[i]<X)(ans+=(int)(1ll*a[i]))%=mod;
else (ans+=(int)(1ll*((n-a[i]+mod)%mod+1ll)%mod))%=mod;
if(B[i]<Y)(ans+=(int)(1ll*b[i]))%=mod;
else (ans+=(int)(1ll*((m-b[i]+mod)%mod+1ll)%mod))%=mod;
}
(ans+=mod)%=mod;
write((ans+mod)%mod);
cout<<"\n";
}