#include<iostream>
using namespace std;
#define MOD 1000000007
int main()
{
int a,b,m,n,p,grid[1002][1002];
cin>>m>>n>>p;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
grid[i][j]=0;
while(p--)
{
cin>>a>>b;
grid[a][b]=-1;
}
if(grid[1][1]!=-1)
{
grid[1][1]=1;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(grid[i][j]==-1||(i==1&&j==1))
continue;
if(j==1)
{if(grid[i-1][j]==1)
grid[i][j]=grid[i-1][j];
}
else if(i==1)
{if(grid[i][j-1]==1)
grid[i][j]=grid[i][j-1];
}
else {
if(grid[i-1][j]!=-1)
grid[i][j]=(grid[i][j]+grid[i-1][j])%MOD;
if(grid[i][j-1]!=-1)
grid[i][j]=(grid[i][j]+grid[i][j-1])%MOD;
grid[i][j]%=MOD;
}
}
}
/*for(int i=1;i<=m;i++)
{for(int j=1;j<=n;j++)
cout<<grid[i][j]<<" ";
cout<<endl;
}
*/
cout<<grid[m][n]<<endl;
}
else cout<<0<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKaW50IG1haW4oKQp7CmludCBhLGIsbSxuLHAsZ3JpZFsxMDAyXVsxMDAyXTsKY2luPj5tPj5uPj5wOwpmb3IoaW50IGk9MTtpPD1tO2krKykKIGZvcihpbnQgaj0xO2o8PW47aisrKQogICBncmlkW2ldW2pdPTA7CndoaWxlKHAtLSkKewogY2luPj5hPj5iOwogZ3JpZFthXVtiXT0tMTsKfQppZihncmlkWzFdWzFdIT0tMSkKewpncmlkWzFdWzFdPTE7CmZvcihpbnQgaT0xO2k8PW07aSsrKQp7CiAgZm9yKGludCBqPTE7ajw9bjtqKyspCiAgewogICAgIGlmKGdyaWRbaV1bal09PS0xfHwoaT09MSYmaj09MSkpCiAgICAgIGNvbnRpbnVlOwogICAgIGlmKGo9PTEpCiAgICAgIHtpZihncmlkW2ktMV1bal09PTEpCiAgICAgIGdyaWRbaV1bal09Z3JpZFtpLTFdW2pdOwogICAgICB9CiAgICAgZWxzZSBpZihpPT0xKQogICAgICB7aWYoZ3JpZFtpXVtqLTFdPT0xKQogICAgICAgIGdyaWRbaV1bal09Z3JpZFtpXVtqLTFdOwogICAgICB9CiAgICAgZWxzZSB7CiAgICAgICBpZihncmlkW2ktMV1bal0hPS0xKQogICAgICAgZ3JpZFtpXVtqXT0oZ3JpZFtpXVtqXStncmlkW2ktMV1bal0pJU1PRDsKICAgICAgIGlmKGdyaWRbaV1bai0xXSE9LTEpCiAgICAgICBncmlkW2ldW2pdPShncmlkW2ldW2pdK2dyaWRbaV1bai0xXSklTU9EOwogICAgICAgZ3JpZFtpXVtqXSU9TU9EOwogICAgIH0KICB9Cn0KLypmb3IoaW50IGk9MTtpPD1tO2krKykKIHtmb3IoaW50IGo9MTtqPD1uO2orKykKICBjb3V0PDxncmlkW2ldW2pdPDwiICAiOwogIGNvdXQ8PGVuZGw7CiB9CiovCmNvdXQ8PGdyaWRbbV1bbl08PGVuZGw7Cn0KZWxzZSBjb3V0PDwwPDxlbmRsOwpyZXR1cm4gMDsKfQo=