#include <bits/stdc++.h>

using namespace std;

typedef long long I64;

const double EPS = 1e-6;
const double PI  = acos(-1);

struct PCT {
    I64 x,y;
};

vector <PCT> v, hull;
I64 N;

I64 cross_product(PCT A, PCT O, PCT B) {
    return (A.x - O.x) * (B.y - O.y) - (B.x - O.x) * (A.y - O.y);
}

bool cmp_PCT( PCT A, PCT B ) {
    return ( A.x < B.x || (A.x == B.x && A.y < B.y) );
}

void make_hull( vector<PCT> pct, vector<PCT> &hull ) {
    sort( pct.begin(), pct.end(), cmp_PCT );
    hull.clear();
    stack <I64> st;
    st.push( 0 );  st.push( 1 );
    for( I64 i = 2;  i < (I64)pct.size();  ++i ) {
        I64 ind2 = st.top();
        st.pop();
        I64 ind1 = st.top();
        st.push(ind2);
        while( (I64)st.size()>1 && cross_product( pct[ind1], pct[ind2], pct[i] ) < EPS ) {
            st.pop();  ///  scot ind2

            ind2 = st.top();
            st.pop();
            if( !st.empty() )  ind1 = st.top();
            st.push(ind2);
        }
        st.push( i );
    }
    vector <PCT> sec;
    while( !st.empty() ) {
        hull.push_back( pct[ st.top() ] );
        st.pop();
    }
    reverse( hull.begin(), hull.end() );

    st.push( (I64)pct.size() - 1 );
    st.push( (I64)pct.size() - 2 );
    for( I64 i = (I64)pct.size() - 3;  i >= 0;  --i ) {
        I64 ind2 = st.top();
        st.pop();
        I64 ind1 = st.top();
        st.push(ind2);
        while( (I64)st.size()>1 && cross_product( pct[ind1], pct[ind2], pct[i] ) < EPS ) {
            st.pop();  ///  scot ind2

            ind2 = st.top();
            st.pop();
            if( !st.empty() )  ind1 = st.top();
            st.push(ind2);
        }
        st.push( i );
    }
    while( !st.empty() ) {
        sec.push_back( pct[ st.top() ] );
        st.pop();
    }
    reverse( sec.begin(), sec.end() );
    for( I64 i = 1;  i < (I64)sec.size() - 1;  ++i )  hull.push_back( sec[i] );
    reverse( hull.begin(), hull.end() );
}

map<pair<I64,I64>, double> mp;

double get_ang(PCT a, PCT b)
{
    return atan2(1.0*b.x - a.x, 1.0*b.y - a.y);
}

int main()
{
    I64 N;
    cin >> N;
    if( N == 2 ) {
        cout << "0.5\n0.5\n";
        return 0;
    }
    for( I64 i = 1;  i <= N;  ++i ) {
        PCT p;
        cin >> p.x >> p.y;
        v.push_back(p);
    }
    make_hull(v, hull);
    for( auto pc : hull )
        mp[{pc.x, pc.y}] = 1;
    if( hull.size() == 2 ) {
        for( auto pc : v ) {
            if( mp[{pc.x, pc.y}] )
                cout << "0.5\n";
            else
                cout << "0.0\n";
        }
        return 0;
    }
    hull.push_back(hull[0]);
    hull.push_back(hull[1]);
    for( I64 i = 1;  i + 1 < (I64)hull.size();  ++i ) {
        double d1 = get_ang(hull[i - 1], hull[i]);
        double d2 = get_ang(hull[i], hull[i + 1]);
        ///cout << hull[i].x << ' ' << hull[i].y << '\n';

        if( d1 > d2 ) swap(d1, d2);
        double delta = d2 - d1;

       /// cout << delta << '\n';

        if( delta > PI )
            delta = 2.0 * PI - delta;

      ///  if( delta < PI )
            delta = delta / (2.0 * PI);
        mp[ {hull[i].x, hull[i].y} ] = delta;

    }
    cout << fixed << setprecision(9);
    for( auto pc : v ) {
        if( mp[{pc.x, pc.y}] )
            cout << mp[{pc.x, pc.y}] << '\n';
        else cout << "0.0\n";
    }
    return 0;
}


Measured memory_bytes: 256