#include <bits/stdc++.h>
using namespace std;
inline long long rd() {
  long long x = 0, f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
  return x * f;
}
const long long N = 300010;
struct edge {
  long long v, w, nx;
} e[N << 1];
long long hd[N], cnt;
void add(long long u, long long v, long long w) {
  e[++cnt] = (edge){v, w, hd[u]};
  hd[u] = cnt;
}
long long qp(long long a, long long b, long long p) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % p;
    a = a * a % p;
    b >>= 1;
  }
  return ans;
}
long long t, n, m;
long long a, b, c;
long long pr[25] = {0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
int main() {
  int tt = rd();
  while (tt--) {
    n = rd();
    c = 1;
    n--;
    if (n & 1) {
      printf("2 %lld 1\n", n - 2);
      continue;
    } else {
      for (long long i = 1; i <= 13; i++) {
        if (n % pr[i] == 0) continue;
        printf("%lld %lld %lld\n", pr[i], n - pr[i], 1);
        break;
      }
    }
  }
  return 0;
}

### Prompt

Develop a solution in Cpp to the problem described below:

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.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
inline long long rd() {
  long long x = 0, f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
  return x * f;
}
const long long N = 300010;
struct edge {
  long long v, w, nx;
} e[N << 1];
long long hd[N], cnt;
void add(long long u, long long v, long long w) {
  e[++cnt] = (edge){v, w, hd[u]};
  hd[u] = cnt;
}
long long qp(long long a, long long b, long long p) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % p;
    a = a * a % p;
    b >>= 1;
  }
  return ans;
}
long long t, n, m;
long long a, b, c;
long long pr[25] = {0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
int main() {
  int tt = rd();
  while (tt--) {
    n = rd();
    c = 1;
    n--;
    if (n & 1) {
      printf("2 %lld 1\n", n - 2);
      continue;
    } else {
      for (long long i = 1; i <= 13; i++) {
        if (n % pr[i] == 0) continue;
        printf("%lld %lld %lld\n", pr[i], n - pr[i], 1);
        break;
      }
    }
  }
  return 0;
}

```