// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll int
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#pragma GCC optimize("O2")
#pragma GCC target("avx,avx2,fma")
#define fi first
#define se second
#define M 1000000007
#define MAXN 1001
#define GIOIHAN 1000001
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define LOG 19
#define ALPHA_SIZE 26
#define BASE 311
#define NAME "file"
#define INF 1e8
#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;
const ll MOD[] = {(ll)1e9 + 2277, (ll)1e9 + 5277, (ll)1e9 + 8277, (ll)1e9 + 9277, (ll) 1e9 + 7 };
const ll NMOD = 1;
const int dx[] = {-1, 0, 1,0};
const int dy[] = {0, 1, 0, -1};
//**Variable**//
ll n, m ;
ll d1[MAXN][MAXN] ;
vector<pair<ll,ll > >adj[MAXN] ;
//**Struct**//
//**Function**//
void resett() {
for(ll i = 0 ; i <= n ; i ++ ) {
for(ll j = 0 ; j <= n ; j ++ ) d1[i][j] = INF ;
}
for(ll i = 1 ; i <= n ; i++ ) adj[i].resize(0);
}
void init() {
cin>>n>> m ;
for(ll i = 1 ; i <= m ; i ++ ) {
ll x, y, w;
cin>>x>> y>> w;
adj[x].push_back({y, w }) ;
}
}
void dijkstra(ll st, ll d[] ) {
d[st] = 0 ;
priority_queue<pair<ll,ll>,vector<pair<ll,ll>>, greater<pair<ll,ll> > > pq ;
pq.push({0, st }) ;
while(!pq.empty()) {
pair<ll,ll> u = pq.top() ;
pq.pop() ;
if(d[u.se] < u.fi) continue ;
for(pair<ll,ll> v : adj[u.se]) {
if(d[v.fi] > d[u.se] + v.se ) {
pq.push({d[v.fi] = d[u.se] + v.se, v.fi }) ;
}
}
}
}
void solve() {
for(ll i = 1 ; i <= n ; i ++ ) dijkstra(i, d1[i]) ;
for(ll i = 1 ; i <= n ; i ++ ) {
ll ans = INF ;
for(ll j = 1 ; j <= n ; j ++ ) {
if(i == j) continue ;
// cout<<d1[i][j] <<" " << d1[j][i] <<el ;
ans = min(d1[i][j] + d1[j][i], ans ) ;
}
cout<<(ans == INF ? -1 : ans ) << el ;
}
}
__ROOT__ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
fast;
ll t;
cin >> t;
for(ll i = 0 ; i < MAXN ; i ++ ) {
for(ll j = 0 ; j < MAXN ; j ++ ) d1[i][j] = INF ;
}
while(t-- ) {
init();
solve();
resett() ;
}
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgaW50CiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgX19ST09UX18gaW50IG1haW4oKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzIiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eCxhdngyLGZtYSIpCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBNIDEwMDAwMDAwMDcKI2RlZmluZSBNQVhOIDEwMDEKI2RlZmluZSBHSU9JSEFOIDEwMDAwMDEKI2RlZmluZSBCTE9DS19TSVpFIDQyNQojZGVmaW5lIE1BWF9OT0RFIDEwMDEwMDEKI2RlZmluZSBMT0cgMTkKI2RlZmluZSBBTFBIQV9TSVpFIDI2CiNkZWZpbmUgQkFTRSAzMTEKI2RlZmluZSBOQU1FICJmaWxlIgojZGVmaW5lIElORiAxZTgKI2RlZmluZSBjb21wYXJlKHYpIHNvcnQoKHYpLmJlZ2luKCksICh2KS5lbmQoKSk7ICh2KS5lcmFzZSh1bmlxdWUoKHYpLmJlZ2luKCksICh2KS5lbmQoKSksICh2KS5lbmQoKSk7IC8vIGTDuW5nIMSR4buDIG7DqW4gc29ydCBt4bqjbmcgY29tcGFyZQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsbCBNT0RbXSA9IHsobGwpMWU5ICsgMjI3NywgKGxsKTFlOSArIDUyNzcsIChsbCkxZTkgKyA4Mjc3LCAobGwpMWU5ICsgOTI3NywgKGxsKSAxZTkgKyA3IH07CmNvbnN0IGxsIE5NT0QgPSAxOwpjb25zdCBpbnQgZHhbXSA9IHstMSwgMCwgMSwwfTsKY29uc3QgaW50IGR5W10gPSB7MCwgMSwgMCwgLTF9OwovLyoqVmFyaWFibGUqKi8vCmxsIG4sICBtICAgOwpsbCBkMVtNQVhOXVtNQVhOXSA7CnZlY3RvcjxwYWlyPGxsLGxsID4gPmFkaltNQVhOXSA7Ci8vKipTdHJ1Y3QqKi8vCgovLyoqRnVuY3Rpb24qKi8vCnZvaWQgcmVzZXR0KCkgewogICAgZm9yKGxsIGkgPSAwIDsgaSA8PSBuICA7IGkgKysgKSB7CiAgICAgICAgZm9yKGxsIGogID0gMCA7IGogPD0gbiA7IGogKysgKSBkMVtpXVtqXSA9IElORiA7CiAgICB9CiAgICBmb3IobGwgaSA9IDEgOyBpIDw9IG4gIDsgaSsrICkgYWRqW2ldLnJlc2l6ZSgwKTsKfQp2b2lkIGluaXQoKSB7CiAgICBjaW4+Pm4+PiBtIDsKICAgIGZvcihsbCBpID0gMSA7IGkgPD0gbSA7IGkgKysgKSB7CiAgICAgICAgbGwgeCwgeSwgdzsKICAgICAgICBjaW4+Png+PiB5Pj4gdzsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKHt5LCB3IH0pIDsKICAgIH0KfQp2b2lkIGRpamtzdHJhKGxsIHN0LCBsbCBkW10gKSB7CiAgICBkW3N0XSA9IDAgOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCxsbD4sdmVjdG9yPHBhaXI8bGwsbGw+PiwgZ3JlYXRlcjxwYWlyPGxsLGxsPiA+ID4gcHEgOwogICAgcHEucHVzaCh7MCwgc3QgfSkgOwogICAgd2hpbGUoIXBxLmVtcHR5KCkpIHsKICAgICAgICBwYWlyPGxsLGxsPiB1ID0gcHEudG9wKCkgIDsKICAgICAgICBwcS5wb3AoKSA7CiAgICAgICAgaWYoZFt1LnNlXSA8IHUuZmkpIGNvbnRpbnVlIDsKICAgICAgICBmb3IocGFpcjxsbCxsbD4gIHYgOiBhZGpbdS5zZV0pIHsKICAgICAgICAgICAgaWYoZFt2LmZpXSA+IGRbdS5zZV0gKyB2LnNlICkgewogICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2LmZpXSA9IGRbdS5zZV0gKyB2LnNlLCB2LmZpIH0pIDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQp2b2lkIHNvbHZlKCkgewogICAgZm9yKGxsIGkgPSAxIDsgaSA8PSBuIDsgaSArKyApIGRpamtzdHJhKGksICBkMVtpXSkgOwogICAgZm9yKGxsIGkgPSAxIDsgaSA8PSBuIDsgaSArKyApIHsKICAgICAgICBsbCBhbnMgPSBJTkYgOwogICAgICAgIGZvcihsbCBqID0gMSA7IGogPD0gbiA7IGogKysgKSB7CiAgICAgICAgICAgIGlmKGkgPT0gaikgIGNvbnRpbnVlIDsKLy8gICAgICAgICAgICBjb3V0PDxkMVtpXVtqXSA8PCIgIiA8PCBkMVtqXVtpXSA8PGVsIDsKICAgICAgICAgICAgYW5zID0gbWluKGQxW2ldW2pdICsgZDFbal1baV0sIGFucyApIDsKICAgICAgICB9CiAgICAgICAgY291dDw8KGFucyA9PSBJTkYgPyAtMSA6IGFucyApIDw8IGVsIDsKICAgIH0KfQoKX19ST09UX18gewovLyAgICAgZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwovLyAgICAgZnJlb3BlbihOQU1FIi5vdXQiICwgInciLCBzdGRvdXQpIDsKICAgIGZhc3Q7CiAgICBsbCB0OwogICAgY2luID4+IHQ7CiAgICAgZm9yKGxsIGkgPSAwIDsgaSA8IE1BWE4gIDsgaSArKyApIHsKICAgICAgICBmb3IobGwgaiAgPSAwIDsgaiA8IE1BWE4gIDsgaiArKyApIGQxW2ldW2pdID0gSU5GIDsKICAgIH0KICAgIHdoaWxlKHQtLSAgKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICAgICAgcmVzZXR0KCkgOwogICAgfQp9Cg==