N = int(input())
nizx = []
nizs = []
nizx_plus = []
nizx_minus = []
nizs_plus = []
nizs_minus = []
suma_stabilnosti_plus = 0
suma_stabilnosti_minus = 0
suma_koraka_minus = 0
suma_koraka_plus = 0
suma_u_plusu = 0
brojac = 0
for i in range(1,N+1):
    Xi, Si = map(int, input().split())
    nizx.append(Xi)
    nizs.append(Si)
    if Xi>0:
        nizx_plus.append(Xi)
        nizs_plus.append(Si)
        suma_koraka_plus += Xi * Si
        suma_stabilnosti_plus+=Si
    else:
        nizx_minus.append(Xi)
        nizs_minus.append(Si)
        suma_koraka_minus += abs(Xi) * Si
        suma_stabilnosti_minus += Si
manja_stabilnost = min(suma_stabilnosti_plus, suma_stabilnosti_minus)
if manja_stabilnost==suma_stabilnosti_minus:
    while True:
        uljez = min(nizx_plus)
        mesto = nizx_plus.index(uljez)
        mesto_u_s = (nizs_plus[mesto])
        clan = 2*uljez*mesto_u_s
        suma_u_plusu += clan
        brojac += mesto_u_s
        if brojac>=suma_stabilnosti_minus:
            razlika = brojac - suma_stabilnosti_minus
            suma_u_plusu-= (razlika-0.5)*2*mesto_u_s
            break
        nizx_plus.remove(min(nizx_plus))
        nizs_plus.remove(min(nizs_plus))
    kraj = suma_koraka_minus + suma_u_plusu
else:
    4
print(kraj%(10**9+7))