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

int Partition(int *,int,int);
void OutputData(int *,int,int);

int main(){

  int i,n,*a,q;

  scanf("%d",&n);

  a=(int*)malloc(n*sizeof(int));

  for(i=0;i<n;i++){
    scanf("%d",&a[i]);
  }
  q=Partition(a,0,n);

  OutputData(a,n,q);

  return 0;
}

int Partition(int *a,int p,int r){

  int i,j,tmp,x;

  for(j=p;j<r-1;j++){
    if(a[j]<=x){
      i++;
      tmp=a[i];
      a[i]=a[j];
      a[j]=tmp;
    }
  }
 
  tmp=a[i+1];
  a[i+1]=a[r-1];
  a[r-1]=tmp;

  return (i+1);

}

void OutputData(int *a,int n,int r){

  int i;

  for(i=0;i<n;i++){
    if(i==r){
      printf("[%d] ",a[i]);
    }
    else if(i==(n-1)){
      printf("%d\n",a[i]);
    }
    else{
      printf("%d ",a[i]);
    }
  }
}
  

		 

