#include<bits/stdc++.h>
using namespace std;
string add(string a,string b){
string baik="",baika="";
int ai,bi,pla,carry,add_ab,i = 0;
int alen = a.length();
int blen = b.length();
for(int i = 0;i < 200-alen;i++){
a = "0" + a;
}
for(int i = 0;i < 200-blen;i++){
b = "0" + b;
}
for(int i = 199;i>=0;i--){
ai = a[i] - '0';
bi = b[i] - '0';
add_ab = ai + bi + carry;
pla = add_ab % 10;
/*
if(pla == 0 && carry == 0){
break;
}
*/
baik = to_string(pla) + baik;
carry = (add_ab - pla)/10;
}
//cout << a << " + " << b << " = " << baik << endl;
for(;baik[i] == '0';i++){}
//cout<<i<<endl;
for(;i<=199;i++){
baika = baika + baik[i];
}
baik = baika;
return baik;
}
string mul(string a,string b){
string mul_ab = "",pro_p = "0";
int alen = a.length(),blen = b.length(),carry,pla;
for(int i = blen-1;i >= 0;i--){
carry = 0;
mul_ab = "";
int vb = b[i]-'0';
for(int j = alen-1;j >= 0;j--){
int va = a[j]-'0';
int mab = va * vb + carry;
pla = mab % 10;
mul_ab = to_string(pla)+mul_ab;
carry = (mab -pla) / 10 ;
//carry = 0;
}
if(carry != 0){
mul_ab = char(carry + '0')+mul_ab;
}
for(int j = 1;j < blen - i;j++){
mul_ab = mul_ab + "0";
}
pro_p = add(pro_p, mul_ab);
mul_ab = "";
}
return pro_p;
}
string calcfac(int num){
string res = to_string(num);
if(num == 1){
return res;
}
res = mul(res, calcfac(num-1));
return res;
}
int main(){
int n = 0;
string s = "0";
cin>>n;
//if(n==6) {
// cout << to_string(873) << endl;
// return 0;
//}
//string fac = "1";
for(int i = 1; i <= n; i++){
//fac = mul(fac, to_string(i));
//cout << i << " "<<fac << " " << s << endl;
s = add(calcfac(i),s);
}
cout<<s;
}