#include <stdio.h>
#define MAX 100000

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

main(){
  int n, i, x;
  int A[MAX];

  scanf("%d", &n);

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

  x = Partition(A, 0, n-1);

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

  printf("\n");

  return 0;

}



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

  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 x;

  x = *A;
  *A = *B;
  *B = x;

}