#include <stdio.h>

template<int n> struct faktorial
{
	static const int vysledek = n * faktorial<n-1>::vysledek;
};

template<> struct faktorial<0>
{
	static const int vysledek = 1;
};


int
main(void)
{
	static const int cislo = 30;
	static const int cislo_faktorial = faktorial<cislo>::vysledek;
	printf("%d\n", cislo_faktorial);
	return 0;
}
