#include<stdio.h>
#include<stdlib.h>
int partition(int*,int,int);
void swap(int*,int,int);
void printArray(int*,int,int);
int main(void)
{
  int i;//counter
  int n;//length of array
  int par;//partition number
  int *arr;
  scanf("%d",&n);
  arr=(int*)malloc(sizeof(int)*n);
  for(i=0;i<n;i++) scanf("%d",&arr[i]);
  par=partition(arr,0,n-1);
  printArray(arr,n,par);
  return 0;
}
int partition(int *arr,int p,int r)
{
  int i;//counter
  int parlast;//last index of first half part
  int sep=arr[r];//separate number
  parlast=p-1;
  for(i=p;i<r;i++)
    {
      if(arr[i]<sep)
	{
	  parlast++;
	  swap(arr,parlast,i);
	}
    }
  swap(arr,parlast+1,sep);
  return parlast+1;
}
void swap(int *arr,int x,int y)
{
  int temp;
  temp=arr[x];
  arr[x]=arr[y];
  arr[y]=temp;
}
void printArray(int *arr,int n,int par)
{
  int i;//counter
  for(i=0;i<n;i++)
    {
      if(i>0) printf(" ");
      if(i==par) printf("[%d]",arr[i]);
      else printf("%d",arr[i]);
    }
  printf("\n");
}

