#include <iostream>
#include <string>
using namespace std;
int val(char x) { return (x > '9') ? x - 'A' + 10 : x-'0'; }
char set(int x) { return (x > 9) ? 'A' + x - 10 : x + '0'; }
string sum12(string a, string b)
{
if (a.size() > b.size()) swap(a,b);
for(int i = b.size()-a.size(); i-->0; a = "0"+a);
int carry = 0;
for(int i = b.size(); i-->0; )
{
a[i] = val(a[i]) + val(b[i]) + carry;
if (a[i] >= 12) {
a[i] %= 12;
carry = 1;
} else carry = 0;
a[i] = set(a[i]);
}
if (carry) a = '1' + a;
return a;
}
int main()
{
cout << sum12("10","100") << endl;
cout << sum12("325","120") << endl;
cout << sum12("AA","BBB") << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCB2YWwoY2hhciB4KSB7IHJldHVybiAoeCA+ICc5JykgPyB4IC0gJ0EnICsgMTAgOiB4LScwJzsgfQpjaGFyIHNldChpbnQgeCkgeyByZXR1cm4gKHggPiA5KSA/ICdBJyArIHggLSAxMCA6IHggKyAnMCc7IH0KCnN0cmluZyBzdW0xMihzdHJpbmcgYSwgc3RyaW5nIGIpCnsKICAgIGlmIChhLnNpemUoKSA+IGIuc2l6ZSgpKSBzd2FwKGEsYik7CiAgICBmb3IoaW50IGkgPSBiLnNpemUoKS1hLnNpemUoKTsgaS0tPjA7IGEgPSAiMCIrYSk7CiAgICBpbnQgY2FycnkgPSAwOwogICAgZm9yKGludCBpID0gYi5zaXplKCk7IGktLT4wOyApCiAgICB7CiAgICAgICAgYVtpXSA9IHZhbChhW2ldKSArIHZhbChiW2ldKSArIGNhcnJ5OwogICAgICAgIGlmIChhW2ldID49IDEyKSB7CiAgICAgICAgICAgIGFbaV0gJT0gMTI7CiAgICAgICAgICAgIGNhcnJ5ID0gMTsKICAgICAgICB9IGVsc2UgY2FycnkgPSAwOwogICAgICAgIGFbaV0gPSBzZXQoYVtpXSk7CiAgICB9CiAgICBpZiAoY2FycnkpIGEgPSAnMScgKyBhOwogICAgcmV0dXJuIGE7Cn0KCgppbnQgbWFpbigpCnsKICAgIGNvdXQgPDwgc3VtMTIoIjEwIiwiMTAwIikgPDwgZW5kbDsKICAgIGNvdXQgPDwgc3VtMTIoIjMyNSIsIjEyMCIpIDw8IGVuZGw7CiAgICBjb3V0IDw8IHN1bTEyKCJBQSIsIkJCQiIpIDw8IGVuZGw7Cn0K