Đường đua
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (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
Trường đua ngựa có ~k~ đường đua. Trong lần đua này có ~n~ chú ngựa tham gia. Ban tổ chức cần phân nhóm ngựa vào các đường đua: đường đua thứ ~i~ sẽ có ~a_i~ chú ngựa.
Việc phân nhóm phải thỏa mãn:
- ~a_1 + a_2 + \cdots + a_k = n~,
- ~a_i > 0~ với mọi ~i~ (đường đua nào cũng phải có ngựa),
~a_1 \oplus a_2 \oplus \cdots \oplus a_k = 0~, trong đó ~\oplus~ là phép XOR (toán tử ^ trong C/C++).

Yêu cầu
Hãy đưa ra một cách chọn dãy ~a_1, a_2, \dots, a_k~ thỏa mãn tất cả điều kiện trên, hoặc in ra ~-1~ nếu không tồn tại.
Dữ liệu
Một dòng chứa hai số nguyên ~n~ và ~k~ (~1 \le n, k \le 10^5~).
Kết quả
- Nếu không tồn tại cách phân nhóm phù hợp, in ra một số ~-1~.
- Ngược lại, in ra trên một dòng ~k~ số nguyên ~a_1, a_2, \dots, a_k~ mô tả một cách phân nhóm thỏa mãn yêu cầu.
Ví dụ
Ví dụ 1
Input
8 2
Output
4 4
Giải thích
Ví dụ 1
Ta có ~4 + 4 = 8~ và ~4 \oplus 4 = 0~, đồng thời mỗi ~a_i > 0~, nên cách phân nhóm là hợp lệ.
Ràng buộc và chấm điểm
Ràng buộc
- ~1 \le n, k \le 10^5~
- ~a_i~ là số nguyên dương
- ~a_1 + a_2 + \cdots + a_k = n~
- ~a_1 \oplus a_2 \oplus \cdots \oplus a_k = 0~
Bình luận