수수께끼 수
면접 대비시간 제한2초메모리 제한1024 MB
10^45 미만의 십진수 N을 세 자리 이하의 수 K개로 이어 붙여 만들 때, 각 수를 한 번씩만 쓰면서 사용하는 조각의 개수가 가장 적은 분할을 찾습니다.
문제
John은 Research Institute for the Meaning of Life의 주니어 연구원이다. 최근 그는 십진수 에 인간의 삶과 관련된 몇 가지 문제를 밝혀 줄 지식이 담겨 있다는 사실을 발견했다. 하지만 John은 이기적인 사람이라 이 발견을 나누고 싶어 하지 않는다. 그래서 그는 이 수를 외우고 이와 관련된 모든 기록을 없애기로 했다.
안타깝게도 John은 다소 산만하고 잘 잊어버려서 다음 방법으로 을 외우기로 했다. 그에게는 삶과 관련된 수 개의 집합이 있으며, 이 수들은 생일보다도 더 잘 기억한다. 이 수들은 모두 세 자리 이하이다.
John은 을 이 집합의 수들을 이어 붙여 나타내려 한다. 예를 들어 1과 2를 이어 붙이면 순서에 따라 12 또는 21이 된다. 같은 수는 두 번 쓸 수 없지만, 집합의 모든 수를 반드시 쓸 필요는 없다. John은 가능한 한 적은 개수의 수로 나타내기를 원한다. 이런 표현을 찾는 프로그램을 작성하라.
입력
첫 줄에 정수 ()이 주어진다. 둘째 줄에는 집합의 크기 ()가 주어진다. 셋째 줄에는 기억하는 수 개가 주어진다 (). 집합의 수는 모두 서로 다르며, 불필요한 선행 0이 없다.
출력
첫 줄에 분할의 크기 을 출력한다. 이어서 개의 줄에 을 얻으려면 이어 붙여야 하는 순서대로 분할을 이루는 수를 한 줄에 하나씩 출력한다.
조건을 만족하는 분할이 여러 개이면 아무거나 출력해도 된다. 조건을 만족하는 분할이 적어도 하나 존재함이 보장된다.