#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int seed = 131;
long long n, a[maxn], b[maxn], k;
int m;
int main() {
  scanf("%I64d %d %I64d", &n, &m, &k);
  for (int i = 0; i < m; i++) {
    scanf("%I64d", &a[i]);
  }
  int ans = 0, pre = 0, pre1 = 1, tmp;
  for (int i = 0; i < m;) {
    b[i] = a[i] - pre;
    tmp = pre1 = (b[i] + k - 1) / k;
    while (i + 1 < m) {
      i++;
      b[i] = a[i] - pre;
      tmp = (b[i] + k - 1) / k;
      if (tmp != pre1) {
        i--;
        break;
      }
    }
    pre = i + 1;
    ans++;
    i++;
  }
  cout << ans << "\n";
  return 0;
}
