
#include <stdio.h>
struct brick{
int no;
int s;
int h;
int w;
} a[101],t;
int L[101];
int B[101];
int n;
int C[101];
void sorting(){
int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<n;j++)
{
if(a[j].w>a[j+1].w)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void printing(){
int i;
for(i=1;i<=n;i++)
{
printf("%d %d %d %d\n",
a[i].no,a[i].s,a[i].h,a[i].w);
}
}
int main()
{
int i,j,k,idx;
int max;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a[i].no=i;
scanf("%d %d %d",&(a[i].s),&(a[i].h)
,&(a[i].w));
}
sorting();//무게를 기준으로
//printing();
for(i=1;i<=n;i++)
{
L[i]=a[i].h;
B[i]=0;
for(k=1;k<=i-1;k++)
{
if(a[i].s>a[k].s &&
L[i]<(L[k]+a[i].h))
{
L[i]=L[k]+a[i].h;
B[i]=k;
}
}
}
max=L[1];
idx=1;
for(i=2;i<=n;i++)
{
if(max<L[i])
{
max=L[i];
idx=i;
}
}
i=0;
C[i]=a[idx].no;
while(B[idx]>0)
{
idx=B[idx];
i++;
C[i]=a[idx].no;
}
printf("%d\n",i+1);
for(j=i;j>=0;j--)
{
printf("%d\n",C[j]);
}
return 0;
}