#include <bits/stdc++.h>
using namespace std;
int arr[29] = {0,  4,  7,  8,  11, 12, 14, 15, 16, 18, 19, 20, 21, 22,       23,
               24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 36, 39, 42, 100000000};
int decision[111];
bool dfs(long long x, long long dec, int d) {
  if (d < 0) {
    return x == 0;
  }
  int c = upper_bound(arr, arr + 28, x / dec) - arr - 1;
  for (int i = c; i >= 0; --i) {
    if (x - dec * arr[i] > 5 * dec) break;
    decision[d] = arr[i];
    if (dfs(x - dec * arr[i], dec / 10, d - 1)) return true;
  }
  return false;
}
long long ans[11];
int main() {
  int T;
  cin >> T;
  for (int TK = 1; TK <= T; ++TK) {
    long long x;
    cin >> x;
    long long cur = 1, d = 0;
    while (cur * 10 <= x) {
      cur *= 10;
      ++d;
    }
    if (!dfs(x, cur, d)) {
      puts("-1");
      continue;
    }
    cur = 1;
    memset(ans, 0, sizeof ans);
    for (int i = 0; i <= d; ++i) {
      int c = decision[i];
      int c4 = 0, c7 = 0;
      for (int x = 0; x <= 6; ++x)
        for (int y = 0; y <= 6 - x; ++y)
          if (x * 4 + y * 7 == c) {
            c4 = x;
            c7 = y;
          }
      for (int i = 1; i <= c4; ++i) ans[i] += cur * 4;
      for (int i = c4 + 1; i <= c4 + c7; ++i) ans[i] += cur * 7;
      cur *= 10;
    }
    for (int i = 1; i <= 6; ++i) printf("%I64d%c", ans[i], " \n"[i == 6]);
    assert(ans[1] + ans[2] + ans[3] + ans[4] + ans[5] + ans[6] == x);
  }
  return 0;
}
