The prison of your city has n prisoners. As the prison can't accommodate all of them, the city mayor has decided to transfer c of the prisoners to a prison located in another city.

For this reason, he made the n prisoners to stand in a line, with a number written on their chests. The number is the severity of the crime he/she has committed. The greater the number, the more severe his/her crime was.

Then, the mayor told you to choose the c prisoners, who will be transferred to the other prison. He also imposed two conditions. They are,

  * The chosen c prisoners has to form a contiguous segment of prisoners. 
  * Any of the chosen prisoner's crime level should not be greater then t. Because, that will make the prisoner a severe criminal and the mayor doesn't want to take the risk of his running away during the transfer. 



Find the number of ways you can choose the c prisoners.

Input

The first line of input will contain three space separated integers n (1 ≤ n ≤ 2·105), t (0 ≤ t ≤ 109) and c (1 ≤ c ≤ n). The next line will contain n space separated integers, the ith integer is the severity ith prisoner's crime. The value of crime severities will be non-negative and will not exceed 109. 

Output

Print a single integer — the number of ways you can choose the c prisoners.

Examples

Input

4 3 3
2 3 1 1


Output

2


Input

1 1 1
2


Output

0


Input

11 4 2
2 2 0 7 3 2 2 4 9 1 4


Output

6
#include <bits/stdc++.h>
using namespace std;
template <class T>
void cmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
void cmax(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
int len(const T &c) {
  return (int)c.size();
}
template <class T>
int len(char c[]) {
  return (int)strlen(c);
}
string itos(long n) {
  string s;
  while (n) {
    s += (n % 10 + 48);
    n /= 10;
  }
  reverse(s.begin(), s.end());
  return s;
}
long stoi(string s) {
  long n = 0;
  for (int i(0), _n(len(s)); i < _n; ++i) n = n * 10 + (s[i] - 48);
  return n;
}
stack<int> stk;
bool color[100005];
vector<int> v[100005], g[100005];
long ct, mn, cost[100005];
void fil(int i) {
  color[i] = true;
  for (int j(0), _n(len(v[i])); j < _n; ++j) {
    if (color[v[i][j]] == false) fil(v[i][j]);
  }
  stk.push(i);
}
void dfs(int i) {
  color[i] = 1;
  if (cost[i] < mn) {
    mn = cost[i];
    ct = 1;
  } else if (cost[i] == mn)
    ct++;
  for (int j(0), _n(len(g[i])); j < _n; ++j)
    if (color[g[i][j]] == false) dfs(g[i][j]);
}
int ar[500100];
int main() {
  int a, b, c;
  int res = 0, cc = 0;
  int n;
  cin >> n;
  cin >> a >> c;
  for (int i(0), _n(n); i < _n; ++i) {
    cin >> ar[i];
    if (ar[i] > a) {
      if (cc >= c) res += cc - c + 1;
      cc = 0;
    } else
      cc++;
  }
  if (cc >= c) res += cc - c + 1;
  cout << res;
  return 0;
}
