#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct big_number {
int d[10010], len;
big_number() {
memset(d, 0, sizeof(d));
len = 0;
}
};
big_number change(char s[]) {
big_number ans;
int len = strlen(s);
ans.len = len;
for (int i = 0; i < len; ++i) {
ans.d[i] = s[len - i - 1] - '0';
}
return ans;
}
big_number b_plus(const big_number &a, const big_number &b, int &carry) {
big_number ans;
for (int i = 0; i < a.len || i < b.len; ++i) {
int temp = a.d[i] + b.d[i] + carry;
carry = temp / 10;
ans.d[ans.len++] = temp % 10;
}
if (carry != 0) ans.d[ans.len++] = carry;
return ans;
}
big_number b_plus2(const big_number &a, const big_number &b, int &carry) {
big_number ans;
for (int i = 0; i < a.len || i < b.len; ++i) {
int temp = a.d[i] + b.d[i] + carry;
carry = temp / 10;
ans.d[ans.len++] = temp % 10;
}
return ans;
}
big_number b_multi(const big_number &a, const int &b) {
big_number ans;
long long carry = 0;
int len = a.len;
for (int i = 0; i < len; ++i) {
long long temp = a.d[i] * b + carry;
ans.d[ans.len++] = (temp % 10);
carry = temp / 10;
}
while (carry != 0) {
ans.d[ans.len++] = carry % 10;
carry = carry / 10;
}
return ans;
}
void split(char *a1, char *a2) {
int n = strlen(a1);
bool flag = false;
int j = 0;
for (int i = 0; i < n; ++i) {
if (flag) {
a2[j++] = a1[i];
continue;
}
if (a1[i] == '.') {
flag = true;
a1[i] = '\0';
}
}
a2[j] = '\0';
}
void trim(char *a1, char *a2) {
int n1, n2;
char *t1, *t2;
bool flag = false;
n1 = strlen(a1);
n2 = strlen(a2);
if (n1 == n2) return;
if (n2 > n1) {
flag = true;
t1 = a2;
t2 = a1;
swap(n1, n2);
} else {
t1 = a1;
t2 = a2;
}
int s = n1 - n2;
t2[n1] = '\0';
for (int j = n2; j < n1; ++j) {
t2[j] = '0';
}
if (flag) {
a1 = t2;
a2 = t1;
} else {
a1 = t1;
a2 = t2;
}
}
void fix(big_number &a) {
while (a.d[0] == 0) {
for (int i = 0; i < a.len-1; ++i) {
a.d[i] =a.d[i+1];
}
a.len--;
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; ++i) {
char a1[101], a2[101], b1[101], b2[101];
scanf("%s %s", a1, b1);
split(a1, a2);
split(b1, b2);
trim(a2, b2);
big_number f, e;
int carry = 0;
e = b_plus2(change(a2), change(b2), carry);
f = b_plus(change(a1), change(b1), carry);
fix(e);
//out
for (int j = f.len - 1; j >= 0; --j) {
printf("%d", f.d[j]);
}
printf(".");
for (int k = e.len - 1; k >= 0; --k) {
printf("%d", e.d[k]);
}
printf("\n");
}
}
return 0;
}