PROGRAM ATCODER

implicit none
integer :: h, w, a, b, c1, c2, sum, i

read(*,*) h, w, a, b

sum = 0
do i = 0, h-a-1 !下に移動する回数
	call comb_j(b+i-1,i,c1)
    call comb_j(h-1-i+w-1-b,h-1-i,c2)
    sum = sum + c1*c2
end do

write(*,'(i0)') mod(sum,(10**9+7))

END PROGRAM ATCODER


SUBROUTINE COMB_J(n,r,c)
implicit none
integer, intent(in) :: n
integer, intent(in) :: r
integer, intent(out) :: c
integer :: i, den1, den2, num

den1 = r
den2 = n-r
num = n

if (r == 0) then
	c = 1
    return
else if (r == 1) then
	c = n
    return
end if

do i = n-1, 1, -1
    num = num*i
end do

do i = r-1, 1, -1
	den1 = den1*i
end do

do i = n-r-1, 1, -1
    den2 = den2*i
end do

c = num/den1/den2

END SUBROUTINE COMB_J