public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i = 0;i<n;i++){
a[i] = sc.nextInt();
}
List<Integer> cha = new ArrayList<Integer>();
int count = 0;
for(int i = 0;i<n;i++){
for(int j = i+1;j<n;j++){
cha.add(Math.abs(a[i]-a[j]));
count++;
}
}
int max = Collections.max(cha);
int min = Collections.min(cha);
int maxcount = 0;
int mincount = 0;
for(int i = 0;i<count;i++){
if(cha.get(i) == max){
maxcount++;
} else if(cha.get(i) == min){
mincount++;
}
}
System.out.println(mincount +" " + maxcount);
}
//腾讯:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.next();
if(s.length() >=1 && s.length()<= 1000){
for(int i = 0;i<s.length();i++){
if(s.charAt(i) >= 'a' &&s.charAt(i)<='z'){
System.out.print(s.charAt(i));
}
}
for(int j = 0;j< s.length();j++){
if(s.charAt(j) >= 'A' &&s.charAt(j)<='Z'){
System.out.print(s.charAt(j));
}
}
}
}
}
//腾讯:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。
// 可以求原串和反串的公共子序列,总长减去其长度即为需删个数。如果两个相等,则此时最长序列是前一个加1;若不想等,就从前面挑最大的,更长的序列即可。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s1 = sc.next();
String s2 = new StringBuilder(s1).reverse().toString();
int[][] dp = new int[s1.length() + 1][s2.length() + 1];
for (int i = 1; i < dp.length; i ++ ) { //正序的每一个字符同反序的每一个字符比较
for (int j = 1; j < dp[0].length; j ++ ) {
// dp[i][j] = s1.charAt(i - 1) == s2.charAt(j - 1) ? dp[i - 1][j - 1] + 1 : Math.max(dp[i - 1][j], dp[i][j - 1]);
if (s1.charAt(i-1) == s2.charAt(j-1)){ //字符是相同的 则前一个字符相同的数加一
dp[i][j] = dp[i-1][j-1] + 1;
} else { //对应的字符不相同 则取前面相同字符数中最大那个
dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
}
}
}
System.out.println(s1.length() - dp[s1.length()][s2.length()]);//这样得到就是相同字符数最多的值 就是回文的长度 总长减去此长 就得到要删减的数目
}
}