#include <tuple>
#include <iostream>
template<std::size_t> struct int_{};
template<class Ch, class Tr, class Tuple, std::size_t I>
void print_tuple(std::basic_ostream<Ch,Tr>& os, Tuple const& t, int_<I>){
print_tuple(os, t, int_<I-1>());
os << ", " << std::get<I>(t);
}
template<class Ch, class Tr, class Tuple>
void print_tuple(std::basic_ostream<Ch,Tr>& os, Tuple const& t, int_<0>){
os << std::get<0>(t);
}
template<class Ch, class Traits, class... Args>
std::ostream& operator<<(std::basic_ostream<Ch,Traits>& os,
std::tuple<Args...> const& t)
{
os << "(";
print_tuple(os, t, int_<sizeof...(Args)-1>());
return os << ")";
}
int main(){
std::cout << std::make_tuple(5, "Hello", -0.1) << "\n";
}
I2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZTxzdGQ6OnNpemVfdD4gc3RydWN0IGludF97fTsKCnRlbXBsYXRlPGNsYXNzIENoLCBjbGFzcyBUciwgY2xhc3MgVHVwbGUsIHN0ZDo6c2l6ZV90IEk+CnZvaWQgcHJpbnRfdHVwbGUoc3RkOjpiYXNpY19vc3RyZWFtPENoLFRyPiYgb3MsIFR1cGxlIGNvbnN0JiB0LCBpbnRfPEk+KXsKICBwcmludF90dXBsZShvcywgdCwgaW50XzxJLTE+KCkpOwogIG9zIDw8ICIsICIgPDwgc3RkOjpnZXQ8ST4odCk7Cn0KCnRlbXBsYXRlPGNsYXNzIENoLCBjbGFzcyBUciwgY2xhc3MgVHVwbGU+CnZvaWQgcHJpbnRfdHVwbGUoc3RkOjpiYXNpY19vc3RyZWFtPENoLFRyPiYgb3MsIFR1cGxlIGNvbnN0JiB0LCBpbnRfPDA+KXsKICBvcyA8PCBzdGQ6OmdldDwwPih0KTsKfQoKdGVtcGxhdGU8Y2xhc3MgQ2gsIGNsYXNzIFRyYWl0cywgY2xhc3MuLi4gQXJncz4Kc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCxUcmFpdHM+JiBvcywKICAgICBzdGQ6OnR1cGxlPEFyZ3MuLi4+IGNvbnN0JiB0KQp7CiAgb3MgPDwgIigiOwogIHByaW50X3R1cGxlKG9zLCB0LCBpbnRfPHNpemVvZi4uLihBcmdzKS0xPigpKTsKICByZXR1cm4gb3MgPDwgIikiOwp9CgppbnQgbWFpbigpewogIHN0ZDo6Y291dCA8PCBzdGQ6Om1ha2VfdHVwbGUoNSwgIkhlbGxvIiwgLTAuMSkgPDwgIlxuIjsKfQ==