#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdlib>
#include<queue>
#include<stack>
using namespace std;
struct Point{
double x,y;
Point(double x = 0,double y = 0):x(x),y(y){}
};
typedef Point Vector;
Vector operator +(Vector A,Vector B){return Vector(A.x+B.x,A.y+B.y);}
Vector operator -(Vector A,Vector B){return Vector(A.x-B.x,A.y-B.y);}
Vector operator *(Vector A,double p){return Vector(A.x*p,A.y*p);}
Vector operator /(Vector A,double p){return Vector(A.x/p,A.y/p);}
bool operator < (const Point A,const Point B){
return A.x < B.x ||(A.x == B.x&&A.y < B.y);
}
const double eps = 1e-10;
int dcmp(double x){
if(fabs(x) < eps) return 0;
else return x <0?-1:1;
}
bool operator == (const Point& A,const Point& B){
return dcmp(A.x - B.x) == 0&&dcmp(A.y-B.y) == 0;
}
double Dot(Vector A,Vector B){ return A.x*B.x+A.y*B.y;}
double Length(Vector A) {return sqrt(Dot(A,A));}
double Angle(Vector A,Vector B){return acos(Dot(A,B))/Length(A)/Length(B);}
double Cross(Vector A,Vector B){return A.x*B.y - A.y*B.x;}
double Area2(Point A,Point B,Point C){return Cross(B-A,C-A);}
Vector Rotate(Vector A,double rad){
return Vector(A.x*cos(rad)-A.y*sin(rad),A.x*sin(rad)+A.y*cos(rad));
}
Vector Normal(Vector A){
double L = Length(A);
return Vector(-A.y/L,A.x/L);
}
int main()
{
return 0;
}