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;
import java.util.stream.Collectors;


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        List<Integer> list = new ArrayList<Integer>();
        for(int k = 0; k< s.length();k++) {
          list.add(0);
        }
        boolean inR = true;
        int hotR = -1;
        int hotL = -1;
        int leftRange = 0;
        for(int k = 0; k < s.length();k++) {
          char cha = s.charAt(k);
          if(inR){
            if(cha == 'L') {
              inR = false;
              hotL = k;
              hotR = k-1;
            }
          } else {
            if(cha == 'R') {
              resolve(list,hotR,hotL,leftRange,k-1);
               leftRange=k;
               inR=true;
            }
          }
        }
        resolve(list,hotL,hotR,leftRange,s.length()-1);
        String str = list.stream().map(i->i.toString()).collect(Collectors.joining(" "));
        System.out.println(str);
    }
    
    private static void resolve(List<Integer> list, int hotL,int hotR, int leftRange, int rightRange) {

      int value = (rightRange-leftRange+1)/2;
      if((rightRange-leftRange+1)%2==0) {
        
        list.set(hotL, value);
        list.set(hotR, value);
      } else {
        if((hotR-leftRange) %2 ==0) {
          
          list.set(hotL, value);
          list.set(hotR, value+1);

        } else {
          list.set(hotL, value+1);
          list.set(hotR, value);
        }
        
      }
    }
}