구두 수선공

각 작업이 기다리는 동안 지불하는 벌금 합계를 최소로 만들도록 N개 작업의 순서를 정하고, 최소가 여러 개면 사전순으로 가장 앞선 순서를 출력한다.

보통5그리디정렬면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

구두 수선공에게 손님이 주문한 작업 NN개가 밀려 있다. 수선공은 하루에 한 작업만 진행할 수 있고, ii번 작업을 끝내는 데 TiT_i일이 걸린다. TiT_i는 정수이고 1Ti10001 \le T_i \le 1000이다.

ii번 작업을 시작하기 전에 하루가 지연될 때마다 수선공은 보상금 SiS_i센트를 지불해야 한다. SiS_i는 정수이고 1Si100001 \le S_i \le 10000이다. 보상금 총액이 가장 적어지는 작업 순서를 구하라.

순서를 정하면 ii번 작업은 앞에 놓인 작업들의 소요 일수를 합한 만큼 지연되어 시작한다. 따라서 보상금 총액은 각 작업의 지연 일수에 SiS_i를 곱한 값을 모두 더한 값이다.

하루에 두 개 이상의 작업을 동시에 진행할 수 없다. ii번 작업을 시작하면 그 작업을 마칠 때까지 다른 작업을 진행할 수 없다.

입력

첫째 줄에 정수 NN이 주어진다. 1N10001 \le N \le 1000이다.

다음 NN개 줄 중 ii번째 줄에 TiT_iSiS_i가 공백으로 구분되어 주어진다.

출력

보상금 총액이 최소가 되는 작업 순서를 한 줄에 출력한다. 작업은 입력에 주어진 번호 11부터 NN까지로 나타내고, 번호는 공백 한 칸으로 구분한다. 총액이 최소인 순서가 여러 개라면 사전순으로 가장 앞서는 순서를 출력한다.