#include<bits/stdc++.h>
using namespace std;
int k;
vector<int> w[760];
struct node
{
int i,j,sum;
inline bool operator <(const node &x) const
{
return sum>x.sum;
}
};
priority_queue <node> q;
vector<int> merge(vector<int> a,vector<int> b)
{
vector<int>ans;
for(int t=0;t<k;t++)
{
q.push(node{t,0,a[t]+b[0]});
}
for(int t=1;t<=k;t++)
{
node v=q.top();q.pop();
ans.push_back(v.sum);
q.push(node{v.i,v.j+1,a[v.i]+b[v.j+1]});
}
return ans;
}
int main()
{
while(cin>>k && k)
{
for(int i=1;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
int t;
cin>>t;
w[i].push_back(t);
}
sort(w[i].begin(),w[i].end());
}
vector<int> v=merge(w[1],w[2]);
for(int i=3;i<=k;i++)
{
v=merge(v,w[i]);
}
for(int i=0;i<k;i++) cout<<v[i]<<" ";
cout<<endl;
}
return 0;
}