rt,
本地能编译,提交上去只显示编译失败四个字
具体干嘛就别看了(
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e6+5,p=998244353;
int catl[N]={1},a[N*4],b[N*2],n,ans,ny[N]={0,1},ta[N*2],c[N*3],r[N*2],g,gp;
int mpow(int x,int y){
int ans=1;
while(y){
if(y&1) ans=ans*x%p;
x=x*x%p;
y>>=1;
}
return ans;
}
void ntt(int a[],int limit,int type){
for(int i=0;i<limit;++i)
if(i<r[i])
swap(a[i],a[r[i]]);
for(int mid=1;mid<limit;mid<<=1){
int qwq=mpow(type==1?g:gp,(p-1)/(mid<<1));
for(int j=0;j<limit;j+=(mid<<1)) {
int w=1;
for(int k=0;k<mid;++k,w=(w*qwq)%p){
int x=a[j+k],y=(w*a[j+k+mid])%p;
a[j+k]=(x+y)%p;
a[j+k+mid]=(x-y+p)%p;
}
}
}
int inv=mpow(limit,p-2);
if(type==-1)
for(int i=0;i<=n*3;++i)
a[i]=a[i]*inv%p;
}
void juanji(int *a,int alen,int *b,int blen,int *ans){
// for(int i=1;i<=alen;++i)
// for(int j=1;j<=blen;++j)
// ans[i+j]=(ans[i+j]+a[i]*b[j])%p;
g=3,gp=mpow(g,p-2);
++a,++b,++ans;
int limit=1,L=0;
while(limit<=alen+blen) limit<<=1,++L;
for(int i=0;i<alen;++i) a[i]%=p;
for(int i=0;i<blen;++i) b[i]%=p;
for(int i=0;i<limit;++i) r[i]=(r[i>>1]>>1)|((i&1)<<(L-1));
ntt(a,limit,1);
ntt(b,limit,1);
for(int i=0;i<limit;++i) ans[i]=a[i]*b[i]%p;
ntt(ans,limit,-1);
}
signed main(){
std::ios::sync_with_stdio(0);std::cin.tie(0);
cin >> n;
for(int i=1;i<=n*2;++i) cin >> a[i];
for(int i=2;i<=n+2;++i) ny[i]=(p-p/i)*ny[p%i]%p;
for(int i=1;i<=n+1;++i) catl[i]=catl[i-1]*(i*4-2)%p*ny[i+1]%p;
for(int i=1;i<=(n+1)/2;++i) b[i]=catl[n-1-i+1]*catl[n-1-(n-1-i+1)]%p;
for(int i=n;i>=(n+3)/2;--i) b[i]=catl[n-1+i-n]*catl[n-1-(n-1+i-n)]%p;
for(int i=1;i<=n;++i) ta[i]=ta[i+n]=a[i*2];
// for(int i=1;i<=n+1;++i) cout << catl[i] << " ";
// cout << endl;
// for(int i=1;i<=n*2;++i) cout << ta[i] << " ";
// cout << endl;
// for(int i=1;i<=n;++i) cout << b[i] << " ";
// cout << endl;
int flag=1;
for(int i=1;i<=n*2;++i){
if(a[i]!=1){flag=false;break;}
}
if(flag){
cout << catl[n]*n%p << endl;
return 0;
}
juanji(ta,n*2,b,n,c);
for(int i=1;i<=n;++i) ans=(ans+c[n+i-1]*a[i*2-1])%p;
cout << ans << endl;
}
//12 34 56 78
//12 34 58 67
//12 36 45 78
//12 38 45 67
//12 38 47 56
//14 23 56 78
//14 23 58 67
//16 23 45 78
//16 25 34 78
//18 23 45 67
//18 23 47 56
//18 25 34 67
//18 27 34 56
//18 27 36 45
//
//4 4 6 8 8 2 2 2 4 2 2 4 4 6