111111
 100009
 10011
 1000000
 8
 10201
 102030
 908172
 123456
 415
 900000
 21
 909090
 314159
 999999
 909823
 987654
 1453
 1435
 98
 10
 2
 1

1
111111
 9
100001 1 1 1 1 1 1 1 1
 1
10011
 1
1000000
 8
1 1 1 1 1 1 1 1
 2
10101 100
 3
101010 1010 10
 9
101111 101011 101010 101010 101010 101010 101010 101000 100000
 6
111111 11111 1111 111 11 1
 5
111 101 101 101 1
 9
100000 100000 100000 100000 100000 100000 100000 100000 100000
 2
11 10
 9
101010 101010 101010 101010 101010 101010 101010 101010 101010
 9
111111 101011 101011 1011 11 1 1 1 1
 9
111111 111111 111111 111111 111111 111111 111111 111111 111111
 9
101111 101111 101101 101100 101100 101100 101100 101100 101000
 9
111111 111111 111111 111111 111110 111100 111000 110000 100000
 5
1111 111 111 110 10
 5
1111 111 111 101 1
 9
11 11 11 11 11 11 11 11 10
 1
10
 2
1 1
 1
1

//Jatin Kumar
//jatiny17

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long int ulli;
typedef long long lli;
typedef double dd;
typedef pair<lli,lli> pp;

#define mod 1000000007
#define print1(a) cout<<a<<"\n";
#define print2(a,b) cout<<a<<" "<<b<<"\n";
#define print3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define print4(a,b,c,d) cout<<a<<" "<< b <<" "<<c<<" "<<d<<"\n";
#define s(a) sort(a.begin(),a.end());


//***************************************************//

lli ls(vector<lli>a,lli t)
{   lli n=a.end()-a.begin();
    for(lli i=0;i<n;i++)
    if(a[i]==t)
    return i;
    
    return -1;}

lli bs(vector<lli>a,lli t)
{
    lli n=a.end()-a.begin();
    lli  l=0,r=n-1;
    while(l<=r)
    {lli  mid=(l+r)/2;
    
   if(a[mid]==t)return mid;
   else if (a[mid]>t) r=mid-1;
   else l=mid+1;}
   
   return -1;
}

//***************************************************//

void seive(bool a[],int n)
{
    memset(a,true,n);
    
    a[0]=false;
    a[1]=false;
    
    for(int i=2;i*i<=n;i++)
    {
        if(a[i]==true)
        {
            for(int j=2*i;j<=n;j+=i)
                a[j]=false;
        }
    }
}

lli lcm(lli a,lli b)
{
    return((a*b)/__gcd(a,b));
}
//***************************************************//

lli add(lli a,lli b)
{return ((a%mod)+(b%mod))%mod;}

lli subt(lli a,lli b)
{return ((a%mod)-(b%mod))%mod;}

lli mul(lli a,lli b)
{  return ((a%mod)*(b%mod))%mod;}

//****************************************************//

bool t(const pair<pp,pp>&a,const pair<pp,pp>&b)
{
    if(a.first.first==b.first.first)
    return a.first.second<b.first.second;
    
    return a.first.first<b.first.first;
}


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    lli n;
    cin>>n;
    
    vector<lli> v;
    lli temp=n;
    lli m=0;
    
    while(n)
    {
        temp=n;
        
        //cout<<temp<<"\n";
        
        while(temp)
        {
            lli d=log10(temp);
            
            lli rem=temp/(pow(10,d));
            
            if(rem!=0)
            m=m*10+1;
            
            else
            m=m*10;
            
            temp=temp-rem*pow(10,d);
            d--;
            
            //cout<<m<<" ";
        }
        
        // cout<<m<<"\n";
        
        n-=m;
        v.push_back(m);
        m=0;
    }
    
    cout<<v.size()<<"\n";
    for(auto i:v)
    cout<<i<<" ";
}