Problem:
B： えびちゃんと数列 - Ebi-chan and Integer Sequences -

問題

えびちゃんは数列が好きです。中でも等差数列が特に好きです。
今回は以下の条件を満たす数列を作ることにしました。

長さ n の等差数列である

数列の i 番目の要素を s_i と定める時、全ての s_i (1 \leq i \leq n) が 0 \leq s_i \leq m を満たす整数である

上の条件を満たすような数列はいくつあるでしょうか？
ただし答えは非常に大きくなることがあるので、 10^9 + 7 で割った余りを出力してください。

入力形式

入力は一行で与えられる。

n m

n は数列の長さを表す。

制約

1 \leq n \leq 10^{15}

0 \leq m \leq 10^{15}

出力形式

条件を満たす等差数列の数を 10^9 + 7 で割った余りを一行に出力せよ。

入力例1

3 9

出力例1

50

入力例2

10000000000 10000000000

出力例2

999999942

入力は32bit整数には収まりきらないことに注意してください。

Solution in JAVA (judge verdict: Runtime Error)

import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	public static void main(String args[]){

		int MOD = 1000000007;

		Scanner sc = new Scanner(System.in);
		Long first_N = sc.nextLong();
		Long first_M = sc.nextLong();

		Long first_limit;

		if((first_M+1)%(first_N-1) == 0){
			first_limit = (first_M+1)/(first_N-1)-1;
		}else{
			first_limit = (first_M+1)/(first_N-1);
		}

		if(first_limit <= 0){
			System.out.println((first_M+1)%MOD);
		}else{

			BigInteger bigMOD = BigInteger.valueOf(MOD);

			BigInteger limit = BigInteger.valueOf(first_limit);

			BigInteger A = BigInteger.valueOf(first_M+1);

			BigInteger B = BigInteger.valueOf(2*(first_M+1));
			B = B.multiply(limit);

			BigInteger C = BigInteger.valueOf(first_N-1);
			C = C.multiply(limit);
			C = C.multiply(BigInteger.valueOf(first_limit+1));

			A = A.add(B).subtract(C);

			System.out.println(A.remainder(bigMOD));

		}

	}
}