#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int Num[3][1000];
void Read(int ord)
{
int flag=0;
string tmp;
cin>>tmp;
for(int i=tmp.length()-1;i>=0;i--)
{
if(tmp[i]>'0')
flag=1;
if(flag)
Num[ord][++Num[ord][0]]=tmp[i]-'0';
}
for(int i=Num[ord][0],j=1;i>j;i--,j++)
{
flag=Num[ord][i];
Num[ord][i]=Num[ord][j];
Num[ord][j]=flag;
}
}
void Add()
{
Num[2][0]=max(Num[0][0],Num[1][0]);
for(int i=1;i<=Num[2][0];i++)
Num[2][i]=Num[0][i]+Num[1][i];
for(int i=1;i<=Num[2][0];i++)
{
Num[2][i+1]+=Num[2][i]/10;
Num[2][i]%=10;
}
if(Num[2][Num[2][0]+1]>0)
Num[2][0]++;
int flag=0;
for(int i=1;i<=Num[2][0];i++)
{
if(Num[2][i]>0)
flag=1;
if(flag)
printf("%d",Num[2][i]);
}
printf("\n");
}
int main()
{
int N;
cin>>N;
for(N;N;N--)
{
memset(Num,0,sizeof(Num));
Read(0);
Read(1);
Add();
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int Num[3][1000];
void Read(int ord)
{
int flag=0;
string tmp;
cin>>tmp;
for(int i=tmp.length()-1;i>=0;i--)
{
if(tmp[i]>'0')
flag=1;
if(flag)
Num[ord][++Num[ord][0]]=tmp[i]-'0';
}
for(int i=Num[ord][0],j=1;i>j;i--,j++)
{
flag=Num[ord][i];
Num[ord][i]=Num[ord][j];
Num[ord][j]=flag;
}
}
void Add()
{
Num[2][0]=max(Num[0][0],Num[1][0]);
for(int i=1;i<=Num[2][0];i++)
Num[2][i]=Num[0][i]+Num[1][i];
for(int i=1;i<=Num[2][0];i++)
{
Num[2][i+1]+=Num[2][i]/10;
Num[2][i]%=10;
}
if(Num[2][Num[2][0]+1]>0)
Num[2][0]++;
int flag=0;
for(int i=1;i<=Num[2][0];i++)
{
if(Num[2][i]>0)
flag=1;
if(flag)
printf("%d",Num[2][i]);
}
printf("\n");
}
int main()
{
int N;
cin>>N;
for(N;N;N--)
{
memset(Num,0,sizeof(Num));
Read(0);
Read(1);
Add();
}
return 0;
}