#include <iostream>
#include <sstream>
template<typename T, typename U>
void call(T& array, U it, std::ostream& o)
{
if(it != std::end(array)) {
o << *it;
++it;
call(array, it, o);
}
}
int main()
{
for(int i = 0 ; i < 3 ; ++i) {
std::stringstream s;
int a[] = { 1, 2, 3, 4, 5, 6 };
call(a, std::begin(a), s);
std::cout << s.str() << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CnZvaWQgY2FsbChUJiBhcnJheSwgVSBpdCwgc3RkOjpvc3RyZWFtJiBvKQp7CglpZihpdCAhPSBzdGQ6OmVuZChhcnJheSkpIHsKCQlvIDw8ICppdDsKCQkrK2l0OwoJCWNhbGwoYXJyYXksIGl0LCBvKTsKCX0KfQoKaW50IG1haW4oKQp7Cglmb3IoaW50IGkgPSAwIDsgaSA8IDMgOyArK2kpIHsKCQlzdGQ6OnN0cmluZ3N0cmVhbSBzOwoJCWludCBhW10gPSB7IDEsIDIsIDMsIDQsIDUsIDYgfTsKCQljYWxsKGEsIHN0ZDo6YmVnaW4oYSksIHMpOwoJCXN0ZDo6Y291dCA8PCBzLnN0cigpIDw8IHN0ZDo6ZW5kbDsKCX0KCglyZXR1cm4gMDsKfQo=