#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
long long m[maxn];
int main() {
  long long n, t, k;
  scanf("%lld %lld %lld", &n, &t, &k);
  for (int i = 0; i < t; i++) scanf("%lld", &m[i]);
  long long cn = 0, ans = 0, i = 0;
  while (i < t) {
    long long block = (m[i] - cn - 1) / k;
    long long val = (block + 1) * k;
    long long pos =
        upper_bound(m, m + t, val + cn) - lower_bound(m, m + t, m[i]);
    ans++;
    cn += pos;
    i += pos;
  }
  printf("%lld\n", ans);
  return 0;
}
