#include <bits/stdc++.h>
using namespace std;
vector<int> arr;
vector<int> top;
vector<int> bottom;
int ans[2][26];
bitset<1250005> dp[51][25];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < 2 * n; i++) {
    int x;
    cin >> x;
    arr.push_back(x);
  }
  sort(arr.begin(), arr.end());
  ans[0][0] = arr[0];
  ans[1][n - 1] = arr[1];
  arr.erase(arr.begin());
  arr.erase(arr.begin());
  int totalSum = 0;
  for (int i = 0; i <= 2 * n - 3; i++) {
    int x = arr[i];
    totalSum += x;
    dp[i][0][0] = 1;
    if (i == 0)
      dp[i][1][x] = 1;
    else {
      for (int taken = 1; taken < n; taken++) {
        dp[i][taken] = (dp[i - 1][taken]) | (dp[i - 1][taken - 1] << x);
      }
    }
  }
  int target = (totalSum + 1) / 2;
  while (!dp[2 * n - 3][n - 1][target]) target++;
  int taken = n - 1;
  for (int i = 2 * n - 3; i >= 1; i--) {
    if (dp[i - 1][taken][target]) {
      bottom.push_back(arr[i]);
    } else {
      top.push_back(arr[i]);
      target -= arr[i];
      taken--;
    }
  }
  if ((int)top.size() < (int)bottom.size())
    top.push_back(arr[0]);
  else
    bottom.push_back(arr[0]);
  for (int i = 0; i < n - 1; i++) ans[0][n - i - 1] = top[i];
  for (int i = 0; i < n - 1; i++) ans[1][i] = bottom[i];
  for (int i = 0; i < n; i++) cout << ans[0][i] << " ";
  cout << "\n";
  for (int i = 0; i < n; i++) cout << ans[1][i] << " ";
}
