#include <bits/stdc++.h>   using namespace std;   const int MAXN = 150000 + 50;   int n, m, h, vec[MAXN], sec[MAXN], ans, need[4 * MAXN], ex[4 * MAXN];   void plant(int v, int b, int e) {     need[v] = e - b;     if (e - b == 1) return;     int mid = (b + e) / 2;     plant(v << 1, b, mid);     plant(v << 1 ^ 1, mid, e);   }   void water(int v, int b, int e, int x, int val) {     if (x == e) return;     if (e - b == 1) {       need[v] -= val;       ex[v] = max(0, -need[v]);       return;     }     int mid = (b + e) / 2;     if (x < mid)       water(v << 1, b, mid, x, val);     else       water(v << 1 ^ 1, mid, e, x, val);     need[v] = max(0, need[v << 1]) + max(0, need[v << 1 ^ 1] - ex[v << 1]);     ex[v] = ex[v << 1 ^ 1] + max(0, ex[v << 1] - max(0, need[v << 1 ^ 1]));   }   int main() {     scanf( %d %d %d , &n, &m, &h);     for (int i = 0; i < m; i++) scanf( %d , &sec[i]);     sort(sec, sec + m);     plant(1, 0, m);     for (int i = 0; i < n; i++) {       if (i >= m)         water(1, 0, m, lower_bound(sec, sec + m, h - vec[i - m]) - sec, -1);       scanf( %d , &vec[i]);       water(1, 0, m, lower_bound(sec, sec + m, h - vec[i]) - sec, 1);       ans += bool(need[1] == 0);     }     printf( %d n , ans);     return 0;   }   