#include <cstdlib>
#include <cstdio>
template <size_t... s>
struct vector
{
static void print()
{
printf("%lu %lu %lu %lu\n", s...);
// ^ don't do this in real code :)
}
};
template <typename T, size_t e>
struct push_front;
template <size_t e, size_t... s>
struct push_front<vector<s...>, e>
{
typedef vector<e, s...> type;
};
int main()
{
push_front<vector<1, 2, 3>, 5>::type::print();
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+Cgp0ZW1wbGF0ZSA8c2l6ZV90Li4uIHM+CnN0cnVjdCB2ZWN0b3IKewogICAgc3RhdGljIHZvaWQgcHJpbnQoKQogICAgewogICAgICAgIHByaW50ZigiJWx1ICVsdSAlbHUgJWx1XG4iLCBzLi4uKTsKICAgICAgICAvLyBeIGRvbid0IGRvIHRoaXMgaW4gcmVhbCBjb2RlIDopCiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IGU+CnN0cnVjdCBwdXNoX2Zyb250OwoKdGVtcGxhdGUgPHNpemVfdCBlLCBzaXplX3QuLi4gcz4Kc3RydWN0IHB1c2hfZnJvbnQ8dmVjdG9yPHMuLi4+LCBlPgp7CiAgICB0eXBlZGVmIHZlY3RvcjxlLCBzLi4uPiB0eXBlOwp9OwoKaW50IG1haW4oKQp7CiAgICBwdXNoX2Zyb250PHZlY3RvcjwxLCAyLCAzPiwgNT46OnR5cGU6OnByaW50KCk7Cn0K