
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
int sum = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int[] arr = new int[8001];
int[] arrT = new int[T];
for (int t = 0; t < T; t++){
int n = Integer.parseInt(br.readLine());
arr[n+4000]++;
arrT[t] = n;
sum += n;
if (n > max)
max = n;
if (n < min)
min = n;
}
sb.append(getMean(sum, T)).append('\n');
sb.append(getMedian(arrT, T)).append('\n');
sb.append(getMode(arr, max, min)).append('\n');
sb.append(getRange(max, min)).append('\n');
System.out.println(sb);
br.close();
}
static int getMean(int sum, int T){
return (int)Math.round((double)sum/T);
}
static int getMedian(int[] arr, int T){
Arrays.sort(arr);
return arr[T/2];
}
static int getMode(int[] arr, int max, int min){
Boolean flag = null;
int mode = 0, modeMax = 0;
for(int a = min + 4000; a <= max + 4000; a++){
if (arr[a] > mode){
mode = arr[a];
modeMax = a - 4000;
flag = true;
} else if (arr[a] == mode && flag) {
modeMax = a - 4000;
flag = false;
}
}
return modeMax;
}
static int getRange(int max, int min){
return max - min;
}
}