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

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

int main(){
  int i,p,q,r,N;
  int *A;
  scanf("%d",&N);

  A=(int*)malloc(N*sizeof(int));
  for(i=0;i<N;i++){
    scanf("%d",&A[i]);
  }
  q=Partition(A,0,N);
  Print(A,N,q);
  return 0;
}

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

  int x,i,j,t;

  x=A[r-1];
  i=p-1;
  for(j=p;j<r-1;j++){
    if(A[j]<=x){
      i++;
      t=A[i];
      A[i]=A[j];
      A[j]=t;
    }
  }
  t=A[i+1];
  A[i+1]=A[r-1];
  A[r-1]=t;
  return i+1;
}

void Print(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]);
      }
  }
}
      

