#include<cstdio>
#include<cstdlib>

using namespace std;

int id[15];

void print(const int path[1<<15][15],int stat,int last){
	if(stat==0)	return;

	int befstat=path[stat][last]&((1<<20)-1);
	int beflast=path[stat][last]>>20;
	print(path,befstat,beflast);

	if(befstat>0)	putchar(' ');
	printf("%d",id[last]);
}

int main(){
	int n;	scanf("%d",&n);
	int d[15],m[15];
	for(int i=0;i<n;i++)	scanf("%d%d%d",id+i,d+i,m+i);
	int adj[15][15];
	for(int i=0;i<n;i++)for(int j=0;j<n;j++)	adj[i][j]=abs(d[i]-d[j]);

	static int w[1<<15];
	for(int i=0;i<(1<<n);i++){
		int cnt=0;
		for(int j=0;j<n;j++){
			if(i&(1<<j))	cnt+=m[j];
		}
		w[i]=20*cnt;
	}

	static int path[1<<15][15];
	static double tmin[1<<15][15];	// [visited state][last visited]
	for(int i=0;i<(1<<n);i++)for(int j=0;j<n;j++)	tmin[i][j]=1e30;
	for(int i=0;i<n;i++)	tmin[1<<i][i]=0;

	for(int i=0;i<(1<<n);i++)for(int j=0;j<n;j++){
		if(!(i&(1<<j)))	continue;
		for(int k=0;k<n;k++){
			int nextstat=i|(1<<k);
			if(i<nextstat){
				double nextt=tmin[i][j]+adj[j][k]/(2000./(70+w[i]));
				if(nextt<tmin[nextstat][k]){
					tmin[nextstat][k]=nextt;
					path[nextstat][k]=i|(j<<20);
				}
			}
		}
	}

	int k=0;
	for(int i=0;i<n;i++){
		if(tmin[(1<<n)-1][i]<tmin[(1<<n)-1][k])	k=i;
	}

	print(path,(1<<n)-1,k);

	return 0;
}