Problem:
理想の体型

肥満度を表す指数としてBMI（Body Mass Index）があります。BMIの値は以下の式で計算します。

BMI = 体重(kg) / (身長(m))2

BMIの値が標準値に近いほど「理想の体型」と考えられます。そこで、BMIの標準値を 22 とした場合、対象者の情報を入力とし、最も「理想の体型」に近い人の情報を出力するプログラムを作成してください。

対象者の数を n とすると、各対象者には重複のないように1 以上 n 以下の整数値の受付番号 p が振られています。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。各データセットは以下の形式で与えられます。

n
p1 h1 w1
p2 h2 w2
:
pn hn wn

１行目に対象者の人数 n (n ≤ 1000)、続く n 行に i 人目の対象者の受付番号 pi (1 ≤ pi ≤ n)、センチメートル単位の身長 hi (1 ≤ hi ≤ 200)、キログラム単位の体重 wi (1 ≤ wi ≤ 200) が与えられます。入力は全て整数で与えられます。

Output

データセットごとに「理想の体型」に最も近い人の受付番号（整数）を１行に出力します。最も「理想の体型」に近い人が二人以上いる場合は、受付番号の小さい方を出力することとします。

Sample Input

6
1 165 66
2 178 60
3 180 72
4 160 65
5 185 62
6 182 62
3
3 160 65
2 180 70
1 170 75
0

Output for the Sample Input

3
2

Solution in JAVA (judge verdict: Accepted)

import java.io.*;
import java.util.*;

public class Main{
	public static void main(String args[]){
		try{
			new Main();
		}catch(IOException e){
			e.printStackTrace();
		}
	}
	
	public Main() throws IOException{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String line;
		
		while((line = in.readLine()) != null){
			int size = Integer.parseInt(line);
			if(size==0) break;
			
			Body[] data = new Body[size];
			for(int n=0; n<size; n++){
				line = in.readLine();
				String[] tmp = line.split(" ");
				int id = Integer.parseInt(tmp[0]);
				int h = Integer.parseInt(tmp[1]);
				int w = Integer.parseInt(tmp[2]);
				data[n] = new Body(id, h, w);
			}
			
			int idx = 0;
			double min = Math.abs(data[0].bmi - 22.0);
			for(int n=1; n<size; n++){
				double delta = Math.abs(data[n].bmi - 22.0);
				if(delta < min){
					idx = n;
					min = delta;
				}
				else if(delta == min){
					if(data[idx].id > data[n].id){
						idx = n;
					}
				}
			}
			
			System.out.println(data[idx].id);			
		}
	}
}

class Body{
	int id;
	double bmi;
	
	public Body(int id, int height, int weight){
		this.id = id;
		this.bmi = (double)weight / (height * height / 10000.0);
	}
}