만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

컨베이어 벨트

시간 제한1초메모리 제한512 MB

요약
고정 비율 a:b 분배기를 200개 이하로 연결해 하나의 입력을 두 출력에서 c:d 비율로 나누는 벨트 네트워크를 구성합니다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 재귀
정답자
아직 제출이 없습니다

문제

당신은 Boxing And Processing Company의 직원이며, 회사의 거대한 창고 중 한 곳에서 상자를 분배하는 일을 맡았다. 이 회사에서 상자는 컨베이어 벨트로 이동한다. 두 벨트는 한쪽이 다른 쪽 위로 내용물을 떨어뜨려 하나로 합칠 수 있다. 반대로 스플리터를 쓰면 벨트를 둘로 나눌 수 있다. 스플리터는 입력의 정해진 몫을 첫 번째 출력으로, 나머지를 두 번째 출력으로 보낸다.

가변 스플리터는 입력을 원하는 어떤 비율로든 나눌 수 있다. 그러나 비용을 줄이려고 사장은 입력을 고정된 비율 a:ba : b로만 나누는 저가형 스플리터를 주문했다. 필요한 것은 c:dc : d 스플리터지만, 사장과 다투는 대신 직접 만들기로 한다.

비용을 아껴야 한다. 시스템 안에 끝내 빠져나가지 못하는 상자가 있어서는 안 된다. 상자를 한 번도 받지 못하는 스플리터를 써서도 안 된다. 또한 a:ba : b 스플리터를 너무 많이 쓸 수 없다.

비율 a:ba : b와 c:dc : d가 주어졌을 때, 전역 입력 벨트 하나와 전역 출력 벨트 두 개를 가지며 입력을 c:dc : d 비율로 나누는 벨트 네트워크를 만들어라. 사용하는 a:ba : b 스플리터는 최대 200개이다.

비율이 x:yx : y인 스플리터는 들어온 상자의 정확히 xx+y\frac{x}{x+y}를 첫 번째 출력으로, 정확히 yx+y\frac{y}{x+y}를 두 번째 출력으로 보낸다.

입력

첫 번째 줄에 저가형 스플리터의 비율을 나타내는 정수 aa와 bb가 주어진다. 1≤a,b≤1091 \le a, b \le 10^9이고 a+b≤109a + b \le 10^9이다.

두 번째 줄에 원하는 비율을 나타내는 정수 cc와 dd가 주어진다. 1≤c,d≤1091 \le c, d \le 10^9이고 c+d≤109c + d \le 10^9이다.

출력

첫 번째 줄에 사용한 a:ba : b 스플리터의 개수 nn을 출력한다. 1≤n≤2001 \le n \le 200이다.

이어서 nn개의 줄을 출력한다. ii번째 줄에는 정수 lil_i와 rir_i를 쓰며, −2≤li,ri<n-2 \le l_i, r_i < n이다. lil_i는 ii번째 스플리터의 왼쪽 출력에 연결된 스플리터 번호로, 여기에 입력의 aa+b\frac{a}{a+b}가 간다. 마찬가지로 rir_i는 입력의 ba+b\frac{b}{a+b}를 받는 스플리터 번호이다. 스플리터는 0부터 번호를 매긴다. 전역 입력은 스플리터 0에 연결된다. −1-1과 −2-2는 각각 첫 번째와 두 번째 전역 출력을 뜻하며, 이 출력에는 전역 입력의 cc+d\frac{c}{c+d}와 dc+d\frac{d}{c+d}가 도달해야 한다.

어떤 상자도 도달하지 않는 자리에 스플리터를 둘 수 없고, 지나간 상자가 출력에 닿지 못하는 자리에 둘 수도 없다. 해가 여러 개라면 그중 아무거나 출력해도 된다.

예제3

  1. 예제 1

    입력
    2 3
    3 2
    
    예상 출력
    1
    -2 -1
    
  2. 예제 2

    입력
    1 2
    3 4
    
    예상 출력
    3
    -1 1
    2 1
    0 -2
    
  3. 예제 3

    입력
    1 2
    1 2
    
    예상 출력
    3
    -2 1
    2 0
    1 -1