#include <stdio.h>
#define N 100000

int A[N];
void Swap(int *,int *);
int Partition(int);

int main(){
  int n,i,index;

  scanf("%d",&n);

  for(i=0;i<n;i++) scanf("%d",&A[i]);
  index=Partition(n-1);

  for(i=0;i<n-1;i++){
    if(i==index){
      printf("[%d] ",A[i]);
      continue;
    }
    printf("%d ",A[i]);
  }
  printf("%d\n",A[i]);
  return 0;
}

int Partition(int l){
  int x,i,j,base;

  base=A[l];
  i=-1;
  for(j=0;j<=l-1;j++){
    if(A[j]<=base){
      i+=1;
      Swap(&A[i],&A[j]);
    }
  }
   Swap(&A[i+1],&A[l]);

  return i+1;
}

void Swap(int *a, int *b){
  int temp;

  temp = *a;
  *a = *b;
  *b = temp;
}