Problem: A positive (strictly greater than zero) integer is called round if it is of the form d00...0. In other words, a positive integer is round if all its digits except the leftmost (most significant) are equal to zero. In particular, all numbers from 1 to 9 (inclusive) are round.

For example, the following numbers are round: 4000, 1, 9, 800, 90. The following numbers are not round: 110, 707, 222, 1001.

You are given a positive integer n (1 ≤ n ≤ 10^4). Represent the number n as a sum of round numbers using the minimum number of summands (addends). In other words, you need to represent the given number n as a sum of the least number of terms, each of which is a round number.

Input

The first line contains an integer t (1 ≤ t ≤ 10^4) — the number of test cases in the input. Then t test cases follow.

Each test case is a line containing an integer n (1 ≤ n ≤ 10^4).

Output

Print t answers to the test cases. Each answer must begin with an integer k — the minimum number of summands. Next, k terms must follow, each of which is a round number, and their sum is n. The terms can be printed in any order. If there are several answers, print any of them.

Example

Input


5
5009
7
9876
10000
10


Output


2
5000 9
1
7 
4
800 70 6 9000 
1
10000 
1
10 

Solution (in JAVA):

Solution:
//import java.io.*;
//import java.util.*;
//import java.util.HashMap;


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

public class Equal {
    static class tri implements Comparable<tri> {
        int inc;
        int dec;
        int sum;

        public tri(int xx, int modd, int s) {
            inc = xx;
            dec = modd;
            sum = s;
        }

        public int compareTo(tri o) {
            if (dec < o.dec)
                return -1;
            if (dec > o.dec)
                return 1;
            return 0;
        }

        @Override
        public boolean equals(Object obj) {
            return inc == ((tri) obj).inc && dec == ((tri) obj).dec;
        }
    }

    //    static long mem[][][];
    //    static long in[][];
    //    static int N, K;
    //
    //    static long dp(int i, int j, int p) {
    //        if (i >= N)
    //            return 0;
    //        if (j >= K)
    //            return 0;
    //        if (p <= 0)
    //            return 0;
    //        if (mem[i][j][p] != -1)
    //            return mem[i][j][p];
    //        return mem[i][j][p] = Math.max(in[i][j] + dp(i, j + 1, p - 1), Math.max(dp(i + 1, 0, p), in[i][j] + dp(i + 1, 0, p - 1)));
    //    }
    static int Replacements(tri[] arr, int sum) {
        int res = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i].sum == sum) continue;
            if (sum < arr[i].sum) {
                if (arr[i].sum - sum <= arr[i].dec)
                    res++;
                else
                    res += 2;
            } else {
                if (sum - arr[i].sum <= arr[i].inc)
                    res++;
                else res += 2;
            }
        }
        return res;
    }

    static HashMap<Character, Integer>[] hms;
    static int[] p;
    static int[] rank;
    static char[] chars;

    static int findSet(int i) {
        return p[i] == i ? p[i] : (p[i] = findSet(p[i]));
    }

    static boolean inSameSet(int i, int j) {
        return findSet(i) == findSet(j);
    }

    static void union(int x, int y) {
        if (inSameSet(x, y)) return;
        int i = findSet(x);
        int j = findSet(y);
        if (rank[i] > rank[j]) {
            p[j] = i;

            return;
        }
        if (rank[i] < rank[j]) {
            p[i] = j;

        } else {
            p[j] = i;
            rank[i]++;
        }
    }


    public static void main(String[] args) throws IOException {
        //BufferedReader br=new BufferedReader(new FileReader("input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        PrintWriter out = new PrintWriter(System.out);

        int t = Integer.parseInt(br.readLine());
        while (t-- > 0) {
           
            String n=br.readLine();
            int c=0;
            for (int i = 0; i < n.length(); i++) {
                if(n.charAt(i)=='0')
                    continue;
                c++;
            }
            out.println(c);
            for (int i = 0; i <n.length() ; i++) {
                if(n.charAt(i)=='0')
                    continue;
                out.print(n.charAt(i));
                for (int j = 0; j <n.length()-i-1 ; j++) {
                    out.print("0");
                }
                out.println();
            }
        }
        out.flush();
        out.close();

    }

}