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

const double eps = 1e-10;
const int MAX_N = 50;
const double g = 9.8;

int N, V, X, Y;
int L[MAX_N], B[MAX_N], R[MAX_N], T[MAX_N];

double position(double vy, double t) {
	return vy*t-g*t*t/2.0;
}

int cmp(double lb, double ub, double a) {
	return a < lb + eps?-1:a>ub-eps?1:0;
}

// 射出路径经过(qx,qy)时，能否击中猪
bool check(double qx, double qy) {
	double a = g*g/4.0, b=g*qy-V*V, c=qx*qx+qy*qy;
	double D = b*b-4*a*c;
	if (D < 0 && D > -eps) D = 0;
	if (D < 0) return false;
	for (int d = -1; d <= 1; d += 2) { // 验证解的循环
		double t2 = (-b + d*sqrt(D))/(2*a);
		if (t2 <= 0) continue;
		double t = sqrt(t2);
		double vx = qx/t, vy=(qy+g*t*t/2.0)/t;
		// 是否通过猪的正上方？
		double yt = position(vy, X/vx);
		if (yt < Y-eps) continue;

		bool ok = true;
		for (int i = 0; i < N; ++i) {
			if (L[i] >= X) continue;
			if (R[i] == X &&  Y <= T[i] && B[i] <= yt) ok = false;
			int yL = cmp(B[i], T[i], position(vy, L[i]/vx)); // 左侧相对位置
			int yR = cmp(B[i], T[i], position(vy, R[i]/vx)); // 右侧相对位置
			int xH = cmp(L[i], R[i], vx*(vy/g)); // 最高点相对位置
			int yH = cmp(B[i], T[i], position(vy, vy/g));
			if (xH == 0 && yH >= 0 && yL < 0) ok = false;
			if (yL * yR <= 0) ok = false;
		}
		if (ok) return true;
	}
	return false;
}

int main() {
	scanf("%d%d%d%d", &N, &V, &X, &Y);
	for (int i = 0; i < N; ++i) {
		scanf("%d%d%d%d", L+i, B+i, R+i, T+i);
	}
	for (int i = 0; i < N; ++i) {
		R[i] = min(R[i], X);
	}
	bool ok = check(X, Y);
	for (int i = 0; i < N; ++i) {
		ok |= check(L[i], T[i]);
		ok |= check(R[i], T[i]);
	}
	puts(ok?"Yes":"No");
	return 0;
}
