하코다테시에 상품 거래소가 문을 열었다. 거래에 참여하려는 딜러는 자기 이름, 주문 종류(매수 또는 매도), 상품 이름, 제시 가격을 인터넷으로 보낸다.
거래는 매도 주문의 가격이 매수 주문의 가격보다 작거나 같을 때만 성립한다. 체결 가격은 두 주문 가격의 평균이고, 소수점 아래는 버린다. 부정 거래를 막기 위해 같은 딜러가 낸 매도 주문과 매수 주문끼리는 절대 체결하지 않는다.
거래소는 아직 체결되지 않은 주문 목록을 관리하며, 새 주문이 들어오면 다음과 같이 처리한다.
체결이 이루어지면 두 주문 모두 목록에서 빠진다. 조건을 만족하는 주문이 하나도 없으면 새 주문을 목록 끝에 넣고 기다린다.
거래소는 매일 7시에 열고 22시에 닫는다. 닫을 때 목록에 남아 있는 주문은 모두 취소되고, 그날 받은 주문은 전부 기록으로 남는다.
거래소의 활동을 보고하는 프로그램을 작성하시오. 보고서는 두 부분으로 나뉜다. 상품마다 체결된 거래의 최저 가격, 평균 가격, 최고 가격을 싣고, 딜러마다 지불한 금액과 받은 금액을 싣는다.
입력은 여러 개의 데이터 집합으로 이루어지고, 데이터 집합 하나가 하루치 기록이다.
각 데이터 집합의 첫 줄에는 기록에 들어 있는 주문의 개수 n (n<1000)이 주어진다. 이어지는 n개의 줄에는 주문이 한 개씩 주어지며, 딜러 이름, 주문 종류, 상품 이름, 제시 가격이 공백 하나로 구분되어 있다.
딜러 이름은 대문자로만 이루어지고 길이가 10자 미만이다. 주문 종류는 문자열 BUY 또는 SELL이다. 상품 이름은 대문자 한 글자다. 제시 가격은 1000보다 작은 양의 정수다.
기록 안의 주문은 접수된 순서대로 나열되어 있으므로 첫 줄이 가장 오래된 주문이다.
입력의 끝은 0 하나만 있는 줄로 표시한다.
각 데이터 집합의 출력은 하이픈 두 개(--)만 있는 줄을 사이에 두고 두 부분으로 나뉜다.
첫 부분은 상품 정보다. 상품마다 이름과 체결된 거래의 최저 가격, 평균 가격, 최고 가격을 공백 하나로 구분해 한 줄에 출력한다. 평균 가격은 소수점 아래를 버린다. 거래가 한 번이라도 성립한 상품만 사전순으로 출력한다.
둘째 부분은 딜러 정보다. 딜러마다 이름과 지불한 금액, 받은 금액을 공백 하나로 구분해 한 줄에 출력한다. 한 번도 체결하지 못한 딜러까지 포함해 주문을 낸 딜러를 모두 이름의 사전순으로 출력한다.
각 데이터 집합의 출력 뒤에는 하이픈 열 개(----------)만 있는 줄을 출력한다.