#include <stdio.h>
#include <stdlib.h>
#define MAX 100000
 
 
 
int partition(int *A, int p, int r){
  int x,j,tmp1,tmp2,i;
 x = A[r]; 
 i = p-1;
 for( j = p; j < r ; j++){
   if (A[j] <= x){
     i = i+1;
     tmp1 = A[i];
     A[i] = A[j];
     A[j] = tmp1;
   }
 }
   tmp2 = A[i+1];
   A[i+1] = A[r];
   A[r] = tmp2;
   return i+1;
 
 }
 
    
 int main(){
   int i,n,*A,q;
 
   A = (int*)malloc(sizeof(int)*MAX);
 
   scanf("%d",&n);
 
   for( i = 0; i < n; i++){
     scanf("%d",&A[i]);
   }
 
   
q =    partition(A,0,n-1);
   // for (i = 0; i < n ; i++){
     //   } 
 
     for(i = 0;i < n;i++){
       if( i == q)
	 printf("[%d] ",A[i]);
       else printf("%d ",A[i]);
     }
     printf("\n");
     free(A);
   return 0;
 }