#include <bits/stdc++.h>
using namespace std;
const int N = 25;
const int M = N * 50000 + 1;
long long dp[N][M];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  int n;
  cin >> n;
  vector<int> v(2 * n);
  for (int& x : v) cin >> x;
  sort(begin(v), end(v));
  int v0 = v[0];
  int v1 = v[1];
  swap(v[0], v[2 * n - 2]);
  swap(v[1], v[2 * n - 1]);
  n--;
  v.resize(2 * n);
  int tot = accumulate(begin(v), end(v), 0);
  for (int i = 0; i < (2 * n); i++) {
    int x = v[i];
    long long b = 1LL << i;
    for (int j = (n - 1); j; j--)
      for (int k = 0; k < (M); k++)
        if (dp[j][k]) dp[j + 1][k + x] = dp[j][k] | b;
    dp[1][x] = b;
  }
  int lo_d = 1e9;
  long long m;
  int obj = tot / 2;
  for (int k = 0; k < (M); k++)
    if (dp[n][k] && lo_d > abs(obj - k)) {
      lo_d = abs(obj - k);
      m = dp[n][k];
    }
  vector<int> l, r;
  l.push_back(v0), r.push_back(v1);
  for (int i = 0; i < (2 * n); i++) (m & 1LL << i ? l : r).push_back(v[i]);
  sort(begin(l), end(l)), sort(begin(r), end(r)), reverse(begin(r), end(r));
  for (int x : l) cout << x << ' ';
  cout << '\n';
  for (int x : r) cout << x << ' ';
  cout << '\n';
}
