#include<stdio.h>
int partition(int,int);
#define N 100000
int n,A[N];
int main(){
  int i,z;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%d",&A[i]);
  }
  z=partition(0,n-1);
  for(i=0;i<n;i++){
    if(i)
      printf(" ");
    if(i==z)
      printf("[%d]",A[i]);
    else if(i!=z)
      printf("%d",A[i]);
  }
  printf("\n");
  return 0;
}
int partition(int p,int r){
  int i,x,y,z;
  x=A[r];
  y=p-1;
  for(i=p;i<r;i++){
    if(A[i]<=x){
      y++;
      z=A[y];
      A[y]=A[i];
      A[i]=z;
    }
  }
  z=A[y+1];
  A[y+1]=A[r];
  A[r]=z;
  return y+1;
}


