#include <iostream> #include <cstring> #include <math.h> #include <algorithm> #include <cstring> #include <stdio.h> using namespace std; struct Point { double x,y; }p[100];
double crossDet(Point p1,Point p2,Point p3) { return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x); } bool cmp2(const Point &a, const Point &b) {
if (a.y == 0 && b.y == 0 && a.x*b.x <= 0)return a.x>b.x;
if (a.y == 0 && a.x >= 0 && b.y != 0)return true;
if (b.y == 0 && b.x >= 0 && a.y != 0)return false;
if (b.y*a.y <= 0)return a.y>b.y;
Point one;
one.y = one.x = 0;
return crossDet(one,a,b) > 0 || (crossDet(one,a,b) == 0 && a.y > b.y);
} int main() { int n; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%lf%lf",&p[i].x,&p[i].y);
} sort(p,p+n,cmp2); for(int i=0;i<n;i++) printf("%lf %lf\n",p[i].x,p[i].y); }
}