#include #define inf 0x7fffffff #define llinf 0x7fffffffffffffff #define F(a,b,c,d) for(int b=c;b<=d;b+=a) #define F2(a,b,c,d) for(int b=c;b>=d;b-=a) #define PRC(b,a) fixed< PII; typedef unsigned long long ull; inline ll q_2(ll xx){return xx*xx;} inline ll Gcd(ll xx,ll yy){return yy?Gcd(yy,xx%yy):xx;} inline ll q_Pow(ll xx,ll yy,ll pp){ll oo=1;for(;yy;yy>>=1,xx=xx*xx%pp)yy&1?oo=oo*xx%pp:0;return oo;} inline void Cout(){cout< inline void Cout(T1 x,T2 ...y){cout< inline void sMin(T &xx,T yy){xx=(xx inline void sMax(T &xx,T yy){xx=(xx>yy)?xx:yy;} const int N=10005,mod=998244353; int n,m,l[N],r[N]; ll a[N],k,dp[N][N]; inline void solve(){ for(int i=1;i<=n;++i) dp[1][i]=i;//pre sum for(int i=2;i<=m;++i){ for(int j=1;j<=n;++j){ dp[i][j]=(dp[i-1][r[j]]-dp[i-1][l[j]-1]+mod)%mod; // printf("dp[%d][%d]: %lld | ",i,j,dp[i][j]); (dp[i][j]+=dp[i][j-1])%=mod; } } cout<>n>>m>>k; for(int i=1;i<=n;++i) cin>>a[i]; sort(a+1,a+1+n); for(int i=1;i<=n;++i){ int L=1,R=i; while(L>1; if(a[i]-a[mid]>k) L=mid+1; else R=mid; } l[i]=L; L=i,R=n; while(L>1; if(a[mid]-a[i]>k) R=mid-1; else L=mid; } r[i]=L; } // for(int i=1;i<=n;++i) // cout<