module main; // https://kmjp.hatenablog.jp/entry/2015/07/14/0900 より import std; void main() { // 入力 long N, D, T; readln.chomp.formattedRead("%d %d %d", N, D, T); auto X = readln.split.to!(long[]); // 答えの計算 alias P = Tuple!(long, long); P[][long] M; foreach (x; X) M[(D + x % D) % D] ~= P(x - D * T, x + D * T); // 答えの計算 long ans = 0; foreach (V; M) { long mi = -1L << 60, ma = -(1L << 60) - D; V.sort; foreach (v; V) { if (v[0] > ma) { ans += (ma - mi) / D + 1; mi = v[0]; } ma = v[1]; } ans += (ma - mi) / D + 1; } // 答えの出力 writeln(ans); }