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.*;
import java.io.*;
public class Test9 {
  
 public static void main(String[] args)
 {
  int n=Fs.nextInt();
  int t=Fs.nextInt();
  int c=Fs.nextInt();
  long[] crimes=Fs.nextLongArray(n);
  int[] list=new int[n+1];
  int listsize=0;
  for(int i=0;i<n;i++){
   if(crimes[i]>t){
    list[listsize]=i;
    listsize++;
   }
  }
  list[listsize]=n;
  listsize++;
  int index=-1;
  long result=0;
  for(int i=0;i<listsize;i++){
   result+=(long)Math.max(list[i]-index-c,0);
   index=list[i];
  }
  Fs.pl(result);
  Fs.flush();
 }

}
class Fs {
    private static final InputStream in = System.in;
    private static final byte[] buffer = new byte[1024];
    private static int ptr = 0;
    private static int buflen = 0;
    private static boolean hasNextByte() {
        if (ptr < buflen) {
            return true;
        }else{
            ptr = 0;
            try {
                buflen = in.read(buffer);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (buflen <= 0) {
                return false;
            }
        }
        return true;
    }
    private static int readByte() { if (hasNextByte()) return buffer[ptr++]; else return -1;}
    private static boolean isPrintableChar(int c) { return 33 <= c && c <= 126;}
    private static void skipUnprintable() { while(hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;}
    public static boolean hasNext() { skipUnprintable(); return hasNextByte();}
    public static String next() {
        if (!hasNext()) throw new NoSuchElementException();
        StringBuilder sb = new StringBuilder();
        int b = readByte();
        while(isPrintableChar(b)) {
            sb.appendCodePoint(b);
            b = readByte();
        }
        return sb.toString();
    }
    public static int nextInt() {return (int)nextLong();}
    public static long nextLong() {
        if (!hasNext()) throw new NoSuchElementException();
        long n = 0;
        boolean minus = false;
        int b = readByte();
        if (b == '-') {
            minus = true;
            b = readByte();
        }
        if (b < '0' || '9' < b) {
            throw new NumberFormatException();
        }
        while(true){
            if ('0' <= b && b <= '9') {
                n *= 10;
                n += b - '0';
            }else if(b == -1 || !isPrintableChar(b)){
                return minus ? -n : n;
            }else{
                throw new NumberFormatException();
            }
            b = readByte();
        }
    }
    public static long[] nextLongArray(int i){
        long[] result=new long[i];
        for(int j=0;j<i;j++){
            result[j]=nextLong();
        }
        return result;
    }
    public static void nextLongArray(long[]... arrays){
        for(int j=0;j<arrays[0].length;j++){
            for(long[] array:arrays){
                array[j]=nextLong();
            }
        }
    }
    public static int[] nextIntArray(int i){
        int[] result=new int[i];
        for(int j=0;j<i;j++){
            result[j]=nextInt();
        }
        return result;
    }
    public static void nextIntArray(int[]... arrays){
        for(int j=0;j<arrays[0].length;j++){
            for(int[] array:arrays){
                array[j]=nextInt();
            }
        }
    }
    static StringBuilder sb=new StringBuilder();
    public static void flush(){
        System.out.print(sb);
        sb=new StringBuilder();
    }
    public static void pr(Object[] o,String str){
        for(Object ob:o){
            sb.append(ob);
            sb.append(str);
        }
    }
    public static void pr(long[] o,String str){
        for(long ob:o){
            sb.append(ob);
            sb.append(str);
        }
    }
    public static void pr(int[] o,String str){
        for(int ob:o){
            sb.append(ob);
            sb.append(str);
        }
    }
    public static void pr(double[] o,String str){
        for(double ob:o){
            sb.append(ob);
            sb.append(str);
        }
    }
    public static void pl(Object[] o,String str){
        pr(o,str);
        pl();
    }
    public static void pl(long[] o,String str){
        pr(o,str);
        pl();
    }
    public static void pl(int[] o,String str){
        pr(o,str);
        pl();
    }
    public static void pl(double[] o,String str){
        pr(o,str);
        pl();
    }
    public static void pr(Object o){
        sb.append(o);
    }
    public static void pl(Object o){
        sb.append(o);
        sb.append("\n");
    }
    public static void pr(long o){
        sb.append(o);
    }
    public static void pl(long o){
        sb.append(o);
        sb.append("\n");
    }
    public static void pr(double o){
        sb.append(o);
    }
    public static void pl(double o){
        sb.append(o);
        sb.append("\n");
    }
    public static void pl(){
        sb.append("\n");
    }
    public static long[] prefSum(long[] la){
        long[] result=new long[la.length];
        long l=0;
        for(int i=0;i<la.length;i++){
            result[i]=l+la[i];
            l=result[i];
        }
        return result;
    }
    public static long[] prefSum(long[] la,long mod){
        long[] result=new long[la.length];
        long l=0;
        for(int i=0;i<la.length;i++){
            result[i]=(l+la[i]+mod)%mod;
            l=result[i];
        }
        return result;
    }
    public static int lastLowerIndex(long[] array,long lo){//array is sorted.
        if(array[array.length-1]<lo){return array.length-1;}
        if(array[0]>=lo){return -1;}
        int tmax=array.length-1;
        int tmin=0;
        int haba=tmax-tmin;
        int tindex=tmin+haba/2;
        while(haba>0){
            if(array[tindex]<lo){
                tmin=tindex;
            }else{
                tmax=tindex-1;
            }
            haba=tmax-tmin;
            tindex=tmin+haba/2+(haba==1?1:0);
        }
        return tindex;
    }
    public static int lastLowerOrEqualIndex(long[] array,long lo){
        if(array[array.length-1]<=lo){return array.length-1;}
        if(array[0]>lo){return -1;}
        int tmax=array.length-1;
        int tmin=0;
        int haba=tmax-tmin;
        int tindex=tmin+haba/2;
        while(haba>0){
            if(array[tindex]<=lo){
                tmin=tindex;
            }else{
                tmax=tindex-1;
            }
            haba=tmax-tmin;
            tindex=tmin+haba/2+(haba==1?1:0);
        }
        return tindex;
    }
    public static long modPow(long a,long b,long mod){
        long c=1;
        while(b>0){
            if(b%2==1){
                c=(c*a)%mod;
            }
            a=(a*a)%mod;
            b/=2;
        }
        return c;
    }
    public static long inv(long a,long mod){
       long b=mod;
       long p = 1, q = 0;
		while (b > 0) {
			long c = a / b;
			long d;
			d = a;
			a = b;
			b = d % b;
			d = p;
			p = q;
			q = d - c * q;
		}
		return p < 0 ? p + mod : p;
    }
}
