#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<pair<int,int> >A;
long h,w,dp[3333],n,mod=1e9+7,fac[2<<17],inv[2<<17];
long p(long a,long b){return b?p(a*a%mod,b/2)*(b%2?a:1)%mod:1;}
long f(long a,long b)
{
	return fac[a+b]*inv[a]%mod*inv[b]%mod;
}
int main()
{
	cin>>h>>w>>n;
	fac[0]=inv[0]=1;
	for(int i=1;i<2<<17;i++)fac[i]=fac[i-1]*i%mod,inv[i]=p(fac[i],mod-2);
	for(int i=0;i<n;i++)
	{
		int a,b;cin>>a>>b;
		A.push_back(make_pair(a,b));
	}
	A.push_back(make_pair(h,w));
	sort(A.begin(),A.end());
	for(int i=0;i<=n;i++)
	{
		long now=f(A[i].first-1,A[i].second-1);
		for(int j=0;j<i;j++)
		{
			if(A[j].second<=A[i].second)
			{
				now=(now-dp[j]*f(A[i].first-A[j].first,A[i].second-A[j].second)%mod+mod)%mod;
			}
		}
		dp[i]=now;
	}
	cout<<dp[n]<<endl;
}
