#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1000000007;

struct mint
{
	ll x;
	mint(ll x = 0) :x((x% mod + mod) % mod) {}
	mint operator-() const { return mint(-x); }
	mint& operator+=(const mint a)
	{
		if ((x += a.x) >= mod) x -= mod;
		return *this;
	}
	mint& operator-=(const mint a)
	{
		if ((x += mod - a.x) >= mod) x -= mod;
		return *this;
	}
	mint& operator*=(const mint a)
	{
		(x *= a.x) %= mod;
		return *this;
	}
	mint operator+(const mint a) const
	{
		mint res(*this);
		return res += a;
	}
	mint operator-(const mint a) const
	{
		mint res(*this);
		return res -= a;
	}
	mint operator*(const mint a) const
	{
		mint res(*this);
		return res *= a;
	}
	mint pow(ll t) const
	{
		if (!t) return 1;
		mint a = pow(t >> 1);
		a *= a;
		if (t & 1) a *= *this;
		return a;
	}

	// for prime mod
	mint inv() const
	{
		return pow(mod - 2);
	}
	mint& operator/=(const mint a)
	{
		return (*this) *= a.inv();
	}
	mint operator/(const mint a) const
	{
		mint res(*this);
		return res /= a;
	}
};
ostream& operator<<(ostream& os, const mint& a)
{
	os << a.x;
	return os;
}

int main()
{
	ll n, k;
	cin >> n >> k;

	mint minv;
	for (ll i = 0; i <= k; i++) minv += i;
	mint maxv;
	for (ll i = n + 1; n + 1 - k < i; i--) maxv += i;
	mint ans = maxv - minv + 1;

	for (ll i = k + 1; i <= n + 1; i++) {
		minv += i;
		maxv += n + 2 - i;
		ans += maxv - minv + 1;
	}
	cout << ans << endl;
}