英雄联盟
题号:NC20792
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

2018年11月3日,来自LPL的iG战队在英雄联盟S8全球总决赛中以3:0横扫FNC,强势夺冠,于是埃及牛逼的喊声刷屏了朋友圈?
而IG的夺冠,与今年世界赛8强的抽签也有着一定的关系,小A对8强抽签非常感兴趣,希望你能写一个程序替他模拟8强抽签的结果

英雄联盟全球总决赛8强抽签规则是这样的:
小组赛阶段分为A、B、C、D四组,每组的前两名战队晋级八强,现在已知小组赛每组晋级的2支战队

在8强抽签时,先抽4支小组第一的战队顺序,前两支抽到的为上半区,后两支抽到的为下半区
接下来,依次抽4支小组第二的战队,按照抽签顺序与小组第一的战队进行匹配
但在匹配过程中存在同组规避原则,即如果该半区内已经存在和自己小组赛同组的战队,则将往后顺延,直到匹配成功。

例如: 
今年8强小组第一抽签顺序依次为AFS(A组)、FNC(D组)、RNG(B组)、KT(C组),按照抽签顺序AFS(A组)与FNC(D组)为上半区,RNG(B组)与KT(C组)为下半区
小组第二抽签顺序依次为C9(B组)、G2(A组)、EDG(C组)、IG(D组) 
按照抽签顺序,C9(B组)与AFS(A组)匹配,此时上半区中没有同组队伍,匹配成功,C9进入上半区对战AFS
之后G2(A组)与FNC(D组)匹配,因为此时上半区中已经有A组同组队伍(AFS),所以G2无法进入上半区,于是向后顺延与RNG(C组)匹配,下半区中没有同组队伍,则G2进入下半区对战RNG
之后EDG(C组)按照抽签顺序优先级,先与尚未匹配成功的FNC(D组)匹配,上半区内没有同组战队,匹配成功,EDG进入上半区对战FNC
最后IG(D组)与KT(C组)匹配,下半区内没有同组战队,匹配成功,IG进入下半区对战KT

最终8强赛抽签分组为: 
上半区 AFS VS C9; FNC VS EDG; 
下半区 RNG VS G2; KT VS IG 

上述是一种合法方案,现在,根据这个抽签规则,你能否求出所有满足规则的抽签方案,并将所有方案输出?

输入描述:

已知8强出线战队为:
A组:AFS、G2
B组:RNG、C9
C组:KT、EDG
D组:FNC、IG
该题没有输入,请根据出线战队和抽签规则,直接输出所有可能得到的抽签方案总数及具体方案。

输出描述:

第一行输出一个整数,所有符合规则方案的总数
接下来若干行,输出所有可能的抽签方案,按照字典序排序,每种方案占一行
每种方案依次输出战队名称A B C D E F G H,其中A C E G为小组第一,B D F H为小组第二,A B C D为上半区,E F G H为下半区,依次代表A对战B,C对战D,E对战F,G对战H,每个战队之间用一个空格分隔,队名全部为大写字母或数字
例如:今年8强赛实际抽签结果可表示为AFS C9 FNC EDG RNG G2 KT IG,这是其中一种合法方案

备注:

注意:
只要满足同组规避原则,字符串排列顺序不同,即可视为不同方案
例如上下半区对换视为两种不同方案,如 A B C D E F G H 和 E F G H A B C D 为两种方案
同一半区两场对战顺序互换也视为不同方案,如 A B C D E F G H 和 C D A B E F G H 和 A B C D G H E F 和 C D A B G H E F 均为不同方案