using System; 
using System.Collections .Generic ; 
using System.Linq ; 
 
public class Test
{ 
	public static  void  Main( ) 
	{ 
		var fixture =  ComputeFixtures( new List< string>  { "A" ,  "B" ,  "C" ,  "D" ,  "E" ,  "F" ,  "G" ,  "H" ,  "I" ,  "J" ,  "K" ,  "L" } ) ; 
 
		fixture.ForEach ( Console.WriteLine ) ; 		
	} 
 
	public static  List< Round>  ComputeFixtures( List< string>  listTeam) 
	{ 
		var result =  new List< Round> ( ) ; 
 
		var numberOfRounds =  ( listTeam.Count  -  1 ) ; 
		var numberOfMatchesInARound =  listTeam.Count  /  2 ; 
 
		var teams =  new List< string> ( ) ; 
 
		teams.AddRange ( listTeam.Skip ( numberOfMatchesInARound) .Take ( numberOfMatchesInARound) ) ; 
		teams.AddRange ( listTeam.Skip ( 1 ) .Take ( numberOfMatchesInARound -  1 ) .ToArray ( ) .Reverse ( ) ) ; 
 
		var numberOfTeams =  teams.Count ; 
 
		for  ( var roundNumber =  0 ;  roundNumber <  numberOfRounds;  roundNumber++ ) 
		{ 
			var round =  new Round( ) ; 
			var teamIdx =  roundNumber %  numberOfTeams; 
 
			round.Matches .Add ( new Match( teams[ teamIdx] ,  listTeam[ 0 ] ) ) ; 
 
			for  ( var idx =  1 ;  idx <  numberOfMatchesInARound;  idx++ ) 
			{ 
				var firstTeamIndex =  ( roundNumber +  idx)  %  numberOfTeams; 
				var secondTeamIndex =  ( roundNumber +  numberOfTeams -  idx)  %  numberOfTeams; 
 
				round.Matches .Add ( new Match( teams[ firstTeamIndex] ,  teams[ secondTeamIndex] ) ) ; 
			} 
 
			result.Add ( round) ; 
		} 
 
		return  result; 
	} 
} 
 
public class Match
{ 
	public string Team1 {  get;  set;  } 
	public string Team2 {  get;  set;  } 
 
	public Match( string team1,  string team2) 
	{ 
		Team1 =  team1; 
		Team2 =  team2; 
	} 
 
	public override string ToString( ) 
	{ 
		return  string.Format ( "{0} vs {1}" ,  Team1,  Team2) ; 
	} 
} 
 
public class Round
{ 
	public List< Match>  Matches {  get;  private set;  } 
 
	public Round( ) 
	{ 
		Matches =  new List< Match> ( ) ; 
	} 
 
	public override string ToString( ) 
	{ 
		return  String.Join ( Environment.NewLine ,  
			Matches.Select ( m =>  m.ToString ( ) ) .ToArray ( ) ) 
			+  Environment.NewLine ; 
	} 
} 
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIGZpeHR1cmUgPSBDb21wdXRlRml4dHVyZXMobmV3IExpc3Q8c3RyaW5nPiB7IkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwgIkciLCAiSCIsICJJIiwgIkoiLCAiSyIsICJMIn0pOwoKCQlmaXh0dXJlLkZvckVhY2goQ29uc29sZS5Xcml0ZUxpbmUpOwkJCgl9CgoJcHVibGljIHN0YXRpYyBMaXN0PFJvdW5kPiBDb21wdXRlRml4dHVyZXMoTGlzdDxzdHJpbmc+IGxpc3RUZWFtKQoJewoJCXZhciByZXN1bHQgPSBuZXcgTGlzdDxSb3VuZD4oKTsKCgkJdmFyIG51bWJlck9mUm91bmRzID0gKGxpc3RUZWFtLkNvdW50IC0gMSk7CgkJdmFyIG51bWJlck9mTWF0Y2hlc0luQVJvdW5kID0gbGlzdFRlYW0uQ291bnQgLyAyOwoKCQl2YXIgdGVhbXMgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CgoJCXRlYW1zLkFkZFJhbmdlKGxpc3RUZWFtLlNraXAobnVtYmVyT2ZNYXRjaGVzSW5BUm91bmQpLlRha2UobnVtYmVyT2ZNYXRjaGVzSW5BUm91bmQpKTsKCQl0ZWFtcy5BZGRSYW5nZShsaXN0VGVhbS5Ta2lwKDEpLlRha2UobnVtYmVyT2ZNYXRjaGVzSW5BUm91bmQgLSAxKS5Ub0FycmF5KCkuUmV2ZXJzZSgpKTsKCgkJdmFyIG51bWJlck9mVGVhbXMgPSB0ZWFtcy5Db3VudDsKCgkJZm9yICh2YXIgcm91bmROdW1iZXIgPSAwOyByb3VuZE51bWJlciA8IG51bWJlck9mUm91bmRzOyByb3VuZE51bWJlcisrKQoJCXsKCQkJdmFyIHJvdW5kID0gbmV3IFJvdW5kKCk7CgkJCXZhciB0ZWFtSWR4ID0gcm91bmROdW1iZXIgJSBudW1iZXJPZlRlYW1zOwoKCQkJcm91bmQuTWF0Y2hlcy5BZGQobmV3IE1hdGNoKHRlYW1zW3RlYW1JZHhdLCBsaXN0VGVhbVswXSkpOwoKCQkJZm9yICh2YXIgaWR4ID0gMTsgaWR4IDwgbnVtYmVyT2ZNYXRjaGVzSW5BUm91bmQ7IGlkeCsrKQoJCQl7CgkJCQl2YXIgZmlyc3RUZWFtSW5kZXggPSAocm91bmROdW1iZXIgKyBpZHgpICUgbnVtYmVyT2ZUZWFtczsKCQkJCXZhciBzZWNvbmRUZWFtSW5kZXggPSAocm91bmROdW1iZXIgKyBudW1iZXJPZlRlYW1zIC0gaWR4KSAlIG51bWJlck9mVGVhbXM7CgoJCQkJcm91bmQuTWF0Y2hlcy5BZGQobmV3IE1hdGNoKHRlYW1zW2ZpcnN0VGVhbUluZGV4XSwgdGVhbXNbc2Vjb25kVGVhbUluZGV4XSkpOwoJCQl9CgoJCQlyZXN1bHQuQWRkKHJvdW5kKTsKCQl9CgoJCXJldHVybiByZXN1bHQ7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBNYXRjaAp7CglwdWJsaWMgc3RyaW5nIFRlYW0xIHsgZ2V0OyBzZXQ7IH0KCXB1YmxpYyBzdHJpbmcgVGVhbTIgeyBnZXQ7IHNldDsgfQoKCXB1YmxpYyBNYXRjaChzdHJpbmcgdGVhbTEsIHN0cmluZyB0ZWFtMikKCXsKCQlUZWFtMSA9IHRlYW0xOwoJCVRlYW0yID0gdGVhbTI7Cgl9CgoJcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpCgl7CgkJcmV0dXJuIHN0cmluZy5Gb3JtYXQoInswfSB2cyB7MX0iLCBUZWFtMSwgVGVhbTIpOwoJfQp9CgpwdWJsaWMgY2xhc3MgUm91bmQKewoJcHVibGljIExpc3Q8TWF0Y2g+IE1hdGNoZXMgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CgoJcHVibGljIFJvdW5kKCkKCXsKCQlNYXRjaGVzID0gbmV3IExpc3Q8TWF0Y2g+KCk7Cgl9CgkJCQoJcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpCgl7CgkJcmV0dXJuIFN0cmluZy5Kb2luKEVudmlyb25tZW50Lk5ld0xpbmUsIAoJCQlNYXRjaGVzLlNlbGVjdChtID0+IG0uVG9TdHJpbmcoKSkuVG9BcnJheSgpKQoJCQkrIEVudmlyb25tZW50Lk5ld0xpbmU7Cgl9Cn0=