#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
double fen,jiao,v,wei,ma,x,y,pai,ca,cb,l[110],r[110],b[110],t[110];
int n,i,j;
double qiu(double a)
{
 return(a*a*ca+cb*a);
}
bool can(int a)
{
  double bt,x1,x2,y1,y2;
  y1=qiu(l[a]);
  if (l[a]<=x && (t[a]-y1)*(b[a]-y1)<=0) return(false);
  y2=qiu(r[a]);
  if (r[a]<=x && (t[a]-y2)*(b[a]-y2)<=0) return(false); 
  bt=cb*cb+4*ca*t[a];
  if (bt>0)
  {
    x1=(-cb+sqrt(bt))/2/ca;
	x2=(-cb-sqrt(bt))/2/ca;
	if (x1<=x && l[a]<=x1 && r[a]>=x1) return(false);
	if (x2<=x && l[a]<=x2 && r[a]>=x2) return(false); 
  }
  if (bt==0)
  {
    if (wei<=x && l[a]<=wei && r[a]>=wei) return(false);  
  }
  bt=cb*cb+4*ca*b[a];
  if (bt>0)
  {
    x1=(-cb+sqrt(bt))/2/ca;
	x2=(-cb-sqrt(bt))/2/ca;
	if (x1<=x && l[a]<=x1 && r[a]>=x1) return(false);
	if (x2<=x && l[a]<=x2 && r[a]>=x2) return(false); 
  }
  if (bt==0)
  {
    if (wei<=x && l[a]<=wei && r[a]>=wei) return(false);  
  }
  if (x>=l[a] && x<=r[a] && ma>t[a] && y<t[a]) return(false);
  if (x>=l[a] && x<=r[a] && ma>b[a] && y<b[a]) return(false);
  return(true);
}
int main()
{
  scanf("%d%lf%lf%lf",&n,&v,&x,&y);
  for (i=1;i<=n;i++) scanf("%lf%lf%lf%lf",&l[i],&b[i],&r[i],&t[i]);
  pai=3.1415926535898/2;
  fen=pai/50000;
  for (i=1;i<50000;i++)
  {
    jiao=i*fen;
    ca=-9.8/(2*cos(jiao)*cos(jiao)*v*v);
    cb=sin(jiao)/cos(jiao);
	if (qiu(x)<=y) continue;
	wei=-cb/ca/2;
	ma=qiu(x);
    for (j=1;j<=n;j++) if (!can(j)) break;
    if (j>n) break;
  }
  if (i<50000) printf("Yes\n"); else printf("No\n");
}