#include <iostream>
constexpr const char* format_of(char) { return "%c"; }
constexpr const char* format_of(int) { return "%d"; }
constexpr const char* format_of(unsigned long) { return "%lu"; }
constexpr const char* format_of(unsigned long long) { return "%llu"; }
template <typename T>
void my_printf(T t)
{
printf(format_of(t), t);
printf(" with format '%s'\n", format_of(t));
}
int main() {
my_printf('*');
my_printf(42);
my_printf(4242LLU);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY29uc3RleHByIGNvbnN0IGNoYXIqIGZvcm1hdF9vZihjaGFyKSB7IHJldHVybiAiJWMiOyB9CmNvbnN0ZXhwciBjb25zdCBjaGFyKiBmb3JtYXRfb2YoaW50KSB7IHJldHVybiAiJWQiOyB9CmNvbnN0ZXhwciBjb25zdCBjaGFyKiBmb3JtYXRfb2YodW5zaWduZWQgbG9uZykgeyByZXR1cm4gIiVsdSI7IH0KY29uc3RleHByIGNvbnN0IGNoYXIqIGZvcm1hdF9vZih1bnNpZ25lZCBsb25nIGxvbmcpIHsgcmV0dXJuICIlbGx1IjsgfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgbXlfcHJpbnRmKFQgdCkKewoJcHJpbnRmKGZvcm1hdF9vZih0KSwgdCk7CglwcmludGYoIiB3aXRoIGZvcm1hdCAnJXMnXG4iLCBmb3JtYXRfb2YodCkpOwp9CgppbnQgbWFpbigpIHsKCW15X3ByaW50ZignKicpOwoJbXlfcHJpbnRmKDQyKTsKCW15X3ByaW50Zig0MjQyTExVKTsKfQo=