#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double LD;
struct node{
	LD x,y;
	node(LD x=0,LD y=0):x(x),y(y){}
	node operator - (const node& b){
		return node(x-b.x,y-b.y);
	}
};
LD dis(const node& a,const node& b){
	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
node a[5050];
int id[5050],vis[5050];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lf%lf",&a[i].x,&a[i].y);
	}
	id[1]=1;vis[1]=1;
	for(int i=2;i<=n;i++){
		LD ma=-1e18;int pt=-1;
		for(int j=1;j<=n;j++){
			if(vis[j]) continue;
			LD tdis=dis(a[id[i-1]],a[j]);
			if(tdis>ma){
				ma=tdis;
				pt=j;
			}
		}
		id[i]=pt;
		vis[pt]=1;
	}
	for(int i=1;i<=n;i++){
		if(i-1) printf(" ");
		printf("%d",id[i]);
	}
	printf("\n");
	return 0;
}
