#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
void c_p_c() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
long long md = 1e9 + 7;
long long fact[1000007];
void pre() {
  fact[0] = 1;
  for (long long i = 1; i <= 1000002; i++) fact[i] = (fact[i - 1] * i) % md;
}
long long mul(long long a, long long b) { return (a * b) % md; }
long long power(long long a, long long n) {
  if (n == 0) return 1;
  long long ans = power(a, n / 2);
  if (n % 2) return mul(ans, mul(ans, a));
  return mul(ans, ans);
}
long long inv(long long x) { return power(x, md - 2); }
long long c(long long n, long long r) {
  return mul(fact[n], inv(mul(fact[r], fact[n - r])));
}
int32_t main() {
  c_p_c();
  long long n;
  cin >> n;
  pre();
  long long ans = fact[n] - 2;
  for (long long i = 1; i <= n - 2; i++) ans -= c(n - 1, i);
  ans = (ans) % md;
  ans = (ans + md) % md;
  cout << ans;
  return 0;
}
