#include <bits/stdc++.h>
#define f first
#define s second
#define INF 1e9
using namespace std;
typedef pair <double,double> P;
P dp[1<<15][15];

double get_time(double a,double b,double w){
  return abs(a-b)/(2000/(70+20*w));
}

int main(){
  int n,num[15];
  cin>>n;

  P x[15];
  for(int i=0,b,c;i<n;i++)cin>>num[i]>>b>>c,x[i]=P(b,c);
  
  for(int i=0;i<(1<<15);i++)for(int j=0;j<15;j++)dp[i][j]=P(INF,INF);
  for(int i=0;i<n;i++)dp[1<<i][i]=P(0,x[i].s);
  
  for(int i=0;i<(1<<n);i++)
    for(int k=0;k<n;k++){
      if(dp[i][k].f==INF)continue;
      for(int j=0;j<n;j++){
	if((i&(1<<j))) continue;
	int ni=i|(1<<j);
	double nw=dp[i][k].s+x[j].s;
	double nt=dp[i][k].f+get_time(x[k].f,x[j].f,dp[i][k].s);
	dp[ni][j]=min(dp[ni][j],P(nt,nw));
      }
    }

  
  vector <int> ans;
  int bit=(1<<n)-1;
  int na;
  P mnt=P(INF,INF);
  for(int i=0;i<n;i++) if(dp[bit][i]<mnt)mnt=dp[bit][i],na=i; 
  ans.push_back(na);
  bit-=(1<<na);
  
  while(bit){
    int nna;
    for(int i=0;i<n;i++){
      if((bit&(1<<i))==0)continue;
      int ni=bit|(1<<na);
      double nw=dp[bit][i].s+x[na].s;
      double nt=dp[bit][i].f+get_time(x[i].f,x[na].f,dp[bit][i].s);
      if(dp[ni][na]==P(nt,nw))nna=i;
    }
    na=nna;
    ans.push_back(na);
    bit-=(1<<na);
  }
  
  reverse(ans.begin(),ans.end());
  for(int i=0;i<n-1;i++) cout << num[ans[i]]<<" ";
  cout << num[ans[n-1]]<<endl;
  return 0;
}