Squirrel Liss lived in a forest peacefully, but unexpected trouble happens. Stones fall from a mountain. Initially Squirrel Liss occupies an interval [0, 1]. Next, n stones will fall and Liss will escape from the stones. The stones are numbered from 1 to n in order.

The stones always fall to the center of Liss's interval. When Liss occupies the interval [k - d, k + d] and a stone falls to k, she will escape to the left or to the right. If she escapes to the left, her new interval will be [k - d, k]. If she escapes to the right, her new interval will be [k, k + d].

You are given a string s of length n. If the i-th character of s is "l" or "r", when the i-th stone falls Liss will escape to the left or to the right, respectively. Find the sequence of stones' numbers from left to right after all the n stones falls.

Input

The input consists of only one line. The only line contains the string s (1 ≤ |s| ≤ 106). Each character in s will be either "l" or "r".

Output

Output n lines — on the i-th line you should print the i-th stone's number from the left.

Examples

Input

llrlr


Output

3
5
4
2
1


Input

rrlll


Output

1
2
5
4
3


Input

lrlrr


Output

2
4
5
3
1

Note

In the first example, the positions of stones 1, 2, 3, 4, 5 will be <image>, respectively. So you should print the sequence: 3, 5, 4, 2, 1.
import static java.lang.Math.*; 

import java.io.*; 
import java.util.*; 
import java.math.*;

public class Main{
	BufferedReader in; 
	PrintWriter out;
	StringTokenizer st; 

	String next() {
		while (st==null || !st.hasMoreTokens()) {
			try {
				st = new StringTokenizer(in.readLine());
			} catch (Exception e) {}
		}
		return st.nextToken(); 
	}

	int nextInt() {
		return Integer.parseInt(next()); 
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}
     
	class ListNode{
		int value;
		ListNode prev, next;
        public ListNode(int value){
        	this.value = value;
        }

        ListNode append(ListNode node){
        	if(this.next == null) this.next = node;
        	else {
        		ListNode temp = this.next;
        		this.next = node;
        		node.next = temp;
        		temp.prev = node;
        	}
        	node.prev = this;
        	return node;
        }

        ListNode prepend(ListNode node){
        	if(this.prev == null) this.prev = node;
        	else {
        		ListNode temp = this.prev;
        		this.prev = node;
        		node.prev = temp;
        		temp.next = node;
        	}
        	node.next = this;
        	return node;
        }

	}

	public void run()throws Exception{
		in = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(System.out);
		String s = next();
		ListNode node = null;
		for(int i = 0; i < s.length(); ++i){
			if(node == null){
				node = new ListNode(i + 1);
			}
             else{
             	ListNode ln = new ListNode(i + 1);
             	if(s.charAt(i - 1) == 'l') node = node.prepend(ln);
             	else node = node.append(ln);
             }
		}

		ListNode head = node;
		while(head.prev != null) head = head.prev;
		while(head != null){
			out.println(head.value);
			head = head.next;
		}
		out.close();
	}

	public static void main(String[] args) throws Exception {
		new Main().run(); 
	}
}