#include <bits/stdc++.h>
using namespace std;
#define MAX 10001000
#define int long long
int n, ans[MAX], v[MAX], qz[MAX], na=0;
struct Cy {
int s, a;
} arr[MAX];
bool cmp(Cy x, Cy y) { return x.a < y.a; }
signed main() {
cin >> n;
for (int i = 1; i <= n; i++) {
scanf("%d",&arr[i].s);
}
for (int i = 1; i <= n; i++) {
scanf("%d",&arr[i].a);
}
sort(arr + 1, arr + n + 1, cmp);
int sxd=0, fl=0;
for (int i = 1; i <= n; i++) {
if (ans[1] + fl < arr[i].s * 2 + arr[i].a) {
ans[1] = arr[i].a;
fl = 2 * arr[i].s;
sxd = i;
na = arr[i].a;
}
}
v[sxd] = 1;
cout << fl + ans[1] << endl;
for (int i = n; i >=1; i--) {
if (v[i] == 1)
i--, ans[n-i+2] = ans[n-i+1];
if (arr[i].s > fl / 2)
na += arr[i].a, ans[n-i+2] = na, fl = 2 * arr[i].s;
else
na += arr[i].a, ans[n-i+2] = na;
printf("%d\n",fl + ans[n-i+2]);
}
return 0;
}