#include <iostream>
#include <algorithm>

using namespace std;

const int N_MAX = 101;
int d1[N_MAX], d2[N_MAX], cr[N_MAX];
int N;
string s1, s2;

int main() {
    cin >> N;

    while (N--) {
        cin >> s1;
        cin >> s2;

        reverse(s1.begin(), s1.end());
        reverse(s2.begin(), s2.end());

        fill(d1, d1 + N_MAX, 0);
        fill(d2, d2 + N_MAX, 0);
        fill(cr, cr + N_MAX, 0);

        for (int i = 0; i < s1.length(); i++) { d1[i] = s1[i] - '0'; }
        for (int i = 0; i < s2.length(); i++) { d2[i] = s2[i] - '0'; }

        string ans;
        int d;

        for (int i = 0; i <= max(s1.length(), s2.length()); i++) {
            d = d1[i] + d2[i] + cr[i];
            ans += to_string(d % 10);
            if (d >= 10) cr[i + 1] = 1;
        }

        if (ans.back() == '0') {
            ans.erase(ans.length() - 1, 1);
        }

        reverse(ans.begin(), ans.end());

        if (ans.length() > 80) {
            ans = "overflow";
        }

        cout << ans << endl;
    }
}
