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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main
{
	static int n;
	static InputReader reader = new InputReader();
	static int num[] = new int[100], tail;
	static int f[] = new int[2000000];
	static int pre[] = new int[2000000];
	
	public static void main(String args[])	throws IOException
	{
		init();
		doit();
	}
	
	static void doit()
	{
		int inf = 100000000;
		for (int i = 0; i <= 1000000; ++ i)	f[i] = inf;
		f[0] = 0;
		pre[0]=-1;
		for (int i = 1; i <= n; ++ i)
		{
			for (int j = 0; j != tail; ++ j)
			{
				if (i - num[j] < 0)	break;
				if (f[i-num[j]] + 1 < f[i])
				{
					f[i] = f[i-num[j]] + 1;
					pre[i] = i-num[j];
				}
			}
			//System.out.println(i+" " + f[i]);
		}
		int now = n;
		int output[] = new int[10000], t=0;
		while (now!=0)
		{
			output[t++]=now-pre[now];
			now=pre[now];
		}
		System.out.println(t);
		for (int i = 0;i!=t;++i)
			System.out.print(output[i]+" ");
		
		
		
	}
	

	
	static void init()	throws IOException
	{
		n = reader.nextInt();
		tail = 0;
		for (int i = 0; i <= 64; ++ i)
		{
			getNum(i);
		}
		/*
		 * debug: 用来输出所有的满足01条件的数字，按顺序
		for (int i = 0; i != tail;++i)
			System.out.print(num[i] +" ");
		*/
	}
	
	static void getNum(int arg)	
	{
		if (arg==0)
		{
			num[tail++]=0;
			return;
		}
		int tmp[]=new int[100];
		int t=0;
		while (arg != 0)
		{
			tmp[t++]=arg%2;
			arg/=2;
		}
		int ret=0;
		for (int i = t-1;i>=0;--i)	ret=ret*10+tmp[i];
		num[tail++]=ret;
	}
	
}

class InputReader
{
	public InputReader() {
		// TODO Auto-generated constructor stub
		tokenizer = new StringTokenizer("");
		reader = new BufferedReader(new InputStreamReader(System.in));
	}
	
	public String nextString()	throws IOException
	{
		while (!tokenizer.hasMoreTokens())
		{
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	
	public int nextInt()	throws IOException
	{
		return Integer.valueOf(nextString());
	}
	StringTokenizer tokenizer;
	BufferedReader reader;
}