// David Poeschl import java.util.*; public class FoosballDavid { static String points; static Queue queue; static String[] playerNames; static PlayerHolder firstPersonOnWhite; static PlayerHolder firstPersonOnBlack; public static void main(String[] args) { Scanner scan = new Scanner(System.in); int numPlayers = scan.nextInt(); playerNames = new String[numPlayers]; for (int i = 0; i < numPlayers; i++) playerNames[i] = scan.next(); points = scan.next(); scan.close(); int maxDynastyLength = calculateMaxDynastyLength(); PlayerHolder whiteOffense = new PlayerHolder(0); PlayerHolder blackOffense = new PlayerHolder(1); PlayerHolder whiteDefense = new PlayerHolder(2); PlayerHolder blackDefense = new PlayerHolder(3); firstPersonOnWhite = new PlayerHolder(0); firstPersonOnBlack = new PlayerHolder(1); queue = new LinkedList(); for (int i = 4; i < numPlayers; i++) queue.add(new PlayerHolder(i)); char previousDynasty = 'X'; int dynastyLength = 0; for (int i = 0; i < points.length(); i++) { dynastyLength = points.charAt(i) == previousDynasty ? dynastyLength + 1 : 1; previousDynasty = points.charAt(i); if (points.charAt(i) == 'W') handlePoint(whiteOffense, whiteDefense, firstPersonOnWhite, blackOffense, blackDefense, firstPersonOnBlack, dynastyLength == maxDynastyLength); else handlePoint(blackOffense, blackDefense, firstPersonOnBlack, whiteOffense, whiteDefense, firstPersonOnWhite, dynastyLength == maxDynastyLength); } } private static int calculateMaxDynastyLength() { char previousDynasty = 'X'; int dynastyLength = 0; int maxDynastyLength = 0; for (int i = 0; i < points.length(); i++) { dynastyLength = points.charAt(i) == previousDynasty ? dynastyLength + 1 : 1; maxDynastyLength = Math.max(maxDynastyLength, dynastyLength); previousDynasty = points.charAt(i); } return maxDynastyLength; } private static void handlePoint( PlayerHolder winningOffense, PlayerHolder winningDefense, PlayerHolder firstPersonOnWinningTeam, PlayerHolder losingOffense, PlayerHolder losingDefense, PlayerHolder firstPersonOnLosingTeam, boolean shouldPrint) { int temp = winningOffense.playerIndex; winningOffense.playerIndex = winningDefense.playerIndex; winningDefense.playerIndex = temp; queue.add(new PlayerHolder(losingDefense.playerIndex)); losingDefense.playerIndex = losingOffense.playerIndex; losingOffense.playerIndex = queue.remove().playerIndex; firstPersonOnLosingTeam.playerIndex = losingDefense.playerIndex; if (shouldPrint) { int player1 = firstPersonOnWinningTeam.playerIndex; int player2 = winningOffense.playerIndex != player1 ? winningOffense.playerIndex : winningDefense.playerIndex; System.out.println(playerNames[player1] + " " + playerNames[player2]); } } static class PlayerHolder { int playerIndex; public PlayerHolder(int playerIndex) { this.playerIndex = playerIndex; } } }