def main():
    s = input()
    stack = []#¥をためるstack
    stack_sum = []#現状できている池のstack
    for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
    sum_ans = 0#全ての池の合計
    ans = []
    for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
    print(sum(ans))
    print(len(ans),*ans)

if __name__ == "__main__":
    main()
#O(n^2)なのでO(n)でやるべき
 def main():
    s = input()
    stack = []#¥をためるstack
    stack_sum = []#現状できている池のstack
    for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
    sum_ans = 0#全ての池の合計
    ans = []
    for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
    print(sum(ans))
    print(len(ans),*ans) main s = input() s input() input stack = [] stack [] stack_sum = [] stack_sum [] for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
     i range(len(s)) range len(s) len s if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
     s[i] == "\\" s[i] s i "\\" stack.append(i) stack.append stack append i elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
     s[i] == "/" s[i] s i "/" if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
     len(stack) != 0 len(stack) len stack 0 sum_t = 0 sum_t 0 last = stack.pop(-1) last stack.pop(-1) stack.pop stack pop -1 sum_t += (i-last-1)+1 sum_t (i-last-1)+1 i-last-1 i-last i last 1 1 if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                 len(stack_sum) != 0 len(stack_sum) len stack_sum 0 for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                 j reversed(range(len(stack_sum))) reversed range(len(stack_sum)) range len(stack_sum) len stack_sum if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                 stack_sum[j][0] > last stack_sum[j][0] [j] stack_sum j 0 last sum_t += stack_sum[j][1] sum_t stack_sum[j][1] [j] stack_sum j 1 stack_sum.pop(j) stack_sum.pop stack_sum pop j stack_sum.append((last, sum_t)) stack_sum.append stack_sum append (last, sum_t) last sum_t sum_ans = 0 sum_ans 0 ans = [] ans [] for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
     i range(len(stack_sum)) range len(stack_sum) len stack_sum sum_ans +=stack_sum[i][1] sum_ans stack_sum[i][1] [i] stack_sum i 1 ans.append(stack_sum[i][1]) ans.append ans append stack_sum[i][1] [i] stack_sum i 1 print(sum(ans)) print sum(ans) sum ans print(len(ans),*ans) print len(ans) len ans *ans ans if __name__ == "__main__":
    main()
#O(n^2)なのでO(n)でやるべき __name__ == "__main__" __name__ "__main__" main() main def main():
    s = input()
    stack = []#¥をためるstack
    stack_sum = []#現状できている池のstack
    for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
    sum_ans = 0#全ての池の合計
    ans = []
    for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
    print(sum(ans))
    print(len(ans),*ans) def main():
    s = input()
    stack = []#¥をためるstack
    stack_sum = []#現状できている池のstack
    for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
    sum_ans = 0#全ての池の合計
    ans = []
    for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
    print(sum(ans))
    print(len(ans),*ans) main
def main():
    s = input()
    stack = []#¥をためるstack
    stack_sum = []#現状できている池のstack
    for i in range(len(s)):
        
        if s[i] == "\\":
            stack.append(i)#池の左側をためる
        elif s[i] == "/":
            if len(stack) != 0:#対応する左側がなかったらskip
                sum_t = 0
                last = stack.pop(-1)#lastからiまでの池を下では考える
                sum_t += (i-last-1)+1#[last,i]の池の計算
                if len(stack_sum) != 0:
                    for j in reversed(range(len(stack_sum))):#後ろからみる
                        if stack_sum[j][0] > last:#[last,i]ではった池でマージできるところをマージ
                            sum_t += stack_sum[j][1]
                            stack_sum.pop(j)
                stack_sum.append((last, sum_t))
    sum_ans = 0#全ての池の合計
    ans = []
    for i in range(len(stack_sum)):
        sum_ans +=stack_sum[i][1]
        ans.append(stack_sum[i][1])#池の容量だけ取り出す

    #print(sum_ans)
    #print(ans)
    print(sum(ans))
    print(len(ans),*ans)

if __name__ == "__main__":
    main()
#O(n^2)なのでO(n)でやるべき

