#include<stdio.h>
#define VMAX 100000
int Partition(int[VMAX],int,int);
void Swap(int *,int *);
int main(){
  int n;
  int A[VMAX];
  int i;
  int q;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%d",A[i]);
  }
q = Partition(A,0,n-1);

for(i=0;i<n;i++){
  if(i){
    printf(" ");
  }
  if(i==q){
    printf("[");
  }
  printf("%d",A[i]);
  if(i==q){
  printf("]");
}
}
printf("\n");
  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]);
  return i+1;
}

void Swap(int *x,int *y){
  int m;
  m = *x;
  *x = *y;
  *y = m;
}

