#include <iostream>
typedef long long int type;
using namespace std;
const type size = 10;
type mod (type a) // a%10
{
type next=a/10;
return a-10*next;
}
void silnia (type n)
{
cout << "nie ma mnie";
unsigned int * const T = new unsigned int [size];
for(type i = 1; i!=size; ++i)
*(T + i) = 0;
*T = 1;
type i;
type liczba_cyfr = 1;
for(type k = 2; k<=n; ++k) // 2, 3, 4,..., n
{
for(i = 0; i<liczba_cyfr; ++i) // mnozymy kazdą cyfre
*(T+i)*= k;
for(i = 0; i<liczba_cyfr || T[i]>0; ++i)
{
T[i+1]+= T[i];
T[i] = mod(T[i]);
}
liczba_cyfr = i;
}
for(unsigned int *wsk = T+size-1; wsk>=T ; --wsk)
cout<<*wsk;
return;
}
int main()
{
type n;
cin >> n;
silnia (n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgdHlwZTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IHR5cGUgc2l6ZSA9IDEwOwoKdHlwZSBtb2QgKHR5cGUgYSkgLy8gYSUxMAp7CiAgdHlwZSBuZXh0PWEvMTA7CiAgcmV0dXJuIGEtMTAqbmV4dDsKfQoKdm9pZCBzaWxuaWEgKHR5cGUgbikKewogIGNvdXQgPDwgIm5pZSBtYSBtbmllIjsKICB1bnNpZ25lZCBpbnQgKiBjb25zdCBUID0gbmV3IHVuc2lnbmVkIGludCBbc2l6ZV07CgogIGZvcih0eXBlIGkgPSAxOyBpIT1zaXplOyArK2kpCiAgICAqKFQgKyBpKSA9IDA7CiAgKlQgPSAxOwoKICB0eXBlIGk7CiAgdHlwZSBsaWN6YmFfY3lmciA9IDE7CgogIGZvcih0eXBlIGsgPSAyOyBrPD1uOyArK2spIC8vIDIsIDMsIDQsLi4uLCBuCiAgewogICAgZm9yKGkgPSAwOyBpPGxpY3piYV9jeWZyOyArK2kpIC8vIG1ub3p5bXkga2F6ZMSFIGN5ZnJlCiAgICAgICooVCtpKSo9IGs7CgogICAgZm9yKGkgPSAwOyBpPGxpY3piYV9jeWZyIHx8IFRbaV0+MDsgKytpKQogICAgewogICAgICBUW2krMV0rPSBUW2ldOwogICAgICBUW2ldID0gbW9kKFRbaV0pOwogICAgfQogICAgbGljemJhX2N5ZnIgPSBpOwogIH0KCiAgZm9yKHVuc2lnbmVkIGludCAqd3NrID0gVCtzaXplLTE7IHdzaz49VCA7IC0td3NrKQogICAgY291dDw8KndzazsKCiAgcmV0dXJuOwp9CgppbnQgbWFpbigpCnsKICB0eXBlIG47CiAgY2luID4+IG47CiAgc2lsbmlhIChuKTsKICByZXR1cm4gMDsKfQ==