좋은 카트 만들기

NYPC 2020 · 예선

루시드는 NN 종류의 카트 엔진과 MM 종류의 카트 핸들을 가지고 있다. 편의상 카트 엔진의 각 종류는 11부터 NN까지 번호가 매겨져 있으며, 카트 핸들의 각 종류는 11부터 MM까지 번호가 매겨져 있다. ii 번 종류의 카트 엔진의 성능은 AiA_i, 무게는 BiB_i이고, jj 번 종류의 카트 핸들의 성능은 CjC_j, 무게는 DjD_j이다.

한 종류의 카트 엔진과 한 종류의 카트 핸들을 선택하여 조합하면, 하나의 카트가 완성된다. 이렇게 만들어진 카트의 점수는 카트 엔진과 카트 핸들의 성능 합을 무게 합으로 나눈 것이 된다.

즉, ii 번 종류의 카트 엔진과 jj 번 종류의 카트 핸들을 선택하여 조합해 만들어진 카트의 점수는 다음과 같다:

Ai+CjBi+Dj\frac{A_i + C_j}{B_i + D_j}

루시드를 도와 각 카트 엔진마다 어느 카트 핸들과 조합해야 점수가 가장 높은 카트를 만들 수 있는지 구하는 프로그램을 작성하라.

입력 형식

첫 줄에 카트 엔진의 종류 수를 나타내는 정수 NN과 카트 핸들의 종류 수를 나타내는 정수 MM이 공백으로 구분되어 주어진다. (1N,M300000)(1 \le N, M \le 300\,000)

다음 NN 개의 줄에 걸쳐 카트 엔진의 성능을 나타내는 정수 AiA_i와 카트 엔진의 무게를 나타내는 정수 BiB_i가 공백으로 구분되어 주어진다. (1Ai,Bi,1000000000)(1 \le A_i, B_i, \le 1\,000\,000\,000)

다음 MM 개의 줄에 걸쳐 카트 핸들의 성능을 나타내는 정수 CjC_j와 카트 핸들의 무게를 나타내는 정수 DjD_j가 공백으로 구분되어 주어진다. (1Cj,Dj1000000000)(1 \le C_j, D_j \le 1\,000\,000\,000)

출력 형식

NN 개의 줄에 걸쳐 각 카트 엔진마다 어느 카트 핸들과 조합해야 점수가 가장 높은 카트를 만들 수 있는지 출력한다.

ii 번째 줄에 ii 번 종류의 카트 엔진과 조합했을 때 가장 높은 점수의 카트를 만들 수 있는 카트 핸들의 종류 번호를 출력한다. 만약, 가능한 답이 여러 가지인 경우 카트 핸들의 종류 번호가 가장 작은 것을 출력한다.

예제

입력

4 5 5 2 6 3 7 5 10 8 2 1 4 2 3 3 7 4 8 5

출력

1 1 2 4

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 23

N,M3000N, M \le 3\,000

종류 2: 77

추가적인 제한 조건이 없음.

해설