#include<vector>
#include<cmath>
#include<map>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<set>
#include<stack>
#include<bitset>
#include<functional>
#include<ctime>
#include<queue>
#include<deque>
#include<complex>
#include<cassert>
using namespace std;
#define pb push_back
#define pf push_front
typedef long long lint;
typedef complex<double> P;
#define mp make_pair
#define fi first
#define se second
typedef pair<int,int> pint;
#define All(s) s.begin(),s.end()
#define rAll(s) s.rbegin(),s.rend()
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)
const double EPS = 1e-10;
const double INF = 1e+10;
const double PI = acos(-1);
int sig(double r) { return (r < -EPS) ? -1 : (r > +EPS) ? +1 : 0; }
struct Pt {
	double x, y;
	Pt() {}
	Pt(double x, double y) : x(x), y(y) {}
	Pt operator+(const Pt &a) const { return Pt(x + a.x, y + a.y); }
	Pt operator-(const Pt &a) const { return Pt(x - a.x, y - a.y); }
	Pt operator*(const Pt &a) const { return Pt(x * a.x - y * a.y, x * a.y + y * a.x); }
	Pt operator-() const { return Pt(-x, -y); }
	Pt operator*(const double &k) const { return Pt(x * k, y * k); }
	Pt operator/(const double &k) const { return Pt(x / k, y / k); }
	bool operator<(const Pt &a) const { return sig(x-a.x)<0 || (sig(x-a.x)==0 && sig(y-a.y)<0); }
	double abs() const { return sqrt(x * x + y * y); }
	double abs2() const { return x * x + y * y; }
	double arg() const { return atan2(y, x); }
	double dot(const Pt &a) const { return x * a.x + y * a.y; }
	double det(const Pt &a) const { return x * a.y - y * a.x; }
};
ostream &operator<<(ostream &os, const Pt &a) { os << "(" << a.x << ", " << a.y << ")"; return os; }
double tri(const Pt &a, const Pt &b, const Pt &c) { return (b - a).det(c - a); }
struct seg{
	Pt s,t;
	seg(){}
	seg(Pt s,Pt t): s(s),t(t){}
};
typedef pair<Pt,int> ppt;
Pt ref(Pt a,Pt b,Pt c){
	Pt h=a+(b-a)*((b-a).dot(c-a))/(b-a).abs2();
	return h*2-c;
}
int iSP(Pt a,Pt b,Pt c){
	int s=sig((b-a).det(c-a));
	if(s) return s;//+-1:not intersect
	if(sig((b-a).dot(c-a))<0) return -2;//c-a-b
	if(sig((a-b).dot(c-b))<0) return 2;//a-b-c
	return 0;//a-c-b
}
int iLL(Pt a,Pt b,Pt c,Pt d){
	if(sig((b-a).dot(d-c))) return 1;//intersect
	if(sig((b-a).dot(c-a))) return 0;//parallel
	return -1;//correspond
}
bool iLS(Pt a,Pt b,Pt c,Pt d){
	return (sig(tri(a,b,c))*sig(tri(a,b,d))<=0);
}
bool iSS(Pt a,Pt b,Pt c,Pt d){
	return (iSP(a,b,c)*iSP(a,b,d)<=0 && iSP(c,d,a)*iSP(c,d,b)<=0);
}
bool iSSstrict(Pt a,Pt b,Pt c,Pt d){
	return (sig(tri(a,b,c))*sig(tri(a,b,d))<0 && sig(tri(c,d,a))*sig(tri(c,d,b))<0);
}
Pt pLL(Pt a,Pt b,Pt c,Pt d){
	b=b-a;d=d-c;return a+b*(c-a).det(d)/b.det(d);
}
double dLP(Pt a,Pt b,Pt c){
	return abs(tri(a,b,c))/(b-a).abs();
}
double dSP(Pt a,Pt b,Pt c){
	if(sig((b-a).dot(c-a))<=0) return (c-a).abs();
	if(sig((a-b).dot(c-b))<=0) return (c-b).abs();
	return abs(tri(a,b,c))/(b-a).abs();
}
double dLL(Pt a,Pt b,Pt c,Pt d){
	return iLL(a,b,c,d)?0:dLP(a,b,c);
}
double dLS(Pt a,Pt b,Pt c,Pt d){
	return iLS(a,b,c,d)?0:min(dLP(a,b,c),dLP(a,b,d));
}
double dSS(Pt a,Pt b,Pt c,Pt d){
	return iSS(a,b,c,d)?0:min(min(dSP(a,b,c),dSP(a,b,d)),min(dSP(c,d,a),dSP(c,d,b)));
}
//a->b->cとなったときの曲がる角度-π~+π
double aSS(Pt a,Pt b,Pt c){
	return ((c-b)*Pt((b-a).x,(a-b).y)).arg();
}
vector<ppt> convexHull(vector<ppt> p) {
	int m=0,i,r,n=p.size();
	sort(All(p));
	vector<ppt> q(2*n+1);
	for(i=0;i<n;q[m++]=p[i++]) for(;m>1 && sig(tri(q[m-2].fi,q[m-1].fi,p[i].fi))<=0;--m);
	for(i=n-2,r=m;i>=0;q[m++]=p[i--]) for(;m>r && sig(tri(q[m-2].fi,q[m-1].fi,p[i].fi))<=0;--m);
	q.resize(m-1);
	return q;
}
int main()
{
	int n,x,y;
	double out[110];
	rep(i,110) out[i]=0.0;
	vector<ppt> vp;
	cin>>n;
	rep(i,n){
		cin>>x>>y;vp.pb(mp(Pt(x,y),i));
	}
	vector<ppt> vp2=convexHull(vp);
	int m=vp2.size();
	//rep(i,m) cout<<vp2[i].fi<<endl;
	if(m==2){
		out[vp2[0].se]=out[vp2[1].se]=0.5;
	}
	else{
		rep(i,m) out[vp2[i].se]=aSS(vp2[(i+m-1)%m].fi,vp2[i].fi,vp2[(i+1)%m].fi)/(2*PI);
	}
	rep(i,n) printf("%.12f\n",out[i]);
}


Measured memory_bytes: 384