#include<stdio.h> 
#define MAX 200000
  
int Partition(int D[],int p,int r){
 
  int i,j;
  i=p-1;
  int x = D[r];
  for(j=p;j<=r-1;j++){
    if(D[j]<=x){
      i=i+1;
      swap(&D[i],&D[j]);
    }
  }
  swap(&D[i+1],&D[r]);
  return i+1;
}
int A[MAX];
int main(){

  
  int n,temp;
  int i,x;
  int result;
  scanf("%d",&n);
  for(i=0;i<n;i++)scanf("%d",&A[i]);
  x=Partition(A,0,n-1);
  i=0;
  while(i<n){
    if(i)printf(" ");
    if(i==x)printf("[");
    result=A[i];
    printf("%d",result);
    if(i==x)printf("]");
    i=i+1;
  }
  printf("\n");
  return 0;
}
void swap(int* c,int* k){
  int temp;
  temp=*c;
  *c=*k;
  *k=temp;
}

