编程题
燃烧权杖
### 题目描述
小 C 最近迷上了一款游戏。现在,在游戏中,小 C 有一个英雄,生命值为 $x$;敌人也有一个英雄,生命值为 $y$。除此以外,还有 $k$ 个士兵,生命值分别为 $a_1、a_2、......、a_k$。
现在小 C 打算使用一个叫做"燃烧权杖"的技能。"燃烧权杖"会每次等概率随机选择一个活着的角色(英雄或士兵),扣减其 10 点生命值,然后如果该角色的生命值小于或等于 0,则该角色死亡,不会再被"燃烧权杖"选中。"燃烧权杖"会重复做上述操作,直至任意一名英雄死亡。
小 C 想知道使用"燃烧权杖"后敌方英雄死亡(即,小 C 的英雄存活)的概率。为了避免精度误差,你只需要输出答案模一个质数 $p$ 的结果,具体见输出描述。
### 输入描述
输入包含多组数据。
输入第一行包含一个正整数 $T$,表示数据组数。
接下来 $T$ 组,每组数据第一行包含四个非负整数 $x、y、p、k$,分别表示小 C 的英雄的生命值、敌方英雄的生命值,模数和士兵个数。 第二行包含 $k$ 个正整数 $a_1、a_2、......、a_k$,分别表示每个士兵的生命值。
### 输出描述
对于每组数据,输出一行一个非负整数,表示答案模质数 $p$ 的余数。
可以证明,答案一定为有理数。设答案为 $a/b$($a$ 和 $b$ 为互质的正整数),你输出的数为 $x$,则你需要保证 $a$ 与 $bx$ 模 $p$同余;也即,$x = (a·b^{−1}) \mod p$, 其中 $b^{−1}$ 表示 $b$ 模 $p$ 的逆元, $mod$ 为取模运算。
### 输入输出样例
#### 示例
> 输入
```txt
6
1 10 101 0
100 1 101 0
50 30 4903 2
1 1
987 654 233 1
321
1000000000 9999999999 233 3
1 2 3
1000000000 999999999 3 3
1 2 3
```
> 输出
```txt
51
37
1035
118
117
2
```