---
# System prepended metadata

title: Đếm ước biết thừa số nguyên tố

---

Time limit: $1$ s

Memory limit: $256$ MB

## Đề bài
Ước của một số là số mà số đó chia hết cho. Ví dụ $3$ là ước của $12$ ($12$ chia hết cho $3$).
Số lượng ước của một số là số lượng số mà số đó chia hết cho (số lượng ước của $12$ là $6$ vì $12$ chia hết cho $1$, $2$, $3$, $4$, $6$, $12$)

Vì đầu vào rất lớn, không thể chứa bởi bất kỳ dạng số nguyên trong C++ nên số cần tìm số lượng ước sẽ được biểu diễn dưới dạng các thừa số nguyên tố. Kết quả đầu ra cũng có thể rất lớn, nên hãy lấy kết quả chia lấy dư cho $10^9+7$.
Các thừa số nguyên tố của $12$ là $2$ và $3$ vì $12 = 2^2 \cdot 3^1$

## Đầu vào
Dòng đầu tiên chứa số nguyên dương $n$ ($n \le 10^6$), là số lượng thừa số nguyên tố khác nhau.

$n$ dòng tiếp theo mỗi dòng chứa $2$ số nguyên tố $p$ và số mũ $e$ ($2 \le p \le 10^6, 1 \le e \le 10^9$). Số cần tìm số lượng ước sẽ là tích của các số $p^e$ (mọi giá trị $p$ đều là số nguyên tố và không trùng lặp với nhau).
## Đầu ra
Là số lượng ước đếm được của số đầu vào chia lấy dư cho $10^9+7$

## Ví dụ
### Input
```
2
2 2
3 1
```
### Output
```
6
```
### Giải thích
$2^2 \cdot 3^1 = 12$ mà $12$ có $6$ ước số nên kết quả là $6$.