import sys, time, random, heapq, math, itertools, copy from collections import deque, Counter, defaultdict #from sortedcontainers import SortedSet, SortedList from bisect import bisect, bisect_left, bisect_right import heapq as hq from functools import cache, cmp_to_key def debug(*x):print('debug:',*x, file=sys.stderr) #sys.setrecursionlimit(300000) input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 61 - 1 mod = 998244353 dir = [(0, 1), (0, -1), (1, 0), (-1, 0)] T = ii() all_018 = [] tes = "abcd" tes += "e" tes[-1] def dfs(i:list): global all_018 if i: value = int("".join(i)) if value > 81181819: return 0 all_018.append(value) if i: i.append("0") dfs(i) i.pop(-1) i.append("1") dfs(i) i.pop(-1) i.append("8") dfs(i) i.pop(-1) dfs([]) all_018.sort() L = len(all_018) for _ in range(T): N = ii() rest = 81181819 - N ans = [] for i in range(L-1,-1,-1): while all_018[i] <= rest: rest -= all_018[i] ans.append(all_018[i]) print(len(ans)) for i in range(len(ans)): print(ans[i])