케닝(kenning)은 고대 스칼드 시가에서 유행한 은유의 한 형태로, 하나의 단어를 두 개 이상의 단어로 바꾸어 표현합니다. 예를 들어 "황금을 주는 이"는 "전사"를 뜻하는 케닝입니다. 이 치환은 순전히 형식적이어서 "가난한 황금을 주는 이"와 "가난한 전사" 사이에는 의미 차이가 없습니다. 케닝은 중첩될 수 있습니다. "뱀의 소굴"이 "황금"을 가리키므로, "뱀의 소굴을 주는 이" 역시 전사를 가리킵니다.
긴 글이 급하게 필요하다고 가정해 봅시다. 당황하는 대신, 짧은 글 계획과 케닝 목록을 준비한 뒤 다음 절차로 계획을 확장합니다.
한 번의 치환은 동시에 일어나므로, 어떤 치환으로 새로 등장한 단어는 그 회차에서는 다시 확장되지 않고 다음 회차에서 확장됩니다.
첫 줄에는 세 정수가 주어집니다. 한 줄의 너비 $w$ ($1 \le w \le 255$), 결과 글에 필요한 공백이 아닌 기호의 최소 개수 $l$ ($1 \le l \le 3000$), 그리고 케닝의 개수 $n$ ($1 \le n \le 380$)입니다.
이어지는 $n$개의 줄은 각각 하나의 케닝을 나타냅니다. 각 줄은 대상 단어와 그 뒤에 오는 케닝 본문으로 이루어집니다. 모든 케닝 본문은 적어도 두 개의 단어를 포함합니다. 케닝은 재귀적일 수 있습니다(예: "GNU"를 "GNU is Not UNIX"로 치환). 대상 단어는 대소문자와 문법적 형태를 구분하므로 "warrior", "Warrior", "warriors"는 서로 다른 단어이며 각기 다른 케닝을 가질 수 있습니다. 대상 단어가 같은 케닝은 존재하지 않습니다.
나머지 줄들은 글 계획을 이룹니다.
입력 전체는 최대 3000바이트이며, 영문자, 밑줄, 공백, 줄바꿈, 그리고 숫자(숫자는 첫 줄에만 등장)만 포함합니다. 모든 단어의 길이는 최대 $w$입니다. 인접한 두 단어는 정확히 하나의 공백 또는 하나의 줄바꿈으로 구분되며, 어느 줄에도 앞뒤 공백이 없습니다.
절차가 결코 멈추지 않으면(글이 공백이 아닌 기호 $l$개에 절대 도달할 수 없으면) No result만을 한 줄에 출력합니다.
그렇지 않으면 결과 글을 출력하되, 각 줄은 공백을 포함해 최대 $w$개의 문자만 담습니다. 원래 계획의 모든 줄바꿈은 그대로 유지해야 합니다. 원래의 각 줄 안에서, 어떤 단어가 현재 줄에 들어가지 못하면 그 단어 앞에 새 줄바꿈을 넣습니다. 한 줄에서 인접한 단어는 정확히 하나의 공백으로 구분하며, 어느 줄에도 앞뒤 공백이 없어야 합니다. 올바른 출력의 길이는 10000바이트를 넘지 않습니다.