#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e4;
bitset<maxn * 25> f[50][25];
int n;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n;
  vector<int> a(n * 2);
  for (int i = 1; i <= n * 2; i++) cin >> a[i - 1];
  sort(a.begin(), a.end());
  vector<vector<int>> ans(2);
  ans[0].push_back(a[0]), ans[1].push_back(a[1]);
  int sum = 0;
  for (int i = 2; i <= n * 2 - 1; i++) sum += a[i];
  int lim = sum / 2;
  f[1][0].set(0);
  for (int i = 2; i <= n * 2 - 1; i++)
    for (int j = 0; j <= min(i, n - 1); j++) {
      f[i][j] |= f[i - 1][j];
      if (j) f[i][j] |= f[i - 1][j - 1] << a[i];
    }
  int s1 = -1, cnt = n - 1, id = 2 * n - 1;
  for (int i = lim; i >= 0; i--) {
    if (f[id][cnt][i]) {
      s1 = i;
      break;
    }
  }
  assert(s1 >= 0);
  for (int i = id; i >= 2; i--) {
    assert(f[i][cnt][s1]);
    if (cnt >= 1 && s1 >= a[i] && f[i - 1][cnt - 1][s1 - a[i]]) {
      ans[0].push_back(a[i]);
      s1 -= a[i], cnt--;
    } else
      ans[1].push_back(a[i]);
  }
  sort(ans[0].begin(), ans[0].end());
  sort(ans[1].begin(), ans[1].end(), greater<int>());
  for (int i = 0; i <= 1; i++) {
    for (auto x : ans[i]) cout << x << " ";
    cout << "\n";
  }
}
