题意:
%5En%20dx%EF%BC%8C%E5%9C%A8%E6%A8%A1998244353%E7%9A%84%E6%84%8F%E4%B9%89%E4%B8%8B&preview=true)
思路:
%20%3D%20%5Cint_%7B0%7D%5E%7B1%7D%20x%5E%7Ba-1%7D*(1-x)%5E%7Bb-1%7Ddx&preview=true)
%20%3D%20%5Cfrac%7B(a-1)!*(b-1)!%7D%7B(a%20%2B%20b%20-%201)!%7D&preview=true)
%5Endx%20%3D%20%5Cint_%7B0%7D%5E%7B1%7Dx%5En*(1-x)%5Endx&preview=true)

%20%3D%20%5Cfrac%7B(n!)%5E2%7D%7B(2n%2B1)!%7D&preview=true)
#include <cstdio>
using namespace std;
typedef long long ll;
const ll mod = 998244353;
const int N = 2e6+1;
ll fac[N + 10],facInv[N + 10];
ll qpow(ll a,ll b){
ll res = 1;
while(b){
if(b&1) res = res*a%mod;
a = a*a%mod;
b >>= 1;
}
return res%mod;
}
ll inv(ll x){
return qpow(x,mod-2);
}
inline ll ksc(ll x,ll y,ll p){//计算x乘y的积
ll res=0;//加法初始化
while(y){
if(y&1)res=(res+x)%p;//模仿二进制
x=(x<<1)%p; y>>=1;//将x不断乘2达到二进制
}return res;
}
void init(){
fac[0] = 1ll;
for(int i = 1;i <= N;i++) fac[i] = fac[i-1]*i%mod;
facInv[N] = inv(fac[N]);
for(int i = N - 1;i >= 0;i--) facInv[i] = facInv[i+1]*(i+1)%mod;
}
ll C(ll n,ll m){
return fac[n] * inv(fac[m]) % mod * inv(fac[n - m]) % mod;
}
int main(){
ll n;
init();
while(~scanf("%lld",&n)){
ll res = ksc(fac[n],fac[n],mod);
res = res * inv(fac[2*n + 1]) % mod;
printf("%lld\n",res);
}
return 0;
}