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.util.Scanner;
public class Main
{
	public static void main(String arg[])
	{
		Scanner in= new Scanner(System.in);
		boolean f=false;
		while(in.hasNext())
		{
			int n=in.nextInt();
			if(n==0)
				return;
			if(f)
				System.out.println();
			f=true;
			String st[]=new String[n];
			int a[]= new int[n];
			int dex[]=new int[n];
			for(int i=0;i<n; i++)
			{
				st[i]=in.next();
				a[i]=in.nextInt()*3+in.nextInt()*0+in.nextInt();
				dex[i]=i;
			}
			for(int i=0;i<n;i++)
			{
				int m=i;
				for(int j=i;j<n; j++)
				{
					if(a[j]>a[m])
						m=j;
				}
				String tmp =st[i];
				st[i] = st[m];
				st[m] = tmp;
				int tmp2 =a[i];
				a[i]=a[m];
				a[m]=tmp2;
				int tmp6 = dex[i];
				dex[i]=dex[m];
				dex[m]=tmp6;
				for(int k=i+1;k<n; k++)
				{
					m=k;
					for(int l=k;l<n;l++)
					{
						if(dex[l]<dex[m])
							m=l;
					}
					int tmp3 = dex[k];
					dex[k]=dex[m];
					dex[m]=tmp3;
					String tmp4 =st[k];
					st[k] = st[m];
					st[m] = tmp4;
					int tmp5 =a[k];
					a[k]=a[m];
					a[m]=tmp5;
				}
			}
			for(int i=0;i<n;i++)
				System.out.println(st[i]+","+a[i]);
		}
	}
}