#include using namespace std; #define fi first #define se second #define pb push_back #define mp make_pair #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define L(i,u) for (int i=head[u]; i; i=nxt[i]) #define rep(i,a,b) for (int i=(a); i<=(b); i++) #define per(i,a,b) for (int i=(a); i>=(b); i--) typedef long double ld; typedef long long ll; typedef unsigned int ui; typedef pair Pii; typedef vector Vi; template inline void read(T &x){ x=0; char c=getchar(); int f=1; while (!isdigit(c)) {if (c=='-') f=-1; c=getchar();} while (isdigit(c)) {x=x*10+c-'0'; c=getchar();} x*=f; } template T gcd(T a, T b){return !b?a:gcd(b,a%b);} template inline void umin(T &x, T y){x=x inline void umax(T &x, T y){x=x>y?x:y;} template inline T Abs(const T &x){return x>0?x:-x;} inline ui R() { static ui seed=416; return seed^=seed>>5,seed^=seed<<17,seed^=seed>>13; } const int N = 103, mo = 998244353; const ll MOD=7ll*mo*mo; int n,m,k,inv[N*N]; vectore[N]; struct mtr{ int a[203][203]; mtr(){memset(a,0,sizeof(a));} }I,A; ll C[203][203]; inline void add(int &x,int y){x=(x+y)%mo;} inline mtr mul(const mtr&a,const mtr&b){ memset(C,0,sizeof(C)); rep(i,1,2*n)rep(j,1,2*n)rep(k,1,2*n){ C[i][k]+=1ll*a.a[i][j]*b.a[j][k]; C[i][k]=C[i][k]>=1; } printf("%d\n",ans.a[n*2][1]); } return 0; }