//#pragma GCC optimize ("O3")
#include <iostream>
#include <algorithm>
using namespace std;
void solve() {
using ll = long long;
auto min_val{[](int d) {
ll mn{1};
for (int i{1}; i < d; ++i) mn *= 10;
return mn;
}};
auto max_val{[](int d) {
ll mx{};
for (int i{0}; i < d; ++i) mx = (mx * 10) + 9;
return mx;
}};
int a, b, c; ll k;
cin >> a >> b >> c >> k;
ll mna{min_val(a)}, mnb{min_val(b)}, mnc{min_val(c)};
ll mxa{max_val(a)}, mxb{max_val(b)}, mxc{max_val(c)};
for (ll i{max(mna, mnc - mxb)}; i <= min(mxa, mxc - mnb); ++i) {
ll mn{max(mnb, mnc - i)}, mx{min(mxb, mxc - i)};
if (k <= mx - mn + 1) {
cout << i << " + " << mn + k - 1 << " = " << (i + mn + k - 1) << '\n';
return ;
} else k -= mx - mn + 1;
}
cout << "-1\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t{1};
cin >> t;
while (t--) solve();
}
450A - Jzzhu and Children | 546A - Soldier and Bananas |
32B - Borze | 1651B - Prove Him Wrong |
381A - Sereja and Dima | 41A - Translation |
1559A - Mocha and Math | 832A - Sasha and Sticks |
292B - Network Topology | 1339A - Filling Diamonds |
910A - The Way to Home | 617A - Elephant |
48A - Rock-paper-scissors | 294A - Shaass and Oskols |
1213A - Chips Moving | 490A - Team Olympiad |
233A - Perfect Permutation | 1360A - Minimal Square |
467A - George and Accommodation | 893C - Rumor |
227B - Effective Approach | 1534B - Histogram Ugliness |
1611B - Team Composition Programmers and Mathematicians | 110A - Nearly Lucky Number |
1220B - Multiplication Table | 1644A - Doors and Keys |
1644B - Anti-Fibonacci Permutation | 1610A - Anti Light's Cell Guessing |
349B - Color the Fence | 144A - Arrival of the General |