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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {
	
	private static long[][] dp = new long[5010][5010];			
	
	public static void main(String[] args) {												
	
		Map<Integer , Integer> map = new HashMap<>();
		Set<Integer> set = new TreeSet<>();
		
		Scanner scan = new Scanner(System.in);
		int i , j , n , k;		
		n = scan.nextInt();
		k = scan.nextInt();
		for (i = 0;i < n;i ++) {
			int value = scan.nextInt();
			map.put(value , map.getOrDefault(value , 0) + 1);
			set.add(value);			
		}
		List<Integer> list = new ArrayList<>(set);
		
		for (i = 0;i < list.size();i ++) {
			if (i > 0) {
				for (j = 0;j <= k;j ++) {
					dp[i][j] = dp[i - 1][j];					
				}
			}			
			int prev = i , total = 0;
			while (prev >= 0 && (list.get(i) - list.get(prev)) <= 5) {
				total += map.get(list.get(prev));				
				// from prev to i				
				for (j = 0;j < k;j ++) {					
					long result = total;					
					if (prev > 0) {
						result += dp[prev - 1][j];						
					}
					if (result > dp[i][j + 1]) {
						dp[i][j + 1] = result;						
					}
				}
				prev --;
			}
		}
		
		long ans = 0;
		for (i = 0;i <= k;i ++) {
			ans = Math.max(dp[list.size() - 1][i] , ans);
		}
		System.out.println(ans);
		
	}
	
    
}