Problem:
リーグ戦のスコアシート

スポーツの大会にはリーグ戦とトーナメント戦があります。サッカーのリーグ戦では勝・負・引分にそれぞれ点数を付け、その勝ち点で順位を競います。勝ち点はそれぞれ勝(3点)、負(0点)、引分(1点)です。

チーム数とリーグ戦の成績を入力とし、成績の良い順(勝ち点の多い順)に並べ替え、チーム名と勝ち点を出力するプログラムを作成してください。勝ち点が同点の場合は入力順に出力してください。

Input

複数のデータセットが与えられます。各データセットは以下の形式で与えられます。

n
name1 w1 l1 d1
name2 w2 l2 d2
:
namen wn ln dn

１行目にチーム数 n (n ≤ 10) が与えられます。続く n 行にチーム i の名前 namei (20文字以内のアルファベット)、勝の数 wi、負の数 li、引分の数 di (0 ≤ wi, li, di ≤ 9) が空白区切りで与えられます。

チーム数が 0 のとき、入力の終了とします。データセットの数は 50 を超えません。

Output

データセットごとに、並べ替えたチームのリストを出力してください。i 行目に i 番目のチームの名前と勝ち点をカンマで区切って出力してください。

データセットの間に１つの空行を入れてください。

Sample Input

4
Japan 1 0 2
Egypt 1 2 0
Canada 0 2 1
Spain 2 0 1
3
India 0 2 0
Poland 1 0 1
Italy 1 0 1
0

Output for the Sample Input

Spain,7
Japan,5
Egypt,3
Canada,1

Poland,4
Italy,4
India,0

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
 
public class Main {
	private	static	BufferedReader	br = null;
	private	static	TeamCmp			tc = null;

	static {
		br = new BufferedReader(new InputStreamReader(System.in));
		tc = new TeamCmp();
	}
 
    /**
     * @param args
     */
	public static void main(String[] args) {
		Team[]	team = null;
		int		cnt  = 0;

		while ((team = parseTeam()) != null) {
			if (cnt++ > 0) {
				System.out.println("");
			}

			for (int i = 0; i < team.length; i++) {
				System.out.println(String.format("%s,%d", team[i].nm, team[i].pt));
			}
		}
	}

	private static Team[] parseTeam() {
		Team[]	team = null;
		int		cnt  = parseNum();

		if (cnt > 0) {
			String	stdin = null;

			team = new Team[cnt];
			for (int i = 0; i < team.length; i++) {
				team[i] = new Team();
				if ((stdin = parseStdin()) != null) {
					String[]	lines = stdin.split(" ");

					team[i].nm = lines[0];
					team[i].no = i+1;
					team[i].pt = Integer.parseInt(lines[1])*3+Integer.parseInt(lines[3]);
				}
			}
			Arrays.sort(team, tc);
		}

		return team;
	}

	private static int parseNum() {
		int		num = 0;
		String	str = null;

		if ((str = parseStdin()) != null) {
			num = Integer.parseInt(str);
		}

		return num;
	}

	private static String parseStdin() {
		String  stdin = null;

		try {
			String  tmp = br.readLine();
			if (tmp != null) {
				if (!tmp.isEmpty()) stdin = tmp;
			}
		}
		catch (IOException e) {}

		return stdin;
	}
}

class Team {
	public	String	nm = null;
	public	int		no = 0;
	public	int		pt = 0;
}

class TeamCmp implements Comparator<Team> {
   public int compare(Team tm1, Team tm2) {
       return (tm2.pt != tm1.pt) ? tm2.pt - tm1.pt : tm1.no - tm2.no;
   }
}