给定一个伦敦地铁的图,包含 426 个车站和 505 条双向连接。同时给定一个车站的子集。你需要计算有多少种方法可以向该集合中添加更多的车站(可能为零个),使得集合中任意两个车站之间都没有直接连接。
如果两种添加方式中,某个车站存在于其中一个集合而不在另一个集合中,则认为这两种方式不同。
由于方案数可能很大,你需要输出其对 $998\,244\,353$ 取模的结果。
输入格式
第一行包含一个整数 $m$ ($m = 505$),表示连接的数量。
接下来的 $m$ 行,每行包含两个车站名称。每个车站名称是一个由字母、下划线或数字组成的字符串。
保证所有测试用例中的图完全相同。图中不包含自环和重边。
接下来的一行包含一个整数 $k$ ($0 \le k \le 426$),表示初始集合中的车站数量。接下来的 $k$ 行包含相同格式的车站名称。
输出格式
输出扩展该集合的方法数,对 $998\,244\,353$ 取模。
样例
样例输入 1
505 Baker_Street Regents_Park Charing_Cross Embankment Edgware_Road__Bakerloo_ Marylebone Embankment Waterloo Harlesden Willesden_Junction Harrow_and_Wealdstone Kenton Kensal_Green Queens_Park Kenton South_Kenton ... 2 Baker_Street Liverpool_Street
样例输出 1
159589981
说明
你可以从 https://pastebin.com/yuMX9tRL 下载完整的样例输入。
你可以通过 https://content.tfl.gov.uk/standard-tube-map.pdf 查看官方地图。此链接仅供参考,它与样例中的图可能存在差异。