#include<bits/stdc++.h>
#define int long long
using namespace std;
int get(int x){
  return (x*(x-1))/2;
}
signed main(){
  int n,d,ans;
  cin>>n>>d;
  if(d==1)ans=get(n);
  else if(d==2)ans=get(n)-1;
  else if(d==3)ans=get(n-2)+2;
  else ans=get(n-(d+1)+2)+(d-1);
  
  if(d>=3&&(n-1)!=d)ans+=(n-(d+1));
  
  cout<<ans<<endl;
}


### Prompt

Create a solution in Cpp for the following problem:

Problem

There are n vertices that are not connected to any of the vertices.
An undirected side is stretched between each vertex.
Find out how many sides can be stretched when the diameter is set to d.
The diameter represents the largest of the shortest distances between two vertices.
Here, the shortest distance is the minimum value of the number of sides required to move between vertices.
Multiple edges and self-loops are not allowed.

Constraints

* 2 ≤ n ≤ 109
* 1 ≤ d ≤ n−1

Input


n d


Two integers n and d are given on one line, separated by blanks.

Output

Output the maximum number of sides that can be stretched on one line.

Examples

Input

4 3


Output

3


Input

5 1


Output

10


Input

4 2


Output

5

### Response

```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int get(int x){
  return (x*(x-1))/2;
}
signed main(){
  int n,d,ans;
  cin>>n>>d;
  if(d==1)ans=get(n);
  else if(d==2)ans=get(n)-1;
  else if(d==3)ans=get(n-2)+2;
  else ans=get(n-(d+1)+2)+(d-1);
  
  if(d>=3&&(n-1)!=d)ans+=(n-(d+1));
  
  cout<<ans<<endl;
}


```