#include #include using namespace std; using namespace atcoder; #define ll long long #define rep(i,a,b) for(int i=(a);i<(b);i++) #define repl(i,a,b) for(ll i=(a);i<(b);i++) #define all(a) (a).begin(),(a).end() template bool chmin(T &a,T b){if(a>b){a=b;return true;} return false;} template bool chmax(T &a,T b){if(a> n >> m >> k; vector a(n); rep(i,0,n) cin >> a[i]; vector left(n),right(n); sort(all(a)); rep(i,0,n){ left[i]=lower_bound(all(a),a[i]-k)-a.begin(); right[i]=upper_bound(all(a),a[i]+k)-a.begin(); } vector> dp(n+1,vector(m)); rep(i,0,n) dp[i][0]=1; rep(j,1,m){ rep(i,0,n){ dp[left[i]][j]+=dp[i][j-1]; dp[right[i]][j]-=dp[i][j-1]; } rep(i,0,n) dp[i+1][j]+=dp[i][j]; } mint ans=0; rep(i,0,n) ans+=dp[i][m-1]; cout << ans.val() << endl; }