사용자 이름

시간 제한3초메모리 제한256 MB

문제

한 대학의 전산 시스템은 다음 규칙에 따라 각 사람에게 사용자 이름(user name)을 부여한다.

  1. 사용자 이름의 길이는 최대 MAXLEN자이다. MAXLEN 값은 각 테스트 케이스의 입력으로 주어진다.
  2. 사용자 이름의 첫 글자는 그 사람의 이름(first name)의 첫 글자를 소문자로 바꾼 것이다. 이때와 규칙 3에서 아포스트로피(')와 하이픈(-)은 무시한다.
  3. 사용자 이름이 MAXLEN자를 넘지 않는 범위에서, 그 사람의 성(last name) 글자를 가능한 한 많이 소문자로 이어 붙인다. 성의 첫 글자부터 시작해 성에 나오는 순서대로 붙인다.
  4. 규칙 1–3으로 만든 사용자 이름이 이미 데이터베이스에 있으면 다음과 같이 중복을 해소한다. 규칙 3의 사용자 이름 뒤에 일련번호 19를 순서대로 붙이되, 길이가 MAXLEN을 넘지 않을 때만 붙인다. 한 자리 숫자를 붙였을 때 MAXLEN을 넘는다면, 숫자를 붙이기 전에 마지막 글자 하나를 지운다.
  5. 규칙 1–4로 만든 사용자 이름이 이미 데이터베이스에 있으면 다음과 같이 중복을 해소한다. 규칙 3의 사용자 이름 뒤에 일련번호 1099를 순서대로 붙이되, 길이가 MAXLEN을 넘지 않을 때만 붙인다. 두 자리 숫자를 붙였을 때 MAXLEN을 넘는다면, 필요한 만큼 마지막 글자 하나 또는 마지막 두 글자를 지운 뒤 숫자를 붙인다.
  6. 위 규칙만으로 항상 중복을 피할 수 있다고 가정한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 양의 정수, 즉 이름의 개수와 MAXLEN 값($5 \le \text{MAXLEN} \le 80$)이 주어진다. 그다음 줄부터 이름 목록이 이어진다.

각 이름은 최대 80자이다. 이름(first name)으로 시작하여, 있다면 중간 이름(middle name)이 이어지고, 성(last name)으로 끝난다. 각 부분은 공백 하나로 구분된다. 이름에는 대문자와 소문자, 하이픈, 아포스트로피가 들어갈 수 있다. 성은 최소 두 글자이고, 나머지 부분은 최소 한 글자이다(이니셜만 있을 수도 있다). 한 테스트 케이스의 이름은 최대 200개이다.

마지막 테스트 케이스 뒤에는 이름의 개수와 MAXLEN이 모두 0인 줄이 오며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 먼저 Case k 형식으로 케이스 번호를 한 줄에 출력한다(k는 1부터 시작). 그다음, 입력에 주어진 이름 순서와 같은 순서로 생성된 사용자 이름을 한 줄에 하나씩 출력한다.