#include <bits/stdc++.h>
using namespace std;
const int MM = 101, MOD = 1e9 + 7;
int N, dp[MM][2001], tk[MM][2001];
pair<int, int> bk[MM][2001];
struct itm {
  int idx, p, t, d;
  bool operator<(const itm &other) const { return d < other.d; }
} im[MM];
int main() {
  cin.tie(nullptr)->sync_with_stdio(false);
  cin >> N;
  for (int i = 1, t, d, p; i <= N; i++) {
    cin >> t >> d >> p;
    im[i] = {i, p, t, d};
  }
  sort(im + 1, im + N + 1);
  for (int i = 1; i <= 2000; i++) {
    for (int j = 1; j <= N; j++) {
      dp[j][i] = max(dp[j][i - 1], dp[j - 1][i]);
      if (dp[j][i - 1] > dp[j - 1][i])
        bk[j][i] = {j, i - 1};
      else
        bk[j][i] = {j - 1, i};
      if (i - im[j].t >= 0 && i < im[j].d &&
          dp[j][i] < dp[j - 1][i - im[j].t] + im[j].p) {
        dp[j][i] = dp[j - 1][i - im[j].t] + im[j].p;
        bk[j][i] = {j - 1, i - im[j].t};
        tk[j][i] = im[j].idx;
      }
    }
  }
  cout << dp[N][2000] << "\n";
  int j = N, i = 2000;
  vector<int> ans;
  while (j != 0 && i != 0) {
    if (tk[j][i] != 0) ans.push_back(tk[j][i]);
    pair<int, int> x = bk[j][i];
    j = x.first;
    i = x.second;
  }
  cout << ans.size() << "\n";
  for (int i = ans.size() - 1; i >= 0; i--)
    cout << ans[i] << (i == 0 ? "\n" : " ");
}
