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.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class QuasiBinary {
	
	public static void main(String args[]){
		int length = 1000001;
		int[] arr = new int[length];
		int[] max_quasi = new int[length];
		List<Integer> qua_bin = new ArrayList<Integer>();
		qua_bin.add(1);
		arr[1] = 1;
		max_quasi[1] = 1;
		for(int i = 2; i < length; i++){
			if(isQuasi(i)){
				qua_bin.add(i);
				arr[i] = 1;
				max_quasi[i] = i;
				continue;
			}
			int min = Integer.MAX_VALUE;
			Iterator<Integer> itr = qua_bin.iterator();
			int q_num;
			while(itr.hasNext()){
				q_num = itr.next();
				if(min >= arr[i - q_num] + 1){
					min = arr[i - q_num] + 1;
					max_quasi[i] = q_num;
				}
			}
			arr[i] = min;
		}
		
/*		for(int i = 1; i < length; i++){
			System.out.println(i + ":" + arr[i] + " " + max_quasi[i]);
		}
*/		
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		scan.close();
		System.out.println(arr[num]);
		
/*		int q_num = max_quasi[num];
		System.out.print(q_num + " ");
		while(q_num != -1){
			if(num - q_num > 0){
				q_num = 
			}
		}
	
*/		do{
			System.out.print(max_quasi[num] + " ");
			num = num - max_quasi[num];
/*			System.out.println(num);
*/		}while(num > 0); 
	}
	
	public static boolean isQuasi(int num){
		boolean quasi = true;
		while(num > 0){
			if(num % 10 != 0 && num % 10 != 1){
				quasi = false;
				break;
			}
			num = num / 10;
		}
		return quasi;
	}

}
