#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int INF = 1e9 + 7;
const int N = 1010;
const double pi = 3.1415926;
int n;
int t[110], d[110], p[110], pre[2010], now[2010], sum[2010], good[2010];
int dp[2010];
vector<int> v[2010];
struct node {
  int t;
  int d;
  int p;
  int id;
} e[110];
bool cmp(node a, node b) { return a.d < b.d; }
int main() {
  while (~scanf("%d", &n)) {
    for (int i = 0; i < 2010; i++) v[i].clear();
    for (int i = 0; i < n; i++) {
      scanf("%d%d%d", &e[i].t, &e[i].d, &e[i].p);
      e[i].id = i + 1;
    }
    sort(e, e + n, cmp);
    memset(dp, 0, sizeof(dp));
    ;
    memset(sum, 0, sizeof(sum));
    ;
    memset(now, 0, sizeof(now));
    ;
    memset(pre, 0, sizeof(pre));
    ;
    int ans = 0, idx = 0, s1 = 0, s2 = 0;
    for (int i = 0; i < n; i++) {
      for (int j = e[i].d; j > e[i].t; j--) {
        s1 = 0;
        if (dp[j - e[i].t] + e[i].p > dp[j]) {
          dp[j] = dp[j - e[i].t] + e[i].p;
          sum[j] = sum[j - e[i].t] + 1;
          v[j] = v[j - e[i].t];
          v[j].push_back(e[i].id);
        }
        if (dp[j] > ans) {
          idx = j;
          ans = dp[j];
        }
      }
    }
    printf("%d\n", ans);
    printf("%d\n", sum[idx]);
    for (int i = 0; i < v[idx].size(); i++) {
      printf("%d ", v[idx][i]);
    }
    printf("\n");
  }
  return 0;
}
