#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+10;
inline int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int n;
int a[102];
char s[102];
int dp[100][100][2];
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
scanf("%c",&s[i]);
a[i]=read();
s[i+n]=s[i];
a[i+n]=a[i];
}
for(int i=1;i<=n*2;i++)
{
dp[i][i][0]=dp[i][i][1]=a[i];
}
for(int len=2;len<=n;len++)
{
for(int i=1;i+len-1<=n*2-1;i++)
{
int j=i+len-1;
dp[i][j][0]=-0x3f3f3f3f;
dp[i][j][1]=0x3f3f3f3f;
for(int k=i;k<j;k++)//这里一定是<j!
{
if(s[k+1]=='t')
{
dp[i][j][0]=max(dp[i][j][0],dp[i][k][0]+dp[k+1][j][0]);
dp[i][j][1]=min(dp[i][j][1],dp[i][k][1]+dp[k+1][j][1]);
}
else
{
dp[i][j][0]=max(dp[i][j][0],dp[i][k][0]*dp[k+1][j][0]);
dp[i][j][0]=max(dp[i][j][0],dp[i][k][1]*dp[k+1][j][1]);
dp[i][j][0]=max(dp[i][j][0],dp[i][k][1]*dp[k+1][j][0]);
dp[i][j][0]=max(dp[i][j][0],dp[i][k][0]*dp[k+1][j][1]);
dp[i][j][1]=min(dp[i][j][1],dp[i][k][1]*dp[k+1][j][1]);
dp[i][j][1]=min(dp[i][j][1],dp[i][k][1]*dp[k+1][j][0]);
dp[i][j][1]=min(dp[i][j][1],dp[i][k][0]*dp[k+1][j][1]);
dp[i][j][1]=min(dp[i][j][1],dp[i][k][0]*dp[k+1][j][0]);
}
}
}
}
int res=-0x3f3f3f3f;
vector<int> Edge;
for(int i=1;i<=n;i++)
{
if(dp[i][i+n-1][0]>res)
{
res=dp[i][i+n-1][0];
Edge.clear();
Edge.push_back(i);
}
else if(dp[i][i+n-1][0]==res)
{
Edge.push_back(i);
}
}
printf("%d\n",res);
for(int i=0;i<Edge.size();i++)
{
printf("%d ",Edge[i]);
}
printf("\n");
return 0;
}
/*
4
t -7 t 4 x 2 x 5
*/