#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9 + 7;
int n, m, k, sum, ans, x[100005], y[100005];
map<int, int> t;
map<int, map<int, bool> > flag;
int quick_pow(int a, int b)
{
int sum = a, ans = 1, bb = b;
while (bb)
{
if (bb % 2)
{
ans %= mod;
ans *= sum;
ans %= mod;
}
sum %= mod;
sum *= sum;
sum %= mod;
bb /= 2;
}
return ans;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie();cout.tie();
cin >> n >> m >> k;
int cnt = 0;
for (int i = 1; i <= k; i++)
{
cin >> x[i] >> y[i];
if (t[x[i]] == 0)
{
cnt++;
}
if (flag[x[i]][y[i]] == 0)
{
flag[x[i]][y[i]] = 1;
t[x[i]] += y[i];
}
}
sum = n * (n + 1) / 2;
sum %= mod;
ans = quick_pow(sum, m - cnt);
for (int i = 1; i <= k; i++)
{
if (t[x[i]])
{
ans %= mod;
int now = sum - t[x[i]];
ans = (ans % mod) * (now % mod);
ans %= mod;
t[x[i]] = 0;
}
}
cout << ans;
return 0;
}