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)

public class Main{
  public void run(java.io.InputStream in, java.io.PrintStream out){
    java.util.Scanner sc = new java.util.Scanner(in);
/*answer*/
    int n;
    int[] w, d;
    String[] name;
    int i, j, tmp;
    String st;

    n = sc.nextInt();
    for(;;){
      w = new int[n];
      d = new int[n];
      name = new String[n];

      for(i = 0;i < n;i++){
        name[i] = sc.next();
        w[i] = sc.nextInt();
        d[i] = sc.nextInt();
        d[i] = sc.nextInt();
        d[i] += 3 * w[i];
      }

      for(i = 0;i < n - 1;i++){
        for(j = 0;j < n - 1 - i;j++){
          if(d[j] < d[j + 1]){
            st = name[j]; name[j] = name[j + 1]; name[j + 1] = st;
            tmp = d[j]; d[j] = d[j + 1]; d[j + 1] = tmp;
          }
        }
      }

      for(i = 0;i < n;i++)System.out.println(name[i] + "," + d[i]);

      n = sc.nextInt();
      if(n == 0)break;
      else System.out.println();
    }

    sc.close();
  }
  public static void main(String[] args){
    (new Main()).run(System.in, System.out);
  }
}