#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
template<typename T, T ...ts>
struct value_list
{
//Get individual value
template<int ix>
static constexpr auto get()
{ return std::get<ix>(std::make_tuple(ts...)); }
//Get a container
template<typename Container>
static auto get_container() {return Container{ts...};}
template<T new_val>
constexpr auto push_back()
{return value_list<T, ts..., new_val>();}
template<T new_val>
constexpr auto push_front()
{return value_list<T, new_val, ts...>();}
};
int main() {
value_list<int, 5, 4, 12> vl;
std::cout << vl.get<1>() << std::endl;
auto v2 = vl.push_back<33>();
std::cout << v2.get<3>() << std::endl;
for(auto val : v2.get_container<std::vector<int>>())
std::cout << val << " ";
std::cout << std::endl;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dHVwbGU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIC4uLnRzPgpzdHJ1Y3QgdmFsdWVfbGlzdAp7CiAgICAvL0dldCBpbmRpdmlkdWFsIHZhbHVlCiAgICB0ZW1wbGF0ZTxpbnQgaXg+CiAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ2V0KCkKICAgIHsgcmV0dXJuIHN0ZDo6Z2V0PGl4PihzdGQ6Om1ha2VfdHVwbGUodHMuLi4pKTsgfQoKICAgIC8vR2V0IGEgY29udGFpbmVyCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+CiAgICBzdGF0aWMgYXV0byBnZXRfY29udGFpbmVyKCkge3JldHVybiBDb250YWluZXJ7dHMuLi59O30KICAgIAogICAgdGVtcGxhdGU8VCBuZXdfdmFsPgogICAgY29uc3RleHByIGF1dG8gcHVzaF9iYWNrKCkKICAgIHtyZXR1cm4gdmFsdWVfbGlzdDxULCB0cy4uLiwgbmV3X3ZhbD4oKTt9CgogICAgdGVtcGxhdGU8VCBuZXdfdmFsPgogICAgY29uc3RleHByIGF1dG8gcHVzaF9mcm9udCgpCiAgICB7cmV0dXJuIHZhbHVlX2xpc3Q8VCwgbmV3X3ZhbCwgdHMuLi4+KCk7fQp9OwoKaW50IG1haW4oKSB7CiAgICB2YWx1ZV9saXN0PGludCwgNSwgNCwgMTI+IHZsOwoJc3RkOjpjb3V0IDw8IHZsLmdldDwxPigpIDw8IHN0ZDo6ZW5kbDsKCQoJYXV0byB2MiA9IHZsLnB1c2hfYmFjazwzMz4oKTsKCXN0ZDo6Y291dCA8PCB2Mi5nZXQ8Mz4oKSA8PCBzdGQ6OmVuZGw7CgkKCWZvcihhdXRvIHZhbCA6IHYyLmdldF9jb250YWluZXI8c3RkOjp2ZWN0b3I8aW50Pj4oKSkKCQlzdGQ6OmNvdXQgPDwgdmFsIDw8ICIgIjsKCSAgCglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgCgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==