#include<iostream>
#include<vector>
auto h(auto i){return 0;}
auto h(auto i, auto x, auto...p){
return x+(i-1?h(i-1,p...):0);
}
auto g(auto v){return v;}
auto g(auto v,auto x, auto...p){
v.push_back(h(x,x,p...));
return g(v,p...);
}
auto f(auto...p){
return g(std::vector<int>{},p...);
}
int main() {
auto v = f(5, 1, 2, 4, 1);
for (auto i:v) std::cout << i << ", ";
std::cout << std::endl;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KCmF1dG8gaChhdXRvIGkpe3JldHVybiAwO30KYXV0byBoKGF1dG8gaSwgYXV0byB4LCBhdXRvLi4ucCl7CiByZXR1cm4geCsoaS0xP2goaS0xLHAuLi4pOjApOwp9CgphdXRvIGcoYXV0byB2KXtyZXR1cm4gdjt9CmF1dG8gZyhhdXRvIHYsYXV0byB4LCBhdXRvLi4ucCl7CiB2LnB1c2hfYmFjayhoKHgseCxwLi4uKSk7CiByZXR1cm4gZyh2LHAuLi4pOwp9CgphdXRvIGYoYXV0by4uLnApewogcmV0dXJuIGcoc3RkOjp2ZWN0b3I8aW50Pnt9LHAuLi4pOwp9CgppbnQgbWFpbigpIHsKIGF1dG8gdiA9IGYoNSwgMSwgMiwgNCwgMSk7CiBmb3IgKGF1dG8gaTp2KSBzdGQ6OmNvdXQgPDwgaSA8PCAiLCAiOwogc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKfQ==