S = eval(input())

N = len(S)

# Rなら右隣, Lなら左隣のindexを格納

X = [i-1 if S[i] == "L" else i+1 for i in range(N)]



# ループを何度行ってもi番目の元はi+偶数番目にしか移動しない.

# RLの部分は互換の後, 恒等写像なので不変.

# RRRやLLLの部分は 1ループで2の冪乗で精度が上がる.

# ex.) RRRRRRR だと, k回ループで index i の元が i + 2**kに移動する.

# log(2**20)=6.01より10**5程度なら20回ループで十分.

for _ in range(20):

    X = [X[x] for x in X]

# はじめにi番目のマスにいた子どもがX[i]番目のマスに移動した.

A = [0]*N

for x in X:

    A[x] += 1

print((*A))
#別解

def main():

    S = eval(input())

    Ans = [0]*len(S)

    # 左隣までに Rがr個, Lがl個連続して並んでいる.

    r, l = 1, 0

    

    # 左からS+'R'をcheckしていく.

    # RRRRRは全て0.

    # RLが出てきたら 続くLLLLLの部分は全て0で

    # 次にRが出れば初めのRLを決定できる.

    for i, s in enumerate(S[1:]+'R', 1):            

        if s == 'R':

            # Rの左隣がLのとき

            if l :

                Ans[i - l] = r//2 + (l+1)//2

                Ans[i - l - 1] = (r+1)//2 + l//2

                r, l = 1, 0

                

            # Rの左隣がRのとき

            else: 

                r += 1

                

        else:

            l += 1

    print((*Ans))

main()
S = eval(input())
N = len(S)
# Rなら右隣, Lなら左隣のindexを格納
X = [i - 1 if S[i] == "L" else i + 1 for i in range(N)]
# ループを何度行ってもi番目の元はi+偶数番目にしか移動しない.
# RLの部分は互換の後, 恒等写像なので不変.
# RRRやLLLの部分は 1ループで2の冪乗で精度が上がる.
# ex.) RRRRRRR だと, k回ループで index i の元が i + 2**kに移動する.
# log(2**20)=6.01より10**5程度なら20回ループで十分.
for _ in range(20):
    X = [X[x] for x in X]
# はじめにi番目のマスにいた子どもがX[i]番目のマスに移動した.
A = [0] * N
for x in X:
    A[x] += 1
print((*A))

# 別解
def main():
    S = eval(input())
    Ans = [0] * len(S)
    # 左隣までに Rがr個, Lがl個連続して並んでいる.
    r, l = 1, 0
    # 左からS+'R'をcheckしていく.
    # RRRRRは全て0.
    # RLが出てきたら 続くLLLLLの部分は全て0で
    # 次にRが出れば初めのRLを決定できる.
    for i, s in enumerate(S[1:] + "R", 1):
        if s == "R":
            # Rの左隣がLのとき
            if l:
                Ans[i - l] = r // 2 + (l + 1) // 2
                Ans[i - l - 1] = (r + 1) // 2 + l // 2
                r, l = 1, 0
            # Rの左隣がRのとき
            else:
                r += 1
        else:
            l += 1
    print((*Ans))


main()

-S = eval(input()) -N = len(S) -# Rなら右隣, Lなら左隣のindexを格納 -X = [i - 1 if S[i] == "L" else i + 1 for i in range(N)] -# ループを何度行ってもi番目の元はi+偶数番目にしか移動しない. -# RLの部分は互換の後, 恒等写像なので不変. -# RRRやLLLの部分は 1ループで2の冪乗で精度が上がる. -# ex.) RRRRRRR だと, k回ループで index i の元が i + 2**kに移動する. -# log(2**20)=6.01より10**5程度なら20回ループで十分. -for _ in range(20): -    X = [X[x] for x in X] -# はじめにi番目のマスにいた子どもがX[i]番目のマスに移動した. -A = [0] * N -for x in X: -    A[x] += 1 -print((*A)) +# 別解 +def main(): +    S = eval(input()) +    Ans = [0] * len(S) +    # 左隣までに Rがr個, Lがl個連続して並んでいる. +    r, l = 1, 0 +    # 左からS+'R'をcheckしていく. +    # RRRRRは全て0. +    # RLが出てきたら 続くLLLLLの部分は全て0で +    # 次にRが出れば初めのRLを決定できる. +    for i, s in enumerate(S[1:] + "R", 1): +        if s == "R": +            # Rの左隣がLのとき +            if l: +                Ans[i - l] = r // 2 + (l + 1) // 2 +                Ans[i - l - 1] = (r + 1) // 2 + l // 2 +                r, l = 1, 0 +            # Rの左隣がRのとき +            else: +                r += 1 +        else: +            l += 1 +    print((*Ans)) + + +main()