#include <iostream>
using namespace std;
template <class T>
class A
{
public:
A(T a): a(a) {;}
friend ostream& operator<<(ostream& os, A<T>& ob)
{
return os << ob.a << endl;
}
T a;
};
template <class T>
class B
{
public:
B(T a): a(a) {;}
template <class X>
friend ostream& operator<<(ostream&, B<X>&);
T a;
};
template <class X>
ostream& operator<<(ostream& os, B<X>& ob)
{
return os << ob.a << endl;
}
int main()
{
A<int> a(10);
B<int> b(20);
cout << a;
cout << b;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEEKewogICAgcHVibGljOgoJCUEoVCBhKTogYShhKSB7O30KCQlmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgQTxUPiYgb2IpCgkJewoJCQlyZXR1cm4gb3MgPDwgb2IuYSA8PCBlbmRsOwoJCX0KCQoJVCBhOwp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEIKewoJcHVibGljOgoJCUIoVCBhKTogYShhKSB7O30KCQl0ZW1wbGF0ZSA8Y2xhc3MgWD4KCQlmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgQjxYPiYpOwoKCQlUIGE7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgWD4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgQjxYPiYgb2IpCnsKCXJldHVybiBvcyA8PCBvYi5hIDw8IGVuZGw7Cn0KCmludCBtYWluKCkKewoJQTxpbnQ+IGEoMTApOwoJQjxpbnQ+IGIoMjApOwoJY291dCA8PCBhOwoJY291dCA8PCBiOwoJcmV0dXJuIDA7Cn0=