#include<stdio.h>
#include<stdlib.h>
#define N 1e5

int partition(int*, int, int);

int partition(int *A, int p, int r){

  int x=A[r], i=p-1, j, tmp;

  for(j=p;j<r;j++){

    if(A[j]<=x){

      i++;

      tmp=A[i];

      A[i]=A[j];

      A[j]=tmp;

    }

  }tmp=A[i+1];

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

  A[r]=tmp;

  return i+1;

}

int main(){

  int i, n, q;

  int *A=(int*)malloc(sizeof(int)*N);

  scanf("%d", &n);

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

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

  printf("%d", A[0]);

  for(i=1;i<n;i++){

    if(i==q) printf(" [%d]",A[i]);

    else printf(" %d", A[i]);

  }printf("\n");

  free(A);

  return 0;

}

