#include #define pii std::pair #define mkp std::make_pair #define fir first #define sec second typedef long long ll; inline void rd(){} template inline void rd(T &x,U &...args){ int ch=getchar(); T f=1;x=0; while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); x*=f;rd(args...); } const int N=255,mod=998244353; int n,m,X,Y,d[2][N]; inline int KSM(int x,int n){ int ans=1; while(n){ if(n&1)ans=1ll*ans*x%mod; x=1ll*x*x%mod;n>>=1; }return ans; } int c[N][N][5]; inline int Sum(int a,int b){return (a+b)>=mod?a+b-mod:a+b;} inline void Add(int &a,int b){(a+=b)>=mod?a-=mod:1;} struct Vector{ int v[N]; Vector(){memset(v,0,sizeof v);} int& operator[](int x){return v[x];} Vector friend operator +(Vector a,Vector b){Vector c;for(int i=0;i<=Y+1;i++)c[i]=Sum(a[i],b[i]);return c;} Vector friend operator -(Vector a,Vector b){Vector c;for(int i=0;i<=Y+1;i++)c[i]=Sum(a[i],mod-b[i]);return c;} Vector friend operator *(Vector a,int x){Vector c;for(int i=0;i<=Y+1;i++)c[i]=1ll*a[i]*x%mod;return c;} Vector friend operator *(int x,Vector a){Vector c;for(int i=0;i<=Y+1;i++)c[i]=1ll*a[i]*x%mod;return c;} Vector operator +=(Vector b){return *this=*this+b;} }v[N][N]; int mp[N][N],ans[N]; inline int Gauss(){ for(int i=0;i<=Y;i++){ int cur=i; for(int j=i;j<=Y;j++)if(mp[j][i])cur=j; if(cur!=i)std::swap(mp[cur],mp[i]); if(!mp[i][i])return puts("???"),0; for(int j=0;j<=Y;j++){ if(j==i)continue; int div=1ll*(mod-mp[j][i])*KSM(mp[i][i],mod-2)%mod; for(int k=i;k<=Y+1;k++){ Add(mp[j][k],1ll*div*mp[i][k]%mod); } } } for(int i=0;i<=Y;i++){ ans[i]=1ll*(mod-mp[i][Y+1])*KSM(mp[i][i],mod-2)%mod; }ans[Y+1]=1; return 1; } signed main(){ rd(n); for(int i=1;i0)v[i+1][j]+=c[i][j][1]*v[i-1][j]; if(j>0)v[i+1][j]+=c[i][j][3]*v[i][j-1]; if(j0)tmp+=c[X][j][1]*v[X-1][j]; if(j>0)tmp+=c[X][j][3]*v[X][j-1]; if(j