s = [*gets.chars] # 文字列 s
s1, s2 = [], [] # \の位置の配列 s1, 一番左の\の位置、各水たまりの個数と面積 s2
a = 0  # 水たまりの総面積 a

#文字列の数だけ繰り返す, 一文字(c), 繰り返し番号=文字列番号(i),
s.each.with_index do |c, i|

 
  if c == "\\"
    s1 << i # \が何文字目かを配列に入れる

  elsif c == '/' && !s1.empty? # \の位置の配列 s1 が空でなければ

    last_s1 = s1.pop # \の位置の配列の最後を一つ取り出す
    row_area = i - last_s1 # 現在の文字位置(i) - \の位置の配列の最後の要素 (行の面積)
    a += row_area # 総面積に追加

    # 一番左の\の位置と面積 s2 の要素が存在し、かつ、取り出した\の位置が、一番左の\の位置より小さい場合に繰り返す
    while s2.size != 0 && s2[-1][0] > last_s1
      row_area += s2[-1][1] 
      s2.pop
    end

    s2 << [last_s1, row_area]
  end
end

puts a
puts "#{s2.size} #{s2.map{|a,b|b}.join(" ")}"


