#include <bits/stdc++.h>
using namespace std;
vector<long long> q[19];
long long num[3] = {0, 4, 7};
long long sum[19];
long long bit[19];
long long n;
int m;
bool dfs(long long k, long long s) {
  long long ans, tmp, len;
  if (k == -1 && s == 0) return true;
  if (k == -1 && s != 0) return false;
  if (s * 10 + bit[k] > 42) {
    q[k].clear();
    return false;
  }
  tmp = ans = s * 10 + bit[k];
  for (int i = 0; i <= ans / 7; i++) {
    q[k].clear();
    tmp = ans;
    for (int j = 0; j < i; j++) {
      q[k].push_back(7);
      tmp -= 7;
    }
    if (q[k].size() + tmp / 4 > 6) continue;
    len = tmp / 4;
    for (int j = 0; j < len; j++) q[k].push_back(4);
    if (dfs(k - 1, tmp % 4)) return true;
  }
  q[k].clear();
  if (ans < 5 && dfs(k - 1, ans)) return true;
  return false;
}
void init() {
  long long k = n;
  m = 0;
  for (int i = 0; i < 19; i++) q[i].clear();
  while (k > 0) {
    bit[m++] = k % 10;
    k /= 10;
  }
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    cin >> n;
    init();
    if (!dfs(m - 1, 0)) {
      cout << "-1" << endl;
      continue;
    }
    for (int i = m - 1; i >= 1; i--) {
      if (q[i].size() == 0) continue;
      if (q[i].size() + q[i - 1].size() <= 6) {
        for (int j = 0; j < q[i].size(); j++) q[i - 1].push_back(q[i][j] * 10);
      } else {
        int k = 0;
        for (int j = q[i - 1].size(); j < 6; j++) {
          if (k >= q[i].size()) break;
          q[i - 1].push_back(q[i][k] * 10);
          k++;
        }
        for (int j = 0; k < q[i].size(); k++) {
          if (j >= q[i - 1].size()) break;
          q[i - 1][j] = q[i][k] * 10 + q[i - 1][j];
          j++;
          if (j >= q[i - 1].size()) break;
        }
      }
      q[i].clear();
    }
    for (int i = 0; i < q[0].size(); i++) cout << q[0][i] << " ";
    if (q[0].size() < 6) {
      for (int i = q[0].size(); i < 6; i++) cout << "0 ";
    }
    cout << endl;
  }
  return 0;
}
