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.

Constraints

* S is a string of length between 2 and 10^5 (inclusive).
* Each character of S is `L` or `R`.
* The first and last characters of S are `R` and `L`, respectively.

Input

Input is given from Standard Input in the following format:


S


Output

Print the number of children standing on each square after the children performed the moves, in order from left to right.

Examples

Input

RRLRL


Output

0 1 2 1 1


Input

RRLLLLRLRRLL


Output

0 3 3 0 0 0 1 1 0 2 2 0


Input

RRRLLRLLRRRLLLLL


Output

0 0 3 2 0 2 1 0 0 0 4 4 0 0 0 0

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();

        StringBuilder result = new StringBuilder();

        while (s.contains("LR")) {
            
            int indexLR = s.indexOf("LR");
            int lastIndexOfFirstRLBlock;
            if(indexLR ==1){
                lastIndexOfFirstRLBlock = 1;
            }else {
                lastIndexOfFirstRLBlock = indexLR;
            }
            
            String firstRLBlock = s.substring(0, lastIndexOfFirstRLBlock + 1);
            s = s.substring(lastIndexOfFirstRLBlock + 1);
            result.append(makeSubResult(firstRLBlock));
        }
        result.append(makeSubResult(s));

        System.out.println(result.toString());
    }

    private static String makeSubResult(String rlBlock) {
        int lastIndexOfR = rlBlock.lastIndexOf("R");
        int countR = lastIndexOfR + 1;
        int countL = rlBlock.length() - countR;

        String result = rlBlock.replace("RL", "AB");
        result = result.replace("R", "0 ");
        result = result.replace("L", "0 ");

        int halfCountR = countR / 2;
        int halfCountL = countL / 2;

        int A = halfCountR + countR % 2 + halfCountL;
        int B = halfCountR +              halfCountL + countL % 2;

        result = result.replace("A", A + " ");
        return result.replace("B", B + " ");
    }

}