Problem:
野球大会

野球の国別対抗戦 WBC で、日本が2連覇達成!! 野球人気が高まる中、会津学園高校を会場に野球大会が行われました。この大会では、総当りのリーグ戦を行い、以下のような方法で順位を決めることになりました。

勝ち数の多いチームを上位とする

勝ち数が同数の場合は負け数の少ないチームを上位とする

各チームの成績を入力とし、チーム名を上位のチームから順に出力するプログラムを作成してください。同順位のチームが存在する場合は、入力順に出力してください。ただし、チーム数 n は 2 以上 10 以下の整数、チーム名 t は 1 文字の半角英字、試合毎の成績 r は n - 1 個の数字で表され、勝ちの場合は 0 、負けの場合は 1 、引き分けの場合は 2 とします。また、チーム名に重複はないものとします。

Input

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

n
score1
score2
:
scoren

1 行目にチームの数 n (2 ≤ n ≤ 10) 、続く n 行に第 i のチームの成績 scorei が与えられます。各成績は次の形式で与えられます。

t r1 r2 ... rn−1

チーム名 t (１文字の半角英字)、t の試合毎の成績 ri (0, 1, または 2) が空白区切りで与えられます。

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

Output

データセットごとに、チーム名を上位のチームから順に出力します。

Sample Input

6
A 1 0 0 2 0
B 0 0 1 1 0
C 1 1 1 1 1
D 1 0 0 1 2
E 2 0 0 0 0
F 1 1 0 2 1
4
g 1 1 1
h 0 1 2
w 0 0 0
b 0 2 1
0

Output for the Sample Input

E
A
B
D
F
C
w
h
b
g

Solution in JAVA (judge verdict: Wrong Answer)

import java.util.*;

class Main {
  public static void main (String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
      int n = scanner.nextInt();
      if (n == 0) {
        break;
      }
      scanner.nextLine();
      List<aaaa> ts = new ArrayList<aaaa>();
      for (int ii = 0; ii < n; ii++) {
        String[] works = scanner.nextLine().split(" ");
        int ww = 0;
        int ll = 0;
        for (int jj = 1; jj < n; jj++) {
          if (works[jj].equals("0")) {
            ww++;
          } else if (works[jj].equals("1")) {
            ll++;
          }
        }
        aaaa aaa = new aaaa(works[0], ww, ll, ii);
        //aaa.t = works[0];
        ts.add(aaa);
      }
      Collections.sort(ts, new ac());
for (aaaa el : ts) {
      System.out.println(el.t);
}
    }
  }

  private static class aaaa {
    public String t;
    public int ww;
    public int ll;
    public int ii;
    public aaaa (String ta, int wwa, int lla, int iia) {
      t = ta;
      ww = wwa;
      ll = lla;
      ii = iia;
    }
  }

  private static class ac implements Comparator<aaaa> {
    public int compare(aaaa a, aaaa b) {
      if (a.ww > b.ww) {
        return 0;
      } else if (a.ww < b.ww) {
        return 1;
      } else {
        if (a.ll < b.ll) {
          return 1;
        } else if (a.ll > b.ll) {
          return 0;
        } else {
          if (a.ii > b.ii) {
            return 1;
          } else if (a.ii < b.ii) {
            return 0;
          } else {
            return -1;
          }
          //return -1;
        }
        //return -1;
      }
    }
  }

}