Statement
我们有一个由十进制数字组成的字符串 。 的一个 *划分* 是通过将 分割成连续子串而创建的。
例如,如果 是 0145217,两个可能的划分是014 5 21 7 和 0 14 52 17。每个数字必须恰好用于一个子串中,且每个子串必须非空。如果 有 个数字,那么它恰好有 种可能的划分。
给定一个正整数 ,如果对于每一对连续的子串,它们所表示的十进制整数中至少有一个能被 整除,则称 的一个划分能被 *整除*。
如果 ,上面第一个示例划分是可整除的,因为 014、21 和 7 表示的整数都能被 整除。第二个示例划分不可整除,因为 52 和 17 是连续子串,且它们表示的整数都不能被 整除。将 0145217 划分为 0145217 对任何 都是可整除的,因为没有连续子串对。
给定 和 ,计算存在多少个 的划分能被 整除。
由于输出可能非常大,我们只要求你输出结果除以质数 () 的余数。
Input
输入的第一行给出测试用例的数量 。接下来有 行。
每行代表一个测试用例,包含一个数字字符串 和一个正整数 ,如上所述。
### 数据范围
- .
- .
- 的长度 .
- 的长度 .
Output
对于每个测试用例,按测试用例顺序逐个输出答案,输出一行,包含 $y$,
其中 是能被 整除的 的不同划分的数量,对质数 () 取模。
Examples
Input
3
0145217 7
100100 10
5555 12Output
16
30
1Constraints
- Time limit: 10000 ms
- Memory limit: 1048576 KB
- Tag: dynamic-programming
- Tag: math
- Tag: string