"""
# 標準入力取得
## 文字列
 = sys.stdin.readline().rstrip()
 = list(sys.stdin.readline().rstrip())

## 数値
 = int(sys.stdin.readline())
 = map(int, sys.stdin.readline().split())
 = list(map(int, sys.stdin.readline().split()))
 = [list(map(int,list(sys.stdin.readline().split()))) for i in range(h)]  # 二次元配列入力　二次元マップみたいな入力のとき

# 0埋め, 小数点出力桁指定時のときの出力
a = 100
b = 0.987654321
print("{0:06d}-{1:6f}".format(a,b))
000100-0.987654

# 文字列をリストに格納
char_list = list("abcd") # ["a","b","c","d"]
"""

import math
import sys
import itertools
import queue
from fractions import gcd

def lcm(a, b):
    return a * b // gcd(a, b)

mod = 1000000007

if __name__ == "__main__":
    s=[]#"\\"のindexが入るスタック
    p=[]#popしたindexと面積のタプルが入るスタック
    i=0#index番号
    a=0#
    for c in input():
        if "\\"==c:#"\"だと認識できない仕様
            s+=[i]#index番号の取得とスタックへの挿入
        elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
        i+=1
    print(a)
    if p:
        print(len(p),*list(zip(*p))[1])
    else:
        print(0) """
# 標準入力取得
## 文字列
 = sys.stdin.readline().rstrip()
 = list(sys.stdin.readline().rstrip())

## 数値
 = int(sys.stdin.readline())
 = map(int, sys.stdin.readline().split())
 = list(map(int, sys.stdin.readline().split()))
 = [list(map(int,list(sys.stdin.readline().split()))) for i in range(h)]  # 二次元配列入力　二次元マップみたいな入力のとき

# 0埋め, 小数点出力桁指定時のときの出力
a = 100
b = 0.987654321
print("{0:06d}-{1:6f}".format(a,b))
000100-0.987654

# 文字列をリストに格納
char_list = list("abcd") # ["a","b","c","d"]
""" import math math import sys sys import itertools itertools import queue queue from fractions import gcd def lcm(a, b):
    return a * b // gcd(a, b) lcm return a * b // gcd(a, b) a * b // gcd(a, b) a * b a b gcd(a, b) gcd a b a a b b mod = 1000000007 mod 1000000007 if __name__ == "__main__":
    s=[]#"\\"のindexが入るスタック
    p=[]#popしたindexと面積のタプルが入るスタック
    i=0#index番号
    a=0#
    for c in input():
        if "\\"==c:#"\"だと認識できない仕様
            s+=[i]#index番号の取得とスタックへの挿入
        elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
        i+=1
    print(a)
    if p:
        print(len(p),*list(zip(*p))[1])
    else:
        print(0) __name__ == "__main__" __name__ "__main__" s=[] s [] p=[] p [] i=0 i 0 a=0 a 0 for c in input():
        if "\\"==c:#"\"だと認識できない仕様
            s+=[i]#index番号の取得とスタックへの挿入
        elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
        i+=1
     c input() input if "\\"==c:#"\"だと認識できない仕様
            s+=[i]#index番号の取得とスタックへの挿入
        elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
         "\\"==c "\\" c s+=[i] s [i] i elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
         "/" ==c and s "/" ==c "/" c s j=s.pop() j s.pop() s.pop s pop t=i-j t i-j i j a+=t a t while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
             p and p[-1][0]>j p p[-1][0]>j p[-1][0] [-1] p -1 0 j t+=p[-1][1] t p[-1][1] [-1] p -1 1 p.pop() p.pop p pop p+=[(j,t)] p [(j,t)] (j,t) j t i+=1 i 1 print(a) print a if p:
        print(len(p),*list(zip(*p))[1])
    else:
        print(0) p print(len(p),*list(zip(*p))[1]) print len(p) len p *list(zip(*p))[1] list(zip(*p))[1] (zip(*p)) list zip(*p) zip *p p 1 print(0) print 0 a=0 0 a mod = 1000000007 1000000007 mod j=s.pop() s.pop() j p=[] [] p t=i-j i-j t a+=t t a def lcm(a, b):
    return a * b // gcd(a, b) def lcm(a, b):
    return a * b // gcd(a, b) lcm i=0 0 i s+=[i] [i] s s=[] [] s t+=p[-1][1] p[-1][1] t p+=[(j,t)] [(j,t)] p i+=1 1 i
"""
# 標準入力取得
## 文字列
 = sys.stdin.readline().rstrip()
 = list(sys.stdin.readline().rstrip())

## 数値
 = int(sys.stdin.readline())
 = map(int, sys.stdin.readline().split())
 = list(map(int, sys.stdin.readline().split()))
 = [list(map(int,list(sys.stdin.readline().split()))) for i in range(h)]  # 二次元配列入力　二次元マップみたいな入力のとき

# 0埋め, 小数点出力桁指定時のときの出力
a = 100
b = 0.987654321
print("{0:06d}-{1:6f}".format(a,b))
000100-0.987654

# 文字列をリストに格納
char_list = list("abcd") # ["a","b","c","d"]
"""

import math
import sys
import itertools
import queue
from fractions import gcd

def lcm(a, b):
    return a * b // gcd(a, b)

mod = 1000000007

if __name__ == "__main__":
    s=[]#"\\"のindexが入るスタック
    p=[]#popしたindexと面積のタプルが入るスタック
    i=0#index番号
    a=0#
    for c in input():
        if "\\"==c:#"\"だと認識できない仕様
            s+=[i]#index番号の取得とスタックへの挿入
        elif "/" ==c and s:#index番号が空の時はやらない
            j=s.pop()#末尾のindex番号を取得して削除
            t=i-j
            a+=t
            while p and p[-1][0]>j:
                t+=p[-1][1];
                p.pop()
            p+=[(j,t)]
        i+=1
    print(a)
    if p:
        print(len(p),*list(zip(*p))[1])
    else:
        print(0)
