#include<stdio.h>
#include<stdlib.h>

int partition(int *,int,int);
void change(int*,int*);

int main() {
  int n=0;
  int *A;
  int i;
  int q;

  // Input
  scanf("%d",&n);
  A=(int *)malloc(n*sizeof(int));
  for(i=0;i<n;i++){
    scanf("%d",&A[i]);
  }

  q=partition(A,0,i-1);

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

  return 0;
}

int partition(int *A,int p,int r){
  int x=A[r];
  int i=p-1;
  int j;

  for(j=p;j<r;j++){
    if(A[j]<=x){
      i++;
      change(&A[i],&A[j]);
    }
  }
  change(&A[i+1],&A[r]);

  return i+1;

}

void change(int *a,int *b){
  int temp;

  temp=*a;
  *a=*b;
  *b=temp;

}

