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<iostream>
#include<vector>
#include<utility>
#include<map>
#include<climits>
#include<algorithm>

using namespace std;

#define mod 1000000007
#define FastRead ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define rep(i,k,n) for(i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)


typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<vector<int>> vii;
typedef map<int,int> mii;


void solve(){
	string s;
	cin>>s;
	vector<pair<double, int>> v;
	double start = 0, end = 1;

	for(int i=0; i<s.size();i++){
		double mid = start + (end-start)/2;
		v.push_back({mid, i+1});
		if(s[i] == 'l')
			end = mid;
		else
			start = mid;
	} 
	sort(v.begin(), v.end());
	for(auto x:v)
		cout<<x.second<<"\n";
}

int main(){
	FastRead;
	solve();
	return 0;
}

