#include <bits/stdc++.h>
using namespace std;
const int MAX = 121;
const int LIM = 1000001;
string s, n;
bool PLUS[MAX];
bitset<LIM> dp[MAX];
bitset<LIM> vis[MAX];
bool solve(int idx, int rem) {
if (idx == s.length()) {
return rem == 0;
}
if (vis[idx][rem]) {
return dp[idx][rem];
}
vis[idx][rem] = 1;
int x = 0;
for(int i = idx; i < s.length(); ++i) {
x = x * 10 + s[i] - '0';
if (x > rem) {
break;
}
if (solve(i + 1, rem - x)) {
PLUS[i] = 1;
return (dp[idx][rem] = 1);
}
}
return (dp[idx][rem] = 0);
}
int main() {
int t;
cin >> t;
while(t--) {
cin >> s >> n;
int N = 0;
for(int i = 0; i < n.length(); ++i) {
N = N * 10 + n[i] - '0';
}
for(int i = 0; i < s.length(); ++i) {
PLUS[i] = 0;
for(int j = 0; j <= N; ++j) {
dp[i][j] = 0;
vis[i][j] = 0;
}
}
bool get = solve(0, N);
for(int i = 0; i < s.length(); ++i) {
if (i && PLUS[i-1]) {
cout << "+";
}
cout << s[i];
}
cout << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYID0gMTIxOwpjb25zdCBpbnQgTElNID0gMTAwMDAwMTsKCnN0cmluZyBzLCBuOwpib29sIFBMVVNbTUFYXTsKYml0c2V0PExJTT4gZHBbTUFYXTsKYml0c2V0PExJTT4gdmlzW01BWF07Cgpib29sIHNvbHZlKGludCBpZHgsIGludCByZW0pIHsKICBpZiAoaWR4ID09IHMubGVuZ3RoKCkpIHsKICAgIHJldHVybiByZW0gPT0gMDsKICB9CiAgaWYgKHZpc1tpZHhdW3JlbV0pIHsKICAgIHJldHVybiBkcFtpZHhdW3JlbV07CiAgfQogIHZpc1tpZHhdW3JlbV0gPSAxOwogIGludCB4ID0gMDsKICBmb3IoaW50IGkgPSBpZHg7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKICAgIHggPSB4ICogMTAgKyBzW2ldIC0gJzAnOwogICAgaWYgKHggPiByZW0pIHsKICAgICAgYnJlYWs7CiAgICB9CiAgICBpZiAoc29sdmUoaSArIDEsIHJlbSAtIHgpKSB7CiAgICAgIFBMVVNbaV0gPSAxOwogICAgICByZXR1cm4gKGRwW2lkeF1bcmVtXSA9IDEpOwogICAgfQogIH0KICByZXR1cm4gKGRwW2lkeF1bcmVtXSA9IDApOwp9CgppbnQgbWFpbigpIHsKICBpbnQgdDsKICBjaW4gPj4gdDsKICB3aGlsZSh0LS0pIHsKICAgIGNpbiA+PiBzID4+IG47CiAgICBpbnQgTiA9IDA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbi5sZW5ndGgoKTsgKytpKSB7CiAgICAgIE4gPSBOICogMTAgKyBuW2ldIC0gJzAnOwogICAgfQogICAgZm9yKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgewogICAgICBQTFVTW2ldID0gMDsKICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBOOyArK2opIHsKICAgICAgICBkcFtpXVtqXSA9IDA7CiAgICAgICAgdmlzW2ldW2pdID0gMDsKICAgICAgfQogICAgfQogICAgYm9vbCBnZXQgPSBzb2x2ZSgwLCBOKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKICAgICAgaWYgKGkgJiYgUExVU1tpLTFdKSB7CiAgICAgICAgY291dCA8PCAiKyI7CiAgICAgIH0KICAgICAgY291dCA8PCBzW2ldOwogICAgfQogICAgY291dCA8PCAiXG4iOwogIH0KICByZXR1cm4gMDsKfQ==