#include<bits/stdc++.h>
using namespace std;
using Int = long long;
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}


struct Precision{
  Precision(){
    cout<<fixed<<setprecision(12);
  }
}precision_beet;

//INSERT ABOVE HERE
signed main(){

  using D = double;
  using P = complex<D>;

  int n;
  D l;
  cin>>n>>l;
  vector<D> ts(n);
  for(int i=0;i<n;i++) cin>>ts[i];

  D pi=asin(1)*2;
  vector<P> ps(n);
  for(int i=0;i<n;i++)
    ps[i]=P(cos(2*pi*ts[i]/l),sin(2*pi*ts[i]/l));

  P ans(0,0);
  for(int i=0;i<n;i++){
    for(int j=0;j<i;j++){
      int x=i-j-1;
      int y=n-2-x;

      P c=P(cos(2*pi*(ts[i]+ts[j])/2/l),sin(2*pi*(ts[i]+ts[j])/2/l));
      c/=abs(c);

      ans+=+c*D(y);
      ans+=-c*D(x);
    }
  }

  ans/=n-0;
  ans/=n-1;
  ans/=n-2;
  ans*=6;

  cout<<ans.real()<<" "<<ans.imag()<<endl;
  return 0;
}
