N, D, T = gets.split.map(&:to_i) X = gets.split.map(&:to_i) ans = X.group_by {|x| x % D}.values.map {|y| y.sort.inject([0, -Float::INFINITY]) {|(c, p), z| [c + 2 * T + 1 - [(p - z + 2 * D * T) / D + 1, 0].max, z] }[0] }.inject(:+) puts ans