#include <bits/stdc++.h>
using namespace std;
struct h {
  int t, d, p, i;
};
bool cmp(h a, h b) { return a.d < b.d; }
const int N = 105, M = 2005;
int n;
h arr[N];
vector<int> ans;
int memo[N][M];
int solve(int ind, int t) {
  if (ind == n) return 0;
  int &ret = memo[ind][t];
  if (ret != -1) return ret;
  ret = solve(ind + 1, t);
  if (t + arr[ind].t < arr[ind].d)
    ret = max(ret, solve(ind + 1, t + arr[ind].t) + arr[ind].p);
  return ret;
}
void path(int ind, int t) {
  if (ind == n) return;
  int c = solve(ind + 1, t), c2 = -0x3f3f3f3f;
  if (t + arr[ind].t < arr[ind].d)
    c2 = solve(ind + 1, t + arr[ind].t) + arr[ind].p;
  if (c > c2)
    path(ind + 1, t);
  else
    ans.push_back(arr[ind].i), path(ind + 1, arr[ind].t + t);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d", &arr[i].t, &arr[i].d, &arr[i].p);
    arr[i].i = i + 1;
  }
  sort(arr, arr + n, cmp);
  memset(memo, -1, sizeof memo);
  printf("%d\n", solve(0, 0));
  path(0, 0);
  printf("%d\n", ans.size());
  for (int x : ans) printf("%d ", x);
}
