#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static long Power(long v, long p, long mod) { var (res, k) = (1L, v); while (p > 0) { if ((p & 1) > 0) res = res * k % mod; k = k * k % mod; p >>= 1; } return res; } var p = I(); var q = 1L; for (var i = 1; i < p; i++) q = q * i % p; q = Power(q, p - 2, p); var ans = 0L; for (var i = p - 1; i >= 0; i--) { ans += q; q = q * i % p; } Console.WriteLine(ans % p);