#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,s;
double e[105]={0},g1[105][105]={0},g2[105][105]={0},v;//g1存汇率,g2存佣金
bool floyd()
{
double d[105];
for(int i=1; i<=n; i++) d[i]=e[i];
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
if((e[i]-g2[i][j])*g1[i][j]>e[j]) e[j]=(e[i]-g2[i][j])*g1[i][j];
}
for(int i=1; i<=n; i++)
if(d[i]<e[i]) return 1;
return 0;
}
int main()
{
cin>>n>>m>>s>>v;
int i;
for(i=1;i<=m;i++)
{
int a,b;
double c,d,ll,f;
cin>>a>>b>>c>>d>>ll>>f;
g1[a][b]=c,g2[a][b]=d;
g1[b][a]=ll,g2[b][a]=f;
}
e[s]=v;
floyd();//注意两次floyd
floyd()? printf("YES\n"):printf("NO\n");
return 0;
}