#include
#include
#include
#include
#include
using namespace std;
struct node
{
int idx;
int dis;
int snow;
node(){}
node(int _idx, int _dis, int _snow)
{
idx=_idx;
dis=_dis;
snow=_snow;
}
bool operator < (const node &tmp) const
{
return dis > tmp.dis;
}
};
int main()
{
int a,n,x,y,d,s;
cin>>a>>n;
vector>par[n+5];
for(int i=0;i>x>>y>>d>>s;
par[x].push_back({y,d,s});
par[y].push_back({x, d, s});
}
priority_queueQ;
Q.push(node(1, 0, 1));
bool vis[a+5];
int pat[a+5];
for(int i=0; i<=a; i++)
{
vis[i]=false;
}
for(int i = 0; i <= a; i++)
{
pat[i]=2e9;
}
pat[1]=0;
while(!Q.empty())
{
node teme=Q.top();
Q.pop();
vis[teme.idx]=true;
// cout << teme.idx << endl;
if(teme.idx == a and teme.snow == 1) {
cout << teme.dis << endl;
cout << "DA" << endl;
return 0;
}
if(teme.idx == a and teme.snow == 0) {
cout << teme.dis << endl;
cout << "NE" << endl;
return 0;
}
for(int i=0;i