#include <bits/stdc++.h>
using namespace std;
 
#define fastIO ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
#define endl '\n'
#define lli long long int
#define ld long double
#define p_b push_back
#define m_p make_pair
#define fs first
#define sc second
#define sz(x) ((lli)x.size())
#define all(x) x.begin(),x.end()
const lli mod = 1e9 + 7;
const lli N = 2e5 + 5;
/*****************************************************/
lli t,n,m,dist[N],vis[N]={0};
vector<pair<lli,lli> > v[N];
multiset<pair<lli,lli> > s;
int main()
{
    fastIO
    lli i,j,k,x,y;
    cin>>n>>m;
    for(i=0;i<n+5;i++)
        dist[i]=1e16;
    for(i=1;i<=m;i++)
    {
        cin>>x>>y>>k;
        v[x].p_b({y,k});
        v[y].p_b({x,k});
    }
    s.insert({0,1});
    dist[1]=0;
    while(!s.empty())
    {
        pair<lli,lli> p=*(s.begin());
        s.erase(s.begin());
        if(vis[p.sc])
            continue;
        vis[p.sc]=1;
        x=p.sc;
        for(i=0;i<sz(v[x]);i++)
        {
            y=v[x][i].fs;
            for(j=0;j<sz(v[y]);j++)
            {
                lli curr=v[x][i].sc+v[y][j].sc;
                curr=(curr*curr)+dist[x];
                if(dist[v[y][j].fs]>curr)
                {
                    dist[v[y][j].fs]=curr;   
                    s.insert({curr,v[y][j].fs});
                }
            }
        }
    }
    for(i=1;i<=n;i++)
    {
        if(dist[i]==1e16)
            cout<<"-1 ";
        else
            cout<<dist[i]<<" ";
    }
    // cerr<< '\n' << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms\n" ;
    return 0;
}