#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define ll long long
#define maxn 1000005
#define inf 1e9
#define pb push_back
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ld long double
using namespace std;

inline ll read()
{
	ll x=0,w=1; char c=getchar();
	while(c<'0'||c>'9') {if(c=='-') w=-1; c=getchar();}
	while(c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();}
	return w==1?x:-x;
}

ll n,l,t[maxn];
const ld pi=acos(-1.0);

int main()
{
	n=read(); l=read(); rep(i,1,n) t[i]=read();
	ld ax=0,ay=0;
	rep(i,1,n-1) rep(j,i+1,n)
	{
		ax+=(n-1-j+i)*cos(pi*(ld)(t[i]+t[j])/l);
		ax-=(j-i-1)*cos(pi*(ld)(t[i]+t[j])/l);
		
		ay+=(n-1-j+i)*sin(pi*(ld)(t[i]+t[j])/l);
		ay-=(j-i-1)*sin(pi*(ld)(t[i]+t[j])/l);
	}
	ld t=n*(n-1)*(n-2)/6; ax/=t; ay/=t;
	printf("%.15Lf %.15Lf\n",ax,ay);
	return 0;
}