#include <stdio.h>
#define MAX 100000

int A[MAX];

int partition(int p,int r) {
  int i, x, tmp;

  x = A[r];
  i = p-1;
  for (int 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(void){
    // Your code here!
    int n, q;
    
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
      scanf("%d", &A[i]);
    }

    q = partition(0, n-1);

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

    return 0;
}

