1 #include <iostream>
2 #include <cmath>
3 using namespace std;
4
5 int a[1020];
6
7 void fix(int a[], int i, int n)
8 {
9 int l = 2 * i, r = 2 * i + 1, maxx = i;
10 if (l <= n && a[l] > a[i])
11 {
12 maxx = l;
13 }
14 else{
15 maxx = i;
16 }
17 if (r <= n && a[r] > a[maxx])
18 {
19 maxx = r;
20 }
21 if (maxx != i)
22 {
23 swap(a[i], a[maxx]);
24 fix(a, maxx, n);
25 }
26 }
27 void heap_sort(int a[], int n)
28 {
29 for (int i = n / 2 - 1; i >= 0; i--)
30 {
31 fix(a, i, n - 1);
32 }
33 for (int i = n - 1; i >= 1; i--)
34 {
35 swap(a[0], a[i]);
36 fix(a, 0, i - 1);
37 }
38 }
39 int main()
40 {
41 int n, m;
42 while (cin >> n)
43 {
44 if (n == 0)break;
45 cin >> m;
46 for (int i = 0; i < n; i++)
47 {
48 cin >> a[i];
49 }
50 heap_sort(a, n);
51 if (m == 0)
52 {
53 for (int i = 0; i < n - 1; i++)
54 {
55 cout << a[i] << " ";
56 }
57 cout << a[n - 1] << endl;
58 }
59 else{
60 for (int i = n - 1; i > 0; i--)
61 {
62 cout << a[i] << " ";
63 }
64 cout << a[0] << endl;
65 }
66 }
67
68
69 return 0;
70 }