#include using namespace std; using ll = long long; using vi = vector; using vb = vector; using vd = vector; using vl = vector; using vvi = vector; using vvb = vector; using vvd = vector; using vvl = vector; #define REP(i,n) for(ll i=0; i<(n); ++i) #define FOR(i,b,n) for(ll i=(b); i<(n); ++i) #define ALL(v) (v).begin(), (v).end() #define TEN(x) ((ll)1e##x) int main() { ll n, d, t; cin >> n >> d >> t; vl x(n); for (auto&&i : x) cin >> i; vb visited(n, false); vvl unions; REP(i, n) if(!visited[i]) { vl u = { x[i] }; visited[i] = true; FOR(j, i + 1, n) if (abs(x[i] - x[j]) % d == 0) { u.push_back(x[j]); visited[j] = true; } unions.push_back(u); } REP(i, unions.size()) sort(ALL(unions[i])); vvl dist(unions.size()); REP(i, unions.size()) FOR(j, 1, unions[i].size()) dist[i].push_back(unions[i][j] - unions[i][j-1]); REP(i, dist.size()) sort(ALL(dist[i])); ll sum = n; REP(i, dist.size()) { ll prev = 0; REP(j, dist[i].size()) { ll td = dist[i][j] / (2 * d); sum += (min(t,td) - prev) * 2 * (dist[i].size() - j + 1) - (td <= t && dist[i][j] % (2 * d) == 0 ? 1 : 0); prev = td; if (prev > t) break; } if (prev