#include<iostream>
template<unsigned int X, unsigned int N>
struct Power
{
static const unsigned int value = X * Power<X,N-1>::value;
};
template<unsigned int X>
struct Power<X,0>
{
static const unsigned int value = 1;
};
int main ()
{
std::cout << "Power<5,4> = " << Power<5,4>::value << "\n";
}
I2luY2x1ZGU8aW9zdHJlYW0+Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBpbnQgWCwgdW5zaWduZWQgaW50IE4+CnN0cnVjdCBQb3dlcgp7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHZhbHVlID0gWCAqIFBvd2VyPFgsTi0xPjo6dmFsdWU7Cn07Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBpbnQgWD4Kc3RydWN0IFBvd2VyPFgsMD4KewogIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwp9OwoKaW50IG1haW4gKCkKewogIHN0ZDo6Y291dCA8PCAiUG93ZXI8NSw0PiA9ICIgPDwgUG93ZXI8NSw0Pjo6dmFsdWUgPDwgIlxuIjsKfQo=