Lộc đang nghiên cứu về một thuật toán sắp xếp mới có tên gọi Vectorized Neural-network in Ordering Intergers (VNOI) – thuật toán ứng dụng công nghệ mạng thần kinh vector hóa để tối ưu hóa việc sắp xếp mảng số nguyên. Sau một thời gian rất dài cất công nghiên cứu, cuối cùng Lộc cũng đã có một bước tiến mới trong thao tác sắp xếp mảng số nguyên!
Lộc đang có một mảng số nguyên gồm ~n~ phần tử ~a_1, a_2, \ldots, a_n~. Với công nghệ mới vừa được nghiên cứu, Lộc có thể thực hiện thao tác sau đây rất nhiều lần một cách nhanh chóng:
- Chọn ra hai chỉ số ~i~ và ~j~ (~1 \le i, j \le n~) sao cho ~i + j~ chia hết cho ~k~. Sau đó thực hiện tráo đổi giá trị của ~a_i~ và ~a_j~.
Tuy đây là thao tác rất nhanh với công nghệ vừa được nghiên cứu, Lộc vẫn thắc mắc rằng liệu có thể sử dụng thao tác này (không hoặc nhiều lần) để sắp xếp mảng ~a~ không giảm hay không. Hãy giúp Lộc kiểm tra xem có cách nào sử dụng thao tác trên để sắp xếp mảng ~a~ thoả yêu cầu không nhé!
Input
Dòng đầu tiên gồm số nguyên ~t~ (~1 \le t \le 10\,000~) – số lượng các test case. Mô tả của mỗi test case như sau.
Dòng đầu tiên gồm hai số nguyên ~n~ và ~k~ (~1 \le n \le 200\,000~, ~1 \le k \le n~) – độ dài mảng ~a~ của Lộc và tham số ~k~ cho thao tác.
Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ (~1 \le a_i \le 10^9~).
Dữ liệu đảm bảo tổng của các số ~n~ trong tất cả các test case không quá ~200\,000~.
Output
Với mỗi test case, hãy in ra "YES" (không bao gồm ngoặc nháy), nếu như tồn tại một dãy thao tác để sắp xếp mảng ~a~ không giảm. Ngược lại hãy in ra "NO" (không bao gồm ngoặc nháy).
Scoring
Subtask | Điểm | Giới hạn |
---|---|---|
1 | 500 | ~k = 2~ |
2 | 1000 | Không có giới hạn gì thêm |
Tổng | 1500 |
Sample Input 1
3
3 2
1 2 3
4 2
1 4 3 2
3 2
2 1 2
Sample Output 1
YES
YES
NO
Sample Input 2
3
3 3
1 2 3
3 3
2 1 3
3 3
3 2 1
Sample Output 2
YES
YES
NO
Sample Input 3
2
10 1
10 9 8 7 6 5 4 3 2 1
10 10
10 9 8 7 6 5 4 3 2 1
Sample Output 3
YES
NO
Notes
Trong test ví dụ đầu tiên:
Ở test case đầu tiên, mảng ~a~ đã được sắp xếp.
Ở test case thứ hai, mảng ~a = [1, 4, 3, 2]~ và ~k = 2~. Ta có thể chọn chỉ số ~i = 2~ và ~j = 4~ (do ~2 + 4 = 6~ chia hết cho ~k = 2~) và tráo đổi ~a_2~ và ~a_4~ để thu được mảng ~a = [1, 2, 3, 4]~.
Ở test case thứ ba, mảng ~a = [2, 1, 2]~ và ~k = 2~. Cặp chỉ số ~(i, j)~ hợp lệ duy nhất là ~(1, 3)~, tuy nhiên vì ~a_1 = a_3 = 2~, khi tráo đổi chúng, ta thu được mảng ban đầu. Do đó không có cách nào để sắp xếp mảng.
Trong test ví dụ thứ hai:
Ở test case đầu tiên, mảng ~a~ đã được sắp xếp.
Ở test case thứ hai, mảng ~a = [2, 1, 3]~ và ~k = 3~. Ta có thể chọn chỉ số ~i = 1~ và ~j = 2~ (do ~1 + 2 = 3~ chia hết cho ~k = 3~) và tráo đổi ~a_1~ và ~a_2~ để thu được ~a = [1, 2, 3]~.
Ở test case thứ ba, mảng ~a = [3, 2, 1]~ và ~k = 3~. Cặp chỉ số ~(i, j)~ hợp lệ duy nhất là ~(1, 2)~, và khi tráo đổi ~a_1~ và ~a_2~ ta thu được mảng ~a = [2, 1, 3]~. Ta không thể thu được mảng ~a~ khác, do đó không có cách nào để sắp xếp mảng.
Bình luận