#include <stdio.h>          // printf(), scanf()

#define MAX_N 100000
#define swap(x, y) { int t = x; x = y; y = t; }

int
partition(int a[], int p, int r)
{
	int j;

	int x = a[r];
	int i = p - 1;
	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;
}

int
main(int argc, char** argv)
{
	int a[MAX_N];
	int n, i;

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

	int j = partition(a, 0, n - 1);
	for (i = 0; i < n; ++i)
	{
		if (i == j)
			printf("[%d]%c", a[i], (i != n - 1) ? ' ' : '\n');
		else
			printf("%d%c", a[i], (i != n - 1) ? ' ' : '\n');
	}

	return 0;
}