#include<iostream>
#include<algorithm>
#define MAXN 100
using namespace std;
struct Bigint{
int len, a[MAXN];
Bigint(int x = 0){
for (int len = 1; x; len++){
a[len] = x % 10;
x /= 10;
}
len--;
}
int &operator[](int i){
return a[i];
}
void flatten(int L){
len = L;
for (int i = 1; i <= len; i++){
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
while (!a[len]) len--;
}
void print(){
for (int i = max(1, len); i >= 1; i--) cout << a[i];
}
};
Bigint operator+(Bigint a, Bigint b){
Bigint c;
int len = max(a.len, b.len);
for (int i = 1; i <= len; i++){
c[i] += a[i] + b[i];
}
c.flatten(len + 1);
return c;
}
Bigint operator*(Bigint a, int b){
Bigint c;
for (int i = 1; i <= a.len; i++){
c[i] = a[i] * b;
}
c.flatten(a.len + 11);
return c;
}
int main(){
Bigint ans(0), num(1);
int n; cin >> n;
for (int i = 1; i <= n; i++){
num = num * i;
ans = ans + num;
}
ans.print();
return 0;
}
0分