#include <stdio.h>
#include <string.h>
#define MAX 20001

typedef struct dx{
  int id;
  int s;
}dx;

void push1(int S[],int x,int *t){
  S[*t]=x;
  (*t)++;
}

void push2(dx S[],int id,int s,int *t){
  S[*t].id=id;
  S[*t].s=s;
  (*t)++;
}

int bpop(int S[],int *t){
  (*t)--;
  return S[*t];
}

void Union(dx S[],int *t){
  int i;
  for(i=(*t)-1;i>0;i--){
    if(S[i].id < S[i-1].id){
      (*t)--;
      S[i-1].id=S[i].id;
      S[i-1].s+=S[i].s;
    }
  }
}

int main(){
  int i,j,id,stack1[MAX],top1=0,top2=0,sum=0;
  cahr str[MAX];
  dx stack2[MAX];

  scanf("%s",str);
  for(i=0;i<strlen(str);i++){

    switch(str[i]){
    case '\\':push1(stack1,i,&top1);
      break;
    case '/' :if(top1==0)break;
      idx=pop(stack1,&top1);
      sum+=(i-id);
      push2(stack2,id,i-id,&top2);
      Union(stack2,&top2);
      break;
    }

  }
  printf("%d\n",sum);
  if(top2 == 0)printf("%d\n",top2);
  else {
    printf("%d ",top2);
    for(i=0;i<top2-1;i++)printf("%d ",stack2[i].s);
    printf("%d\n",stack2[top2-1].s);
  }
  return 0;
}

