Problem: You are a coach at your local university. There are n students under your supervision, the programming skill of the i-th student is a_i.

You have to create a team for a new programming competition. As you know, the more students some team has the more probable its victory is! So you have to create a team with the maximum number of students. But you also know that a team should be balanced. It means that the programming skill of each pair of students in a created team should differ by no more than 5.

Your task is to report the maximum possible number of students in a balanced team.

Input

The first line of the input contains one integer n (1 ≤ n ≤ 2 ⋅ 10^5) — the number of students.

The second line of the input contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^9), where a_i is a programming skill of the i-th student.

Output

Print one integer — the maximum possible number of students in a balanced team.

Examples

Input


6
1 10 17 12 15 2


Output


3


Input


10
1337 1337 1337 1337 1337 1337 1337 1337 1337 1337


Output


10


Input


6
1 1000 10000 10 100 1000000000


Output


1

Note

In the first example you can create a team with skills [12, 17, 15].

In the second example you can take all students in a team because their programming skills are equal.

In the third example you can create a team consisting of a single student (and you cannot create a team consisting of at least two students).

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*; 

public class Solution {

   static int count=0;
	public static void main(String[] args)
    {
		FastReader fr=new FastReader();
		 int n=fr.nextInt();
		 int a[]=new int[n];
		 boolean allsame=true;
		 for(int i=0;i<n;i++) {
			 a[i]=fr.nextInt();
			 if(i!=0&&a[i]!=a[i-1])
				 allsame=false;
		 }
		 if(allsame) {
			 System.out.println(n);
		 }else {
		   HashMap<Integer,Integer> map=new HashMap<>();
		   for(int k:a) {
			   if(map.containsKey(k)) {
				   int x=map.get(k);
				   x++;
				   map.replace(k,x);
			   }
			   else
				   map.put(k,1);
		   }
		   int maxcount=0;
		   for(int k:a) {
			   int v=0;
			   for(int i=k;i<=k+5;i++) {
				   if(map.containsKey(i)) {
					   v+=(int)(map.get(i));
				   }
			   }
			   
			   if(v>maxcount)
				   maxcount=v;
		   }
		 
		   System.out.println(maxcount);
		
		 
		
		 }
	
	
		
	}
	
	
}
class Pair{
	int x;
	int y;
	Pair(int x,int y){
		this.x=x;
		this.y=y;
	}
}
class FastReader
{
    BufferedReader br;
    StringTokenizer st;
 
    public FastReader()
    {
        br = new BufferedReader(new
                InputStreamReader(System.in));
    }
 
    String next()
    {
        while (st == null || !st.hasMoreElements())
        {
            try
            {
                st = new StringTokenizer(br.readLine());
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
 
    int nextInt()
    {
        return Integer.parseInt(next());
    }
 
    long nextLong()
    {
        return Long.parseLong(next());
    }
 
    double nextDouble()
    {
        return Double.parseDouble(next());
    }
 
    String nextLine()
    {
        String str = "";
        try
        {
            str = br.readLine();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return str;
    }
}