#include <stdio.h>
#define MAX 100000
int A[MAX] = {0};

void showM(int A[], int n) {
	int i;
	
	for (i = 0; i < n; ++i) {
		if (i != n -1) {
			printf("%d ", A[i]);
		} else {
			printf("%d\n", A[i]);
		}
	}
	//printf("\n");
}

int partition(int A[], int p, int r) {
	int x, tmp, i, j;
	
	x = A[r-1];
	i = p - 1;

	for (j = p; j < r; ++j) {
//		showM(A, r);
//		printf("A[j] = %d, x = %d\n", A[j], x);
		if (A[j] <= x) {
			++i;
			tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}
	tmp = A[i+1];
	A[i+1] = A[r-1];
	A[r-1] = tmp;
	return i + 1;
}

int main(void) {
	int n, i;
	int cnt;
	
	scanf("%d", &n);

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

	cnt = partition(A, 0, n) - 1;

	for (i = 0; i < cnt; ++i) {
		printf("%d ", A[i]);
	}

	printf("[%d]", A[cnt]);

	if (cnt != n -1) {
		putchar(' ');
	} else {
		putchar('\n');
	}
	
	for (i = cnt + 1; i < n; ++i) {
		printf("%d", A[i]);
			
		if (i != n -1) {
			putchar(' ');
		} else {
			putchar('\n');
		}
	}

	
	
	return 0;
}