#include<stdio.h>
#define nMAX 100000

int A[nMAX];

int Partition(int L,int R){
	int x=A[R], i=L-1, j,tmp;

	for(j=L;j<R;j++){
		if(A[j]<=x){
			++i;

			// swap(A[i].A[j])
			tmp=A[i];
			A[i]=A[j];
			A[j]=tmp;
		}
	}
	tmp=A[R];
	A[R]=A[i+1];
	A[i+1]=tmp;

	return i+1;
}

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

	pos=Partition(0,n-1);

	for(i=0;i<n;i++){
		if(i)printf(" ");

		if(i==pos){
			printf("[");
			printf("%d",A[i]);
			printf("]");
		}else printf("%d",A[i]);
	}printf("\n");

	return 0;
}

