#include <stdio.h>
#include <stdlib.h>
#define N 100000

int partition(int *A, int  p, int r){
	int i, j, x, temp;
	x = A[r];
	i = p-1;
	for(j=p; j<r; j++){
		if(A[j]<=x){
			i=i+1;
			//A[i] と A[j] を交換
			temp=A[i];
			A[i]=A[j];
			A[j]=temp;
		}
	}
	//A[i+1] と A[r] を交換
	temp=A[i+1];
	A[i+1]=A[r];
	A[r]=temp;
	
	return i+1;
}

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