#include<stdio.h>
#include<stdlib.h>
int partition(int *,int);
void swap(int,int,int *);
int main(){
  int n,i,temp;
  int *list;
  scanf("%d",&n);
  list=(int *)malloc(n*sizeof(int));
  for(i=0;i<n;i++)scanf("%d",list+i);
  temp=partition(list,n);
  for(i=0;i<n;i++){
    if(i==temp)printf("[%d]%c",*(list+i),(i<n-1)?' ':'\n');
    else printf("%d%c",*(list+i),(i<n-1)?' ':'\n');
  }
  return 0;
}
int partition(int *l,int n){
int i,s=0,base=*(l+(n-1));
  for(i=0;i<n-1;i++){
    if(base>*(l+i)){
      swap(i,s,l);
      s++;
    }
  }
  swap(s,n-1,l);
  return s;
}
void swap(int x,int y,int *l){
  int temp;
  temp=*(l+x);
  *(l+x)=*(l+y);
  *(l+y)=temp;
}

