program main
  
  
  implicit none
  integer :: n, x, y
  integer :: i, j, k
  integer,allocatable :: d(:,:), dd(:)
  
  read(*,*) n, x, y
  allocate( d(n,n) )
  allocate( dd(n-1) )
  d = 0
  dd = 0
  
  do i = 1, n-1
    do j = i+1, n
      if ( i == x .and. j == y ) then 
        d(i,j) = min( j-i-1, 2 )  
      else if ( i >= y .and. j <= n ) then 
        d(i,j) = j - i 
      else if ( i >= 1 .and. j <= x ) then 
        d(i,j) = j - i 
      else 
        ! x+1
        if ( i == x+1 ) then 
          d(i,j) =  1 + j - y
        else if ( j == x+1 ) then 
          d(i,j) = j - i 
        else if ( j > x .and. j<y  .and. i <= x ) then 
          d(i,j) = j - i -1
        else if ( j==y  .and. i <= x ) then 
          d(i,j) = min(j-i-1,x-i+2)
        else if ( j > y .and. i <= x ) then 
          d(i,j) = min(j-i-1,x-i+2)
        else if ( y > j .and. i > x ) then 
          d(i,j) = j - i 
        else if ( y >= j .and. i > x ) then 
           d(i,j) = j - i - 1 
        else
           d(i,j) = j - i - 1 
        end if
      end if
    end do
  end do
  do i = 1, n-1
    do j = i+1, n
      if( d(i,j) /= 0 ) dd(d(i,j)) = dd(d(i,j)) + 1
    end do
  end do
  
  do i = 1, n-1
    print*, dd(i)
  end do
  
  
  
end program main

recursive subroutine quicksort1(a, first, last)
  implicit none
  integer(4),intent(inout)::a(*)
  integer,intent(in)::first,last
  !
  ! Original
  ! https://gist.github.com/t-nissie/479f0f16966925fa29ea
  !
  integer(4)::x,t
  integer::i,j

  x = a((first+last)/2)
  i = first
  j = last
  do
     do while (a(i) < x)
        i=i+1
     end do
     do while (x < a(j))
        j=j-1
     end do
     if (i >= j) exit
     t = a(i)
     a(i) = a(j)
     a(j) = t
     i=i+1
     j=j-1
  end do
  if (first < i-1) call quicksort1(a, first, i-1)
  if (j+1 < last)  call quicksort1(a, j+1, last)

  return
end subroutine quicksort1
