Piccôlô dựng Vòm Phòng Ngự

Xem dạng PDF

Gửi bài giải


Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
image "Một đấu sĩ khỏe không phải là một đấu sĩ có công lực mạnh nhất. Một đấu sĩ cũng phải có kỹ năng phòng ngự tốt, và phải có khả năng lì đòn để có thể sống sót trước mọi cú đánh hiểm của đối phương. Một bộ lạc tốt cũng vậy: cần phải có một thành trì đủ vững chãi để người dân có thể cư trú, các đấu sĩ có thể yên tâm tập luyện, hồi phục, để trở nên mạnh mẽ nhất trong các trận đấu."

Piccôlô cần xây dựng một Vòm Phòng ngự cho bộ lạc của mình. Vòm Phòng ngự này sẽ phải chống chọi bất kỳ cuộc tấn công nào của các bộ lạc khác.

Mỗi cuộc tấn công chỉ có thể là một hoán vị của các số từ ~1~ đến ~N~. Sức chịu đựng của Vòm Phòng ngự này sẽ được thể hiện bằng một tập hợp ~K~ hoán vị khác nhau của các số từ ~1~ đến ~N~. ~K~ hoán vị này sẽ là ~K~ hoán vị mà Piccôlô phải chọn, sao cho Vòm Phòng ngự có thể thủ được nhiều cuộc tấn công nhất.

Vòm Phòng ngự có thể thủ được một cuộc tấn công ~P~, nếu như ta tìm được một hoán vị ~Q~ trong tập hợp hoán vị của Vòm Phòng ngự, thỏa mãn: tồn tại một vị trí ~i~ (~1 \le i \le N~) nào đó, sao cho ~P_i = Q_i~. Sau khi thủ thành công một cuộc tấn công, khả năng phòng thủ của Vòm sẽ không thay đổi.

Có ~N!~ cuộc tấn công có thể xảy ra.

Cho ~N~, ~K~, hãy giúp Piccôlô xây dựng một tập hợp các hoán vị: ~Q_1, Q_2, \ldots, Q_K~, sao cho Vòm Phòng ngự tương ứng với tập hợp này có thể thủ được tất cả các cuộc tấn công có thể xảy ra, hoặc chỉ ra không thể xây dựng được tập hợp đó. Bài toán có thể có nhiều đáp án, hãy in ra một đáp số bất kỳ.

Input

Dòng đầu tiên chứa ~T~ (~1 \le T \le 100~) - số test trong một tệp đầu vào. Mỗi test sẽ có định dạng như sau:

  • Một dòng duy nhất chứa hai số ~N~ và ~K~ (~1 \le N, K \le 200~).

Output

Với mỗi test:

  • In ra "NO" trên một dòng nếu không thể tìm được.

  • Còn lại, in ra "YES", sau đó là mỗi dòng. Dòng thứ ~i~, in ra ~N~ số của hoán vị ~Q_i~ bạn chọn, mỗi số nguyên cách nhau một dấu cách.

Sample Input 1

3
3 2
5 2
6 7

Sample Output 1

YES
1 2 3
1 3 2
NO
YES
1 2 3 4 5 6
2 1 3 4 5 6
2 3 1 4 5 6
2 3 4 1 5 6
2 3 4 5 1 6
2 3 4 5 6 1
1 2 3 4 5 6

Notes

Ở test đầu tiên, tất cả các hoán vị từ ~1~ đến ~3~ sẽ được liệt kê dưới đây:

  • ~1, 2, 3~, được bảo vệ bởi hoán vị ~1~.

  • ~1, 3, 2~, được bảo vệ bởi hoán vị ~1~.

  • ~2, 1, 3~, được bảo vệ bởi hoán vị ~1~.

  • ~2, 3, 1~, được bảo vệ bởi hoán vị ~2~.

  • ~3, 1, 2~, được bảo vệ bởi hoán vị ~2~.

  • ~3, 2, 1~, được bảo vệ bởi hoán vị ~1~.

Ở test thứ ba, ta thấy, tất cả hoán vị độ dài ~6~ đều chứa phần tử ~1~. Và với bất kỳ vị trí nào của phần tử ~1~ trong mọi hoán vị độ dài ~6~, ta đều có thể tìm được một hoán vị trong ~6~ hoán vị đầu tiên ở kết quả mà phòng ngự được hoán vị này.


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.