using System;
using System.Linq;
using System.Collections.Generic;

namespace D
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine().Split(' ').Select(s => int.Parse(s)).ToArray();
            long N = input[0] + 1;
            long K = input[1];

            var acum = new long[N];
            acum[0] = N - 1;
            for(int i = 1; i < N; i++)
            {
                acum[i] = acum[i - 1] + N - i - 1;
            }

            var acum2 = new long[N];
            acum2[0] = 0;
            for(int i = 1; i < N; i++)
            {
                acum2[i] += acum2[i - 1] + i;
            }

            long result = 0;
            for(int i = 0; i < N; i++)
            {
                result = ModAdd(result, acum[i] - acum2[i] + 1);
            }

            long minus = 0;
            for(int i = 0; i < K - 1; i++)
            {
                minus = ModAdd(minus, acum[i] - acum2[i] + 1);
            }

            Console.WriteLine($"{ModMinus(result, minus)}");
        }

        static long ModAdd(long a, long b)
        {
            return (a + b) % 1000000007;
        }

        static long ModMinus(long a, long b)
        {
            var c = a - b;

            if (a - b < 0)
            {
                return (c + 1000000007) % 1000000007; 
            }

            return (a - b) % 1000000007;
        }
    }
}
