/*
n本の棒があり、各棒iの端点の座標は(pix,piy)と(qix,qiy)
指定されたm個の棒のペア(ai,bi)について、それらが連結であるか判定せよ。

2つの棒が共有点を持つとき連結
*/
using namespace std;
#include<iostream>
#include<cmath>
#include<algorithm>

const double EPS = 1e-10;
const double g = 9.8;
int N, V, X, Y;
int L[50], B[50], R[50], T[50];

//速度vyで上に打ち出した際のt秒後の位置を計算する
double calc(double vy, double t) {
    return vy * t - g * t * t / 2;
}
//aのlbとubに対する相対的な位置 -1 0 1 のどれかを返す
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) {
    //初速のx方向成分をvx, y方向成分をvyとし、(qx,qy)を通る時刻をtとしたときの連立方程式
    double a = g * g / 4, 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) / t;

        //豚より上を通過できるか判定
        double yt = calc(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], calc(vy, L[i] / vx)); //左端での相対位置
            int yR = cmp(B[i], T[i], calc(vy, R[i] / vx)); //右端での相対位置
            int xH = cmp(L[i], R[i], vx * (vy / g)); //最も高くなる地点の相対位置
            int yH = cmp(B[i], T[i], calc(vy, vy / g)); //右端での相対位置
            if (xH == 0 && yH >= 0 && yL < 0) ok = false;
            if (yL * yR <= 0) ok = false;
        }
        if (ok) return true;
    }
    return false;
}

void solve() {
    //豚より右にある障害物を縮めておく
    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]); //右上の角を通る場合
    }
    cout << (ok ? "Yes\n" : "No\n");
}

int main() {
    cin >> N >> V >> X >> Y;
    for (int i = 0; i < N; i++) {
        cin >> L[i] >> B[i] >> R[i] >> T[i];
    }
    solve();
}




