#include <stdio.h>
#define MAX 100000

int partition(int *,int,int);
void swap(int *,int,int);

int main()
{
    int a,res;
    int i;
    int A[MAX];
    
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        scanf("%d",&A[i]);
    }
     res=partition(A,0,a-1);
     for(i=0;i<a;i++)
     {
         if(i!=0) printf(" ");
         if(i==res) printf("[");
         printf("%d",A[i]);
         if(i==res) printf("]");
     }
     printf("\n");
     return 0;
}

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

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

void swap(int *A,int i,int j)
{
    int temp;
    temp=A[i];
    A[i]=A[j];
    A[j]=temp;
    return;
}
