#include <iostream>

int add(int lhs, int rhs)
{
	return lhs + rhs;
}

int accum(int lhs, int rhs)
{
	return add(lhs, rhs);
}

template<typename... Args>
int accum(int lhs, int rhs, Args&&... rest)
{
	return accum(add(lhs, rhs), std::forward<Args>(rest)...);
}

int main() {
	std::cout << accum(10, 20, 100, 1000, 10000);
	return 0;
}