//

#include 
#include 

// -------------------------------------------------------------

void minmax (int n, int A[], int &MIN, int &MAX)
{
   int i, h ;

   MAX = MIN = A[0] ;
   
   for (i=1; iA[i+1])
      {
         A[i] = A[i+1] ; A[i+1] = h ;
      }

      // Jetzt gilt für ungerade i, daß der Inhalt von A[i]
      // kleiner-gleich dem Inhalt von A[i+1] ist. Darum kann das
      // Minimum nur an einer ungeraden Position stehen und das Maximum
      // nur an einer geraden Position.
      
      if (A[i] < MIN)    MIN = A[i] ;
      if (A[i+1] > MAX)  MAX = A[i+1] ;
   }

   if (i==n-1)  // Ist n gerade, wurde der letzte Eintrag A[n-1]
                // noch nicht berücksichtigt, was hier nachgeholt wird.

      if (A[n-1]MAX)     MAX = A[n-1] ;
} 


// -------------------------------------------------------------

int main(int argc, char* argv[])
{
   int n = atoi(argv[1]), i ;
   int *A ;
   int kleinster, groesster;

   A = (int *) malloc (n * sizeof(int)) ;

   for (i=0;i