#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));
DBG(f(true,false,true));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHV0aWxpdHk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBEQkcoeCkgeyBjb3V0IDw8IGxlZnQgPDwgc2V0dygzMCkgPDwgI3ggPDwgKHgpIDw8IGVuZGw7IH0KCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKCmNvbnN0ZXhwciB1NjQgY3RfcG93KHU2NCBiYXNlLCB1NjQgZXhwKXsKCXJldHVybiBleHAgPyBiYXNlICogY3RfcG93KGJhc2UsZXhwLTEpOiAxOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGYoVCYmIGxhc3QpOwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gT3M+CmludCBmKFQmJiBmaXJzdCwgT3MuLi4gbykKewoJcmV0dXJuIGZpcnN0KiBjdF9wb3coMTAsc2l6ZW9mLi4uKE9zKSkgKyBmKGZvcndhcmQ8T3M+KG8pLi4uKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBmKFQmJiBsYXN0KXsKCXJldHVybiBsYXN0Owp9CgphdXRvIG1haW4oKSAtPiBpbnQKewoJREJHKGYoMSkpOwoJREJHKGYoMSwwKSk7CglEQkcoZig1LDEpKTsKCglEQkcoZih0cnVlLGZhbHNlLHRydWUpKTsKfQoKCg==