
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <math.h>

using namespace std;

#define int_ int64_t
#define pb push_back
#define mp make_pair
#define ll long long
#define ull unsigned ll
#define db double
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define PII pair<int, int>

const int N=55;
const db G=9.8;
const db eps=1e-10;

int n,v,x,y;
int l[N],b[N],r[N],t[N];

db calc(db vy,db t) {
    return vy*t-0.5*G*t*t;
}

int cmp(db lb,db rb,db val) {
    return val<lb+eps?-1:val>rb-eps?1:0;
}

bool ok(int qx,int qy) {
    db a=0.25*G*G,b_=G*qy-v*v,c=qx*qx+qy*qy;
    db Delta=b_*b_-4*a*c;
    if (Delta<0) return false;
    for (int i=-1;i<=1;i+=2) {
        db t2=(-b_+i*sqrt(Delta))/(2*a);
        if (t2<0) continue;
        db t1=sqrt(t2);
        db vx=qx/t1;
        db vy=qy/t1+0.5*G*t1;
        db yt=calc(vy,x/vx);
        if (yt<y-eps) continue;
        bool ok=true;
        for (int i=1;i<=n;i++) {
            if (l[i]>=x) continue;
            if (r[i]==x&&y<=t[i]&&yt>=b[i]) 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 xT=cmp(l[i],r[i],vx*(vy/G));
            int yT=cmp(b[i],t[i],calc(vy,vy/G));
            if (xT==0&&yT>=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=1;i<=n;i++) {
        scanf("%d%d%d%d",l+i,b+i,r+i,t+i);
        r[i]=min(r[i],x);
    }
    bool ans=ok(x,y);
    for (int i=1;i<=n;i++) {
        if (ok(l[i],t[i])||ok(r[i],t[i])) {
            ans=true;
            break;
        }
    }
    if (ans) printf("Yes\n");
    else printf("No\n");
}
