#include <iostream>
#include <cstdio>
using namespace std;
//英语 看博友好分析 抄博友程序 组合数学 巧妙 高精度 背
struct nod{
int num[500];
int l;
}da[210];
void fun(int x)
{
da[x].l=da[x-1].l;
for(int i=0;i<da[x-1].l;i++)
{
da[x].num[i]=da[x-1].num[i]*(x-1);
}
for(int i=0;i<da[x-1].l;i++)
{
da[x].num[i+1]+=da[x].num[i]/10;
da[x].num[i]=da[x].num[i]%10;
}
int t=da[x].num[da[x-1].l];
//cout<<x<<" "<<t<<endl;
while(t!=0)
{
da[x].num[da[x].l]=t%10;
da[x].l++;
t=t/10;
}
//if(x<20)
//{
// for(int i=da[x].l-1;i>=0;i--)
// {
// cout<<da[x].num[i];
// }
// cout<<endl;
//}
}
int main()
{
da[2].num[0]=2;
da[2].l=1;
for(int i=3;i<=200;i++)
{
fun(i);
}
while(1)
{
int n;
cin>>n;
if(n==-1)
{
break;
}
cout<<"N="<<n<<":"<<endl;
for(int i=da[n].l-1;i>=0;i--)
{
cout<<da[n].num[i];
}
cout<<endl;
}
return 0;
}