//法一:找一趟
// //18:31
// #include <stdio.h>
// int main(){
// int n;
// scanf("%d",&n);
// if(n<0 || n>10) return 0;
// int a[n];
// for(int i=0;i<n;i++){
// scanf("%d",&a[i]);
// }
// //找最大最小位置
// int max_index=0,min_index=0;
// for(int j=1;j<n;j++){
// if(a[j]>a[max_index]){
// max_index=j;
// }
// if(a[j]<a[min_index]){
// min_index=j;
// }
// }
// //交换位置
// //交换最小值
// int temp=a[0];
// a[0]=a[min_index];
// a[min_index]=temp;
// //处理特殊情况,如果最大值在 a[0] 位置,更新 max_index
// if(max_index==0) max_index=min_index;
// //交换最大值
// temp=a[n-1];
// a[n-1]=a[max_index];
// a[max_index]=temp;
// for(int k=0;k<n;k++){
// printf("%d ",a[k]);
// }
// return 0;
// }
//法2:位置找两趟
//18:31
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
if(n<0 || n>10) return 0;
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
//找最小位置
int min_index=0;
for(int j=1;j<n;j++){
if(a[j]<a[min_index]){
min_index=j;
}
}
//交换位置
//交换最小值
int temp=a[0];
a[0]=a[min_index];
a[min_index]=temp;
//找最大位置
int max_index=0;
for(int j=1;j<n;j++){
if(a[j]>a[max_index]){
max_index=j;
}
}
//交换最大值
temp=a[n-1];
a[n-1]=a[max_index];
a[max_index]=temp;
for(int k=0;k<n;k++){
printf("%d ",a[k]);
}
return 0;
}