Gửi bài giải

Điểm: 1,07 (OI)
Giới hạn thời gian: 0.6s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

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

Hôm nay, Pirate sẽ truyền dạy một kinh nghiệm quý báu cho các anh chàng có nhiều bạn gái...

Tất nhiên là việc lưu số điện thoại vào danh bạ có nhiều lợi ích, nhưng khi bạn gái trả bài: "Anh có nhớ số em không?", trong thâm tâm các nàng luôn muốn câu trả lời bạn là "Anh chỉ nhớ mỗi số em thôi!". Khi số lượng bạn gái tăng lên cũng đồng nghĩa với số lượng số điện thoại bạn cần phải ghi nhớ cũng tăng lên một cách chóng mặt, nhất là với các nàng thích xài SIM khuyến mãi.

Một sự cố thường gặp nhất đó là bạn nhầm số của bé X sang bé Y. Thế là bé X móc ngay điện thoại ra bấm số và có một cuộc "nội chiến" xảy ra.

Vậy làm sao để ghi nhớ các số điện thoại một cách nhanh chóng và an toàn?

Pirate đã nghĩ ra một quy trình mã hóa số điện thoại như sau:

  • Giả sử số điện thoại của bạn được biểu diễn bằng dãy số ~a_{1}~, ~a_{2}~ ,..., ~a_{N}~ ~(0 \le a_{i} \le 9~ với ~1 \le i \le N)~.
  • Đặt ~s_{1}~ = ~a_{1}~, ~s_{i} = s_{i-1} + a_{i}~ (với ~1 < i \le N~).
  • Tìm số thứ tự từ điển của dãy ~s_{N}~ trong tập các dãy được sinh ra từ tất cả các số điện thoại theo nguyên tắc trên. Trừ số đó đi một đơn vị.
  • Trong dãy số ~N~ bit biểu diễn nhị phân của số vừa nhận được, gọi ~K~ là dãy bit 0 liên tiếp nhau dài nhất. Tìm thứ tự từ điển của dãy ~N~ bit trên trong tập các dãy nhị phân ~N~ bit có không quá ~K~ bit 0 liên tiếp, gọi số đó là ~X~.

Nhiệm vụ của bạn là giúp Pirate viết một chương trình giúp tìm ra một số điện thoại nếu biết được ~N~, ~X~ và ~K~.

Lưu ý: dãy số ~a_{N}~ được gọi là lớn hơn dãy số ~b_{N}~ khi và chỉ khi tồn tại một chỉ số ~i~ sao cho ~a_{j} = b_{j}~ (với mọi ~1 \le j < i~) và ~a_{i} > b_{i}~. Trong một tập hợp các dãy số có cùng tính chất nào đó, thứ tự từ điển của một dãy số là số lượng dãy số trong tập không lớn nó (bao gồm cả chính nó).

Input

  • Dòng duy nhất của input chứa ba số nguyên ~N~, ~X~ và ~K~ ~(1 \le N, K \le 30~, ~1 \le X \le 10^{9})~.
  • 30% số test có ~1 \le N, K \le 10~.
  • Dữ liệu vào đảm bảo có kết quả.

Output

  • Gồm một dòng duy nhất ghi ra dãy số ~a_{N}~ ban đầu, các số cách nhau bởi dấu cách.

Sample Input 1

4 3 2

Sample Output 1

0 0 0 4

Sample Input 2

4 5 1

Sample Output 2

0 0 1 1

Note

Giải thích test 1: dãy nhị phân 4 bit thứ 3 có không quá 2 bit 0 liên tiếp là 0100. Đây là biểu diễn của số 4. Từ đó suy ra được dãy ~s_{N}~ là ~(0, 0, 0, 4)~. Vậy dãy ~a_{N}~ là ~(0, 0, 0, 4)~.

Giải thích test 2: dãy nhị phân 4 bit thứ 5 có không quá 1 bit 0 liên tiếp là 1011. Đây là biểu diễn của số 11. Từ đó suy ra được dãy ~s_{N}~ là ~(0, 0, 1, 2)~. Vậy dãy ~a_{N}~ là ~(0, 0, 1, 1)~.


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.