function *main() {
  
  // ここにコードを書く
  mint.mod = 1000000007n;
  
  const [n, k] = (yield).split(" ").map(BigInt);
  
  console.error(n, k);
  
  const t = n - k;
  
  const ans = ( -mint.div((n+1n)*(n+2n)*(2n*n+3n) - k*(k-1n)*(2n*k-1n), 6n) + (n+1n)*mint.div((k+n+1n)*(n-k+2n), 2n) + (n-k+2n) )%mint.mod;
  
  console.log(ans.toString());
  
}

// ここにライブラリを書く
// set mint.mod
const mint = {
	mod: 0n, //replace this
	add: (x, y) => {
		let r = (x + y) % mint.mod;
		if (r < 0n) r -= (r / mint.mod - 1n) * mint.mod;
		return r;
	},
	sub: (x, y) => mint.add(x, -y),
	mul: (x, y) => x * y % mint.mod,
	pow: (x, y) => {
		let r = 1n;
		while (y > 0n) {
			if (y & 1n) r *= x % mint.mod;
			x = x * x % mint.mod;
			y >>= 1n;
		}
		return r;
	},
	inv: x => mint.pow(x, mint.mod-2n),
	div: (x, y) => mint.mul(x, mint.inv(y)),
};

const iter = main();
iter.next();
require("readline").createInterface({input: process.stdin}).on("line", s => iter.next(s));
