#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
double dp[(1<<16)][15];
double INF =9999999.9;
int n,no[15];
double r[15],t[15];

int ans[15],size=0;
int tmp[15],mini=INF;

double rec(int S,int pos,double cost){
  //cout<<S<<' '<<pos<<' '<<cost<<' '<<size<<endl;
  if(dp[S][pos]!=INF){
    for(int i=size;i<n;i++)ans[i]=tmp[i];
    return dp[S][pos];
  }

  if(size==n){
    if(mini>cost){
      mini=cost;
      for(int i=0;i<n;i++)tmp[i]=ans[i];
    }
    return 0.0;
  }

  double w=0.0;
  for(int i=0;i<size;i++)w+=(t[ans[i]]*20.0);
  
  int s;
  double v=2000.0/(70.0+w),add;

  for(int i=0;i<n;i++){
    if((S>>i)&1==1)continue;

    ans[size]=i;
    size++;
    s=S+(1<<i);
    add=abs(r[i]-r[pos])/v;
    dp[S][pos]=
      min(dp[S][pos], rec(s,i,cost+add) + add );
    size--;
    
  }
  //if(dp[S][pos]==INF)cout<<'a'<<endl;
  return dp[S][pos];
}

int main(){
  while(cin>>n){mini=INF;
  for(int i=0;i<n;i++){
    cin>>no[i]>>r[i]>>t[i];
  }
  for(int i=0;i<(1<<16);i++)
    for(int j=0;j<15;j++)dp[i][j]=INF;
  
  double x;
  for(int i=0;i<n;i++){
    ans[0]=i;
    size=1;
    x=rec((1<<i),i,0.0);
    //cout<<x<<endl;
  }

  for(int i=0;i<n;i++){
    if(i)cout<<' ';
    cout<<no[tmp[i]];
  }
  cout<<endl;
  }
  return 0;
}