Problem:
じゃんけん

仲良し 5 人組でじゃんけんをすることになりました。じゃんけんとは、グー、チョキ、パーという 3つの手があり、グーとチョキの勝負ならグーが「勝ち」・チョキが「負け」、チョキとパーなら、チョキが「勝ち」・パーが「負け」、パーとグーならパーが「勝ち」・グーが「負け」というルールです。全員が同じ手、またはグー、チョキ、パー全てが出た場合は「あいこ」となります。

5 人のじゃんけんの手を入力とし、それぞれの人の勝敗を出力するプログラムを作成してください。じゃんけんの手は、グーは 1、チョキは 2、パーは 3 の数字で表します。勝敗は「勝ち」を 1、「負け」を 2、「あいこ」を 3 の数字で表し、入力順に従って出力します。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

h1
h2
h3
h4
h5

i 行目に i 人目の手 hi (1, 2 または 3) が与えられます。

データセットの数は 200 を超えません。

Output

入力データセットごとに、5 人の勝敗を出力します。i 行目に i 人目の勝敗(1, 2 または 3) を出力してください。

Sample Input

1
2
3
2
1
1
2
2
2
1
0

Output for the Sample Input

3
3
3
3
3
1
2
2
2
1

Solution in JAVA (judge verdict: Wrong Answer)

import java.util.*;
public class Main{
    public static void main(String[] args){
	new Main().run();
    }
    Scanner sc = new Scanner(System.in);

    boolean[] use;
    int[] hand;

    void run(){
	while(sc.hasNext()){
	    use = new boolean[4];
	    hand = new int[5];
	    hand[0] = sc.nextInt();
	    use[0] = true;

	    if(hand[0]==0) break;
	    for(int i=1; i<hand.length; i++){
		hand[i] = sc.nextInt();
		use[hand[i]] = true;
	    }

	    if(use[1] && use[2] && use[3]){
		for(int i=0; i<5; i++)
		    System.out.println("3");
	    }
	    else{
		if(use[1] && use[2])
		    show(1, 2);
		else if(use[2] && use[3])
		    show(2, 3);
		else if(use[3] && use[1])
		    show(3, 1);
		else
		    for(int i=0; i<5; i++)
			System.out.println("3");
	    }
	}
    }

    void show(int win, int lose){
	for(int i=0; i<hand.length; i++)
	    System.out.println(hand[i]==win ? "1":"2");
    }
}