#include <iostream>
#include <cmath>
using namespace std;

long long N, L, A[6009];

pair<double, double> getpoint(long long G) {
	double v1 = cos(3.14159265358979 * G / (0.5 * L));
	double v2 = sin(3.14159265358979 * G / (0.5 * L));
	return make_pair(v1, v2);
}

int main() {
	cin >> N >> L; L *= 2;
	for (int i = 0; i < N; i++) { cin >> A[i]; A[i] *= 2; }
	for (int i = N; i < 2 * N; i++) A[i] = A[i - N] + L;

	pair<double, double> ans = make_pair(0.0, 0.0);
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (i == j) continue;

			int s1 = i, s2 = j; if (s1 > s2) s2 += N;
			pair<double, double> T = getpoint((A[s1] + A[s2]) / 2LL);
			ans.first += 1.0 * T.first * (1.0 * (N - (s2 - s1) - 1));
			ans.second += 1.0 * T.second * (1.0 * (N - (s2 - s1) - 1));
		}
	}

	double V = 1.0 * N * (1.0 * N - 1.0) * (1.0 * N - 2.0) / 6.0;
	printf("%.12lf %.12lf\n", ans.first / V, ans.second / V);
	return 0;
}