#include<stdio.h>

#define STR_MAX 80
#define ASCII_BIAS 48

char h_adder(char n1, char n2, char *n3, char carry)
{
  char result = n1 + n2 + carry;
  
  if(result<10){ *n3 = result + ASCII_BIAS; return 0; }
  else{ *n3 = result-10+ASCII_BIAS; return 1; }
}

int main(void)
{
  int i, j;
  int dataset;
  char in[2][STR_MAX+2], out[STR_MAX+2], result[STR_MAX+2];
  int len_in[2], idx_min, idx_max, lmin, lmax, lout, dif;
  char carry;

  scanf("%d\n", &dataset);

  for(i=0;i<dataset;i++){
    fgets(in[0], sizeof in[0], stdin); rewind(stdin);
    fgets(in[1], sizeof in[1], stdin); rewind(stdin);
    len_in[0] = strlen(in[0])-1; len_in[1] = strlen(in[1])-1;

    // check # of digits
    if(in[0][len_in[0]]!='\n' || in[1][len_in[1]]!='\n'){
      printf("overflow\n"); continue;
    }
    in[0][len_in[0]] = '\0';
    in[1][len_in[1]] = '\0';
    
    idx_min = (len_in[0]>len_in[1]) ? 1 : 0; // idx of shoter str
    idx_max = (idx_min + 1) & 1; // idx of longer str
    lmin = len_in[idx_min]-1; lmax = len_in[idx_max]-1;
    dif = (len_in[0]>len_in[1]) ? len_in[0]-len_in[1] : len_in[1]-len_in[0]; // difference in digits

    // execute addition
    carry = 0;
    for(j=0;j<lmin+1;j++){
      carry = h_adder(in[idx_min][lmin-j]-ASCII_BIAS, in[idx_max][lmin-j+dif]-ASCII_BIAS, &out[j+1], carry);
    }
    for(j=lmin+1;j<lmax+1;j++){
      carry = h_adder(0, in[idx_max][lmin-j+dif]-ASCII_BIAS, &out[j+1], carry);
    }
    
    // if carry is 0, validate overflow
    if(carry==1){
      if(lmax==STR_MAX-1){
  	printf("overflow\n"); continue;
      }    
    }

    lout = carry ? lmax+2 : lmax+1;
    out[lmax+2] = carry ? 1+ASCII_BIAS : 0+ASCII_BIAS;

    
    // if overflow does not occur, addition succeeded
    out[0] = '\0';
    for(j=0;j<lout+1;j++){
      result[j] = out[lout-j];
    }
    printf("%s\n", result);
  }
  
}