/**
  * Partision
  *
  */

#include <stdio.h>
#define MAX 100000

/* prototype */
int partition(int*, int, int);

int main(){
  int i,n,pivot;
  
  /* input the number of A[] */
  scanf("%d",&n);
  
  int A[n];

  /* input datas */
  for(i=0;i<n;i++){
    scanf("%d",&A[i]);
  }
  
  pivot = partition(A, 0, n-1); //partition(A, p, r): p??????????????????, r??????????????????(key)??¨?????????
  
  for(i=0;i<n-1;i++){
    if(i==pivot){
      printf("[%d] ",A[i]);
    }else{
      printf("%d ",A[i]);
    }
  }//??????????????§i=n-1(????????????)
  printf("%d\n",A[i]); //??????
  
  return 0;
}
//
//int partition(int *A, int p, int r){
//  int i,k,x,swap;
//  
//   x = A[r]; //A[r]?????????
//   i = p-1; //?????????-1 (????????????????????????i+1?????????)
//   for(k=p;k<r-1;j++){
//     if(A[j] <= x){
//       i = i+1; //x>??????????????§
//       swap = A[i]; //A[i]??¨A[j]?????????
//       A[i] = A[j];
//       A[j] = swap;
//     }
//   }
//    swap = A[i+1]; //A[i]??¨A[j]?????????
//    A[i+1] = A[r];
//    A[r] = swap;
//   return i+1;
//}

//int partition(int *A, int p, int r){
//  int i,j,k,x,swap;
//  
//  x = A[r]; //A[r]?????????
//  i = p-1; //x>A[i]??????
//  j = p-1; //x<A[i]??????  
//   for(k=0;k<r;k++){
//     if(A[k] <= x){
//       i++; //+=1?????????????????????
//       swap = A[i]; //A[i]??¨A[k]?????????
//       A[i] = A[k];
//       A[k] = swap;
//       j++; //x<??????????????§
//     }else if(A[k] > x){
//       j++;
//     }
//   }
//  i++;
//  swap = A[i]; //x(A[r])???????´?
//  A[i] = A[r];
//  A[r] = swap;
//  j++;
//  
//  return i;
//}

int partition(int *A, int p, int r) {
  int i,j,x,swap;

  x = A[r]; //key.????????¨????¬?????????????????????¨?????????
  i = p-1;  //'<x'??????
  /* 'x<'?????????????????????j????????¨????????°?????? */
  for(j=p;j<r;j++) { //'r'???key????????¢?´¢?????????
    if(A[j]<=x){ //A[j]???'<x'????????????????????\??????
      i++;
      swap = A[i];
      A[i] = A[j];
      A[j] = swap;
    }
    //else?????´????????????'x<'???????????????????????????j++??§???????????????????????????????????????????¬????for??????
  }

  /* key(A[r])???'<x'????????????????????\?????? */
  i++; //'<x'???????????????????????????
  swap = A[i];
  A[i] = A[r];
  A[r] = swap;
  
  return i;
}