// https://paiza.hatenablog.com/entry/2015/01/21/%E3%80%90%E7%B4%AF%E7%A9%8D%E5%92%8C%E3%80%81%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95%E3%80%91%E5%88%9D%E7%B4%9A%E8%80%85%E3%81%A7%E3%82%82%E8%A7%A3%E3%82%8B%E3%82%A2%E3%83%AB%E3%82%B4
function main(N, K) {
  const MOD = 1000000007;

  // 0 ,1, 2, 3
  const rui = [0];

  // 累積和
  for (let i = 0; i < N + 1; i++) {
    rui.push(i + rui[i]);
  }
  //console.log(rui);

  let res = 0;

  for (let i = K; i <= N + 1; i++) {
    //    console.log('i:', i);
    const min = rui[i] - rui[0];
    const max = rui[rui.length - 1] - rui[rui.length - 1 - i];

    res += max - min + 1;

    //    console.log(min, max);
  }

  console.log(res % MOD);
}

const input = require('fs').readFileSync('/dev/stdin', 'utf8').split('\n');
const N = parseInt(input[0]);
const K = parseInt(input[1]);

main(N, K);
