def main(): T = int(input()) array = set() for bit in range(1, 3 ** 8): ar = [] for _ in range(8): if bit % 3 == 1: ar.append(1) elif bit % 3 == 2: ar.append(8) else: ar.append(0) bit //= 3 ar = "".join(map(str, ar)) array.add(int(ar)) array = list(array) array.sort(reverse=True) dp = {0:0} prev = {0:[]} for _ in range(2): new_dp = dp.copy() for key, value in dp.items(): for a in array: new_key = a + key if new_key <= 81181819: if new_key not in new_dp: new_dp[new_key] = value + 1 if key == 0: prev[new_key] = [a] else: prev[new_key] = [a, key] dp = new_dp for _ in range(T): N = int(input()) x = 81181819 - N if x in dp: print(dp[x]) for a in prev[x]: print(a) else: min_answer = float("inf") min_array = [] for i in range(8): ans = i array = [1] * i y = x - i if y < 0: break for key, value in dp.items(): z = y - key if z < 0: continue if z in dp: ans0 = ans + value + dp[z] if min_answer > ans0: min_answer = ans0 min_array = array.copy() min_array.extend(prev[z]) min_array.extend(prev[key]) print(min_answer) for a in min_array: print(a) if __name__ == "__main__": main() # main2()