#include <bits/stdc++.h>
using namespace std;
long long A[100010];
int n;
long long x, k;
long long f(long long a, long long b) {
  long long* lo = lower_bound(A, A + n, a);
  long long* hi = upper_bound(A, A + n, b);
  return (long long)(hi - lo);
}
int main() {
  scanf("%d %lld %lld", &n, &x, &k);
  for (int i = 0; i < n; i++) scanf("%lld", &A[i]);
  sort(A, A + n);
  long long ans = 0LL;
  for (int i = 0; i < n; i++) {
    if (k > 1) {
      long long l = A[i], r;
      if (l % x) {
        l = (l - l % x) + x;
      }
      r = l + x * (k - 1) + x - 1;
      long long r1 = l + x * (k - 1), r2 = r;
      ans += f(r1, r2);
    } else if (k == 1) {
      long long l = A[i], r;
      if (l % x) {
        l = (l - l % x) + x;
      }
      r = l + x * (k - 1) + x - 1;
      ans += f(l, r);
    } else {
      long long l = A[i];
      if (l % x == 0) continue;
      if (x == 1) continue;
      long long r = (l - l % x) + x - 1;
      ans += f(l, r);
    }
  }
  printf("%lld\n", ans);
  return 0;
}
