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.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.StringTokenizer;
  
  
  
  public class CodeForces {
  
      
      static class FastScanner {
  		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  		StringTokenizer st=new StringTokenizer("");
  		String next() {
  			while (!st.hasMoreTokens())
  				try {
  					st=new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			return st.nextToken();
  		}
  		
  		int nextInt() {
  			return Integer.parseInt(next());
  		}
  		int[] readArray(int n) {
  			int[] a=new int[n];
  			for (int i=0; i<n; i++) a[i]=nextInt();
  			return a;
  		}
  		long nextLong() {
  			return Long.parseLong(next());
  		}
  	}
       
   
  	
      
      
      static void sort (int[]a){
          ArrayList<Integer> b = new ArrayList<>();
          for(int i:a)b.add(i);
          Collections.sort(b);
          Collections.reverse(b);
          for(int i=0;i<b.size();i++){
              a[i]=b.get(i);
          }
      }
      
      
      static ArrayList<Integer> sieveOfEratosthenes(int n)
      {
          boolean prime[] = new boolean[n + 1];
          for (int i = 0; i <= n; i++)
              prime[i] = true;
   
          for (int p = 2; p * p <= n; p++)
          {
            
              if (prime[p] == true)
              {
                  for (int i = p * p; i <= n; i += p)
                      prime[i] = false;
              }
          }
   
          
          ArrayList<Integer> ans = new ArrayList<>();
          for (int i = 2; i <= n; i++)
          {
              if (prime[i] == true)
                  ans.add(i);
          }
          
          return ans;
      }
   
      
    
      public static void main(String[] args) throws IOException {
      
          FastScanner fs = new FastScanner();
          StringBuilder sb = new StringBuilder();
          int t = fs.nextInt();
          
          ArrayList<Integer> primes =sieveOfEratosthenes(1000);
          
          for(int i=0;i<t;i++){
              int n = fs.nextInt();
              for (int p : primes){
                  if((n-1-p)%p!=0){
                      sb.append(p+" "+(n-1-p)+" 1").append("\n");
                      break;
                  }
              }
              
          }
      
          System.out.println(sb.toString());
  }
      
  }
  
  