#include<iostream>
#define R 1000
using namespace std;
void jia(int s[],int ss[]);
void jiecheng(int ss[],int n);
void chus(int ss[]);
void daozhi(int ss[],int n);
void shuchu(int s[]);
int temp2; //创建一个新的数组来保存两个数组和的值
int main(){
int s[R] = { 0 },ss[R] = { 0 };
int n;
cin >> n ;
for(int i = 1;i <= n;i++){
jiecheng(ss,i);
jia(s,ss);
chus(ss);
}
shuchu(s);
return 0;
}
void jiecheng(int ss[],int n){
ss[0] = 1;
for(int i = 2;i <= n;i++){
int jinwei = 0;
int temp;
int k = 0;
while(k < R){
temp = jinwei;
jinwei = (ss[k] * i + jinwei) / 10;
ss[k] = (ss[k] * i + temp) % 10;
k++;
}
}
temp2 = R - 1;
while(!ss[temp2]){
temp2--;
}
}
void chus(int ss[]){
for(int i = 0;i <= R;i++){
ss[i] = 0;
}
}
void daozhi(int ss[],int n){
int temp3;
for(int i = 0;i <= n;i++,n--){
temp3 = ss[n];
ss[n] = ss[i];
ss[i] = temp3;
}
}
void jia(int a[],int b[]){
int r = 0;
int temp4;
for(int i = 0;i <= R;i++){
temp4 = a[i] + r;
a[i] = (temp4 + b[i] ) % 10;
r = (temp4 + b[i] ) / 10;
}
}
void shuchu(int s[]){
int temp3 = R - 1;
while(!s[temp3]){
temp3--;
}
for(int i = temp3;i >= 0;i--){
cout << s[i];
}
}