#include <bits/stdc++.h>
#define fi first
#define se second

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const ll mod = 1000000007;
const int N = 100005;

ll ft[N * 2], inv_ft[N * 2];

ll fast_exp(ll v){
    ll m = mod - 2, r = 1;
    while(m){
        if(m & 1) r = r * v % mod;
        v = v * v % mod;
        m >>= 1;
    }
    return r;
}

ll bm(ll n, ll k){
    return ft[n] * (inv_ft[k] * inv_ft[n - k] % mod) % mod;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    ft[0] = inv_ft[0] = 1;
    for(int i = 1; i < N * 2; i++){
        ft[i] = ft[i - 1] * i % mod;
        inv_ft[i] = fast_exp(ft[i]);
    }
   
    int h, w, n;
    cin >> h >> w >> n;
    pii p[n + 1]; 
    ll dp[n + 1];
    p[n] = {h, w};
    for(int i = 0; i < n; i++)
        cin >> p[i].fi >> p[i].se;
    sort(p, p + n + 1);

    for(int i = 0; i <= n; i++){
        dp[i] = bm(p[i].fi + p[i].se - 2, p[i].fi - 1);
        for(int j = 0; j < i; j++)  
            if(p[j].se <= p[i].se)
                dp[i] = (dp[i] - dp[j] * bm(p[i].fi - p[j].fi + p[i].se - p[j].se, p[i].fi - p[j].fi) % mod + mod) % mod; 
    }
    cout << dp[n] << endl;
}