#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <functional>
#include <cmath>
#include <string>
#include <queue>
#include <set>
#include <map>
#include <cassert>
#define PI 3.14159265358979
#define EPS 1e-15
#define SIZE 100005

using namespace std;
typedef long long int ll;
typedef pair <int,int> P;

int n;
ll K;
double pre[SIZE];

void make()
{
	for(int i=0;i<=n;i++) pre[i]=sin(2.0*PI*(double) i/(double) n);
}
double calc_area(int i,int j)//i+j<N
{
	return (pre[i]+pre[j]+pre[n-i-j])/2.0;
}
int count(int i,double X)
{
	if(i==n-1) return 0;
	int all=(n-i)/2;
	int l=0,r=all+1;
	while(r-l>1)
	{
		int m=(l+r)/2;
		if(calc_area(i,m)>X+EPS) r=m;
		else l=m;
	}
	if(r==all+1) return n-i-1;
	return l*2;
}
bool check(double X)
{
	ll sum=0;
	for(int i=1;i<n;i++) sum+=count(i,X);
	return sum*(ll) n>=K;
}
int main()
{
	scanf("%d %lld",&n,&K);
	make();
	K=3LL*K;
	double l=0.0,r=2.0*PI;
	for(int i=0;i<50;i++)
	{
		double m=(l+r)/2;
		if(check(m)) r=m;
		else l=m;
	}
	printf("%.10f\n",r);
	return 0;
}

### Prompt

Develop a solution in CPP 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 <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <functional>
#include <cmath>
#include <string>
#include <queue>
#include <set>
#include <map>
#include <cassert>
#define PI 3.14159265358979
#define EPS 1e-15
#define SIZE 100005

using namespace std;
typedef long long int ll;
typedef pair <int,int> P;

int n;
ll K;
double pre[SIZE];

void make()
{
	for(int i=0;i<=n;i++) pre[i]=sin(2.0*PI*(double) i/(double) n);
}
double calc_area(int i,int j)//i+j<N
{
	return (pre[i]+pre[j]+pre[n-i-j])/2.0;
}
int count(int i,double X)
{
	if(i==n-1) return 0;
	int all=(n-i)/2;
	int l=0,r=all+1;
	while(r-l>1)
	{
		int m=(l+r)/2;
		if(calc_area(i,m)>X+EPS) r=m;
		else l=m;
	}
	if(r==all+1) return n-i-1;
	return l*2;
}
bool check(double X)
{
	ll sum=0;
	for(int i=1;i<n;i++) sum+=count(i,X);
	return sum*(ll) n>=K;
}
int main()
{
	scanf("%d %lld",&n,&K);
	make();
	K=3LL*K;
	double l=0.0,r=2.0*PI;
	for(int i=0;i<50;i++)
	{
		double m=(l+r)/2;
		if(check(m)) r=m;
		else l=m;
	}
	printf("%.10f\n",r);
	return 0;
}

```