#include<stdio.h>
#define max 10000

int partition(int part[],int start,int end){
  int x,i,j,temp;

  x=part[end];
  i=start-1;

  for(j=start;j<=end-1;j++){
    if(part[j]<=x){
	i+=1;
	//交換
	temp=part[i];
	part[i]=part[j];
	part[j]=temp;
      }
  }
    //交換
      temp=part[i+1];
      part[i+1]=part[end];
      part[end]=temp;
    return i+1;
}
int main(){
  int num,i,kaeriti,part[max];

  scanf("%d",&num);
  for(i=0;i<num;i++){
    scanf("%d",&part[i]);
  }
  
  kaeriti=partition(part,0,num-1);
  
  //出力
  for(i=0;i<num;i++){
    if(i==kaeriti){
      printf("[%d]",part[kaeriti]);
	}else{
      printf("%d ",part[i]);
    }
  }
  printf("\n");
  return 0;
}

