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 <bits/stdc++.h>

#define m ((L+R)>>1)
#define S(x,y) (2*Sin[x]*Sin[y]*Sin[n-x-y])

using namespace std;
typedef double db;
typedef long long LL;
const db pi = 3.14159265358979323846;

db o, l = 0, r = sqrt(3) * 3 / 4;
db Sin[200050];
LL n,k,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)
		return printf("%.15lf\n",r), 0;
	k = k / n + (k%n>0);
	
	for (int _=1;_<=n;_++) Sin[_] = sin(_*pi/n);
	
	for (;;) {
		db mid = (l + r) / 2;
		p = 0, q = 0, o = 0;
		for (int _=1;_<=n/3;_++) {
			if (S(_,_) > mid) break;
			L = _, R = (n-_)/2 + 1;
			while (R-L>1) {
				(S(_,m) < mid) ? L = m : R = m;
			} 
			if (o < S(_,m)) o = S(_,m), q = 1 + (m!=_&&m*2!=n-_);
			p += 2 * (m-_) + 1 - (m*2==n-_);
		}
		if (k<=p && p-q<k) break;
		if (p < k) l = mid; else r = mid;
	}
	printf("%.15lf\n",o);
	return 0;
}