#include <cmath>
#include <iostream>
#include <vector>

using namespace std;
using lint = long long;

#define rep(i, n) for (lint i = 0; i < (n); ++i)
#define repn(i, a, b) for(lint i = (a); i < (b); ++i)

constexpr double Pi = 3.141592653589793;

template<class T> inline istream& operator>>(istream& is, vector<T>& v) { for (auto& e : v) is >> e; return is; }

lint n;
double l, ans_x, ans_y;
int main() {
	cin >> n >> l;

	vector<double>t(n);
	cin >> t;

	rep(i, n - 1) {
		repn(j, i + 1, n) {
			const lint cnt1 = j - i - 1, cnt2 = n - cnt1 - 2;
			const double mid = (t[i] + t[j]) / l * Pi;

			ans_x += (cnt2 - cnt1) * cos(mid);
			ans_y += (cnt2 - cnt1) * sin(mid);
		}
	}

	const double div = (double)(n) * (n - 1) * (n - 2) / 6;

	ans_x /= div;
	ans_y /= div;

	printf("%.15lf %.15lf\n", ans_x, ans_y);
}