#include<stdio.h>
#include<math.h>
#include<string.h>
void swap(int   *a, int     *b){
  int x;
  x=*a;
  *a=*b;
  *b=x;
}
int long long ponajveci(int br) {
        int a[10];
        int n=0;
        int k=0,s=0;
        while(br){
            a[n++]=br%10;
            br/=10;
        }
        for(int i=n-1;i>0;--i){
        int maxn=a[i],ind=i;
            for(int j=i-1;j>=0;--j){
                if(a[j]>maxn||(a[j]>a[i]&&a[j]==maxn)){
                    maxn=a[j];
                    k++;
                    ind=j;

                }
            }
            if(ind!=i){
                swap(&a[i],&a[ind]);
                break;
            }
        }
        int long long  res=0;
        for(int i=n-1;i>=0;--i)
            res=res*10+a[i];
            s++;
        return res;
    }



int   main(){
int long long  a[1000000], i=0, n,s=0,max1,x,u,y,temp,fac=1;
scanf ("%lld", &n);
for(i=0;i<n;i++)scanf("%lld", &a[i]);

for(i=0;i<n;i++){

s = 10 * s + a[i];
}


int long long  max = a[0]; 
  
    for (i=1;i<n;i++){ 
        if (a[i]>max) 
            max = a[i]; 
    }
if(n==2)for(i=n-1;i>=0;i--)printf("%lld ", a[i]);

 y=ponajveci(s);
if(n!=2){
temp=y;
  while(temp){
      temp=temp/10;
      fac = fac*10;
  }

  
  while(fac>1){
      fac = fac/10;
      printf("%lld ",y/fac);
      y = y % fac;
  }

}



  return 0;
}