# include <algorithm>
# include <iostream>
# include <vector>
using std::cin;
using std::cout;
using std::vector;
constexpr long long inf = 0x3f3f3f3f3f3f3f3f;
int n;
vector<vector<long long>> graph;
void dijkstra(int s, vector<long long> &dis) {
for (int u = 0; u < n; ++u) {
dis[u] = graph[s][u];
for (int v = 0; v < n; ++v) {
if (v == s || v == u) {
continue;
}
dis[u] = std::min(dis[u], 0ll + std::min(graph[s][v], graph[v][u]) + graph[v][u]);
}
}
vector<long long> ds = dis;
for (int _ = 0; _ < n; ++_) {
int u = std::min_element(ds.begin(), ds.end()) - ds.begin();
for (int v = 0; v < n; ++v) {
if (dis[v] > dis[u] + graph[u][v]) {
ds[v] = dis[v] = dis[u] + graph[u][v];
}
}
ds[u] = inf;
}
}
int main() {
std::ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
graph.resize(n, vector<long long>(n, 0));
long long mn_len = 0x3f3f3f3f3f3f3f3f;
int mn_u = -1, mn_v = -1;
for (int i = 0; i < n; ++i) {
for (int j = 1; i + j < n; ++j) {
int w;
cin >> w;
int u = i, v = i + j;
graph[u][v] = graph[v][u] = w;
if (w < mn_len) {
mn_u = u;
mn_v = v;
mn_len = w;
}
}
}
for (int u = 0; u < n; ++u) {
for (int v = u + 1; v < n; ++v) {
if (u == mn_u && v == mn_v) {
graph[u][v] = graph[v][u] = 0x3f3f3f3f3f3f3f3f;
} else {
graph[u][v] -= mn_len;
graph[v][u] -= mn_len;
}
}
}
vector<long long> dis_u(n, inf), dis_v(n, inf);
dijkstra(mn_u, dis_u);
dijkstra(mn_v, dis_v);
for (int rt = 0; rt < n; ++rt) {
cout << (n - 1) * mn_len + std::min(dis_u[rt], dis_v[rt]) << "\n";
}
return 0;
}