#include <iostream>
using namespace std;
template<class T>
class Number
{
T number;
public:
template <class U> friend class Number;
Number(T num)
{
number=num;
}
template<class U>
Number<T>& operator=(const Number<U>& num)
{
number=static_cast<T>(num.number);
return *this;
}
friend int main();
};
int main() {
Number<char> c(10);
Number<int> d(20);
cout << (int)c.number << " " << d.number << endl;
d = c;
cout << (int)c.number << " " << d.number << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgTnVtYmVyCnsKICAgIFQgbnVtYmVyOwpwdWJsaWM6CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIE51bWJlcjsKICAgIE51bWJlcihUIG51bSkKICAgIHsKICAgICAgICBudW1iZXI9bnVtOwogICAgfQogICAgdGVtcGxhdGU8Y2xhc3MgVT4KICAgIE51bWJlcjxUPiYgb3BlcmF0b3I9KGNvbnN0IE51bWJlcjxVPiYgbnVtKQogICAgewogICAgICAgIG51bWJlcj1zdGF0aWNfY2FzdDxUPihudW0ubnVtYmVyKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiAgICBmcmllbmQgaW50IG1haW4oKTsKfTsKCmludCBtYWluKCkgewoJTnVtYmVyPGNoYXI+IGMoMTApOwoJTnVtYmVyPGludD4gZCgyMCk7Cgljb3V0IDw8IChpbnQpYy5udW1iZXIgPDwgIiAiIDw8IGQubnVtYmVyIDw8IGVuZGw7CglkID0gYzsKCWNvdXQgPDwgKGludCljLm51bWJlciA8PCAiICIgPDwgZC5udW1iZXIgPDwgZW5kbDsKCXJldHVybiAwOwp9