//2187
#include <iostream>
#include <algorithm>
using namespace std;
struct point{
int x,y;
};
point p[50005];
int stk[50005],top,n;
int cp(point p1a,point p1b,point p2a,point p2b){
int x1=p1b.x-p1a.x,x2=p2b.x-p2a.x,y1=p1b.y-p1a.y,y2=p2b.y-p2a.y;
return x1*y2-x2*y1;
}
bool cmp(point p1,point p2){
int cro=cp(p[0],p1,p[0],p2);
if (cro==0){
int d1,d2;
d1=(p1.x-p[0].x)*(p1.x-p[0].x)+(p1.y-p[0].y)*(p1.y-p[0].y);
d2=(p2.x-p[0].x)*(p2.x-p[0].x)+(p2.y-p[0].y)*(p2.y-p[0].y);
return d2<d1;
}
return cro>0;
}
int main(){
int miy,mix,i,j,n0,max;
cin>>n;
miy=10005;
mix=10005;
max=0;
for (i=0;i<n;i++){
scanf("%d%d",&p[i].x,&p[i].y);
if (miy>p[i].y){
miy=p[i].y;
mix=p[i].x;
n0=i;
}
else if (miy==p[i].y&&mix>p[i].x){
mix=p[i].x;
n0=i;
}
}
if (n0){
point temp=p[n0];
p[n0]=p[0];