#include <iostream>
template<typename T>
void
apply(void(*f)(T), T t){
f(t);
}
template<typename T>
void
print(T t){
std::cout << t << std::endl;
}
int
main(){
apply(static_cast<void(*)(int)>(print), 10);
apply(print, 10);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZAphcHBseSh2b2lkKCpmKShUKSwgVCB0KXsKCWYodCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQKcHJpbnQoVCB0KXsKCXN0ZDo6Y291dCA8PCB0IDw8IHN0ZDo6ZW5kbDsKfQoKCmludAptYWluKCl7CglhcHBseShzdGF0aWNfY2FzdDx2b2lkKCopKGludCk+KHByaW50KSwgMTApOwoJYXBwbHkocHJpbnQsIDEwKTsKCXJldHVybiAwOwp9Cg==