#include <bits/stdc++.h>
#define REP(i, a, n) for(ll i = ((ll) a); i < ((ll) n); i++)
#define MOD 1000000007
using namespace std;
typedef long long ll;

int main(void) {
  ll N, M;
  cin >> N >> M;

  if(N != 1) {
    ll d = (N - 1) % MOD;
    ll n = ((M + 1) / (N - 1) + 1) % MOD;
    ll x1 = ((M + 1) % (N - 1)) % MOD;
    ll xn = (M + 1) % MOD;

    // cout << d << " " << n << " " << x1 << " " << xn << endl;

    ll sum = (((((x1 + xn) % MOD) * n) % MOD) * ((MOD + 1) / 2)) % MOD;

    // cout << sum << endl;

    cout << (xn + (((sum - xn + MOD) % MOD) * 2) % MOD) % MOD << endl;;
  } else {
    cout << (M + 1) % MOD << endl;
  }
}
### Prompt

Please create a solution in Cpp 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>
#define REP(i, a, n) for(ll i = ((ll) a); i < ((ll) n); i++)
#define MOD 1000000007
using namespace std;
typedef long long ll;

int main(void) {
  ll N, M;
  cin >> N >> M;

  if(N != 1) {
    ll d = (N - 1) % MOD;
    ll n = ((M + 1) / (N - 1) + 1) % MOD;
    ll x1 = ((M + 1) % (N - 1)) % MOD;
    ll xn = (M + 1) % MOD;

    // cout << d << " " << n << " " << x1 << " " << xn << endl;

    ll sum = (((((x1 + xn) % MOD) * n) % MOD) * ((MOD + 1) / 2)) % MOD;

    // cout << sum << endl;

    cout << (xn + (((sum - xn + MOD) % MOD) * 2) % MOD) % MOD << endl;;
  } else {
    cout << (M + 1) % MOD << endl;
  }
}
```