// Original C++ solution (slower):
///Bismillahir Rahmanir Rahim

#include "bits/stdc++.h"



#define                           ll                          long long

#define                           int                         ll

#define                           fi                          first

#define                           si                          second

#define                           mp                          make_pair

#define                           pb                          push_back

#define                           pi                          pair<ll,ll>

#define                           clr(x)                      memset(x,0,sizeof(x));

#define                           f(i,l,r)                    for(int i=l;i<=r;i++)

#define                           rf(i,r,l)                   for(int i=r;i>=l;i--)

#define                           done(i)                     cout<<"done = "<<i<<endl;

#define                           show(x,y)                   cout<<x<<" : ";for(auto z:y)cout<<z<<" ";cout<<endl;

#define                           fast                        ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);



using namespace std;



const ll inf=1e18;

const int mod=1e9+7;

const int M=100005;

inline ll bigmod(ll B,ll P){ll R=1;while(P>0){if(P&1){R=(R*B)%mod;}P>>=1;B=(B*B)%mod;}return R;}

inline ll ad(ll x,ll y){ll ret=(x%mod+y%mod)%mod;if(ret<0){ret+=mod,ret=ret%mod;}return ret;}

inline ll sub(ll x,ll y){ll ret=((x%mod)-(y%mod)+mod)%mod;if(ret<0){ret+=mod,ret=ret%mod;}return ret;}

inline ll gun(ll x,ll y){ll ret=((x%mod)*(y%mod))%mod;if(ret<0){ret+=mod,ret=ret%mod;}return ret;}

const int N = 2e5 + 100;

namespace Combi {

    int fact[N], inv[N];



    int bm(int b, int p, int m) {

        if(p == 0) return 1%m;

        int t = bm(b,p/2,m);

        t = (1ll*t*t)%m;

        if(p&1) return 1ll*t*b%m;

        return t;

    }



    int C(int n, int r) {

        if(n < 0 or r < 0 or r > n) return 0;

        int ret = 1ll*fact[n]*inv[r]%mod;

        ret = 1ll*ret*inv[n-r]%mod;

        return ret;

    }

    // X1 + X2 + ... + Xvar = Sum

    int no_of_eqns(int sum, int var) {

        return C(sum+var-1,var-1); // Xi >= 0

        // return C(sum-1,var-1); // Xi > 0

    }

    void init() {

        fact[0] = 1;

        for(int i = 1; i < N; i++) {

            fact[i] = 1ll*fact[i-1]*i%mod;

        }

        inv[N-1] = bm(fact[N-1], mod-2, mod);

        for(int i = N-2; i >= 0; i--) {

            inv[i] = 1ll*inv[i+1]*(i+1)%mod;

        }

    }

}

int yo(int x,int y,int a,int b)

{

    int ret=1;

    int down=abs(a-x);

    int rgt=abs(b-y);

    int p=(down+rgt);

    ret=Combi::C(p,down);

    return ret;

}

 main()



{

    fast

    Combi::init();

    int h,w,a,b;

    cin>>h>>w>>a>>b;

    int ses=0;

    for(int i=1;i<=h-a;i++)

    {

        int cost=yo(1,1,i,b);

        cost=gun(cost,yo(i,b+1,h,w));

        ses=ad(ses,cost);

    }

    cout<<ses<<endl;

    return 0;



}








































































// Optimized solution to the same problem (faster):
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cctype>

#include<algorithm>

#define int long long

using namespace std;

inline int read(){

	int x=0,w=0;char c=getchar();

	while(!isdigit(c))w|=c=='-',c=getchar();

	while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();

	return w?-x:x;

}

namespace star{

	const int maxn=1e5,mod=1e9+7;

	int h,w,a,b;

	inline int fpow(int a,int b){

		int ans=1;

		for(;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;

		return ans;

	}

	int mul[maxn*2+10],inv[maxn*2+10];

	inline void pre(int n){

		mul[0]=inv[0]=1;

		for(int i=1;i<=n;i++)

			mul[i]=mul[i-1]*i%mod;

		inv[n]=fpow(mul[n],mod-2);

		for(int i=n-1;i;i--)

			inv[i]=inv[i+1]*(i+1)%mod;

	}	

	inline int C(int n,int m){

		return mul[n]*inv[n-m]%mod*inv[m]%mod;

	}

	inline void work(){

		h=read(),w=read(),a=read(),b=read();

		pre(h+w);

		int ans=0;

		for(int i=b+1;i<=w;i++)

			ans=(ans+C(h-a+i-2,i-1)*C(w+a-i-1,a-1)%mod)%mod;

		printf("%lld\n",ans);

	}

}

signed main(){

	star::work();

	return 0;

}

// Fastest known solution for this problem: