import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.math.BigInteger;
/**
* 主类,处理题目要求的功能:
* 1. 维护一个从x到f(x)的映射关系
* 2. 处理n次操作,每次操作返回当前f(x)值并更新映射
* 3. 计算所有操作的i×ans_i之和,并对2^64取模后输出
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读取操作次数n
int n = sc.nextInt();
// 创建HashMap用于存储x到f(x)的映射关系
// 键为x(BigInteger类型,支持大整数)
// 值为f(x)(BigInteger类型,初始值都为0)
Map<BigInteger, BigInteger> fMap = new HashMap<>();
// 用于累加所有i×ans_i的总和,初始值为0
BigInteger totalSum = BigInteger.ZERO;
for (int i = 1; i <= n; i++) {
// 读取当前操作的x值(作为映射的键)
BigInteger x = sc.nextBigInteger();
// 读取当前操作的y值(用于更新f(x))
BigInteger y = sc.nextBigInteger();
// 获取当前f(x)的值:
// 如果map中存在x,则返回对应的value;否则返回默认值0
BigInteger ansI = fMap.getOrDefault(x, BigInteger.ZERO);
// 将当前操作次数i转换为BigInteger类型,便于后续大数运算
BigInteger iBig = BigInteger.valueOf(i);
// 计算i×ans_i,并累加到总和中
totalSum = totalSum.add(iBig.multiply(ansI));
// 更新映射关系:将f(x)的值设置为y
fMap.put(x, y);
}
// 计算模值:2的64次方
BigInteger modVal = BigInteger.valueOf(2).pow(64);
// 对总和取模后输出结果
System.out.println(totalSum.mod(modVal));
}
}