#include <stdio.h>

#define MAX 100000

int Partition(int *, int, int);

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

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

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

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

  return 0;
}

int Partition(int *A, int p, int r) {
  int x, tmp, i, j;
  x = A[r];
  i = p - 1;
  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;
}

