#include <bits/stdc++.h>
using namespace std;
const int NMax = 5100;
struct pii {
  int x, y;
};
pii mp(int x, int y) {
  pii ret;
  ret.x = x;
  ret.y = y;
  return ret;
}
int N, D[20], nn;
pii last[20][15];
int dp[20][15], cnt4[20][15], cnt7[20][15];
long long num[10];
int main() {
  scanf("%d", &N);
  while (N--) {
    long long x;
    scanf("%I64d", &x);
    nn = 0;
    memset(D, 0, sizeof(D));
    long long tmp = x;
    while (tmp) {
      D[nn++] = tmp % 10;
      tmp /= 10;
    }
    memset(dp, 0, sizeof(dp));
    dp[0][0] = 1;
    for (int i = 0; i <= 18; i++) {
      for (int j = 0; j <= 9; j++)
        if (dp[i][j]) {
          for (int k = 0; k <= 6; k++) {
            for (int l = 0; l <= 6 - k; l++) {
              int x = k * 4 + l * 7 + j;
              if (x % 10 != D[i]) continue;
              x /= 10;
              dp[i + 1][x] = 1;
              cnt4[i + 1][x] = k;
              cnt7[i + 1][x] = l;
              last[i + 1][x] = mp(i, j);
            }
          }
        }
    }
    if (!dp[19][0]) {
      puts("-1");
      continue;
    }
    pii p = mp(19, 0);
    for (int i = 1; i <= 6; i++) num[i] = 0;
    while (p.x != 0) {
      for (int i = 1; i <= 6; i++) num[i] *= 10;
      for (int i = 1; i <= cnt4[p.x][p.y]; i++) num[i] = num[i] + 4;
      for (int i = 1; i <= cnt7[p.x][p.y]; i++)
        num[cnt4[p.x][p.y] + i] = num[cnt4[p.x][p.y] + i] + 7;
      p = last[p.x][p.y];
    }
    for (int i = 1; i <= 6; i++) printf("%I64d ", num[i]);
    puts("");
  }
  getchar();
  getchar();
  return 0;
}
