#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> mul(vector<int> A,vector<int> B)
{
if(A.size()<B.size())
{
return mul(B,A);
}
int t=0;
vector<int> C(A.size()+B.size(),0);
for(int i=0;i<B.size();i++)
{
for(int j=0;j<A.size();j++)
{
C[i+j]=A[j]*B[i];
}
}
for(int i=0;i<C.size();i++)
{
C[i+1]+=C[i]/10;
C[i]%=10;
}
while(C.size()>1&&C.back()==0)
{
C.pop_back();
}
return C;
}
vector<int> add(vector<int> A,vector<int> B)
{
if(A.size()<B.size())
{
return add(B,A);
}
int t=0;
vector<int> C;
for(int i=0;i<A.size();i++)
{
t+=A[i];
if(i<B.size())
{
t+=B[i];
}
C.push_back(t%10);
t/=10;
}
if(t) C.push_back(t);
return C;
}
vector<int> fact(int a)
{
vector<int> result(1,1);
for(int i=2;i<=a;i++)
{
vector<int> multi;
int temp=i;
while(temp>0)
{
multi.push_back(temp%10);
temp/=10;
}
result=mul(result,multi);
}
return result;
}
vector<int> sum_fact(int n)
{
vector<int> sum(1,0);
for(int i=1;i<=n;i++)
{
vector<int> fac=fact(i);
sum=add(sum,fac);
}
return sum;
}
int main()
{
int n;
cin>>n;
vector<int> result=sum_fact(n);
for(int i=result.size()-1;i>=0;i--)
{
cout<<result[i];
}
return 0;
}