#include <bits/stdc++.h>
using namespace std;
const int N = int(1e5) + 5;
const int inf = (int)1e9 + 7;
const long long linf = (long long)1e18 + 7;
int n;
int t[N], d[N], p[N];
int dp[105][3002], par[105][3002];
vector<int> id;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d %d %d", t + i, d + i, p + i);
    id.push_back(i);
  }
  sort(id.begin(), id.end(), [](int i, int j) {
    return make_pair(d[i], t[i]) < make_pair(d[j], t[j]);
  });
  for (int i = 0; i < (int)id.size(); ++i) {
    for (int j = 0; j <= 2100; ++j) {
      if (dp[i + 1][j] < dp[i][j]) {
        par[i + 1][j] = 0;
        dp[i + 1][j] = dp[i][j];
      }
      if (j + t[id[i]] < d[id[i]]) {
        if (dp[i + 1][j + t[id[i]]] < dp[i][j] + p[id[i]]) {
          dp[i + 1][j + t[id[i]]] = dp[i][j] + p[id[i]];
          par[i + 1][j + t[id[i]]] = 1;
        }
      }
    }
  }
  int ans = -1;
  int e = -1;
  for (int i = 1; i <= 2300; ++i) {
    if (dp[(int)id.size()][i] > ans) {
      e = i;
      ans = dp[(int)id.size()][i];
    }
  }
  printf("%d\n", ans);
  vector<int> to;
  int f = (int)id.size();
  while (f > 0) {
    if (par[f][e]) {
      e -= t[id[f - 1]];
      to.push_back(id[f - 1]);
    }
    --f;
  }
  printf("%d\n", (int)to.size());
  reverse(to.begin(), to.end());
  for (int i : to) {
    printf("%d ", i);
  }
  return 0;
}
