description: Given a positive integer n. Find three distinct positive integers a, b, c such that a + b + c = n and \operatorname{gcd}(a, b) = c, where \operatorname{gcd}(x, y) denotes the [greatest common divisor (GCD)](https://en.wikipedia.org/wiki/Greatest_common_divisor) of integers x and y.
  
  Input
  
  The input consists of multiple test cases. The first line contains a single integer t (1 ≤ t ≤ 10^5) — the number of test cases. Description of the test cases follows.
  
  The first and only line of each test case contains a single integer n (10 ≤ n ≤ 10^9).
  
  Output
  
  For each test case, output three distinct positive integers a, b, c satisfying the requirements. If there are multiple solutions, you can print any. We can show that an answer always exists.
  
  Example
  
  Input
  
  
  6
  18
  63
  73
  91
  438
  122690412
  
  
  Output
  
  
  6 9 3
  21 39 3
  29 43 1
  49 35 7
  146 219 73
  28622 122661788 2
  
  Note
  
  In the first test case, 6 + 9 + 3 = 18 and \operatorname{gcd}(6, 9) = 3.
  
  In the second test case, 21 + 39 + 3 = 63 and \operatorname{gcd}(21, 39) = 3.
  
  In the third test case, 29 + 43 + 1 = 73 and \operatorname{gcd}(29, 43) = 1.
solution: import os,sys;from io import BytesIO, IOBase
  BUFSIZE = 8192
  class FastIO(IOBase):
      newlines = 0
      def __init__(self, file):
          self._fd = file.fileno();self.buffer = BytesIO();self.writable = "x" in file.mode or "r" not in file.mode;self.write = self.buffer.write if self.writable else None
      def read(self):
          while True:
              b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
              if not b:break
              ptr = self.buffer.tell();self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines = 0
          return self.buffer.read()
      def readline(self):
          while self.newlines == 0:b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE));self.newlines = b.count(b"\n") + (not b);ptr = self.buffer.tell();self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines -= 1
          return self.buffer.readline()
      def flush(self):
          if self.writable:os.write(self._fd, self.buffer.getvalue());self.buffer.truncate(0), self.buffer.seek(0)
  class IOWrapper(IOBase):
      def __init__(self, file):
          self.buffer = FastIO(file);self.flush = self.buffer.flush;self.writable = self.buffer.writable;self.write = lambda s: self.buffer.write(s.encode("ascii"));self.read = lambda: self.buffer.read().decode("ascii");self.readline = lambda: self.buffer.readline().decode("ascii")
  sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
  try:sys.stdin,sys.stdout=open('in.txt','r'),open('out.txt','w')
  except:pass
  ii1=lambda:int(sys.stdin.readline().strip()) # for interger
  is1=lambda:sys.stdin.readline().strip() # for str
  iia=lambda:list(map(int,sys.stdin.readline().strip().split())) # for List[int]
  isa=lambda:sys.stdin.readline().strip().split() # for List[str]
  mod=int(1e9 + 7);
  from math import inf 
  from collections import defaultdict as dd
  # from math import *
  # from collections import *;
  # from collections import deque as dq 
  # from string import ascii_lowercase,ascii_uppercase
  # from functools import lru_cache
  # sys.setrecursionlimit(500000)
  # from bisect import bisect_left as bl,bisect_right as br
  # from heapq import heapify,heappop,heappush
  # def google(p):print('Case #'+str(p)+': ',end='')
  ###################### Start Here ######################
  from math import gcd
  def main(tt):
      n = ii1()
      if n%2==0:
          c = 1 
          n -= 1 
          a = n//2 
          b = n//2 
          b += 1 
          assert gcd(a,b) == c 
          print(a,b,c)
          return 
      else:
          c = 1
          n -= 1
          a,b = n//2,n//2
          a +=1 ; b-=1 
          if gcd(a,b) == 1:
              print(a,b,c);return 
          for i in range(2,n+1):
              a,b = i , n - i 
              if gcd(a,b)==1 and a!=b:
                  print(a,b,c)
                  return 
      assert 1 == 2
          
  
      
       
  
  
  
  if __name__ == "__main__":
      t = 1 
      t = ii1()
      for _ in range(t):
          main(_)
      
  # snippets
  # @f - for loop 
  # @bfs - breadth first search 
  # @Trie - Trie Data Structure 
  # @rangeupdatepointquery - range update
  # @DS - Disjoint Set
  # @seive - generate seive