#include <bits/stdc++.h>
#define ll long long
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#define fi first
#define se second
#define M 1000000007
#define MAXN 10001
#define GIOIHAN 1000001
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define ALPHA_SIZE 26
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end()); // dùng để nén sort mảng compare
using namespace std;
ll n, m, mi, ma ,ans;
ll sz[MAXN], par[MAXN] ;
struct Edge {
ll u, v, w ;
bool operator < (const Edge &other) const {
return w< other.w;
}
} edge[MAXN];
ll find_set(ll a ) {
if(par[a] == a) return a;
return par[a] =find_set(par[a]);
}
void uninon_set(ll a, ll b) {
a = find_set(a) ;
b = find_set(b);
if(a== b) return ;
if(sz[a] < sz[b]) swap(a,b) ;
sz[a] += sz[b] ;
par[b]= a;
}
void init() {
cin>>n >> m ;
for(ll i = 0 ; i < m ; i ++ ) {
cin>>edge[i].u >> edge[i].v >> edge[i].w;
}
sort(edge, edge+ m );
// for(ll i = 0 ; i < m ; i ++ ){
// cout<<edge[i].u<<" " << edge[i].v<< " "<< edge[i].w<<el ;
// }
}
void restart() {
for(ll i = 0 ; i <= n ; i ++ ) par[i] = i, sz[i] = 1;
}
ll check(ll l) {
restart() ;
ll cnt = 0; mi = LONG_MAX, ma=LONG_MIN ;
for(ll i = l ; i <m ; i ++ ) {
ll x= find_set(edge[i].u);
ll y= find_set(edge[i].v);
if(x != y ) {
cnt++ ;
uninon_set(x, y) ;
ma= max(edge[i].w,ma);
mi = min(edge[i].w,mi);
if(cnt == n- 1 ) return ma-mi;
}
}
return LONG_MAX ;
}
void solve() {
ans= LONG_MAX ;
for(ll i = 0 ; i < m ; i ++ ) {
ans = min(check(i) , ans );
// cout<< check(i)<<el;
}
if(ans == LONG_MAX) {
cout<<"NOT FOUND" ;
} else cout<<ans;
}
__ROOT__ {
fast;
init();
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgX19ST09UX18gaW50IG1haW4oKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgTSAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYTiAxMDAwMQojZGVmaW5lIEdJT0lIQU4gMTAwMDAwMQojZGVmaW5lIEJMT0NLX1NJWkUgNDI1CiNkZWZpbmUgTUFYX05PREUgMTAwMTAwMQojZGVmaW5lIEFMUEhBX1NJWkUgMjYKI2RlZmluZSBjb21wYXJlKHYpIHNvcnQoKHYpLmJlZ2luKCksICh2KS5lbmQoKSk7ICh2KS5lcmFzZSh1bmlxdWUoKHYpLmJlZ2luKCksICh2KS5lbmQoKSksICh2KS5lbmQoKSk7IC8vIGTDuW5nIMSR4buDIG7DqW4gc29ydCBt4bqjbmcgY29tcGFyZQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsbCBuLCAgbSwgbWksIG1hICxhbnM7CmxsIHN6W01BWE5dLCBwYXJbTUFYTl0gIDsKc3RydWN0IEVkZ2UgewogICAgbGwgdSwgdiwgdyA7CiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IEVkZ2UgJm90aGVyKSBjb25zdCB7CiAgICAgICByZXR1cm4gdzwgb3RoZXIudzsKICAgIH0KfSBlZGdlW01BWE5dOwpsbCBmaW5kX3NldChsbCBhICkgewogICAgaWYocGFyW2FdID09IGEpIHJldHVybiBhOwogICAgcmV0dXJuIHBhclthXSA9ZmluZF9zZXQocGFyW2FdKTsKfQp2b2lkIHVuaW5vbl9zZXQobGwgYSwgbGwgYikgewogICAgYSA9IGZpbmRfc2V0KGEpIDsKICAgIGIgPSBmaW5kX3NldChiKTsKICAgIGlmKGE9PSBiKSByZXR1cm4gOwogICAgaWYoc3pbYV0gPCBzeltiXSkgc3dhcChhLGIpIDsKICAgIHN6W2FdICs9IHN6W2JdIDsKICAgIHBhcltiXT0gIGE7Cn0Kdm9pZCBpbml0KCkgewogICAgY2luPj5uID4+IG0gOwogICAgZm9yKGxsIGkgPSAgMCA7IGkgPCBtIDsgIGkgKysgKSB7CiAgICAgICAgY2luPj5lZGdlW2ldLnUgPj4gZWRnZVtpXS52ID4+IGVkZ2VbaV0udzsKICAgIH0KICAgIHNvcnQoZWRnZSwgZWRnZSsgbSApOwovLyAgICAgZm9yKGxsIGkgPSAwIDsgaSAgPCBtIDsgIGkgKysgKXsKLy8gICAgICAgIGNvdXQ8PGVkZ2VbaV0udTw8IiAiIDw8IGVkZ2VbaV0udjw8ICIgIjw8IGVkZ2VbaV0udzw8ZWwgOwovLyAgICAgfQp9CnZvaWQgcmVzdGFydCgpIHsKICAgIGZvcihsbCBpID0gMCAgOyBpICA8PSBuIDsgaSArKyApIHBhcltpXSA9IGksICBzeltpXSA9IDE7Cn0KbGwgY2hlY2sobGwgbCkgewogICAgcmVzdGFydCgpIDsKICAgIGxsIGNudCA9IDA7ICBtaSA9IExPTkdfTUFYLCAgbWE9TE9OR19NSU4gIDsKICAgIGZvcihsbCBpID0gbCA7ICBpIDxtIDsgaSArKyApIHsKICAgICAgICBsbCB4PSBmaW5kX3NldChlZGdlW2ldLnUpOwogICAgICAgIGxsIHk9IGZpbmRfc2V0KGVkZ2VbaV0udik7CiAgICAgICAgaWYoeCAhPSB5ICkgewogICAgICAgICAgICBjbnQrKyA7CiAgICAgICAgICAgIHVuaW5vbl9zZXQoeCwgeSkgOwogICAgICAgICAgICBtYT0gbWF4KGVkZ2VbaV0udyxtYSk7CiAgICAgICAgICAgIG1pID0gbWluKGVkZ2VbaV0udyxtaSk7CiAgICAgICAgICAgICAgaWYoY250ID09IG4tIDEgKSByZXR1cm4gbWEtbWk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIExPTkdfTUFYIDsKfQp2b2lkIHNvbHZlKCkgewogICAgIGFucz0gTE9OR19NQVggOwogICAgZm9yKGxsIGkgPSAwIDsgaSA8IG0gOyBpICsrICkgewogICAgICBhbnMgPSBtaW4oY2hlY2soaSkgLCBhbnMgKTsKLy8gICAgICBjb3V0PDwgY2hlY2soaSk8PGVsOwogICAgfQogICAgaWYoYW5zID09IExPTkdfTUFYKSB7CiAgICAgICAgY291dDw8Ik5PVCBGT1VORCIgOwogICAgfSBlbHNlIGNvdXQ8PGFuczsKfQoKX19ST09UX18gewogICAgZmFzdDsKICAgIGluaXQoKTsKICAgIHNvbHZlKCk7Cn0K