Innovative Sorting

Xem dạng PDF

Gửi bài giải

Điểm: 0,40 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.