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.
1
669278611
 10
10
52
91
23
44
99
28
54
99
51

334639303 334639307 1
 4 5 1
25 26 1
43 47 1
9 13 1
21 22 1
47 51 1
13 14 1
26 27 1
47 51 1
23 27 1

import static java.lang.Math.max;
import static java.lang.Math.min;
import static java.lang.Math.abs;
import static java.lang.System.out;
import java.io.*;
import java.util.*;

public class B_GCD_Problem
{
    public static void main(String[] args) 
    {
		FastScanner fs=new FastScanner();
        int testCase=1;
        testCase=fs.nextInt();
        // int k=1;
        for(int TT=0;TT<testCase;TT++)
        {
            int n=fs.nextInt();
            int c=1;
            int a;
            int b;
            if((n-1)%2==0)
            {
                int j=3;
                for(;gcd((n-1-j),j)==1;j++);
                a=j;
                b=n-1-j;
            }
            else
            {
                a=2;
                b=n-1-a;
            }
            out.println(a+" "+b+" "+c);
            // out.println("Case #" + k + ": ");
            // k++;
        }
    }
    public static int gcd(int a, int b)
    {
        if (a == 0)
            return b;
          
        return gcd(b%a, a);
    }
    static void sort(int[] a) 
    {
		ArrayList<Integer> l=new ArrayList<>();
		for (int i:a) l.add(i);
		Collections.sort(l);
		for (int i=0; i<a.length; i++) a[i]=l.get(i);
	}
    static class FastScanner 
    {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer("");
        private char NC = (char) 0;
        private char c = NC;
        private double cnt = 1;
        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());
        }
        public double nextDouble() {
            double cur = nextLong();
            return c != '.' ? cur : cur + nextLong() / cnt;
        }
     
        public double[] nextDoubles(int N) {
            double[] res = new double[N];
            for (int i = 0; i < N; i++) {
                res[i] = nextDouble();
            }
            return res;
        }
    }
    public static void print(int[] arr)
    {
        //for debugging only
        for(int x: arr)
            out.print(x+" ");
        out.println();
    }
    
    
}