#include <iostream>
template <typename T>
class Number
{
T val;
template<typename U>
friend std::ostream& operator<< (std::ostream& os, const Number<U>& num);
public:
Number() : val(T{}) { }
Number(T value) : val{ value } { }
};
template <typename T>
std::ostream& operator<< (std::ostream& os, const Number<T>& num)
{
os << num.val;
return os;
}
int main()
try
{
Number<int> a;
a = 10;
std::cout << a;
return 0;
}
catch (std::exception& e)
{
std::cout << e.what();
return 1;
}
catch (...)
{
std::cout << "Unknown error";
return 2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIE51bWJlcgp7CiAgICBUIHZhbDsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBOdW1iZXI8VT4mIG51bSk7CnB1YmxpYzoKICAgIE51bWJlcigpIDogdmFsKFR7fSkgeyB9CiAgICBOdW1iZXIoVCB2YWx1ZSkgOiB2YWx7IHZhbHVlIH0geyB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBOdW1iZXI8VD4mIG51bSkKewogICAgb3MgPDwgbnVtLnZhbDsKICAgIHJldHVybiBvczsKfQoKaW50IG1haW4oKQp0cnkKewogICAgTnVtYmVyPGludD4gYTsKICAgIGEgPSAxMDsKICAgIHN0ZDo6Y291dCA8PCBhOwogICAgcmV0dXJuIDA7Cn0KY2F0Y2ggKHN0ZDo6ZXhjZXB0aW9uJiBlKQp7CiAgICBzdGQ6OmNvdXQgPDwgZS53aGF0KCk7CiAgICByZXR1cm4gMTsKfQpjYXRjaCAoLi4uKQp7CiAgICBzdGQ6OmNvdXQgPDwgIlVua25vd24gZXJyb3IiOwogICAgcmV0dXJuIDI7Cn0K