#include <bits/stdc++.h>
using namespace std;

const int maxn = 3005;
const double pi = acos(-1), eps = 1e-10;

int n, L;
double alpha[maxn], ansx, ansy;

double midpoint(double x1, double x2)
{
	double len = x2 - x1;
	if (len < -eps) len += 2. * pi;
	len /= 2.;
	double mid = x1 + len;
	if (mid >= 2. * pi - eps) mid -= 2. * pi;
	return mid;
}

int main()
{
	scanf("%d%d", &n, &L);
	for (int i = 0; i < n; ++i) {
		int x;
		scanf("%d", &x);
		alpha[i] = 2. * pi * x / L;
	}

	for (int i = 0; i < n; ++i) {
		double nowx = 0., nowy = 0.;
		for (int j = (i + 1) % n, k = 0; j != i; j = (j + 1) % n, ++k) {
			double m = midpoint(alpha[j], alpha[i]), arg = alpha[j] - alpha[i];
			double vecx = cos(alpha[i]) - cos(m), vecy = sin(alpha[i]) - sin(m);
			ansx += cos(m) * k, ansy += sin(m) * k;
			ansx += vecx * nowx - vecy * nowy, ansy += vecx * nowy + vecy * nowx;
			if (arg < -eps) arg += 2. * pi;
			nowx += cos(arg / 2.); nowy += sin(arg / 2.);
		}
	}

	ansx /= 0.5 * n * (n - 1) * (n - 2), ansy /= 0.5 * n * (n - 1) * (n - 2);
	printf("%.10lf %.10lf\n", ansx, ansy);
	
	return 0;
}
