小红种树(一)
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红种了N棵树,第i棵树第一天的高度为a_i,树每天长高b_i厘米。

小红现在希望你求出从第1天到第M天,每天最高与最低树的差。

请输出每一天的答案之和对10^{9}+7取余数的结果。

输入描述:

第一行输入两个正整数N,M(1\leq N \leq 3\times 10^5,1\leq M \leq 10^{18}),表示数组的大小,总共的天数。

接下来一行输入N个数a_i(1\leq a_i\leq 10^{18}),表示每棵树的初始高度。

接下来一行输入N个数b_i(1\leq b_i\leq 10^{18}),表示每棵树每天生长的高度。

输出描述:

输出一个非负整数,表示第1天到第M天的答案之和对10^{9}+7取余数的结果。
示例1

输入

复制
4 4
1 2 3 4
3 1 1 2

输出

复制
15

说明

第一天树的高度分别为:[1,2,3,4],差值为3
第二天树的高度分别为:[4,3,4,6],差值为3
第三天树的高度分别为:[7,4,5,8],差值为4
第四天树的高度分别为:[10,5,6,10],差值为5