rt
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void r_zero(string &s)
{
while(s[0]=='0') s.erase(0,1);
}
string hi(string A,string B)
{
string C;
int a[50000]={0},b[50000]={0},c[100000]={0},lenA,lenB,lenC;
lenA=A.length(),lenB=B.length(),lenC=lenA+lenB;
for(int i=1,j=lenA-1;j>=0;i++,j--) a[i]=A[j]^48;
for(int i=1,j=lenB-1;j>=0;i++,j--) b[i]=B[j]^48;
for(int i=1;i<=lenA;i++)
{
for(int j=1;j<=lenB;j++) c[i+j-1]+=a[i]*b[j];
}
for(int i=1;i<=lenC;i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
while(!c[lenC] && lenC>1) lenC--;
for(int i=lenC;i>=1;i--) C+=c[i]+'0';
return C;
}
string hi_plus(string a,string b)
{
int na[50000]={},nb[50000]={},ans[50000]={},as=a.length(),bs=b.length();
string rans;
r_zero(a);
r_zero(b);
as=a.length();
bs=b.length();
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
for(int i=as-1;i>=0;i--) na[i]=a[i]^48;
for(int i=bs-1;i>=0;i--) nb[i]=b[i]^48;
for(int i=max(as-1,bs-1);i>=0;i--) ans[i]=na[i]+nb[i];
for(int i=0;i<max(as,bs);i++)
{
ans[i+1]+=ans[i]/10;
ans[i]%=10;
}
for(int i=max(as-1,bs-1);i>=0;i--) rans+=ans[i]+'0';
r_zero(rans);
return rans;
}
string int_to_string(int x)
{
string ans;
while(x!=0)
{
int c;
c=x%10;
x/=10;
ans+=c+'0';
}
return ans;
}
string jc(int x)
{
if(x==0) return "1";
string ans="1";
for(int i=x;i>=1;i--) ans=hi(ans,int_to_string(i));
return ans;
}
int main()
{
int n;
cin>>n;
if(n==1)
{
printf("1");
return 0;
}
if(n==0)
{
printf("1");
return 0;
}
string ans="0";
for(int i=1;i<=n;i++) ans=hi_plus(jc(i),ans);
cout<<ans;
return 0;
}