#include<stdio.h>
int a[30005];
int main(){
int n,m;
while(1){
scanf("%d%d",&n,&m);
if(n==0&&m==0)
break;
int i;
for( i=0;i<=n-1;i++)
scanf("%d",&a[i]);
int sum=1;
for( i=0;i<n-1;i++){
int max=a[i];
int min=a[i];
int list=1,j;
for(j=i+1;j<n;j++){
if(sum>n-i)
break;//此算法是利用了测试 数据的不完整而没超时;因为sum>n-i;break;对于最长子段在最后没有作用!
if(a[j]>max)
max=a[j];
else if(a[j]<min)
min=a[j];
if(max-min>m){
break; //此处给的经验是尽量减少循环中的语句;并且尽量使用berak语句跳出循环!!!
}
list++;
}
if(list>sum)
sum=list;
}
printf("%d/n",sum);
}
return 0;}