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

#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
typedef long long ll;

using namespace std;
using namespace __gnu_pbds;

#define ordered_set tree<pair<ll,ll>, null_type, less<pair<ll,ll>>, rb_tree_tag, tree_order_statistics_node_update>
 
int mod=998244353;
 
// ll binPow(ll a,ll b)
// {
//     if (b == 0)return 1;
//     if (b == 1)return a;
//     ll ret = binPow(a,b/2);
//     if (b%2 == 0)return (ret * ret)%mod;
//     return ((ret * ret)%mod * a)%mod;
// }
// ll inv(ll a)
// {
//     return (binPow(a,mod - 2)%mod + mod)%mod;
// }
// ll binom(ll a,ll b)
// {
//     if (b < 0 or a < 0)return 0;
//     return (((sum[a] * inv(sum[b]))%mod * inv(sum[a - b]))%mod + mod)%mod;
// }
 
// void SieveOfEratosthenes(int n,vector<int>& prime)
// {
//     prime[0]=0;
//     prime[1]=0;
//     for (int p = 2; p * p <= n; p++)
//     {
//         // If prime[p] is not changed,
//         // then it is a prime
//         if (prime[p] == 0)
//         {
//             // Update all multiples
//             // of p greater than or
//             // equal to the square of it
//             // numbers which are multiple
//             // of p and are less than p^2
//             // are already been marked.
//             for (int i = p * p; i <= n; i += p){
//                 if(prime[i]==0)
//                     prime[i]=p;
//                 else 
//                     prime[i]=min(prime[i],p);
//             }
//         }
//     }
//  }

int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int c=1;
        n--;
        if(n%2==0){
            int a=n/2-1;
            int b=n/2+1;
            cout<<a<<" "<<b<<" "<<c<<endl;
        }
        else{
            int a=n/2;
            int b=n/2+1;
            cout<<a<<" "<<b<<" "<<c<<endl;
        }
    }
}