#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iomanip>
#define ld long double
using namespace std;
const int maxn = 3000;
const ld pi = 4.0*atan(1.0);
int n,l;
int t[maxn+1];
struct pt
{
	ld x;
	ld y;
};
pt centroid;

pt add(pt x,pt y)
{
	return {x.x+y.x,x.y+y.y};
}

int main()
{
	ios_base::sync_with_stdio(0);
	//freopen("input.txt","r",stdin);
	//freopen("output.txt","w",stdout);
	cin >> n >> l;
	for (int i=1; i<=n; i++)
		cin >> t[i];
	sort(t+1,t+1+n);
	
	for (int i=1; i<=n; i++)
	for (int j=i+1; j<=n; j++)
	{
		ld midAngle = 2*pi*((ld) t[i]+(ld) t[j])*0.5/(ld) l;
		pt midPoint = {cos(midAngle),sin(midAngle)};
		centroid.x+=midPoint.x*(n-(j-i+1));
		centroid.y+=midPoint.y*(n-(j-i+1));
		
		midAngle+=pi;
		midPoint = {cos(midAngle),sin(midAngle)};
		
		centroid.x+=midPoint.x*(j-i-1);
		centroid.y+=midPoint.y*(j-i-1);
	}
	
	// centroid becomes orthocenter
	//centroid.x*=(1.0/3.0);
	//centroid.y*=(1.0/3.0);
	
	centroid.x/=((ld) n*((ld) n-1.0)*((ld) n-2.0)/6.0);
	centroid.y/=((ld) n*((ld) n-1.0)*((ld) n-2.0)/6.0);
	
	cout << setprecision(20) << fixed << centroid.x << ' '<< centroid.y << '\n';
	
	
	
	return 0;
}
