#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
vector<int> a,b,c,sol1,solution;
void add()
{
int i,carry=0,num;
for(i=0;i<a.size();i++)
{
if(i<b.size())
{
num=a[i]+b[i]+carry;
}
else
{
num=a[i]+carry;
}
c.push_back(num%10);
carry=num/10;
}
while(i<b.size())
{
num=b[i]+carry;
c.push_back(num%10);
carry=num/10;
i++;
}
while(carry>0)
{
c.push_back(carry%10);
carry=carry/10;
}
//reverse(a.begin())
}
void sub(int check)
{
int num,carry,k=0,i;
solution=c;
for(i=0;i<solution.size();i++)
{
if(i<sol1.size())
{
num=solution[i]-sol1[i];
if(num<0)
{
k=i+1;
while(solution[k]<=0)
{
solution[k]=9;
k++;
}
num=num+10;
solution[k]--;
}
solution[i]=num;
}
}
if(check==1)
{
a=solution;
}
else
{
b=solution;
}
}
void print_sol()
{
int i,k=0;
while(a[k]==0)
{
k++;
}
for(i=k;i<a.size();i++)
{
printf("%d",a[i]);
}
printf(" + ");
k=0;
while(b[k]==0)
{
k++;
}
for(i=k;i<b.size();i++)
{
printf("%d",b[i]);
}
printf(" = ");
k=0;
while(c[k]==0)
{
k++;
}
for(i=k;i<c.size();i++)
{
printf("%d",c[i]);
}
}
int main()
{
int i=0,t;
string buffer;
char ch,curr_vec;
int no_fill=1;
cin>>t;
cin.ignore();
while(t--)
{
printf("\n");
getline(cin,buffer);
i=0;
no_fill=1;
while(buffer[i])
{
ch=buffer[i];
while(isspace(ch)==false)
{
if(ch=='m')
{
//a.clear();
no_fill=2;
// break;
}
a.push_back((int)ch-48);
i++;
ch=buffer[i];
}
i+=3;
ch=buffer[i];
if(no_fill==2)
{
a.clear();
no_fill=1;
}
while(isspace(ch)==false)
{
if(ch=='m')
{
no_fill=2;
}
b.push_back((int)ch-48);
i++;
ch=buffer[i];
}
i+=3;
ch=buffer[i];
if(no_fill==2)
{
b.clear();
no_fill=1;
}
while(buffer[i])
{
if(ch=='m')
{
i=buffer.length();
c.clear();
break;
}
c.push_back((int)buffer[i]-48);
i++;
ch=buffer[i];
}
}
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
reverse(c.begin(),c.end());
if(c.empty())
{
add();
}
else
{
if(a.empty())
{
sol1=b;
sub(1);
// c- first store in solution ---a empty
}
else
{
sol1=a;
sub(2);
// b empty
}
//first.clear();
}
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
reverse(c.begin(),c.end());
print_sol();
cout<<endl;
a.clear();
b.clear();
c.clear();
sol1.clear();
solution.clear();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxpbnQ+IGEsYixjLHNvbDEsc29sdXRpb247Cgp2b2lkIGFkZCgpCnsKICAgIGludCBpLGNhcnJ5PTAsbnVtOwogICAgZm9yKGk9MDtpPGEuc2l6ZSgpO2krKykKICAgIHsKICAgICAgICBpZihpPGIuc2l6ZSgpKQogICAgICAgIHsKICAgICAgICAgICAgbnVtPWFbaV0rYltpXStjYXJyeTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbnVtPWFbaV0rY2Fycnk7CiAgICAgICAgfQoKICAgICAgICBjLnB1c2hfYmFjayhudW0lMTApOwogICAgICAgIGNhcnJ5PW51bS8xMDsKICAgIH0KICAgIHdoaWxlKGk8Yi5zaXplKCkpCiAgICB7CiAgICAgICAgbnVtPWJbaV0rY2Fycnk7CiAgICAgICAgYy5wdXNoX2JhY2sobnVtJTEwKTsKICAgICAgICBjYXJyeT1udW0vMTA7CiAgICAgICAgaSsrOwogICAgfQogICAgd2hpbGUoY2Fycnk+MCkKICAgIHsKICAgICAgICBjLnB1c2hfYmFjayhjYXJyeSUxMCk7CiAgICAgICAgY2Fycnk9Y2FycnkvMTA7CiAgICB9CiAgICAvL3JldmVyc2UoYS5iZWdpbigpKQoKfQp2b2lkIHN1YihpbnQgY2hlY2spCnsKICAgIGludCBudW0sY2Fycnksaz0wLGk7CiAgICBzb2x1dGlvbj1jOwogICAgZm9yKGk9MDtpPHNvbHV0aW9uLnNpemUoKTtpKyspCiAgICB7CiAgICAgICAgaWYoaTxzb2wxLnNpemUoKSkKICAgICAgICB7CiAgICAgICAgICAgbnVtPXNvbHV0aW9uW2ldLXNvbDFbaV07CiAgICAgICAgICAgaWYobnVtPDApCiAgICAgICAgICAgewogICAgICAgICAgICAgICBrPWkrMTsKICAgICAgICAgICAgICAgd2hpbGUoc29sdXRpb25ba108PTApCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIHNvbHV0aW9uW2tdPTk7CiAgICAgICAgICAgICAgICAgICBrKys7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgbnVtPW51bSsxMDsKICAgICAgICAgICAgICAgc29sdXRpb25ba10tLTsKICAgICAgICAgICB9CiAgICAgICAgICAgc29sdXRpb25baV09bnVtOwogICAgICAgIH0KICAgIH0KICAgIGlmKGNoZWNrPT0xKQogICAgewogICAgICAgIGE9c29sdXRpb247CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgYj1zb2x1dGlvbjsKICAgIH0KfQoKdm9pZCBwcmludF9zb2woKQp7CiAgICBpbnQgaSxrPTA7CiAgICB3aGlsZShhW2tdPT0wKQogICAgewogICAgICAgIGsrKzsKICAgIH0KICAgIGZvcihpPWs7aTxhLnNpemUoKTtpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCIsYVtpXSk7CiAgICB9CiAgICBwcmludGYoIiArICIpOwogICAgaz0wOwogICAgd2hpbGUoYltrXT09MCkKICAgIHsKICAgICAgICBrKys7CiAgICB9CiAgICBmb3IoaT1rO2k8Yi5zaXplKCk7aSsrKQogICAgewogICAgICAgIHByaW50ZigiJWQiLGJbaV0pOwogICAgfQogICAgcHJpbnRmKCIgPSAiKTsKICAgIGs9MDsKICAgIHdoaWxlKGNba109PTApCiAgICB7CiAgICAgICAgaysrOwogICAgfQogICAgZm9yKGk9aztpPGMuc2l6ZSgpO2krKykKICAgIHsKICAgICAgICBwcmludGYoIiVkIixjW2ldKTsKICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGludCBpPTAsdDsKICAgIHN0cmluZyBidWZmZXI7CiAgICBjaGFyIGNoLGN1cnJfdmVjOwogICAgaW50IG5vX2ZpbGw9MTsKICAgIGNpbj4+dDsKICAgIGNpbi5pZ25vcmUoKTsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBwcmludGYoIlxuIik7CiAgICAgIGdldGxpbmUoY2luLGJ1ZmZlcik7CiAgICAgICAgaT0wOwogICAgICAgIG5vX2ZpbGw9MTsKICAgICAgICB3aGlsZShidWZmZXJbaV0pCiAgICAgICAgewogICAgICAgICAgICBjaD1idWZmZXJbaV07CiAgICAgICAgICAgIHdoaWxlKGlzc3BhY2UoY2gpPT1mYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoY2g9PSdtJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgLy9hLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgIG5vX2ZpbGw9MjsKICAgICAgICAgICAgICAgICAvLyBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEucHVzaF9iYWNrKChpbnQpY2gtNDgpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgY2g9YnVmZmVyW2ldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrPTM7CiAgICAgICAgICAgIGNoPWJ1ZmZlcltpXTsKICAgICAgICAgICAgaWYobm9fZmlsbD09MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYS5jbGVhcigpOwogICAgICAgICAgICAgICAgbm9fZmlsbD0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlKGlzc3BhY2UoY2gpPT1mYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoY2g9PSdtJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBub19maWxsPTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiLnB1c2hfYmFjaygoaW50KWNoLTQ4KTsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgIGNoPWJ1ZmZlcltpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpKz0zOwogICAgICAgICAgICBjaD1idWZmZXJbaV07CiAgICAgICAgICAgIGlmKG5vX2ZpbGw9PTIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGIuY2xlYXIoKTsKICAgICAgICAgICAgICAgIG5vX2ZpbGw9MTsKICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZShidWZmZXJbaV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGNoPT0nbScpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaT1idWZmZXIubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgYy5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYy5wdXNoX2JhY2soKGludClidWZmZXJbaV0tNDgpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgY2g9YnVmZmVyW2ldOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICByZXZlcnNlKGEuYmVnaW4oKSxhLmVuZCgpKTsKICAgICAgICByZXZlcnNlKGIuYmVnaW4oKSxiLmVuZCgpKTsKICAgICAgICByZXZlcnNlKGMuYmVnaW4oKSxjLmVuZCgpKTsKICAgICAgICBpZihjLmVtcHR5KCkpCiAgICAgICAgewogICAgICAgICAgICBhZGQoKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYoYS5lbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHNvbDE9YjsKICAgICAgICAgICAgICAgc3ViKDEpOwogICAgICAgICAgICAgICAvLyBjLSBmaXJzdCBzdG9yZSBpbiBzb2x1dGlvbiAtLS1hIGVtcHR5CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHNvbDE9YTsKICAgICAgICAgICAgICAgc3ViKDIpOwogICAgICAgICAgICAvLyBiIGVtcHR5CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9maXJzdC5jbGVhcigpOwogICAgICAgIH0KCiAgICAgICAgcmV2ZXJzZShhLmJlZ2luKCksYS5lbmQoKSk7CiAgICAgICAgcmV2ZXJzZShiLmJlZ2luKCksYi5lbmQoKSk7CiAgICAgICAgcmV2ZXJzZShjLmJlZ2luKCksYy5lbmQoKSk7CiAgICAgICAgcHJpbnRfc29sKCk7CiAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICBhLmNsZWFyKCk7CiAgICAgICAgYi5jbGVhcigpOwogICAgICAgIGMuY2xlYXIoKTsKICAgICAgICBzb2wxLmNsZWFyKCk7CiAgICAgICAgc29sdXRpb24uY2xlYXIoKTsKCiAgICB9CgoKICAgIHJldHVybiAwOwp9Cg==