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

int n;
bool use[10];
int w[10],s[10];
vector<int> tmp,ans;
int maximam,total;

void rec(int pos){
  if(pos==n){
    int g;
    g = 0;
    for(int i=0;i<n;i++)g+=(i+1)*w[tmp[i]];
    if(maximam<g){
      maximam = g;
      ans = tmp;
    }
    return;
  }

  for(int i=0;i<n;i++){
    if(!use[i]){
      if(s[i]>=total){
	use[i] = true;
	total += w[i];
	tmp.push_back(i);
	rec(pos+1);
	tmp.pop_back();
	use[i] = false;
	total -= w[i];
      }
    }
  }
}

int main(){
  string f[10];

  while(1){
    cin >> n;
    if(!n)break;

    for(int i=0;i<n;i++){
      cin >> f[i] >> w[i] >> s[i];
      use[i] = false;
    }

    total = 0;
    ans.clear();
    tmp.clear();
    maximam = 0;

    rec(0);

    for(int i=ans.size()-1;i>=0;i--)cout << f[ans[i]] << endl;
  }
}
    