#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
#define int ll
typedef pair<int,int> pii;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define all(a) (a).begin(),(a).end()
#define pb emplace_back

const ll MOD = 1e9+7;
signed main(){
    int N, M;
    cin>>N>>M;
    
    if( M<N || N==1 ){
        cout<<(M+1)%MOD<<endl;
        return 0;
    }
    
    int n = ( M/(N-1) )%MOD;
    int a = ( M+1-N+1 )%MOD;
    int d = 1+MOD-(N%MOD);
    
    
    cout<<( M+1+2*((n*a)%MOD + ( ( n*(n-1)/2 )%MOD *(1+MOD-N%MOD)  )%MOD) )%MOD<<endl;
    
}
### Prompt

Your challenge is to write a CPP solution to the following problem:

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 "bits/stdc++.h"
using namespace std;
typedef long long ll;
#define int ll
typedef pair<int,int> pii;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define all(a) (a).begin(),(a).end()
#define pb emplace_back

const ll MOD = 1e9+7;
signed main(){
    int N, M;
    cin>>N>>M;
    
    if( M<N || N==1 ){
        cout<<(M+1)%MOD<<endl;
        return 0;
    }
    
    int n = ( M/(N-1) )%MOD;
    int a = ( M+1-N+1 )%MOD;
    int d = 1+MOD-(N%MOD);
    
    
    cout<<( M+1+2*((n*a)%MOD + ( ( n*(n-1)/2 )%MOD *(1+MOD-N%MOD)  )%MOD) )%MOD<<endl;
    
}
```