#include <iostream>
#include <iomanip>
#include <utility>

using namespace std;

#define DBG(x) { cout << left << setw(30) << #x << (x) << endl; }

typedef unsigned long long u64;

constexpr u64 ct_pow(u64 base, u64 exp){
	return exp ? base * ct_pow(base,exp-1): 1;
}

template<typename T> T f(T&& last);

template<typename T, typename... Os>
int f(T&& first, Os&&... o)
{
	return first* ct_pow(10,sizeof...(Os)) + f(forward<Os>(o)...);
}

template<typename T>
T f(T&& last){
	return last;
}

auto main() -> int
{
	DBG(f(1));
	DBG(f(1,0));
	DBG(f(5,1,7,8));

	DBG(f(true,false,true));
}


