#define MD 998244353 int as[1024]; Mint dp[42][1024]; // [..n][xor] { int @n,@k,@x,@y; int b=0; rep(k){ int @a; if(!as[a]){ as[a]=1; ++b; } } dp[0][0]=1; rep(j,1024){ if(as[j]){ dp[1][j]=1; } } rep(i,1,n){ rep(j,1024){ if(as[j]){ rep(k,1024){ dp[i+1][j^k]+=dp[i][k]; } } } rep(j,1024){ dp[i+1][j]-=dp[i-1][j]*(i==1?b:b-1); } } y