/**
 *  author: MOOONI
 *  hackers are welcome!
**/
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;
typedef pair<ll, str> pllstr;
typedef pair<str, ll> pstrll;
typedef pair<str, str> pstr;
typedef pair<db, db> pdb;

typedef vector<ll> vll;
typedef vector<db> vdb;
typedef vector<bool> vb;
typedef vector<char> vc;
typedef vector<str> vstr;
typedef vector<vector<ll>> vvll;
typedef vector<vector<string>> vvstr;
typedef vector<vector<db>> vvdb;
typedef vector<vector<bool>> vvb;
typedef vector<vector<char>> vvc;
typedef vector<vector<pll>> vvpll;
typedef vector<vector<pllstr>> vvpllstr;
typedef vector<vector<pstrll>> vvpstrll;
typedef vector<vector<pstr>> vvpstr;
typedef vector<vector<pdb>> vvpdb;
typedef map<ll, ll> mll;
typedef map<ll, str> mllstr;
typedef map<str, ll> mstrll;
typedef map<str, str> mstr;
typedef map<double, double> md;

#define ff first
#define ss second
#define sz(x) (int) x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define rsz resize
#define ins insert
#define fr front 
#define bc back
#define pf push_front
#define pb push_back
#define eb emplace back
#define lb lower_bound
#define ub upper_bound

#define FOR(i, a, b) for (int i = a; i <= b; i++) 
#define ROF(i, a, b) for (int i = b; i >= a; i--)
#define trav(a, x) for (auto &a : x)
#define pcount __builtin_popcount
#define ctz __builtin_ctz
#define clz __builtin_clz
#define gcd __gcd

mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());

#define ts to_string
str ts(const str &s) { return '"' + s + '"'; }
str ts(const char *s) { return ts((str) s); }
str ts(bool b) { return (b ? "true" : "false"); }
str ts(vb v) {
  bool sep = false;
  str res = "";
  res += '{';
  FOR (i, 0, sz(v) - 1) {
    if (sep) { res += ", "; }
    res += ts(v[i]);
    sep = true;
  }
  res += '}';
  return res;
}
template <size_t N> 
str ts(bitset<N> v) {
  str res = "";
  FOR(i, 0, N - 1) {
    res += (char) ('0' + v[i]);
  }
  return res;
}

template <typename A> 
str ts(A v) {
  bool sep = false;
  str res = "";
  res += '{';
  trav(x, v) {
    if (sep) { res += ", "; }
    res += ts(x);
    sep = true;
  }
  res += '}';
  return res;
}

template <typename A, typename B> 
str ts(pair<A, B> p) { return "(" + ts(p.ff) + ", " + ts(p.ss) + ")"; }
template <typename A, typename B, typename C>
str ts(tuple<A, B, C> p) {
  return "(" + ts(get<0>(p)) + ", " + ts(get<1>(p)) + ", " + ts(get<2>(p)) + ")";
}

void dbg() { cerr << endl; }
template <typename H, typename... T> 
void dbg(H h, T... t) { cerr << " " << ts(h); dbg(t...); }

#ifdef LOCAL
#define DBG(...) cerr << "[" << #__VA_ARGS__ << "]:", dbg(__VA_ARGS__)
#else
#define debug(...) 42
#endif

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  ll a, b, c, d;
  cin >> a >> b >> c >> d;
  ll step = 0;
  while (true) {
    if (step % 2 == 0) {
      c -= b;
      if (c <= 0) {
        cout << "Yes" << '\n';
        return (0);
      }
    } else {
      a -= d;
      if (a <= 0) {
        cout << "No" << '\n';
        return 0;
      }
    }
    step ^= 1;
  }
  return 0;
}

Measured memory_bytes: 3652