// template<typename T>
// auto sum(const T& t) {
//     return t;
// }
 
// template<typename First, typename Second, typename ...T>
// auto sum(const First& first, const Second& second, const T& ...t) {
//     return first + sum(second, t...);
// }
 
// #include <initializer_list>
 
// template<typename First, typename Second, typename ...T>
// auto sum(const First& first, const Second& second, const T& ...t) {
//     auto result = first;
//     (void)std::initializer_list<int>{(result += t, 0)...};
//     return result;
// }
 
template<typename ...T>
auto sum(const T& ...t) {
    return (t + ...);
}
 
int main() {
    auto S = sum(1.0, 2, 3000);
    return 0;
}