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 java.io.*;
  import java.util.*;
  
  public class Main {
      class Joinset{
          int father[];
          Joinset(int n){
              father = new int[n];
              for(int i = 0;i < n;i++) father[i] = i;
          }
          int find(int x){
              int old = x;
              while(x != father[x]){
                  x = father[x];
              }
              while(old != x){
                  int oldfather = father[old];
                  father[old] = x;
                  old = oldfather;
              }
              return x;
          }
          void join(int x, int y){
              int rx = find(x);
              int ry = find(y);
              if(rx != ry){
                  father[rx] = ry;
              }
          }
      }
      static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
      static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
      static int mod = (int)1e9+7;
      static boolean[] isprime=new boolean[1];
      static {
          for(int i=2;i<isprime.length;i++) isprime[i]=true;
          for(int i=2;i<isprime.length;i++) {
              if(isprime[i]) {
                  for(int k = 2; i*k<isprime.length; k++) {
                      isprime[i*k] = false;
                  }
              }
          }
      }
      public static long gcd(long a, long b){
          return b == 0 ? a : gcd(b,a%b);
      }
      public static long lcm(long a, long b){
          return a*b / gcd(a,b);
      }
      public static int get() throws Exception{
          String ss = bf.readLine();
          if (ss.contains(" ")) ss = ss.substring(0, ss.indexOf(" "));
          return Integer.parseInt(ss);
      }
      public static int[] getMore() throws Exception{
          String s[] = bf.readLine().split(" ");
          int[] a = new int[s.length];
          for(int i = 0;i < a.length;i++){
              a[i] = Integer.parseInt(s[i]);
          }
          return a;
      }
      public static int[] getInt() throws Exception {
          String s[] = bf.readLine().split(" ");
          int[] a = new int[s.length];
          for(int i = 0;i < a.length;i++){
              a[i] = Integer.parseInt(s[i]);
          }
          return a;
      }
      public static long[] getLong() throws Exception {
          String s[] = bf.readLine().split(" ");
          long[] a = new long[s.length];
          for(int i = 0;i < a.length;i++){
              a[i] = Long.parseLong(s[i]);
          }
          return a;
      }
      public static void print(int[] a) throws Exception {
          for(int i : a){
              bw.write(i + " ");
          }
          println();
      }
      public static void print(long[] a) throws Exception {
          for(long i : a){
              bw.write(i + " ");
          }
          println();
      }
      public static void println() throws Exception{
          bw.write("\n");
      }
      public static long pow(long a, long b){
          long ans = 1;
          while(b > 0){
              if((b&1) == 1){
                  ans *= a;
              }
              a*=a;
              b>>=1;
          }
          return ans;
      }
      public static int powmod(long a, long b, int mod){
          long ans = 1;
          while(b > 0){
              if((b&1) == 1){
                  ans = ans * a % mod;
              }
              a = a * a % mod;
              b>>=1;
          }
          return (int)ans;
      }
      public static void sort(int[] a){
          int n = a.length;
          Integer[] b = new Integer[n];
          for(int i = 0;i < n;i++) b[i] = a[i];
          Arrays.sort(b);
          for(int i = 0;i < n;i++) a[i] = b[i];
      }
  
      public static void main(String[] args) throws Exception {
          int t = get();
          while (t-- > 0) {
              int n = get();
              int a[] = new int[3];
              if(n % 2 == 0){
                  a[2] = 1;
                  a[1] = n/2;
                  a[0] = n/2-1;
              }else{
                  a[2] = 1;
                  int m = (n-1)/2;
                  if(m % 2 == 0){
                      a[1] = m-1;
                      a[0] = m+1;
                  }else{
                      a[1] = m-2;
                      a[0] = m+2;
                  }
              }
              print(a);
          }
          bw.flush();
      }
  }