#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 ;     }   }   