#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
//#define MOD 998244353
#define INF 1145141919810893364
#define PI 3.141592653589
typedef pair<int,int> PP;
typedef long long ll;
#define int ll
#define setdouble setprecision
#define REP(i,n) for(int i=0;i<(n);++i)
#define OREP(i,n) for(int i=1;i<=(n);++i)
#define RREP(i,n) for(int i=(n)-1;i>=0;--i)
#define GOODBYE do { cout << "-1" << endl; return 0; } while (false)
#define MM <<" "<<
#define Endl endl

vector<pair<int,int>> convex_hull(vector<pair<int,int>> P){
    int N=P.size();
    if(N<=1){
        return P;
    }
    vector<pair<int,int>> L,H;
    vector<pair<int,int>> VL,VH;
    sort(P.begin(),P.end());
    L.push_back(P[0]);
    for(int i=0;i<N;i++){
        if((P[N-1].first-P[0].first)*(P[i].second-P[0].second)>=(P[N-1].second-P[0].second)*(P[i].first-P[0].first)){
            H.push_back(P[i]);
        }else{
            L.push_back(P[i]);
        }
    }
    L.push_back(P[N-1]);
    int h=H.size();//反時計回り
    int l=L.size();//時計回り
    for(int i=0;i<h;i++){//反時計回り
        if(VH.size()<2){
            VH.push_back(H[i]);
        }else{
            int j=VH.size();
            if((VH[j-1].first-VH[j-2].first)*(H[i].second-VH[j-2].second)<=(VH[j-1].second-VH[j-2].second)*(H[i].first-VH[j-2].first)){
                VH.push_back(H[i]);
            }else{
                while(VH.size()>=2){
                    j=VH.size();
                    if((VH[j-1].first-VH[j-2].first)*(H[i].second-VH[j-2].second)>(VH[j-1].second-VH[j-2].second)*(H[i].first-VH[j-2].first)){
                        VH.pop_back();
                    }else{
                        break;
                    }
                }
                VH.push_back(H[i]);
            }
        }
    }
    
    for(int i=0;i<l;i++){//時計回り
        if(VL.size()<2){
            VL.push_back(L[i]);
        }else{
            int j=VL.size();
            if((VL[j-1].first-VL[j-2].first)*(L[i].second-VL[j-2].second)>=(VL[j-1].second-VL[j-2].second)*(L[i].first-VL[j-2].first)){
                VL.push_back(L[i]);
            }else{
                while(VL.size()>=2){
                    j=VL.size();
                    if((VL[j-1].first-VL[j-2].first)*(L[i].second-VL[j-2].second)<(VL[j-1].second-VL[j-2].second)*(L[i].first-VL[j-2].first)){
                        VL.pop_back();
                    }else{
                        break;
                    }
                }
                VL.push_back(L[i]);
            }
        }
    }
    P.clear();
    for(int i=0;i<VH.size();i++){
        P.push_back(VH[(VH.size())-1-i]);
    }
    for(int i=1;i<VL.size()-1;i++){
        P.push_back(VL[i]);
    }
    return P;
}


signed main(void){
    int N;
    vector<pair<int,int>> P;
    map<pair<int,int>,int> M;
    double Ans[114]={};
    int x,y;
    cin >> N;
    REP(i,N){
        cin >> x >> y;
        P.push_back({x,y});
        M[{x,y}]=i;
    }
    P=convex_hull(P);
    //REP(i,P.size()){cout << P[i].first MM P[i].second << endl;}
    P.push_back(P[0]);
    double angle[114]={};
    REP(i,P.size()-1){
        double t=atan2(-(P[i+1].first-P[i].first),(P[i+1].second-P[i].second));
        angle[i]=t;
    }
    angle[P.size()-1]=angle[0];
    REP(i,P.size()-1){
        double k=angle[i+1]-angle[i];
        if(k<-PI)k+=2*PI;
        Ans[M[P[i+1]]]+=k;
    }
    
    //REP(i,P.size()-1){printf("%.8f\n",angle[i]);}
    
    double sum=0;
    REP(i,N){
        sum+=Ans[i];
    }
    REP(i,N){
        Ans[i]/=sum;
    }
    //printf("%.8f\n\n\n\n",sum/PI);
    REP(i,N){
        printf("%.8f\n",Ans[i]);
    }
    
    return 0;
}



Measured memory_bytes: 384