#include <bits/stdc++.h>
using namespace std;

#define int long long
const int MOD = 1e9 + 7;

signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);

  int n, m;
  cin >> n >> m;

  if ( n == 1LL ) {
    cout << (m+1) % MOD << endl;
    return 0;
  }
  
  int b = m / (n-1LL);
  int sum = (b-1LL) % MOD;
  sum = (sum * (b % MOD)) % MOD;
  sum = (sum * ((n-1LL) % MOD)) % MOD;

  int sum2 = (2LL * b) % MOD;
  sum2 = (sum2 * ((m - ((n-1LL) % MOD) * (b % MOD) + 1LL) % MOD)) % MOD;
  //cout <<  2 * b * (m - (n-1) * b + 1) << endl;
  sum += (m+1LL);
  sum += sum2;

  cout << sum % MOD << endl;
  return 0;
}
### Prompt

In CPP, your task is to solve 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;

#define int long long
const int MOD = 1e9 + 7;

signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);

  int n, m;
  cin >> n >> m;

  if ( n == 1LL ) {
    cout << (m+1) % MOD << endl;
    return 0;
  }
  
  int b = m / (n-1LL);
  int sum = (b-1LL) % MOD;
  sum = (sum * (b % MOD)) % MOD;
  sum = (sum * ((n-1LL) % MOD)) % MOD;

  int sum2 = (2LL * b) % MOD;
  sum2 = (sum2 * ((m - ((n-1LL) % MOD) * (b % MOD) + 1LL) % MOD)) % MOD;
  //cout <<  2 * b * (m - (n-1) * b + 1) << endl;
  sum += (m+1LL);
  sum += sum2;

  cout << sum % MOD << endl;
  return 0;
}
```