struct Node{
int x,y,d;
Node(){x = y = 0;d = 0;}
Node(int _x,int _y,int _d):x(_x),y(_y),d(_d){}
bool operator <(const Node &a)const {
return d > a.d;
}
}s,t;
struct Complex{
double r,i;
inline Complex(){r = i = 0;}
inline Complex(register double x,register double y){r = x,i = y;}
inline Complex operator +(register Complex &x){return Complex(r + x.r,i + x.i);}
inline Complex operator -(register Complex &x){return Complex(r - x.r,i - x.i);}
inline Complex operator *(register Complex &x){return Complex(r*x.r - i*x.i,r*x.i + i*x.r);}
inline void operator +=(register Complex &x){r += x.r;i += x.i;}
inline void operator *=(register Complex &x){register double t = r;r = r * x.r - i * x.i;i = t * x.i + i * x.r;}
}f[maxn],g[maxn];