Problem: 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

Solution (in CPP):

Solution:
#include<cmath>
#include<iomanip>
#include<iostream>
#define A(a,b) S[a]*S[b]*S[n-a-b]*2
#define db long double
using namespace std;
typedef long long ll;
ll n,k,tot;
int lim,l,r,mid;
db S[200005],L,R,Mid,st;

int main()
{
	cout<<setprecision(50);
	cin>>n>>k;lim=n/3;st=3.14159265358979/n;
	if (n%3==0 && n*(n-1)*(n-2)/6<k+n/3)
	{
		cout<<"1.29903810568";
		return 0;
	}
	for (int i=1;i<=n;i++) S[i]=sin(i*st);
	for (L=0,R=1.29903810568,Mid=(L+R)/2;L+0.0000000000001<R;Mid=(L+R)/2,tot=0)
	{
		for (int i=1;i<=lim;i++) if (A(i,i)<Mid)
	  	{
	  	 	for (l=i,r=n-i>>1,mid=l+r+1>>1;l<r;mid=l+r+1>>1) (A(i,mid)<Mid)?l=mid:r=mid-1;
			tot+=(l+1-i<<1)-(i+l+l==n?(i==l?3:2):1);
	  	}
	  	if (k<=tot*n) R=Mid;else L=Mid;
	}
	cout<<L;
}