constint Maxn = 1e6 + 10, Mod = 1e4 + 7; int N, Ans; int Num[Maxn], Fac[Maxn] = {1}, Inv[Maxn] = {1};
inlineintPow(int X, int Y) { intAns(1); while (Y) { if (Y & 1) Ans = Ans * X % Mod; X = X * X % Mod; Y >>= 1; } return Ans; }
inlinevoidInit() { for (int i = 1; i <= N; ++i) Fac[i] = Fac[i - 1] * i % Mod; for (int i = 1; i <= N; ++i) Inv[i] = Pow(Fac[i], Mod - 2); }
inlineintC(int N, int M) { if (M > N) return0; return Fac[N] * Inv[M] % Mod * Inv[N - M] % Mod; }
inlineintLucas(int N, int M) { if (!M) return1; returnLucas(N / Mod, M / Mod) * C(N % Mod, M % Mod) % Mod; }
intmain() { scanf ("%d", &N); Init(); for (int i = 2; i <= N; i += 2) Num[i >> 1] = i; for (int i = 1; i <= N; i += 2) Num[N - (i >> 1)] = i; for (int i = 1; i <= N; ++i) Ans = (Ans + Num[i] % Mod * Lucas(N - 1, i - 1) % Mod) % Mod; printf ("%d\n", Ans % Mod); system("pause"); }