#include<stdio.h>

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

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