#include <bits/stdc++.h>

using namespace std;

const int MOD = 1e9+7;

int64_t gcdExtended(int64_t a, int64_t b, int64_t* x, int64_t* y) { 
  if (a == 0) { 
    *x = 0, *y = 1; 
    return b; 
  } 
  int64_t x1, y1;
  int64_t gcd = gcdExtended(b % a, a, &x1, &y1); 
  *x = y1 - (b / a) * x1; 
  *y = x1;   
  return gcd; 
} 

int64_t modInverse(int64_t a) { 
  int64_t x, y; 
  gcdExtended(a, MOD, &x, &y); 
  return (x % MOD + MOD) % MOD; 
}

int modmult(int x, int y) {
  return (x * int64_t(y)) % MOD;
}

int solve(int n) {
  int factorials[n+1];
  int invfact[n+1];
  factorials[0] = 1;
  invfact[0] = 1;
  for (int i = 1; i <= n; ++i) {
    factorials[i] = (factorials[i-1] * int64_t(i)) % MOD;
    invfact[i] = modInverse(factorials[i]);
  }
  auto choose = [&factorials, &invfact](int n, int k) {
    return modmult(factorials[n], modmult(invfact[n-k], invfact[k]));
  };
  int ans = 0;
  for (int gaps = n % 2; 2*gaps <= n; gaps += 2) {
    ans += modmult(choose(n-gaps, gaps), factorials[n-gaps-1]);
    if (ans >= MOD) ans -= MOD;
  }
  return modmult(ans, 2*n);
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  cout << solve(n) << endl;
}
