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

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

pair<double, double> tanth(int x, int y, int v)
{
	double K = 1.0*v*v/g;
	double d = K*K*x*x - x*x*(x*x+2*K*y);

	if(d<0) return make_pair<double, double>(-1, -1);
	double kai1 = (K*x + sqrt(d)) / x / x;
	double kai2 = (K*x - sqrt(d)) / x / x;
	return make_pair<double, double>(kai1, kai2);
}

double f(double th, int v, 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 kakkononaka = 1.0*x - K*si*co;
	return alpha*kakkononaka*kakkononaka + beta;
}

int main(){
	int n;
	int v, x, y;
	pair<double, double> buf;
	while(cin>>n>>v>>x>>y){
		vector<int> allL;
		vector<int> allB;
		vector<int> allR;
		vector<int> allT;
		vector<double> allTAN;
		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;
			allL.push_back(l);
			allB.push_back(b);
			allR.push_back(r);
			allT.push_back(t);
			buf = tanth(l, b, v);
			if(buf.first+EPS>0) allTAN.push_back(buf.first+EPS);
			if(buf.first-EPS>0) allTAN.push_back(buf.first-EPS);
			if(buf.second+EPS>0) allTAN.push_back(buf.second+EPS);
			if(buf.second-EPS>0) allTAN.push_back(buf.second-EPS);
			buf = tanth(r, b, v);
			if(buf.first+EPS>0) allTAN.push_back(buf.first+EPS);
			if(buf.first-EPS>0) allTAN.push_back(buf.first-EPS);
			if(buf.second+EPS>0) allTAN.push_back(buf.second+EPS);
			if(buf.second-EPS>0) allTAN.push_back(buf.second-EPS);
			buf = tanth(l, t, v);
			if(buf.first+EPS>0) allTAN.push_back(buf.first+EPS);
			if(buf.first-EPS>0) allTAN.push_back(buf.first-EPS);
			if(buf.second+EPS>0) allTAN.push_back(buf.second+EPS);
			if(buf.second-EPS>0) allTAN.push_back(buf.second-EPS);
			buf = tanth(r, t, v);
			if(buf.first+EPS>0) allTAN.push_back(buf.first+EPS);
			if(buf.first-EPS>0) allTAN.push_back(buf.first-EPS);
			if(buf.second+EPS>0) allTAN.push_back(buf.second+EPS);
			if(buf.second-EPS>0) allTAN.push_back(buf.second-EPS);
		}
		buf = tanth(x, y, v);
		if(buf.first>0) allTAN.push_back(buf.first);
		if(buf.second>0) allTAN.push_back(buf.second);
		if(buf.first+EPS>0) allTAN.push_back(buf.first+EPS);
		if(buf.first-EPS>0) allTAN.push_back(buf.first-EPS);
		if(buf.second+EPS>0) allTAN.push_back(buf.second+EPS);
		if(buf.second-EPS>0) allTAN.push_back(buf.second-EPS);

		vector<double> allTH;
		for(int i=0; i<allTAN.size(); i++){
			allTH.push_back(atan(allTAN[i]));
		}

		if(0){
		// STõVer
			allTH.clear();
			int N = 1000000;
			for(int i=0; i<N; i++){
				if(i==0) continue;
				allTH.push_back(90.0/N*i);
			}
		}

		// áQ¨ª éÆ«
		bool okflg = false;
		for(int i=0; i<allTH.size(); i++){
			double th = allTH[i];
			double mauey = f(th,v,x);
			// Oñð
			if(mauey < y){
				// »à»àÍ¢ÄÈ¢
				continue;
			}
			bool dameflg = false;
			for(int j=0; j<allL.size(); j++){
				// ÅÌÉ¨¢Ä MAX(allR[j]) == x ÆÈÁÄ¢éÌÅA
				// êª¯ªsvÉÈÁ½
				if(
					(f(th,v,allL[j])<allB[j]&&f(th,v,allR[j])<allB[j]) ||
					(f(th,v,allL[j])>allT[j]&&f(th,v,allR[j])>allT[j]) ){
						// Êß
						continue;
				} else {
					dameflg = true;
					break;
				}
			}

			// êSÊß·éÁÛ¢Æ«
			if(!dameflg){
				bool butukaruflg = false;
				for(int j=0; j<allL.size(); j++){
					if(allR[j]==x){
						if(y<allT[j] && allT[j]<mauey){
							butukaruflg = true;
							break;
						}
					}
				}
				if(!butukaruflg){
					okflg = true;
					break;
				}
			}
		}
		if(okflg){
			cout<<"Yes"<<endl;
		} else {
			cout<<"No"<<endl;
		}
	}
}

Measured memory_bytes: 0