#include <bits/stdc++.h>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;
using lint=long long;

const double PI=acos(-1);

double SIN[200000];

double area(int i,int j){if(j-i<0) printf("!! i = %d, j = %d\n",i,j); return 2*SIN[i]*SIN[j]*SIN[j-i]; }

int main(){
	int n;
	lint k; scanf("%d%lld",&n,&k);

	rep(i,n) SIN[i]=sin(PI*i/n);

	double lo=0,hi=1.3;
	rep(_,35){
		double mi=(lo+hi)/2;

		lint cnt=0;
		for(int i=1;i<n-1;i++){
			int lo2=i,hi2=(n+i)/2+1;
			while(hi2-lo2>1){
				int mi2=(lo2+hi2)/2;
				if(area(i,mi2)<mi) lo2=mi2;
				else               hi2=mi2;
			}

			int l=lo2;
			int r=n-(l-i);
			cnt+=(l-i)+(n-r)-(l==r?1:0);
		}
		cnt=cnt*n/3;

		if(cnt<k) lo=mi;
		else      hi=mi;
	}
	printf("%.15f\n",lo);

	return 0;
}

### Prompt

Please provide a CPP coded solution to the problem described below:

Input

The input is given from Standard Input in the following format:


> $N \ K$

Output

* Please output the $K$-th triangle area.
* Print a floating number denoting the answer. The relative or absolute error of your answer should not be higher than $10^{−9}$.



Constraints

* $3 \le N \le 200,000$
* $1 \le K \le \frac{N(N-1)(N-2)}{6}$



Subtasks

Subtask 1 [ $160$ points ]


* $N \le 100$

Subtask 2 [ $240$ points ]


* $N \le 1000$

Subtask 3 [ $450$ points ]


* $N \le 200,000$

Output

* Please output the $K$-th triangle area.
* Print a floating number denoting the answer. The relative or absolute error of your answer should not be higher than $10^{−9}$.



Constraints

* $3 \le N \le 200,000$
* $1 \le K \le \frac{N(N-1)(N-2)}{6}$



Subtasks

Subtask 1 [ $160$ points ]


* $N \le 100$

Subtask 2 [ $240$ points ]


* $N \le 1000$

Subtask 3 [ $450$ points ]


* $N \le 200,000$

Input

The input is given from Standard Input in the following format:


> $N \ K$

Examples

Input

4 3


Output

1.0000000000000


Input

6 9


Output

0.86602540378


Input

12 220


Output

1.29903810568

### Response

```cpp
#include <bits/stdc++.h>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;
using lint=long long;

const double PI=acos(-1);

double SIN[200000];

double area(int i,int j){if(j-i<0) printf("!! i = %d, j = %d\n",i,j); return 2*SIN[i]*SIN[j]*SIN[j-i]; }

int main(){
	int n;
	lint k; scanf("%d%lld",&n,&k);

	rep(i,n) SIN[i]=sin(PI*i/n);

	double lo=0,hi=1.3;
	rep(_,35){
		double mi=(lo+hi)/2;

		lint cnt=0;
		for(int i=1;i<n-1;i++){
			int lo2=i,hi2=(n+i)/2+1;
			while(hi2-lo2>1){
				int mi2=(lo2+hi2)/2;
				if(area(i,mi2)<mi) lo2=mi2;
				else               hi2=mi2;
			}

			int l=lo2;
			int r=n-(l-i);
			cnt+=(l-i)+(n-r)-(l==r?1:0);
		}
		cnt=cnt*n/3;

		if(cnt<k) lo=mi;
		else      hi=mi;
	}
	printf("%.15f\n",lo);

	return 0;
}

```