#include <bits/stdc++.h>
#define ll long long
#include "pilgrimage.h"
using namespace std;
int mod, inv, C[5005][5005], ans;
map<ll, int> mp;
inline int read() {
char ch = getchar(); int x = 0;
while (!isdigit(ch)) {ch = getchar();}
while (isdigit(ch)) {x = x * 10 + ch - 48; ch = getchar();}
return x;
}
inline int add(int x, int y) {x += y; return x >= mod ? x - mod : x;}
inline int del(int x, int y) {x -= y; return x < 0 ? x + mod : x;}
inline void Add(int &x, int y) {x = add(x, y);}
inline void Del(int &x, int y) {x = del(x, y);}
inline int qpow(int x, ll y) {
int res = 1;
while (y) {
if (y & 1ll) res = 1ll * res * x % mod;
x = 1ll * x * x % mod;
y >>= 1;
}
return res;
}
void init(int o, int p) {
mod = p;
inv = (mod + 1) / 2;
for (int i = 0; i <= 5000; ++i) {
C[i][0] = C[i][i] = 1;
for (int j = 1; j < i; ++j) C[i][j] = add(C[i - 1][j - 1], C[i - 1][j]);
}
}
int ask(ll n) {
if (mp.count(n)) return mp[n];
if (n == 1) return mp[n] = inv, void();
return 8ll * (2ll * n - 3) % mod * (2ll * n - 1) % mod * del(C[2 * n - 4][n - 2], C[2 * n - 4][n - 3]) % mod * qpow(inv, 4ll * n % mod);
}