using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Competitive_Programming { class MainClass { Scanner sc; const long MOD = (int)1e9 + 7; static void Main(string[] args) { new MainClass().solve(); } long PowMod(long a, long p) { if (p == 0) return 1; if (p % 2 == 1) { return a * PowMod(a, p - 1) % MOD; } long t = PowMod(a, p / 2); return t * t % MOD; } void solve() { sc = new Scanner(); StringBuilder res = new StringBuilder(); long N = sc.NextInt(); long ans = 1; for (int i = 1; i <= N * 2; i++) { ans = ans * i % MOD; } ans = ans * PowMod(PowMod(2, N), MOD - 2) % MOD; res.Append(ans); Console.WriteLine(res); } } class Scanner { Queue buf; public Scanner() { buf = new Queue(); } private void GetBuf() { while (buf.Count == 0) { string[] stringArray = Console.ReadLine().Split(' '); if (stringArray.Length == 0 || stringArray[0] == "") { continue; } foreach (string e in stringArray) { buf.Enqueue(e); } } } public int NextInt() { return int.Parse(this.Next()); } public long NextLong() { return long.Parse(this.Next()); } public double NextDouble() { return double.Parse(this.Next()); } public string Next() { this.GetBuf(); return buf.Dequeue(); } } }