小红的约数
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

对于一个正整数 n 和一个非负整数 d,定义 f_d(n)n 的所有约数的 d 次方之和。如 f_3(10) = 1^3 + 2^3 + 5^3 + 10^3

现给定 n, d,求 f_d(n) 的值。由于答案可能很大,输出答案对 10^9 + 7 取模的结果。

输入描述:

由于 n 可能很大,所以给出 n 的质因数分解式。
n = \prod_{i = 1}^w p_i^{a_i}

第一行输入一个正整数 w 和一个非负整数 d
接下来 w 行,每行输入两个正整数 p_i, a_i
保证 p_i 为素数且互不相同。

对于全部的测试点,保证 1 \leq w \leq 10^5, 0 \leq d \leq 10^9, 2 \leq p_i \leq 10^9, 1 \leq a_i \leq 10^9

输出描述:

输出f_d(n)10^9 + 7 取模的结果。
示例1

输入

复制
2 3
2 1
5 1

输出

复制
1134

说明

f_3(10) = 1^3 + 2^3 + 5^3 + 10^3 = 1134