#include <iostream>
#include <utility>
struct disambiguator_t {};
const auto split = disambiguator_t();
template <typename ...Tn>
void Print ( Tn&&... argn ) {
using swallow = int[];
(void)swallow{ (std::cout << argn << " ", 0)... };
}
#include <type_traits>
template<class C, class T = int>
using DisableIf = typename std::enable_if<!C::value, T>::type;
template<class... Ts, class... Vs>
void cleave(Ts&&... ts, disambiguator_t const&, Vs&&... vs){
Print( std::forward<Ts>( ts )... );
std::cout << std::endl << "Split!" << std::endl;
Print( std::forward<Vs>( vs )... );
}
template<class... Ts, class U, class... Vs, DisableIf<std::is_same<U, disambiguator_t const&>> = 0>
void cleave(Ts&&... ts, U&& u, Vs&&... vs){
cleave<Ts..., U>(std::forward<Ts>(ts)..., std::forward<U>(u), std::forward<Vs>(vs)...);
}
int main ( int argc, char** argv ) {
cleave( 1, 2, 3, split, 4, 5, 6 );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnN0cnVjdCBkaXNhbWJpZ3VhdG9yX3Qge307CmNvbnN0IGF1dG8gc3BsaXQgPSBkaXNhbWJpZ3VhdG9yX3QoKTsKCnRlbXBsYXRlIDx0eXBlbmFtZSAuLi5Ubj4Kdm9pZCBQcmludCAoIFRuJiYuLi4gYXJnbiApIHsKICAgIHVzaW5nIHN3YWxsb3cgPSBpbnRbXTsKICAgICh2b2lkKXN3YWxsb3d7IChzdGQ6OmNvdXQgPDwgYXJnbiA8PCAiICIsIDApLi4uIH07Cn0KCiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCnRlbXBsYXRlPGNsYXNzIEMsIGNsYXNzIFQgPSBpbnQ+CnVzaW5nIERpc2FibGVJZiA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFDOjp2YWx1ZSwgVD46OnR5cGU7Cgp0ZW1wbGF0ZTxjbGFzcy4uLiBUcywgY2xhc3MuLi4gVnM+CnZvaWQgY2xlYXZlKFRzJiYuLi4gdHMsIGRpc2FtYmlndWF0b3JfdCBjb25zdCYsIFZzJiYuLi4gdnMpewogICAgUHJpbnQoIHN0ZDo6Zm9yd2FyZDxUcz4oIHRzICkuLi4gKTsKICAgIAogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbCA8PCAiU3BsaXQhIiA8PCBzdGQ6OmVuZGw7CiAgICAKICAgIFByaW50KCBzdGQ6OmZvcndhcmQ8VnM+KCB2cyApLi4uICk7Cn0KCnRlbXBsYXRlPGNsYXNzLi4uIFRzLCBjbGFzcyBVLCBjbGFzcy4uLiBWcywgRGlzYWJsZUlmPHN0ZDo6aXNfc2FtZTxVLCBkaXNhbWJpZ3VhdG9yX3QgY29uc3QmPj4gPSAwPgp2b2lkIGNsZWF2ZShUcyYmLi4uIHRzLCBVJiYgdSwgVnMmJi4uLiB2cyl7CiAgICBjbGVhdmU8VHMuLi4sIFU+KHN0ZDo6Zm9yd2FyZDxUcz4odHMpLi4uLCBzdGQ6OmZvcndhcmQ8VT4odSksIHN0ZDo6Zm9yd2FyZDxWcz4odnMpLi4uKTsKfQoKaW50IG1haW4gKCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKSB7CiAgICBjbGVhdmUoIDEsIDIsIDMsIHNwbGl0LCA0LCA1LCA2ICk7CiAgICAKfQ==