#include<iostream>
#include<string>
using namespace std;
void addplace(unsigned int *a, unsigned int *last, long long num){
if( a == last ) return;
int carry = ((long long)*a * 10L + num) / 1000000000L;
addplace(a+1, last, carry);
*a = ((long long)*a * 10L + num) % 1000000000L;
}
int trace(unsigned int *a, unsigned int *last){
if( a == last ) return 0;
if( !trace(a+1, last) ){
if( *a > 0 ){
cout << *a;
return 1;
}
}else{
char b[11]={};
sprintf(b,"%d",*a+1000000000);
cout<<b+1;
return 1;
}
return 0;
}
void add(unsigned int *a, unsigned int *alast, unsigned int *b, int num=0){
if( a == alast ) return;
int carry = (*a + *b + num) / 1000000000L;
add(a+1, alast, b+1, carry);
*a = (*a + *b + num) % 1000000000L;
}
int main(){
int n;
cin>>n;
string a,b;
getline(cin, a);
for(;n--;){
getline(cin, a);
getline(cin, b);
unsigned int _a[9]={},_b[9]={};
for(string::iterator it=a.begin();
it!=a.end(); it++){
addplace(_a, _a+9, *it-'0');
}
for(string::iterator it=b.begin();
it!=b.end(); it++){
addplace(_b, _b+9, *it-'0');
}
add(_a, _a+9, _b);
if( _a[8] >= 100000000 ){
cout<<"overflow\n";
}else{
trace(_a, _a+9);
cout<<'\n';
}
}
}