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.
The input consists of only one line. The only line contains the string *s* (1 ≤ |*s*| ≤ 10<sup class="upper-index">6</sup>). Each character in *s* will be either "l" or "r".
#include <bits/stdc++.h>

using namespace std;
#define endl "\n"
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define ff first.first
#define fs first.second
typedef long long ll;
typedef unsigned long long ull;

//const ll mod = 1e16+371;
//const ll mod = 1e12+193;
//const int mod = 1e9+7;

const double PI = acos(-1);
const ll mod = 1e9+7;
const int INF = 1e9;
const int MAX=1e5+10, N=1e7+10;


int main(){
	ios_base::sync_with_stdio(0);
	//	cin.tie(0);

	string s;
	while(cin>>s){
		vector<int>ans(s.length());
		int u=0,d=s.length()-1;
		int ind=1;
		for(int i=0;i<s.length();i++){
			if(s[i]=='l')
				ans[d--]=ind++;
			else
				ans[u++]=ind++;
		}
		for(int i=0;i<ans.size();i++)
			cout<<ans[i]<<endl;
	}

	return 0;
}
