#include <stdio.h>
int main(){
	int n,now=-1,temp,a[100000];
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<n;i++){
		if(a[i]<=a[n-1]){
			now++;
			temp=a[i];
			a[i]=a[now];
			a[now]=temp;
		}
	}
	for(int i=0;i<now;i++)printf("%d ",a[i]);
	printf("[%d]",a[now]);
	for(int i=now+1;i<n;i++)printf(" %d",a[i]);
	printf("\n");
}
#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
int inf = 10000000;
int n;
vector<int> a;
int partition(int p, int r){
  int x = a[r-1];
  int i = p-1;
  for(int j=p; j<r; j++){
    if( a[j] <= x ){
      // i = i + 1;
      swap(a[++i], a[j]);
    }
  }
  // swap(a[i+1], a[r]);
  return i;
}

int main(){
  cin >> n;
  a.resize(n);
  for(int i=0; i<n; i++) cin >> a[i];

  int p = partition(0, n);

  for(int i=0; i<n; i++){
    if( i == p ) cout << "[" << a[i] << "]";
    else cout << a[i];
    if( i == n-1 ) cout << endl;
    else cout << " ";
  }

  return 0;
}