#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
#include <stack>
#include <string>
#include <cmath>
#include <cstdlib>
#include <set>
using namespace std;

#define M 1e9+7
typedef long long ll;
typedef unsigned long long ull;
#define  mem(a) memset(a,0,sizeof a)
#define pi acos(-1.0)
#define inf 0x3f3f3f3f //1.7e9
const double eps = 1e-8;
int n, v,x,y;
const int maxn = 55;const double g = 9.8;
double L[maxn],B[maxn],R[maxn],T[maxn];
double calc(double vy,double t) { return vy*t - g*t*t/2; }
int cmp(double lb,double ub,double a) { return a < lb +eps ? -1: a > ub-eps ? 1: 0;}

bool check(double qx,double qy)
{
        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 j = 0 ; j < n ; 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],calc(vy,L[j]/vx));
                        int yr = cmp(B[j],T[j],calc(vy,R[j]/vx));
                        int xh = cmp(L[j],R[j],vx*(vy/g));
                        int yh = cmp(B[j],T[j],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 ++)
                if(R[i] > x)
                        R[i] = double(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]);
        }
        if(ok)
                printf("Yes\n");
        else
                printf("No\n");
}
int main()
{
        while(~scanf("%d %d %d %d",&n,&v,&x,&y))
        {
                for(int i = 0 ; i < n ; i ++)
                        scanf("%lf %lf %lf %lf",&L[i],&B[i],&R[i],&T[i]);
                solve();
        }
        return 0;
}
/*
0 7 3 1

1 7 3 1
1 1 2 2

1 7 2 2
0 1 1 2


*/