#include <type_traits>
#include <utility>
#include <iostream>
template<typename T>
T sum(T a) { return a; }
template<typename T, typename T1>
typename std::common_type<T, T1>::type sum(T a, T1 b) { return a + b; };
template<typename T, typename ...Args>
typename std::common_type<T, Args...>::type sum(T a, Args ...args) {
return sum(a, sum(args...));
};
int main() {
std::cout << sum(1, 2, 3) << std::endl;
std::cout << sum(1) << std::endl;
std::cout << sum(2, 5, 6, 8, 8, 9, 2.2f) << std::endl;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBzdW0oVCBhKSB7IHJldHVybiBhOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUMT4KdHlwZW5hbWUgc3RkOjpjb21tb25fdHlwZTxULCBUMT46OnR5cGUgc3VtKFQgYSwgVDEgYikgeyByZXR1cm4gYSArIGI7IH07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSAuLi5BcmdzPgp0eXBlbmFtZSBzdGQ6OmNvbW1vbl90eXBlPFQsIEFyZ3MuLi4+Ojp0eXBlIHN1bShUIGEsIEFyZ3MgLi4uYXJncykgewogICAgcmV0dXJuIHN1bShhLCBzdW0oYXJncy4uLikpOwp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmNvdXQgPDwgc3VtKDEsIDIsIDMpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBzdW0oMSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IHN1bSgyLCA1LCA2LCA4LCA4LCA5LCAyLjJmKSA8PCBzdGQ6OmVuZGw7Cn0=