#include<bits/stdc++.h>
using namespace std;
int N;
const double EPS=1e-8;
int p[15],d[15],c[15];
double dp[1<<16][15];

int w[1<<16];
int main(){
    scanf("%d",&N);
    for(int i=0;i<N;i++)scanf("%d%d%d",&p[i],&d[i],&c[i]);

    fill_n(*dp,(1<<16)*15,1e9);
    for(int i=0;i<N;i++){
        dp[(1<<i)][i]=0;
    }

    w[0]=0;

    for(int i=0;i<(1<<16);i++){
        for(int j=0;j<N;j++){
            if((i>>j)&1)continue;
            w[i|(1<<j)]=w[i]+c[j];
        }
    }

    for(int i=1;i<(1<<16);i++){
        for(int j=0;j<N;j++){
            for(int k=0;k<N;k++){
                if((i>>k)&1)continue;
                double t=2000/(70+w[i]*20.0)*abs(d[j]-d[k]);
                dp[i|(1<<k)][k]=min(dp[i|(1<<k)][k],dp[i][j]+t);
            }
        }
    }

    int s=(1<<N)-1;
    int pos=0;
    for(int i=1;i<N;i++){
        if(dp[s][pos]>dp[s][i])pos=i;
    }
    vector<int>ans(1,pos);

    for(int i=0;i<N-1;i++){
        for(int j=0;j<N;j++){
            if(((s>>j)&1)==0)continue;
            if(fabs(dp[s^(1<<pos)][j]+2000/(70+w[s^(1<<pos)]*20.0)*abs(d[j]-d[pos])-dp[s][pos])<EPS){
                ans.push_back(j);
                s=s^(1<<pos);
                pos=j;
                break;
            }

        }
    }

    for(int i=0;i<ans.size();i++){
        if(i)printf(" ");
        printf("%d",p[ans[i]]);
    }

    return 0;
}