#include<iostream>
#include<cmath>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;

#define INF 1e30
#define EPS 1e-4
#define EQ(a,b) (fabs((a)-(b))<EPS)

int id[15],dist[15];
int num[1<<15];
double dp[1<<15][15];


int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>id[i]>>dist[i]>>num[1<<i];
	}
	for(int i=1;i<(1<<n);i++){
		int s=0;
		for(int j=0;j<n;j++)
			if(i>>j&1)s+=num[1<<j];
		num[i]=s;
	}
	for(int i=0;i<(1<<n);i++)
		for(int j=0;j<n;j++)dp[i][j]=INF;
	for(int i=0;i<n;i++)dp[1<<i][i]=0;
	for(int i=1;i<(1<<n)-1;i++){
		for(int j=0;j<n;j++){
			if(!(i>>j&1))continue;
			for(int k=0;k<n;k++){
				if(i>>k&1)continue;
				int d=abs(dist[j]-dist[k]);
				double sp=2000/(70.0+20*num[i]);
				dp[i|1<<k][k]=min(dp[i|1<<k][k], dp[i][j]+d/sp);
			}
		}
	}
	double t=INF;
	int v=-1;
	for(int i=0;i<n;i++){
		if(dp[(1<<n)-1][i]<t){
			t=dp[(1<<n)-1][i];
			v=i;
		}
	}
	vector<int> ans;
	int s=(1<<n)-1;
	ans.push_back(id[v]);
	while(dp[s][v]!=0){
		for(int i=0;i<n;i++){
			if(!(s>>i&1))continue;
			int d=abs(dist[i]-dist[v]);
			double sp=2000/(70.0+20*num[s&~(1<<v)]);
			if(EQ(dp[s][v],dp[s&~(1<<v)][i]+d/sp)){
				s&=~(1<<v);
				v=i;
				break;
			}
		}
		ans.push_back(id[v]);
	}
	reverse(ans.begin(),ans.end());
	cout<<ans[0];
	for(int i=1;i<ans.size();i++)cout<<' '<<ans[i];
	cout<<endl;
	return 0;
}