template <unsigned long long i, char... d>
struct ItoA { static const char *value; };
template <unsigned long long i, char... d>
const char *ItoA<i, d...>::value = ItoA<i/10, ('0' + i%10), d...>::value;
template <char... d>
struct ItoA<0, d...> { static const char value[]; };
template <char... d>
const char ItoA<0, d...>::value[] = {d..., '\0'};
#include <stdio.h>
int main() {
printf(ItoA<3141592654>::value);
}
dGVtcGxhdGUgPHVuc2lnbmVkIGxvbmcgbG9uZyBpLCBjaGFyLi4uIGQ+CnN0cnVjdCBJdG9BIHsgc3RhdGljIGNvbnN0IGNoYXIgKnZhbHVlOyB9OwoKdGVtcGxhdGUgPHVuc2lnbmVkIGxvbmcgbG9uZyBpLCBjaGFyLi4uIGQ+CmNvbnN0IGNoYXIgKkl0b0E8aSwgZC4uLj46OnZhbHVlID0gSXRvQTxpLzEwLCAoJzAnICsgaSUxMCksIGQuLi4+Ojp2YWx1ZTsKCnRlbXBsYXRlIDxjaGFyLi4uIGQ+CnN0cnVjdCBJdG9BPDAsIGQuLi4+IHsgc3RhdGljIGNvbnN0IGNoYXIgdmFsdWVbXTsgfTsKCnRlbXBsYXRlIDxjaGFyLi4uIGQ+CmNvbnN0IGNoYXIgSXRvQTwwLCBkLi4uPjo6dmFsdWVbXSA9IHtkLi4uLCAnXDAnfTsKCgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBtYWluKCkgewoJcHJpbnRmKEl0b0E8MzE0MTU5MjY1ND46OnZhbHVlKTsKfQo=