#include <bits/stdc++.h>
using namespace std;
vector<string> ans;
vector<string> List[20];
string a[101010];
int n;
char d;
int main() {
  cin >> n;
  int tot = n / 2;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    tot += a[i].size();
  }
  cin >> d;
  tot /= (n / 2);
  for (int i = 1; i <= 10; i++) List[i].clear();
  for (int i = 1; i <= n; i++) List[a[i].size()].push_back(a[i]);
  ans.clear();
  for (int i = 1; i <= 10; i++) sort(List[i].begin(), List[i].end());
  for (int i = 1; i <= 10; i++) {
    int j = tot - 1 - i;
    if (i > j) break;
    if (i == j) {
      for (int k = 0; k < List[i].size(); k += 2)
        ans.push_back(List[i][k] + d + List[i][k + 1]);
      continue;
    }
    for (int k = 0; k < List[i].size(); k++) {
      string s1 = List[i][k] + d + List[j][k];
      string s2 = List[j][k] + d + List[i][k];
      ans.push_back(min(s1, s2));
    }
  }
  sort(ans.begin(), ans.end());
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << endl;
  return 0;
}
