#include<stdio.h>
int n,A[100000];

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

  return i+1;
}


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

