#include<stdio.h>

int partition(int *,int,int);
void swap(int *,int *);

int main(){
  int n,i,r;
  int A[100000];
  int p;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
    scanf("%d",&A[i]);
  r=n;
  p=partition(A,1,r);
  
  return 0;
}

int partition(int *A,int p,int r){
  int x,i,j;
  x=A[r];
  i=p-1;
  for(j=p;j<=r-1;j++){
    if(A[j]<=x)
      i=i+1;
    swap(&A[i],&A[j]);
  }
  swap(&A[i+1],&A[r]);
  for(i=1;i<=n;i++){
    if(i==n) printf("%d\n",A[i]);
    else if(i==p) printf("[%d] ",A[i]);
    else printf("%d ",A[i]);
  }
  return i+1;

}

void swap(int *a,int *b){
  int temp;
  temp=*a;
  *a=*b;
  *b=temp;
  return;
}



