#include <stdio.h>
int n;
int C[10000];
void swap(int* x,int* y){
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}
int partition(int A[],int p,int r){
    int x,i,j;
    x=A[r];
    i=p-1;
    for(j=p;j<r;j++){
        if(A[j]<=x){
            i=i+1;
            swap(&A[i],&A[j]);
        }
    }
    swap(&A[i+1],&A[r]);
    return i+1;
}
int main(){
    int i,r;
    int A[100000];
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&A[i]);
    }
    r=partition(A,0,i-1);
    for(i=0;i<n-1;i++){
        if(i==r){
            printf("[");
        }
        printf("%d",A[i]);
        if(i==r){
            printf("] ");
        }
        else{
            printf(" ");
        }
    }
    printf("%d\n",A[i]);
    return 0;
}
