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

class BigNum {
public:
	BigNum() : c(0), keta(0), size(0) {};

	BigNum(int n) : c(0), keta(0), size(0) {
		size = n;
		c = new char [size];
		memset(c, 0, size);
	};

	~BigNum() {
		if (c) {
			delete [] c;
		}
	};

	int getnum(const char* buf) {
		keta = strlen(buf);
		if (buf[keta-1] == '\n') {
			keta --;
		}
		if (keta == 0) {
			return -1;
		}
		if (c) {
			delete [] c;
		}
		size = keta;
		c = new char [size];
		int k = 0;
		for (int i = keta - 1; i >= 0; i--) {
			c[k++] = buf[i] - '0';
		}
		
		return 0;
	};

	void print(void) const {
		for (int i = keta - 1; i >= 0; i --) {
			printf("%d", c[i]);
		}
		printf("\n");
	};

	static int add(BigNum& x, BigNum& y) {
		BigNum* a;
		BigNum* b;

		if (x.keta > y.keta) {
			a = &x;
			b = &y;
		} else {
			a = &y;
			b = &x;
		}

		BigNum r(a->keta + 1);

		int h;
		int m = 0;
		for (int i = 0; i < a->keta; i++) {
			if (i < b->keta) {
				h = a->c[i] + b->c[i] + m;
			} else {
				h = a->c[i] + m;
			}
			
			m = h / 10;
			r.c[i] = h % 10;
		}

		r.keta = a->keta;
	
		if (m > 0) {
			r.c[r.keta] = m;
			r.keta ++;
		}

		if (r.keta > 80) {
			return 1;
		}

		r.print();

		return 0;
	};

	char* c;
	int keta;

private:
	size_t size;
};

int
main(void)
{
	char line[100];
	int n;

	if (fgets(line, sizeof line, stdin) == NULL) {
		return 1;
	}
	if (sscanf(line, "%d", &n) != 1) {
		return 1;
	}

	for (int i = 0; i < n; i++) {
		if (fgets(line, sizeof line, stdin) == NULL) {
			return 1;
		}
		BigNum a;
		if (a.getnum(line)) {
			return 1;
		}

		if (fgets(line, sizeof line, stdin) == NULL) {
			return 1;
		}
		BigNum b;
		if (b.getnum(line)) {
			return 1;
		}

		if (BigNum::add(a, b)) {
			printf("overflow\n");
		}
	}

	return 0;
}