Gửi bài giải


Điểm: 0,01 (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

Cho số nguyên dương ~n~. Gọi ~S~ là tập tất cả các ước dương của ~n~.

Hãy chia tập ~S~ thành các tập con sao cho:

  • mỗi phần tử của ~S~ thuộc một tập con;

  • không có hai tập con nào chứa cùng một phần tử;

  • với mọi cặp phần tử ~x, y~ thuộc cùng một tập con thì ~x|y~ hoặc ~y|x~.

Hãy tìm ra số lượng tập con ít nhất cần phải tạo và một cách chia thỏa mãn.

Input

Dòng đầu tiên gồm một số ~t~ ~(1 \leq t \leq 10)~ là số lượng testcase.

Mỗi test case mỗi dòng gồm một số ~n~ ~(1 \leq n \leq 10^{18})~.

Output

Với mỗi test case:

  • Dòng đầu tiên là số ~k~, chính là số tập con ít nhất có thể chia.

  • Mỗi dòng trong ~k~ dòng tiếp theo có dạng ~m, a_1, a_2, \dots, a_m~ thể hiện cho một tập con gồm các phần tử ~a_1, a_2, \ldots, a_m~.

Scoring

Subtask Điểm Ràng buộc
1 ~500~ ~n \leq 1000~
2 ~1000~ ~n \leq 10^{12}~
3 ~2000~ Không có ràng buộc gì thêm
Tổng ~3500~

Sample Input 1

3
6
60
36

Sample Output 1

2
3 1 3 6 
1 2 
4
5 1 5 15 30 60 
3 3 6 12 
3 2 10 20 
1 4 
3
5 1 3 9 18 36 
3 2 6 12 
1 4

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.