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

typedef pair< double , vector<int> > P;
P dp[(1<<16)][15];
double INF =9999999.9;
int n,no[15];
double r[15],t[15];


P rec(int S,int pos){
  //cout<<S<<' '<<pos<<' '<<cost<<' '<<size<<endl;
  if(dp[S][pos].first!=INF){
    return dp[S][pos];
  }

  if(S==(1<<(n))-1){
    vector<int> res;
    res.push_back(pos);
    return P(0.0,res);
  }

  double w=0.0;
  for(int i=0;i<n;i++){
    if((S>>i)&1){
      w+=(t[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;

    s=S+(1<<i);
    add=abs(r[i]-r[pos])/v;
    P X =rec(s,i);
    X.first+=add;
    //X.second.erase(X.second.end());
    
    if(X<dp[S][pos]){
      dp[S][pos].second.clear();
      dp[S][pos].second.push_back(pos);
      dp[S][pos].first=X.first;
      for(int j=0;j<(int)X.second.size();j++){
	dp[S][pos].second.push_back(X.second[j]);
      }
    }
   
  }
  
  return dp[S][pos];
}

int main(){
  while(cin>>n){
  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].first=INF;dp[i][j].second.clear();}
  
  P x,ans;
  ans.first=INF;
  for(int i=0;i<n;i++){
    x=rec((1<<i),i);
    if(x<ans){
      ans=x;
    }
    //cout<<x.first<<endl;
  }

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