#include <stdio.h>

int partition(int*, int, int);

int main()
{
  int n, A[100000], q, i;

  scanf("%d",&n);

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

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

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

  printf("[%d] ",A[q]);

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

  printf("%d\n",A[n-1]);
  
  return 0;
}

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

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

  temp = A[i+1];
  A[i+1] = A[r];
  A[r] = temp;

  return i+1;
}

