#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<time.h>
#define forn(i,n) for(int i=0;i<n;i++)
#define clr(a,b) memset(a,b,sizeof(a))
#define ll long long
#define lowb(i) (i&(-i))
#define bug(n,m,x) forn(i,n){forn(j,m)printf("%d ",x[i][j]);puts("");}puts("")
using namespace std;
const int inf=1<<30;
const double eps=1e-6;
const double pi=acos(-1.0);
//const double inf = 1e10;

int n;
double v,X,Y;
double L[60],B[60],R[60],T[60];
double vx,vy;
const double g=9.8;
double gety(double x){
    double t=x/vx;
    return vy*t-g*t*t/2;
}
bool judge(){
    double bx=X,by=gety(X);
    if(by<Y)return false;
    forn(i,n){
        if(L[i]<X){
            double l=L[i],r=min(R[i],X);
            double y1=gety(l),y2=gety(r);
            if(y1>=B[i]&&y1<=T[i])return false;
            if(y2>=B[i]&&y2<=T[i])return false;
//            if(y1<)
        }
        if(L[i]<=bx&&R[i]>=bx){
            if(B[i]<=Y&&T[i]>=Y)return false;
            if(B[i]>=Y&&B[i]<=by)return false;
        }
    }return true;
}
int main(){
    //freopen("d:\\in.txt","r",stdin);
    scanf("%d%lf%lf%lf",&n,&v,&X,&Y);
    forn(i,n)scanf("%lf%lf%lf%lf",&L[i],&B[i],&R[i],&T[i]);
    double step=0.001;
    for(vx=step;vx<=v;vx+=step){
        vy=sqrt(v*v-vx*vx);
        if(judge()){
            puts("Yes");return 0;
        }
    }
    puts("No");
    return 0;
}