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 <iostream>
#include <iomanip>
#include <cmath>
#define db long double
#define S(A,B) 2*Sin[A]*Sin[B]*Sin[n-A-B]
#define m (l+r)/2
using namespace std;
db ms,ls=0,rs=1.299038105676658,pi=3.14159265358979323846;
db Sin[200050];
long long n,k,i,p,q,l,r;
int main() {
	cin>>n>>k;
	cout<<setprecision(50);
	if (n%3==0&&k>1LL*n*(n-1)*(n-2)/6-n/3) {cout<<rs;return 0;}
	for (i=1;i<=n;i++) Sin[i]=sin(i*pi/n); k=k/n+(k%n>0);
	while (true) {
		db s=(ls+rs)/2;
		p=0,q=0,ms=0;
		for (i=1;i<=n/3;i++) {
			if (S(i,i)>s) break;
			l=i,r=(n-i)/2+1;
			while (r-l>1) if (S(i,m)<s) l=m;else r=m;
			if (ms<S(i,m)) ms=S(i,m),q=1+(m!=i&&m*2!=n-i);
			p+=2*(m-i)+1-(m*2==n-i);
		}
		if (k<=p&&p-q<k) break;
		if (p<k) ls=s;else rs=s;
	}
	cout<<ms;
}