import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
int carr[] = new int[8001];
int top = 1, count=0;
double sum = 0;
for(int i=0; i<N; i++){
int tmp = Integer.parseInt(br.readLine());
//여기서 최빈값을 계산하기 위해서 카운팅정렬과 비슷하게 자리에다가 숫자를 세준다
arr[i] = tmp;
if(tmp<0){
carr[8000-Math.abs(tmp)]++;
}else
carr[tmp]++;
}
Arrays.sort(arr);
//만약 최빈값을 비교하지 않을 경우를 생각해서
//top변수를 1로 두었음(만약 똑같은 수가 없다면 다 1로 기록되기 때문에 보다는 커야함)
//만약에 최빈값이 같다고 가정했을때,
if(N<=1)
count=arr[0];
else
count=arr[1];
//#1
for(int i=0; i<arr.length; i++){
sum+=arr[i];
}
sb.append((int)Math.round(sum/N)).append('\n');
//#2
sb.append(arr[arr.length/2]).append('\n');
//#3
for(int i=0; i<8001; i++){
//carr은 배열의 자리에 몇 번 불렸는지를 기록하는 배열
//그래서 불린 횟수가 클 숫자를 찾기 위해서 top이라는 변수와 비교
//top은 불린 횟수를 기록하는 변수가 된
if(top < carr[i]){
top = carr[i];
//해당 자리 가 입력받은 숫자이기 때문에 입력받은 숫자를 넣어줌
count = i;
}
}
int SC_count=0;
//최빈값이 여러개일때 두 번째 값 찾기
for(int i=4000; i<8001; i++){
//최빈값을 비교하기 위해서는 2이상을 찾아야함
if(top>=2){
//가장 많은 숫자을 가진 자리를 찾는과정
if(top == carr[i]){
//여러개라면 두 번째를 찾기 위해서 2번까지만진행
if(SC_count<2){
//가장 많이 불린 만큼의 수치를 top에 넣어주고
top = carr[i];
//해당 숫자가 무슨 숫자가 무엇인지 넣
count = i;
SC_count++;
}
}
}
}
for(int i=0; i<4000; i++){
//최빈값을 비교하기 위해서는 2이상을 찾아야함
if(top>=2){
//가장 많은 숫자을 가진 자리를 찾는과정
if(top == carr[i]){
//여러개라면 두 번째를 찾기 위해서 2번까지만진행
if(SC_count<2){
top = carr[i];
count = i;
SC_count++;
}
}
}
}
//예를 들어서 -1이 가장 많이 입력되었다면
//-1은 8000-1=7999번째에 입력되어있을 예정이기 떄문에
//해당 번호에서 8000을 빼주면 될듯?
if(count > 4000)
count-=8000;
sb.append(count).append('\n');
//#4
sb.append(arr[N-1]-arr[0]).append('\n');
System.out.println(sb);
}
}