#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const int mod = 1e9 + 7;
const int N = 2 * 1e5;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  unsigned long long n, m, a, freq;
  cin >> n >> m >> a;
  vector<unsigned long long> v;
  freq = a;
  for (int i = 0; i < m; i++) {
    unsigned long long a;
    cin >> a;
    v.push_back(a);
  }
  unsigned long long q = 0, qq = 0, c = 0;
  unsigned long long i = 0, qqq = 0, mm = 0;
  while (i < v.size()) {
    if (v[i] - qq <= a) {
      c++;
      qqq++;
      i++;
      if (!mm) {
        q++;
        mm = 1;
      }
      continue;
    } else {
      qq = c;
      if ((v[i] - qq) % freq == 0) {
        a = v[i] - qq;
      } else {
        unsigned long long cnt = (v[i] - qq) / freq;
        cnt *= freq;
        cnt += freq;
        a = cnt;
      }
    }
    qqq = 0;
    mm = 0;
  }
  cout << q;
  return 0;
}
