#include<bits/stdc++.h>
using namespace std;

int n;
int idx[15], dst[15], num[15];
double dp[15][1 << 15];
int prv[15][1 << 15];
double spd[1 << 15];

int main() {
  cin >> n;
  for(int i=0; i<n; i++) {
    cin >> idx[i] >> dst[i] >> num[i];
  }

  int M = 1 << n;
  for(int S=0; S<M; S++) {
    int c = 0;
    for(int i=0; i<n; i++) {
      prv[i][S] = -1;
      dp[i][S] = DBL_MAX;

      if( S >> i & 1 ) {
	c += num[i];
      }
    }
    //spd[S] = 2000.0 / (70 + 20 * c);
    spd[S] = (7 + 2 * c) / 200.0;
  }

  for(int i=0; i<n; i++) {
    dp[i][1 << i] = 0.0;
  }

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

	double tm = dp[i][S] + abs(dst[i] - dst[j]) * spd[S];
	int T = S | 1 << j;
	if( dp[j][T] > tm ) {
	  dp[j][T] = tm;
	  prv[j][T] = i;
	}
      }
    }
  }

  int x = 0;
  for(int i=1; i<n; i++) {
    if( dp[x][M-1] > dp[i][M-1] ) {
      x = i;
    }
  }

  //queue<int> q;
  stack<int> st;
  int U = M-1;
  while( x != -1 ) {
    //q.push(idx[x]);
    st.push(idx[x]);
    int y = prv[x][U];
    U ^= 1 << x;
    x = y;
  }

  //cout << q.front(); q.pop();
  cout << st.top(); st.pop();
  while( !st.empty() ) {
    cout << ' ' << st.top(); st.pop();
  }

  cout << endl;
}