#include <iostream>

using namespace std;
int maxel(long a[],long n,long i)
{
   int maxi=i;
   for(long j=i;j<n;j++)
   {
       if(a[j]>a[i])
        maxi=j;
   }

   return maxi;
}
long broj(long a[],long n)
{
    long l;
    long k=1;
    for(long i=n-1;i>=0;i--)
    {
        l=l+k*a[i];
        k*=10;
    }
    return l;
}
int main()
{
  long n;
  cin>>n;
  long a[n];
  bool h=false;
  for(long i=0;i<n;i++)
  {
      cin>>a[i];
  }
  if(n==2)
  {
      cout<<a[1]<<endl;
      cout<<a[0]<<endl;
  }
  else
  {
      bool t=false;


     for(long i=0;i<n-1;i++)
     {
          int maxi=maxel(a,n,i);
           if(maxi!=i&&a[maxi]>=a[i])
      {
          int p=a[i];
          a[i]=a[maxi];
          a[maxi]=p;
          t=true;
          break;
      }
      else if(a[maxi]==a[i+1])
      {
       t=true;
       h=true;

      }

     }

    if(t==false)
    { if(h)
       {long l=broj(a,n);
        int u=a[n-2];
        a[n-2]=a[n-1];
        a[n-1]=u;
        if(broj(a,n)<l)
        {
            for(long i=n-1;i>=0;i--)
            {
                a[i]=l%10;
                l/=10;
            }

        }
       }
       else
       {
        int u=a[n-2];
        a[n-2]=a[n-1];
        a[n-1]=u;

       }
    }
    for(long i=0;i<n;i++)
        cout<<a[i]<<endl;


     }
  }