#include <bits/stdc++.h>
using namespace std;
void solve() {
  srand(time(0));
  int n, k;
  std::cin >> n >> k;
  std::vector<int> a(n + k + 1);
  for(int i = 1; i <= n + k; i++) {
    std::cin >> a[i];
  }
  std::function<int()> random = [&] () {
    return (rand() % n) + 1;
  };
  std::function<void(int)> Do = [&] (int s) {
    std::map<int, int> pos;
    for(int i = 1; i <= n + k; i++) {
      pos[a[i]] = i;
    }
    std::vector<int> ans;
    std::vector<int> was(n + k + 1);
    for(int i = 1; i <= n + k && ans.size() < n; i++) {
      if(was[i]) {
        continue;
      }
      if(pos[s - a[i]] > i) {
        was[pos[s - a[i]]] = 1;
        ans.push_back(a[i]);
        ans.push_back(s - a[i]);
      }
    }
    if(ans.size() == n) {
      std::sort(ans.begin(), ans.end());
      for(int i = 0; i < n; i++) {
        std::cout << ans[i] << " ";
      }
      exit(0);
    }
  };
  while(true) {
    int get = random();
    for(int i = 1; i <= n; i++) {
      if(i == get) {
        continue;
      }
      Do(a[get] + a[i]);
    }
  }
}
signed main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  int t = 1;
  //std::cin >> t;
  while (t--) {
      solve();
  }
  return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |