#include<stdio.h>
#define MAX 100000

int A[MAX],n;

int  partition(int p,int r)
{
  int x,i,t,j;//t=change
  x = A[r];
  i = p-1;
  for( j = p;j<r;j++)
    {
      if( A[j] <= x)
	{
	  i++;
	  t=A[i];// A[i] と A[j] を交換
	  A[i]=A[j];
	  A[j]=t;
	}
    }
  t=A[i+1];// A[i+1] と A[r] を交換
  A[i+1]=A[r];
  A[r]=t;
  return i+1;
}

int main()
{
  int i,q;

  scanf("%d",&n);
  for(i=0;i<n;i++)
    {
      scanf("%d",&A[i]);
    }

  q=partition(0,n-1);

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

