output_description: Print the number of children standing on each square after the children
  performed the moves, in order from left to right.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      S
attempt: # -*- coding: utf-8 -*-
  
  import sys
  
  
  def input():
      return sys.stdin.readline().strip()
  
  
  def list2d(a, b, c):
      return [[c] * b for i in range(a)]
  
  
  def list3d(a, b, c, d):
      return [[[d] * c for j in range(b)] for i in range(a)]
  
  
  def ceil(x, y=1):
      return int(-(-x // y))
  
  
  def INT():
      return int(input())
  
  
  def MAP():
      return map(int, input().split())
  
  
  def LIST():
      return list(map(int, input().split()))
  
  
  def Yes():
      print("Yes")
  
  
  def No():
      print("No")
  
  
  def YES():
      print("YES")
  
  
  def NO():
      print("NO")
  
  
  sys.setrecursionlimit(10**9)
  INF = float("inf")
  MOD = 10**9 + 7
  
  S = input()
  N = len(S)
  
  # nxt[k][i] := 最初iにいた子が2^k回の移動後にいるマス
  nxt = list2d(17, N, -1)
  # 初期化
  for i in range(N):
      if S[i] == "L":
          nxt[0][i] = i - 1
      elif S[i] == "R":
          nxt[0][i] = i + 1
  # ダブリングのテーブル構築
  for k in range(1, 17):
      for i in range(N):
          nxt[k][i] = nxt[k - 1][nxt[k - 1][i]]
  
  ans = [0] * N
  # 10万回移動後を求める(今回はこれで10**100と一致する)
  K = 10**5
  # 元々iにいた子
  for i in range(N):
      cur = i
      for k in range(17):
          # ビットが立っている所に合わせて、移動させていく
          if K >> k & 1:
              cur = nxt[k][cur]
      ans[cur] += 1
  print(*ans)
  
problem_description: Statement
  
  Given is a string S consisting of `L` and `R`.
  
  Let N be the length of S. There are N squares arranged from left to right, and
  the i-th character of S from the left is written on the i-th square from the
  left.
  
  The character written on the leftmost square is always `R`, and the character
  written on the rightmost square is always `L`.
  
  Initially, one child is standing on each square.
  
  Each child will perform the move below 10^{100} times:
  
    * Move one square in the direction specified by the character written in the square on which the child is standing. `L` denotes left, and `R` denotes right.
  
  Find the number of children standing on each square after the children
  performed the moves.
samples: [{"input": "RRLRL", "output": "0 1 2 1 1\n    \n\n  * After each child performed one move, the number of children standing on each square is 0, 2, 1, 1, 1 from left to right.\n  * After each child performed two moves, the number of children standing on each square is 0, 1, 2, 1, 1 from left to right.\n  * After each child performed 10^{100} moves, the number of children standing on each square is 0, 1, 2, 1, 1 from left to right.\n\n* * *"}, {"input": "RRLLLLRLRRLL", "output": "0 3 3 0 0 0 1 1 0 2 2 0\n    \n\n* * *"}, {"input": "RRRLLRLLRRRLLLLL", "output": "0 0 3 2 0 2 1 0 0 0 4 4 0 0 0 0"}]