#include<iostream>
#include<stdio.h>
#include<string.h>

int n;
char a[256], b[256];

int main()
{
        std::cin >> n;
	
	while( n-- ){
		char c[256];
		
		std::cin >> a >> b;
		
		int minlen = std::min( strlen( a ), strlen( b ) );
		int maxlen = std::max( strlen( a ), strlen( b ) );
		bool f = strlen( a ) > strlen( b );
		bool f2 = false;
		
		if( maxlen > 80 ){
		 	std::cout << "overflow" << std::endl;
			continue;
		}
		
		int sz = 0;
		int carry = 0;
		
		for( int i = 0; i < minlen; i++ ){
			int na = a[ strlen( a ) - 1 - i ] - '0';
			int nb = b[ strlen( b ) - 1 - i ] - '0';
			int nc = 0;
			
			if( na + nb + carry >= 10 ){
			 	nc = na + nb + carry - 10;
				carry = 1;
			}
			else{
			 	nc = na + nb + carry;
				carry = 0;
			}
			c[ maxlen - i - 1 ] = nc + '0';
		}
		
		for( int i = minlen; i < maxlen; i++ ){
			int na = f ? a[ maxlen - 1 - i ] - '0' : b[ maxlen - 1 - i ] - '0';
			int nc = 0;
			
			if( na + carry >= 10 ){
			 	nc = na + carry - 10;
				carry = 1;
				if( i == maxlen - 1 ){
					f2 = true;
				}
			}
			else{
			 	nc = na + carry;
				carry = 0;
			}
			
			c[ maxlen - i - 1 ] = nc + '0';
		}
		
		sz = maxlen + f2;
		
		if( sz >= 80 ){
		 	std::cout << "overflow" << std::endl;
		}
		else{
			c[sz-(f2?1:0)] = '\0';
			if( f2 )std::cout << "1";
			std::cout << c << std::endl;
		}
		sz = 0;
		carry = 0;
	}

 	return 0;
}