← Home
write a go solution for Description:
Egor has an array a of length n, initially consisting of zeros. However, he wanted to turn it into another array b of length n.

Since Egor doesn't take easy paths, only the following operation can be used (possibly zero or several times):

- choose an array l of length k (1<=l_i<=n, all l_i are distinct) and change each element a_l_i to l_(i%k)+1 (1<=i<=k).

He became interested in whether it is possible to get the array b using only these operations. Since Egor is still a beginner programmer, he asked you to help him solve this problem.

The operation % means taking the remainder, that is, a%b is equal to the remainder of dividing the number a by the number b.

Input Format:
The first line of the input contains an integer t (1<=t<=10^5) - the number of test cases.

Each test case consists of two lines. The first line contains two integers n and k (1<=k<=n<=10^5).

The second line contains the array b_1,b_2,ldots,b_n (1<=qb_i<=qn).

It is guaranteed that the sum of n over all test cases does not exceed 2*10^5.

Output Format:
For each test case, output "YES" (without quotes) if there is a way to get the array b using only the given operation. Otherwise, output "NO" (without quotes). You can output each letter in any case (lowercase or uppercase). For example, the strings "yEs", "yes", "Yes" and "YES" will be accepted as a positive answer.

Note:
Let's consider the first example:

- Apply the operation with l = [1,2,3]. Now a = [2,3,1,0,0].
- Apply the operation with l = [3,5,4]. Now a = [2,3,5,3,4] = b.

In the second example, it can be proven that the array b cannot be obtained, therefore the answer is NO.. Output only the code with no comments, explanation, or additional text.