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));
    }
}