#include <stdio.h>

int partition(int A[], int p, int r){

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

	return i+1;

}

int main(){

	int n, i, base;
	int A[100000];

	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]", A[i]);
		}else if(i!=0){
			printf(" %d", A[i]);
		}else{
			printf("%d", A[i]);
		}
	}

	return 0;
}