#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define enum(i,x,y) for(register int i=(x);i<=(y);++i)
#define try(i,x,y) for(register int i=(x);i>=(y);--i)
template <typename TYPE> inline void chkmax(TYPE &x,TYPE y){x<y?x=y:0;}
template <typename TYPE> inline void chkmin(TYPE &x,TYPE y){y<x?x=y:0;}
template <typename TYPE> void readint(TYPE &x)
{
    x=0;int f=1;char c;
    for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
    for(;isdigit(c);c=getchar())x=x*10+c-'0';
    x*=f;
}
const int MAXN=3005;
const double pi=acos(-1);

int n,L;
long double a[MAXN];

int main()
{
	#ifndef ONLINE_JUDGE
    //freopen("code.in","r",stdin);
    //freopen("code.out","w",stdout);
	#endif
	readint(n);readint(L);
	enum(i,1,n)
	{
		scanf("%Lf",&a[i]);
		a[i]=2*pi*a[i]/L;
	}
	sort(a+1,a+n+1);
	long double x=0,y=0;
	enum(i,1,n)
		enum(j,i+1,n)
		{
			double b=(a[i]+a[j])/2;
			x+=((n-j+i-1)-(j-i-1))*cos(b)/n;y+=((n-j+i-1)-(j-i-1))*sin(b)/n;
		}
	printf("%.15Lf %.15Lf\n",x*6/((n-1)*(n-2)),y*6/((n-1)*(n-2)));
    return 0;
}