#include <stdio.h>
int partition(int A[],int p,int r);
int A[100000];
int main()
{
int n,i,j,x,ex;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&A[i]);
}
ex=partition(A,0,n-1);
for(i=0;i<ex;i++){
printf("%d ",A[i]);
}
 printf("[%d] ",A[ex]);
 for(i=ex;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 x,i,j,temp1,temp2;
x=A[r];
i=p-1;
for(j=p;j<=r-1;j++){
if(A[j]<=x){
i=i+1;
temp1=A[i];
A[i]=A[j];
A[j]=temp1;
  }
 }
temp2=A[i+1];
A[i+1]=A[r];
A[r]=temp2;

return i+1;
}