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 <image> and <image>, where k is some integer number in range [1, a].

By <image> we denote the quotient of integer division of x and y. By <image> 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).

Examples

Input

1 1


Output

0


Input

2 2


Output

8

Note

For the first sample, there are no nice integers because <image> is always zero.

For the second sample, the set of nice integers is {3, 5}.
import java.io.*;
import java.lang.*;
import java.util.*;
import java.text.*;


public class Main {
	

	public static void main(String[] args) throws IOException {

		//BufferedReader cin = new BufferedReader(new FileReader("te.txt"));
		 BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
	
		
		String line;
		StringTokenizer st;
		int mod=1000000007;
		
		line = cin.readLine();
		st = new StringTokenizer(line);
		int a=Integer.parseInt(st.nextToken());
		int b=Integer.parseInt(st.nextToken());
		  
		int ans=0;
		int sumr=0;
		for(int i=1;i<b;i++){
			sumr+=i;
			sumr%=mod;
		}
		int sumk=0;
		for(int i=1;i<=a;i++){
			sumk+=i;
			sumk%=mod;
		}
		//x=r(kb+1) --> sumx=sumr*(sumk*b+a)
		int kb=(int) ((long)sumk*b%mod);
		int kb1=(kb+a)%mod;
		ans=(int)((long)sumr*kb1%mod);
		
		System.out.println(ans);
		
		cin.close();
	}

}