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 C# (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;

namespace ConsoleApplication13
{
    class Program
    {
        class Team
        {
            public string Name;
            public int Win;
            public int Draw;
            public int Input;
        }

        static void Main(string[] args)
        {
            while (true)
            {
                int n = int.Parse(Console.ReadLine());
                if (n == 0)
                    break;

                List<Team> teamList = new List<Team>();

                for (int i = 0; i < n; i++)
                {
                    string[] input = Console.ReadLine().Split(' ');

                    Team team = new Team();
                    team.Name = input[0];
                    for (int j = 1; j < input.Length; j++)
                    {
                        team.Input = j;
                        switch (int.Parse(input[j]))
                        {
                            case 0:
                                team.Win +=1;
                                break;
                            case 2:
                                team.Draw += 1;
                                break;
                            default:
                                break;
                        } 
                    }

                    teamList.Add(team);
                }

                teamList.Sort((a, b) => a.Win == b.Win ? (a.Draw == b.Draw ? a.Input - b.Input : b.Draw - a.Draw) : b.Win - a.Win);

                foreach (Team team in teamList)
                {
                    Console.WriteLine(team.Name);
                }
            }

            
        }
    }
}