#include <stdio.h>

#define MAX 100000

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

int main(){
  int n,i,A[MAX];
  scanf("%d",&n);
  for(i = 0 ; i < n ; i++){
    scanf("%d",&A[i]);
  }
  Partition(0,n-1,A);
  return 0;
}

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

void Partition(int l,int r,int *A){
  int x = A[r],i = l,j;
  for(j = l ; j < r ; j++){
    if(A[j] <= x){
      swap(&A[i++],&A[j]);
    }
  }
  swap(&A[i],&A[r]);
  for(j = l ; j <= r ; j++){
    if(j > l){ printf(" "); }
    if(j == i){
      printf("[%d]",A[j]);
    }else{
      printf("%d",A[j]);
    }
  }
  printf("\n");
}