#include <bits/stdc++.h>
const long long MOD = 1000000007;
using namespace std;
long long MODD(long long x) { return x - (x / MOD) * MOD; }
long long silnia[200005];
long long odw(long long liczba) {
  long long wyk = MOD - 2;
  long long wynik = 1;
  while (wyk > 0) {
    if (wyk % 2 == 1) {
      wynik *= liczba;
      if (wynik > 2000000000) wynik = MODD(wynik);
    }
    wyk /= 2;
    liczba *= liczba;
    if (liczba > 2000000000) liczba = MODD(liczba);
  }
  return wynik;
}
struct czarnepole {
  long long x, y, iledrog;
  czarnepole(long long a = 0, long long b = 0) {
    x = a;
    y = b;
    iledrog = 0;
  }
  bool operator<(czarnepole cz) const {
    if (x < cz.x || (x == cz.x && y < cz.y)) return true;
    return false;
  }
};
vector<czarnepole> V;
long long npok(long long n, long long k) {
  if (k == 0) return 1;
  long long gora = silnia[n];
  long long dol = silnia[k] * silnia[n - k];
  gora *= odw(dol % MOD);
  return gora % MOD;
}
long long iledrog(long long x, long long y) { return (npok(x + y, y)); }
int main() {
  silnia[0] = 1;
  for (long long i = 1; i <= 200000; i++) silnia[i] = silnia[i - 1] * i % MOD;
  long long h, w, n;
  long long ilezlych = 0;
  cin >> h >> w >> n;
  for (int i = 0; i < n; i++) {
    long long a, b;
    cin >> a >> b;
    V.push_back(czarnepole(a, b));
  }
  sort(V.begin(), V.end());
  for (int i = V.size() - 1; i >= 0; i--) {
    long long ilezlychprzezemnie = 0;
    ilezlychprzezemnie = (iledrog(h - V[i].x, w - V[i].y) - V[i].iledrog) *
                         iledrog(V[i].x - 1, V[i].y - 1) % MOD;
    ilezlych += ilezlychprzezemnie;
    ilezlych %= MOD;
    long long pomm = iledrog(h - V[i].x, w - V[i].y) - V[i].iledrog;
    for (int j = i - 1; j >= 0; j--)
      if (V[i].x >= V[j].x && V[i].y >= V[j].y) {
        long long ilezlychprzezniego =
            (pomm)*iledrog(V[i].x - V[j].x, V[i].y - V[j].y);
        V[j].iledrog += ilezlychprzezniego;
        V[j].iledrog %= MOD;
      }
  }
  long long wynik = (iledrog(h - 1, w - 1) - ilezlych) % MOD;
  if (wynik < 0) wynik += MOD;
  cout << wynik;
}
