#include <stdio.h>
struct point {
	int x, y;
	long long operator-(const point &a) const { return ((long long) (x - a.x) * (x - a.x)) + ((long long) (y - a.y) * (y - a.y)); }
} p[5005];
int n, vis[5005], last;
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i)
		scanf("%d%d", &p[i].x, &p[i].y);
	printf("1 "); last = 1; vis[1] = 1;
	for (int i = 1; i < n; ++i) {
		int x; long long v = 0;
		for (int j = 2; j <= n; ++j)
			if (!vis[j] && p[j] - p[last] > v) x = j, v = p[j] - p[last];
		printf("%d ", x); last = x; vis[x] = 1;
	}
	return 0;
}