#include<stdio.h>

#define MAX 100000

void partition(int *,int,int);

int main()
{
  int n,A[MAX],i,s;

  scanf("%d",&n);

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

  s = A[n-1];

  partition(A,0,n-1);

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

  printf("\n");
  
  return 0;
}

void partition(int *A,int p,int r)
{
  int x,i,j,change;

  x = A[r];

  i = p-1;

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

  return;
}

