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.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    static Scanner scanner;

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

        String S=gs();
        List<Integer> rs=new ArrayList<Integer>();
        List<Integer> ls=new ArrayList<Integer>();
        int[] ans=new int[S.length()];

        rs.add(0);
        for (int i=1;i<S.length();i++) {
            char bc=S.charAt(i-1);
            char nc=S.charAt(i);
            if(bc=='L' && nc=='R') {
                rs.add(i);
            } else if(bc=='R' && nc=='L') {
                ls.add(i);
            }
        }

        for (int i=0;i<rs.size();i++) {
            int s=rs.get(i);
            int e=S.length();
            if(i+1<rs.size()) e=rs.get(i+1);
            int m=ls.get(i);
            int num=e-s;
            if(num%2==0) {
            	ans[m-1]=num/2;
            	ans[m]=num/2;
            } else {
            	if((m-s)%2==1) {
            		ans[m-1]=Math.floorDiv(num, 2)+1;
            		ans[m]=Math.floorDiv(num, 2);
            	} else {
            		ans[m-1]=Math.floorDiv(num, 2);
            		ans[m]=Math.floorDiv(num, 2)+1;
            	}
            }
        }
        StringBuilder sb=new StringBuilder();
        for (int i=0;i<S.length();i++) {
            if(i!=0)sb.append(" ");
            sb.append(ans[i]);
        }

        System.out.println(sb);
    }

    // 文字列として入力を取得
    public static String gs() {
         return scanner.next();
    }

    // intとして入力を取得
    public static int gi() {
         return Integer.parseInt(scanner.next());
    }

    // longとして入力を取得
    public static long gl() {
         return Long.parseLong(scanner.next());
    }

    // doubleとして入力を取得
    public static double gd() {
         return Double.parseDouble(scanner.next());
    }
}