Problem:
Rank Checker

時は2020 年。パソコン甲子園 2020 の予選結果を保存したデータがあります。このデータには、各チームに振られる整理番号と正解数が保存されています。ここでは、正解数で順位を決定するものとし、正解数の多いほうから順に 1 位、2 位 ... と順位をつけていくこととします。

予選結果のデータと整理番号をキーボードから入力して、その番号のチームの順位を出力するプログラムを作成してください。

Input

入力データは２つの部分からなります。前半の部分は、予選結果のデータ、後半の部分は順位を知りたいチーム番号の問い合わせです。予選結果のデータの形式は以下の通りです。

p1,s1
p2,s2
...
...
0,0

pi (1 ≤ pi ≤ 100 )、 si (0 ≤ si ≤ 30) はそれぞれ i チーム目の整理番号と正解数を表す整数です。整理番号と正解数がともに 0 のときこのデータの入力が終わるものとします。

続いて後半の問い合わせが複数与えられます。問い合わせの形式は以下の通りです。

q1
q2
:

各問い合わせは１行に整理番号 qi (1 ≤ qi ≤ 30) が与えられます。これを入力の最後まで処理して下さい。問い合わせの数は 100 を超えません。

Output

各問い合わせについて、チームの順位を１行に出力して下さい。

Sample Input

1,20
2,20
3,30
4,10
5,10
6,20
0,0
1
2
4
5

Output for the Sample Input

2
2
3
3

Note

入力例のデータにおいて、チームを正解数順に整列すると：

3,30
1,20
2,20
6,20
4,10
5,10

となります。ここでは、正解数を基に順位を決定するため、30問正解チームを1位、20問正解チームを2位、10問正解チームを3位とします（上位のチーム数を考慮し、10問正解チームを5位とする通常の順位付けとは異なることに注意して下さい）。

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mondai0061
{
	class Program
	{
		class Team
		{
			public	int	No;
			public	int	Right;
			public	int	Rank;
		}
		
		static void Main(string[] args)
		{
			var	entry	= new List<Team>();
			
			while( true ) {
				var	e	= Array.ConvertAll( Console.ReadLine().Split( ',' ), ee => int.Parse( ee ) );
				if( (e[ 0 ] == 0) && (e[ 1 ] == 0) ) {
					break;
				}
				var	tmp	= new Team();
				tmp.No		= e[ 0 ];
				tmp.Right	= e[ 1 ];
				tmp.Rank	= 0;
				entry.Add( tmp );
			}

			entry.Sort( (e1, e2) => e2.Right - e1.Right );

			int	rank	= 0;
			int	right	= 999;
			for( int i = 0; i < entry.Count; i++ ) {
				if( entry[ i ].Right < right ) {
					rank++;
					entry[ i ].Rank	= rank;
					right	= entry[ i ].Right;
				} else {
					entry[ i ].Rank	= rank;
				}
			}
			
			/*foreach( var w in entry ) {
				Console.WriteLine( "{0},{1},{2}", w.No, w.Right, w.Rank );
			}*/
		
			var	s	= "";
			while( (s = Console.ReadLine()) != null ) {
				var	no	= int.Parse( s );
				for( int i = 0; i < entry.Count; i++ ) {
					if( entry[ i ].No == no ) {
						Console.WriteLine( entry[ i ].Rank );
						break;
					}
				}
			}
		}
	}
}