rt
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int n,m,k,ans=1,num,d[100010],a,b,len;
const int mod=1000000007;
map<pair<int,int>,bool>mp;
map<int,int>p;
int fast_pow(int x,int y){
if(y==0)return 1;
if(y==1)return x%mod;
int u=fast_pow(x,y/2);
if(y&1)return u%mod*u%mod*x%mod;
else return u%mod*u%mod;
}
signed main(){
cin>>n>>m>>k;
len=m;
for(int i=1;i<=k+2;i++){
if(n&1)d[i]=(n+1)/2*n;
else d[i]=n*(n+1)/2;
}
for(int i=1;i<=k;i++){
cin>>a>>b;
if(!p.count(a)){
len--;
num++;
p[a]=num;
}
if(!mp.count(make_pair(a,b))){
mp[make_pair(a,b)]=true;
d[p[a]]-=b;
}
}
for(int i=1;i<=num;i++){
ans*=d[i];
ans%=mod;
}
int g;
if(n&1)g=(n+1)/2%mod*n%mod;
else g=n/2%mod*(n+1)%mod;
ans*=fast_pow(g,len);
cout<<(ans+mod)%mod;
}