#include using namespace std; #define int long long #define endl "\n" const int N = 2000010; int n, mod; int primes[N], cnt; bool st[N]; void get_primes(int n) { for (int i = 2; i <= n; i++) { if (!st[i]) primes[cnt++] = i; for (int j = 0; primes[j] * i <= n; j++) { st[i * primes[j]] = true; if (i % primes[j] == 0) break; } } } int qmi(int a, int k) { int res = 1; while (k) { if (k & 1) res = res * a % mod; a = a * a % mod; k >>= 1; } return res; } int get(int n, int p) { int s = 0; while (n) { s += n / p; n /= p; } return s; } int C(int a, int b) { int res = 1; for (int i = 0; i < cnt; i++) { int p = primes[i]; int s = get(a, p) - get(b, p) - get(a - b, p); res = res * qmi(p, s) % mod; } return res; } signed main() { cin >> n >> mod; get_primes(n * 2); cout << (C(n * 2, n) - C(n * 2, n - 1) + mod) % mod << endl; }