#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
const int INF=1e9;
int f[maxn],x[maxn],y[maxn],w[maxn],n,ansi=INF,ansa=-1,m,num,ans=INF,r[maxn];
int find(int x) {return x==f[x]?x:f[x]=find(f[x]);}
bool cmp(const int i,const int j){return w[i]<w[j];}
int main()
{
while(cin>>n>>m&&n&&m)
{
int ans=-1;
cin>>n>>m;num=n;
for(int i=0;i<m;++i) {cin>>x[i]>>y[i]>>w[i];r[i]=i;};
sort(r,r+m,cmp);
int l,R;
for(l=0;l<m;++l)
{
num=n;ans=-1;ansa=-1;ansi=INF;
for(int i=0;i<=n;++i) f[i]=i;
for(int i=0;i<=l;++i)
{
int e=r[i];int X,Y;
if((X=find(x[e]))==(Y=find(y[e]))) continue;
ansa=max(ansa,w[e]);ansi=min(ansi,w[e]);f[X]=Y;num--;
if(num==1) break;
}
for(R=l;R<m;++R)
{
int e=r[R];int X,Y;
if((X=find(x[e]))==(Y=find(y[e]))) continue;
ansa=max(ansa,w[e]);ansi=min(ansi,w[e]);f[X]=Y;num--;
if(num==1) break;
}
if(num==1)
{
int qwq=ansa-ansi;
if (ans==-1) ans=qwq;
else ans=min(ans,qwq);
}
}
cout<<ans<<"\n";
}
return 0;
}