#include<stdio.h>
#define MAX 100000
int A[MAX];
int partition(int p, int r){
    int i,x,j,change;
    x = A[r];
    i = p-1;
    for(j = p; j < r; j++){
        if(A[j] <= x){
            i = i+1;
            change = A[i];
            A[i] = A[j];
            A[j] = change;
        }
    }
    change = A[i+1];
    A[i+1] = A[r];
    A[r] = change;
    return i+1;
}

int main(){
    int n,i,j,r,p;
    scanf("%d",&n);
    for(i = 0;i < n;i++){
        scanf("%d",&A[i]);
    }
    p = partition(0,n-1);
    for(i = 0;i < p;i++){
        printf("%d ",A[i]);
    }
    printf("[%d] ",A[p]);
    for(i = p+1;i<n-1;i++){
        printf("%d ",A[i]);
    }
    printf("%d\n",A[n-1]);
    return 0;
}