#agc001e. [agc001_e]BBQ Hard

[agc001_e]BBQ Hard

题目描述

Snuke正在举办一次烧烤聚会。

这一次,他将制作一份_Skewer Meal(串烧餐)_。

他有一些NN个_Skewer Meal Packs(串烧套餐)。第ii个_Skewer Meal Pack_包含一根串烧、AiA_i块牛肉和BiB_i块青椒。所有的串烧在这些套餐中都是不同的且可辨别的,而所有的牛肉和青椒分别是不可辨别的。

为了制作_Skewer Meal(串烧餐),他选择两个_Skewer Meal Packs,并将所选包装的所有内容取出,即两根串烧和一些牛肉或青椒。然后,所有的食材都按照任意顺序一个接一个地穿在两根串烧上。

(在示例部分的图像中可以更好地理解这个过程。)

他可以以多少种不同的方式制作_Skewer Meal(串烧餐)_?只有当使用的串烧集合不同或者食材的顺序不同时,才认为是不同的制作方式。由于这个数字可能非常大,需要对109+710^9+7取模。

约束条件

  • 2N200,0002≦N≦200,000
  • 对于所有的ii1Ai20001≦A_i≦20001Bi20001≦B_i≦2000

输入

输入以以下格式从标准输入中给出:

NN A1A_1 B1B_1 A2A_2 B2B_2 : ANA_N BNB_N

输出

打印不同方式制作_Skewer Meal(串烧餐)_的数量,对109+710^9+7取模。


样例输入 1

3
1 1
1 1
2 1

样例输出 1

26

制作_Skewer Meal(串烧餐)_的26种方式如下所示。灰色的条代表串烧,每个串烧都有一个编号,表示包含该串烧的_Skewer Meal Set。棕色和绿色的矩形代表牛肉和青椒。

ebbq.png