class LIST(object): def __init__(self, a, lis=None, lisc=None): if isinstance(a, LIST): a, lis, lisc = a.a, a.lis, a.lisc if lis is None: lis = a > 0 lisc = a a = range(a-1,-1,-1) self.a = a self.lis = lis self.lisc = lisc super(LIST, self).__init__() def extend(self, lis): a = self.a + range(len(self.a), len(self.a) + lis - self.lis) return LIST(a, lis, self.lisc) def __add__(x, y): y = LIST(y) if x.lisc == 0: return y if y.lisc == 0: return x lis = max(x.lis, y.lis) lisc = x.lisc + y.lisc x = x.extend(lis) y = y.extend(lis) a = [v + len(y.a) for v in x.a] + y.a return LIST(a, lis, lisc) def __mul__(x, y): y = LIST(y) if x.lisc == 0: return x if y.lisc == 0: return y if x.lisc == 1: return y if y.lisc == 1: return x lis = x.lis + y.lis lisc = x.lisc * y.lisc a = x.a + [v + len(x.a) for v in y.a] return LIST(a, lis, lisc) def list(self): return [v + 1 for v in self.a] __radd__ = __add__ __rmul__ = __mul__ def construct(k): return LIST(k) if k == 0 else construct(k / 3) * 3 + k % 3 for cas in xrange(input()): k = input() seq = construct(k).list() print len(seq) print ' '.join(map(str, seq))