#include <iostream>
#include <cstdarg>
using namespace std;
template<typename T>
void Print(T val) {
cout << val << endl;
}
void Print(int val) {
cout << "i: " << val << endl;
}
template<typename T>
void Foobar(int nNumberofParams,...) {
va_list args;
va_start(args,nNumberofParams);
for(int i =0 ; i < nNumberofParams; i++)
{
T val = va_arg(args,T);
Print(val);
}
va_end(args);
}
int main() {
Foobar<int>(3, 1, 2, 3);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGFyZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKdm9pZCBQcmludChUIHZhbCkgewogIGNvdXQgPDwgdmFsIDw8IGVuZGw7Cn0KCnZvaWQgUHJpbnQoaW50IHZhbCkgewogIGNvdXQgPDwgImk6ICIgPDwgdmFsIDw8IGVuZGw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgRm9vYmFyKGludCBuTnVtYmVyb2ZQYXJhbXMsLi4uKSB7CiAgdmFfbGlzdCBhcmdzOyAgCiAgdmFfc3RhcnQoYXJncyxuTnVtYmVyb2ZQYXJhbXMpOwogIGZvcihpbnQgaSA9MCA7IGkgPCBuTnVtYmVyb2ZQYXJhbXM7IGkrKykKICB7ICAKICAgIFQgdmFsID0gdmFfYXJnKGFyZ3MsVCk7CiAgICBQcmludCh2YWwpOwogIH0KICB2YV9lbmQoYXJncyk7Cn0KCmludCBtYWluKCkgewogIEZvb2JhcjxpbnQ+KDMsIDEsIDIsIDMpOwp9Cg==