#include <stdio.h>
void swap(int *A, int p, int r){
  int x=A[p];
  A[p]=A[r];
  A[r]=x;
}
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, j);
	}
  }
  swap(A,i+1, r);
  return i+1;
}
int main(){
  int n;
  int i;
  scanf("%d", &n);
  int A[n];
  for(i=0; i<n; ++i){
	scanf("%d", &A[i]);
  }
  int q=partition(A, 0, n-1);
  
  for(i=0; i<n; ++i){
	if(i==q)
	  printf("[%d]", A[i]);
	else 
	  printf("%d", A[i]);
	if(i!=n-1)
	  printf(" ");
  }
  printf("\n");
  return 0;
}

