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
import java.util.*;

public class PrisonTransfer
{
   public static void main(String[] args) 
   {
      // Set up scanner
      Scanner sc = new Scanner(System.in); 
      // System.out.println("How many total prisoners?");
      long totalprisoners = sc.nextLong();
      // System.out.println("Maximum crime level?");
      long maxcrime = sc.nextLong();
      // System.out.println("How many to take?");
      long numtotake = sc.nextLong();
      
      Set<Long> startingvalues = new HashSet<Long>();
      Set<Long> pseudostartingvalues = new HashSet<Long>();
      for (long i=0; i<totalprisoners; i++)
      {
          // System.out.println("Severity of prisoner " + i);
          long severity = sc.nextLong();
          
          // Add to startingvalues if less than maxseverity and enough left
          if (severity <= maxcrime && i<totalprisoners - numtotake + 1)
          {
              startingvalues.add(i);
              // System.out.println("Added starting position " + i);
          }
          // Add to pseudostartingvalues if close to right side
          else if (severity <= maxcrime && i>=totalprisoners - numtotake + 1)
          {
              pseudostartingvalues.add(i);
          }
          // Otherwise, go backwards removing from startingvalues
          else if (severity > maxcrime)
          {
              for (long gone = 1; gone < numtotake; gone++)
              {
                  boolean tryit = startingvalues.remove((Long)(i-gone));
                  if ((!tryit) && (!pseudostartingvalues.contains(i-gone)))
                     break;
              }
          }
      }
      System.out.println(startingvalues.size());
   }
}