#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<vector>
#include<deque>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<algorithm>
#include<functional>
#include<utility>
#include<bitset>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<cstdio>

using namespace std;

#define REP(i,n) for(int i=0;i<int(n);i++)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
typedef long long ll;
typedef pair<int,int> P;

const ll MOD=1000000007;

int main(void){
	          int i;

	      	  cin.tie(0);  ios_base::sync_with_stdio(false);

	      	  ll n,m;
	      	  cin >> n >> m;

	      	  if(n==1){
	      		  cout << (m+1)%MOD << endl;
	      		  return 0;
	      	  }

	      	  ll ans=0;
	      	  ll N=m/(n-1LL);

	      	  ans=(((2*m+2)%MOD)*(N%MOD))%MOD;
	      	  ll u=(((n-1)%MOD)*(N%MOD))%MOD;
	      	  u=(u*((N+1)%MOD))%MOD;
	      	  ans-=u;
	      	  ans+=(m+1)%MOD;

	      	  cout << (ans+MOD)%MOD << endl;



	          return 0;
}
### Prompt

Develop a solution in CPP to the problem described below:

B: Ebi-chan and Integer Sequences-

problem

Ebi-chan likes sequences. I especially like arithmetic progressions. This time, I decided to create a sequence that meets the following conditions.

* Arithmetic progression of length n
* When the i-th element of the sequence is defined as s_i, all s_i (1 \ leq i \ leq n) are integers that satisfy 0 \ leq s_i \ leq m.



How many sequences are there that satisfy the above conditions? However, the answer can be very large, so print the remainder after dividing by 10 ^ 9 + 7.

Input format

Input is given in one line.


n m

n represents the length of the sequence.

Constraint

* 1 \ leq n \ leq 10 ^ {15}
* 0 \ leq m \ leq 10 ^ {15}



Output format

Divide the number of arithmetic progressions that satisfy the condition by 10 ^ 9 + 7 and output the remainder in one row.

Input example 1


3 9

Output example 1


50

Input example 2


10000000000 10000000000

Output example 2


999999942

Note that the input does not fit in a 32-bit integer.





Example

Input

3 9


Output

50

### Response

```cpp
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<vector>
#include<deque>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<algorithm>
#include<functional>
#include<utility>
#include<bitset>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<cstdio>

using namespace std;

#define REP(i,n) for(int i=0;i<int(n);i++)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
typedef long long ll;
typedef pair<int,int> P;

const ll MOD=1000000007;

int main(void){
	          int i;

	      	  cin.tie(0);  ios_base::sync_with_stdio(false);

	      	  ll n,m;
	      	  cin >> n >> m;

	      	  if(n==1){
	      		  cout << (m+1)%MOD << endl;
	      		  return 0;
	      	  }

	      	  ll ans=0;
	      	  ll N=m/(n-1LL);

	      	  ans=(((2*m+2)%MOD)*(N%MOD))%MOD;
	      	  ll u=(((n-1)%MOD)*(N%MOD))%MOD;
	      	  u=(u*((N+1)%MOD))%MOD;
	      	  ans-=u;
	      	  ans+=(m+1)%MOD;

	      	  cout << (ans+MOD)%MOD << endl;



	          return 0;
}
```