#include <vector> 
#include <list> 
#include <map> 
#include <set> 
#include <deque> 
#include <queue> 
#include <stack> 
#include <bitset> 
#include <algorithm> 
#include <functional> 
#include <numeric> 
#include <utility> 
#include <sstream> 
#include <iostream> 
#include <iomanip> 
#include <cstdio> 
#include <cmath> 
#include <cstdlib> 
#include <cctype> 
#include <string> 
#include <cstring> 
#include <ctime> 

using namespace std;

#define _int64 long long

int bad[10]={1,2,3,5,6,9,10,13,17,27};
_int64 a[20];
int d[20][10];
_int64 ans[20];
_int64 ten[20];

int solve(int x,int rem)
{
  int i,j,k,tmp,tmp1;
  if (x==-1)
  {
    if (rem==0) return 1;
    else return 0;
  }
  if (d[x][rem]!=-1) return d[x][rem];
  tmp=rem*10+a[x];
  for (i=0;i<=6;i++)
    for (j=0;j<=6;j++)
      if (i+j<=6)
      {
        if ((tmp-i*4-j*7>=0)&&(tmp-i*4-j*7<10))
        {
          tmp1=solve(x-1,tmp-i*4-j*7);
          if (tmp1==1)
          {
            for (k=0;k<6;k++)
              if (k<i) ans[k]+=ten[x]*4;
              else if (k<i+j) ans[k]+=ten[x]*7;
            return 1;
          }
        }
      }
  d[x][rem]=0;
  return 0;
}

int main()
{
  int i,l,t,m,tmp;
  _int64 n;
  ten[0]=1;
  for (i=1;i<=18;i++)
    ten[i]=ten[i-1]*10;
  cin>>t;
  for (l=0;l<t;l++)
  {
    cin>>n;
    for (i=0;i<10;i++)
      if (n==bad[i])
      {
        cout<<"-1"<<endl;
        break;
      }
    if (i<10) continue;
    m=0;
    while (n>0)
    {
      a[m]=n%10;
      m++;
      n/=10;
    }
    memset(d,-1,sizeof(d));
    memset(ans,0,sizeof(ans));
    tmp=solve(m-1,0);
    if (tmp==0) cout<<"-1"<<endl;
    else
    {
      for (i=0;i<6;i++)
      {
        if (i!=0) cout<<" ";
        cout<<ans[i];
      }
      cout<<endl;
    }
  }
}
