#include #include #include using namespace std; using ll = long long; constexpr int mod = 998244353; vector> binom_table(int n){ vector> ret(n, vector(n)); ret[0][0] = 1; for(int i=1; i 0){ ret[i][j] += ret[i-1][j-1]; if (ret[i][j] >= mod) ret[i][j] -= mod; } } } return ret; } int main() { int N,L; cin>>N>>L; vector A(N); for(int i=0; i>A[i]; auto binom = binom_table(N+1); vector ans(N); ans[N-1]++; for(int lNum=0; lNum 0 && A[j-1] >= L-A[i]) j--; if (j > i){ if (rNum-1 >= N-j){ rVal += binom[N-i-1-(N-j)][rNum-1-(N-j)]; if (rVal >= mod) rVal -= mod; } }else if(j == i){ if (rNum == N-j){ rVal = (rVal+1 < mod ? rVal+1 : 0); } } } int lVal = binom[N][lNum] - rVal; if (lVal < 0) lVal += mod; ans[lNum] += rVal; if (ans[lNum] >= mod) ans[lNum] -= mod; if (lNum > 0){ ans[lNum-1] += lVal; if (ans[lNum-1] >= mod) ans[lNum-1] -= mod; } } for(int i=0; i