N=int(input())
teams = []
balls = []
for _ in range(N):
    b,t = input().split()
    teams.append(t)
    balls.append(int(b))

ranks = {t:(i+1) for i,t in enumerate(teams)}

#print(ranks)
#counts = dict(zip(teams,balls))
counts = list(zip(teams,balls))
#print(counts)

if False: # Use Fractions?
    from fractions import Fraction as F
    ZERO,ONE = F(0),F(1)
    def get_frac(prior,n_team,balls_remain):
        return prior * F(n_team,balls_remain)
else:
    ZERO,ONE = 0.0,1.0
    def get_frac(prior,n_team,balls_remain):
        return (prior * n_team) / balls_remain
LOTTERY=3

PROBS_BY_KTH={k:{t:ZERO for t,_ in counts} for k in range(1,LOTTERY+1)}
PROBS_LATER_DRAWN = {k:{t:ZERO for t,_ in counts} for k in range(LOTTERY,len(counts)+1)}
#print(PROBS_BY_KTH)

total_balls = sum([b for _,b in counts])
#def calc_probs(prob_so_far=F(1), lottery_picks_left=LOTTERY, teams_picked=None, balls_removed=0):
def calc_probs(prob_so_far=ONE, lottery_picks_left=LOTTERY, teams_picked=None, balls_removed=0):
    if not teams_picked:
        teams_picked = set()
    K=len(teams_picked)+1
    for team,team_balls in counts:
        if team in teams_picked:
            continue
        #print(teams_picked,team,prob_so_far,counts[team],total_balls-balls_removed,total_balls,balls_removed)
        prob = get_frac(prob_so_far,team_balls,total_balls-balls_removed)
        for k in range(K,LOTTERY+1):
            PROBS_BY_KTH[k][team] += prob
        if lottery_picks_left>1:
            teams_picked.add(team)
            calc_probs(prob,lottery_picks_left-1,teams_picked,balls_removed+team_balls)
            teams_picked.remove(team)
        #if team=='A':
            #print(PROBS_BY_KTH)
        else:
            later=LOTTERY
            teams_picked.add(team)
            for t,b in counts:
                if t in teams_picked:continue
                #if t in teams_picked:
                    #for l in range(later,len(counts)+1):
                        #PROBS_LATER_DRAWN[l][t] += prob
                #else:
                
                later+=1
                #for l in range(later,len(counts)+1):
                PROBS_LATER_DRAWN[later][t] += prob
            teams_picked.remove(team)
            #print(later)
calc_probs()


#print(PROBS_BY_KTH)


# Now handle queries
Q=int(input())
for _ in range(Q):
    t,k = input().split();k=int(k)
    if k <= 3:
        print(PROBS_BY_KTH[k][t])
    else:
        s = sum([PROBS_LATER_DRAWN[kkk][t] for kkk in range(LOTTERY+1,k+1)])
        print(PROBS_BY_KTH[LOTTERY][t]+s)
        #print(PROBS_LATER_DRAWN[k][t]+PROBS_BY_KTH[LOTTERY][t])

#print(PROBS_BY_KTH)
#print(PROBS_LATER_DRAWN)
