#include <bits/stdc++.h>
using namespace std;
void show(int a[],int n){
for(int i = 0;i < n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
int a[100][100] = {0};//存储每一项(2、2*2、2*2*2...)
int r[100] = {0};//存储总和的结果
int i,j,n;
cin>>n;
a[1][0] = 1;
int k = 1;//代表第i项共有多少位
for(i = 2;i <= n;i++){
//逐项乘n
for(j = 0;j < k;j++){
a[i][j] = a[i - 1][j] * i;
}
//最多多3位出来(乘以100)
k = k + 3;
for(j = 0;j < k;j++){
if(a[i][j] >= 10){
a[i][j + 1] = a[i][j + 1] + a[i][j] / 10;
a[i][j] = a[i][j] % 10;
}
}
//判断第i项乘以n后有没有多一项出现
while(a[i][k-1]==0){
k--;
}
// show(a[i],k);
}
//求和
for(i = 1;i <= n;i++){
for(j = 0;j < k;j++){
r[j] = r[j] + a[i][j];
if(r[j] >= 10){
r[j + 1] += r[j] / 10;
r[j] = r[j] % 10;
}
}
if(r[k] > 0){
k++;
}
}
int p = 0;
for(i = k - 1;i >= 0;i--){
if(r[i] != 0){
p = i;
break;
}
}
for(i = p;i >= 0;i--){
cout<<r[i];
}
}
/**************************************************************
Problem: 1296
User: admin
Language: C++
Result: Accepted
Time:16 ms
Memory:2076 kb
****************************************************************/