Go: package main

import (
        "fmt"
        "bufio"
        "os"
)

func main() {
        var n int
        var a, b string
        sc := bufio.NewScanner(os.Stdin)
        fmt.Scanf("%d", &n)
        for i := 0; i < n; i++ {
                sc.Scan()
                a = sc.Text()
                sc.Scan()
                b = sc.Text()

                if len(a) > len(b) {
                        s := add(a, b)
                        if s[len(a)] > 0 {
                                if len(a) >= 80 {
                                        fmt.Printf("overflow")
                                } else {
                                        for i := 0; i <= len(a);i++ {
                                                fmt.Printf("%d", s[len(a)-i])
                                        }
                                }
                                fmt.Printf("\n")
                        } else {
                                if len(a)-1 >= 80 {
                                        fmt.Printf("overflow")
                                } else {
                                        for i := 0; i < len(a);i++ {
                                                fmt.Printf("%d", s[len(a)-i-1])
                                        }
                                }
                                fmt.Printf("\n")
                        }
                } else {
                        s := add(b, a)
                        if s[len(b)] > 0 {
                                if len(b) >= 80 {
                                        fmt.Printf("overflow")
                                } else {
                                        for i := 0; i <= len(b);i++ {
                                                fmt.Printf("%d", s[len(b)-i])
                                        }
                                }
                                fmt.Printf("\n")
                        } else {
                                if len(b)-1 >= 80 {
                                        fmt.Printf("overflow")
                                } else {
                                        for i := 0; i < len(b);i++ {
                                                fmt.Printf("%d", s[len(b)-i-1])
                                        }
                                }
                                fmt.Printf("\n")
                        }
                }
        }
}

// expects ln > lm
func add(n string, m string) (s [100]int) {
        ln := len(n)
        lm := len(m)
        var sum [100]int

        for i := 0; i < ln; i++ {
                var s, t int
                s = int(n[ln-1-i]) - int('0')

                if lm - 1 - i >= 0 {
                        t = int(m[lm-1-i]) - int('0')
                } else {
                        t = 0
                }

                sum[i+1] = (s + t + sum[i]) / 10
                sum[i] = (s + t + sum[i]) % 10
        }

        return sum
}

Python: n = int(input())
for _ in range(n):
    a = int(input())+int(input())
    if a >= 10**80:
        print("overflow")
    else:
        print(a)

Python: import math

N = int(input())
for i in range(N):
    a = int(input())
    b = int(input())
    if a >= 10 ** 80 or b >= 10 ** 80 or a + b >= 10 ** 80:
        print("overflow")
    else:
        print(a + b)

Python: from collections import deque

"""
# Too slow
def add2(a, b):
    a, b = align_digit(a, b)
    zipped = zip(a[::-1], b[::-1])
    carry = 0
    result = []
    for a, b in zipped:
        s = int(a) + int(b) + carry
        carry = int(s / 10)
        result.append(str(s % 10))
    if result[-1] == '0':
        result[-1] = str(carry)
    print(''.join(result[::-1]))
"""


def align_digit(a, b):
    la, lb = len(a), len(b)
    if la < lb:
        a = a.zfill(lb)
    elif lb < la:
        b = b.zfill(la)
    return a, b


def split_to_ints(s, n=10):
    length = len(s)
    return reversed([int(s[i:i + n]) for i in range(0, length, n)])


def add(a, b, n=10):
    a, b = align_digit(a, b)
    ints_a = split_to_ints(a, n)
    ints_b = split_to_ints(b, n)
    carry = 0
    result = deque()

    zipped = list(zip(ints_a, ints_b))
    for i, (int_a, int_b) in enumerate(zipped):
        s = int_a + int_b + carry
        carry = int(s / (10 ** n))
        if i != len(zipped) - 1:
            result.append(str(s % (10 ** (n - 1))).zfill(n))
        else:
            result.append(str(s))
        i += 1

    ret = str(int(''.join(result)))
    if len(ret) > 80:
        return 'overflow'
    return ret


if __name__ == '__main__':
    n_input = int(input())
    for i in range(n_input):
        a, b = input(), input()
        print(add(a, b))

Python: n=int(input())
for _ in range(n):
    a=int(input())
    b=int(input())
    ab=a+b
    print(ab if ab<10**80 else "overflow")

Python: import math

n1 = input();
n2 = input();
sum = int(n1) + int(n2);

if int(math.log10(sum)) + 1 > 80 :
	print("overflow");
else :
	print(sum)

Python: n=int(input())
for n in range(n):
	a=int(input())
	b=int(input())
	c=a+b
	if a>=int(1e79) or b>=int(1e79) or c>=int(1e79):
		print("overflow")
	else:
		print(c)

Python: times=int(input())
for i in range(times):
    a=int(input())
    b=int(input())
    if int(a/1e80)!=0 or int(b/1e80)!=0 or int((a+b)/(1e80))!=0:
        print("overflow")
    else: print(a+b)

Python: import math

N = int(input())
for i in range(N):
    a = int(input())
    b = int(input())
    if (a != 0 and math.log10(a) > 79) or (b != 0 and math.log10(b) > 79) or (a + b != 0 and math.log10(a + b)) > 79:
        print("overflow")
    else:
        print(a + b)

Python: o=map(str,[sum([int(input()) for j in range(2)]) for i in range(int(input()))])
[print(i) if len(i)<=80 else print("overflow") for i in o]

Python: #標準入力
j = int(input())
for _ in range(j):
    a = int(input())
    b = int(input())
    
    #aとbの和を計算
    num = a + b
    
    #桁数を調べ81以上であればoverflowを出力する
    num1 = [c for c in str(num)]
    if len(num1) > 80:num = "overflow"
    else:pass
    print(num)

Python: n = int(input())
for _ in range(n):
    a, b = input(), input()
    m = abs(len(a) - len(b))
    if len(a) > len(b):
        a = '0' + a
        b = '0' * (m+1) + b
    else:
        a = '0' * m + a
        b = '0' + b
    a, b = a[::-1], b[::-1]
    
    budget = []
    flag = False
    for i in range(0, len(a), 10):
        t = int(a[i:i+10][::-1]) + int(b[i:i+10][::-1]) 
        if flag: t += 1
        t = str(t)

        if len(t) > 10:
            t = t[1:]
            flag = True
        elif i + 10 < len(a):
            t = '0' * abs(len(t) - 10) + t
            flag = False
        else:
            flag = False
        budget.append(t)
    
    budget = ''.join(budget[::-1])
    if len(budget) < 80:
        print(''.join(budget[::-1]))
    else:
        print('overflow')

Python: #! /usr/bin/python

num_inputs = int(raw_input())

limit = 100000000000000000000000000000000000000000000000000000000000000000000000000000000

count = 0
while count < num_inputs:
	num1 = int(raw_input())
	num2 = int(raw_input())

	if num1 >= limit or num2 >= limit:
		print('overflow')
	else:
		num = num1 + num2
		if num >= limit:
			print('overflow')
		else:
			print(num)

	count += 1