#include<bits/stdc++.h>
using namespace std;
class point{
    public:
    int x, y;
    point(int x__, int y__){
        x = x__;
        y = y__;
    }
	int gex(){
		return x;
	}
	int gey(){
		return y;
	}
};
class cmp{
    public:
    bool operator()(point a, point b){
        return a.x < b.x;
    }
};
int main() {
	int n, k;
	cin >> k >> n;
	int a[k][n];
	for(int i = 0; i < k; i++){
		for(int j = 0; j < n; j++){
			cin >> a[i][k];
		}
	}
	int arr[k * n];
    priority_queue< point, vector<point>, cmp > pq;
    vector<int> v(k, 1);
    for(int i = 0; i < k; i++){
        pq.push(point(a[i][0], i));
    }
    int i = 0;
    while(!pq.empty()){
        point p = pq.top();
        pq.pop();
        int x = p.x;
        int j = p.y;
        j;
        arr[i] = x;
        i++;
        if(v[j] < n){
            pq.push(point(a[j][v[j]], j));
            v[j]++;
        }
    }
	for(i = 0; i < k * n; i++){
		cout << arr[i] << " ";
	}
	cout << "\n";
	return 0;
}