#include <stdio.h>

#define MAX 100000

int Partition(int[], int, int);
void swap(int[], int, int);

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

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

  pivot = Partition(A, 0, n - 1);

  for (i = 0; i < n; i++)
  {
    if (i)
      printf(" ");

    if (i == pivot)
      printf("[");

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

    if (i == pivot)
      printf("]");
  }

  printf("\n");

  return 0;
}

int Partition(int A[], int p, int r)
{
  int x;
  int i, j;

  x = A[r];
  i = p - 1;

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

  swap(A, i + 1, r);

  return i + 1;
}

void swap(int A[],int a,int b){
  int temp;

  temp = A[a];
  A[a] = A[b];
  A[b] = temp;
}
