#include <bits/stdc++.h>
using namespace std;
const int MAXSIZE = 100005;
int n;
long long a[MAXSIZE], b[MAXSIZE];
long long f(long long x) {
long long cnt = 0;
int j = n;
for (int i = 1; i <= n; i++) {
while (j && a[i] + b[j] > x) {
j --;
}
cnt += j ;
}
return cnt;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
long long l = a[1] + b[1], r = a[n] + b[n];
long long sum ;
while (l <= r) {
long long mid = l + (r - l) / 2;
if (f(mid) > n) r = mid - 1;
else if (f(mid) == n) {
sum = mid;
break;
} else {
l = mid + 1;
}
sum = mid;
}
int cnt2 = 0;
vector<long long>Min(n);
for (int i = 1; i <= n; i++) {
if (a[i] + b[1] > sum) break;
for (int j = 1; j <= n; j++) {
if (a[i] + b[j] <= sum && cnt2 < n) {
Min[cnt2++] = a[i] + b[j];
} else break;
}
if (cnt2 >= n) break;
}
sort(Min.begin(), Min.end());
for (int i = 0; i < n; i++) {
cout << Min[i] << " ";
}
return 0;
}