스티커

쉼표로 구분된 스티커 번호와 범위 목록을 앞의 0을 처리하며 파싱하고 중복을 제거한 뒤, 가장 짧고 쉼표가 적은 표현을 출력합니다.

보통7문자열구현정렬그리디아직 제출이 없습니다시간 제한0.5초메모리 제한256 MB

문제

마리오는 동물 왕국 스티커를 모은다.

마리오는 매일 저녁 앨범을 넘겨 보면서 빠진 스티커의 번호를 쉼표 ,로 구분해 적는다. 빠진 스티커의 번호가 연속될 때는 그 번호를 모두 적는 대신 첫 번호와 마지막 번호만 빼기 기호 -로 이어 적기도 한다.

예를 들어 마리오가 종이에 1,3,4,5,115-120이라고 적었다면 1, 3, 4, 5, 115, 116, 117, 118, 119, 120번 스티커가 빠져 있다는 뜻이다.

마리오는 무척 덜렁대는 데다 앨범에 든 스티커가 매우 많아서 같은 스티커를 여러 번 적거나 몇몇 번호 앞에 실수로 0을 붙이는 일이 잦다.

마리오의 기록이 주어질 때, 빠진 스티커를 나타내는 문자열 가운데 글자 수가 가장 적은 것을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 마리오의 기록인 문자열이 주어진다. 문자열의 길이는 최대 500000이며 숫자, 쉼표, 빼기 기호로만 이루어져 있다.

기록은 올바른 형식, 즉 문제에서 설명한 형식을 따른다.

스티커 번호는 매우 클 수 있다.

출력

빠진 스티커를 나타내는 가장 짧은 문자열을 첫째 줄에 출력한다. 가장 짧은 문자열이 여러 개라면 쉼표 ,가 가장 적은 것을 고른다.

그래도 여러 개라면 다음 규칙을 따르는 문자열을 출력한다.

  1. 쉼표로 구분한 항목을 스티커 번호가 작은 것부터 차례로 나열한다.
  2. 구간은 작은 번호 a를 앞에 써서 a-b 꼴로 나타낸다.