#include <stdio.h>

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

int partition(int A[], int p, int r){
  int sw;
  int x = A[r];
  int i = p - 1, j;
  for(j = p; j < r; j++){
      if(A[j] <= x){
          i++;
          sw = A[i]; A[i] = A[j]; A[j] = sw;
      }
  }
    sw = A[i+1]; A[i+1] = A[r]; A[r] = sw;
  return i+1;
}

int main(){
  int i, n, A[100001];
  scanf("%d", &n);
  for (i = 0; i < n; i++){
    scanf("%d", &A[i]);
  }
  int p = partition(A, 0, n - 1);
  printf("%d", A[0]);
  for(i = 1; i < n; i++) {
    if (p == i) printf(" [%d]", A[i]);
    else printf(" %d", A[i]);
  }
  printf("\n");
  return 0;
}

