#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define int long long #define mp make_pair #define pii pair #define fi first #define se second #define pb push_back const int MOD = 998244353;// const int FACTMAX = 2000005;// const int CATALANMAX = 1000005;// int fact[FACTMAX], invfact[FACTMAX], cat[CATALANMAX]; int expo(int a, int b){ int res=1; a%=MOD; while (b){ if (b&1)res=(res*a)%MOD; a=(a*a)%MOD; b>>=1; } return res; } int inv(int num){ return expo(num, MOD-2); } void initfact(){ fact[0]=1; for (int i=1; i=0; --i)invfact[i]=(invfact[i+1]*(i+1))%MOD; } int ncr(int n, int r){ if (n dp[105][105]; int a[105]={ 0,0, 1,3,33,16,64,152,120,144,112,84,60,129,156,4,132,168,76,68, 24,188,136,36,8,92,160,184,31,124,128,35,177,185,147,167,193, 187,73,27,55,126,41,146,25,29,83,189,191,155,79,171,174,173, 70,71,197,172,198,176,151,159,183,170,130,162,80,175,165,186, 199,133,182,169,180,181,190,103,93,166,161,111,98,86,122,178, 157,179,148,143,113,154,127,135,141,149,153,139,138,163,150 }; int b[105]={ 0,0,0, 15,48,192,121,105,104,119,195,137,200,40,96,196,49,12,51,28, 9,116,20,140,72,56,52,17,32,19,5,45,23,7,13,21,6,11,2,18, 194,14,100,10,37,43,39,26,22,34,53,44,47,57,30,46,38,54,61, 63,58,42,62,59,69,50,67,89,65,75,66,74,81,77,87,85,78,82, 91,101,88,95,94,90,97,99,107,106,115,109,114,110,102,108,117, 134,125,118,142,123,158 }; int e1[105], e2[105], u[205], v[205], c[205], sq[150], sc; vector get(int l, int r, int s){ if (l+1==r){ if (s==a[r])return {e1[r]}; vector q=get(r-2, r-1, s-b[r]); reverse(q.begin(), q.end()); q.pb(e2[r]); return q; } if (l==r-2){ if (s==b[r])return {e2[r]}; vector q=get(l, r-1, s-a[r]); q.pb(e1[r]); return q; } if (s>=a[r]&&dp[l][r-1][s-a[r]]){ vector q=get(l, r-1, s-a[r]); q.pb(e1[r]); return q; } vector q=get(l, r-2, s-b[r]); q.pb(e2[r]); return q; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t=1; //cin>>t; while (t--){ int n; cin>>n; for (int i=0; i*i<=smax; ++i)sq[sc++]=i*i; int m=0; u[++m]=1; v[m]=2; c[m]=a[2]; e1[2]=m; for (int i=3; i<=n; ++i){ u[++m]=i-2; v[m]=i; c[m]=b[i]; e2[i]=m; u[++m]=i-1; v[m]=i; c[m]=a[i]; e1[i]=m; } cout< q=get(l, r, sq[s]); cout<