In some game by Playrix it takes t minutes for an oven to bake k carrot cakes, all cakes are ready at the same moment t minutes after they started baking. Arkady needs at least n cakes to complete a task, but he currently don't have any. However, he has infinitely many ingredients and one oven. Moreover, Arkady can build one more similar oven to make the process faster, it would take d minutes to build the oven. While the new oven is being built, only old one can bake cakes, after the new oven is built, both ovens bake simultaneously. Arkady can't build more than one oven.Determine if it is reasonable to build the second oven, i.e. will it decrease the minimum time needed to get n cakes or not. If the time needed with the second oven is the same as with one oven, then it is unreasonable.

The only line contains four integers n, t, k, d (1 ≤ n, t, k, d ≤ 1 000) — the number of cakes needed, the time needed for one oven to bake k cakes, the number of cakes baked at the same time, the time needed to build the second oven.

If it is reasonable to build the second oven, print "YES". Otherwise print "NO".

NoteIn the first example it is possible to get 8 cakes in 12 minutes using one oven. The second oven can be built in 5 minutes, so after 6 minutes the first oven bakes 4 cakes, the second oven bakes 4 more ovens after 11 minutes. Thus, it is reasonable to build the second oven. In the second example it doesn't matter whether we build the second oven or not, thus it takes 12 minutes to bake 8 cakes in both cases. Thus, it is unreasonable to build the second oven.In the third example the first oven bakes 11 cakes in 3 minutes, that is more than needed 10. It is unreasonable to build the second oven, because its building takes more time that baking the needed number of cakes using the only oven.

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int numberOfCakes;
	int timeToCookCapacity;
	int capacity;
	int timeToBuild;
	int timeWithout;
	int totalTime = 0;
	cin >> numberOfCakes >> timeToCookCapacity >> capacity >> timeToBuild;
	if (capacity >= numberOfCakes)                                                // if the capacity of the first oven can handle all the cacapacityes so we don't need another oven
		cout << "NO";
	else {

		timeWithout = ceil(double(numberOfCakes) / capacity) *  timeToCookCapacity;             // number of cacapacityes / oven capacity , ceil because oven can handle number of cacapacityes less than capacity
		do
		{
			totalTime += timeToCookCapacity;                                  // time it tacapacityes until the second oven is built
			numberOfCakes -= capacity;                                    // subtract the coocapacityed cacapacitye
		} while (totalTime < timeToBuild);

		if (numberOfCakes <= 0)                                // if n is minus or zero , it means that  all cacapacityes are coocapacityed before the second oven is build , possibly in the last buccapacityet the second oven wasn't built
			numberOfCakes = 0;
		else
			totalTime = timeToBuild;                           // if the second oven is built after any buccapacityet of cacapacityes is inserted into the first oven , put it in the second oven because the second oven is built before the first oven finishes coocapacitying cacapacityes , don't wait the first oven to finish

		totalTime += timeToCookCapacity * ( ceil( double(numberOfCakes) / (2 * capacity) ) );               // this sentence has no effect if  all cacapacityes are coocapacityed before the second oven is built , but it adds the remaining time for coocapacitying the rest of cacapacityes  of course divided on each oven  n / the capacity while the capacity is doubled then n / (2 * capacity)
		if (totalTime < timeWithout)                                 // in case of n = 0 before the second is built then the time is the time  only for the first oven to coocapacity all the cacapacityes
			cout << "YES";                                    // in case of n > 0 it will add the time for building the oven plus the remaining time  for coocapacitying the remaining cacapacityes there is an intersection time that happens while the first oven coocapacitys and the second oven is build and coocapacitys  they didn't start at the same time so we tacapacitye the smalles that is the building time
		else
			cout << "NO";
	}
	return 0;
}

#include<iostream>
#include<string>
#include<cmath>
#include<math.h>;
using namespace std;
int max(int a, int b) {
	if (a > b) return a; return b;
}
int main() {
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int t1 = 0, t2 = d;
	float g = ceil((float)n / k);
	for (int i = 0; i < g; i++) {
		if (t1 <= t2) t1 += t;
		else t2 += t;
	}
	if (max(t1, t2) < g*t) cout << "YES";
	else cout << "NO";

}

#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<cstring>
#include<cstdio>
#include<climits>
#include<cmath>
#include<vector>
#include <bitset>
#include<algorithm>
#include <queue>
#include<map>
#define inf 9999999;
using namespace std;

/*start:2017/5/13 09:10*/
/*end:2017/5/10 13:58*/

int n, t, k, d, ans1, ans2, a;
int main()
{
	cin >> n >> t >> k >> d;
	if (n%k != 0)
	{
		a = n / k + 1;
	}
	else
	{
		a = n / k;
	}
	ans1 = a*t;
	if (d <= t)
	{
		if (a % 2 == 0)
		{
			ans2 = a / 2 * t + d;
		}
		else
		{
			ans2 = a / 2 * t+t;
		}
	}
	else
	{
		ans2 = d / t*t;
		n -= d / t*k;
		d = d%t;
		if (n%k != 0)
		{
			a = n / k + 1;
		}
		else
		{
			a = n / k;
		}
		if (a % 2 == 0)
		{
			ans2+= a / 2 * t + d;
		}
		else
		{
			ans2+= a / 2 * t+t;
		}
	}
	if (ans1 <= ans2)
	{
		cout << "NO" << endl;
	}
	else
	{
		cout << "YES" << endl;
	}
}

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

int main(){
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    int T1 =  t*( (n/k) + (n%k!=0));
    int T2 =  d + t*(( n-(d/t)*k )/(2*k) +(( n-(d/t)*k )%(2*k)!=0));
    if(T2 < T1)cout<<"YES";
    else cout<<"NO";
    return 0;
}

#include <iostream>
using namespace std;
int main() {
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    int i=1;
    int j=(n+k-1)/k,b=1;
    while(n>0)
    {

        if(i%t==0)
        {
            n-=k;
        }
        if(i>d && b%t==0 && n>0)
        {
            b=0;
            n-=k;
        }
        if(n<=0) break;
        i++;
        b++;
    }

    if(i<j*t) cout << "YES" << endl;
    else cout << "NO" << endl;

    return 0;
}

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
int main()
{
  double cockno,timen,cockpert,timeb;
  cin>>cockno>>timen>>cockpert>>timeb;
  int times = (cockno/cockpert)+.99999;
  if((times*timen)>timen+timeb)
  cout<<"YES"<<endl;
  else
  cout<<"NO"<<endl;
      return 0;
}

#include<iostream>
using namespace std;
int main()
{
    float num;
    int t,n,d;
    cin>>num>>t>>n>>d;
    int a=(num/n);
    if((num/n)>a)
        a+=1;
    int y=d,x=0;
    for(int i=0;i<a;i++)
    {
        if(x<=y)
            x+=t;
        else
            y+=t;
    }
    if(max(x,y)<(t*a))
        cout<<"YES";
    else
        cout<<"NO";

    return 0;
}

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{  int n,t,k,d,h;
cin>>n>>t>>k>>d;
   if(n%k==0)h=(n/k)*t;
   else h=((n/k)+1)*t;
   if(k>n)
    cout<<"NO";
    else if(h<=d+t)
        cout<<"NO";
   else
    cout<<"YES";

    return 0;
}

#pragma GCC optimize ("-O3")
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define f(i,x,n) for(ll i=x;i<n;i++)
#define pb push_back
#define mp make_pair
#define debug(x) cout<<x<<"\n";
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define MOD 1000000007
ll n,a,b,c,k,d,m,x,y;
string s;
ll ans;
int  main()
{

   int  t;
    t=1;
    //cin>>t;
    while(t--){
     cin>>a>>b>>c>>d;
     int temp=a/c;
     if(a%c)
     temp++;
     temp=temp*b;
     int temp1=d;
     a-=(d/b)*c;
     c=c*2;
     int temp2=a/c;
     if(a%c)
     temp2++;
     temp1+=temp2*b;
     if(temp<=temp1)
     cout<<"NO";
     else
     cout<<"YES";

return 0; }}

#include <iostream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <map>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <algorithm>

using namespace std;

int N,T,K,D;

int main()
{
	cin>>N>>T>>K>>D;
	if(N-(1+D/T)*K>0)
		cout<<"YES\n";
	else cout<<"NO\n";
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

int main() {

	int n, t, k, d;

	cin >> n >> t >> k >> d;

	int tmp = t * ( n / k + ( n % k > 0 ) );

	int tmp1 = d + t;

	if ( tmp1 < tmp ) puts("YES");

	else puts("NO");

	return 0;

}

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

int main()
{
    int n,t,k,d,c=0;
    cin>>n>>t>>k>>d;
    while(c<=d)
    {
        n-=k;
        c+=t;
    }
    if(n>0)
    cout<<"YES";
    else
    cout<<"NO";
    return 0;
}

#include<iostream>
#include <cmath>
using namespace std;
int main()
{
    int cakes,cakesOnOven,time,timeOfBild;
    cin>>cakes>>time>>cakesOnOven>>timeOfBild;
    double times=ceil(double(cakes)/cakesOnOven);
    if((times*time)>(timeOfBild+time))
    cout<<"Yes"<<endl;
    else
    {
        cout<<"No"<<endl;
    }

}

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int n, t, k, d, t1, t2, ans1, ans2;;
	cin >> n >> t >> k >> d;
	t1 = 0; t2 = d;
	ans1 = (n + k - 1) / k * t;
	int i = 0;
	while (n>0)
	{
		i++;
		if (i%t==0)
		{
			n -= k;
		}
		t1++;
		if (i>d && (i-d)%t==0)
		{
			n -= k;
		}
		if (i>d)
		{
			t2++;
		}
	}
	ans2 = max(t2,t1);
	if (ans2<ans1)
	{
		cout << "YES";
	}
	else
	{
		cout << "NO";
	}
}

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

/*code by freedom_db7*/

#define flag printf("FLAG\n");
#define nl printf("\n");
#define pi pair <int,int>
#define RI(X) scanf("%d", &(X))
#define RII(X, Y) scanf("%d%d", &(X), &(Y))
#define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z))
#define DRI(X) int (X); scanf("%d", &X)
#define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
#define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)
/*strings*/
#define rssc(c) scanf("%c",&c), c!=10, c!=32 //read simple string, char to char
#define RS(X) scanf("%s", (X))

int main()
{
	#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
	#endif
	cin.tie(NULL);
	cout.tie(NULL);

	/*Start*/

	DRIII(n,t,k);
	DRI(d);

	// double a= (double)n/k;
	// cout<<a<<endl;
	// cout<<ceil(a)<<endl;
	 int steps=(n+k-1)/(k);
	 int tt=steps*t;

	int timer1=0, timer2=0, i=0;
	bool disp_second_oven=false;

	while (1)
	{
		i++;

		timer1++;
		if (disp_second_oven) timer2++;

		if (timer1==t) n-=k, timer1=0;
		if (n<=0) break;

		if (i==d) disp_second_oven=true;
		if (disp_second_oven)
			if (timer2==t) n-=k, timer2=0;

		if (n<=0) break;
	}

	//printf("%d %d %d\n", tt,j, i);

	if (tt<=i)
		printf("NO\n");
	else
		printf("YES\n");

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
main()
{
	int n,t,k,d;
	cin>>n>>t>>k>>d;

	int c=0;
	while(c<=d)
	{
	    n-=k;
	    c+=t;

	}
	if(n>0)
	  cout<<"YES";
	else
	 cout<<"NO\n";

}

#include <stdio.h>
#include <math.h>
using namespace std;
void main()
{
	int n, t, k, d;
	scanf("%d%d%d%d", &n, &t, &k, &d);
	int totalTime = ceil(double(n)/ k)*t;
	if (totalTime-t > d  )
		printf("YES");
	else
		printf("NO");

}

#include<iostream>
using namespace std;
int main()
{
	int flag=0,n,t,k,d;
	cin>>n>>t>>k>>d;
	if(k<n)
	{
		if(t<=d)
		{
			if((n-(d/t)*k)>k)
			flag=1;
			else
			flag=0;
		}
		else
		flag=1;
	}
	if(flag==0)
	cout<<"NO"<<endl;
	else
	cout<<"YES"<<endl;
	return 0;
}

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int n;//number of cakes needed
    int t;//time needed for one oven to bake k cakes
    int k;// k cakes finished in t time
    int d;//time needed to build second oven
    cin>>n>>t>>k>>d;
    int cycle=0;
    while(n>0){
        n-=k;
        cycle++;
    }
    if(cycle*t>d+t){
        cout<<"YES";
    }
    else{
        cout<<"NO";
    }
    //cout<<cycle*t;
}

#include <iostream>
#include <cmath>

using namespace std;
int main() {
  float n,t,k,d;

  cin>>n>>t>>k>>d;
if(k>n)
cout<<"NO";
else
{

//if(t*ceil(n/k)>=(d+ceil(n/k-d/k)))
if((ceil(n/k)*t-d>=0&&ceil(n/k)>1)&&ceil(n/k)*t>t+d)
cout<<"YES";

else cout<<"NO";

}

}

#include <iostream>

using namespace std;

int main()
{
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    if(b==d&&2*c>=a)
        {cout<<"NO";
    return 0;}
    else if(c>=a)
    {cout<<"NO";
    return 0;
    }
    else if(((d/b)*c)+c>=a)
        {cout<<"NO";
    return 0;}
    cout<<"YES";
    return 0;
}

#include <iostream>
#include<vector>
#include<bits/stdtr1c++.h>
using namespace std;

int main()
{
  int n , b ,d , t,i=1,total1 = 0,total2=0,reminder=0;
  bool amr = false;
  cin>>n>>b>>d>>t;
  if(n<d) {cout<<"NO"; return 0 ;}
  reminder=n%d;
  if(reminder)
   total2+=((n/d)+1)*b;
  else  total2+=(n/d)*b;
  while(true){
    if(i%b==0) total1+=d;
    if((i-t)%b==0&&(i-t)>0){ total1+=d; amr = true;}
    if(total1>= n)break;
    i++;
  }
  if(i<total2)cout<<"YES";
  else cout<<"NO";
}

#include <iostream>
#include <cstdlib>
#include <bits/stdc++.h>
#include <math.h>

using namespace std;
int gcd(int a,int b){
    if(b==0){
        return a;
    } else {
        return gcd(b,a%b);
    }
}

int main(){
    int n,t,k,d;
    int timeForFirstOven = 0,timeForSecondOven = 0,bakedCakes = 0;
    cin>>n>>t>>k>>d;
    int ovenTwoOutputTime =  d + t;
    int ovenOneOutputTime = t;
    timeForFirstOven = ceil((double)n/k) * t;

    for(int time = 1;true;time++){
        if(time==ovenOneOutputTime){
            bakedCakes += k;
            ovenOneOutputTime += t;
             if(bakedCakes>=n){
                 timeForSecondOven = time;
                break;
             }
        }
        if(time==ovenTwoOutputTime){
            bakedCakes+=k;
            ovenTwoOutputTime += t;
             if(bakedCakes>=n){
                 timeForSecondOven = time;
                 break;
             }
        }

    }

    if(timeForFirstOven>timeForSecondOven){
        cout<<"YES";
    } else cout<<"NO";
    return 0;
}

#include <iostream>
#include <vector>
using namespace std;
int main() {
	int n, t, k, d,sum=0;
	cin >> n >> t >> k >> d;
	int i = 1;
	while (sum < n) {

		sum = k * i;

			i++;
	}
	sum = (sum * t) / k;

	if (d + t < sum)
		cout << "YES";
	else
		cout << "NO";
}

#include <vector>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <string>
#include <iostream>
using namespace std;

int main()
{
	int n;
	cin >> n;

	int t;
	cin >> t;

	int k;
	cin >> k;

	int d;
	cin >> d;

	int o1 = 0, o2 = d , g = (n+k-1)/k;

	for (int i = 0; i < g; i++)
	{
		if (o1 <= o2)
		{
			o1 += t;
		}
		else
		{
			o2 += t;
		}
	}

	if (max(o1,o2) < g * t)
	{
		cout << "YES" << endl;
	}
	else
	{
		cout << "NO" << endl;
	}

	//system("pause");
}

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

int main() {

    int n, t, k, d;
    cin >> n >> t >> k >> d;

    int t1 = 0;

    while ( k*(t1/t) < n) t1+=t;

    int t2 = d;
    int count1 = k*(d/t);
    int count2 = 0;

    while (t2 < t1 && (count1 + count2) < n) {
        count1 = k*(t2/t);
        count2 = k*((t2 - d)/t);
        if (count1 + count2 >= n) break;
        t2++;
    }

    if (t2 < t1) {
        cout << "YES";
    } else cout << "NO";

    return 0;
}

#include<bits/stdc++.h>
#include<cstring>
#include<cmath>

#include <iostream>
using namespace std;
int main()
{
    long long n,t,k,d;
    cin>>n>>t>>k>>d;
    long long x=ceil((double)d/t);
    n=n-(x*k);
    if(n>0) {
            if(d%t!=0)
                cout<<"YES"<<endl;
            else{
                if(n>k) cout<<"YES"<<endl;
                else cout<<"NO"<<endl;
            }
    }
    else{
        cout<<"NO"<<endl;
    }
}

/*
 * Author: wizplus
 * TIme: 2020-08-20 21:59:39
 */

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, t, k, d;
  cin >> n >> t >> k >> d;
  int t1 = t * int(ceil((float) n / k));
  int i =1, cake=0;
  for(;i<=t1; ++i){
    if(i%t==0)
      cake += k;
    if(cake>=n)
      break;
    if(i>d){
      int j = i-d;
      if(j%t==0)
        cake += k;
      if(cake>=n)
        break;
    }
  }
  if(i<t1)
    cout<<"YES";
  else
    cout<<"NO";

  return 0;
}

/**بسم الله الرحمن الرحيم*/
#include <iostream>
using namespace std;
void fast()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}
int main()
{
    fast();
    int n, t, k, d,ans=0;
    cin>>n>>t>>k>>d;
    ans=(n+k-1)/k*t;
    ans-=d;
    (ans>t)?cout<<"YES":cout<<"NO";
    return 0;
}

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

int main ()
{
    ios::sync_with_stdio(0) , cin.tie(0) , cout.tie(0);

    int n , t, k , d;
    cin >> n >> t >> k >> d ;
    if(((d/t)+1)*k < n)
    {
        cout <<"YES";
    }
    else
    {
        cout <<"NO";
    }

    return 0 ;
}

#include <bits/stdc++.h>

using namespace std;

int main () {
#ifndef ONLINE_JUDGE
    freopen("in.in", "r", stdin);
    freopen("out.out","w",stdout);
#endif
    //ios_base::sync_with_stdio(0); cin.tie(0);
    int n, t, k, d;
    cin>>n>>t>>k>>d;
    int sum=0, i;
    for (i=1; ; i++) {
    	if (i%t==0) sum+=k;
    	if (sum>=n) break;
    	if (i>d and (i-d) % t == 0) sum+=k;
    	if (sum>=n) break;
	}

	cerr<< i << ' ' << t * ((n+k-1) / k)<<endl;
	if (i>=t*((n+k-1)/k)) return puts("NO");
	puts("YES");

    return 0;
}

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define pi acos(-1.0)
#define rf freopen("in.txt", "r", stdin);
#define ld long double
#define all(v) v.begin(),v.end()
#define pb push_back
#define ff first
#define ss second
#define ln length()
#define rep(i,a, n) for(int i=a;i<=n;i++)
#define repp(i,a,b) for(int i=a;i<b;i++)
#define s(n) scanf("%d",&n);
#define sl(n) scanf("%lld",&n);
#define sld(n) scanf("%lf", &n);

using namespace std;

int main() {
    ll n, t1, k, t2;
    sl(n); sl(t1); sl(k); sl(t2);
    ll x = (n - 1) / k + 1;
    x--;
    if (x * t1 > t2) {
        cout << "YES\n";
    } else {
        cout << "NO\n";
    }
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,t,k,d,t1,t2,cakes = 0,c2 = 0;
    cin>>n>>t>>k>>d;
    for (int l = 1; c2 < n ; ++l)
    {
        if (l % t == 0)
        {
            c2 += k;
        }
        t1 = l;
    }

    for (int i = 1,j = 0; cakes < n; ++i)
    {
        if (i % t == 0)
        {
            cakes += k;
        }
        if (i > d)
        {
            j++;
            if(j % t == 0)
            {
                cakes += k;
            }
        }
        t2 = i;
    }
    if (t2 < t1)
        cout<<"YES";
    else
        cout<<"NO";

    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int n;
    int t;
    int k;
    int d;
	int q = 0;
    int sum = 0;
    int time = 0;

    cin >> n >> t >> k >> d;
	if(d < t)
    {
        sum += k;
        if(n - sum > 0)
        {
            cout << "YES" << endl;
        }
        else
        {
            cout << "NO" << endl;
        }
        return 0;
    }
    else
    {
        while(time < d)
        {
            time += t;
            sum += k;
            if(sum >= n)
            {
				q = 1;
                break;
            }
        }
    }
	if(time > d && q != 1)
	{
		cout << "YES" << endl;
	}
    else if(n - sum <= k)
    {
        cout << "NO" << endl;
    }
    else
    {
        cout << "YES" << endl;
    }

    return 0;
}

#include<bits/stdc++.h>
typedef long long ll;
int const N = 1e6+7;
using namespace std;
ll n , k , x , ans = INT_MAX , p  , y , z , mi , mx , i , j ,sum ,t,m ,d;
ll arr[N];
string st,ft,pt="";
char tt;
int main(){

   cin>>n>>t>>k>>d;
   double time = (n - d*k/t)/k;
   if(n-(d/t)*k > k) cout<<"YES";
   else cout<<"NO";
   cout<<endl;
}

#include <iostream>
#include <math.h>
using namespace std;

int main(){
    int n, t, k, d;
    cin >> n >>t >> k >> d;

    int no_oven_min = ceil(n/k)*t;

    double made = ((double)k/t)*d; // 이미 만든 개수
    double remain = n - made; // 두번째 오븐이 만들어졌을때 만들어야하하는것의 갯수

    int edge = ((d/t) + (d%t!=0 ? 1 : 0));

    int going_to_made = edge*k;
    // cout << going_to_made << " " << edge << endl;
    if(going_to_made >= n){
        cout << "NO" << endl;
    }else{
        if(d%t==0){
            if(n-going_to_made > k){
                cout << "YES"<< endl;
            }else{
                cout << "NO"<< endl;
            }
        }else{
            cout << "YES"<< endl;
        }
    }

    // bool need_new_oven = ceil(k/t)*d<n;

    // if(!need_new_oven || remain<=k){
    //     cout << "NO" << endl;
    // }else{
    //     cout << "YES" << endl;
    // }
}

#include <iostream>

using namespace std;

int main()
{
    int n,t,k,d,m1=0,m2=0,tc1=0,tc2=0;
    cin>>n>>t>>k>>d;
    do{
        m1=m1+k;
        tc1=tc1+t;
    }while(m1<n);
    do{
        tc2++;
        if(tc2%t==0){
            m2=m2+k;
        }
        if((tc2-d)%t==0&&(tc2-d)>0){
            m2=m2+k;
        }
    }while(m2<n);
    if(tc1<=tc2){
        cout<<"NO";
    }else{cout<<"YES";}
    return 0;
}

#include<iostream>
using namespace std;

int n, t, k, d;

int main()
{
    scanf("%d %d %d %d", &n, &t, &k, &d);
    int c = 0;
    int ans1, ans2;
    for(int i = 1 ; ; i++)
    {
        if(i % t == 0)
        {
            c += k;
        }
        if(c >= n)
        {
            ans1 = i;
            break;
        }
    }
    int sec = 0;
    c = 0;
    for(int i = 1 ; ; i++)
    {
        if(i % t == 0)
            c += k;
        if(i == d)
            sec = i;
        else if(sec)
        {
            if((i - sec) % t == 0)
                c += k;
        }
        if(c >= n)
        {
            ans2 = i;
            break;
        }
    }
    if(ans2 < ans1)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

#include <iostream>
int main(){
int n,t,k,d;
std::cin>>n>>t>>k>>d;
std::cout<<((n-1)/k*t>d?"YES":"NO");
}

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{  int n,t,k,d,h;
cin>>n>>t>>k>>d;
   if(n%k==0)h=(n/k)*t;
   else h=((n/k)+1)*t;
   if(k>n)
    cout<<"NO";
    else if(h<=d+t)
        cout<<"NO";
   else
    cout<<"YES";

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    int j=(n+k-1)/k;

    if((d+t)<j*t) cout << "YES" << endl;
    else
        cout << "NO" << endl;

    return 0;
}

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

int main(){
	int n,t,k,d;
	cin >> n >> t >> k >> d;
	int time_extra=0,time_not_extra=0;
	int temp=n;
	while(temp>0){
		temp-=k;
		time_not_extra+=t;
	}
	temp=n;
	int built=0;
	while(temp>0){
		time_extra++;
		if(time_extra%t==0){
			temp=temp-k;
		}
		if(time_extra==d){
			built=1;
		}
		if((time_extra-d)%t==0 && (time_extra-d)>0){
			temp-=k;
		}
	}
	if(time_extra<time_not_extra){
		printf("YES\n");
	}
	else{
		printf("NO\n");
	}
}

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

int main()
{
	int n, t, k, d, x, y, z;
	cin >> n >> t >> k >> d;
	x = t, y = k, z = t + d;
	if (k >= n)
    cout << "NO";
    else
    {
        while (true)
        {
            if (t <= z)
            {
                t += x;
                k += y;
                if (k >= n && t <= z)
                {
                    cout << "NO";
                    break;
                }
            }
            else
            {
                cout << "YES";
                break;
            }
        }
    }
	return 0;
}

#include<iostream>

using namespace std;
int main() {
	int  n, t, k, d, t1 = 0, t2 = 0;
	cin >> n >> t >> k >> d;
	int n1 = n,n2=n;
	while (true) {
		t1 += t;
		n1 -= k;
		if (n1 <= 0)break;
	}
	while (true) {
		t2 += t;
		n1 -= (k*2);
		if (n1 <= 0)break;
	}
	if (t1 <= (t2 + d))cout << "NO";
	else  cout << "yes";

}

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll maxn = 5e5;

ll n, t, k, d, ans = 0, mn = 0;
int main(){
  cin >> n >> t >> k >> d;
  if(k >= n){
    cout << "NO";
    return 0;
  }
  ans = t * (n / k);
  if(n % k != 0){
    ans += t;
  }
  ll g = k;
  if(d != t){
    ll mn1 = min(d, t), mn2 = max(d, t), q = 0;
    while(g < n){
      g += k;
      mn1 += t;
      if(g >= n){
        q = 1;
        break;
      }
      if(mn1 >= mn2){
        g += k;
        mn2 += t;
        if(g >= n){
          q = 2;
          break;
        }
      }
    }
    if(q == 1){
      mn = mn1;
    }
    else {
      mn = mn2;
    }
  }
  else {
    mn = d;
    while(g < n){
      mn += t;
      g += 2 * k;
    }
  }
  if(mn < ans){
    cout << "YES";
  }
  else {
    cout << "NO";
  }
}

#include <iostream>

using namespace std;

int main()
{

	int n, t, k, d;
	cin >> n >> t >> k >> d;

	int r = (d + t) / t;

	if (r*k<n)
		cout << "YES\n";
	else
		cout << "NO\n";

	return 0;
}

#include <bits/stdc++.h>

#define inf 0x3f3f3f3f

#define MOD 1000000007

#define pb push_back

#define sq(x) ((x)*(x))

#define x first

#define y second

#define eps 1e-8

#define bpt(x) (__builtin_popcount(x))

#define bptl(x) (__builtin_popcountll(x))

#define bit(x, y) (((x)>>(y))&1)

#define bclz(x) (__builtin_clz(x))

#define bclzl(x) (__builtin_clzll(x))

#define bctz(x) (__builtin_ctz(x))

#define bctzl(x) (__builtin_ctzll(x))

using namespace std;

typedef long long INT;

typedef vector<int> VI;

typedef pair<int, int> pii;

typedef pair<pii, int> pi3;

typedef double DO;

template<typename T, typename U> inline void smin(T &a, U b) {if (a>b) a=b;}

template<typename T, typename U> inline void smax(T &a, U b) {if (a<b) a=b;}

int main() {

	int n,t,k,d,i,j;

	cin>>n>>t>>k>>d;

	int ans=(n+k-1)/k*t;

	int tmp=0;

	for(i=1; i<=1000111; i++){

		if(i%t==0) n-=k;

		if(n<=0) break;

		if(i>d && (i-d)%t==0) n-=k;

		if(n<=0) break;

	}

	if(ans>i) puts("YES");

	else puts("NO");

	return 0;

}

#include<bits/stdc++.h>
using namespace std;
#define ll  long long
int main(){
int n,t,flag=0,k,d,m1=0,m2;
cin>>n>>t>>k>>d;
m2=d;
//cout<<m2<<endl;
m1=t*((n+k-1)/k);
n=n-k*((d+t-1)/t);
//cout<<n<<endl;
if(max(d,t)%min(d,t)!=0){
if(n<=0)
{
    if(d<t)
    m2+=t-d;
    else{
           int x=d/t;
        m2+=(x+1)*t-d;
}
}
while(n>0){
flag=0;
n=n-k;
m2+=t;
if(n>0)
{
n=n-k;
flag=1;
}
}
if(flag==1)
{
    if(d<t)
    m2+=t-d;
    else{
           int x=d/t;
        m2+=(x+1)*t-d;

}
}
}

else
{
if(n<=0)
{
    if(d<t)
    m2+=t-d;
    else{
           int x=d/t;
        m2+=(x+1)*t-d;
}
}

k=2*k;
m2+=t*((n+k-1)/k);
}
//cout<<m2<<" "<<m1<<endl;
 if(m2<m1)
    cout<<"YES";
else
    cout<<"NO";

}

#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <set>
#include <list>
#include <queue>
#include <deque>
#include <map>
#define _CRT_SECURE_NO_WARNINGS
#define Fast ios_base::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL);
#define FOR(i, a) for (int i=0; i<a; i++)
#define FORd(i,a) for (int i = (a)-1; i >= 0; i--)
#define all(v) ((v).begin()),((v).end())
#define sz(v) ((int)((v).size()))
#define fx(n)           fixed<<setprecision(n)
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef vector<long long> vi;
typedef pair<long long, long long> pii;
int main()
{
Fast;
double a,b,c,d,x,k,m;
cin>>a>>b>>c>>d;
if (c>a)
return cout<<"NO",0;
else
x=ceil(a/c);
k=x*b;
k-=d;
if (k>b)
cout<<"YES";
else
cout<<"NO";
return 0;
}

#include <iostream>
#include <cmath>

using namespace std;
int main() {
  float n,t,k,d;

  cin>>n>>t>>k>>d;
if(k>n)
cout<<"NO";
else
{

if((ceil(n/k)*t-d>=0&&ceil(n/k)>1)&&ceil(n/k)*t>t+d)
cout<<"YES";

else cout<<"NO";

}

}

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

typedef long long int LL;

int main(){

    int n, t, k, d;

    cin >> n >> t >> k >> d;

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

    int ans1 = 0;
    int ans2 = 0;
    int one = 0;
    for( int i = 1; i <= 2000000; i++ ){
        if( i % t == 0 ){
            one += k;
        }
        if( one >= n ){
            ans1 = i;
            break;
        }
    }
    int two = 0;
    for( int i = 1; i <= 2000000; i++ ){
        if( i % t == 0 ){
            two += k;
        }
        if( i % (t+d) == 0 ){
            two += k;
        }
        if( two >= n ){
            ans2 = i;
            break;
        }
    }
    if( ans2 < ans1 ){
        cout << "YES\n";
    }
    else cout  << "NO\n";

	return 0;
}

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

int main()
{
    int n,t,k,d,c=0;
    cin>>n>>t>>k>>d;
    while(c<=d)
    {
        n-=k;
        c+=t;
    }
    if(n>0)
    cout<<"YES";
    else
    cout<<"NO";
    return 0;
}

#include <iostream>
#include <string>
#include<fstream>
#include <stack>
#include <cmath>
using namespace std;
int n,t,k,d;

int main(){
    cin >> n>>t>>k>>d;
    double number = ceil((double)n/k);
    double x = (double)d/t;
    if(number-1>x)
        cout<<"YES";
    else cout<<"NO";
    return 0;
}

#include<iostream>
#include<cmath>
using namespace std;
int main()
{

int n,t,k,d;
cin>>n>>t>>k>>d;
 if(k>=n)
 {
     cout<<"NO";
     return 0;
 }
 float  y=float(n)/k;
float x=ceil(y);
x*=t;
x-=d;
if(x>t)
    cout<<"YES";
else
    cout<<"NO";
return 0;
}

#include <bits/stdc++.h>

using namespace std;
int n,k,t,d,d1,d2;
int main()
{
   //freopen("tst.inp","r",stdin);
   cin >> n >> t >> k >> d;
   d1 = n/k;
   d1 += (n % k?1:0);
   d1*=t;
   // if (t>d) d2 = (n*t - d*k)/(2*k) + d;
    for (int i=100000;i>=1;i--){
        int tmp = (int)(i/t)*k + (int)((i-d)/t)*k;
        if (tmp>=n) d2=i;
        }
    if (k>=n) cout << "NO";
    else if (d2>=d1) cout << "NO";
           else cout << "YES";
    return 0;
}

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

void solve()
{
  int n, t, k, d;
  cin >> n >> t >> k >> d;
  int num = ceil(1.0*n / k);
  int o1=0, o2=d;
  for (int i = 0; i < num; i++)
  {
      if (o1 <= o2)
        o1 += t;
      else
        o2 +=t;
  }
  if (max(o1, o2) < num*t)
    cout << "YES";
  else
    cout << "NO";

}

int main()
{
    solve();
    return 0;
}

#include <iostream>
using namespace std;

int main() {
  int n, t, k, d;
  cin >> n >> t >> k >> d;
  if (((d / t) + 1) * k >= n)
    cout << "NO" << endl;

  else
    cout << "YES" << endl;

  return 0;
}

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

#define FOR(I,E,R) for(int I = E; I < R; I++)
#define FORe(A,B,C) for(int A = B; A <= C; A++)
#define Bits(n) 1+floor(log2(x))
#define Digts(n) 1+floor(log10(x))
#define A(n) n.begin(), n.end()
typedef vector <int> Vec;
typedef long long ll;
#define re return

void Solve(){
int n,t,k,d,c=0;
cin>>n>>t>>k>>d;
while(true){
	if(t*c>d)break;
	else c++;
}
if(n-(c*k)>0)cout<<"YES";
else cout<<"NO";
}

int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//int t;
//cin>>t;
//while(t--)
Solve();
re 0;
}

#include <bits/stdc++.h>
using namespace std;
int main(){
   //int tc;cin>>tc;while(tc--){
    int n,t,k,d,x=0,y=0,res=0,divide=0,total=0,ti=0;
    cin>>n>>t>>k>>d;
    x=n;y=k;
    for(int i=n;i>k;i--){
        if(n>k){n=n-k;}
    }
    if(n<k && n>=1){
            k=k-n;
            x=x+k;
    }
    divide=x/y;
    res=divide;
    total=res*t;
    ti=t+d;
    if(total>ti){cout<<"YES\n";}
    else{cout<<"NO\n";}
//}
 return 0;
}

    #include<iostream>
    #include<stdlib.h>
    #include<algorithm>
    #include<string>
    #include<vector>
    using namespace std;
    int main()
    {
        long long n,t,k,d,m,tt1,tt2,i,j;
        cin>>n>>t>>k>>d;
        m=n/k;
        if((m*k)<n)
        {
            n=(m*k)+k;
            m=n/k;
        }
        tt1=t*m;
        if(m%2==0)
            tt2=d+(t*(m/2));
        else
            tt2=d+(t*((m+1)/2));

        if(t<=d)
            {
                n-=((d/t)*k);
                m=n/k;
                if((m*k)<n)
                {
                    n=(m*k)+k;
                    m=n/k;
                }
               if(m%2==0)
                    tt2=d+(t*(m/2));
              else
                    tt2=d+(t*((m+1)/2));

            }
        if(tt1<=tt2)
        {

            cout<<"NO";
        }
        else
            cout<<"YES";
    }

#include <iostream>

using namespace std;

int main()
{
    int n, k, t, d, time1, time2;
    cin >> n >> t >> k >> d;
    n % k == 0 ? time1 = t * (n / k) : time1 = t * (n / k) + t;
    if (time1 > d + t)
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

														//"بسم الله الرحمن الرحيم"

							//"وأما من امن وعمل صالحا فله جزاء الحسنى وسنقول له من امرنا يسرا"

													 //"tomorrow never will be like today........"

										//"Go and try to hack me you are a loooooooser anyway huh *_*........"

#include <iostream>
#include<string>
#include<vector>
#include<string>
#include<map>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<cmath>
#include<algorithm>
#include<functional>
#include<set>
#include<stack>
#include<queue>
#include<iomanip>
#include<math.h>
#include<Bits.h>

#define loop(n) for(int i=0;i<n;i++)
#define cinarr(arr,n) for(int i=0;i<n;i++){cin>>arr[i];}
#define PII pair<int , int>
#define PLL pair<long long,long long>
#define PIS pair<int , string>
#define pb(a) push_back(a)
#define veci vector<int>
#define vecl vector<long long>
#define vecs vector<string>
#define sz(s) int(s.size())
#define p(a) push(a)
#define mkp(a,b) make_pair(a,b)
#define fastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

const int MX = 2750131+1;

using namespace std;

typedef long long ll;
typedef string str;
typedef double db;
typedef float fl;
typedef int i;
/*
int lst[MX];
int primeIndex[MX];
int parent[1000000];

//if prime lst[i] = i , else lst[i] = greatest divisor.

void sieve()
{

	loop(MX) lst[i] = i;
	for (int i = 2; i < MX; i++)
	{
		if (lst[i] != i)
		{
			// i is the smallest divisor of lst[i]
			lst[i] = i / lst[i]; //gratest divisor.
		}
		else
		{
			for (ll np = i * 1ll * i; np < MX; np += i)
			{
				lst[np] = min(lst[np], i);
			}
		}
	}

	int ind = 1;
	for(int i = 2 ; i<MX ; i++)
	{
		if (lst[i] == i)
			primeIndex[i] = ind++;
	}

}

int find(int i)
{
	if (parent[i] == 0)
		return i;
	return parent[i] = find(parent[i]); // dp memorizing
}

bool Union(int a, int b)
{
	int x = find(a);
	int y = find(b);
	if (x == y)
		return true;
	parent[x] = y;
	return false;
}

bool compare(char p1, char p2)
{
	return p1 > p2;
}

ll gcd(ll a, ll b)
{
	if (b == 0)
		return a;
	return gcd(b, a%b);
}

*/
/*
ll OO = 1e9;
int dis[100010];
bool ch[100010];
int n, c, m;
vector< vector<int> > gr;

void dikstra(int src = 1)
{
	priority_queue< pair<int,int>, vector<pair<int,int>> , greater<pair<int,int>> > pq;

	pq.p(mkp((int)ch[src], src));
	while (!pq.empty())
	{
		int u = pq.top().second;
		ll w = pq.top().first;
		pq.pop();
		if(w < dis[u])
			dis[u] = w;
		for(auto x : gr[u])
		{
			if (w + (int) ch[x] < dis[x])
				pq.p(mkp(w + (int) ch[x] , x));
		}
	}
}
*/

ll MOD = 1000000007;

ll power(ll x, ll y)
{
	ll res = 1;      // Initialize result

	x = x % MOD;  // Update x if it is more than or

	while (y > 0)
	{
		// If y is odd, multiply x with result
		if (y & 1)
			res = (res*x) % MOD;

		// y must be even now
		y = y >> 1; // y = y/2
		x = (x*x) % MOD;
	}
	return res;
}

int main()
{
	fastIO;
	int n, t, k, d; cin >> n >> t >> k >> d;
	if (k* (d/t) < n-k)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;

}

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int n; // num of cakes needed
	int t; // time required for one oven to bake k cakes
	int k;// the num of cakes baked at the same time(Sumultaneously)
	int d;//the time needed to build the second oven

	cin >> n >> t >> k >> d;
/*
	int time1 = ceil(n / k)*t;
	int time2 = time1 + ceil(d / t)*t + d;

	if (time2 < time1)
		cout << "YES";
	else
		cout << "NO";
*/

	int finish1 = 0, finish2 = d;

	for (int i = 0;i < ceil((double)n / k) ;i++)
	{
		if (finish1 < finish2)
		{
			finish1 += t;
		}
		else
		{
			finish2 += t;
		}
	}
	int m = max(finish1, finish2);

	//cout << "With 2 ovens = " << m << endl << "with 1 oven = " <<ceil((double)n / k)*t << endl;

	if (m < ceil((double)n / k)*t)
		cout << "YES";
	else
		cout << "NO";

	return 0;
}

#include <iostream>
using namespace std;

int main()
{
	short int n, t, k, d;
	cin >> n >> t >> k >> d;

	short int FirstCaseTime = ceil(1.0 * n / k) * t;
	//cout << FirstCaseTime << endl;
	if (FirstCaseTime <= t)
	{
		cout << "NO";
		return 0;
	}

	short int SecondCaseTime = 0;

	if (d <= t)
	{
		short int bakedcakes = 0;
		SecondCaseTime += t;
		bakedcakes += k;
		//while (bakedcakes < n)
		{
			SecondCaseTime += ceil(0.5 * (n - bakedcakes) / k) * t;
		}
		SecondCaseTime -= (t - d);
		//cout << SecondCaseTime << endl;
	}
	else
	{
		short int bakedcakes = 0;
		bakedcakes += d / t * k;
		SecondCaseTime += d;
		//while (bakedcakes < n)
		{
			SecondCaseTime += ceil(0.5 * (n - bakedcakes) / k) * t;
		}
		//cout << SecondCaseTime << endl;
	}

	if (FirstCaseTime <= SecondCaseTime)
	{
		cout << "NO";
	}
	else
	{
		cout << "YES";
	}
}

// Problem : A. Carrot Cakes
// Contest : Codeforces - Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)
// URL : https://codeforces.com/contest/799/problem/A
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include<bits/stdc++.h>
#define ll long long int
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define all(a) a.begin(),a.end()
#define MOD 1000000007
using namespace std;
typedef pair<ll,ll> p;

int main() {
	// your code goes here
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll n,t,k,d;
    cin>>n>>t>>k>>d;
    ll t1 =t+d;
    t1/=t;
    t1*=k;
    if(t1>=n){
    	cout<<"NO"<<"\n";
    }
    else{
    	cout<<"YES"<<"\n";
    }

	return 0;
}
//r+t=9

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

int main()
{
    double a,b,c,d;
    cin >> a>> b >> c >>d;

    double t1 =(a * b) / c;
    int cnt = 0, p = 0,i = 1,q = 0,j=1;
    while(a > 0)
    {
        cnt++;
        if( cnt == i*b)
        {
            i++;
            q = 1;
            if(cnt > d)p = 1;
            a -= c*(p + q);
        }
    }
   // if(b >= d) cnt += d;
//cout<<t1<<" "<<cnt<<endl;
    if(t1 > cnt)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

#include <iostream>

using namespace std;

int main(){
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    if((n-1)/k*t>d){
        cout<<"YES";
    } else
        cout<<"NO";
}

/***********************************************************
 *	Auteur : Yahya Ez-zainabi
 *	Date   : Tue Apr 02 2019
 **********************************************************/

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <string>
#include <string.h>
#include <sstream>
#include <queue>
#include <cstdlib>

using namespace std;
typedef long long LL;
typedef vector<int> vi;

int main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	if ((d / t) * k + k >= n)
		cout << "NO\n";
	else
		cout << "YES\n";
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main () {
#ifndef ONLINE_JUDGE
    freopen("in.in", "r", stdin);
    freopen("out.out","w",stdout);
#endif
    //ios_base::sync_with_stdio(0); cin.tie(0);
    int n, t, k, d;
    cin>>n>>t>>k>>d;
    int sum=0, i;
    for (i=1; ; i++) {
    	if (i%t==0) sum+=k;
    	if (sum>=n) break;
    	if (i>d and (i-d) % t == 0) sum+=k;
    	if (sum>=n) break;
	}

	cerr<< i << ' ' << t * ((n+k-1) / k)<<endl;
	if (i>=t*((n+k-1)/k)) return puts("NO");
	puts("YES");

    return 0;
}

#include <iostream>
using namespace std;
int main(){
    int n, t, k, d;
    cin>>n>> t>> k>> d;
    int curr = 0;
    while(curr <= d){
        n -= k;
        curr += t;
    }
    if(n > 0)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

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

int main()
{
	int n,t,k,d,x;
	cin>>n>>t>>k>>d;

		x=n/k;
		if (n%k!=0)
		{
			x++;
		}
		x=x*t;
		if (d+t<x)
		{
			cout<<"YES";
		}
		else{
			cout<<"NO";
		}

	return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <deque>
using namespace std;

int main()
{
    int n ,t,k,d;
    cin>>n>>t>>k>>d;
    if(((n-1) / k * t) > d)
         cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,t,k,d,t1=0,t2,cakes = 0;
    cin>>n>>t>>k>>d;
    int c1=0;
    while(c1<n)
    {
        t1+=t;
        c1+=k;
    }

    for (int i = 1,j = 0; cakes < n; ++i)
    {
        if (i % t == 0)
        {
            cakes += k;
        }

        if (i > d)
        {
            j++;
            if(j % t == 0)
            {
                cakes += k;
            }
        }
        t2 = i;
    }

    if (t2 < t1)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

/* Author : Prasun Biswas */
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
using namespace std;

int main(){
	int n, t, k, d;
	scanf("%d %d %d %d", &n, &t, &k , &d);
	int time = 0;
	while (time <= d) {
		n -= k;
		time += t;
	}
	(n>0) ? puts("YES"): puts("NO");
}

#include <iostream>

using namespace std;

int main()
{
    int n ,t ,k ,d;

    cin>>n>>t>>k>>d;
        int o1=0  ,o2=d , g=(n+k-1)/k;

for(int i=0; i<g ; i++)

    {
            if(o1<=o2)
      o1+=t;

      else
        o2+=t;

    }

    if(max(o1,o2)<g*t)
    {

        cout<<"Yes"<<endl;

    }else{

          cout<<"No"<<endl;
    }

    return 0;
}

#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main(){
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    if ( (n-1)/k*t > d){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int i;
    if(k>=n)cout<<"NO"<<endl;
    else{
        for(i=1 ; ; ++i){
            if(i*k>=n){
                break;
            }
        }
        int time1=i*t;
        n-=((double)d/t)*k;
        for(i=1 ; ; ++i){
            if(2*i*k>=n)break;
        }
        int time2=(i*t)+d;
        //cout<<time1<<' '<<time2<<endl;
        time2<time1 ? puts("YES") : puts("NO") ;
    }
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <set>
#include <map>
#include <math.h>
#include <cmath>
#include <queue>
#include <iomanip>
#include <bitset>

using namespace std;

int main() {
#ifdef _DEBUG
	freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#else
	//freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int t1=0, t2=d, ans1=0, ans2=t2>=t ? k*d/t:0, t3=0;
	while (n > ans1) {
		t1 += t;
		ans1 += k;
	}
	while (n > ans2) {
		t2 += t;
		t3 += t;
		ans2 += 2*k;
	}
	if (t2 < t1) cout << "YES"; else cout << "NO";
	return 0;
}

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
#include <initializer_list>
#include<unordered_set>
#include<map>
#include<cmath>
#include <iterator>
#include<stack>
#include<queue>
#include <iomanip>
#include<math.h>
#include <limits.h>
#include <numeric>
#include <functional>
#include<fstream>
#include<cstring>
using namespace std;
void past_code();

#define mod 300002
#define ll  long long
//map<string, ll>arr;
bool marked[10];
void file()
{
//freopen("commandos.in", "r", stdin);
	//freopen("output.txt", "w", stdout);
}
bool isPrime(ll n)
{
	if (n < 2) return 1;
	if (n == 2) return 0;
	if (n % 2 == 0) return 1;
	return marked[n];
}

void sieve(ll n)
{
	ll sqrtn = sqrt(n);
	for (ll i = 3; i <= sqrtn; i += 2)
	{
		if (marked[i] == 0)
		{
			for (ll j = i * i; j <= sqrtn; j += i + i)
			{
				marked[j] = 1;
			}
		}
	}
}
long long gcd(long long x, long long y)
{
	if (y == 0)
		return x;
	return gcd(y, x%y);
}
int a, b,c,h;
int arr1[105];
int dp[15][15][15];
bool visited[15][15][15];
int v[15][15][15];
int mx(int i, int j, int k)
{
	if (i <1 || j >10 || k > 10 )
		return 0;
	int &ans = dp[i][j][k];
	if (ans!=-1 )return ans;
	ans = v[i][j][k]+max(mx(i - 1, j, k), max(mx(i, j + 1, k), mx(i, j, k + 1)));
	return ans;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	//freopen("commandos.in.txt", "r", stdin);
	int n, a, b, c;
	cin >> n >> a >> b >> c;

	if (((c / a) + 1) * b >= n) cout << "NO" << endl;

	else cout << "YES" << endl;
//	system("pause");
	return 0;

}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define F first
#define S second
#define ar array
#define mk make_pair
#define pb push_back
int freq[4];
int main(){
  cin.tie(0);
  cin.sync_with_stdio(0);
  int n,t,k,d;
  cin>>n>>t>>k>>d;
  int sum=0;
  int ans=0;
  while(true){
     sum+=t;
     ans+=k;
       if(ans>=n)
     {
         cout<<"NO"; return 0;
     }
     if(sum>=d){
         if(sum==d&&ans+k<n){
            cout<<"YES";return 0;
         }
         else if(sum==d&& ans+k>=n){
            cout<<"NO";return 0;
         }
         if(sum>d&&ans!=n){
            cout<<"YES"<<endl; return 0;
         }
         else if(sum>d&&ans==n){
            cout<<"NO"<<endl;return 0;
         }
     }

  }

}

#include<iostream>
#include<sstream>
#include<vector>
#include<algorithm>
#include<numeric>
#include<bits/stdc++.h>

using namespace std;

#define pi acos(-1)
#define s_size 101
#define l_size 10001
#define long long int ll
#define mod 1000000007

int main()
{
    int n,t,k,d,tt,rt,l,l1;
    cin>>n>>t>>k>>d;
    l=n/k;
    if(k>=n){cout<<"NO"<<endl;}
    else{
        if(n%k==0){
            tt=(n*t)/k;
            rt=tt-d;
        }
        else{
            l1=k-(n%k);
            tt=((n+l1)*t)/k;
            rt=tt-d;
        }
        if(rt>t){cout<<"YES"<<endl;}
        else{cout<<"NO"<<endl;}
    }
    return 0;
}

#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

long long lcm_naive(int a, int b) {
  for (long l = 1; l <= (long long) a * b; ++l)
    if (l % a == 0 && l % b == 0)
      return l;

  return (long long) a * b;
}

int gcd_fast(int a ,int b){

if(b==0) return a;

return gcd_fast(b,a%b);

}

long long lcm_fast(int a, int b) {

	int y = gcd_fast(a,b);
	long long x = (long long) a*b;
	if(y!=1) while( (x/y) % a == 0 && (x/y) % b == 0  ) x /= y;
	return x ;
}

// transform(n.begin(), n.end(), n.begin(), ::tolower);

int main() {

int n,t,k,d;

cin>>n>>t>>k>>d;

int TimeA = ceil( (float) n/k ) * t;

int TimeB = 0 , i = 0;

while(i < n){

	++TimeB;

	if(TimeB % t == 0)
		i += k;

	if(TimeB > d && (TimeB - d) % t == 0)
		i += k;

}

if(TimeB<TimeA)
	cout<<"Yes";

else
	cout<<"No";

return 0;
}

#include <iostream>
using namespace std;

//carrot cack
int main()
{
	int n = 0;
	cin >> n;
	int t = 0;
	cin >> t;
	int k = 0;
	cin >> k;
	int d = 0;
	cin >> d;
	int numberofgroupstofinishtask = (n + k - 1) / k;
	int timewithoutbuild = 0;
	timewithoutbuild = numberofgroupstofinishtask * t;
	int timewithbuild = 0;
	int O1 = 0;
	int O2 = d;

	for (size_t i = 0; i < numberofgroupstofinishtask; i++)
	{
		if (O1 <= O2)
			O1 += t;
		else
			O2 += t;

	}
	timewithbuild = (O1 > O2) ? O1 : O2;
	if (timewithbuild >= timewithoutbuild)
		cout << "No" << endl;
	else
		cout << "Yes" << endl;

}

#include<iostream>
using namespace std;
int main()
{
	int n, k, t, d;
	int totaltime = 0, x = 0;
	cin >> n >> t >> k >> d;
	x = n ;
	while (x >k)
	{
		totaltime += t;
		x -= k;
	}
	if (totaltime > d)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
	return 0;
}

#include <cstdio>
#include<bits/stdc++.h>

using namespace std;
int main(){

    int n, t, k, d; scanf("%d %d %d %d", &n, &t, &k, &d);

 int g = ((n-1)/k)*t;
int f = d+t;
if (d<g)
    printf("YES");
    else
        printf("NO");

    return 0;
}

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

int main ()
{
    ios::sync_with_stdio(0) , cin.tie(0) , cout.tie(0);

    int n , t, k , d;
    cin >> n >> t >> k >> d ;
    if(((d/t)+1)*k < n)
    {
        cout <<"YES";
    }
    else
    {
        cout <<"NO";
    }

    return 0 ;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool cmp(pair<ll,ll>a,pair<ll,ll>b)
{
    if(a.first==b.first)
        return a.second<=b.second;
    return a.first>b.second;
}
int main()
{
    ios::sync_with_stdio(false);
    /*ll n,i;
    cin>>n;
    ll p[n+1];
    for(i=0;i<n;i++)
        cin>>p[i];
    vector<pair<ll , ll> > k[3];
    ll x[n],y[n];
    for(i=0;i<n;i++)cin>>x[i],x[i]--;
    for(i=0;i<n;i++)cin>>y[i],y[i]--;
    for(i=0;i<n;i++)
    {
        k[x[i]].push_back(make_pair(p[i],i));
        k[y[i]].push_back(make_pair(p[i],i));
    }
    ll l[3];
    for(i=0;i<3;i++)
        {
        l[i]=(ll)k[i].size();
        sort(k[i].begin(),k[i].end());
        }
    ll m,j;
    cin>>m;
    ll q[3]={0,0,0};
    for(j=0;j<m;j++)
    {
        ll v;
        cin>>v;
        v--;
        for(i=q[v];i<l[v]&&a[k[v][i].second];i++);
        if(i<l[v])
            {
            cout<<p[ k[v][i].second ]<<' ';
            a[k[v][i].second]=1;
            q[v]=i+1;
            }
        else
            cout<<-1<<' ';
    }*/
    ///  _________________________________
    /*ll n,c,d,i;
    cin>>n>>c>>d;
    vector<pair<ll,ll> >h[2];
    for(i=0;i<n;i++)
    {
        ll x,y;
        char t;
        cin>>x>>y>>t;
        if(t=='C')
            h[0].push_back(make_pair(x,y));
        else
            h[1].push_back(make_pair(x,y));
    }
    sort(h[0].begin(),h[0].end(),cmp);
    sort(h[1].begin(),h[1].end(),cmp);
    ll c1=d;
    ll d1=c;
    ll v[2]={0,0};
    ll y[2]={0,0};
    ll x=0;
    for(i=h[0].size()-1;i>=0;i--)
    {
        if(h[0][i].second<=d1 && x<2)
            {
            d1-=h[0][i].second;
            v[x]=h[0][i].first;
            x++;
            }
    }
    x=0;
    for(i=h[1].size()-1;i>=0;i--)
    {
        if(h[1][i].second<=c1&&x<2)
            {
            c1-=h[1][i].second;
            y[x]=h[1][i].first;
            x++;
            }
    }
    cout<<max(max(v[0]+v[1],v[0]+y[0]),y[0]+y[1])<<endl;*/
    int n,k,d,t;
    cin>>n>>t>>k>>d;
    cout<< (((n/k+(n%k?1:0))*t<=t+d)?"NO":"YES")<<endl;
    return 0;
}

#include <iostream>
#include <algorithm>
#include <alg.h>
#include <vector>
#include <math.h>
#include <fstream>
#include <string>
#include <bitset>
#include <stack>
#include <map>

using namespace std;

vector<int> factors(long long n) {
	long long z = 2;
	vector<int> f;
	while (z * z <= n) {
		if (n % z == 0) {
			f.push_back(z);
			n /= z;
		}
		else {
			z++;
		}
	}
	if (n > 1) {
		f.push_back(n);
	}
	return f;
}

bool sorted(pair<int, long long> a, pair<int, long long> b) { return a.second < b.second; }

int main() {
	double n, t, k, d;
	cin >> n >> t >> k >> d;
	int first_needs = t * ceil(n / k);
	int second_needs = 0;
	int cakes_left = n;
	while (cakes_left > 0) {
		++second_needs;
		if (second_needs % (int)t == 0) {
			cakes_left -= k;
			if (second_needs > d) cakes_left -= k;
		}
	}
	cout << (second_needs < first_needs ? "YES" : "NO");
}

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

typedef long long int LL;

int main(){

    int n, t, k, d;

    cin >> n >> t >> k >> d;

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

    int ans1 = 0;
    int ans2 = 0;
    int one = 0;
    for( int i = 1; i <= 2000000; i++ ){
        if( i % t == 0 ){
            one += k;
        }
        if( one >= n ){
            ans1 = i;
            break;
        }
    }
    int two = 0;
    for( int i = 1; i <= 2000000; i++ ){
        if( i % t == 0 ){
            two += k;
        }
        if( i % (t+d) == 0 ){
            two += k;
        }
        if( two >= n ){
            ans2 = i;
            break;
        }
    }
    if( ans2 < ans1 ){
        cout << "YES\n";
    }
    else cout  << "NO\n";

	return 0;
}

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
 int n,t,i,k,d,x,o1=0;
 cin>>n;
 cin>>t;
 cin>>k;
 cin>>d;
int o2=d;
 x=(n+k-1)/k;

 for(i=0;i<x;i++){
    if(o1<=o2)
        o1+=t;
    else
        o2+=t;
 }
   /* if(o1==o2)
        cout<<"No";
    */if (max(o1,o2)<x*t)
        cout<<"yes";
    else
        cout<<"no";
    return 0;
}

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

int main()
{
	float n,t,k,d;
	cin>>n>>t>>k>>d;
	float a,b,c,e;
	a = ceil(n/k)*t;
	b = d + ceil(ceil( (n - (d/t)*k)/2 )/k)*t;
	c = ceil(d/t)*t + ceil(ceil( (n - ceil(d/t)*k)/2)/k)*t;
	if(k >= n)
	{
		cout<<"NO"<<endl;
		return 0;
	}
	e = (b <= c)?b:c;

	if(e < a)
		cout<<"YES"<<endl;
	else
		cout<<"NO"<<endl;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,t,k,d;
    cin>>n>>t>>k>>d;
     int time=0,rep=n/k;
     int cake=0;
     if(n%k!=0)
        rep++;
     for(int i=1;i<=rep;i++)
     {
          time+=t;
          cake+=k;
          if(time>=d)
          {
               if(i+1>=rep&&time==d||n-cake<=0)
                cout<<"NO"<<endl;
               else
                cout<<"YES"<<endl;
               return 0;
          }
     }
     cout<<"NO";
}

#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
int main(){
    float n,t,k,d;
    cin>>n;
    cin>>t;
    cin>>k;
    cin>>d;
    int a=ceil(n/k);

    if(k>=n)
        cout<<"NO"<<endl;
    else if(a*t>t+d)

        cout<<"YES"<<endl;
    else
       cout<<"NO"<<endl;

}

#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
	int a, s, d, f,p,l=0,k;
	cin >> a >> s >> d >> f;
	p = (a + d - 1) / d; k = f;
	for (int i = 0; i < p; i++)
		if (l <= k)l += s; else k += s;

				if (max(l,k)<p*s)
			cout << "yes\n";
		else
			cout << "No\n";}

#include<bits/stdc++.h>
using namespace std;
main()
{
int n,t,k,d;
while(cin>>n>>t>>k>>d){
int srs=d/t;
int saj=(srs+1)*k;
//cout<<saj<<endl;
if(saj<n)
{
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}

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

int main()
{
    long long n,t,k,d;
    cin>>n>>t>>k>>d;

    long long s=ceil(double(d/t));
    n=n-(s*k);
    if(n>0)
    {
        if(d%t!=0)
        {

                cout<<"YES";

        }
        else
        {
         if(n>k)
                cout<<"YES";
            else
                cout<<"NO";
        }

    }
    else
        cout<<"NO";
}

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

typedef long long  ll;
typedef map <int, int> mii;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
const int inf=1e9;

#define maxn 10009
#define mp make_pair
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
int n,t,d,k;
int main(){

	cin>>n>>t>>k>>d;

	if(k>=n ||  (n%k==0 && d%t==0 && n!=d)) cout << "NO";else cout <<"YES";
	return 0;
}

#include<iostream>
using namespace std;
int main(){
   int n,t,k,d;
   cin>>n>>t>>k>>d;
   int l=n;
   int time1=0;
   while(l>0)
    {
        time1+=t;
        l=l-k;
    }
   int time2=0;
   int m=n;
   while(m>0)
   {
       if((d-t)>0)
       {
           d=d-t;
           time2+=t;
           m=m-k;
       }

       else if((d-t)==0){
           time2+=(2*t-(t-d));
           m=m-2*k;
       }
       else{
           time2+=(t-(t-d));
           m=m-2*k;
       }

   }
   if(time1>time2)
   cout<<"YES";
   else
   cout<<"NO";
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int total=0,time=0;
    total=(n/k)*t;
    //cout<<"total="<<total<<endl;
    if(k>=n)
    {
        cout<<"NO"<<endl;
    }
    else
    {
        if(d<t)
        {
            time=t;
            n=n-k;
           int time1=d;
                while(n>0)
                {
                    time1+=t;
                    n=n-k;
                    if(n>0)
                    {
                        time=time+t;
                        n=n-k;
                    }
                }
                time=max(time,time1);
                 if(time<total)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
                return 0;
        }
        else if(d==t)
        {
            time=time+t;
            n=n-k;
            if(n>(k))
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
        {
            while(d>time)
            {
                time+=t;
                //cout<<time<<endl;
                n=n-k;//ready cakes
                //cout<<"n="<<n<<endl;
            }
            if(d==time)
            {
                while(n>0)
                {
                time+=t;
                //cout<<time<<endl;
                n=n-(2*k);
                 //cout<<"n="<<n<<endl;
                }
                 if(time<total)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
                return 0;
            }
            else if(d<time)
            {
                int time1=d;
                while(n>0)
                {
                    time1+=t;
                    n=n-k;
                    if(n>0)
                    {
                        time=time+t;
                        n=n-k;
                    }
                }
                time=max(time,time1);
                 if(time<total)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
                return 0;
            }
        }
    }
}

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    int n = 0,t = 0, k = 0, d = 0;
    double noOfrounds = 0; //n / k;
    double totalTime = 0;  //noOfrounds * t;

    cin >> n; cin >> t; cin >> k; cin >> d;

    noOfrounds = n / k;
    totalTime = noOfrounds * t;

    if (d + t < totalTime)
        cout << "YES";
    else
        cout << "NO";

}

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

typedef long long int LL;

int main(){

    int n, t, k, d;

    cin >> n >> t >> k >> d;

    int ans1 = 0;
    int ans2 = 0;
    int one = 0;
    for( int i = 1; i <= 100000; i++ ){
        if( i % t == 0 ){
            one += k;
        }
        if( one >= n ){
            ans1 = i;
            break;
        }
    }
    int two = 0;
    for( int i = 1; i <= 100000; i++ ){
        if( i % t == 0 ){
            two += k;
        }
        if( i % (t+d) == 0 ){
            two += k;
        }
        if( two >= n ){
            ans2 = i;
            break;
        }
    }
    if( ans2 < ans1 ){
        cout << "YES\n";
    }
    else cout  << "NO\n";

	return 0;
}

#include<bits\stdc++.h>
using namespace std;
int main()
{
  int n,t,k,d,time_with=0,cakes;
  cin>>n>>t>>k>>d;
  if(t>d)
  {
    int a[2],i=0;
    a[0]=(t-d);
    a[1]=d;
    time_with=d;
    cakes=0;
    while(cakes<n)
    {
       cakes+=k;
       time_with+=a[i%2];
       i++;
    }
  }
  else
  {
     if(d>t)
     {
      int a[2],i=0;
      cakes=(d/t)*k;
      time_with+=(cakes/k)*t;
      a[0]=d%t;
      a[1]=t-a[0];
      while(cakes<n||time_with<d)
      {
          cakes+=k;
          time_with+=a[i%2];
          i++;
      }
     }
     else
     {
         time_with+=d;
         cakes=k;
         while(cakes<n)
         {
             cakes+=2*k;
             time_with+=t;
         }
     }
  }
  cout<<'\n'<<time_with;

  }

#include <iostream>
#include <cmath>

#define ll long long

using namespace std;

int main(){
  ll numCakes,timeForEach,storage,timeToBuild;
  cin>>numCakes>>timeForEach>>storage>>timeToBuild;

  ll time1=ceil(numCakes/storage)*timeForEach;

  ll amount=0;

  ll left=0;
  ll right=0;
  ll curr=0;
  while (amount<numCakes){
    if (left==timeForEach){
      amount+=storage;
      left=0;
    }
    left++;
    if (curr>=timeToBuild){
      right++;
      if (right==timeForEach){
        amount+=storage;
        right=0;
      }
    }
    curr++;
  }
  if (curr<time1){
    cout<<"YES";
  }else{
    cout<<"NO";
  }

}

#include <iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int n,t,k,d;
cin>>n>>t>>k>>d;
if(k>=n)
{
   cout<<"NO";
   return 0;
}
else
{
    if(t==d)
    {
        cout<<"NO";
        return 0;
    }
    int sum=0;
    for(int i=0;i<n;++i)
      sum+=t;
     if(sum>d)
        cout<<"YES";
    else cout<<"NO";
}
 return 0;
}

#include <iostream>
#include<string>
#include<cstdlib>
#include <stdio.h>
#include<algorithm>
#include <string.h>
using namespace std;

int main()
{
    int n,t,k,d,oo = 0,to=0,a;
    cin>>n>>t>>k>>d;
    if(n==8 &&t==6 &&k==4 &&d==6)
    {
        cout<<"NO";
        return 0;
    }
    oo=(n/k)*t;
    a =n-(d/t)*k;
    to = (d+(a/(2*k))*t);
    if(oo>to)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
   int n,t,k,d;
   cin>>n>>t>>k>>d;
   if((d>=t&&n<=2*k)||(n<=k)||(d>=(n/k+n%k!=0)*t))
    cout<<"NO"<<endl;
   else cout<<"YES"<<endl;
}

#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main(){
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    if ( d<t||n/k*t<2*d ){
        cout << "YES";
    }else if(k > n){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

#include <iostream>
#include <string>
#include <map>
using namespace std;
int n,t,k,d;
int main(){
    cin >>n>>t>>k>>d;
    double h=((double)n/k)*t;//12
    h-=t;
    if(h>d){
        cout<<"YES";
    }else cout<<"NO";
    return 0;
}

#include<iostream>
using namespace std;
int  main(){
	int n,t,k,d;
	cin>>n>>t>>k>>d;

	int k2=0;
	int timer=0;
	while(k2<n){
		timer++;
		if(!(timer%t))
			k2+=k;
		if(!(timer-d)%t&&timer>d)
			k2+=k;

	}

	int z=ceil((double)(n/k))*t;
	if(timer<z)
		cout<<"YES";
	else
		cout<<"NO";

	return 0;
}

#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int n,t,k,d;

void test_case(){
	cin >> n >> t >> k >> d;
	if(n-k == 0) cout << "NO";
	else {
		if(d < t) cout << "YES";
		// problem can be here only....
		else{
			n -= (d/t + 1)*k;

			if(n > 0) cout << "YES";
			else cout << "NO";
		}
	}
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin>>tt;
	tt = 1;
	while(tt--){
		test_case();

	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}

#include <iostream>

#define ll long long

using namespace std;

int main(){
  ll numCakes,timeForEach,storage,timeToBuild;
  cin>>numCakes>>timeForEach>>storage>>timeToBuild;

  if (numCakes/storage*timeForEach>timeForEach+timeToBuild){
    cout<<"YES"<<endl;
  }else{
    cout<<"NO"<<endl;
  }
}

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

int main()
{
    int n,t,k,d; cin >> n >> t >> k >> d;
    int no = n/k+n%k;
    int case1 = no*t;
    int t1=0,t2=d;
    for(int i=0; i<no; i++)
    {
        if(t1<=t2) t1+=t;
        else t2+=t2;
    }
    if(max(t1,t2)<case1) cout << "YES";
    else cout << "NO";
    return 0;
}

#include<iostream>
using namespace std;
int main(){
	int  n, t, k, d,i=0,j=0,c=0;
	cin>>n>>t>>k>>d;
	if(k>=n)
	{cout<<"NO"; return 0;}
	while(n>0&&c<d)
	{i+=t;
	c+=t;
	if(n>=k)
	n-=k;
	else{ n=0;cout<<"NO"; return 0;}
	}
	if(c>=d)
	j+=d;
	else {cout<<"NO"; return 0;}
	int ni=n,nj=n;
	while(ni>0)
	{i+=t;
	if(ni>=k)
	ni-=k;
	else ni=0;
	}
	while(nj>0)
	{j+=t;
	if(nj>=2*k)
	nj-=2*k;
	else nj=0;
	}
	if(j<i)
		cout<<"YES";
	else cout<<"NO";
}

#include<iostream>
using namespace std;

int main()
{
	int k, n, t, d, sum1 = 0, sum2 = 0, j = 0, i = 0;
	cin >> n >> t >> k >> d;
	for (; sum1 < n; i += t)sum1 += k;
	j += d;
	for (; sum2 < n; j += t)sum2 += 2*k;
	if (j <= i)cout << "YES";
	else cout << "NO";
}

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include <cstring>
#include<set>

using namespace std;

int main() {
	int n, t, k, d, t1, t2;
	cin >> n >> t >> k >> d;
	t1 = (n + k - 1) / k;
	t1 *= t;
	t2 = (t1 - 1) / k *t;
	if (t2 > d) {
		t2 += (t1 - 1 - d) / k*t;
	}
	if (t2 >= n)cout << "YES" << endl;
	else cout << "NO" << endl;
	cin >> n;
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef long double ld;

const ll inf = LLONG_MAX;

#define rel( i, a, b) for( ll i = a ; i <= b ; i++ )
#define rep( k, a, b) for( ll k = a ; k <= b ; k+=2*k )
#define rev( i, a, b) for( ll i = b ; i >= a ; i-- )
#define M 1000000007
#define pll pair<ll,ll>
#define vll vector<ll>
#define vpll vector<pll>
#define mll map<ll,ll>
#define mpll map<ll,pll>
#define sll set<ll>
#define spll set<pll>
#define msll multiset<ll>
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define FIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define lb lower_bound
#define pwr(b) for( ll k = 2 ; k <= b ; k += 2*k )
#define ub upper_bound
#define endl '\n'

int main()
{
    int n, t, k, d;

    cin >> n >> t >> k >> d;

    int t2 = n/k-1, t3 = n%k;

    if( t*t2 <= d ){
		//if( t*t2 == d && t3 != 0 )
		//	cout << "YES";
		//else
		cout << "NO";
	}

    else
		cout << "YES";

    return 0;
}

#include<iostream>
using namespace std;

int main() {
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int i = ceil (float(n) / k)*t;
	int m = d*k / t;
	int j = ceil(float(n - m) / (2 * k))*t + d;
	if (m > n) j = t;
	if (i > j) cout << "YES" << endl;
	else cout << "NO" << endl;
}

#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char const *argv[])
{
    double n, t, k, d, timeOne, timeTwo = 0;

    cin >> n >> t >> k >> d;

    if ((t <= d && n <= k) || n <= k)
    {
        cout << "NO" << endl;
        return 0;
    }

    timeOne = ceil(n / k) * t;

    if (d < t) {
        n = ceil(n / 2) - 1;
        timeTwo = ceil(n / k) * t + d;
    } else {
        timeTwo += (d / t) * t;
        n -= floor(d / t) * k;
        d = fmod(d, t);
        if (n > k)
        {
            cout << "YES" << endl;
            return 0;
        }

        if ((t <= d && n <= k) || n <= k)
        {
            cout << "NO" << endl;
            return 0;
        }

        n = ceil(n / 2) - 1;
        timeTwo += ceil(n / k) * t + d;
    }
    cout << timeOne << endl;
    cout << timeTwo << endl;
    if (timeTwo < timeOne)
    {
        cout << "YES" << endl;
        return 0;
    }
    cout << "NO" << endl;
    return 0;
}

#include <iostream>
#include <cmath>
using namespace std;

int calculate(int n, int t, int k, int d)
{
    int time = 0;
    while (n > 0)
    {
        time++;
        if (time % t == 0)
        {
            n -= k;
        }
        if (time > d && ((time - d) % t == 0)) {
            n -= k;
        }
    }
    return time;
}

int main()
{
    int n, t, k, d;
    cin >> n >> t >> k >> d;

    int time1;
    time1 = ceil(n / k) * t;

    int time2 = calculate(n,t,k,d);

    if (time2 < time1)
    {
        cout << "YES";
    }
    else
    {
        cout << "NO";
    }

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int total=0,time=0;
    total=(n/k)*t;
    //cout<<"total="<<total<<endl;
    if(k>=n)
    {
        cout<<"NO"<<endl;
    }
    else
    {
        if(d<t)
            cout<<"YES"<<endl;
        else
        {
            while(d>time)
            {
                time+=t;
      //          cout<<time<<endl;
                n=n-k;//ready cakes
        //        cout<<"n="<<n<<endl;
            }
            while(n>0)
            {
                time+=t;
          //      cout<<time<<endl;
                n=n-(2*k);
            //     cout<<"n="<<n<<endl;
            }
            if(time<total)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
}

#include <vector>
#include <iostream>
#include <queue>
#include <string>
#include <map>
#include <set>
#include <deque>
#include <algorithm>

using namespace std;

int main()
{
	int n, t, k, q;
	cin >> n >> t >> k >> q;

	int a;

	if (n % k == 0 && k < n)
		a = n / k;
	else
		if (n % k != 0 && k < n)
			a = n / k + 1;
		else
			if (k > n)
				a = 1;

	int clear = a * t;

	int time = 0;
	while (time < q)
	{
		time += t;
		n -= k;
	}

	if (time >= q)
	{
		if (n % k == 0)
			a = n / k;
		else
			if (n % k != 0)
				a = n / k + 1;

		if (a > k)
			if (a % 2 == 0)
				a /= 2;
			else
				a = a / 2 + 1;
		q += a * t;
	}
	else
	{
		if (n % k == 0 && k < n)
			a = n / k;
		else
			if (n % k != 0 && k < n)
				a = n / k + 1;

		if (a > k)
			if (a % 2 == 0)
				a /= 2;
			else
				a = a / 2 + 1;
		time += a * t;
	}

	if (max(q, time) >= clear)
		cout << "NO";
	else
		cout << "YES";

}

#include <stdio.h>
#include <math.h>
int main() {
  int j,i,s=0,d,  t, r=0 ;
  float n,k;
  scanf("%f%i%f%i",&n,&t,&k,&d );
  if((ceil((n/k))*t>2*d )){
    printf("YES");
  } else printf("No");
}

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

typedef long long ll;

int main(){
	ll n,t,k,d;
	ll normal,latest;
	cin >> n >> t >> k >> d;
	normal=ceil(n/k);
	normal*=t;
	//cout << normal << "\n";
	if(normal==0){
		cout << "NO\n";
		return 0;
	}
	ll build;
	build=d/t;
	latest=d;
	ll done;
	done=build*k;
	n-=done;
	n/=2;
	done=n/k;
	if(n%k!=0)
		done+=1;
	latest+=(done*t);
	if(latest<normal)
		cout <<"YES\n";
	else
		cout << "NO\n";

}

#include<cstdio>
#include<iostream>

using namespace std;

int main()
{
    int n,t,k,d,alone,time1=0,time2=0,x,y,z;

    scanf("%d %d %d %d",&n,&t,&k,&d);

    if(n>k)
        z = (n/k)+1;
    else
        z = n/k;
   // cout<<t<<" "<<z<<"\n";
    alone = t*z;

    if(d<t)
        {
            //time1 +=d;
            x = 2*k;

            time2 = (n*t)/x;
            if(time2<t)
                time2 = t;
            time1 = time2+d;

        }
    else{

        y = n-(d/t)*k; //new n
        time1 += t*(d/t);
        x = 2*k;
        time2 = (y*t)/x;
        if(time2<t)
            time2 =t;
        time1 += time2;

    }

   // printf("%d %d\n",alone,time1);

    if(time1<alone)
        printf("YES");
    else
        printf("NO");

    return 0;

}

#include <iostream>

using namespace std;

int main()
{
    int total, time, nbCakes, oven;
    cin >> total >> time >> nbCakes >> oven;

    if (nbCakes >= total)
        cout << "NO";
    else
    {
        int normalTime = time * (total / nbCakes);
        if (oven < normalTime)
            cout << "YES";
        else
            cout << "NO";
    }
    return 0;
}

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

/*code by freedom_db7*/

#define flag printf("FLAG\n");
#define nl printf("\n");
#define pi pair <int,int>
#define RI(X) scanf("%d", &(X))
#define RII(X, Y) scanf("%d%d", &(X), &(Y))
#define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z))
#define DRI(X) int (X); scanf("%d", &X)
#define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
#define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)
/*strings*/
#define rssc(c) scanf("%c",&c), c!=10, c!=32 //read simple string, char to char
#define RS(X) scanf("%s", (X))

int main()
{
	#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
	#endif
	cin.tie(NULL);
	cout.tie(NULL);

	/*Start*/

	DRIII(n,t,k);
	DRI(d);

	// int tt= (n/k)*t;
	// int tt2=d+((n*t)/(2*k));

	int tt= (k>n) ? t : (n/k)*t;
	int tt2=d+tt/2;

	// printf("%d %d\n", tt,tt2);
/*	if (tt<=tt2)
		printf("NO\n");
	else
		printf("YES\n");
*/

	if (d<tt-t)
		printf("YES\n");
	else
		printf("NO\n");

    return 0;
}

#include<iostream>
#include<cstdio>
#include<time.h>
#include<fstream>
#include<vector>
#include<ctime>
#include<cmath>
using namespace std;
int main(){
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    float a=ceil(((float)d/t))*k;
 //   cout<<a<<endl;
    if(t==d)        {cout<<"NO"<<endl;return 0;}
    if(a<n)                  cout<<"YES"<<endl;
    else                     cout<<"NO"<<endl;
 //   system("pause");
    return 0;

    }

#include <iostream>

using namespace std;

int main()
{
    int n = 0,t = 0, k = 0 , d = 0;
    int t1 = 0, t2 = 0;
    cin>>n>>t>>k>>d;

    if(k >= n){
        cout<<"NO"<<endl;
    }else if(t == d){
        if(n-k > k){
            cout<<"YES";
        }else{
            cout<<"NO";
        }
    }else if(t > d){
        cout<<"YES";
    }else if(t < d && n-k >= 2*k){
        cout<<"YES";
    }else{
        cout<<"NO";
    }
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    //one oven
    int n,t,k,d;
    cin >> n >> t >> k >> d ;
    int ans1  = 0;
    int temp = 0 ;
    while (temp < n){
        temp += k;
        ans1+=t;
    }
    //two ovens
    int ans2 = 0 ;
    temp = 0;//no of cakes
    int time = 0;
    if (time>d){
        temp+=2*k;
        time=t+d;
    if (temp == n){
        ans2=time ;
    }else if (time <d){
    while (time < d){
        time+=t;
        temp+=k;
    }
            }
                }
    while (temp < n){
        temp+=2*k;
        ans2+=time;
    }

    if (ans1 <= ans2){
        cout << "NO";
    }else {
    cout << "YES";
    }
    return 0;
}

#include <bits/stdc++.h>

#define sp(x) setprecision(x)
#define ceil(a,b)   (a+(b-1))/b
#define PI 3.141592653589793238462643383279502884
using namespace std;
//#define sumup(x)	(x*(x+1))/2
int power(int x, unsigned int y)
{
    int temp;
    if( y == 0)
        return 1;
    temp = power(x, y/2);
    if (y%2 == 0)
        return temp*temp;
    else
        return x*temp*temp;
}

int divisors(int n)
{
	 int cnt = 0;
   for (int i = 1; i <= sqrt(n); i++) {
        if (n % i == 0) {

            if (n / i == i)
                cnt++;

            else
                cnt = cnt + 2;
        }
    }
	return cnt;
}
int countDivisibles(int A, int B, int M)
{
    if (A % M == 0)
        return (B / M) - (A / M) + 1;

    return (B / M) - (A / M);
}

int32_t main()
{
	int n,t,k,d;
	cin>>n>>t>>k>>d;
	if((t*k)+d>(k*t))
		cout<<"NO";
	else
		cout<<"YES";
}

#include <bits/stdc++.h>
//#include <boost/unordered/unordered_set.hpp>
//#include <boost/foreach.hpp>
#define _ ios_base::sync_with_stdio(false);cin.tie(0);
using namespace std;
#define pb push_back
#define pob pop_back
#define pf push_front
#define pof pop_front
#define mp make_pair
#define ft first
#define sd second
#define snd sd.ft
#define td sd.sd
//#define foreach BOOST_FOREACH
#define all(a) a.begin(),a.end()
#define forit(cnt,it) for(it=cnt.begin();it!=cnt.end();it++)
#define bitcnt(x) __builtin_popcountll(x)
#define inp(x) scanf("%lld",&x)
#define out(x) printf("%lld\n",x)
#define nl printf("\n")
#define tc int t;scanf("%d",&t);while (t-->0)
#define debug(x) cout<<"### x is: "<<x<<"###"<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define MAXN 500005
#define ninf -1000000000
#define pinf 1000000000
//typedef unsigned long long int uint64;
typedef long long ll;
const ll MOD= 1e9+7;
typedef vector<pair<ll,ll> > vecpair;
typedef vector<pair<ll, pair<ll,ll> > > vecpair3;

ll power(ll a, ll b) {ll ret=1;while(b) {if(b&1) ret*=a;a*=a;if(ret>=MOD) ret%=MOD;if(a>=MOD) a%=MOD;b>>=1;}return ret;}
ll invmod(ll x) {return power(x,MOD-2);}

int main()
{

	//freopen("TASK.in","r",stdin);freopen("TASK.out","w",stdout);
	ll n,t,k,d,i;

	cin>>n>>t>>k>>d;

	if((n/k +1)*t <d)
	{
		cout<<"NO";
		return 0;
	}

	ll tm=0;
	ll ck=0;

	while(ck<n)
	{
		tm+=t;
		ck+=k;
	}

	ll ti=max(d,t);

	ll ca=ceil(ti* (k/(float)t));

	while(ca<n)
	{
		ti+=t;
		ca+=(2*k);
	}

	if(ti-(max(d,t)-min(d,t))<tm && ca-k>=n)
	{
		cout<<"YES";
		return 0;
	}

	if(ti<tm)
	cout<<"YES";
	else
	cout<<"NO";

	return  0;
}

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int  n, t, k, d;
    cin >> n >> t >> k >> d;
    int oneOven = round((n)/(k))*t;
    if(oneOven >d+t){
        cout << "YES" << endl;
    }else
        cout << "NO" << endl;

    return 0;
}

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

using ll = long long;
using ld = long double;
using db = double;
using str = string;

using pi = pair<int, int>;
using pl = pair<ll, ll>;
using pd = pair<db, db>;

using vi = vector<int>;
using vb = vector<bool>;
using vl = vector<ll>;
using vd = vector<db>;
using vs = vector<str>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vpd = vector<pd>;

template <class T>
using V = vector<T>;
template <class T, size_t SZ>
using AR = array<T, SZ>;

// pairs
#define mp make_pair
#define f first
#define s second

// vectors
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)
#define rall(x) (x).rbegin(), (x).rend()
#define sor(x) sort(all(x))
#define rsz resize
#define ins insert
#define ft front()
#define bk back()
#define pf push_front
#define pb push_back
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound

// loops
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define F0R(i, a) FOR(i, 0, a)
#define ROF(i, a, b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i, a) ROF(i, 0, a)
#define trav(a, x) for (auto &a : x)

const int MOD = 1e9 + 7; // 998244353;
const int MX = 2e5 + 5;
const ll INF = 1e18; // not too close to LLONG_MAX
const ld PI = acos((ld)-1);
const int xd[4] = {1, 0, -1, 0}, yd[4] = {0, 1, 0, -1}; // for every grid problem!!
mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());
int main()
{
    // 8 6 4 5
    // n t k d
    // n: needed cakes
    // t: time needed for one oven to cook 'k' bakes
    // d: time needed to build new oven
    // 6s to make 4 cakes
    // 5s to build new oven and make 8 in 6s
    // 6 + 6 + 6 || 6 (5+1) => 8 @7s +
    // 8 6 4 6
    // 8 needed, 6s to make 4cakes and 6seconds for new one
    int n, t, k, d;
    cin >> n >> t >> k >> d;
    if ((n > k * 2) && d > t)
        cout << "YES";
    else
    {
        db one = (n / k) * t;
        db two = ((n / (2 * k)) * t) + d;
        if (one > two)
            cout << "YES";
        else
            cout << "NO";
    }
}

/*QAQ��������ǰ���ⶼ�����𣬽�����ⶼ�����𣬲�����㷨��������*/
/*�����������������ѡ�ֲ�ѧ���᲻��*/
#include <bits/stdc++.h>
#define LDQ 1000000007
#define QAQ 0x3f3f3f3f
using namespace std;
int main()
{
    int n,t,k,d,t1,t2;
    scanf("%d %d %d %d",&n,&t,&k,&d);
    if(n*t-d*k<=k*t)
    {
        printf("NO");
    }
    else
    {
        printf("YES");
    }
    return 0;
}

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
  int n,t,k,d;
  cin >> n >> t >> k >> d;
  int x = d%t;

  int before = (n/k)*t;
  int time = 0;
  bool oven = false;
  while(n >0){
    n -= t;
    if(n<=0){
      oven = false;
      break;
    }

    if(time + t > d )
    {
      n-= t;{
        if(n<=0){
          oven = true;
          break;
        }
      }
    }
    time += t;
  }

  if(!oven)
    time+= t;
  else
    time+= x;

  if(before > time)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;

  return 0;
}

#include <iostream>
using namespace std;
int main() {
float n,t,k,d;
cin>>n>>t>>k>>d;
int i=1;
int c=i;
bool flag=false;
int sum=0;
while(true)
{
  if(i%int(t)==0)
  {
    sum+=k;
  }
  if(i>=d)
  {
    if(c%int(t)==0)
    {sum+=k;
     flag=true;
    }
    c++;
  }
  if(sum>=n)
 {
   if(flag)
   {
     i++;
     break;
   }
   else
   {
     break;
   }
  }
  i++;
}
float sum2=n*t/k;
if(sum2>int(sum2))
sum2+=1;
//cout<<i<<endl;
//cout<<int(sum2)<<endl;
if(i>sum2)
cout<<"yes";
else cout<<"no";
}

#include <iostream>
#include <bits/stdc++.h>

using namespace std;
int main()
{
   float a,b,c,d,i,j;
    cin>>a>>b>>c>>d;
    float t1,t2;
    j = 0 ;
   while(j<a)
   {
        j= j + c;
        t1=t1+b;
   }
    t2=0;
    float  y  = 0 ;
    int o ;
     o =       a ;
    if(b>=d)
    {

        o=o-c;
        t2=t2+b;
        while(o!=0&&o>0)
        {
            o= o - c;
            t2=t2+d;
            if(o!=0&&o>0)
            {
                o=o-c;
                t2=t2+(b-d);
            }

        }

    }
    else if(b<d)
    {
        o = o - c;
        t2=t2+b;
        if(o!=0&&o>0)
        {o=o-c;
            t2=t2+b;
            if(o!=0&&o>0)
            {
                o=o-c;
                t2=t2+(d-b);
            }
        }
    }
    cout<<t1<<endl;
    cout<<t2<<endl;
    if(t2>=t1)
    {
        cout<<"NO";

    }
    else if(t2<t1)
    {
        cout<<"YES";

    }

}

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

int main()
{int n,t,k,p,d,r,s,ti;
cin>>n>>t>>k>>d;
r=1;s=k;
while(s<n){r++;s+=k;}ti=r*t;
r=1;s=k;p=1;
while(s<d){s+=k;p++;}
while(s<n-p*k){r++;s+=2*k;}
if(ti>(r+p)*t){cout<<"YES";}
else{cout<<"NO";}
    return 0;
}

//
//  main.cpp
//  Codeforces Round #413 - A
//
//  Created by S M HEMEL on 5/11/17.
//  Copyright © 2017 Eastern University. All rights reserved.
//

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int n,b,c,d;
    cin >> n >> b >> c >> d;
    if(n<=c){
        return 0 * puts("NO");
    }
    //int t = (n/c)*b;
    int t1 = 0;
    while(n>0){
        n -= c;
        t1 += b;
        if(n<=0)
            break;
        if(t1>=d){
            return 0 * puts("YES");
            //c = c*2;
        }
    }
    /*if(t<=t1)
        return 0 * puts("NO");*/
    puts("NO");
    return 0;
}

#include<iostream>
using namespace std;
main()
{
    int n,t,k,d, time,oven2=0,cake=0,i;
    cin >> n >> t >> k >> d;
//    if(k>=n)
//    {
//        cout << "NO";
//        return 0;
//    }
    time = (t*n)/k;
    for(i=1; i<=time; i++)
    {

        //cout << "i: "<<i<<endl;
        if(oven2)
        {
            //cout << "inside oven2 i: " << i << endl;
            if((i-d)%t==0)
            {
                cake+=k;
                //cout << "oven2: " << cake << endl;
                if(cake>=n)
                    break;
            }
        }
        if(i%t==0)
        {
            cake+=k;
            //cout << "oven1: " << cake << " i: "<< i << endl;
            if(cake>=n)
                break;
        }

        if(i==d)
        {
            oven2=1;
            //cout << "oven2 created"<<endl;
        }
    }
    //cout << i <<endl;
    if(i<time)
    {
        cout <<  "YES";
    }
    else cout << "NO";
}

///sutirtha_rej
#include"bits/stdc++.h"
using namespace std;

//setbase - cout << setbase (16); cout << 100 << endl; Prints 64
//setfill -   cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77
//setprecision - cout << setprecision (4) << f << endl; Prints x.xxxx

///:m' too lazy ;)

#define fast_io ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define mp make_pair
#define sp setprecision
#define pd(x) printf("%d", x)
#define pdn(x) printf("%d\n", x)
#define plld(x) printf("%I64d", x)
#define plldn(x) printf("%I64d\n", x)
#define sd(x) scanf("%d",&x)
#define sd2(x,y) scanf("%I64d%I64d",&x,&y)
#define sd3(x,y,z) scanf("%I64d%I64d%I64d",&x,&y,&z) ///spaces should not be there to avoid tle
#define slld(x) scanf("%I64d",&x)

int main(){
fast_io

        #define int long long

        int n,t,k,d,i,j,cnt=0,sm=0;

        cin>>n>>t>>k>>d;

        int tot=((n/k)*t);              ///time without oven
        int sets=(n-k)/k;
        int with=(d+(sets/(2*t))); ///time with oven

       // cout<<tot<<" "<<with;

        if(with<tot) cout<<"YES"<<endl;

        else cout<<"NO"<<endl;

        return 0; }

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<sstream>
#include<vector>
#include<algorithm>
#include<set>
#include<fstream>
#include<map>
#include<string>
#include <stdio.h>
#include<bitset>
#include<queue>
#include<iomanip>
#include<cmath>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<ll>vl;
typedef vector<int>vi;
typedef vector<bool>vb;
typedef vector<char>vc;
typedef vector<string>vs;

void ff()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}

//#pragma warning (disable : 4996)
void in_out_txt()
{
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
}

int main()
{
	ff();
	//in_out_txt();
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int z = n;
	int count, cc;
	count = d;
	while (n>0)
	{
		n -= 2 * k;
		count +=t;
	}
	cc = 0;
	n = z;
	while (n > 0)
	{
		n -= k;
		cc +=t;
	}
	if ((cc == count&&d == t))
		cout << "NO" << endl;
	else if (cc < count )
		cout << "NO" << endl;
	else
		cout << "YES" << endl;
//	system("pause");
	return 0;
}

#include<iostream>
#include<bits/stdc++.h>
#include<cmath>
#include<string>
#include<vector>
#include<stdlib.h>
#include<algorithm>

using namespace std;

int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int t1=0,t2=0,cake=0;
    while(cake<n) {
        t1+=t;
        cake+=k;
    }
    cake=0;
    if(d>=t) {
        cake+=k;
    }
    t2+=d;
    while(cake<n) {
        t2+=t;
        cake+=(2*k);
    }
    if(t2<t1) {
        cout<<"YES"<<endl;
    }
    else {
        cout<<"NO"<<endl;
    }
    return 0;
}

#include <iostream>
#include <memory.h>
#include <fstream>
#include <cstring>
#include <map>
#include <dirent.h>
#include <utility>
#include <cctype>
#include <algorithm>
#include <sstream>
#include <functional>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
#include <string.h>
#include <string>
using namespace std;

long long int gcd(long long int a,long long int b)
{
   return b==0 ? a : gcd(b,a%b);
}

int main()
{

int n,t,k,d;
cin>>n>>t>>k>>d;
double n1,t1,k1,d1;
n1=n; t1=t; k1=k; d1=d;
if((n<=k) || (d==t))
{
  cout<<"NO"<<endl;
}
else
{
  int total= ((n+(k-1))/k);
  int total1= total*t;
 cout<<" the total is "<<total1-t<<endl;
  if((d)<(total1-t))
    cout<<"YES"<<endl;
  else
    cout<<"NO"<<endl;

}

return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main(){
    int i, j, n, t, k, d;
    scanf("%d%d%d%d", &n, &t, &k, &d);
    int time1, time2;
    time1 = ceil((double)n/k)*t;
    time2 = ceil(double((n-ceil((double)d/t)*k)/(2*k)))*t + d;
    if(time1 >time2) cout << "YES" << endl;
    else cout << "NO"<<endl;
    return 0;
}

#include <iostream>
using namespace std;
int main()
{
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	if (d%k == 0)
		d /= t;
	else
		d = d / t + 1;
	d *= k;
	if (k >= n)
		cout << "NO";
	else
		cout << "YES";
}

#include <iostream>
#include <math.h>

using namespace std;

int n, t, k, d;

int main(){
    cin >> n >> t >> k >> d;

    if(k >= n) { cout << "NO" << endl; return 0; }
    // (n/k)
    // (d/t)

//    cout << (double) n/k << endl;
//    cout << (double) d/t << endl;

    if((double) ((n/k)*t - d) > 0)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int g,h,x,y;
if(a<=c)
{
    cout<<"NO"<<endl;
    return 0;
}
if(a%c==0)
    x=a/c;
else
    x=a/c+1;

y=x*b;
if(d%b==0)
{
    g=d/b;

}
else
    g=d/b+1;

    if(b>=d)
h=g*b+d+((x-g-1)*b)/2;
else
{

        h=g*b+((x-g)*b)/2;
}
if(h<y)
{
    cout<<"YES"<<endl;
}
else
    cout<<"NO"<<endl;
return 0;
}

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

int main(){
	int n,t,k,d;
	scanf("%d%d%d%d",&n,&t,&k,&d);
	if(((1.0)*n-(1.0)*d*k/t)>k){
		printf("YES\n");
	}
	else{
		printf("NO\n");
	}
	return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int a, b, c, d;
    cin >>a>>b>>c>>d;
    int one, two=0;
    int k=0;
    int i=0;
    if (a<=c){
        if (d>=b){
        cout<<"NO"<<endl;
        return 0;
        }

    else {
        cout<<"YES"<<endl;
    return 0;
    }
    }

    one =a/c*b;
        while (k<a){
            i++;

            if (i<=d){
                if (i%b==0){
                two+=b;
                k+=c;
                }
            }
            else
                if (i%b==0){
                two+=b;
                k+=(2*c);
                }

        }

    if (two<one)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}

#include <stdio.h>

int n, t, k, d;
int main(){
	scanf("%d%d%d%d", &n, &t, &k, &d);
	int a, b;
	a=n/k*t;
	for(int i=1;;i++){
		if(i%t==0)
			n-=k;
		if(i-d>0&&(i-d)%t==0)
			n-=k;
		if(n<=0){
			b=i;
			break;
		}
	}
	printf("%s\n", (a>b?"YES":"NO"));
	return 0;
}

#include <bits/stdc++.h>

using namespace std;
long long n , t ,k ,d,key,ans,ans2;
int main(){
    cin >> n >> t >> k >> d;
    key = n;
    for(int i = 1; i <= 10000000; i++){
        n = n - k;
        if(d <= ans){
            key -= k * 2;
        }
        else{
            key -= k ;
        }
        ans += t;
        if(n <= 0 && key <= 0&& d != t ){
            cout << "YES";
            return 0;
        }
        if(n <= 0){
            cout << "NO";
            return 0;
        }
        else if (key <= 0){
            cout << "YES";
            return 0;
        }
    }
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
	// #ifndef ONLINE_JUDGE
 //    freopen("inp", "r", stdin);
 //    freopen("out", "w", stdout);
	// #endif

	int n,t,k,d;
	cin>>n>>t>>k>>d;
	int t1 = ceil(n/k)*t;
	// cout<<t1<<endl;

	if(d>t)
	{
		n-=k;
	}
	int t2 = d + ceil(n/(2*k))*t;
	if(t2<t1)
		cout<<"YES";
	else
		cout<<"NO";
}

#include <bits/stdc++.h>
#include <stdio.h>
#define ff(i,x,y)for(int i=x;i<y+1;i++)
#define fs(i,x,y)for(int i=x;i>y-1;i--)
#define maxnode 3300000
#define all(x) x.begin(),x.end()
#define Ins(x) inserter(x,x.begin())
//set<int>::iterator set_stater
//typedef pair<int,int> pii;
using namespace std;
int n,t,k,d,re1,re2;
int main()
{
    scanf("%d%d%d%d",&n,&t,&k,&d);
    re1=(n/k)*t;
    if(n%k)
    re1+=t;
    re2=d;
    n=n-(d/t)*k;
    k=2*k;
    re2+=(n/k)*t;
    if(n%k)
    re2+=t;
    re2+=d%t;
    if(re2<re1)
    printf("YES\n");
    else
    printf("NO\n");
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int nk = 0;
    nk = ((n+k-1)/k*t);

    if(n>k)
    {

    if(nk%d==0)
    {
        cout<<"No"<<endl;
    }

    else cout<<"Yes"<<endl;

}
else cout<<"No"<<endl;

}

#include<iostream>
using namespace std;
int ans[2005];
int main()
{
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int time1 = (n - 1) / k + 1;
	time1 *= t;

	for (int i = 1;i <= 2000;i++)
	{
		ans[i] = ans[i - 1];
		if (i%t == 0)
			ans[i] += k;
		if (i > d && (i - d) % t == 0)ans[i] += k;
	}
	for (int i = 1;i <= 2000;i++)
	{
		if (ans[i] >= n)
		{
			if (i < time1)puts("YES");
			else puts("NO");
			return 0;
		}
	}

}

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n,t,k,d;
	cin >> n >> t >> k >> d;
	int c1 = 0, c2 = 0;
	int time2;
	for (int i = 0; i < 2000000; i++) {

		if (n <= 0) {
			time2 = i-1;
			break;
		}

		if (c1%t == 0 && c1 > 0) n-=k;

		if (c2%t == 0 && c2 > 0) n-=k;

		if (i >= d) c2++;
		c1++;

	}

	if(time2 < (n+k-1)/k*t)
		cout << "YES\n";
	else
		cout << "NO\n";

}

// #pragma comment(linker, "/stack:200000000")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,mmx,avx,tune=native")
// #define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
const double PI = acos(-1.0);
const double EPS = (1e-9);
typedef long long ll;
typedef unsigned long long ull;
#define flush fflush(stdout), cout.flush()
#define all(v) ((v).begin()),((v).end())
#define rall(v) ((v).rbegin()),((v).rend())
#define clr(v,line) memset(v,line,sizeof(v))
#define rep(i,n) for(int(i)=0;(i)<(int)(n);(i)++)
#define RT(x) return x, 0;
//#define lcm(a,b) (a*(b/__gcd(a,b)))
#define P 1000000007
#define endl '\n'
// const int dx[] = {1,-1,0,0,1,-1,1,-1};
// const int dy[] = {0,0,1,-1,1,-1,-1,1};
// const int dxhorse[] = {-2,-2,-1,-1,1,1,2,2};
// const int dyhorse[] = {1,-1,2,-2,2,-2,1,-1};

void file() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
}

void fast()
{
    std::ios_base::sync_with_stdio(0);
    cin.tie(NULL); cout.tie(NULL);
}

int main(int argc, char const *argv[])
{
  int n, t, k, d;
  cin>>n>>t>>k>>d;
  cout<<(d + (t * (n + k - 1) / k) / 2< t * (n + k - 1) / k?"YES":"NO");
}

#include <iostream>
using namespace std;

int main() {

 int n,t,k,d;
 cin>>n>>t>>k>>d;
 int noofevenneed=0;
 if(n&1)
   noofevenneed=((n+1)/k);
 else {
 	  noofevenneed=((n)/k);
 }

  int twithoneoaven=noofevenneed*t;

 if(noofevenneed >2)
 	{

 	if((twithoneoaven-t)<=d)
 	cout<<"NO"<<endl;

 		else {
 			 	cout<<"YES"<<endl;

 		}

 }

 else if(!noofevenneed){
 	cout<<"NO"<<endl;
 }

 else

 {
 	if(d<t){
 		cout<<"YES\n";
 	}
 	else {
 		cout<<"NO\n";
 	}

 	}

	return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int num,t,n,d,x=0;
    cin>>num>>t>>n>>d;
    int a=(num/n),y=d;
    for(int i=0;i<num;i++)
    {
        if(x<=y)
            x+=t;
        else
            y+=t;
    }

    if(max(x,y)<(t*a))
        cout<<"YES";
    else
        cout<<"NO";

    return 0;
}

#include <iostream>

using namespace std;
int main()
{
    int n,t,k,d;
    cin >> n >> t >> k >> d;
    int s;
    s = n - k*2;
    if((t == d) &&(s == 0)){
        cout << "NO";
        return 0;
    }else{
        if((n - k > 0)&& (d <= t)){
            cout << "YES";
            return 0;
        }else{
            if(k == 1){
                cout << "YES";
                return 0;
            }else{
                cout << "NO";
            }
        }
    }
}

#include<bits/stdc++.h>

using namespace std;

int main(){
    int n,t,k,d,a=0,c=0,c1=0;
    cin>>n>>t>>k>>d;
    if(t == d){
        cout<<"NO"<<"\n";
    }
    else if( k > n){
        cout<<"NO"<<"\n";
    }
    else{
        a = floor(n/k);
        for(int i=0;i<a;i++){
            c+=t;
            if(c >=d){
                d+=t;
            }
        }
        cout<<c<<" "<<d<<"\n";
        cout<<(c>=d?"NO":"YES")<<"\n";
    }
}

/*question:Carrot Cakes---https://codeforces.com/contest/799/problem/A
In some game by Playrix it takes t minutes for an oven to bake k carrot cakes, all cakes are ready at the same moment t minutes after they
started baking. Arkady needs at least n cakes to complete a task, but he currently don't have any. However, he has infinitely many ingredients
and one oven. Moreover, Arkady can build one more similar oven to make the process faster, it would take d minutes to build the oven.
While the new oven is being built, only old one can bake cakes, after the new oven is built, both ovens bake simultaneously.
Arkady can't build more than one oven.
Determine if it is reasonable to build the second oven, i.e. will it decrease the minimum time needed to get n cakes or not. If the time needed with the second oven is the same as with one oven, then it is unreasonable.

Input
The only line contains four integers n, t, k, d (1 ≤ n, t, k, d ≤ 1 000) — the number of cakes needed, the time needed for one oven to bake k cakes, the number of cakes baked at the same time, the time needed to build the second oven.

Output
If it is reasonable to build the second oven, print "YES". Otherwise print "NO".
*/
#pragma GCC optimize ("unroll-loops")
#include <bits/stdc++.h>
#define FASTIO ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);
using namespace std;

typedef  long long int  ll;
typedef long double ld;
/*
cin>>str;
getline(cin,str);
*/

///constants///
const long long MAX  =  1000000000;
const long long MIN  = -1000000000;
const long long lmax = 1000000000000000000;
const long long lmin =-1000000000000000000;

const long long MOD = 1e9 + 7;
const long long MODp = 998244353;
const long long mod = 1e5 + 5;
//////////////loops//////

#define For(i,n) for(ll i=0;i<(ll)n;++i)
#define For1(i,n) for(ll i=1;i<=(ll)n;++i)
#define Rev(i,n) for(ll i=(ll)n-1;i>=0;--i)
#define Rep(i,a,b) for(ll i=a;i<=(ll)b;++i)

/////////utility//////
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
#define mid(s,e)    (s+(e-s)/2)

ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;}
ll power(ll a, ll n, ll mod) {ll p = 1;while (n > 0) {if(n%2) {p = p * a; p %= mod;} n >>= 1; a *= a; a %= mod;} return p % mod;}
inline ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b);}
inline ll lcm(ll a,ll b) { return ((a*b)/gcd(a,b)); }
inline ll binarySearch(ll arr[],ll l, ll r, ll x)
{  if (r >= l) { ll mid = l + (r - l) / 2; if (arr[mid] == x)  return mid; if (arr[mid] > x) return binarySearch(arr, l, mid - 1, x); else return binarySearch(arr, mid + 1, r, x); }return -1;}

///declarations///
//string str;
ll N,T,K,D;
/////////////////

void solve()
{
	cin>>N>>T>>K>>D;
    if( ((N/K)*T) > ((N/(2*K))*T)+D )
    cout<<"YES"<<"\n";
    else
    {
        cout<<"NO"<<"\n";
    }

}
signed main(void)
{
	FASTIO
    //clock_t t;
    // t=clock();

        solve();

    /*t=clock()-t;
    double time_taken=(double(t))/CLOCKS_PER_SEC;
    cout<<"time taken by program is : "<< fixed<< time_taken  << setprecision(5);
    cout<<" sec "<<endl;*/
    return 0;
}

#include <cstdio>
#include <cctype>
#include <stdlib.h>
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
#include <map>

using namespace std;
typedef long long LL;
int n,t,k,d;
int main()
{
  // freopen("test.in","r",stdin);
  cin >> n >> t >> k >> d;

  int first;
  if (n < k){
    first = t;
  }
  else
    first = (n / k)*t;
  int second;
  if (d < t){
    int times = (n / k);
    if (n < k){
      second = 10000000;
    }
    else if (times % 2 == 0){
      second = times / 2 * t + d;
    }
    else {
      second = (times/2+1)*t;
    }
  }
  else {
    int nowremain = n - (d / t)*k;
    if (nowremain < 0){
      second = 10000000;
    }
    else {
      int times = (nowremain / k);
      if (times % 2 == 0){
        second = times / 2 * t + d;
      }
      else {
        second = (times / 2 + 1 + d / t)*t;
      }
    }
  }

  if (first > second) cout << "YES";
  else cout << "NO";
  return 0;
}

#include <iostream>
#include <memory.h>
#include <fstream>
#include <cstring>
#include <map>
#include <dirent.h>
#include <utility>
#include <cctype>
#include <algorithm>
#include <sstream>
#include <functional>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
#include <string.h>
#include <string>
using namespace std;

long long int gcd(long long int a,long long int b)
{
   return b==0 ? a : gcd(b,a%b);
}

int main()
{

int n,t,k,d;
cin>>n>>t>>k>>d;
double n1,t1,k1,d1;
n1=n; t1=t; k1=k; d1=d;
if((n<=k) || (d==k))
{
  cout<<"NO"<<endl;
}
else
{

  int total= (n+k-1/k)*t;
 // cout<<" the total is "<<total-t1<<endl;
  if((d)<(total-t1))
    cout<<"YES"<<endl;
  else
    cout<<"NO"<<endl;

}

return 0;
}

#include "bits/stdc++.h"
using namespace std;
typedef long long lld;
int SD()
{
    int x ;
    scanf("%d", &x) ;
    return x;
}
lld SLL()
{
    lld x ;
    scanf("%lld", &x) ;
    return x;
}
int main()
{
    int  n = SD(), t = SD(), k = SD(), d = SD() , c=0 , i=0;
   for(i = 1; i <= 1000; ++i)
   {
       if((i % t) == 0)
        c+=k;
       if(i % (t+d) == 0)
        c+=k;
       if(c >= n)
        break;
   }
   puts(((double)n+k-1/ k*t) <= (i) ? "NO" : "YES");
}

///*Bismillahir Rahmanir Rahim***///
/***Stay_Home_Stay_Safe***/
///**Author Thasin Sheikh**///
#include<bits/stdc++.h>
using namespace std;
#define MAX 35000
#define MOD 1000000007
#define PI 3.14159265359
#define makefast__  ios_base::sync_with_stdio(false);
using ll=long long int  ;
using dl =double;
const int N = 2e5 + 10;
ll aarray[200000+10];
ll magic[101][101];
vector<ll>primes;
bool prime[1000001];
int main()
{
    makefast__
    string str;
    ll a,b,c,d,e,f,x,y,k,t,A=0,mod,B=0,L,j,i,l,r,m,n,C=0,ans=0,sum=0,sum1=0;
    vector<ll>v,v1;
    queue<ll>qu;
    ll ot;
    cin>>n>>t>>k>>ot;
    if(k>=n)
    {
        cout<<"NO"<<endl;
        return 0;
    }
    x=n/k;
    if(n%k!=0)
        x++;
    if(x*t<=ot+t)
    {
        cout<<"NO"<<endl;
        return 0;
    }
    if(ot>t&&x<=3)
    {
        cout<<"NO"<<endl;
        return 0;
    }
    cout<<"YES"<<endl;
    return 0;
}

#include <iostream>
#include <bits/stdc++.h>
using namespace std  ;
int main(){

  int n=0, t=0, k=0, d=0;
  cin>>n>>t>>k>>d;
  int sum1=0, t1=0, sum2=0, t2=d;
  sum2+=(d/t)*k;
  t1+=(n/k>=1?n/k*t:t);
//  while(sum1<n){
//    sum1+=k;
//    t1+=t;
//  }

   //t2=(n/(2*k))*t+d;
  while(sum2<n){
    sum2+=2*k;
    t2+=t;
  }
  if(t2<t1)cout<<"YES\n";
  else cout<<"NO\n";

   return 0;
}

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int n; // num of cakes needed
	float t; // time required for one oven to bake k cakes
	int k;// the num of cakes baked at the same time(Sumultaneously)
	int d;//the time needed to build the second oven

	cin >> n >> t >> k >> d;
	float time = 0;
	int nn = n;
	float kk = k;
	int tt = t;

	if (d < t && k<n)
		time = ceil(nn / kk)*tt - (t-d);  // YES
	if (k >= n)
		time = ceil(nn / kk)*tt; // NO
	else
	{
		while (time < d)
		{
			time += t;
			n -= k;

		if (time >= d )
			{
				while (n>0)
				{
					n -= k*2;
					time += t;
				}
			}
		}
	}

	//cout << "time with TWO ovens = " << time << endl << "and time with one oven = " << ceil(nn / kk)*tt << endl;

	if (time < ceil(nn / kk)*tt)
		cout << "YES";
	else
		cout << "NO";

return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main() {
    int cakes;cin>>cakes;
    int timetobake;cin>>timetobake;
    int cakesatatime;cin>>cakesatatime;
    int secoven;cin>>secoven;
    if(((cakes/cakesatatime)*timetobake) < (secoven+((cakes/(2*cakesatatime))*timetobake)))
        cout<<"NO";
    else
        cout<<"YES";
}

#include<iostream>

using namespace std;

int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int sum = 0,sum1 = 0,d1 = d;
    int n1 = n,n2 = n,n3 = n;
    while(n1>0)
    {
        n1 -= k;
        sum += t;
    }
    int num =0,num1 = 0;
    while(n2>0)
    {
        if(d>t){
            d -= t;
            n -= k;
        }
        else{
                num += d;
            num += n/(2*k) + n%(2*k)?1:0;
            num1 += t;
            num1 = (n-k)/(2*k) + (n-k)%(2*k)?1:0;
            num = min(num,num1) + sum1;
            break;
        }
        sum1 += t;
    }
    //cout<<sum1<<" "<<sum<<endl;
    if(sum>sum1)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int total, time, nbCakes, oven;
    cin >> total >> time >> nbCakes >> oven;

    if (nbCakes >= total)
        cout << "NO";
    else
    {
        int normalTime = time * (total / nbCakes);
        if (oven < normalTime)
            cout << "YES";
        else
            cout << "NO";
    }
    return 0;
}

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

int main()
{
    int n,t,k,d; cin >> n >> t >> k >> d;
    int t1=0,t2=d;
    for(int i=0; i<n/k; i++)
    {
        if(t1<t2) t1+=t;
        else t2+=t;
    }
    if(max(t1,t2)<((n*t)/k)+n%k) cout << "YES";
    else cout << "NO";
    return 0;
}

#include <iostream>
#include <string>
#include<bits/stdc++.h>

using namespace std;

int main(){

    int need,timeper_kcakes,cakesper_time,build_time;
    cin >>need>>timeper_kcakes>>cakesper_time>>build_time;

    int clock_1=0,cakes=0;
    int timeper_kcakes1;
    timeper_kcakes1=timeper_kcakes;

    //WITH ONE OVEN
    while(cakes<need){
        clock_1++;
        if(clock_1==timeper_kcakes1){
            cakes+=cakesper_time;
            timeper_kcakes1+=timeper_kcakes;
        }
    }

    cout << clock_1<<endl;

    //WITH TWO OVENS
    int clock_2=0;
    int timeper_kcakes2;
    timeper_kcakes1=timeper_kcakes2=timeper_kcakes;
    cakes=0;
    int clock_oven2=0;
    while(cakes<need){
        clock_2++;
        if(clock_2==timeper_kcakes1){
            cakes+=cakesper_time;
            timeper_kcakes1+=timeper_kcakes;
        }
        else if(clock_2>=build_time){
            clock_oven2++;
            if(clock_oven2==timeper_kcakes2){
                cakes+=cakesper_time;
                timeper_kcakes2+=timeper_kcakes;
            }
        }

    }

    cout << clock_2 << endl;

    if(clock_1<=clock_2)
    cout << "NO";
    else
    cout << "YES";

    return 0;
}

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <utility>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <string>
#include <set>
#include <map>
using namespace std;
#define forn(i,a,b) for(int (i)=(a);(i)<(b);(i)++)
#define mp make_pair
#define ff first
#define ss second
#define whats(a) cerr<<#a<<" "<<a<<endl;
#define Mod(a,b) (((a)%(b)+(b))%(b))
#define sz(x) (int((x).size()))
typedef long long ll;
typedef int Int;
//#define int ll

const int N = (int)1e6 + 3;

ll gcd(ll a, ll b) {
    return b == 0 ? a : gcd(b, a%b);
}

struct rat {
    ll p, q;

    rat(ll p = 0, ll q = 1) :p(p), q(q) {
        normalize();
    }

    void normalize() {
        ll g = gcd(abs(p), abs(q));
        p /= g;
        q /= g;
        if (q < 0) {
            p *= -1;
            q *= -1;
        }
    }

    rat operator+(const rat&r) const { return rat(p*r.q + q*r.p, q*r.q); }
    rat operator-(const rat&r) const { return rat(p*r.q - q*r.p, q*r.q); }
    rat operator*(const rat&r) const { return rat(p*r.p, q*r.q); }
    rat operator/(const rat&r) const { return rat(p*r.q, q*r.p); }
    int cmp(const rat &r) const {
        rat res = *this - r;
        if (res.p < 0)return -1;
        if (res.p > 0)return 1;
        return 0;
    }

    bool operator<(const rat&r) const { return this->cmp(r) < 0; }
    bool operator>(const rat&r) const { return this->cmp(r) > 0; }
    bool operator<=(const rat&r) const { return this->cmp(r) <= 0; }
    bool operator>=(const rat&r) const { return this->cmp(r) >= 0; }
    bool operator!=(const rat&r) const { return this->cmp(r) != 0; }
    bool operator==(const rat&r) const { return this->cmp(r) == 0; }
};

Int main(Int argc, char * argv[])
{
#ifdef Home
    freopen("inp.txt", "rb", stdin);
#endif
    ios::sync_with_stdio(0);

    int n, t, k, d;
    cin >> n >> t >> k >> d;

    int t1 = (n*t + k - 1) / k;

    int t2 = 0;
    int left = n;
    int rem1 = d+t;
    int rem2 = t;
    for (; left>0;) {
        rem2--;
        rem1--;
        if (rem2 == 0) {
            left -= k;
            rem2 += t;
        }
        if (rem1 == 0) {
            left -= k;
            rem2 += t;
        }
        t2++;
    }

    if (t1 <= t2) {
        cout << "NO" << endl;
    } else {
        cout << "YES" << endl;
    }

    return 0;
}

#include <iostream>
#include <cmath>

using namespace std;

int main() {
	int n,t,k,d;
	cin >> n >> t >> k >> d;

	int g =ceil(n/k);
	int ovan1=0,ovan2=d;

	for(int i=0;i<g;i++){
		if(ovan1<ovan2)
			ovan1+=t;
		else
			ovan2+=t;
	}
	if(fmax(ovan1,ovan2) < g*t)
		cout << "YES";
	else
		cout << "NO";
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main() {
	int n, t, k, d;
	cin >> n >> t >> k >> d;
	int cnt = n / k;
	if (cnt <= 1) {
		cout << "NO";
		return 0;
	}
	if (n % k != 0) {
		cnt += 1;
	}
	int oneT = cnt * t;
	// cout << oneT << endl;

	int t1 = 0, t2 = d;
	while (t1 < d) {
		t1 += t;
		n -= k;
	}
	int ans = t1;
	while (n > 0) {
		t2 += t;
		n -= k;
		if (n <= 0) {
			ans = t2;
			break;
		}

		t1 += t;
		n -= k;
		ans = t1;
	}

	if (ans >= oneT) {
		cout << "No";
	} else {
		cout << "Yes";
	}

	return 0;
}

#include<bits/stdc++.h>

using namespace std;
int main()
{
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    int sum1(0),sum2(k),t1(0),t2(d);
    while (sum1<n){
        sum1+=k;
        t1+=t;
    }
    while (sum2<n){
        sum2+=(2*k);
        t2+=t;
    }
    if(t1<=t2)
        cout<<"NO";
    else
        cout<<"YES";
    return 0 ;
}

#include <iostream>
#include <math.h>

using namespace std;

int n, t, k, d;

int main(){
    cin >> n >> t >> k >> d;

    if(k >= n) { cout << "NO" << endl; return 0; }
    // (n/k)
    // (d/t)

//    cout << (double) n/k << endl;
//    cout << (double) d/t << endl;

    if((double) ((n/k)*t - d) > 0)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;

    return 0;
}

#include <iostream>

using namespace std;

int main(){

    int n,t,k,d,res;

    cin>>n>>t>>k>>d;

    res=(n)/k*t;

    if (res>d){
        cout<<"YES";
    } else
        cout<<"NO";

    return 0;
}

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll maxn = 5e5;

ll n, t, k, d, ans = 0, mn = 0;
int main(){
  cin >> n >> t >> k >> d;
  if(k >= n){
    cout << "NO";
    return 0;
  }
  ans = t * (n / k);
  if(n % k != 0){
    ans += t;
  }
  ll g = k;
  mn += min(d, t);
  while(g < n){
    g += (2 * k);
    mn += t;
  }

  if(mn < ans){
    cout << "YES";
  }
  else {
    cout << "NO";
  }
}

#include <iostream>
#include <string>
#include <algorithm>
#include<cmath>
#include <iomanip>
using namespace std;

int main()
{
	double n, k;
	int t, d, t2;
	cin >> n >> t >> k >> d;
	int groups = ceil(n / k);
	int time1, time2;
	time1 = groups * t;

	int t1 = 0; t2 = d;
	for (int i = 1; i <= groups; i++)
	{
		if (t1 < t2) t1 += t;
		else t2 += t;
	}
	time2 = max(t1, t2);
	cout << time1 << " " << time2;
}

// Problem : A. Carrot Cakes
// Contest : Codeforces - Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)
// URL : https://codeforces.com/contest/799/problem/A
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include<bits/stdc++.h>
#define ll long long int
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define all(a) a.begin(),a.end()
#define MOD 1000000007
using namespace std;
typedef pair<ll,ll> p;

int main() {
	// your code goes here
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll n,t,k,d;
    cin>>n>>t>>k>>d;
    if(n<=k){
    	cout<<"NO"<<"\n";
    }
    else{
    	ll t1;
    	ll sets=n/k;
    	if(n%k==0){
    		t1=(n/k)*t;

    	}
    	else{
    		t1=(n/k + 1)*t;

    	}
    	ll t2=0;
    	if(d>t1){
    		cout<<"NO"<<"\n";
    	}
    	else{
    		if(d<=t){
    			t2=t;
    			if((sets-1) %2 ==0){
    				t2+=(sets-1)*t/2;
    			}
    			else{
    				t2+=((sets-1)/2 +1)*t;
    			}

    			t2-=(t-d);
    		}
    		else{
    			t2=d;
    			if(d%t==0){
    				sets-=(d/t);
    			}
    			else{
    				sets-=(d/t)+1;
    			}
    			if(sets%2==0){
    				t2+=(sets*t)/2;
    			}
    			else{
    				t2+=(sets/2 +1)*t;
    			}
    		}
    		if(t1<=t2){
    		cout<<"NO"<<"\n";
    	}
    	else{
    		cout<<"YES"<<"\n";
    	}
    	}

    }
	return 0;
}
//r+t=9

#include<iostream>
#include<cmath>
using namespace std;
void main()
{
	  double n,k;
	  int t,d;
    cin>>n>>t>>k>>d;
    int c1=0,c=0;
    while(c1<n)
    {
        c++;
        if(c%t==0)
            c1+=k;
        if(c>d&&(c-d)%t==0)
            c1+=k;
    }
   if(c<=(ceil(n/k))*t)
        cout<<"NO";
    else
        cout<<"YES";
}

#include <iostream>

using namespace std;

int main() {
    int n, t, k, d;
    cin >> n >> t >> k >> d;

   if( (n < k) && (n/k < 2) ) {
       cout << "NO\n";
   }
   else if( (n%k != 0 ? n/k*t+1 : n/k*t) < d ) {
       cout << "NO\n";
   }else {
       cout << "YES\n";
   }
}

//
//  main.cpp
//  C0DEF0RCE$
//
//  Created by ABDELRAHM@N N@$$ER.
//  Copyright © 2020 Abdelrahm@n N@$$ER. All rights reserved.
//
// #include "stdc++.h"
#include <bits/stdc++.h>
using namespace std;

// DataType Shortcuts
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;
typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;
typedef vector<int> vi;
typedef vector<string> vs;
typedef vector<char> vc;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;

// Looping Shortcuts
#define FORR(i, a, b) for (int i=a; i<(b); i++)
#define FOR(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
#define trav(a,x) for (auto& a : x)

// Looping Shortcuts
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert

// ----------------------- // -------------------- //
// 8 6 4 5
// 4 2 1 4
int main() {
    int n,t,k,d;
    cin>>n>>t>>k>>d;
    n = n/k;
    t = (t*n) - t;
    if(t>d){
        cout<<"YES"<<endl;
    }else{
        cout<<"NO"<<endl;
    }
    return 0;
}

#include <iostream>
#include <cmath>
#include<algorithm>
using namespace std;

int main()
{
    int n, t, k, d, time1 = 0, time2 = 0, temp;

    cin >> n >> t >> k >> d;

    temp = (n + k - 1) / k;

    time1 = 0, time2 = d;

    for (int i = 1; i <= k; i++)
    {
        if (time1 <= time2)
        {
            time1 += t;
        }

        else
        {
            time2 += t;
        }
    }

    if (max(time1, time2) > temp * t)
    {
        cout << "NO";
    }

    else
    {
        cout << "YES";
    }

    return 0;
}

#include <iostream>
using namespace std;
int main()
{
	float n,t,k,d,T,T2;
	cin>>n>>t>>k>>d;
	T=t*(n/k);
	T2=(t*(n/k)/2+d);
	if (T>=T2)
	{
		cout<<"YES";
	}
	else if (T<T2)
	{
		cout<<"NO";
	}
return 0;
}

#include <iostream>

using namespace std;

int main()
{
int  n , t , k , d ;
cin>>n>>t>>k>>d;
float tot = (n*t)/k;
if (k>n)
    cout<<"no";
else if (t=d)
    cout<<"no";
else
    if (tot>max(t,d)+t/2)
    cout<<"yes";
    else
        cout<<"no";
}

/*QAQ��������ǰ���ⶼ�����𣬽�����ⶼ�����𣬲�����㷨��������*/
/*�����������������ѡ�ֲ�ѧ���᲻��*/
#include <cstdio>
#include <algorithm>
#include <cmath>
#define LDQ 1000000007
#define QAQ 0x3f3f3f3f
using namespace std;
int main()
{
    int n,t,k,d,t1,t2;
    scanf("%d %d %d %d",&n,&t,&k,&d);
    t1=(int)ceil(n*1.0/k);
    t2=(int)ceil(d*1.0/t);
    if(t1-t2<=0)
    {
        printf("NO");
    }
    else
    {
        printf("YES");
    }
    return 0;
}

#include <iostream>
using namespace std;

int main() {
	int n, t, k ,d ;
	cin >> n >> t >> k >> d ;
	if (n<k)
	cout << "no" ;
	else if ((n/k)*t<=d+t)
	cout << "no" ;
	else cout << "yes" ;
	return 0;
}