// LUOGU_RID: 129858861
/*
A+b[b-1]>c[c]-1
A+b[b]-1<c[c-1]
c[c-1]~~~~~~~~~~~ c[c]-1
A+b[b-1] A+b[b]-1
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
//#include<queue>
//#include<vector>
//#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=1e1 +10;
const int mod=998244353;
const int inf=0x3f3f3f3f;
ll p[20]={1};
ll a,b,c,k;
void solve(ll a,ll b,ll c,ll k)
{
ll cnt=0;
for(int A=p[a-1];A<=p[a]-1;A++)
{
if(A+p[b-1]>p[c]-1||A+p[b]-1<p[c-1]) continue;
int l=max(p[c-1],A+p[b-1]),r=min(p[c]-1,A+p[b]-1);
//if(l>r) continue;
if(cnt+(r-l+1)>=k)
{
cout<<A<<" + "<<l+(k-cnt-1)-A<<" = "<<l+(k-cnt-1)<<'\n';
return;
}
else cnt+=(r-l+1);
}
cout<<"-1\n";
}/*
void solve(){
ll cnt=0;
for(int A=p[a-1];A<p[a];++A){
int l=max(p[b-1]+A,p[c-1]),r=min(p[b]-1+A,p[c]-1);
if(l>r)
continue;
if(cnt+(r-l+1)>=k){
cout<<A<<" + "<<l+(k-cnt-1)-A<<" = "<<l+(k-cnt-1)<<endl;
return;
}
cnt+=(r-l+1);//exceed
}
cout<<"-1\n"<<endl;
}*/
int main()
{
ios::sync_with_stdio(false);
for(int i=1;i<=10;i++) p[i]=p[i-1]*10;
int T;cin>>T;
while(T--)
{
cin>>a>>b>>c>>k;
solve(a,b,c,k);
}
return 0;
}