#include <bits/stdc++.h>

typedef long long LL;
typedef long double ld;

#define debug printf("fuck %d\n", __LINE__);

inline LL read() {
	LL res = 0, bo = 1;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') bo = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		res = (res << 1) + (res << 3) + ch - '0';
		ch = getchar();
	}
	return bo * res;
}

template <typename T>
void read(T &x) {
	x = read();
}

template <typename T, typename... Argv>
void read(T &a, Argv &... argv) {
	read(a);
	read(argv...);
}

const ld pi = 3.14159265358979323846;
const int N = 3005;
ld a[N], ansx, ansy;

int main() {
	int n = read(), L = read();
	for (int i = 1; i <= n; ++ i) std::cin >> a[i];
	for (int i = 1; i <= n; ++ i) {
		for (int j = i + 1; j <= n; ++ j) {
			int k = j - i - 1;
			ld tmp = pi * (a[i] + a[j]) / L;
			ansx += sin(tmp) * (n - 2 * k - 2), ansy += cos(tmp) *(n - 2 * k - 2);
		}
	}
	ansx /= 1.0 * n * (n - 1) * (n - 2) / 6;
	ansy /= 1.0 * n * (n - 1) * (n - 2) / 6;
	printf("%.12Lf %.12Lf\n", ansy, ansx);
	return 0;
}