#codefestival2015okinawag. [code_festival_2015_okinawa_g]Gorgeous Vases

[code_festival_2015_okinawa_g]Gorgeous Vases

题目

猫Snuke有一对花瓶。一个被标记为花瓶11,另一个被标记为花瓶22。最初,花瓶11中有AA朵蓝色的花和BB朵红色的花。此外,蓝花的数量大于等于红花的数量,即ABA≧B。另外,花瓶22是空的,不含蓝花和红花。

顺便说一下,猫Snuke不喜欢将特定数量的红花与特定数量的蓝花混合在一起。这种组合被称为肮脏的放置。总共有NN种不同的肮脏的放置,第ithi_{th}肮脏的放置是恰好pip_i朵蓝色的花和qiq_i朵红色的花的组合。

猫Snuke想要将花瓶11中的所有花一次移动到花瓶22中。然而,猫Snuke必须遵循以下规则:

  • 对于花瓶11和花瓶22,蓝花的数量应始终大于或等于红花的数量。
  • 对于花瓶11和花瓶22,蓝花的数量和红花的数量的组合不能是肮脏的放置(任何时候)。

根据上述规则,回答可以将花瓶11中的所有花移动到花瓶22中的所有可能方法的数量,对1,000,000,0071,000,000,007取模。请注意,具有相同颜色的所有花都是不可区分的(相同的)。


输入

输入将通过标准输入以以下格式给出

AA BB NN p1p_1 q1q_1 p2p_2 q2q_2 : pNp_N qNq_N

  • 对于第一行,用空格分隔给出AB(1BA100,000)A、B(1≦B≦A≦100,000)N(0N20)N(0≦N≦20)
  • 从第二行开始,有NN行附加行,分别给出所有的肮脏的放置。对于第ithi_{th}行,用空格分隔给出整数pi(1piA)p_i(1≦p_i≦A)qi(1qiB,qipi)q_i(1≦q_i≦B,q_i≦p_i)

输出

请输出可以将花瓶11中的所有花移动到花瓶22中的所有可能方法数量除以1,000,000,0071,000,000,007后的余数。

在输出结束时打印一个换行符。


输入示例 1


3 1 0

输出示例 1


2

如下所示,有两种可以移动花朵的方式。

  • 移动顺序为蓝色,蓝色,红色,蓝色。
  • 移动顺序为蓝色,红色,蓝色,蓝色。

输入示例 2


7 5 3
4 2
6 1
5 4

输出示例 2


0

输入示例 3


98765 43210 5
314 159
26535 8979
3238 46
26433 8327
950 288

输出示例 3


763788532