#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5, MX = 1e18;
struct qu {
int l, r;
} a[N], b[N], c[N];
int n, t[N];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for(int i = 1; i <= n; i++) cin >> t[i];
for(int i = 1; i < n; i++) cin >> c[i].l >> c[i].r;
a[1] = {0, MX};
for(int i = 2; i <= n; i++) {
if (c[i-1].l > a[i-1].r || c[i-1].r < a[i-1].l)
a[i] = {MX, -MX};
else
a[i] = qu{max(c[i-1].l - t[i], a[i-1].l), min(c[i-1].r, a[i-1].r)};
}
b[n] = {0, MX};
for(int i = n - 1; i >= 1; i--) {
if (c[i].l > b[i+1].r || c[i].r < b[i+1].l)
b[i] = {MX, -MX};
else
b[i] = qu{max(c[i].l - t[i], b[i+1].l), min(c[i].r, b[i+1].r)};
}
for(int i = 1; i <= n; i++) {
int L = max(a[i].l, b[i].l);
int R = min(a[i].r, b[i].r);
if(L <= R) cout << L << endl;
else cout << -1 << endl;
}
return 0;
}