#include #include #include using std::cin; using std::cout; const char endl = '\n'; const int N = 55 << 1; int n, w[N], f[N][N], g[N][N], ans; char op[N]; int main() { std::ios::sync_with_stdio(false); cin >> n; for (int i = 1; i <= n; i++) { cin >> op[i] >> w[i]; w[n + i] = w[i]; op[n + i] = op[i]; } for (int i = 1; i <= (n << 1); i++) { f[i][i] = g[i][i] = w[i]; } for (int len = 2; len <= n; len++) { for (int l = 1, r = len; r <= n * 2; l++, r++) { f[l][r] = std::numeric_limits::min(); g[l][r] = std::numeric_limits::max(); for (int k = l; k < r; k++) { int maxl = f[l][k], maxr = f[k + 1][r]; int minl = g[l][k], minr = g[k + 1][r]; if (op[k + 1] == 't') { f[l][r] = std::max(f[l][r], maxl + maxr); g[l][r] = std::min(g[l][r], minl + minr); } else { int x1 = minl * minr, x2 = minl * maxr, x3 = maxl * minr, x4 = maxl * maxr; f[l][r] = std::max({f[l][r], x1, x2, x3, x4}); g[l][r] = std::min({g[l][r], x1, x2, x3, x4}); } } } } ans = std::numeric_limits::min(); for (int i = 1; i <= n; i++) { ans = std::max(ans, f[i][n + i - 1]); } cout << ans << endl; for (int i = 1; i <= n; i++) { if (ans == f[i][i + n - 1]) { cout << i << ' '; } } cout << endl; return 0; }