Producing Snow

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 V i 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 T i, each pile will reduce its volume by T i. 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 V 1, V 2, …, V N (0 ≤ V i ≤ 109), where V i is the initial size of a snow pile made on the day i.

The third line contains N integers T 1, T 2, …, T N (0 ≤ T i ≤ 109), where T i 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.

Solution:

#include <bits/stdc++.h>

using namespace std;

int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
    cin >> v[i];
}
vector<int> t(n);
for (int i = 0; i < n; i++) {
    cin >> t[i];
}
multiset<long long> s;
long long dec = 0;
for (int i = 0; i < n; i++) {
    s.insert(dec + v[i]);
    long long cur = 0;
    while (!s.empty() && (*s.begin()) <= dec + t[i]) {
      cur += (*s.begin()) - dec;
      s.erase(s.begin());
    }
    cur += t[i] * (long long) s.size();
    dec += t[i];
    if (i > 0) {
cout << ' ';
    }
    cout << cur;
  }
  cout << '\n';
  return 0;
}