#include<stdio.h>

void swap(int *a,int *b);
int partition(int A[], int p,int r);

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

void swap(int *a,int *b){
	int tmp;
	tmp=*a;
	*a=*b;
	*b=tmp;
}

int main(void){
	int A[100000];
	int base,n;
	int i;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&(A[i]));
	}
	base=partition(A,0,n-1);
	for(i=0;i<n;i++){
		if(i==base){
			printf("[%d]%c",A[i],i==n-1?'\n':' ');
		}else{
			printf("%d%c",A[i],i==n-1?'\n':' ');
		}
	}
	return 0;
}