#include <bits/stdc++.h>
using namespace std;
long long mod1 = 1e9 + 7;
long long mod2 = 998244353;
long long mul(long long x, long long y) {
  return (1ll * (x % mod1) * (y % mod1));
}
long long power(long long x, long long y) {
  long long z = 1;
  while (y > 0) {
    if (y % 2) z = mul(z, x);
    x = mul(x, x);
    y /= 2;
  }
  return z;
}
long long gcd(long long a, long long b) {
  if (a < b) return gcd(b, a);
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long min(long long a, long long b) {
  if (a < b) return a;
  return b;
}
long long max(long long a, long long b) {
  if (a > b) return a;
  return b;
}
long long fact[100001];
void facto() {
  fact[0] = 1;
  for (long long i = 1; i < 100001; i++) {
    fact[0] = 1;
    fact[i] = mul(i, fact[i - 1]);
  }
}
long long inv(long long n) { return power(n, mod1 - 2); }
long long divide(long long x, long long y) { return mul(x, inv(y)); }
long long ncr(long long n, long long r) {
  return divide(fact[n], mul(fact[n - r], fact[r]));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  long long n, k;
  cin >> n >> k;
  long long a[n + 1];
  for (long long i = 0; i < n + 1; i++) {
    a[i] = i;
  }
  long long sum[n + 1];
  sum[0] = 0;
  for (long long i = 0; i < n; i++) {
    sum[i + 1] = sum[i] + a[i + 1];
  }
  long long ans = 0;
  long long in = sum[n] - sum[n - k] - sum[k - 1] + sum[0] + 1;
  long long d = n - k + 1;
  if (d == -1) {
    cout << 1 << endl;
    return 0;
  }
  for (long long i = k; i <= n; i++) {
    ans += sum[n] - sum[n - i] - sum[i - 1] + sum[0] + 1;
    ans %= mod1;
  }
  ans++;
  cout << ans % mod1 << endl;
}
