class Flood:
    """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """
    def __init__(self, begin, area):
        self.begin = begin
        self.area = area

down_index_stack = []  # \の場所
flood_stack = []  # (水たまりの始まる場所, 面積)


for i, c in enumerate(input()):
    if c == '\\':
        down_index_stack.append(i)
    if c == '/':
        if len(down_index_stack) >= 1:  # 現在の/に対応する\が存在したら

            l = down_index_stack.pop()  # 現在の水たまりの始まる場所
            area = i - l  # 現在の水たまりの現在の高さの部分の面積はi-l

            # 現在の水たまりが最後の水たまりを内包している間は
            # (現在の水たまりの始まる場所が最後の水たまりの始まる場所より前にある間は)
            while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

            flood_stack.append(Flood(l, area))  # 現在の水たまりを最後の水たまりにして終了


area_list = [flood.area for flood in flood_stack]
print(sum(area_list))
print(' '.join(list(map(str, [len(area_list)] + area_list))))
 class Flood:
    """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """
    def __init__(self, begin, area):
        self.begin = begin
        self.area = area Flood """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """ def __init__(self, begin, area):
        self.begin = begin
        self.area = area __init__ self.begin = begin self.begin self begin begin self.area = area self.area self area area self self begin begin area area down_index_stack = [] down_index_stack [] flood_stack = [] flood_stack [] for i, c in enumerate(input()):
    if c == '\\':
        down_index_stack.append(i)
    if c == '/':
        if len(down_index_stack) >= 1:  # 現在の/に対応する\が存在したら

            l = down_index_stack.pop()  # 現在の水たまりの始まる場所
            area = i - l  # 現在の水たまりの現在の高さの部分の面積はi-l

            # 現在の水たまりが最後の水たまりを内包している間は
            # (現在の水たまりの始まる場所が最後の水たまりの始まる場所より前にある間は)
            while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

            flood_stack.append(Flood(l, area))  # 現在の水たまりを最後の水たまりにして終了 i c enumerate(input()) enumerate input() input if c == '\\':
        down_index_stack.append(i)
     c == '\\' c '\\' down_index_stack.append(i) down_index_stack.append down_index_stack append i if c == '/':
        if len(down_index_stack) >= 1:  # 現在の/に対応する\が存在したら

            l = down_index_stack.pop()  # 現在の水たまりの始まる場所
            area = i - l  # 現在の水たまりの現在の高さの部分の面積はi-l

            # 現在の水たまりが最後の水たまりを内包している間は
            # (現在の水たまりの始まる場所が最後の水たまりの始まる場所より前にある間は)
            while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

            flood_stack.append(Flood(l, area))  # 現在の水たまりを最後の水たまりにして終了 c == '/' c '/' if len(down_index_stack) >= 1:  # 現在の/に対応する\が存在したら

            l = down_index_stack.pop()  # 現在の水たまりの始まる場所
            area = i - l  # 現在の水たまりの現在の高さの部分の面積はi-l

            # 現在の水たまりが最後の水たまりを内包している間は
            # (現在の水たまりの始まる場所が最後の水たまりの始まる場所より前にある間は)
            while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

            flood_stack.append(Flood(l, area))  # 現在の水たまりを最後の水たまりにして終了 len(down_index_stack) >= 1 len(down_index_stack) len down_index_stack 1 l = down_index_stack.pop() l down_index_stack.pop() down_index_stack.pop down_index_stack pop area = i - l area i - l i l while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

             len(flood_stack) >= 1 and l < flood_stack[-1].begin len(flood_stack) >= 1 len(flood_stack) len flood_stack 1 l < flood_stack[-1].begin l flood_stack[-1].begin [-1] flood_stack -1 begin last_flood = flood_stack.pop() last_flood flood_stack.pop() flood_stack.pop flood_stack pop area += last_flood.area area last_flood.area last_flood area flood_stack.append(Flood(l, area)) flood_stack.append flood_stack append Flood(l, area) Flood l area flood.area for flood in flood_stack for flood in flood_stack flood flood_stack for flood in flood_stack flood.area flood area area_list = [flood.area for flood in flood_stack] area_list [flood.area for flood in flood_stack] print(sum(area_list)) print sum(area_list) sum area_list print(' '.join(list(map(str, [len(area_list)] + area_list)))) print ' '.join(list(map(str, [len(area_list)] + area_list))) ' '.join ' ' join list(map(str, [len(area_list)] + area_list)) list map(str, [len(area_list)] + area_list) map str [len(area_list)] + area_list [len(area_list)] len(area_list) len area_list area_list class Flood:
    """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """
    def __init__(self, begin, area):
        self.begin = begin
        self.area = area class Flood:
    """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """
    def __init__(self, begin, area):
        self.begin = begin
        self.area = area Flood flood_stack = [] [] flood_stack area = i - l i - l area l = down_index_stack.pop() down_index_stack.pop() l down_index_stack = [] [] down_index_stack area_list = [flood.area for flood in flood_stack] [flood.area for flood in flood_stack] area_list last_flood = flood_stack.pop() flood_stack.pop() last_flood area += last_flood.area last_flood.area area
class Flood:
    """
    begin : int
        水たまりの始まる場所
    area : int
        水たまりの面積
    """
    def __init__(self, begin, area):
        self.begin = begin
        self.area = area

down_index_stack = []  # \の場所
flood_stack = []  # (水たまりの始まる場所, 面積)


for i, c in enumerate(input()):
    if c == '\\':
        down_index_stack.append(i)
    if c == '/':
        if len(down_index_stack) >= 1:  # 現在の/に対応する\が存在したら

            l = down_index_stack.pop()  # 現在の水たまりの始まる場所
            area = i - l  # 現在の水たまりの現在の高さの部分の面積はi-l

            # 現在の水たまりが最後の水たまりを内包している間は
            # (現在の水たまりの始まる場所が最後の水たまりの始まる場所より前にある間は)
            while len(flood_stack) >= 1 and l < flood_stack[-1].begin:
                # 最後の水たまりを現在の水たまりに取り込む
                last_flood = flood_stack.pop()
                area += last_flood.area

            flood_stack.append(Flood(l, area))  # 現在の水たまりを最後の水たまりにして終了


area_list = [flood.area for flood in flood_stack]
print(sum(area_list))
print(' '.join(list(map(str, [len(area_list)] + area_list))))

