#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 5000

typedef struct list
{
	int x, y;
	char ground;
	struct list *prev;
	struct list *next;
} list;

list head;
list tail;
	
void Insert(char);
list *FarSide(list *);
int PubbleArea(list *, list *);

int main()
{
	int i;
	char c;
	list *p;
	list *farSide;
	int pubbleCount = 0;
	int pubble[N];
	int sumPubble = 0;
	
	head.next = &tail;
	tail.prev = &head;
	
	// Input
	while(1)
	{
		c = getchar();
		if(c == '\n') break;

		Insert(c);
	}

	// ?°´??????????????¢????????????
	for(p = head.next; p != &tail; p = p->next)
	{
		if(p->ground == '\\' &&
		   (farSide = FarSide(p)) != NULL)
		{
			pubble[pubbleCount] = PubbleArea(p, farSide);
			sumPubble += pubble[pubbleCount];
			p = farSide;
			pubbleCount++;
		}
		
	}

	// Output
	printf("%d\n%d", sumPubble, pubbleCount);
	for(i = 0; i < pubbleCount; i++)
	{
		printf(" %d", pubble[i]);
	}
	printf("\n");
	
	return 0;
}

void Insert(char c)
{
	static int xCount = 0;
	static int yCount = 0;
	list *p;

	p = (list*)malloc(sizeof(list));
	p->prev = tail.prev;
	tail.prev->next = p;
	p->next = &tail;
	tail.prev = p;

	xCount++;
	if(c == '\\') yCount--;
	if(c == '/' ) yCount++;
	p->x = xCount;
	p->y = yCount;
	p->ground = c;
}

// ??????????±?????????¢??°
// ?????°??? '\' ??????????§???????
// ????????????'/'??????????????£??¢??¨???????§???????
list *FarSide(list *s)
{
	list *i_p;
	int height;
	height = s->y + 1;

	for(i_p = s->next; i_p != &tail; i_p = i_p->next)
	{
		if(i_p->y == height) return i_p;
	}
	return NULL;
}

// ??????????°´??????????????¢???????±?????????¢??°
// ?????°??? ?°´?????????????§??????¨??????????????¨????§???????
// ???????????? ??¢???
int PubbleArea(list *pS, list *pE)
{
	list *i_p;
	list *farSide;
	int area = 0;
	
	for(i_p = pS; i_p != pE; i_p = i_p->next)
	{
		if(i_p->ground == '\\')
		{
			farSide = FarSide(i_p);
			area += farSide->x - i_p->x;
		}
	}
	return area;
}