include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int len = 5005;
struct big
{
long long l;
long long a[len];
void clear()
{
for(int i=l;i>=2;--i)
{
if(!a[i]) -- l;
else break ;
}
return ;
}
void in()
{
string s;
cin>>s;
l=s.length();
for(int i=1;i<=l;++i)
{
a[i] = (s[l-i] & 15);
}
return ;
}
void out()
{
clear();
for(int i=l;i>=1;--i)
{
cout<<a[i];
}
cout<<'\n';
return ;
}
big operator + (big b)const
{
big c;
memset(c.a,0,sizeof(c.a));
c.l = max(l,b.l) + 1;
for(int i=1;i<=c.l;++i)
{
c.a[i] += a[i] + b.a[i];
c.a[i+1] = c.a[i] / 10;
c.a[i] %= 10;
}
return c;
}
big operator * (int b)const
{
big c;
memset(c.a,0,sizeof(c.a));
c.l = l + 1;
for(int i=1;i<=l;++i)
{
c.a[i] += a[i] * b;
}
for(int i=1;i<=c.l;++i)
{
c.a[i+1] += c.a[i] / 10;
c.a[i] %= 10;
}
return c;
}
}num,ans;
long long n;
int main()
{
cin>>n;
memset(num.a,0,sizeof(num.a));
memset(ans.a,0,sizeof(ans.a));
num.l=1;
num.a[1]=1;
ans.l=1;
ans.a[1]=1;
for(int i=2;i<=n;++i)
{
num = num * i;
ans = ans + num;
}
ans.out();
return 0;
}