func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long md = 1e9 + 7;   const long long o5 = 716327852;   const int N = 2e5 + 34;   long long f[N], o[N];   long long ans, n, w, h;   long long dp[N];   pair<long long, long long> a[N];   long long c(long long h, long long w) {     return (((f[h + w] * o[h]) % md) * o[w]) % md;   }   int main() {     o[0] = f[0] = 1;     o[100000] = o5;     for (long long i = 1; i < N; i++) f[i] = (f[i - 1] * i) % md;     for (long long i = 99999; i > 0; i--) o[i] = (o[i + 1] * (i + 1)) % md;     cin >> h >> w >> n;     ans = c(h - 1, w - 1);     for (int i = 0; i < n; i++) {       cin >> a[i].first >> a[i].second;       a[i].first--;       a[i].second--;     }     sort(a, a + n);     for (int i = 0; i < n; i++) {       dp[i] = c(a[i].second, a[i].first);       for (int j = 0; j < i; j++)         if (a[j].first <= a[i].first && a[j].second <= a[i].second)           dp[i] = (dp[i] -                    dp[j] * c(a[i].first - a[j].first, a[i].second - a[j].second) +                    md * md) %                   md;       ans = (ans + md * md - dp[i] * c(w - a[i].second - 1, h - a[i].first - 1)) %             md;     }     cout << ans;   }   