#include <stdio.h>
#include <stdlib.h>

#define MAX 100000

int partition(int*, int, int);

int main() {
  int i, al, index;
  int *array;

  array = malloc(sizeof(int)*MAX);
  
  scanf("%d", &al);
  for(i=0 ; i < al ; i++) { scanf("%d", &array[i]); }

  index = partition(array, 0, al-1);
  
  for(i=0 ; i < index ; i++) {
    printf("%d", array[i]);
    if(i != al-1) { printf(" "); }
  }

  printf("[%d]", array[index]);
  if(i != al-1) { printf(" "); }
  
  for(i=index+1 ; i < al ; i++) {
    printf("%d", array[i]);
    if(i != al-1) { printf(" "); }
  }
  printf("\n");
  
  return 0;
}

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

  x = A[r];
  i = p-1;

  for(j=p ; j < r ; j++){
    if(A[j] <= x) {
      i = i+1;
      temp = A[i];
      A[i] = A[j];
      A[j] = temp;
    }
  }

  temp = A[i+1];
  A[i+1] = A[r];
  A[r] = temp;

  return i+1;
}


