#include <iostream>
#include <stdio.h>
#include <cmath>

using namespace std;
const double eps=1e-8;
const double g=9.8;
const int NUM=60;
int L[NUM],B[NUM],R[NUM],T[NUM];
int n,v,x,y;
/////////////////////////////////////////////
int cmp(double l,double r,double now);
double cal(double vy,double t);
bool check(double qx,double qy);
/////////////////////////////////////////////

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]);
        R[i]=min(R[i],x);
    }
    bool ans=check(x,y);
    for (int i=0; i<n; i++)
    {
        ans|=check(L[i],T[i]);
        ans|=check(R[i],T[i]);
    }
    if (ans)
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}
int cmp(double l,double r,double now)
{
    return (now<l+eps)?-1:(now>r-eps)?1:0;
}
double cal(double vy,double t)
{
    return vy*t-g*t*t/2;
}
bool check(double qx,double qy)
{
    double a=g*g/4;
    double b=g*qy-v*v;
    double c=qx*qx+qy*qy;
    double d=b*b-4*a*c;
    if (d<0&&d+eps>0)//=
        d=0;
    else if (d<0)
        return false;
    for (int i=-1; i<=1; i+=2)
    {
        double t=(-b+i*sqrt(d))/(2*a);
        if (t-eps<0) continue;
        t=sqrt(t);
        double vy=(qy+g*t*t/2)/t;
        double vx=qx/t;
        double yt=cal(vy,x/vx);//能不能经过猪的上方
        if (eps<y-yt) continue;
        bool ok=true;
        for (int j=0; j<n&&ok; j++)
        {
            if (L[j]>=x)
                continue;
            if (R[j]==x&&y<=T[j]&&B[j]<=yt)
                ok=false;
            int yl=cmp(B[j],T[j],cal(vy,L[j]/vx));
            int yr=cmp(B[j],T[j],cal(vy,R[j]/vx));
            int xh=cmp(L[i],R[i],vx*(vy/g));
            int yh=cmp(B[i],T[i],cal(vy,vy/g));
            if (xh==0&&yh>=0&&yl<0) ok=false;
            if (yl*yr<=0)
                ok=false;
        }
        if (ok)
            return true;
    }
    return false;
}

