#include <iostream>

template<typename T>
T sum(T v)
{
  return v;
}

template<typename T, typename... Args>
T sum(T first, Args... args)
{
  return first + sum(args...);
}

int main()
{
  long lsum = sum(1, 2, 3, 4, 5);

  std::string s1 = "He", s2 = "llo ", s3 = "Wor", s4 = "ld";
  std::string ssum = sum(s1, s2, s3, s4);

  std::cout << lsum << std::endl
            << ssum << std::endl;
  return 0;
}
