#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    long int N,temp,max,index,index1=0,index2,max1,max2;
    cin>>N;
    vector<long long int>a(N),f(N);
    for(int i=0;i<N;i++){
        cin>>a[i];
        f[i]=a[i];
    }
    if(N==2){
        temp=a[0];
        a[0]=a[1];
        a[1]=temp;
        for(int i=0;i<N;i++)
            cout<<a[i]<<" ";
        return 0;
    }
    max=a[0];
    for(int i=0;i<N;i++){
      if(a[i]>max){
        max=a[i];
        index=i;
      }
    }
    if(max==a[0]){
        sort(f.begin(),f.end());
        reverse(f.begin(),f.end());
        for(int i=0;i<N;i++){
            if(a[i]==f[i])
                index1++;
                max1=a[index1+1];
        }
        if(index1>=N-2){
            temp=a[N-1];
            a[N-1]=a[N-2];
            a[N-2]=temp;
            for(int i=0;i<N;i++)
                cout<<a[i]<<" ";
            return 0;
        }
        for(int i=index1+1;i<N;i++){
            if(max1<a[i]){
                max1=a[i];
                index2=i;
            }
        }
        temp=a[index1+1];
        a[index1+1]=a[index2];
        a[index2]=temp;
        for(int i=0;i<N;i++)
            cout<<a[i]<<" ";
    }
    else{
        temp=a[0];
        a[0]=a[index];
        a[index]=temp;
        for(int i=0;i<N;i++)
            cout<<a[i]<<" ";
    }
    return 0;
}