#include<stdio.h>
#include<string.h>
#define N 20000
#define O 0
#define I 1

typedef struct Data{
  int area, pos;
} Data;
Data t[N],B,X;
int i,n,u[N],T,U,a,A;
char str[N+I];

void D_push(Data);
Data D_pop(void);
void Push(int);
int Pop(void);
void Init(void);
Data MakeData(int,int);

int main(){
  Init();
  scanf("%s",str);
  n=strlen(str);
  for(i=O;i<n;i++){
    if(str[i]=='/'){
      if(U==O){
	continue;
      }
      A=Pop();
      X=MakeData(i-A,A);
      a+=i-A;
      while(T>O){
        B=D_pop();
        if(B.pos<A){
          D_push(B);
          break;
        }
        X.area+=B.area;
        if(B.pos<X.pos){
	  X.pos=B.pos;
	  }
      }	
      D_push(X);
    }
    else if(str[i]=='\\'){
    Push(i);
    }
  }
printf("%d\n%d",a,T);
 for(i=O;i<T;i++){
    printf(" %d",t[i].area);
 }
 printf("\n");
 return 0;
}
void D_push(Data data){
  t[T++]=data;
}
Data D_pop(){
  return t[--T];
}
void Push(int x){
  u[U++]=x;
}
int Pop(){
  return u[--U];
}
void Init(){
  a=T=U=O;
}
Data MakeData(int x,int y){
  Data res;
  res.area=x;
  res.pos=y;
  return res;
}

