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