#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define forn(i,n) for(int i=0;i using namespace std; int dsu[2005]; int n, m; struct Road{ int u, v, w; void read(){ scanf("%d%d%d", &u, &v, &w); } }rd[15005]; int cmp(const Road & a,const Road &b){ return a.w < b.w; } int getgp(int u){ if (!dsu[u]) return u; return dsu[u] = getgp(dsu[u]); } int cnt; void bind(int u,int v){ u = getgp(u); v = getgp(v); if (u != v){ --cnt; dsu[v] = u; } } void solve(){ cin >> n >> m; forn(i, m) rd[i].read(); sort(rd, rd + m, cmp); int lf=0, rg=0; int res = 2e9 + 5; while (rg < m){ rg = lf; cnt = n - 1; memset(dsu, 0, sizeof(dsu)); while (rg < m&&cnt){ bind(rd[rg].u, rd[rg].v); ++rg; } if (cnt) break; while (rg < m&&rd[rg].w == rd[rg].w - 1)++rg; cnt = n - 1; memset(dsu, 0, sizeof(dsu)); lf = rg; while (cnt){ --lf; bind(rd[lf].u, rd[lf].v); } res = min(res, rd[rg - 1].w - rd[lf].w); ++lf; } if (res == 2e9 + 5){ res = -1; } cout << res << endl; } int main(){ //freopen("abc.txt", "r", stdin); int T; cin >> T; while (T--){ solve(); } return 0; }