#include <stdio.h>

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

int main(){
  int i,j,n;
  int A[100000];

  scanf("%d",&n);

  for(i = 0; i < n; i++){
    scanf("%d",&A[i]);
  }

  j = partition(A,0,n-1);

  for(i = 0; i < n; i++){
    if(i == j) printf("[");
    printf("%d",A[i]);
    if(i == j) printf("]");
    if(i == n-1) break;
    printf(" ");
  }

  printf("\n");

  return 0;
}

int partition(int *A,int p,int r){
  int i,j,x;

  x = A[r];
  i = p-1;
  for(j = p; j < r; 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 *A, int *B){
  int C;

  C = *A;
  *A = *B;
  *B = C;
}

