#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define rep(i,a,b) for(int i = (a); i<(b); i++)
#define ls(i) (i<<1)
#define rs(i) ((i<<1)|1)
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
using namespace std;
const int maxn = 100000;
int n;
int w[maxn+1],h[maxn+1];
int prv[maxn+1],nxt[maxn+1];
int f[maxn+1],sw[maxn+1];
class SegmentTreeMinPointUpdate
{
const static int oo = (int) 1e9+10;
const static int maxn = (int) 1e6;
int n;
int l[maxn*5],r[maxn*5],it[maxn*5],vt[maxn+1];
public:
SegmentTreeMinPointUpdate(int n = 1) { this->n = n; initIT(1,1,n); }
void initIT(int i,int x,int y)
{
l[i] = x; r[i] = y; it[i] = oo;
if (x==y) { vt[x] = i; return; }
int m = (x+y)>>1;
initIT(ls(i),x,m);
initIT(rs(i),m+1,y);
}
void updatePoint(int x,int v)
{
it[vt[x]] = v;
int tmp = vt[x]>>1;
while (tmp>0) {
it[tmp] = min(it[ls(tmp)],it[rs(tmp)]);
tmp>>=1;
}
}
int getIT(int i,int x,int y)
{
if (y<l[i] or x>r[i])
return oo;
if (x<=l[i] and r[i]<=y)
return it[i];
int res1 = getIT(ls(i),x,y), res2 = getIT(rs(i),x,y);
return min(res1,res2);
}
};
class SegmentTreeMaxPointUpdate
{
const static int oo = (int) 1e9+10;
const static int maxn = (int) 1e6;
int n;
int l[maxn*5],r[maxn*5],it[maxn*5],vt[maxn+1];
public:
SegmentTreeMaxPointUpdate(int n = 1) { this->n = n; initIT(1,1,n); }
void initIT(int i,int x,int y)
{
l[i] = x; r[i] = y;
if (x==y) { vt[x] = i; return; }
int m = (x+y)>>1;
initIT(ls(i),x,m);
initIT(rs(i),m+1,y);
}
void updatePoint(int x,int v)
{
it[vt[x]] = v;
int tmp = vt[x]>>1;
while (tmp>0) {
it[tmp] = max(it[ls(tmp)],it[rs(tmp)]);
tmp>>=1;
}
}
int getIT(int i,int x,int y)
{
if (y<l[i] or x>r[i])
return 0;
if (x<=l[i] and r[i]<=y)
return it[i];
int res1 = getIT(ls(i),x,y), res2 = getIT(rs(i),x,y);
return max(res1,res2);
}
};
int index(vector<int>& v,int x)
{
return distance(v.begin(),lower_bound(v.begin(),v.end(),x))+1;
}
const int oo = (int) 1e9+10;
SegmentTreeMaxPointUpdate prvTree;
SegmentTreeMinPointUpdate nxtTree;
void process()
{
vector<int> posH;
rep(i,1,n+1) {
posH.pb(h[i]);
posH.pb(h[i]+1);
}
posH.pb(oo);
sort(posH.begin(),posH.end());
posH.erase(unique(all(posH)),posH.end());
nxtTree.initIT(1,1,sz(posH));
prvTree.initIT(1,1,sz(posH));
prvTree.updatePoint(index(posH,oo),0);
rep(i,1,n+1) {
prv[i] = prvTree.getIT(1,index(posH,h[i]+1),sz(posH));
prvTree.updatePoint(index(posH,h[i]),i);
}
nxtTree.updatePoint(index(posH,oo),n+1);
for (int i=n; i>=1; i--) {
nxt[i] = nxtTree.getIT(1,index(posH,h[i]+1),sz(posH));
assert(h[i] >= h[nxt[i]-1]);
nxtTree.updatePoint(index(posH,h[i]),i);
}
}
int minPos;
int dp[maxn+1];
bool between(int x,int y,int z) { return min(x,z)<=y and y<=max(x,z); }
int fillTo(int x,int y,int H) {
int res = (sw[y]-sw[x-1])*H - (f[y]-f[x-1]);
return res;
}
int caldp(int x)
{
if (dp[x]!=-1) return dp[x];
if (x==minPos)
dp[x] = 0;
if (x<minPos)
dp[x] = fillTo(x,nxt[x]-1,h[x])+caldp(min(minPos,nxt[x]));
if (x>minPos)
dp[x] = fillTo(prv[x]+1,x,h[x])+caldp(max(minPos,prv[x]));
//cerr << "dp " << x << ' ' << dp[x] << '\n';
return dp[x];
}
main()
{
ios_base::sync_with_stdio(0);
cin >> n;
rep(i,1,n+1) {
cin >> w[i] >> h[i];
f[i]=f[i-1]+w[i]*h[i];
sw[i]=sw[i-1]+w[i];
}
process();
minPos = 1;
rep(i,2,n+1) if (h[i] < h[minPos]) minPos = i;
rep(i,1,n+1) assert(prv[i] < i and i < nxt[i]);
memset(dp,-1,sizeof(dp));
rep(i,1,n+1) {
if (between(prv[i],minPos,nxt[i])) {
cout << fillTo(prv[i]+1,nxt[i]-1,h[i]+1) << '\n';
continue;
}
if (i < minPos) {
assert(h[i] >= h[prv[i]+1]);
assert(h[i] >= h[nxt[i]-1]);
cout << fillTo(prv[i]+1,nxt[i]-1,h[i]+1) + caldp(nxt[i]) << '\n';
}
if (i > minPos) {
assert(h[i] >= h[prv[i]+1]);
assert(h[i] >= h[nxt[i]-1]);
cout << fillTo(prv[i]+1,nxt[i]-1,h[i]+1) + caldp(prv[i]) << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHJlcChpLGEsYikgZm9yKGludCBpID0gKGEpOyBpPChiKTsgaSsrKQojZGVmaW5lIGxzKGkpIChpPDwxKQojZGVmaW5lIHJzKGkpICgoaTw8MSl8MSkKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQojZGVmaW5lIHN6KHgpIChpbnQpICh4KS5zaXplKCkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IG1heG4gPSAxMDAwMDA7CmludCBuOwppbnQgd1ttYXhuKzFdLGhbbWF4bisxXTsKaW50IHBydlttYXhuKzFdLG54dFttYXhuKzFdOwppbnQgZlttYXhuKzFdLHN3W21heG4rMV07CiAKY2xhc3MgU2VnbWVudFRyZWVNaW5Qb2ludFVwZGF0ZQp7Cgljb25zdCBzdGF0aWMgaW50IG9vID0gKGludCkgMWU5KzEwOwoJY29uc3Qgc3RhdGljIGludCBtYXhuID0gKGludCkgMWU2OwoJaW50IG47CglpbnQgbFttYXhuKjVdLHJbbWF4bio1XSxpdFttYXhuKjVdLHZ0W21heG4rMV07CiAKcHVibGljOgoJU2VnbWVudFRyZWVNaW5Qb2ludFVwZGF0ZShpbnQgbiA9IDEpIHsgdGhpcy0+biA9IG47IGluaXRJVCgxLDEsbik7IH0KCXZvaWQgaW5pdElUKGludCBpLGludCB4LGludCB5KQoJewoJCWxbaV0gPSB4OyByW2ldID0geTsgaXRbaV0gPSBvbzsgCgkJaWYgKHg9PXkpIHsgdnRbeF0gPSBpOyByZXR1cm47IH0KCQlpbnQgbSA9ICh4K3kpPj4xOwoJCWluaXRJVChscyhpKSx4LG0pOwoJCWluaXRJVChycyhpKSxtKzEseSk7Cgl9CiAKCXZvaWQgdXBkYXRlUG9pbnQoaW50IHgsaW50IHYpCgl7CgkJaXRbdnRbeF1dID0gdjsKCQlpbnQgdG1wID0gdnRbeF0+PjE7CgkJd2hpbGUgKHRtcD4wKSB7CgkJCWl0W3RtcF0gPSBtaW4oaXRbbHModG1wKV0saXRbcnModG1wKV0pOwoJCQl0bXA+Pj0xOwoJCQkKCQl9Cgl9CiAKCWludCBnZXRJVChpbnQgaSxpbnQgeCxpbnQgeSkKCXsKCQlpZiAoeTxsW2ldIG9yIHg+cltpXSkKCQkJcmV0dXJuIG9vOwoJCWlmICh4PD1sW2ldIGFuZCByW2ldPD15KQoJCQlyZXR1cm4gaXRbaV07CgkJaW50IHJlczEgPSBnZXRJVChscyhpKSx4LHkpLCByZXMyID0gZ2V0SVQocnMoaSkseCx5KTsKCQlyZXR1cm4gbWluKHJlczEscmVzMik7Cgl9Cn07CiAKIApjbGFzcyBTZWdtZW50VHJlZU1heFBvaW50VXBkYXRlCnsKCWNvbnN0IHN0YXRpYyBpbnQgb28gPSAoaW50KSAxZTkrMTA7Cgljb25zdCBzdGF0aWMgaW50IG1heG4gPSAoaW50KSAxZTY7CglpbnQgbjsKCWludCBsW21heG4qNV0sclttYXhuKjVdLGl0W21heG4qNV0sdnRbbWF4bisxXTsKIApwdWJsaWM6CglTZWdtZW50VHJlZU1heFBvaW50VXBkYXRlKGludCBuID0gMSkgeyB0aGlzLT5uID0gbjsgaW5pdElUKDEsMSxuKTsgfQoJdm9pZCBpbml0SVQoaW50IGksaW50IHgsaW50IHkpCgl7CgkJbFtpXSA9IHg7IHJbaV0gPSB5OwoJCWlmICh4PT15KSB7IHZ0W3hdID0gaTsgcmV0dXJuOyB9CgkJaW50IG0gPSAoeCt5KT4+MTsKCQlpbml0SVQobHMoaSkseCxtKTsKCQlpbml0SVQocnMoaSksbSsxLHkpOwoJfQogCgl2b2lkIHVwZGF0ZVBvaW50KGludCB4LGludCB2KQoJewoJCWl0W3Z0W3hdXSA9IHY7CgkJaW50IHRtcCA9IHZ0W3hdPj4xOwoJCXdoaWxlICh0bXA+MCkgewoJCQlpdFt0bXBdID0gbWF4KGl0W2xzKHRtcCldLGl0W3JzKHRtcCldKTsKCQkJdG1wPj49MTsKCQl9Cgl9CiAKCWludCBnZXRJVChpbnQgaSxpbnQgeCxpbnQgeSkKCXsKCQlpZiAoeTxsW2ldIG9yIHg+cltpXSkKCQkJcmV0dXJuIDA7CgkJaWYgKHg8PWxbaV0gYW5kIHJbaV08PXkpCgkJCXJldHVybiBpdFtpXTsKCQlpbnQgcmVzMSA9IGdldElUKGxzKGkpLHgseSksIHJlczIgPSBnZXRJVChycyhpKSx4LHkpOwoJCXJldHVybiBtYXgocmVzMSxyZXMyKTsKCX0KfTsKIAppbnQgaW5kZXgodmVjdG9yPGludD4mIHYsaW50IHgpCnsKCXJldHVybiBkaXN0YW5jZSh2LmJlZ2luKCksbG93ZXJfYm91bmQodi5iZWdpbigpLHYuZW5kKCkseCkpKzE7Cn0KIApjb25zdCBpbnQgb28gPSAoaW50KSAxZTkrMTA7ClNlZ21lbnRUcmVlTWF4UG9pbnRVcGRhdGUgcHJ2VHJlZTsgClNlZ21lbnRUcmVlTWluUG9pbnRVcGRhdGUgbnh0VHJlZTsKdm9pZCBwcm9jZXNzKCkKewoJdmVjdG9yPGludD4gcG9zSDsKCXJlcChpLDEsbisxKSB7CgkJcG9zSC5wYihoW2ldKTsKCQlwb3NILnBiKGhbaV0rMSk7Cgl9Cglwb3NILnBiKG9vKTsKCQoJc29ydChwb3NILmJlZ2luKCkscG9zSC5lbmQoKSk7Cglwb3NILmVyYXNlKHVuaXF1ZShhbGwocG9zSCkpLHBvc0guZW5kKCkpOwogCglueHRUcmVlLmluaXRJVCgxLDEsc3oocG9zSCkpOwoJcHJ2VHJlZS5pbml0SVQoMSwxLHN6KHBvc0gpKTsKIAoJcHJ2VHJlZS51cGRhdGVQb2ludChpbmRleChwb3NILG9vKSwwKTsKIAoJcmVwKGksMSxuKzEpIHsKCQlwcnZbaV0gPSBwcnZUcmVlLmdldElUKDEsaW5kZXgocG9zSCxoW2ldKzEpLHN6KHBvc0gpKTsKCQlwcnZUcmVlLnVwZGF0ZVBvaW50KGluZGV4KHBvc0gsaFtpXSksaSk7Cgl9CiAKCW54dFRyZWUudXBkYXRlUG9pbnQoaW5kZXgocG9zSCxvbyksbisxKTsKCWZvciAoaW50IGk9bjsgaT49MTsgaS0tKSB7CgkJbnh0W2ldID0gbnh0VHJlZS5nZXRJVCgxLGluZGV4KHBvc0gsaFtpXSsxKSxzeihwb3NIKSk7CgkJYXNzZXJ0KGhbaV0gPj0gaFtueHRbaV0tMV0pOwoJCW54dFRyZWUudXBkYXRlUG9pbnQoaW5kZXgocG9zSCxoW2ldKSxpKTsKCX0KfQogCmludCBtaW5Qb3M7CmludCBkcFttYXhuKzFdOwpib29sIGJldHdlZW4oaW50IHgsaW50IHksaW50IHopIHsgcmV0dXJuIG1pbih4LHopPD15IGFuZCB5PD1tYXgoeCx6KTsgfQppbnQgZmlsbFRvKGludCB4LGludCB5LGludCBIKSB7IAoJaW50IHJlcyA9IChzd1t5XS1zd1t4LTFdKSpIIC0gKGZbeV0tZlt4LTFdKTsgCglyZXR1cm4gcmVzOwp9CmludCBjYWxkcChpbnQgeCkKewoJaWYgKGRwW3hdIT0tMSkgcmV0dXJuIGRwW3hdOwoJCglpZiAoeD09bWluUG9zKQoJCWRwW3hdID0gMDsKCWlmICh4PG1pblBvcykKCQlkcFt4XSA9IGZpbGxUbyh4LG54dFt4XS0xLGhbeF0pK2NhbGRwKG1pbihtaW5Qb3Msbnh0W3hdKSk7CglpZiAoeD5taW5Qb3MpCgkJZHBbeF0gPSBmaWxsVG8ocHJ2W3hdKzEseCxoW3hdKStjYWxkcChtYXgobWluUG9zLHBydlt4XSkpOwogCgkvL2NlcnIgPDwgImRwICIgPDwgeCA8PCAnICcgPDwgZHBbeF0gPDwgJ1xuJzsKCXJldHVybiBkcFt4XTsKfQptYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWNpbiA+PiBuOwoJcmVwKGksMSxuKzEpIHsKCQljaW4gPj4gd1tpXSA+PiBoW2ldOwoJCWZbaV09ZltpLTFdK3dbaV0qaFtpXTsKCQlzd1tpXT1zd1tpLTFdK3dbaV07Cgl9Cglwcm9jZXNzKCk7CgkKCW1pblBvcyA9IDE7CglyZXAoaSwyLG4rMSkgaWYgKGhbaV0gPCBoW21pblBvc10pIG1pblBvcyA9IGk7CglyZXAoaSwxLG4rMSkgYXNzZXJ0KHBydltpXSA8IGkgYW5kIGkgPCBueHRbaV0pOwoJCgltZW1zZXQoZHAsLTEsc2l6ZW9mKGRwKSk7CglyZXAoaSwxLG4rMSkgewoJCWlmIChiZXR3ZWVuKHBydltpXSxtaW5Qb3Msbnh0W2ldKSkgewoJCQljb3V0IDw8IGZpbGxUbyhwcnZbaV0rMSxueHRbaV0tMSxoW2ldKzEpIDw8ICdcbic7CgkJCWNvbnRpbnVlOwoJCX0KIAoJCWlmIChpIDwgbWluUG9zKSB7CgkJCWFzc2VydChoW2ldID49IGhbcHJ2W2ldKzFdKTsKCQkJYXNzZXJ0KGhbaV0gPj0gaFtueHRbaV0tMV0pOyAKCQkJY291dCA8PCBmaWxsVG8ocHJ2W2ldKzEsbnh0W2ldLTEsaFtpXSsxKSArIGNhbGRwKG54dFtpXSkgPDwgJ1xuJzsKCQl9CgkJaWYgKGkgPiBtaW5Qb3MpIHsKCQkJYXNzZXJ0KGhbaV0gPj0gaFtwcnZbaV0rMV0pOwoJCQlhc3NlcnQoaFtpXSA+PSBoW254dFtpXS0xXSk7CgkJCWNvdXQgPDwgZmlsbFRvKHBydltpXSsxLG54dFtpXS0xLGhbaV0rMSkgKyBjYWxkcChwcnZbaV0pIDw8ICdcbic7CgkJfQoJfQogCglyZXR1cm4gMDsKfQ==