#include <iostream>
#include <cmath>
using namespace std;
unsigned long powTable[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
int quasi_binary(int num, int tens)
{
int res,digit;
if(num == 0)
{
return 0;
}
digit = num%10;
num = num/10;
res = quasi_binary(num, tens+1);
if(digit)
{
cout << 1;
return ((digit-1)*powTable[tens]+res);
}
else
{
cout << 0;
return res;
}
}
int main()
{
int n,k=-1,temp,digit;
cin >> n;
//this loop calculates the value of k,as it needs to be printed first
temp=n;
while(temp)
{
digit = temp%10;
temp = temp/10;
if(digit>k)
k=digit;
}
cout << k << endl;
//print those k quasi-numbers
while(n)
{
n = quasi_binary(n,0);
cout << " ";
}
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxjbWF0aD4KICAgIAogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgICB1bnNpZ25lZCBsb25nIHBvd1RhYmxlW10gPSB7IDEsIDEwLCAxMDAsIDEwMDAsIDEwMDAwLCAxMDAwMDAsIDEwMDAwMDAsIDEwMDAwMDAwLCAxMDAwMDAwMDAsIDEwMDAwMDAwMDAgfTsKICAgIAogICAgaW50IHF1YXNpX2JpbmFyeShpbnQgbnVtLCBpbnQgdGVucykKICAgIHsKICAgIAlpbnQgcmVzLGRpZ2l0OwogICAgCiAgICAJaWYobnVtID09IDApCiAgICAJewogICAgCQlyZXR1cm4gMDsKICAgIAl9CiAgICAKICAgIAlkaWdpdCA9IG51bSUxMDsKICAgIAludW0gPSBudW0vMTA7CiAgICAKICAgIAlyZXMgPSBxdWFzaV9iaW5hcnkobnVtLCB0ZW5zKzEpOwogICAgCiAgICAJaWYoZGlnaXQpCiAgICAJewogICAgCQljb3V0IDw8IDE7CiAgICAJCXJldHVybiAoKGRpZ2l0LTEpKnBvd1RhYmxlW3RlbnNdK3Jlcyk7CiAgICAJfQogICAgCWVsc2UKICAgIAl7CiAgICAJCWNvdXQgPDwgMDsKICAgIAkJcmV0dXJuIHJlczsKICAgIAl9CiAgICB9CiAgICAKICAgIGludCBtYWluKCkKICAgIHsKICAgIAlpbnQgbixrPS0xLHRlbXAsZGlnaXQ7CiAgICAJY2luID4+IG47CiAgICAKICAgIAkvL3RoaXMgbG9vcCBjYWxjdWxhdGVzIHRoZSB2YWx1ZSBvZiBrLGFzIGl0IG5lZWRzIHRvIGJlIHByaW50ZWQgZmlyc3QKICAgIAl0ZW1wPW47CiAgICAJd2hpbGUodGVtcCkKICAgIAl7CiAgICAJCWRpZ2l0ID0gdGVtcCUxMDsKICAgIAkJdGVtcCA9IHRlbXAvMTA7CiAgICAKICAgIAkJaWYoZGlnaXQ+aykKICAgIAkJCWs9ZGlnaXQ7CiAgICAJfQogICAgCWNvdXQgPDwgayA8PCBlbmRsOwogICAgCiAgICAJLy9wcmludCB0aG9zZSBrIHF1YXNpLW51bWJlcnMKICAgIAl3aGlsZShuKQogICAgCXsKICAgIAkJbiA9IHF1YXNpX2JpbmFyeShuLDApOwogICAgCQljb3V0IDw8ICIgIjsKICAgIAl9CiAgICAJcmV0dXJuIDA7CiAgICB9IAo=