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 java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;



public class P264A
{
	
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException
	{
		// TODO Auto-generated method stub
		InputStreamReader read = new InputStreamReader(System.in);
		LinkedList list = new LinkedList(1);
		char chr = (char)read.read();
		int j = 2;
		
		while (true)
		{
			char chr2 = (char)read.read();
			if (chr2 == '\r') break;
			if (chr == 'r') {
				list.insertAfter(j++);
			}
			else{
				list.insertBefore(j++);
			}
			chr = chr2;
		}
		PrintWriter out = new PrintWriter(System.out);
		list.current = list.first;
		for (int i=0; i<list.size; i++)
		{
			out.println(list.get());
			list.after();
		}
		
		out.close();

	}
	static class LinkedList
	{
		public Node current;
		public Node first;
		public Node last;
		public int size = 0;
		public LinkedList(int first)
		{
			this.first = new Node(first, null, null);
			current = this.first;
			size++;
		}
		public void insertAfter(int element)
		{
			Node node = new Node (element, current, null);
			node.next = current.next;
			if (current.next != null)  {
				
				current.next.previous = node;
			}
			current.next = node;
			current = node;
			size++;
		}
		public void insertBefore(int element)
		{
			Node node = new Node (element, null, current);
			node.previous = current.previous;
			if (current.previous != null)  {
				
				current.previous.next = node;
			}
			current.previous = node;
			if (current == first) first = first.previous;
			current = node;
			size++;
		}
		public int get()
		{
			return current.value;
		}
		public void before()
		{
			current = current.previous;
		}
		public void after()
		{
			current = current.next;
		}
		
		}
	static class Node {
		public int value;
		public Node previous;
		public Node next;
		public Node (int element, Node previous, Node next)
		{
			value = element;
			this.previous = previous;
			this.next = next;
		}
	}

	}

	
