n = int(input())
negativni = []
pozitivni = []
neg_stab = []
poz_stab = []
for i in range(n):
    x, s = [int(a) for a in input().split(" ")]
    if x<0:
        negativni.append(x)
        neg_stab.append(s)
    else:
        pozitivni.append(x)
        poz_stab.append(s)
vreme = 0
poz_min = pozitivni.index(min(pozitivni))
vreme += pozitivni[poz_min]
poz_stab[poz_min] -= 1
print(vreme)
while len(negativni)>0 and len(pozitivni)>0:
    poz_min = pozitivni.index(min(pozitivni)) ##mesto na pravoj
    neg_min = negativni.index(min(negativni)) ##mesto na pravoj
    ponavljanja = min(neg_stab[neg_min], poz_stab[poz_min])
    vreme += (ponavljanja+1)*(abs(pozitivni[poz_min]-negativni[neg_min]))
    neg_stab[neg_min] -= ponavljanja
    poz_stab[poz_min] -= ponavljanja
    if neg_stab[neg_min]==0:
        del neg_stab[neg_min]
        del negativni[neg_min]
    else:
        del poz_stab[poz_min]
        del pozitivni[poz_min]
    print(vreme)
print(vreme%(1000000007))