#include<bits/stdc++.h>
using namespace std;
typedef pair<int, pair<int, int> > ppi; 
int main() {

	int k =0 , n=0;
	cin>>k;
	cin>>n;
	vector<vector<int>> inputv;
	for(int i =0;i<k ;i++){

		//int n =0;
		
		vector<int> input;
		for(int i =0;i<n;i++){
			
			int x;
			cin>>x;
			input.push_back(x);
		}
		inputv.push_back(input);
	}
	
/*	for(int i =0;i<inputv.size();i++){
		for(int k =0 ; k <inputv[i].size(); k++){
			cout<<inputv[i][k]<<" "<<endl;
		}
	}*/
	//now finding the Kth Largest Elemnt

	 priority_queue<ppi, vector<ppi>, greater<ppi> > pq; 

	for (int i = 0; i < inputv.size(); i++)
		pq.push(make_pair(i ,make_pair(0 , inputv[i][0])));
		
	while(!pq.empty()){
		
		ppi temp = pq.top();
		pq.pop();
		int i = temp.first; 
		int j = temp.second.first;
		int elem = temp.second.second;
		cout<<elem<<" ";
	}	
	// pq.push(make_pair(1 ,make_pair(0 , inputv[1][0])));
	// pq.push(make_pair(2 ,make_pair(0 , inputv[2][0])));
/*	vector<int> result;
	while(!pq.empty()){

		ppi temp = pq.top();
		pq.pop();
		int i = temp.first; 
		int j = temp.second.first;
		int elem = temp.second.second;
		cout<<elem<<" ";
		result.push_back(elem);

		if(j+1 < inputv[i].size())
			pq.push(make_pair(i ,make_pair(j+1 , inputv[i][j+1])));

	} 

	//for(int i =0;i<result.size();i++)
	//	cout<<result[i]<<" ";*/

	return 0;

}