import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] status = new int[n][2];
//初始化
for(int i = 0;i<n;i++)status[i][0] = in.nextInt();
for(int i = 0;i<n;i++)status[i][1] = in.nextInt();
//先排序
Arrays.sort(status,(a,b)->Integer.compare(b[1], a[1]));
//sum推销前缀和 pre之前最大距离 last之后最大(距离+推销)体力
int[] last = new int[n];
for(int i = n-1;i>=0;i--) {
if(i!=n-1) {
last[i] = Math.max(last[i+1],status[i][0]*2+status[i][1]);
}else {
last[i] = status[i][0]*2+status[i][1];
}
}
status[0][0] *= 2;
for(int i = 1;i<n;i++) {
//status[i][0]充当pre
status[i][0] = Math.max(status[i][0]*2,status[i-1][0]);
//status[i][1]充当sum
status[i][1] += status[i-1][1];
}
//打印结果
for(int i = 0;i<n;i++) {
if(i==0) {
System.out.println(last[i]);
}else {
System.out.println(Math.max(status[i][0]+status[i][1],status[i-1][1]+last[i]));
}
}
}
}