Problem:
A: 磯野、あれやろうぜ！ - Sendame -

物語

中島「磯野〜，あれやろうぜ！」

磯野「あれって何だよ，中島」

中島「ほら，あれだよ，あれ．なぜか文字で表さなきゃならないから，説明しづらいな〜」

磯野「いや，図や写真も入れられるみたいだぞ？」

中島「本当だ！」

磯野「で，何をやるんだ？」

中島「ほら，リズムに乗って，手を2回叩いた後に，防御，溜め，攻撃のポーズを取るやつ」

磯野「う〜ん，イマイチわからないな…」

中島「2回手を叩いた後に，例えば防御だったら」

中島「で，溜めだったら」

中島「攻撃だったら」

中島「ってやるやつ，知ってるだろ？」

磯野「ああ！写真が入ると劇的に分かりやすくなるな！」

中島「これぞ文明の進歩だな！」

(それから悠久の時が経った)

花沢「い゛そ゛の゛く゛〜゛ん゛な゛か゛じ゛ま゛く゛〜゛ん゛」

二人「(パチパチ…パチパチ…パチパチ…)」

花沢「アンタたち，まさか寝ながらあれやってるの…！？」

花沢「今勝負ついたじゃない…磯野くん，今あなた勝ったわよ？」

磯野「……花沢さん来てたんだ…中島もう一度やるぞ…zzz」

中島「(こくり)」

二人「(パチパチ…パチパチ…)」

花沢「もう…ここに，あれの勝敗判定ロボット置いておくから…」

そうして花沢さんは去って行った．

ということがあるかもしれないので，あれの勝敗判定プログラムを書いてください．

問題

「あれ」は2人で行うゲームである．リズムに合わせて2人が同時に，防御，溜め，攻撃のいずれかのポーズを取ることを繰り返す．ここで，2人がポーズを取るタイミングのことを「回」と表記する．このゲームでは，ある回で勝敗がつき，かつ，それまでの回で勝敗がついていないとき，その勝敗がゲームの勝敗となる．

2人はそれぞれ「攻撃力」というパラメータを持ち，ゲーム開始時，攻撃力は 0 である．

攻撃のポーズを取った場合，その時点での攻撃力に応じて，次のようになる．

攻撃力が 0 のときに攻撃のポーズを取ると，反則負けとなる．ただし，相手も攻撃力が 0 で攻撃のポーズをした場合，その回では勝敗がつかない．

自分の攻撃力が 1 以上のときに攻撃のポーズをとると，相手に攻撃を加える．また，その回で相手も攻撃のポーズを取った場合，攻撃力のより高いプレイヤーが勝利する．ただし，両プレイヤーが同じ攻撃力で攻撃のポーズを取った場合には，その回では勝敗がつかない．

また，攻撃のポーズを取った回の終了時に，自分の攻撃力が 0 になる．

溜めのポーズを取ると，そのプレイヤーの攻撃力が 1 だけ上昇する．ただし，攻撃力が 5 である場合，そのプレイヤーが溜めのポーズを取っても，攻撃力は 5 のままである．溜めのポーズを取った回で，相手が攻撃を加えた場合，相手が勝利する．なお，溜めのポーズを取った回で，相手が攻撃以外のポーズをとった場合，勝敗がつかない．

防御のポーズを取った回に，相手が攻撃力 5 の攻撃を加えた場合，相手が勝利する．一方，防御のポーズを取った回に，相手が攻撃力 4 以下の攻撃を加えた場合や，溜めまたは防御のポーズを取った場合，その回では勝敗がつかない．なお，防御のポーズを取っても，そのプレイヤーの攻撃力に変化はない．

両プレイヤーのポーズが順に与えられるので，勝敗を出力せよ．なお，両プレイヤーは勝敗が決定した後もポーズをとり続けることがあるが，勝敗が決定した後のポーズは無視するものとする．

入力形式

入力は以下の形式で与えられる．

K
I_1
...
I_K
N_1
...
N_K

入力の1行目には，1個の整数 K ( 1 ≤ K ≤ 100) が与えられる．
2行目からの K 行には，磯野が取ったポーズ I_i (1 ≤ i ≤ K) が順に与えられる．
その直後の K 行には，中島が取ったポーズ N_i (1 ≤ i ≤ K) が順に与えられる．
I_i および N_i は “mamoru”, “tameru”, “kougekida” のいずれかである．これらの文字列は順に，防御，溜め，攻撃のポーズを表す．

出力形式

磯野が勝利した場合には “Isono-kun” ，中島が勝利した場合には “Nakajima-kun” ， K 回で勝敗がつかない場合には， “Hikiwake-kun” と1行で出力せよ．

入力例1

3
tameru
tameru
tameru
tameru
kougekida
tameru

出力例1

Nakajima-kun

2 回目で，磯野が溜めのポーズをしているのに対し，中島は攻撃力 1 の攻撃をしているので，中島の勝利です．

入力例2

3
mamoru
mamoru
mamoru
tameru
tameru
tameru

出力例2

Hikiwake-kun

どちらも攻撃をしなかったので，勝敗がつきませんでした．

入力例3

5
tameru
tameru
mamoru
mamoru
kougekida
tameru
tameru
kougekida
tameru
kougekida

出力例3

Isono-kun

1 回目から 4 回目まででは勝敗がつきません． 5 回目で，両プレイヤーが攻撃のポーズをしていますが，磯野の攻撃力が 2 なのに対し，中島の攻撃力が 1 なので，磯野の勝利です．

入力例4

3
kougekida
kougekida
tameru
kougekida
mamoru
kougekida

出力例4

Nakajima-kun

1 回目では，両プレイヤーが攻撃力 0 で攻撃のポーズを取っているので，勝敗がつきません． 2 回目では，磯野のみが攻撃力 0 で攻撃のポーズをとっているので，中島の勝利です．

入力例5

8
tameru
mamoru
tameru
tameru
tameru
tameru
tameru
kougekida
tameru
kougekida
mamoru
mamoru
mamoru
mamoru
mamoru
mamoru

出力例5

Isono-kun

2 回目では，中島が攻撃力 1 で攻撃のポーズを取っていますが，磯野が防御のポーズを取っているので，勝敗がつきません． 7 回目では，磯野が攻撃力 5 で溜めのポーズを取っているので，磯野の攻撃力は 5 のままです． 8 回目では，磯野が攻撃力 5 で攻撃のポーズをとり，中島が防御のポーズを取っているので，磯野が勝利します．

Solution in JAVA (judge verdict: Wrong Answer)



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/**
 * AOJ Sendame</br>
 *
 * @author ?????????????????§???
 */
public class Main{

	enum Name {
		ISONO("Isono-kun"), NAKAJIMA("Nakajima-kun"), HIKIWAKE("Hikiwake-kun");
		// ??????????????????????????????????????????????????°
		private final String player;

		// ????????????????????????????????????????????????
		Name(String name) {
			this.player = name;
		}

		public String getPlayer() {
			return player;
		}

	}// ?????????Name????????????

	enum Pose {
		ACCUMULATE("tameru"), DEFENCE("mamoru"), ATTACK("kougekida");

		// ??????????????????????????????????????????????????°
		private final String pose;

		// ????????????????????????????????????????????????
		Pose(String gesture) {
			this.pose = gesture;
		}

		public String getPose() {
			return pose;
		}
	}// ?????????Pose????????????
	/*
	 * ????????°???????????¨?????????????????????
	 */
	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 1?????????????????¬?????????????????????????????°
		int game_set = Integer.parseInt(br.readLine());
		// ?????????????????????????????????
		String cmd;

		// ?£??????????????????????????????????????´????????????????
		ArrayList<Pose> isono_gesture = new ArrayList<Pose>();
		for (int cnt = 0; cnt < game_set; cnt++) {
			// ????????????
			cmd = br.readLine();
			if (Pose.ACCUMULATE.getPose().equals(cmd))
				isono_gesture.add(Pose.ACCUMULATE);
			else if (Pose.DEFENCE.getPose().equals(cmd)) {
				isono_gesture.add(Pose.DEFENCE);
			} else if (Pose.ATTACK.getPose().equals(cmd)) {
				isono_gesture.add(Pose.ATTACK);
			}
		}

		// ?????¶??????????????????????????????????´????????????????
		ArrayList<Pose> nakajima_gesture = new ArrayList<Pose>();
		for (int cnt = 0; cnt < game_set; cnt++) {
			// ????????????
			cmd = br.readLine();
			if (Pose.ACCUMULATE.getPose().equals(cmd))
				nakajima_gesture.add(Pose.ACCUMULATE);
			else if (Pose.DEFENCE.getPose().equals(cmd)) {
				nakajima_gesture.add(Pose.DEFENCE);
			} else if (Pose.ATTACK.getPose().equals(cmd)) {
				nakajima_gesture.add(Pose.ATTACK);
			}
		}
		// true: ??°???????????????????????? false: Hikiwake-kun?????????
		System.out.println(PlaySendameGame(game_set, isono_gesture, nakajima_gesture) ? outputWinner()
				: Name.HIKIWAKE.getPlayer());
	}// ?????????????????????????????????

	/**
	 * ??????????????°?????????</br>
	 * true:?£??????????false:?????¶???
	 */
	private static boolean WhoIsWinner = true;

	/**
	 * ???????????????????????????
	 *
	 * @return ??????????????????
	 */
	private static String outputWinner() {
		return WhoIsWinner ? Name.ISONO.getPlayer() : Name.NAKAJIMA.getPlayer();
	}// outputWinner????????????????????????

	/**
	 * ???????????????????????????????????????</br>
	 * ????????????????????????????????????????????????</br>
	 * ??????????????????????????????????????????
	 *
	 * @param game_set
	 *            ?????????????§?????????°
	 * @param isono_gesture
	 *            ?£???????????????????
	 * @param nakajima_gesture
	 *            ?????¶???????????????
	 * @return ??????????????????????????????????????????
	 */
	private static boolean PlaySendameGame(int game_set, ArrayList<Pose> isono_gesture,
			ArrayList<Pose> nakajima_gesture) {
		// ????????¬??????????????¶???????????????
		Player is_stat = new Player();
		Player na_stat = new Player();
		// ?£???????
		Player[] isono = { is_stat };
		// ?????¶???
		Player[] nakajima = { na_stat };

		for (int cnt = 0; cnt < game_set; cnt++) {
			// ????????????????????\?????????????????????????????????
			if (!isono[0].getHP() || !nakajima[0].getHP()) {
				break;
			}
			// ?????¬???????????????????????§??????????????????
			switch (isono_gesture.get(cnt)) {
			case ACCUMULATE:
				switch (nakajima_gesture.get(cnt)) {
				case ACCUMULATE:
					// ???????????¶????????§????????????????????????
					if (isono[0].getForce() < is_stat.getMax_force()) {
						isono[0].setForce(isono[0].getForce() + 1);
					}
					if (nakajima[0].getForce() < na_stat.getMax_force()) {
						nakajima[0].setForce(nakajima[0].getForce() + 1);
					}
					break;
				case DEFENCE:
					// ?????¶???????????´??????
					if (isono[0].getForce() < is_stat.getMax_force())
						isono[0].setForce(isono[0].getForce() + 1);
					break;
				case ATTACK:
					if (nakajima[0].getForce() == 0) {
						// ????????????
						nakajima[0].setHP(false);
					} else {
						// ?????¶????????????
						isono[0].setHP(false);
						//WhoIsWinner = false;
					}
					// ????????????????????????
					nakajima[0].setForce(0);

					if (isono[0].getForce() < isono[0].getMax_force()) {
						isono[0].setForce(isono[0].getForce() + 1);
					}
					break;
				}
				break;
			case DEFENCE:
				switch (nakajima_gesture.get(cnt)) {
				case ACCUMULATE:
					// ?£???????????????´??????
					if (nakajima[0].getForce() < na_stat.getMax_force())
						nakajima[0].setForce(nakajima[0].getForce() + 1);
					break;
				case DEFENCE:
					// ?????????????????´????????§?????????????¶????
					break;
				case ATTACK:
					if (nakajima[0].getForce() == na_stat.getMax_force()) {
						// ?????¶????????????
						isono[0].setHP(false);
//						WhoIsWinner = false;
					} else if (nakajima[0].getForce() == 0) {
						// ????????????
						nakajima[0].setHP(false);
					}
					// ????????????????????????
					nakajima[0].setForce(0);
					break;
				}
				break;
			case ATTACK:
				switch (nakajima_gesture.get(cnt)) {
				case ACCUMULATE:
					if (isono[0].getForce() == 0) {
						// ????????????
						isono[0].setHP(false);
//						WhoIsWinner = false;
					} else {
						// ?£????????????????
						nakajima[0].setHP(false);
					}
					// ????????????????????????
					isono[0].setForce(0);

					if (nakajima[0].getForce() < nakajima[0].getMax_force()) {
						nakajima[0].setForce(nakajima[0].getForce() + 1);
					}
					break;
				case DEFENCE:
					// ?£???????????????????????????§???????????????
					if (isono[0].getForce() == is_stat.getMax_force()) {
						// ?£????????????????
						nakajima[0].setHP(false);
					} else if (isono[0].getForce() == 0) {
						// ????????????
						isono[0].setHP(false);
//						WhoIsWinner = false;
					}
					// ????????\????????????
					isono[0].setForce(0);
					break;
				case ATTACK:
					// ??????????????????????????????????????????????????????????????????
					if (isono[0].getForce() > nakajima[0].getForce()) {
						// ?£????????????????
						nakajima[0].setHP(false);
					} else if (isono[0].getForce() < nakajima[0].getForce()) {
						// ?????¶????????????
						isono[0].setHP(false);
//						WhoIsWinner = false;
					}
					// ????????\????????????
					nakajima[0].setForce(0);
					isono[0].setForce(0);
					break;
				}
				if(!isono[0].getHP()){
					WhoIsWinner = false;
				}
				break;
			}

		}

		// ?????????????????????
		if (isono[0].getHP() && nakajima[0].getHP()) {
			return false;
		}
		// ????????????
		return true;
	}// PlaySendameGame????????????????????????

}// ??????????????????????????????

/**
 * ?????¬??????????????¶???
 *
 * @author ?????????????????§???
 */
class Player {
	/**
	 * ??????????????????false????????£????????????
	 */
	private boolean HP = true;

	/**
	 * ?????????
	 */
	private int force = 0;

	/**
	 * ??????????????¶???
	 */
	private final static int max_force = 5;

	public int getMax_force() {
		return max_force;
	}

	public boolean getHP() {
		return HP;
	}

	public int getForce() {
		return force;
	}

	public void setForce(int force) {
		this.force = force;
	}

	public void setHP(boolean hP) {
		HP = hP;
	}

	// ?????¬??????????????¶???????????????
	Player() {
		this.getHP();
		this.getForce();
	}
}// Player?????????????????????