#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <stdio.h>
#include <string.h>


using namespace std;

long long gcd(long long a, long long b) {
	while (a && b)
		if (a > b)
			a %= b;
		else
			b %= a;
	return a + b;
}

long long mulmod(long long a, long long b, long long p) {
	if (b == 0)
		return 0;
	if (b % 2 == 1)
		return (a + mulmod(a, b - 1, p)) % p;
	else {
		long long m = mulmod(a, b / 2, p);
		return (m + m) % p;
	}
}

long long powmod(long long a, long long b, long long p) {
	if (b == 0)
		return 1;
	if (b % 2 == 1) {
		return mulmod(a, powmod(a, b - 1, p), p);
	}
	else {
		long long m = powmod(a, b / 2, p);
		return mulmod(m, m, p);
	}
}

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

	long long k, l, r, t, x, y;
	cin >> k >> l >> r >> t >> x >> y;
	r -= l;
	k -= l;
	long long g = gcd(x, y);
	

	long long x0 = x / g, y0 = y / g, phi = 0;
	for (int i = 1; i < x0; i++) {
		if (gcd(i, x0) == 1)
			phi++;
	}
	long long y1 = powmod(y0, phi - 1, x0);

	if (x > y) {
		if (k + y > r) {
			k -= x;
			t--;
		}
		if (k < 0 || k / (x - y) < t) {
			cout << "No";
			return 0;
		}
		cout << "Yes";
		return 0;
	}

	if (x == y) {
		if (k >= x || k + x <= r) {
			cout << "Yes";
			return 0;
		}
		else {
			cout << "No";
			return 0;
		}
	}

	for (int i = 0; i < x; i++) {
		if (i + y <= r)
			continue;
		if ((i - k) % g != 0)
			continue;
		long long j = (i - k) / g;
		j = ((j % x0) + x0) % x0;
		long long z = mulmod(j, y1, x0);

		long long t0 = z * (y / x) + (z * (y % x) + k) / x;
		if (t0 < t) {
			cout << "No";
			return 0;
		}
	}
	
	cout << "Yes";
	return 0;
}
