#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <vector>
using namespace std;
vector<int> add(vector<int> a,vector<int> b){
if(a.size()<b.size()){
return add(b,a);
}
vector<int> result;
int temp=0;
for(int i=0;i<a.size();i++){
temp = temp +a[i];
if(i<b.size()){
temp = temp +b[i];
}
result.push_back(temp%10);
temp = temp/10;
}
return result;
}
vector<int> mutiply(vector<int> &a,int b){
vector<int> result;
int temp = 0;
for(int i=0;i<a.size();i++){
temp = temp + a[i]*b;
result.push_back(temp%10);
temp = temp/10;
}
while(temp > 0){
result.push_back(temp%10);
temp = temp/10;
}
return result;
}
void print(vector<int> a){
for(int i=a.size()-1;i>=0;i--){
cout<<a[i];
}
}
vector<int> JieCheng(int n){
vector<int> result;
result.push_back(1);
for(int i=2;i<=n;i++){
result = mutiply(result,i);
}
return result;
}
int main(){
int n;
cin>>n;
vector<int> S;
S.push_back(0);
for(int i=1;i<=n;i++){
S = add(S,JieCheng(i));
}
print(S);
}