#include <iostream>
#include <cstring>
using namespace std;
const int Q = 100000;
typedef long long ll;
#define int ll
int luck[Q];
int dp[8][2*Q];
int ls[1024];
int K=0;
ll X;
ll p10[32];
int dp2[32][8];
int dfs(int k, int t) {
	ll v = X/p10[k];
	if (k>18) v=0;
	if (v==0) return 0;
	if (t==0) return -1;
	if (dp2[k][t]>=0) return dp2[k][t];
	for(int i=1; i<=5; ++i) {
		ll a = p10[i];
		if (dp[6][v%a]<0) continue;
		if (dfs(k+i, t-1)>=0)
			return dp2[k][t] = i;
	}
	return dp2[k][t] = -1;
}
int res[32][6];
void wres(int i, int x) {
//	cout<<"wres "<<i<<' '<<x<<'\n';
	for(int k=6; k>0; --k) {
		int y = dp[k][x];
		res[i][k-1] = y;
		x -= y;
	}
}
main() {
	p10[0]=1;
	for(int i=1; i<22; ++i) p10[i]=10*p10[i-1];
	ls[K++]=4;
	ls[K++]=7;
	for(int i=0; i<K; ++i) {
		int x = ls[i];
		if (x > Q/10) continue;
		ls[K++] = 10*x;
		ls[K++] = 10*x+4;
		ls[K++] = 10*x+7;
	}
	ls[K++] = 0;
//	cout<<K<<'\n';
//	for(int i=0; i<K; ++i) cout<<ls[i]<<' ';cout<<'\n';
	memset(dp,-1,sizeof(dp));
	dp[0][0] = 0;
	for(int i=0; i<6; ++i) {
		for(int j=0; j<Q; ++j) {
			if (dp[i][j]<0) continue;
//			cout<<"jee "<<i<<' '<<j<<'\n';
			for(int k=0; k<K; ++k)
				dp[i+1][j+ls[k]] = ls[k];
		}
	}
//	for(int i=0; i<Q; ++i) if (dp[6][i]<0) cout<<i<<' ';cout<<'\n';
	int t;cin>>t;
	while(t--) {
		memset(dp2,-1,sizeof(dp2));
		cin>>X;
		int p=0;
		int z=0;
		int lens[32];
		while(1) {
			int r = dfs(p,6);
			if (r<0) {
				cout<<"-1\n";
				goto nexti;
			}
			if (r==0) break;
			lens[z] = p;
			wres(z++, X/p10[p]%p10[r]);
			p += r;
		}
		for(int i=0; i<6; ++i) {
			ll x=0;
			for(int j=0; j<z; ++j) {
				x += res[j][i]*p10[lens[j]];
			}
			if (i) cout<<' ';
			cout<<x;
		}
		cout<<'\n';
nexti:;
#if 0
		if (x<Q) {
			for(int i=6; i>0; --i) {
				if (i<6) cout<<' ';
				cout<<dp[i][x];
				if (dp[i][x]<0) break;
				x -= dp[i][x];
			}
			cout<<'\n';
		}
#endif
	}
}
