#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
vector<long long int> v;
long long solve(long long st, long long end, long long tot, long long pos) {
  if (pos == m) return tot;
  long long r = upper_bound((v).begin(), (v).end(), end) -
                lower_bound((v).begin(), (v).end(), st);
  if (r != 0) {
    return solve(end + 1, end + r, tot + 1, pos + r);
  }
  long long c = (v[pos] - end - 1) / k;
  long long s = end + 1 + c * k;
  long long e = end + c * k + k;
  return solve(s, e, tot, pos);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int TESTS = 1;
  while (TESTS--) {
    long long i, j, l;
    cin >> n >> m >> k;
    for (i = 0; i < m; i++) {
      cin >> l;
      v.push_back(l);
    }
    sort((v).begin(), (v).end());
    long long ans = solve(1, k, 0, 0);
    cout << ans;
  }
  return 0;
}
