#include <stdio.h>
 
int Partition(int *,int ,int );
 
main(){
  
  int n, i, A[100005], m;
  
  scanf("%d",&n);
  
  for(i = 0; i < n; i++)
    scanf("%d",&A[i]);
 
  m = Partition(A,0,n-1);
  
  for(i = 0; i < m; i++){
    printf("%d ",A[i]);
  }
  printf("[%d] ",A[m]);
  
  for(i = m+1; i < n-1; i++)
    printf("%d ",A[i]);
  printf("%d\n",A[n-1]);
  
  return 0;
}

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