#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <cmath>
#include <bitset>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <algorithm>
#include <complex>
#include <unordered_map>
#include <unordered_set>
#include <random>
#include <cassert>
#include <fstream>
#include <utility>
#include <functional>
#define popcount __builtin_popcount
using namespace std;
typedef long long int ll;
typedef pair<int, int> P;
const double PI=acos(-1.0);
int main()
{
	int n;
	int l;
	cin>>n>>l;
	int t[3030];
	for(int i=0; i<n; i++){
		cin>>t[i];
	}
	double ansx=0, ansy=0;
	for(int i=0; i<n; i++){
		for(int j=i+1; j<n; j++){
			ansx+=cos(PI*(t[i]+t[j])/l)*(n-1-j);
			ansx+=cos(PI*(t[i]+t[j])/l)*i;
			ansx-=cos(PI*(t[i]+t[j])/l)*(j-i-1);
			ansy+=sin(PI*(t[i]+t[j])/l)*(n-1-j);
			ansy+=sin(PI*(t[i]+t[j])/l)*i;
			ansy-=sin(PI*(t[i]+t[j])/l)*(j-i-1);
		}
	}
	ll tot=(ll)n*(n-1)*(n-2)/6;
	ansx/=(double)tot;
	ansy/=(double)tot;
	printf("%.10lf %.10lf\n", ansx, ansy);
	return 0;
}