#include <stdio.h>

#define MAX_N 100000

int n, A[MAX_N];

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

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

int main() {
  int i;

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

  int q = partition(0, n-1);
  for(i = 0; i < n; i++) {
    if(i) putchar(' ');
    if(i == q) putchar('[');
    printf("%d", A[i]);
    if(i == q) putchar(']');
  }
  puts("");

  return 0;
}