#include <iostream>
#include <string>
void append_to_stream(std::ostream &stream)
{ }
template <typename T, typename... Args>
void append_to_stream(std::ostream &stream, T first, Args&&... rest)
{
stream << first;
append_to_stream(stream, rest...);
}
template<class e, class t, class a> //string version
auto get_endl(const std::basic_string<e,t,a>&) -> decltype(&std::endl<e,t>)
{ return std::endl<e,t>; }
template<class e, class t> //ostream version
auto get_endl(const std::basic_ostream<e,t>&) -> decltype(&std::endl<e,t>)
{ return std::endl<e,t>; }
int main () {
std::ostream& stream = std::cout;
append_to_stream(stream,
get_endl(stream),
get_endl(stream));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBhcHBlbmRfdG9fc3RyZWFtKHN0ZDo6b3N0cmVhbSAmc3RyZWFtKQp7IH0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIGFwcGVuZF90b19zdHJlYW0oc3RkOjpvc3RyZWFtICZzdHJlYW0sIFQgZmlyc3QsIEFyZ3MmJi4uLiByZXN0KQp7CiAgc3RyZWFtIDw8IGZpcnN0OwogIGFwcGVuZF90b19zdHJlYW0oc3RyZWFtLCByZXN0Li4uKTsKfQoKdGVtcGxhdGU8Y2xhc3MgZSwgY2xhc3MgdCwgY2xhc3MgYT4gLy9zdHJpbmcgdmVyc2lvbgphdXRvIGdldF9lbmRsKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGUsdCxhPiYpIC0+IGRlY2x0eXBlKCZzdGQ6OmVuZGw8ZSx0PikKIHsgcmV0dXJuIHN0ZDo6ZW5kbDxlLHQ+OyB9Cgp0ZW1wbGF0ZTxjbGFzcyBlLCBjbGFzcyB0PiAvL29zdHJlYW0gdmVyc2lvbgphdXRvIGdldF9lbmRsKGNvbnN0IHN0ZDo6YmFzaWNfb3N0cmVhbTxlLHQ+JikgLT4gZGVjbHR5cGUoJnN0ZDo6ZW5kbDxlLHQ+KQogeyByZXR1cm4gc3RkOjplbmRsPGUsdD47IH0KCmludCBtYWluICgpIHsKICBzdGQ6Om9zdHJlYW0mIHN0cmVhbSA9IHN0ZDo6Y291dDsKICBhcHBlbmRfdG9fc3RyZWFtKHN0cmVhbSwKICAgICAgICAgICAgICAgICBnZXRfZW5kbChzdHJlYW0pLAogICAgICAgICAgICAgICAgIGdldF9lbmRsKHN0cmVhbSkpOwp9