#include using namespace std; int n; vector add(vector &A, vector &B) { if (A.size() < B.size()) return add(B, A); vector C; int t = 0; for (int i = 0; i < A.size(); i++) { t += A[i]; if (i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; } if (t) C.push_back(t); return C; } vector mul(vector &A, int b) { vector C; int t = 0; for (int i = 0; i < A.size() || t; i++) { if (i < A.size()) t += A[i] * b; C.push_back(t % 10); t /= 10; } while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; } int main() { cin >> n; vector A, S; //初始化 A.push_back(1); S.push_back(1); for (int i = 2; i <= n; i++) { A = mul(A, i); S = add(A, S); } for (int i = S.size() - 1; i >= 0; i--)printf("%d", S[i]); return 0; }