#include<stdio.h>

#define N 100000

int n, A[N];

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

    return i+1;

}

int main(void){
    scanf("%d", &n);

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

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

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

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

    return 0;


}
