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: Wrong Answer)

/**
 * @author yuichirw
 *
 */
import java.util.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;

public class Main {

	static int n;
	static Team[] teams;
	static Scanner sc = new Scanner(System.in);
	
	static boolean read() {
		n = sc.nextInt();
		if(n == 0) return false;
		teams = new Team[n];
		
		int w,l,d;
		String name;
		for(int i = 0; i < n; i++) {
			name = sc.next();
			w = sc.nextInt(); l = sc.nextInt(); d = sc.nextInt();
			
			teams[i] = new Team(w * 3 + d, name);
		}
		return true;
	}
	
	static void solve() {
		sort(teams);
		for(int i = n - 1; i >= 0; i--) {
			System.out.println(teams[i].name + "," + teams[i].score);
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		while(read()) {
			solve();
		}
	}
}

class Team implements Comparable<Team> {
	int score;
	String name;
	
	Team(int score, String name) {
		this.score = score; this.name = name;
	}
	
	public int compareTo(Team t) {
		if(this.score != t.score) {
			return this.score - t.score;
		} else {
			return this.name.compareTo(t.name);
		}
	}
}