AHASH2 - Anti Hash II

Given a base B and a modulo M, the polynomial hash of a string S consisting of only lowercase letters is defined as below.

Let S = S0S1…SN-1 be a string of length N containing only the lowercase letters (a-z).

Hash(S) = ∑ BN-i-1 × D(Si) % M

D(S) = Lexicographical position of character S among the letters a-z, indexed from 0. D(a) = 0, D(b) = 1 ... D(z) = 25.

In other words, first the letters of the string are replaced by numbers (equivalent to their position). This is then considered to be a number in base B, and the value of this number in base 10 modulo M is called the polynomial hash of the string.

Calculating the hash of a string using the above method seems easy enough. What about the opposite? You are given a base B, a modulo M, a positive integer N, and a hash value H. Calculate how many strings are there such that their hash is equal to H, consisting of only lowercase letters and their length not exceeding N. Since the answer can be rather huge, output it modulo 109 + 7 (1000000007).

Input

The first line contains an integer T, denoting the number of test cases. Each test case starts with four integers B, M, N, Q. The numbers B, M, N denotes the base, modulus and the maximum length of any string as stated above. The number Q indicates the number of queries. Each of the next Q lines contain a single integer, denoting H, the required hash value.

Constraints

  • 1 ≤ T ≤ 150
  • 26 ≤ B ≤ 30000
  • 1 ≤ M, N ≤ 30000
  • 1 ≤ Q ≤ 300
  • 0 ≤ H < M
  • For 95% of the test cases, B, M, N ≤ 300

Output

For each case, first output a line of the format Case X:, where X is the case number, starting from 1. And then, for each query, output the number of different strings with the given hash value modulo 109 + 7 (1000000007) in a single line.

Print a blank line after every test case.

Example

Input:
3
26 97 2 3
0
1
96
147 147 147 3
0
10
100
100 110 120 1
35

Output:
Case 1:
8
8
6

Case 2:
944164777
944164777
0

Case 3:
110169522

Challenge

You might also enjoy: Anti Hash or The Revenge Of Anti Hash.

Added by:sgtlaugh
Date:2020-06-09
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All
Resource:Own Problem, Used in 2017-2018 Asia Yangon Regional Contest

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.