zidovi_levo = []
zidovi_desno = []
posicija=0
desno = True
vreme = 0
N = int(input())
for i in range(N):
    input1,input2 = input().split()
    input1 = int(input1)
    input2 = int(input2)
    if input1<0:
        zidovi_levo.append([input1,input2])
    else:
        zidovi_desno.append([input1,input2])
zidovi_desno.sort()
zidovi_levo.sort(reverse= True)
while False==((desno==False and zidovi_levo==[]) or (desno==True and zidovi_desno==[])):
    if(desno==True):
        if(zidovi_desno==[]):
            break
        vreme += abs(posicija) + zidovi_desno[0][0]
        posicija = zidovi_desno[0][0]
        zidovi_desno[0][1] -= 1
        if(zidovi_desno[0][1]==0):
            del zidovi_desno[0]
        desno = False
    if(desno==False):
        if(zidovi_levo==[]):
            break
        vreme += posicija + abs(zidovi_levo[0][0])
        posicija = zidovi_levo[0][0]
        zidovi_levo[0][1] -= 1
        if(zidovi_levo[0][1]==0):
            del zidovi_levo[0]
        desno = True
print(vreme %(1000000000+7))