#include<iostream>
#include<cstring>
#define MAIN 100001
#define MOD 1000000007
using namespace std;
int dp[MAIN][MAIN];
int main()
{
	int h, w, a, b;
	while ( ~scanf ( "%d%d%d%d", &h, &w, &a, &b ) )
	{
		memset ( dp, 0, sizeof ( dp ) );

		for ( int i = 1; i <= h; i++ )
			for ( int j = 1; j <= w; j++ )
			{
				if ( i > h - a && j <= b ) continue;
				else if ( i == 1 && j == 1 ) dp[1][1] = 1;
				else if ( i == 1 ) dp[1][j] = dp[1][j - 1];
				else if ( j == 1 ) dp[i][j] = dp[i - 1][j];
				else dp[i][j] = ( dp[i - 1][j] + dp[i][j - 1] ) % MOD;

			}
		/*
		sum = 0;
		for ( int i = 1; i <= h - a; i++ )
		{
		        int temp1 = ( i == 1 )  ? 1 : i - 1;
		        temp1 = ( b == 1 ) || ( i == 1 ) ? 1 : b * temp1;
		        //cout<<temp1<<endl;
		        int temp2 = ( w - b ) == 1 ? 1 : w - b - 1;
		        temp2 = ( w - b ) == 1 ? 1 : temp2 * ( h - i + 1 );
		        cout << temp1 << " " << temp2 << endl;
		        sum += temp1 * temp2;
		}
		cout << sum << endl;
		*/
		/*for ( int i = 1; i <= h; i++ )
		{
		        for ( int j = 1; j <= w; j++ )
		                printf ( "%d ", dp[i][j] );
		        printf ( "\n" );
		}*/
		printf ( "%d\n", dp[h][w] );
	}
	return 0;
}
