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: //package codeforces;
  import java.util.*;
  import java.lang.*;
  import java.io.*;
  public class Solution {
  	static class FastReader {
  		BufferedReader br;
  		StringTokenizer st;
  
  		public FastReader() {
  			br = new BufferedReader(new InputStreamReader(System.in));
  		}
  
  		String next() {
  			while (st == null || !st.hasMoreElements()) {
  				try {
  					st = new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			}
  			return st.nextToken();
  		}
  
  		int ni() { 
  			return Integer.parseInt(next());
  		}
  
  		long nl() {
  			return Long.parseLong(next());
  		}
  
  		double nd() {
  			return Double.parseDouble(next());
  		}
  
  		String nextLine() {
  			String str = "";
  			try {
  				str = br.readLine();
  			} catch (IOException e) {
  				e.printStackTrace();
  			}
  			return str;
  		}
  	}
  
  	// MAIN FUNCTION
  //	static long mod = (long)(1e9)+7;
  //	static int nn = (int)1e6;
  //	static long fact[] = new long[nn+1];
  //	static long invFact[] = new long[nn+1];
  	public static void main(String[] args) throws java.lang.Exception {
   		FastReader fr = new FastReader();
   		PrintWriter out = new PrintWriter(System.out);
  // 		initForNcr();
   		int t = fr.ni();
   		boolean arr [] = new boolean[1000001];
   		SOE(arr , 1000000);
  		while(t-->0) {
  			int n = fr.ni();
  			if((n&1) == 0) {
  				out.println((n-3) + " " + 2 + " " + 1);
  			}else {
  				int num = 0;
  				n--;
  				for(int i = Math.min(n-2, 1000000) ; i >= 1 ; i--) {
  					if(arr[i]) {
  						int rem = n-i;
  						if(rem > i && rem%i == 0)continue;
  						num = i;
  						break;
  					}
  				}
  				out.println(num + " " + (n-num) + " " + 1);
  			}
  		}
  		out.close();
  	}
  	public static void SOE(boolean arr[] ,int n){
  	    for(int i = 2 ; i <= n ; i++){
  	        arr[i] = true;
  	    }
  	    for(int i = 2 ; i*i <= n ; i++){
  	        if(arr[i]){
  	            for(int j = i*i ; j <= n ; j+= i){
  	            	if(j < 0)break;
  	                arr[j] = false;
  	            }
  	        }
  	    }
  	    return;
  	}
  }