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>
using namespace std;
typedef signed long long ll;

#undef _P
#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
//-------------------------------------------------------

ll N,K;
double T[202020];

double AA(int x,int y) {
	return T[x]+T[y-x]+T[N-y];
}

ll num(double A) {
	ll ret=0;
	for(int x=1;x<N;x++) {
		int y=x+(N-x)/2;
		int tx=x;
		if(AA(x,y)<=A) {
			ret += (N-(x+1));
			continue;
		}
		while(y-tx>1) {
			int m=(y+tx)/2;
			if(AA(x,m)<=A) tx=m;
			else y=m;
		}
		ret += (y-1-x)*2;
	}
	return ret;
}

void solve() {
	int i,j,k,l,r,x,y; string s;
	double PI=atan(1)*4;
	
	cin>>N>>K;
	vector<double> D;
	FOR(i,N) T[i]=sin(i*2*PI/N)/2.0;
	
	
	double L=0,R=2;
	FOR(i,100) {
		double M=(L+R)/2;
		if(num(M)*N>=K*3) R=M;
		else L=M;
	}
	/*
	for(x=1;x<N;x++) for(y=x+1;y<N;y++) {
		double dx = 2*PI*x/N;
		double dy = 2*PI*y/N;
		double a = (sin(dx)+sin(dy-dx)+sin(-dy))/2.0;
		D.push_back(a);
	}
	sort(ALL(D));
	*/
	_P("%.12lf\n",L);
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n';
	FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	solve(); return 0;
}