Description
Dreamoon loves summing up something for no reason. One day he obtains two integers a and b occasionally. He wants to calculate the sum of all nice integers. Positive integer x is called nice if and
, where k is some integer number in range [1, a].
By we denote the quotient of integer division of x and y. By
we denote the remainder of integer division of x and y. You can read more about these operations here: http://goo.gl/AcsXhT.
The answer may be large, so please print its remainder modulo 1 000 000 007 (109 + 7). Can you compute it faster than Dreamoon?
Input
The single line of the input contains two integers a, b (1 ≤ a, b ≤ 107).
Output
Print a single integer representing the answer modulo 1 000 000 007 (109 + 7).
Sample Input
1 1
0
2 2
8
Hint
For the first sample, there are no nice integers because is always zero.
For the second sample, the set of nice integers is {3, 5}.

#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
#define mod 1000000007
int main()
{
long long a,b;
while(cin>>a>>b)
{
long long ans=0;
for(long long i=1;i<=a;i++)//k
{
long long c=(i*b+1)%mod;//(k*b+1);
long long d=((b-1)*b/2)%mod;//mod(x,b);
ans=(ans+c*d)%mod;
}
printf("%lld\n",ans);
}
}