#include <iostream>
template<typename T, typename K>
struct A{
template<typename L>
friend std::ostream& operator<<(std::ostream& out, L const &x);
};
template<typename T>
std::ostream& operator<<(std::ostream& out, T const &x) {
(void) x; // to silent the compiler
// ...
return out;
}
int main(){
A<int, int> i;
A<double, int> j;
(void)i;
(void)j;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSz4Kc3RydWN0IEF7CiAgdGVtcGxhdGU8dHlwZW5hbWUgTD4KICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBMIGNvbnN0ICZ4KTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgVCBjb25zdCAmeCkgewogICh2b2lkKSB4OyAvLyB0byBzaWxlbnQgdGhlIGNvbXBpbGVyCiAgICAvLyAuLi4KICAgIHJldHVybiBvdXQ7Cn0KCmludCBtYWluKCl7CiAgQTxpbnQsIGludD4gaTsKICBBPGRvdWJsZSwgaW50PiBqOwoKICAodm9pZClpOwogICh2b2lkKWo7Cn0=