#include <iostream>
#include <cmath>

using namespace std;

int string_to_d(const string &s){
	int num = 0;
	if(!s.empty())
	for(int i=s.size()-1;i>=0;--i){
		if('1'<=s[i]&&s[i]<='9') num += (s[i]-'0')*pow(10,s.size()-i-1);
	}
	return num;
}

int main(void){
	int n;
	while(cin >> n){
		for(int a=0;a<n;++a){
			string s1,s2;
			cin >> s1 >> s2;
			int ex1num[10];//8*10=80桁
			int ex2num[10];
			int sum[10] = {0};
			for(int i=s1.size();i<80;++i) s1="0"+s1;
			for(int i=s2.size();i<80;++i) s2="0"+s2;
			for(int i=0;i<10;++i){
				ex1num[i] = string_to_d(s1.substr((10-i-1)*8,8));
				ex2num[i] = string_to_d(s2.substr((10-i-1)*8,8));
			}
			//ここまで正常
			int carry = 0;
			for(int i=0;i<10;++i){
				sum[i] = (ex1num[i]+ex2num[i]+carry)%(int)1e+008;
				carry = floor((ex1num[i]+ex2num[i]+carry)/(int)1e+008);
			}
			if(carry>0){
				cout << "overflow\n";
				continue;
			}
			bool zeroshow = false;
			for(int i=10;0<=i;--i){
				if(zeroshow&&sum[i]!=0) for(int j=0;j<7-(int)log10(sum[i]);j++) cout << "0";
				if(zeroshow&&sum[i]==0) for(int j=0;j<8;j++) cout << "0";
				if(sum[i]!=0) cout << sum[i];
				if(sum[i]>0) zeroshow = true;
			}
			cout << "\n";
		}
	}
	return 0;
}