#include <bits/stdc++.h>
using namespace std;
const int MAXN = 150000 + 23;
int n, len, h, seg[MAXN << 2], mj[MAXN << 2], a[MAXN], b[MAXN], ans;
void add(int l, int r, int val, int st = 0, int ed = len, int v = 1) {
  if (l >= ed || st >= r) return;
  if (l <= st && ed <= r) {
    mj[v] += val;
    return;
  }
  int mid = (st + ed) >> 1;
  add(l, r, val, st, mid, v << 1), add(l, r, val, mid, ed, (v << 1) | 1);
  seg[v] = min(seg[v << 1] + mj[v << 1], seg[(v << 1) | 1] + mj[(v << 1) | 1]);
}
int main() {
  cin >> n >> len >> h;
  for (int i = 0; i < len; i++) {
    cin >> b[i];
    b[i] = h - b[i];
  }
  sort(b, b + len);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    a[i] = upper_bound(b, b + len, a[i]) - b;
  }
  for (int i = 1; i <= len; i++) add(0, i, -1);
  for (int i = 0; i < len - 1; i++) add(0, a[i], 1);
  for (int i = len - 1; i < n; i++) {
    add(0, a[i], 1);
    if (seg[1] + mj[1] >= 0) ans++;
    add(0, a[i - len + 1], -1);
  }
  cout << ans;
  return 0;
}
