#include<stdio.h> int main(){

//前提:先把最大值最小值都设为a[0]
//比较重要的两个数是:现在的a[0]也就是最大值,和要跟它比的那个数字a[i];
//a[i]循环的这个数,它有三种可能,一是可能比最大的max大
//二是她比max小,但是比次大值大,那么它就直接变成次大值
//三是它比次大值小,那么最大值和次大值都不变
int n,i;
int a[100];
scanf("%d",&n);//先输入n
for(i=0;i<n;i++){
    scanf("%d",&a[i]);
}//通过数组输入一行数字

int max=a[0],second_max=a[1];//对最大最小,次大次小初始化
int min=a[0],second_min=a[1];//本来它们我都初始化为a[0],但是有错,我就把两个初始化为a[1];

for(i=0;i<n;i++){
    if(a[i]>max){//这里注意最大值变了,要将换下来的最大值max,放在次大值的位置上           
        second_max=max;
        max=a[i];
    }
    else if(a[i]>second_max&&a[i]!=max)//加上不等于max的条件是为了规避下一个最大值和上一个最大值相同的情况
        second_max=a[i];
}

for(i=0;i<n;i++){
    if(a[i]<min){         
        second_min=min;
        min=a[i];
    }
    else if(a[i]<second_min&&a[i]!=min)
        second_min=a[i];
}
int c1=max-second_max;
int c2=max-second_min;
int c3=second_max-second_min;
int c4=second_max-min;

printf("%d %d %d %d",c1,c2,c3,c4);

}