#include<iostream>
#include<fstream>
#include<vector>
#include<tuple>
using namespace std;
vector<tuple<int,int,int>> edges;
int n, m;
const int inf = 1e9;
void citire() {
ifstream fin("bellmanford.in");
fin >> n >> m;
edges.resize(m);
int p1, p2, c;
for (int i = 0; i < m; i++) {
fin >> p1 >> p2 >> c;
edges[i] = make_tuple(p1, p2, c);
}
}
void bellmanford() {
vector<int> dist(n + 1, inf);
dist[1] = 0;
for (int i = 1; i <= n - 1; i++) {
for (auto e : edges) {
int p1, p2, c;
tie(p1, p2, c) = e;
if (dist[p1] != inf && dist[p1] + c < dist[p2]) {
dist[p2] = dist[p1] + c;
}
}
}
bool neg = false;
for (auto e : edges) {
int p1, p2, c;
tie(p1, p2, c) = e;
if (dist[p1] != inf && dist[p1] + c < dist[p2]) {
neg = true;
break;
}
}
ofstream fout("bellmanford.out");
if (neg) {
fout << "Ciclu negativ!";
}
else {
for (int i = 2; i <= n; i++) {
fout << dist[i] << " ";
}
}
}
int main() {
citire();
bellmanford();
return 0;
}