#include<iostream>
using namespace std;

int main() {
    int N,Ri,Ei,partidas,tamanho,contador,posicao1,i,achar,total1,total2;
    string palavra;

    cin>>N;

    partidas=N/2;
    achar=0;
    int demora[N+5],classificacao[N+5],rapidez[N+5],total[N+5];

    contador=0;
    while(contador<N) {
        //Lê a quantidade de jogadores
        cin>>Ri>>Ei;

        demora[contador]=Ri;
        rapidez[contador]=Ei;
        classificacao[contador]=0;

        contador++;
    }

    cin.ignore();
    getline(cin,palavra);
    //cout<<palavra<<" esse é o tamnho"<<endl;

    tamanho=palavra.length();
    cout << "Tamanho >>>> " << tamanho << " | Palavra  >>> " << palavra << endl;
    contador=1;//partida de numero 1

    total[0]=(rapidez[0]*tamanho)+demora[0];
    for(i=1; i<N; i++) {
        //vai me cada vetor e classifica os jogadores
        total[i]=(rapidez[i]*tamanho)+demora[i];

        if(total[i]>total[i-1]) {
            //classifica primeira variavel perdedor
            classificacao[i]=contador;
            classificacao[i-1]=contador+1;//vai pra proxima rodada
            i++;
        } else {
            //classifica a segunda variavel perdedor
            classificacao[i-1]=contador;
            classificacao[i]=contador+1;//vai pra proxima rodada
            i++;
        }
    }

    contador=2;//Partidas dois se houver entra no while
    while(partidas!=1) {
        //

        //para as partidas
        i=0;
        while(i<N) {
            //percorre s o vetor


            while(achar!=1) {
                //achar o primeiro
                if(classificacao[i]==contador) {
                    //o primeiro participante
                    posicao1=i;
                    total1=(tamanho*contador*rapidez[i])+demora[i];
                    achar=1;
                }
                i++;
            }
            //continuar procurando aprtir do primeiro
            while(achar!=2) {
                //achar o primeiro
                if(classificacao[i]==contador) {
                    //o primeiro participante

                    total2=(tamanho*contador*rapidez[i])+demora[i];
                    achar=2;

                    if(total1>total2) {
                        //
                        classificacao[i]=contador+1;//vai pra proxima rodada
                    } else {
                        //classifica a segunda variavel perdedor
                        classificacao[posicao1]=contador+1;//vai pra proxima rodada
                    }
                }
                i++;
            }
        }
        achar=0;
        contador++;//qual partida esta
        partidas/=2;//dimuniu as partidas
        tamanho*=2;//cada rodada o tamanho da string muda
    }

    for(int i=0; i<N; i++) {

        if(i==N-1) {
            cout<<classificacao[i]<<endl;
        } else {
            cout<<classificacao[i]<<" ";
        }
    }
}
