#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MOD = 1000000007; const vector > tmp = { { 0, 1 }, { 10000000, 682498929 }, { 200000000, 933245637 }, { 300000000, 668123525 }, { 400000000, 429277690 }, { 500000000, 733333339 }, { 600000000, 724464507 }, { 700000000, 957939114 }, { 800000000, 203191898 }, { 900000000, 586445753 }, { 1000000000, 698611116 }, { 1100000000, 0 }, }; int main() { long long n; cin >> n; if(n >= MOD){ cout << 0 << endl; return 0; } int k = 0; while(tmp[k+1].first < n) ++ k; long long x = tmp[k].second; for(long long i=tmp[k].first+1; i<=n; ++i){ x *= i; x %= MOD; } cout << x << endl; return 0; }