// Arup Guha
// 7/11/2014
// Solution to 2007 UCF HS Contest Problem: Karts

import java.util.*;
import java.io.*;

public class karts {

	public static void main(String[] args) throws Exception {

		Scanner stdin = new Scanner(new File("karts.in"));
		int numCases = stdin.nextInt();

		// Go through each case.
		for (int loop=1; loop<=numCases; loop++) {

			// Read in the racers/
			int numRacers = stdin.nextInt();
			racer[] cars = new racer[numRacers];
			for (int i=0; i<numRacers; i++) {
				String name = stdin.next();
				int speed = stdin.nextInt();
				cars[i] = new racer(name, speed);
			}

			// Circuit Header
			System.out.println("Circuit #"+loop+":");

			int numTracks = stdin.nextInt();

			// Process each track.
			for (int i=0; i<numTracks; i++) {

				// Set cars to beginning.
				for (int j=0; j<cars.length; j++)
					cars[j].reset();

				// Read in track information.
				String name = stdin.next();
				int length = stdin.nextInt();
				int numB = stdin.nextInt();
				int[] peels = new int[numB+1];
				for (int j=0; j<numB; j++)
					peels[j] = stdin.nextInt();
				peels[numB] = length;
				Arrays.sort(peels);

				// Set up track and run race!
				track course = new track(name, length, peels);
				String s = course.run(cars);
				System.out.println(name+": "+s+" is the winner!");
			}

			System.out.println();
		}
		stdin.close();
	}
}

class racer {

	public String name;
	public int speed;
	public double curPos;
	public double stopTime;

	public racer(String n, int s) {
		name = n;
		speed = s;
		reset();
	}

	public void reset() {
		curPos = 0;
		stopTime = 0;
	}

	public double timeToPos(int pos) {
		return stopTime+(double)(pos-curPos)/speed;
	}

	public void update(double dt) {

		// Still waiting...
		if (dt < stopTime) stopTime -= dt;

		// Finish waiting and drive!
		else {
			dt -= stopTime;
			stopTime = 0;
			curPos += (dt*speed);
		}
	}

	public void stop() {
		stopTime = 5;
	}

	public String getName() {
		return name;
	}

}

class track {

	public String name;
	public int length;
	public int[] bananas;

	public track(String n, int len, int[] b) {
		name = n;
		length = len;
		bananas = b;
	}

	// Returns the winner of a race between cars.
	public String run(racer[] cars) {

		int curB = 0;
		double t = 0;

		// Iterate through bananas.
		while (curB < bananas.length) {

			// Next spot we're racing to.
			int next = bananas[curB];

			// See who gets there first.
			int slipRacer = 0;
			double bestT = 10000;
			for (int i=0; i<cars.length; i++) {
				double cur = cars[i].timeToPos(next);
				if (cur < bestT) {
					bestT = cur;
					slipRacer = i;
				}
			}

			// Winner winner chicken dinner!
			if (next == length) return cars[slipRacer].getName();

			// Add to our absolute race time.
			t += bestT;

			// Update cars positions.
			for (int i=0; i<cars.length; i++)
				cars[i].update(bestT);

			// Haha - he slips!
			cars[slipRacer].stop();

			// Go to next banana.
			curB++;
		}

		// Should never get here...
		return "";
	}
}