program main
	implicit none
    integer::n,i
    real(8)::t
    integer,allocatable::x(:),y(:)
    read(*,*) n
    allocate(x(n))
    allocate(y(n))
    
    read(*,*) x
    y=x
    call heapsort(n,y)
    
    t=(real(y(n/2),kind=8)+real(y(n/2 +1),kind=8))/2.0_8
    
    do i=1,n
    	if(real(x(i),8)<t)then
        	write(*,*) y(n/2 +1)
        else
        	write(*,*) y(n/2)
        end if
    end do
    
    deallocate(x)
    deallocate(y)
    
    
    stop
contains
	subroutine heapsort(n,array)
        implicit none
        integer,intent(in) :: n
        integer,intent(inout) :: array(1:n)
       
        integer ::i,k,j,l
        double precision :: t
       
        if(n.le.0)then
           write(6,*)"Error, at heapsort"; stop
        endif
        if(n.eq.1)return
      
        l=n/2+1
        k=n
        do while(k.ne.1)
           if(l.gt.1)then
              l=l-1
              t=array(L)
           else
              t=array(k)
              array(k)=array(1)
              k=k-1
              if(k.eq.1) then
                 array(1)=t
                 exit
              end if
           end if
           i=l
           j=l+l
           do while(j.le.k)
              if(j.lt.k)then
                 if(array(j).lt.array(j+1))j=j+1
              end if
              if (t.lt.array(j))then
                 array(i)=array(j)
                 i=j
                 j=j+j
              else
                 j=k+1
              endif
           end do
           array(i)=t
        end do
      
        return
    end subroutine heapsort
end program main