#include <bits/stdc++.h>
using namespace std;
int n;
int a[28 * 2];
bitset<1250005> bleh[28][28 * 2];
int sm;
vector<int> in[2];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < (signed)(n); i++) {
    cin >> a[i];
    sm += a[i];
  }
  for (int i = 0; i < (signed)(n); i++) {
    cin >> a[i + n];
    sm += a[i + n];
  }
  sort(a, a + 2 * n);
  bleh[0][1][0] = true;
  for (int i = (2); i <= (signed)(2 * n - 1); i++) {
    bleh[0][i] = bleh[0][i - 1];
    for (int j = (n - 1); j >= 1; j--) {
      bleh[j][i] = bleh[j][i - 1] | (bleh[j - 1][i - 1] << a[i]);
      for (int k = (0); k <= (signed)(400); k++) {
        if (bleh[j][i][k]) {
        }
      }
    }
  }
  int tot = sm - a[0] - a[1];
  int wtmoo = tot / 2;
  while (!bleh[n - 1][2 * n - 1][wtmoo]) {
    --wtmoo;
  }
  int cur = wtmoo;
  int cnt = n - 1;
  for (int i = (2 * n - 2); i >= 1; i--) {
    if (bleh[cnt][i][cur]) {
      in[0].push_back(a[i + 1]);
    } else {
      in[1].push_back(a[i + 1]);
      --cnt;
      cur -= a[i + 1];
    }
  }
  in[0].push_back(a[0]);
  in[1].push_back(a[1]);
  sort(in[0].begin(), in[0].end());
  sort(in[1].begin(), in[1].end(), greater<int>());
  for (int i = 0; i < (signed)(2); i++) {
    for (int j = 0; j < (signed)(n); j++) {
      cout << in[i][j] << " ";
    }
    cout << "\n";
  }
  return 0;
}
