#include "aplusb.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void dbg() { cout << "\n"; }
template<typename H, typename... T>
void dbg(H h, T... t) {
cout << h << " ";
dbg(t...);
}
std::vector<int> smallest_sums(int N, std::vector<int> A, std::vector<int> B) {
int l = 1, r = 2e9;
int ans = 0;
while (l < r) {
int mid = (l+r)/2;
int cnt = 0;
for (int i = 0; i < N; i++) {
int need = mid-A[i];
cnt += (upper_bound(B.begin(),B.end(),need)-B.begin());
// dbg(i,(upper_bound(B.begin(),B.end(),need)-B.begin()));
}
// dbg(mid,cnt);
if (cnt < N) l = mid+1;
else r = mid, ans = cnt;
// break;
}
vector<int> v;
for (int i = 0; i < N; i++) {
int need = l-A[i];
for (int j = 0; j < upper_bound(B.begin(),B.end(),need)-B.begin(); j++) {
v.push_back(A[i]+B[j]);
}
}
sort(v.begin(),v.end());
vector<int> b;
for (int i = 0; i < N; i++) b.push_back(v[i]);
// dbg(l,ans);
return b;
}