#include <stdio.h>
#include <stdlib.h>

int partition(int *a,int p,int r){
  int i,j,x,alt;
  x=a[r];
  i=p-1;
  int k;
  for(j=p;j<r;j++){
    if(a[j]<=x){
      i=++i;
      alt=a[i];
      a[i]=a[j];
      a[j]=alt;
    }
  }
  alt=a[i+1];
  a[i+1]=a[r];
  a[r]=alt;
  return i+1;
}

int main(){
  int i,j,n;
  int *ar,*a;
  scanf("%d",&n);
  ar=(int *)malloc(n*sizeof(int)+1);
  a=ar;
  for(i=0;i<n;i++)scanf("%d",a+i);
  i=partition(a,0,n-1);
  for(j=0;j<i;j++)printf("%d ",*(a+j));
  printf("[%d]",*(a+j));
  for(j=i+1;j<n;j++)printf(" %d",*(a+j));
  printf("\n");  
  free(ar);
  return 0;
}