#include <bits/stdc++.h>
using namespace std;
typedef complex<double> cp;
const double pi = acos(-1);
const int maxn = 3000;
int n, l;
int a[maxn + 10];
cp ans;

int calc(int x) {
	return x < 0 ? x + l : x;
}

cp trans(double t) {
	return cp{cos(t / l * 2 * pi), sin(t / l * 2 * pi)};
}

void shift() {
	int tmp = a[1];
	for (int i = 1; i < n; ++i) a[i] = a[i + 1];
	a[n] = tmp;
}

void solve() {
	cp sum = 0; int cnt = 0;
	for (int i = n - 1; i >= 2; --i) {
		++cnt;
		sum += trans(-calc(a[1] - a[i + 1]) / 2.);
		cp mid = trans(a[1] + calc(a[i] - a[1]) / 2.);
		ans += (trans(a[1]) - mid) * sum + mid * cp(cnt);
	}
}

int main() {
	scanf("%d%d", &n, &l);
	for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
	for (int i = 1; i <= n; ++i) {
		solve(); shift();
	}
	ans = ans / cp((1ll * n * (n - 1) * (n - 2) / 2));
	printf("%.10lf %.10lf", ans.real(), ans.imag());
}
