#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

const int MAX = 8;

int N, M;
vector<int> v;
int visited[MAX];
map<int, int> numberCnt;

void func(int idx, int start, int cnt)
{
	if (cnt == M)
	{
		for (int i = 0; i < M; i++)
		{
			cout << v[visited[i]] << " ";
		}
		cout << "\n";

		return;
	}

	if (idx == N)
	{
		return;
	}

	for (int i = start; i < v.size(); i++)
	{
		if (numberCnt[v[i]])
		{
			numberCnt[v[i]]--;

			visited[idx] = i;
			func(idx + 1, i, cnt + 1);

			numberCnt[v[i]]++;
		}
	}
}

int main(void)
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cin >> N >> M;

	for (int i = 0; i < N; i++)
	{
		int num;
		cin >> num;

		if (!numberCnt.count(num))
		{
			numberCnt[num] = 1;

			v.push_back(num);
		}
		else
		{
			numberCnt[num]++;
		}
	}

	sort(v.begin(), v.end());

	func(0, 0, 0);

	return 0;
}