#include <bits/stdc++.h>
using namespace std;
#define all(V) V.begin(),V.end()
using ll = long long;
const ll MOD = 1000000007;
using ld = long double;
const ld pi = atan2l(0, -1);

ld T[3010], ct[3010], st[3010], ctr[3010], str[3010];
complex<ld> C[3010];

int main() {
	ll N;
	cin >> N;
	ld L;
	cin >> L;
	
	for (int i = 0;i < N;i++) {
		cin >> T[i];
		T[i] *= 2 * pi;
		T[i] /= L;
		ct[i] = cosl(T[i] / 2);
		st[i] = sinl(T[i] / 2);
		C[i] = { cosl(T[i]),sinl(T[i]) };
	}

	ctr[0] = 0, str[0] = 0;
	for (int i = 0;i < N;i++) {
		ctr[i + 1] = ctr[i] + ct[i];
		str[i + 1] = str[i] + st[i];
	}

	complex<ld> Z, A, X = { 0,0 };
	ld ssm, csm, ang, r, cp, sp;
	for (int i = 0;i < N;i++) {
		for (int j = i + 1;j < N - 1;j++) {
			//j+1からNまで
			ang = (T[i] + T[j]) / 2;
			Z = { cosl(ang),sinl(ang) };
			r = abs(Z - C[i]);
			cp = cosl(ang / 2);
			sp = sinl(ang / 2);
			ssm = str[N] - str[j + 1];
			csm = ctr[N] - ctr[j + 1];
			A = { (ld)(N - j - 1) - r * cp * ssm + r * sp * csm,r * cp * csm + r * sp * ssm };
			X += A * Z;
		}
	}
	ll alp = N * (N - 1) * (N - 2) / 6;
	X /= alp;
	printf("%.12Lf ", X.real());
	printf("%.12Lf\n", X.imag());
}