# 自作ライブラリ # https://github.com/takumi-okamoto/competitive-programming-public/tree/main/mylib import sys import math sys.setrecursionlimit(10**8) def debug(*args): print(*args, file=sys.stderr) def solve(l): if l in [3, 4, 5]: return "3 4 5" # a = k(m**2-n**2) # b = 2kmn # c = k(m**2 + n**2) # gcd(m, n) = 1 m = 1 while m * m < l: # lが素数の場合 # m ** 2 + n ** 2 = l n2 = l - m * m n1 = int(n2**0.5) for d in [-1, 0, 1]: n = n1 + d if n * n == n2: break else: n = None if n is not None: g = math.gcd(m, n) k = g**2 m = m // g n = n // g if m > n: return f"{k*(m**2 - n**2)} {2*k*m*n} {k*(m**2+n**2)}" m += 1 n = 1 while 2 * n * n <= l: if l % (2 * n) == 0: m = l // (2 * n) if m > n: g = math.gcd(m, n) m //= g n //= g k = g * g return f"{k*(m**2 - n**2)} {2*k*m*n} {k*(m**2+n**2)}" n += 1 d = 1 while d * d <= l: if l % d == 0: if (l // d - d) % 2 == 0: n = (l // d - d) // 2 m = 2 * n + d if m > n: g = math.gcd(m, n) m //= g n //= g k = g * g return f"{k*(m**2 - n**2)} {2*k*m*n} {k*(m**2+n**2)}" d += 1 def main(): t = int(input()) ans = [] for _ in range(t): ans.append(solve(int(input()))) print(*ans, sep="\n") # for abc in ans: # a, b, c = map(int, abc.split()) # assert a**2 + b**2 == c**2 if __name__ == "__main__": main()