Alice likes snow a lot! Unfortunately, this year's winter is already over, and she can't expect to have any more of it. Bob has thus bought her a gift — a large snow maker. He plans to make some amount of snow every day. On day i he will make a pile of snow of volume Vi and put it in her garden.

Each day, every pile will shrink a little due to melting. More precisely, when the temperature on a given day is Ti, each pile will reduce its volume by Ti. If this would reduce the volume of a pile to or below zero, it disappears forever. All snow piles are independent of each other. 

Note that the pile made on day i already loses part of its volume on the same day. In an extreme case, this may mean that there are no piles left at the end of a particular day.

You are given the initial pile sizes and the temperature on each day. Determine the total volume of snow melted on each day. 

Input

The first line contains a single integer N (1 ≤ N ≤ 105) — the number of days. 

The second line contains N integers V1, V2, ..., VN (0 ≤ Vi ≤ 109), where Vi is the initial size of a snow pile made on the day i.

The third line contains N integers T1, T2, ..., TN (0 ≤ Ti ≤ 109), where Ti is the temperature on the day i.

Output

Output a single line with N integers, where the i-th integer represents the total volume of snow melted on day i.

Examples

Input

3
10 10 5
5 7 2


Output

5 12 4


Input

5
30 25 20 15 10
9 10 12 4 13


Output

9 20 35 11 25

Note

In the first sample, Bob first makes a snow pile of volume 10, which melts to the size of 5 on the same day. On the second day, he makes another pile of size 10. Since it is a bit warmer than the day before, the first pile disappears completely while the second pile shrinks to 3. At the end of the second day, he has only a single pile of size 3. On the third day he makes a smaller pile than usual, but as the temperature dropped too, both piles survive till the end of the day.
import java.io.*;
import java.util.*;

public class Mainn {

	public static class InputReader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;

		public InputReader() {
			reader = new BufferedReader(new InputStreamReader(System.in), 32768);
			tokenizer = null;
		}

		public InputReader(InputStream stream) {
			reader = new BufferedReader(new InputStreamReader(System.in), 32768);
			tokenizer = null;
		}

		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}

		public char nextChar() {
			return next().charAt(0);
		}

		public int nextInt() {
			return Integer.parseInt(next());
		}

		public long nextLong() {
			return Long.parseLong(next());
		}

		public double nextDouble() {
			return Double.parseDouble(next());
		}

		public int[] nextIntArr(int n) {
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = this.nextInt();
			}
			return arr;
		}

		public Integer[] nextIntegerArr(int n) {
			Integer[] arr = new Integer[n];
			for (int i = 0; i < n; i++) {
				arr[i] = new Integer(this.nextInt());
			}
			return arr;
		}

		public int[][] next2DIntArr(int n, int m) {
			int[][] arr = new int[n][m];
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < m; j++) {
					arr[i][j] = this.nextInt();
				}
			}
			return arr;
		}

		public int[] nextSortedIntArr(int n) {
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = this.nextInt();
			}
			Arrays.sort(arr);
			return arr;
		}

		public long[] nextLongArr(int n) {
			long[] arr = new long[n];
			for (int i = 0; i < n; i++) {
				arr[i] = this.nextLong();
			}
			return arr;
		}

		public char[] nextCharArr(int n) {
			char[] arr = new char[n];
			for (int i = 0; i < n; i++) {
				arr[i] = this.nextChar();
			}
			return arr;
		}
	}

	public static InputReader scn = new InputReader();
	public static PrintWriter out = new PrintWriter(System.out);

	public static class pair {
		int pos;
		long val;

		pair(long v, int p) {
			val = v;
			pos = p;
		}

		pair(pair p) {
			val = p.val;
			pos = p.pos;
		}
	}

	public static void main(String[] args) {

		// InputStream inputStream = System.in; // Useful when taking input other than
		// console eg file handling // check ctor of inputReader
//		System.out.println("GO");

		int n = scn.nextInt();

		long[] arr = new long[n], tmp = new long[n], ans = new long[n + 1], pref = new long[n + 1], ans1 = new long[n];
		for (int i = 0; i < n; i++) {
			arr[i] = scn.nextInt();
		}

		for (int i = 0; i < n; i++) {
			tmp[i] = scn.nextInt();
		}

		pref[0] = tmp[0];
		for (int i = 1; i < n; i++) {
			pref[i] = tmp[i] + pref[i - 1];
		}
		for (int i = 0; i < n; i++) {
			if (arr[i] <= tmp[i]) {
				ans1[i] += arr[i];
				continue;
			}

			long val = arr[i];
			if(i > 0) {
				val += pref[i - 1];
			}
			int rv = upperBound(pref, val);
			ans[i]++;
			ans[rv]--;
			
			if(pref[rv] > val) {
				val = val - pref[rv - 1];
				if(val <= tmp[rv]) {
					ans1[rv] += val;
				}
			}
		}
		for (int i = 1; i < n; i++) {
			ans[i] += ans[i - 1];
		}
		for(int i = 0; i < n; i++) {
			ans1[i] += ans[i] * tmp[i];
			out.print(ans1[i] + " ");
		}
		out.println();
		out.close();
	}

	public static int bs(long val, long[] arr, int n) {
		int si = 0, li = n;

		while (si < li) {
			int mid = (si + li) >> 1;
			if (arr[mid] == val) {
				return mid;
			} else if (arr[mid] < val) {
				si = mid;
			} else {
				li = mid - 1;
			}
		}

		return si;
	}
	
	public static int upperBound(long[] list, long val) {
		int count = list.length - 1, first = 0, it = 0, step = 0;

		while (count > 0) {
			it = first;
			step = count / 2;
			it += step;
			if (!(val < list[it])) {
				first = it + 1;
				it++;
				count -= step + 1;
			} else {
				count = step;
			}
		}
		return first;
	}
}
