// main只负责处理输入和输出,
// 按升序排序和按降序排序各自单独写一个函数,放在main的外面
#include <stdio.h>
// 按升序排序
void BubbleSortAscend(int* arr, int len) {
    for (int i = 1; i <= len - 1; i++) {
        for (int j = 0; j <= len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}
// 按降序排序
void BubbleSortDecend(int* arr, int len) {
    for (int i = 1; i <= len - 1; i++) {
        for (int j = 0; j <= len - 1 - i; j++) {
            if (arr[j] < arr[j + 1]) {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}
int main() {
    // 读入数组长度
    int n;
    scanf("%d", &n);
    // 读入数组
    int arr[n];
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);
    // 读入升序还是降序
    int DeOrAs;
    scanf("%d", &DeOrAs);
    // 进行排序
    if (DeOrAs == 1)
        BubbleSortDecend(arr, n);
    else
        BubbleSortAscend(arr, n);
    // 排序结束,可以输出
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    return 0;
}