#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

const double g = 9.8;
const double EPS = 1.0e-6;
double K;
double v;

void kouhoth(int x, int y, vector<double> &TH)
{
	double K = 1.0*v*v/g;
	double d = K*K*x*x - x*x*(x*x+2*K*y);
	if(d<0) return;
	double kai1 = (K*x + sqrt(d)) / x / x;
	double kai2 = (K*x - sqrt(d)) / x / x;
	if(kai1+EPS>0) TH.push_back(atan(kai1+EPS));
	if(kai1-EPS>0) TH.push_back(atan(kai1-EPS));
	if(kai2+EPS>0) TH.push_back(atan(kai2+EPS));
	if(kai2-EPS>0) TH.push_back(atan(kai2-EPS));
}

double f(double th, int x)
{
	double K = 1.0*v*v/g;
	double si = sin(th);
	double co = cos(th);
	double ta = tan(th);
	double alpha = -0.5*(1.0+ta*ta)/K;
	double beta = 0.5*K*si*si;
	double naka = 1.0*x - K*si*co;
	return alpha * naka*naka + beta;
}

int main(){
	int n;
	int x, y;
	pair<double, double> buf;
	while(cin>>n>>v>>x>>y){
		vector<int> L, B, R, T;
		vector<double> TH;
		K = 1.0*v*v/g;
		for(int i=0; i<n; i++){
			int l, b, r, t;
			cin>>l>>b>>r>>t;
			if(x<l) continue;
			if(x<r) r = x;
			L.push_back(l);
			B.push_back(b);
			R.push_back(r);
			T.push_back(t);
			kouhoth(l,b,TH);
			kouhoth(r,b,TH);
			kouhoth(l,t,TH);
			kouhoth(r,t,TH);
		}
		kouhoth(x,y,TH);

		bool okflg = false;
		for(int i=0; i<TH.size(); i++){
			double th = TH[i];
			double mauey = f(th,x);
			if(mauey < y) continue;
			bool dameflg = false;
			for(int j=0; j<L.size(); j++){
				if(
					(f(th,L[j])<B[j]&&f(th,R[j])<B[j]) ||
					(f(th,L[j])>T[j]&&f(th,R[j])>T[j]) ){
						continue;
				} else {
					dameflg = true;
					break;
				}
			}

			if(!dameflg){
				bool butukaruflg = false;
				for(int j=0; j<L.size(); j++){
					if(R[j]==x){
						if(y<T[j] && T[j]<mauey){
							butukaruflg = true;
							break;
						}
					}
				}
				if(!butukaruflg){
					okflg = true;
					break;
				}
			}
		}
		if(okflg) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
}