背景

尛焱轟在玩国际象棋。。。

描述

尛焱轟一开始有一个骑士,在(0,0),尛焱轟有两种移动方式,第一种从(x,y)移动到(x+A_x,y+A_y),第二种则是移动到(x+B_x,y+B_y)。现在尛焱轟需要把骑士移动到(P_x,P_y),问有多少种方法(两种方法不同当且仅当步数不同或者存在一个i使得在第i步结束后骑士在不同块内)。。这么弱的问题尛焱轟当然会啦。。于是他又增加了k个不可走的点,把加强了的问题给了你。。(注意走到终点后也可以继续移动)

输入格式

多组数据

第一行一个整数表示数据组数

每组数据第一行3个整数,表示P_x,P_y,k

第二行4个整数,表示A_x,A_y,B_x,B_y

接下来k行,每行两个整数表示障碍点坐标,数据保证开始点和终止点不是障碍点

输出格式

每组数据一行一个整数,表示方案数mod 1e9+7的值,如果方案数为无穷,请输出-1。

样例输入

3
3 3 0
1 2 2 1
9 9 2
1 2 2 1
1 2
6 6
1 1 0
0 0 0 0

样例输出

2
4
0

数据范围与约定

  • 对于100%的数据:0 \leq k\leq 15数据组数不超过20,其余所有整数绝对值不超过500。