#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;
}