#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 5, inf = 1e9 + 7;
int n, k, i, j;
int A[N], t[N], d[N], pp[N], o[N], dp[N][N * 20], p[N][N * 20];
string s;
vector<int> adj[N];
inline bool cmp(const int& a, const int& b) { return d[a] < d[b]; }
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int i, j, a, b, ans = 0;
  cin >> n;
  for (i = 1; i < n + 1; i++) cin >> t[i] >> d[i] >> pp[i], o[i] = i;
  a = *max_element(d, d + n + 1);
  sort(o + 1, o + n + 1, cmp);
  for (i = 1; i < n + 1; i++) {
    for (j = 0; j < d[o[i]] - t[o[i]]; j++)
      dp[i][j + t[o[i]]] = dp[i - 1][j] + pp[o[i]];
    for (j = 0; j < a; j++) {
      if (dp[i][j] <= dp[i - 1][j])
        p[i][j] = j, dp[i][j] = dp[i - 1][j];
      else
        p[i][j] = j - t[o[i]];
    }
  }
  for (i = 0; i < a; i++) ans = max(ans, dp[n][i]);
  for (i = 0; i < a; i++)
    if (dp[n][i] == ans) break;
  int cur = i;
  vector<int> v;
  for (i = n; i > 0; i--) {
    if (p[i][cur] < cur) v.emplace_back(o[i]);
    cur = p[i][cur];
  }
  cout << ans << "\n" << (int)v.size() << "\n";
  reverse(v.begin(), v.end());
  for (i = 0; i < (int)v.size(); i++) cout << v[i] << " ";
}
