#include <bits/stdc++.h>
#define ld long double
#define ll long long
using namespace std;
template <typename T> void chkmax(T &x, T y) {x = x > y ? x : y;}
template <typename T> void chkmin(T &x, T y) {x = x < y ? x : y;}
template <typename T> void read(T &x) {
	x = 0; int f = 1; char c = getchar();
	while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}
	while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
const int N = 3010; const double pi = acos(-1);
double a[N];
int main() {
	int n, L; read(n), read(L);
	for (int i = 1; i <= n; i++) read(a[i]);
	double sx = 0, sy = 0;
	for (int i = 1; i <= n; i++)
		for (int j = i + 1; j <= n; j++) {
			sx += cos(pi * (a[i] + a[j]) / L) * (n - (j - i + 1));
			sx += cos(pi * (a[i] + a[j] + L) / L) * (j - i - 1);
			sy += sin(pi * (a[i] + a[j]) / L) * (n - (j - i + 1));
			sy += sin(pi * (a[i] + a[j] + L) / L) * (j - i - 1);
		}
	double sum = 1.0l * n * (n - 1) * (n - 2) / 6; sx /= sum, sy /= sum;
	cout << fixed << setprecision(10) << sx << ' ' << sy << '\n';
	return 0;
}