import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main{
static int[] used;
static int n;
static int m;
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String line[] = r.readLine().split(" ");
n = Integer.valueOf(line[0]);
m = Integer.valueOf(line[1]);
arr = new int[n];
String line2[] = r.readLine().split(" ");
for (int i = 0; i < n; i++) {
arr[i] = Integer.valueOf(line2[i]);
}
used = new int[n+10];
Arrays.sort(arr);
dfs(0,0);
}
public static void dfs(int x,int y){
// 当选择的数字太多的时候也直接return
if(y>m)
return;
if(y==m){
for (int i = 0; i <n; i++) {
if(used[i]==1)
System.out.print(arr[i]+" ");
}
System.out.println();
return;
}
if(x>=n)
return ;
int k = x;
int sum = y;
// 先尽可能选择小的数字 保持字典序
while(k<n && arr[x]==arr[k]){
used[k] = 1;
k++;
sum++;
}
dfs(k,sum);
// 然后一个个去掉
for (int i = k-1; i >=x ; i--) {
used[i] = 0;
sum--;
dfs(k,sum);
}
}
}