#include <bits/stdc++.h>
using namespace std;
void pre(string &s) {
int n = s.length();
int i = 0;
while (s[i] == '0') ++i;
s = s.substr(i, n); //清除前导零
reverse(s.begin(), s.end()); //竖式右对齐
}
string slove(string a, string b) {
pre(a), pre(b);
int lena = a.length(), lenb = b.length();
if (lena < lenb) swap(a, b), swap(lena, lenb); //竖式加法,位数更高的放上面
string ans;
bool f = 0; //标记进位
int i = 0;
while (i < lenb) {
int now = a[i] - '0' + b[i++] - '0' + f; //当前值
ans.push_back(now % 10 + '0'); //个位
f = now / 10; //进位
}
while (i < lena) {
int now = a[i++] - '0' + f;
ans.push_back(now % 10 + '0');
f = now / 10;
}
if (f) ans.push_back('1'); //最后的进位
reverse(ans.begin(), ans.end()); //换回来
return ans;
}
int main() {
int T;
cin >> T;
string a, b;
for (int i = 1; i <= T; ++i) {
cin >> a >> b;
if (i - 1) putchar('\n');
cout << "Case " << i << ":\n" << a << " + " << b << " = ";
cout << slove(a, b) << '\n';
}
return 0;
}