#include <bits/stdc++.h>
using namespace std;

int h, w, a, b, ans;

void dfs(int i, int mask, int a, int b) {
	if (i == h * w) {
		return (void)ans++;
	}
	if (mask & (1 << i)) return dfs(i + 1, mask, a, b);
	if (b) {
		dfs(i + 1, mask | (1 << i), a, b - 1);
	}
	if (a) {
		if (i % w != (w - 1) && ~mask & (1 << (i + 1))) dfs(i + 1, mask | (1 << i) | (1 << (i + 1)), a - 1, b);
		if (i < (h - 1) * w) dfs(i + 1, mask | (1 << i) | (1 << (i + w)), a - 1, b);
	}
}

int main() {
	cin >> h >> w >> a >> b;
	dfs(0, 0, a, b);
	cout << ans << '\n';
	return 0;
}
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;++i)
#define all(x) (x).begin(),(x).end()
using namespace std;
constexpr int INF = 1e9, MOD = 1e9 + 7;
constexpr int64_t LINF = 5e18, LMOD = 998244353;
// #include <atcoder/all>
// using namespace atcoder;
// const int dy[]={0,-1,0,1,1,-1,-1,1};
// const int dx[]={1,0,-1,0,1,1,-1,-1};

int main() {
	int v, t, s, d; cin >> v >> t >> s >> d;
	int l = v * t;
	int r = v * s;
	if(d < l or r < d) {
		cout << "Yes" << '\n';
	} else {
		cout << "No" << '\n';
	}
	return 0;
}
