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: #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;
  }
  