크레용 정렬
시간 제한8초메모리 제한1024 MB
문자열의 문자를 소문자, 대문자, 숫자 순으로 정렬해 출력합니다. 각 그룹 안에서는 오름차순으로 정렬합니다.
문제
요코하마 군은 케이스에 크레용을 넣어 가지고 있다. 크레용의 종류는 한 문자로 표현되며, 영어 소문자, 영어 대문자, 숫자 중 하나이다. 케이스에는 같은 종류의 크레용이 여러 개 들어 있을 수도 있다.
어느 날 케이스에 든 크레용을 가족에게 빌려주었더니, 종류가 뒤섞인 상태로 돌아왔다. 크레용을 깔끔하게 정렬하는 것을 좋아하는 요코하마 군은 다음 순서에 따라 크레용을 다시 정렬하기로 했다.
- 영어 소문자는 모든 영어 대문자보다 왼쪽에, 영어 대문자는 모든 숫자보다 왼쪽에 놓는다
- 영어 소문자끼리는 알파벳 순서가 빠른 것을 왼쪽에 놓는다
- 영어 대문자끼리는 알파벳 순서가 빠른 것을 왼쪽에 놓는다
- 숫자끼리는 값이 작은 것을 왼쪽에 놓는다
정렬한 뒤 크레용의 배열을 구하라.
입력
입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.
각 데이터셋은 크레용의 배열을 나타내는 문자열 한 줄로 이루어진다. 의 왼쪽에서 번째 문자는 왼쪽에서 번째에 들어 있는 크레용의 종류를 나타낸다.
의 길이는 1 이상 1,000 이하이며, 는 영어 소문자, 영어 대문자, 숫자로 이루어진 문자열이다.
입력의 끝은 # 한 줄로 표시한다. 데이터셋은 50개 이하이다.
출력
각 데이터셋에 대해, 정렬한 뒤 크레용의 배열을 나타내는 문자열을 한 줄로 출력하라.