#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));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHV0aWxpdHk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBEQkcoeCkgeyBjb3V0IDw8IGxlZnQgPDwgc2V0dygzMCkgPDwgI3ggPDwgKHgpIDw8IGVuZGw7IH0KCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKCmNvbnN0ZXhwciB1NjQgY3RfcG93KHU2NCBiYXNlLCB1NjQgZXhwKXsKCXJldHVybiBleHAgPyBiYXNlICogY3RfcG93KGJhc2UsZXhwLTEpOiAxOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGYoVCYmIGxhc3QpOwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gT3M+CmludCBmKFQmJiBmaXJzdCwgT3MmJi4uLiBvKQp7CglyZXR1cm4gZmlyc3QqIGN0X3BvdygxMCxzaXplb2YuLi4oT3MpKSArIGYoZm9yd2FyZDxPcz4obykuLi4pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpUIGYoVCYmIGxhc3QpewoJcmV0dXJuIGxhc3Q7Cn0KCmF1dG8gbWFpbigpIC0+IGludAp7CglEQkcoZigxKSk7CglEQkcoZigxLDApKTsKCURCRyhmKDUsMSw3LDgpKTsKCglEQkcoZih0cnVlLGZhbHNlLHRydWUpKTsKfQoKCg==