#include<stdio.h>
#include<string.h>
#include<float.h>
#include<algorithm>
struct S{char f[32];int w,s;}F[10];
int main()
{
	int n,w,s,i,a[10],r[10];
	double g,b;
	while(scanf("%d",&n),n)
	{
		b=DBL_MAX;
		for(i=0;i<n;++i)scanf("%s%d%d",F[i].f,&F[i].w,&F[i].s),a[i]=i;
		do
		{
			g=w=0;
			for(i=n-1;i>=0;--i)
			{
				if(F[a[i]].s<w)goto N;
				w+=F[a[i]].w;
				g+=(i+1)*F[a[i]].w;
			}
			if(g<b)b=g,memcpy(r,a,sizeof(a));
N:;
		}while(std::next_permutation(a,a+n));
		for(i=0;i<n;++i)puts(F[r[i]].f);
	}
	return 0;
}