프로그래밍 대회에서 문제를 푼 팀은 풍선을 받는다. 풍선은 사람이 직접 달아 주어야 하므로 자원봉사자가 필요하다.
풍선은 방 $A$와 방 $B$에 나누어 보관되어 있다. 대회에 참가한 팀은 모두 $N$개이며, 각 팀의 자리는 서로 다르다. 어떤 팀은 방 $A$에, 어떤 팀은 방 $B$에 더 가깝다.
각 팀에게 달아 주어야 하는 풍선의 개수와, 방 $A$ 및 방 $B$로부터의 거리가 주어진다. 이때 모든 풍선을 달아 주는 데 필요한 이동 거리의 최솟값을 구하라. 봉사자는 매우 많고, 한 팀에는 같은 색 풍선 여러 개를 달아 준다고 가정한다. 풍선 하나를 달기 위해 이동해야 하는 거리는 그 풍선을 가져온 방으로부터 팀까지의 거리와 같다. 봉사자는 한 번에 풍선 한 개만 들고 이동할 수 있다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 팀의 수 $N$ ($1 \le N \le 1000$)과, 방 $A$ 및 방 $B$에 보관된 풍선의 수 $A$, $B$ ($0 \le A, B \le 10000$)가 주어진다.
다음 $N$개의 줄에는 각 팀에 달아 주어야 하는 풍선의 수 $K$와, 방 $A$로부터의 거리 $D_A$, 방 $B$로부터의 거리 $D_B$ ($0 \le D_A, D_B \le 1000$)가 주어진다. 풍선이 부족한 경우는 없다. 즉, 각 테스트 케이스에서 $\sum K_i \le A + B$이다.
입력의 마지막 줄에는 $0$이 세 개 주어지며, 이 줄은 처리하지 않는다.
각 테스트 케이스마다 모든 팀에게 풍선을 달아 주기 위해 필요한 이동 거리의 최솟값을 한 줄에 하나씩 출력한다. 풍선을 달아 준 뒤 방 $A$나 $B$로 돌아오는 거리는 포함하지 않는다. 즉, 방에서 팀으로 이동하는 거리만 계산한다.