#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb(x) push_back(x)
#define vi vector<int>
#define vs vector<string>
#define vll vector<long long>
#define vc vector<char>
#define vs vector<string>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define pil pair<int, long long>
#define pli pair<long long, int>
#define pcc pair<char, char>
#define pdd pair<double, double>
#define mll map<long long, long long>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define flsh fflush(stdout)
#define gcd __gcd
#define clr(x) memset(x, 0, sizeof(x))
#define mod 1000000007LL
#define INF 1000000000007
 

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;


// void solve()
// {
//     ll r;
//     cin>>r;
//     // cout<<r<<"\n";
//     ld ans=2.0*3.14159*r;
//     cout<<ans<<"\n"; 
// }

// void solve()
// {
//     ll n,m;
//     cin>>m>>n;
//     ll i;
//     ll a[n];
//     ll sum=0;
//     for(i=0;i<n;i++)
//     {
//         cin>>a[i];
//         sum+=a[i];
//     }
//     if(sum>m)
//     {
//         cout<<"-1\n";
//     }
//     else{
//         cout<<m-sum<<"\n";
//     }
// }


// void solve()
// {
//    ll n;
//    cin>>n;
//    vll v[n];
//    ll i;
//    ll x,y;
//    for(i=0;i<n-1;i++)
//    {
//        cin>>x;
//        x--;
//        v[x].pb(i);
//    }

//    for(auto it:v)
//    {
//        cout<<sz(it)<<"\n";
//    }
// }

void solve()
{
    ll n,k;
    cin>>n>>k;
    ll i;
    ll suf[n+2];
    suf[n+1]=0;
    for(i=n;i>=0;i--)
    {
        if(i==n)suf[i]=i;
        else{
           suf[i]=suf[i+1]+i;
        }
    }
    ll maxi=0;
    ll res=0;
    for(i=k;i<=n+1;i++)
    {
        ll no=suf[n+1-i];
        ll minsum=(i*(i-1))/2;
        // cout<<i<<" "<<no<<" "<<minsum<<"\n";
        res+=no-minsum+1;
        res%=mod;
        // maxi=max(maxi,)
    }
    cout<<res%mod<<"\n";
}


int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);


if (fopen("input.txt","r" ))
  {
     freopen("input.txt", "r", stdin);
     freopen("output.txt", "w", stdout);
  }
cout<<setprecision(20);


ll t=1;


// cin>>t;


while(t--)
{
solve();
} 


return 0;
}