#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
typedef double dl;
struct lth{
dl xa,xb,ya,yb;
}a[200005];
bool cmp(lth a,lth b){
return max(a.ya,a.yb)>=max(b.ya,b.yb);
}
bool vis[200005]={0};
int main(){
int n;
dl s;
cin>>n>>s;
for(int i=1;i<=n;++i)cin>>a[i].xa>>a[i].ya>>a[i].xb>>a[i].yb;
sort(a+1,a+1+n,cmp);
dl now=s,yy=1e9+10;
while(1){
bool flag=0;
for(int i=1;i<=n;++i){
if(vis[i])continue;
dl yn=(a[i].ya-a[i].yb)/(a[i].xa-a[i].xb)*now+(a[i].yb*a[i].xa-a[i].ya*a[i].xb)/(a[i].xa-a[i].xb);
if(min(a[i].xa,a[i].xb)<now && max(a[i].xa,a[i].xb)>now && yy>=yn){
if(a[i].ya>a[i].yb)now=a[i].xb;
else now=a[i].xa;
vis[i]=1;
flag=1;
yy=min(a[i].ya,a[i].yb);
}
}
if(!flag){
int ans=now;
cout<<ans;
return 0;
}
}
return 0;
}