def BIT(bit, n): return bit//3**n%3 def digit(num, n): return num//10**n%10 INF = 1<<60 def func(cnt): S = set() for bit in range(3**cnt): SUM = 0 for i in range(cnt): if BIT(bit, i) <= 1: SUM += BIT(bit, i) else: SUM += 8 S.add(SUM) S = list(S) dp = [[False]*7 for _ in range(L+1)] pre = [[-1]*7 for _ in range(L+1)] dp[0][0] = True for i in range(L): d = digit(N, i) for j in range(7): if not dp[i][j]: continue for n in S: if (n+j)%10 == d and not dp[i+1][(n+j)//10]: dp[i+1][(n+j)//10] = True pre[i+1][(n+j)//10] = (j, n) return dp[-1][0], pre for _ in range(int(input())): N = 81181819-int(input()) L = len(str(N)) left = 0 right = 7 while left+1 < right: mid = (left+right)//2 f, pre = func(mid) if not f: left = mid else: right = mid cnt = right _, pre = func(cnt) B = [] now = 0 for i in reversed(range(L)): B.append(pre[i+1][now][1]) now = pre[i+1][now][0] B = B[::-1] ans = [0]*cnt for i in range(L): for bit in range(3**cnt): SUM = 0 for j in range(cnt): if BIT(bit, j) <= 1: SUM += BIT(bit, j) else: SUM += 8 if SUM == B[i]: for j in range(cnt): if BIT(bit, j) <= 1: ans[j] += BIT(bit, j)*10**i else: ans[j] += 8*10**i break print(len(ans)) print(*ans, sep="\n")