不会优化QwQ
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define P 100003
#define inf 1000000007
using namespace std;
int fa[P],n,m,fx,fy,fb,dis[P],mn=inf,ans;
struct edg
{
int x,y,a,b;
}e[P];
bool cmd(edg n,edg m){return n.b<m.b;}
int fin(int x){return x==fa[x]?x:fa[x]=fin(fa[x]);}
int kro(int s)
{
rep(i,1,n) fa[i]=i;
rep(i,1,m)
{
if(e[i].a<=s)
{
fx=fin(e[i].x);
fy=fin(e[i].y);
fb=e[i].b;
if(fx!=fy)
{
fa[fx]=fy;
ans=fb;
if(fin(1)==fin(n)) return 1;
}
}
}
return 0;
}
int main()
{
//freopen("forest.in","r",stdin);
ios::sync_with_stdio(false);
cin >> n >> m;
rep(i,1,m)
{
cin >> e[i].x >> e[i].y >> e[i].a >> e[i].b;
dis[i]=e[i].a;
}
sort(e+1,e+m+1,cmd);
sort(dis+1,dis+m+1);
per(i,m,1)
{
if(dis[i]==dis[i+1]) continue;
int s=dis[i];
ans=0;
if(kro(s)) mn=min(mn,s+ans);
else break;
}
if(mn!=inf) cout << mn;
else cout << -1;
return 0;
}