#157. 航空路线

航空路线

Description

给定一张航空图,图中节点代表城市,边代表两城市间的直通航线,不存在任何两个城市在同一条航线上。从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后单向从东向西飞回起点(可途经若干城市)。除起点城市外,任何城市都只可以访问一次。找出一条满足条件且途经城市最多的旅行路线。

Format

Input

11行包括两个整数nnvv,分别表示航空图的点数和边数;第2(n+1)2~(n+1)行,每行都包含一个字符串;第i+1i+1行的字符串代表从西向东第ii座城市的名称sisi。第(n+2)(n+v+1)(n+2)~(n+v+1)行,每行都包含两个字符串xyx、y,代表在城市xx和城市yy之间存在一条直通航线。

Output

首先判断是否存在满足要求的路线,若不存在,则输出字符串“NoNo Solution!Solution!”;若存在,则输出一种旅行方案。输出格式:第11行输出一个整数mm,代表途径最多的城市数;第2(m+1)2~(m+1)行每行都输出一个字符串;第(i+1)(i+1)行的字符串代表旅行路线中第ii个经过的城市名称(注意:第11个和第mm个城市必然是出发的城市)。

Samples

8 9
Vancouver
Yellowknife
Edmonton
Calgary
Winnipeg
Toronto
Montreal
Halifax
Vancouver Edmonton
Vancouver Calgary
Calgary Winnipeg
Winnipeg Toronto
Toronto Halifax
Montreal Halifax
Edmonton Montreal
Edmonton Yellowknife
Edmonton Calgary
7
Vancouver
Edmonton
Montreal
Halifax
Toronto
Winnipeg
Calgary
Vancouver