#include <iostream>
#include <numeric>
#include <iomanip>
#include <cmath>
#include <climits>
#include <vector>
#include <algorithm>
using namespace std;


// capture list: danh sách các biến bên ngoài được lamda sử dụng, lamda có thể truy cập các biến trong phạm vi nơi nó
// được tạo ra, [=],[&]

// pass by reference

// pass by value

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int X;
    int n;
    if (!(cin >> n >> X)) return 0;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    vector<int> b = a;
    sort(a.begin(), a.end(), [X](int a, int b) {
        int d1 = abs(a - X);
        int d2 = abs(b - X);
        if (d1 != d2) {
            return d1 < d2;
        }
        return a < b;
    });
    for (int i = 0; i < n; i++) {
        cout << a[i] << (i == n - 1 ? "" : " ");
    }
    cout << "\n";
    sort(b.begin(), b.end(), [](int a, int b) {
        if (a % 2 == 0 && b % 2 != 0) return true;
        if (a % 2 != 0 && b % 2 == 0) return false;
        if (a % 2 == 0 && b % 2 == 0) return a < b;
        return a > b;
    });
    for (int i = 0; i < n; i++) {
        cout << b[i] << (i == n - 1 ? "" : " ");
    }
    cout << "\n";
    return 0;
}
