Loading [MathJax]/jax/output/HTML-CSS/jax.js

Problem I: ThreeRooks

ねこがチェスの練習をしている.

ねこは, X×Y のチェス盤の上にルークを 3 つ置こうとしている. このチェス盤の K 個のマス目にはうさぎが座っている. i 匹目のうさぎの座標は (x[i],y[i]) である. ただし, チェス盤の左上端のマス目の座標を (0,0), 右下端のマス目の座標を (X1,Y1) とする。うさぎが座っている場所にはルークを置くことができない. また, 1 つのマス目に複数個のルークを置くことはできない.

どの 2 つのルークも互いに攻撃し合わないようにルークを3 つ置く方法は何通りあるか, mod 1,000,000,007 で求めよ. 2 つのルークは同じ行または同じ列にあり, 間にうさぎが座っていない場合に互いに攻撃しあうものとする.

Constraints

Input

入力は以下の形式で与えられる:

X Y K
x1 y1
...
xK yK

Output

ルークの配置の個数を 1,000,000,007 で割ったあまりを表す整数を 1 行に出力せよ.

Sample Input 1

3 3 1
0 0

Sample Output 1

4

Sample Input 2

5 8 2
2 2
4 5

Sample Output 2

3424