#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 100005
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define REVERSE(i , a , b) for(int i = a ; i >= b; i--)
const ll MOD = 1e9 + 7;
ll ifact[2 * maxn] , fact[2 * maxn];
ll binpow(ll a , ll b , ll c){
ll res = 1;
while(b){
if(b & 1){
res *= a;
res %= c;
}
a *= a;
a %= c;
b >>= 1;
}
return res;
}
ll mod_inverse(ll a , ll m){
return binpow(a , MOD - 2 , MOD);
}
void precompute(){
fact[0] = 1;
FOR(i , 1 , 2 * maxn){
fact[i] = fact[i - 1] * i;
fact[i] %= MOD;
}
ifact[2 * maxn] = mod_inverse(fact[2 * maxn] , MOD);
REVERSE(i , 2 * maxn - 1 , 0){
ifact[i] = ifact[i + 1] * (i + 1);
ifact[i] %= MOD;
}
}
ll nCk(ll n , ll k){
if(k < 0 || k > n) return 0;
return ((fact[n] * ifact[n - k]) % MOD) * ifact[k] % MOD;
}
struct Point{
ll x , y;
};
bool cmp(Point &a , Point &b){
if(a.x != b.x) return a.x < b.x;
return a.y < b.y;
}
Point nanh_cuti[100005];
ll dp[100005];
int main(){
FAST;
int n , m , k;
cin >> n >> m >> k;
precompute();
FOR(i , 1 , k){
cin >> nanh_cuti[i].x >> nanh_cuti[i].y;
}
k = k + 1;
nanh_cuti[k].x = n;
nanh_cuti[k].y = m;
sort(nanh_cuti + 1 , nanh_cuti + k + 1 , cmp);
FOR(i , 1 , k){
dp[i] = nCk(nanh_cuti[i].x + nanh_cuti[i].y - 2 , nanh_cuti[i].x - 1);
dp[i] %= MOD;
FOR(j , 1 , i - 1){
if(nanh_cuti[j].x <= nanh_cuti[i].x && nanh_cuti[j].y <= nanh_cuti[i].y){
ll dx = nanh_cuti[i].x - nanh_cuti[j].x;
ll dy = nanh_cuti[i].y - nanh_cuti[j].y;
dp[i] = (dp[i] - dp[j] * nCk(dx + dy , dx) % MOD + MOD) % MOD;
dp[i] %= MOD;
}
}
}
cout << dp[k];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBtYXhuIDEwMDAwNQojZGVmaW5lIEZPUihpICwgYSAsIGIpIGZvcihpbnQgaSA9IGEgOyBpIDw9IGI7IGkrKykKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIFJFVkVSU0UoaSAsIGEgLCBiKSBmb3IoaW50IGkgPSBhIDsgaSA+PSBiOyBpLS0pCgpjb25zdCBsbCBNT0QgPSAxZTkgKyA3OwoKbGwgaWZhY3RbMiAqIG1heG5dICwgZmFjdFsyICogbWF4bl07CgpsbCBiaW5wb3cobGwgYSAsIGxsIGIgLCBsbCBjKXsKICAgIGxsIHJlcyA9IDE7CiAgICB3aGlsZShiKXsKICAgICAgICBpZihiICYgMSl7CiAgICAgICAgICAgIHJlcyAqPSBhOwogICAgICAgICAgICByZXMgJT0gYzsKICAgICAgICB9CiAgICAgICAgYSAqPSBhOwogICAgICAgIGEgJT0gYzsKICAgICAgICBiID4+PSAxOwogICAgfQoKICAgIHJldHVybiByZXM7Cn0KCmxsIG1vZF9pbnZlcnNlKGxsIGEgLCBsbCBtKXsKICAgIHJldHVybiBiaW5wb3coYSAsIE1PRCAtIDIgLCBNT0QpOwp9Cgp2b2lkIHByZWNvbXB1dGUoKXsKICAgIGZhY3RbMF0gPSAxOwogICAgRk9SKGkgLCAxICwgMiAqIG1heG4pewogICAgICAgIGZhY3RbaV0gPSBmYWN0W2kgLSAxXSAqIGk7CiAgICAgICAgZmFjdFtpXSAlPSBNT0Q7CiAgICB9CgogICAgaWZhY3RbMiAqIG1heG5dID0gbW9kX2ludmVyc2UoZmFjdFsyICogbWF4bl0gLCBNT0QpOwoKICAgIFJFVkVSU0UoaSAsIDIgKiBtYXhuIC0gMSAsIDApewogICAgICAgIGlmYWN0W2ldID0gaWZhY3RbaSArIDFdICogKGkgKyAxKTsKICAgICAgICBpZmFjdFtpXSAlPSBNT0Q7CiAgICB9Cn0KCmxsIG5DayhsbCBuICwgbGwgayl7CiAgICBpZihrIDwgMCB8fCBrID4gbikgcmV0dXJuIDA7CiAgICByZXR1cm4gKChmYWN0W25dICogaWZhY3RbbiAtIGtdKSAlIE1PRCkgKiBpZmFjdFtrXSAlIE1PRDsKfQoKCnN0cnVjdCBQb2ludHsKICAgIGxsIHggLCB5Owp9OwoKYm9vbCBjbXAoUG9pbnQgJmEgLCBQb2ludCAmYil7CiAgICBpZihhLnggIT0gYi54KSByZXR1cm4gYS54IDwgYi54OwogICAgcmV0dXJuIGEueSA8IGIueTsKfQoKUG9pbnQgbmFuaF9jdXRpWzEwMDAwNV07CgpsbCBkcFsxMDAwMDVdOwoKaW50IG1haW4oKXsKICAgIEZBU1Q7CiAgICBpbnQgbiAsIG0gLCBrOwogICAgY2luID4+IG4gPj4gbSA+PiBrOwogICAgcHJlY29tcHV0ZSgpOyAgCiAgICBGT1IoaSAsIDEgLCBrKXsKICAgICAgICBjaW4gPj4gbmFuaF9jdXRpW2ldLnggPj4gbmFuaF9jdXRpW2ldLnk7CiAgICB9CgogICAgayA9IGsgKyAxOwogICAgbmFuaF9jdXRpW2tdLnggPSBuOwogICAgbmFuaF9jdXRpW2tdLnkgPSBtOwogICAgc29ydChuYW5oX2N1dGkgKyAxICwgbmFuaF9jdXRpICsgayArIDEgLCBjbXApOwogICAgCiAgICBGT1IoaSAsIDEgLCBrKXsKICAgICAgICBkcFtpXSA9IG5DayhuYW5oX2N1dGlbaV0ueCArIG5hbmhfY3V0aVtpXS55IC0gMiAsIG5hbmhfY3V0aVtpXS54IC0gMSk7CiAgICAgICAgZHBbaV0gJT0gTU9EOwogICAgICAgIEZPUihqICwgMSAsIGkgLSAxKXsKICAgICAgICAgICAgaWYobmFuaF9jdXRpW2pdLnggPD0gbmFuaF9jdXRpW2ldLnggJiYgbmFuaF9jdXRpW2pdLnkgPD0gbmFuaF9jdXRpW2ldLnkpewogICAgICAgICAgICAgICAgbGwgZHggPSBuYW5oX2N1dGlbaV0ueCAtIG5hbmhfY3V0aVtqXS54OwogICAgICAgICAgICAgICAgbGwgZHkgPSBuYW5oX2N1dGlbaV0ueSAtIG5hbmhfY3V0aVtqXS55OwogICAgICAgICAgICAgICAgZHBbaV0gPSAoZHBbaV0gLSBkcFtqXSAqIG5DayhkeCArIGR5ICwgZHgpICUgTU9EICsgTU9EKSAlIE1PRDsKICAgICAgICAgICAgICAgIGRwW2ldICU9IE1PRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGRwW2tdOwp9Cg==