#include <bits/stdc++.h>
using namespace std;
int t[109], d[109], p[109], n, dp[109][2009];
pair<int, int> parent[109][2009];
vector<int> v;
vector<pair<int, int> > in;
int solve(int i, int time) {
  if (dp[i][time] == -1) {
    int ii = in[i].second;
    if (i == n) {
      if (time + t[ii] < d[ii]) return p[ii];
      return 0;
    }
    int t1, temp = 0, val = 0;
    if (time + t[ii] - 1 >= d[ii])
      t1 = time;
    else {
      t1 = time + t[ii];
      val += p[ii];
    }
    for (int j = i + 1; j < n; j++) {
      if (temp <= solve(j, t1)) {
        parent[i][time] = {j, t1};
        temp = solve(j, t1);
      }
    }
    temp += val;
    dp[i][time] = temp;
  }
  return dp[i][time];
}
int main() {
  cin >> n;
  memset(dp, -1, sizeof(dp));
  for (int i = 1; i <= n; i++) {
    cin >> t[i] >> d[i] >> p[i];
    in.push_back({d[i], i});
  }
  sort(in.begin(), in.end());
  int ans = 0;
  for (int i = 0; i < n; i++) {
    if (ans <= solve(i, 1)) {
      parent[0][0] = {i, 1};
      ans = solve(i, 1);
    }
  }
  cout << ans;
  int ind1 = parent[0][0].first, ind2 = parent[0][0].second;
  if (ind2 + t[in[ind1].second] - 1 < d[in[ind1].second])
    v.push_back(in[ind1].second);
  while (ind1 != n) {
    int id1, id2;
    id2 = parent[ind1][ind2].second;
    id1 = parent[ind1][ind2].first;
    if (id1 == 0 && id2 == 0) break;
    if (id2 + t[in[id1].second] - 1 < d[in[id1].second])
      v.push_back(in[id1].second);
    ind1 = id1;
    ind2 = id2;
  }
  cout << "\n" << v.size() << "\n";
  for (int i = 0; i < v.size(); i++) cout << v[i] << " ";
  return 0;
}
