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.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProblemA {
    private static final long B = 1000000007;
    BufferedReader rd;

    private ProblemA() throws IOException {
        rd = new BufferedReader(new InputStreamReader(System.in));
        int[] q = intarr();
        long a = q[0];
        long b = q[1];
        long res = 0;
        for(int i=1;i<b;i++) {
            long u = i;
            u *= b;
            u %= B;
            long[] c = { a, a+1 };
            for(int j=0;j<c.length;j++) {
                if(c[j]%2==0) {
                    c[j] /= 2;
                }
            }
            u *= c[0];
            u %= B;
            u *= c[1];
            u %= B;
            long t = a;
            t *= i;
            t %= B;
            u += t;
            u %= B;
            res += u;
            res %= B;
        }
        out(res);
    }

    private int[] intarr() throws IOException {
        return intarr(rd.readLine());
    }

    private int[] intarr(String s) {
        String[] q = s.split(" ");
        int n = q.length;
        int[] a = new int[n];
        for(int i=0;i<n;i++) {
            a[i] = Integer.parseInt(q[i]);
        }
        return a;
    }

    private static void out(Object x) {
        System.out.println(x);
    }

    public static void main(String[] args) throws IOException {
        new ProblemA();
    }
}
