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 Scala (judge verdict: Accepted)

import scala.math._

object Main {
  val sc = new java.util.Scanner(System.in)
  def main(args: Array[String]) {
    while(true) {
      val a = new Array[Int](5)
      a(0) = sc.nextInt()
      if(a(0) == 0) {
        return
      }

      for(i <- 1 until 5) {
        a(i) = sc.nextInt()
      }
      val b = a.toSet match {
        case s if s == Set(1,2,3) => Map(1 -> 3, 2 -> 3, 3 -> 3)
        case s if s == Set(1) => Map(1 -> 3, 2 -> 3, 3 -> 3)
        case s if s == Set(2) => Map(1 -> 3, 2 -> 3, 3 -> 3)
        case s if s == Set(3) => Map(1 -> 3, 2 -> 3, 3 -> 3)
        case s if s == Set(1,2) => Map(1 -> 1, 2 -> 2)
        case s if s == Set(2,3) => Map(2 -> 1, 3 -> 2)
        case s if s == Set(3,1) => Map(3 -> 1, 1 -> 2)
      }
      a.map(b).foreach(println)
    }
  }
}