#include <iostream>
#include <iomanip>
using namespace std;
template<class T>
class CFraction
{
public:
CFraction(int = 0){}
CFraction(const CFraction&) = default;
CFraction& operator=(const CFraction&) = default;
template<class U>
CFraction operator + (const CFraction<U>& value) const { cout << "C+C\n"; return *this; }
CFraction operator + (int value) const { cout << "C+i\n"; return *this; };
};
int main(int argc, const char * argv[])
{
CFraction<int> a, b;
a = a + b;
a = b + 2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBDRnJhY3Rpb24KewpwdWJsaWM6CiAgICBDRnJhY3Rpb24oaW50ID0gMCl7fQogICAgQ0ZyYWN0aW9uKGNvbnN0IENGcmFjdGlvbiYpID0gZGVmYXVsdDsKICAgIENGcmFjdGlvbiYgb3BlcmF0b3I9KGNvbnN0IENGcmFjdGlvbiYpID0gZGVmYXVsdDsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBVPgogICAgQ0ZyYWN0aW9uIG9wZXJhdG9yICsgKGNvbnN0IENGcmFjdGlvbjxVPiYgdmFsdWUpIGNvbnN0IHsgY291dCA8PCAiQytDXG4iOyByZXR1cm4gKnRoaXM7IH0KCiAgICBDRnJhY3Rpb24gb3BlcmF0b3IgKyAoaW50IHZhbHVlKSBjb25zdCB7IGNvdXQgPDwgIkMraVxuIjsgcmV0dXJuICp0aGlzOyB9Owp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCnsKICAgIENGcmFjdGlvbjxpbnQ+IGEsIGI7CiAgICBhID0gYSArIGI7CiAgICBhID0gYiArIDI7Cn0KCg==