Masala #ANS0IZGUQC

Xotira 32 MB Vaqt 1000 ms
14

Robot muhandissi

Uzoq kelajakda siz robotni dasturlash bo'yicha yetakchi muhandissiz. Sizga yangi vazifa topshirildi.

Robotga berilgan butun son \(n\) ni shunday bo'laklarga ajratish kerakki, u bo'laklar raqamlari faqat \(0\) va \(1\) dan iborat bo'lsin. Robot bu bo'laklarni yig'ib, asosiy maqsadni bajarishi kerak. Robot qancha ko'p bo'lak ishlatsa, uning energiya sarfi shuncha yuqori bo'ladi. Shuning uchun siz \(n\) ni imkon qadar minimal bo'laklar soniga ajratishingiz kerak.

Bo'laklash shartlari:

  • Robot bo'laklarni yig'ib, sonni qayta tiklay olishi kerak \(a_1+a_2+...+a_k=n\).
  • Har bir bo'lak \(a_i\) faqat \(0\) va \(1\) raqamlaridan tashkil topgan son (masalan, \(1,10,11,100,...\)) bo'lishi kerak. Boshqa raqamlar (masalan, \(2,5,9\)) robotning tizimida xatolik keltirib chiqaradi.
  • Robot bo'laklarning sonini minimal qilishga intilishi kerak.

Sizga berilgan topshiriq shundan iboratki, yuqoridagi shartlarni qonoatlantiradigan dasturni robotga yozib berishdan iborat.


Kiruvchi ma'lumotlar:

Kirish faylining yagona satrida \(n(1\leq n\leq 10^6)\) butun soni beriladi.


Chiquvchi ma'lumotlar:

Chiqish faylining dastlabki satrida minimal \(k\) sonini chop eting, kiyingi satrda probil bilan ajratilgan holda \(a_1,a_2,...,a_k\) ni chop etasiz. Agar bir nechta yechim mavjud bo'lsa ulardan birini chop etishingiz mumkun.


Misollar
# input.txt output.txt
1
4
4
1 1 1 1
2
21
2
10 11