Winters are just damn freezing cold in Nvodsk! That's why a group of n friends prefers to take a taxi, order a pizza and call girls. The phone numbers in the city consist of three pairs of digits (for example, 12-34-56). Each friend has a phonebook of size si (that's the number of phone numbers). We know that taxi numbers consist of six identical digits (for example, 22-22-22), the numbers of pizza deliveries should necessarily be decreasing sequences of six different digits (for example, 98-73-21), all other numbers are the girls' numbers.

You are given your friends' phone books. Calculate which friend is best to go to when you are interested in each of those things (who has maximal number of phone numbers of each type). 

If the phone book of one person contains some number two times, you should count it twice. That is, each number should be taken into consideration the number of times it occurs in the phone book.

Input

The first line contains an integer n (1 ≤ n ≤ 100) — the number of friends. 

Then follow n data blocks that describe each friend's phone books. Each block is presented in the following form: first goes the line that contains integer si and string namei (0 ≤ si ≤ 100) — the number of phone numbers in the phone book of the i-th friend and the name of the i-th friend. The name is a non-empty sequence of uppercase and lowercase Latin letters, containing no more than 20 characters. Next si lines contain numbers as "XX-XX-XX", where X is arbitrary digits from 0 to 9.

Output

In the first line print the phrase "If you want to call a taxi, you should call: ". Then print names of all friends whose phone books contain maximal number of taxi phone numbers. 

In the second line print the phrase "If you want to order a pizza, you should call: ". Then print names of all friends who have maximal number of pizza phone numbers. 

In the third line print the phrase "If you want to go to a cafe with a wonderful girl, you should call: ". Then print names of all friends who have maximal number of girls' phone numbers. 

Print the names in the order in which they are given in the input data. Separate two consecutive names with a comma and a space. Each line should end with exactly one point. For clarifications concerning the output form, see sample tests. It is necessary that you follow the output form strictly. Extra spaces are not allowed.

Examples

Input

4
2 Fedorov
22-22-22
98-76-54
3 Melnikov
75-19-09
23-45-67
99-99-98
7 Rogulenko
22-22-22
11-11-11
33-33-33
44-44-44
55-55-55
66-66-66
95-43-21
3 Kaluzhin
11-11-11
99-99-99
98-65-32


Output

If you want to call a taxi, you should call: Rogulenko.
If you want to order a pizza, you should call: Fedorov, Rogulenko, Kaluzhin.
If you want to go to a cafe with a wonderful girl, you should call: Melnikov.


Input

3
5 Gleb
66-66-66
55-55-55
01-01-01
65-43-21
12-34-56
3 Serega
55-55-55
87-65-43
65-55-21
5 Melnik
12-42-12
87-73-01
36-04-12
88-12-22
82-11-43


Output

If you want to call a taxi, you should call: Gleb.
If you want to order a pizza, you should call: Gleb, Serega.
If you want to go to a cafe with a wonderful girl, you should call: Melnik.


Input

3
3 Kulczynski
22-22-22
65-43-21
98-12-00
4 Pachocki
11-11-11
11-11-11
11-11-11
98-76-54
0 Smietanka


Output

If you want to call a taxi, you should call: Pachocki.
If you want to order a pizza, you should call: Kulczynski, Pachocki.
If you want to go to a cafe with a wonderful girl, you should call: Kulczynski.

Note

In the first sample you are given four friends. Fedorov's phone book contains one taxi number and one pizza delivery number, Melnikov's phone book only has 3 numbers of girls, Rogulenko's one has 6 taxi numbers and one pizza delivery number, Kaluzhin's one contains 2 taxi numbers and one pizza delivery number.

Thus, if you need to order a taxi, you should obviously call Rogulenko, if you need to order a pizza you should call anybody of the following: Rogulenko, Fedorov, Kaluzhin (each of them has one number). Melnikov has maximal number of phone numbers of girls.

Source: codeforces | Difficulty: EASY
Tags: String algorithms

Implementation


Solutions:
def num_type(h):
	if h.count(h[0]) == 6:
		return 0
	for i in range(1, 6):
		if h[i] >= h[i - 1]:
			return 2
	return 1

def pri(g, ind, p):
	[maxx, st] = [0, []]
	for i in range(len(p)):
		if p[i][ind] == maxx:
			st.append(p[i][-1])
		elif p[i][ind] > maxx:
			maxx = p[i][ind]
			st = [p[i][-1]]
	print(g, ', '.join(st) + '.')

def main():
	mode = 'filee'
	if mode == 'file':
		f = open('test.txt', 'r')
	get = lambda : [int(x) for x in (f.readline() if mode == 'file' else input()).split()]
	gets = lambda : [str(x) for x in (f.readline() if mode == 'file' else input()).split()]
	[n] = get()
	p = []
	for i in range(n):
		[x, g] = gets()
		p.append([0, 0, 0, g])
		for j in range(int(x)):
			[h] = gets()
			h = h.split('-')
			h = ''.join(h)
			h = list(h)
			p[i][num_type(h)] += 1
	pri('If you want to call a taxi, you should call:', 0, p)
	pri('If you want to order a pizza, you should call:', 1, p)
	pri('If you want to go to a cafe with a wonderful girl, you should call:', 2, p)
	if mode == 'file':
		f.close()
main()


def phone(dct):
	taxi = dict()
	pizza = dict()
	girl = dict()
	for i in dct.keys():
		for num in dct[i]:
			if num == [num[0]] * 6:
				taxi[i] = taxi.get(i, 0) + 1
			elif num == sorted(num, reverse=True) and len(set(num)) == 6:
				pizza[i] = pizza.get(i, 0) + 1
			else:
				girl[i] = girl.get(i, 0) + 1
	if taxi.items():
		maxt = max(taxi.items(), key=lambda s: s[1])[0]
	else:
		maxt = 0
	if pizza.items():
		maxp = max(pizza.items(), key=lambda s: s[1])[0]
	else:
		maxp = 0
	if girl.items():
		maxg = max(girl.items(), key=lambda s: s[1])[0]
	else:
		maxg = 0
	(anst, ansp, ansg) = ([], [], [])
	for i in taxi:
		if taxi[i] == taxi[maxt]:
			anst.append(i)
	for i in pizza:
		if pizza[i] == pizza[maxp]:
			ansp.append(i)
	for i in girl:
		if girl[i] == girl[maxg]:
			ansg.append(i)
	if anst == []:
		anst = dct.keys()
	if ansp == []:
		ansp = dct.keys()
	if ansg == []:
		ansg = dct.keys()
	print('If you want to call a taxi, you should call: ' + ', '.join(anst) + '.')
	print('If you want to order a pizza, you should call: ' + ', '.join(ansp) + '.')
	print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(ansg) + '.')
	return ''
a = dict()
for i in range(int(input())):
	(n, name) = map(str, input().strip().split())
	lst = []
	for j in range(int(n)):
		temp = input().strip().split('-')
		s = ''.join(temp)
		lst.append([int(i) for i in s])
	a[name] = lst
print(phone(a))


def verifyTaxi(s):
	l1 = s.split('-')
	l = []
	for i in l1:
		l.append(int(i) // 10)
		l.append(int(i) % 10)
	se = set(l)
	if len(se) == 1:
		return True
	return False

def verifyPizza(s):
	l1 = s.split('-')
	l = []
	for i in l1:
		l.append(int(i) // 10)
		l.append(int(i) % 10)
	for i in range(5):
		if l[i + 1] >= l[i]:
			return False
	return True

def findMax(d, idx):
	curr_max = 0
	for small_list in d:
		curr_max = max(curr_max, small_list[idx])
	return curr_max

def findMaxTaxi(d):
	return findMax(d, 1)

def findMaxPizza(d):
	return findMax(d, 2)

def findMaxGirls(d):
	return findMax(d, 3)

def printMaxIndex(msg, d, idx, maxNum):
	l = []
	for small_list in d:
		if small_list[idx] == maxNum:
			l.append(small_list[0])
	name_str = ', '.join(l)
	name_str += '.'
	print(msg, name_str)

def printOutput(d):
	maxTaxi = findMaxTaxi(d)
	maxPizza = findMaxPizza(d)
	maxGirls = findMaxGirls(d)
	msgTaxi = 'If you want to call a taxi, you should call:'
	msgPizza = 'If you want to order a pizza, you should call:'
	msgGirls = 'If you want to go to a cafe with a wonderful girl, you should call:'
	printMaxIndex(msgTaxi, d, 1, maxTaxi)
	printMaxIndex(msgPizza, d, 2, maxPizza)
	printMaxIndex(msgGirls, d, 3, maxGirls)

def solve():
	n = int(input())
	d = []
	for _ in range(n):
		(a, b) = input().split()
		a = int(a)
		small_list = [b, 0, 0, 0]
		d.append(small_list)
		for _ in range(a):
			s = input()
			isTaxi = verifyTaxi(s)
			if isTaxi:
				small_list[1] += 1
				continue
			isPizza = verifyPizza(s)
			if isPizza:
				small_list[2] += 1
				continue
			small_list[3] += 1
	printOutput(d)
solve()


maxtaxi = 0
maxpizza = 0
maxgirls = 0
anstaxi = []
anspizza = []
ansgirls = []
for _ in range(int(input())):
	(n, name) = list(input().split())
	n = int(n)
	curtaxi = 0
	curpizza = 0
	curgirls = 0
	for k in range(n):
		A = list(input().split('-'))
		a = int(str(A[0])[0])
		b = int(str(A[0])[1])
		c = int(str(A[1])[0])
		d = int(str(A[1])[1])
		e = int(str(A[2])[0])
		f = int(str(A[2])[1])
		if a == b == c == d == e == f:
			curtaxi += 1
		elif a > b > c > d > e > f:
			curpizza += 1
		else:
			curgirls += 1
	if curpizza >= maxpizza:
		if curpizza > maxpizza:
			maxpizza = curpizza
			anspizza = [name]
		else:
			anspizza.append(name)
	if curtaxi >= maxtaxi:
		if curtaxi > maxtaxi:
			maxtaxi = curtaxi
			anstaxi = [name]
		else:
			anstaxi.append(name)
	if curgirls >= maxgirls:
		if curgirls > maxgirls:
			maxgirls = curgirls
			ansgirls = [name]
		else:
			ansgirls.append(name)
print('If you want to call a taxi, you should call: ', end='')
print(*anstaxi, sep=', ', end='.')
print()
print('If you want to order a pizza, you should call: ', end='')
print(*anspizza, sep=', ', end='.')
print()
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
print(*ansgirls, sep=', ', end='.')
print()


import math
import sys
n = int(input())
res = {'t': [], 'p': [], 'g': []}
g = {'t': 0, 'p': 0, 'g': 0}
for i in range(n):
	(m, name) = input().split()
	temp = {'t': 0, 'p': 0, 'g': 0}
	for j in range(int(m)):
		st = input().replace('-', '')
		if all((st[i] == st[i + 1] for i in range(5))):
			temp['t'] += 1
		elif all((st[i] > st[i + 1] for i in range(5))):
			temp['p'] += 1
		else:
			temp['g'] += 1
	for j in g:
		if g[j] < temp[j]:
			g[j] = temp[j]
			res[j] = [name]
		elif g[j] == temp[j]:
			res[j].append(name)
print('If you want to call a taxi, you should call: {}.'.format(', '.join(res['t'])))
print('If you want to order a pizza, you should call: {}.'.format(', '.join(res['p'])))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join(res['g'])))


d = {}
for _ in range(int(input())):
	n = list(input().split())
	d[n[1]] = [0, 0, 0]
	for i in range(int(n[0])):
		s = list(input())
		ll = []
		ll.append(int(s[0]))
		ll.append(int(s[1]))
		ll.append(int(s[3]))
		ll.append(int(s[4]))
		ll.append(int(s[6]))
		ll.append(int(s[7]))
		le = len(set(ll))
		ll.reverse()
		if le == 1:
			d[n[1]][1] += 1
		elif sorted(ll) == ll and le == len(ll):
			d[n[1]][0] += 1
		else:
			d[n[1]][2] += 1
x = [0, [], 0, [], 0, []]
for i in d:
	if d[i][0] > x[0]:
		x[0] = d[i][0]
		x[1] = [i]
	elif d[i][0] == x[0]:
		x[1].append(i)
	if d[i][1] > x[2]:
		x[2] = d[i][1]
		x[3] = [i]
	elif d[i][1] == x[2]:
		x[3].append(i)
	if d[i][2] > x[4]:
		x[4] = d[i][2]
		x[5] = [i]
	elif d[i][2] == x[4]:
		x[5].append(i)
print('If you want to call a taxi, you should call:', end=' ')
print(*x[3], sep=', ', end='.\n')
print('If you want to order a pizza, you should call:', end=' ')
print(*x[1], sep=', ', end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
print(*x[5], sep=', ', end='.\n')


def main():
	n = int(input())
	arr = []
	for _ in range(n):
		(k, name) = input().split()
		arr.append([name, 0, 0, 0])
		for i in range(int(k)):
			num = input().replace('-', '')
			if all((a > b for (a, b) in zip(num, num[1:]))):
				arr[-1][2] += 1
			elif len(set(num)) == 1:
				arr[-1][1] += 1
			else:
				arr[-1][3] += 1
	t = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
	for (i, s) in enumerate(t, start=1):
		m = max((r[i] for r in arr))
		print(s, ', '.join((r[0] for r in arr if r[i] == m)) + '.')
main()


(tx, pz, gr, taxi, pizza, girl) = (0, 0, 0, [], [], [])
for _ in range(int(input())):
	(n, s) = input().split()
	(t, p, g) = (0, 0, 0)
	for i in range(int(n)):
		x = ''.join(input().split('-'))
		y = len(set((j for j in x)))
		if y == 1:
			t += 1
		elif y == 6 and ''.join(sorted(x, reverse=True)) == x:
			p += 1
		else:
			g += 1
	if t > tx:
		taxi = [s]
		tx = t
	elif t == tx:
		taxi.append(s)
	if p > pz:
		pizza = [s]
		pz = p
	elif p == pz:
		pizza.append(s)
	if g > gr:
		girl = [s]
		gr = g
	elif g == gr:
		girl.append(s)
(t, p, g) = (', '.join(taxi), ', '.join(pizza), ', '.join(girl))
print(f'If you want to call a taxi, you should call: {t}.\nIf you want to order a pizza, you should call: {p}.\nIf you want to go to a cafe with a wonderful girl, you should call: {g}.')


from collections import Counter
from pprint import pprint
n = int(input().strip())
t = n
books = []
while t > 0:
	friend = input().strip().split()
	phonebook = []
	friend[0] = int(friend[0])
	si = friend[0]
	while si > 0:
		number = input().strip()
		phno = []
		for val in number:
			if val != '-':
				phno.append(int(val))
		phonebook.append(phno)
		si -= 1
	books.append((friend[1], phonebook))
	t -= 1
number_categories = {}
max_pizza = 0
max_girls = 0
max_taxi = 0
for book in books:
	friend = book[0]
	number_categories[friend] = Counter()
	for contact in book[1]:
		digit_dict = Counter(contact)
		if len(digit_dict) == 1:
			number_categories[friend]['taxi'] += 1
		elif len(digit_dict) != len(contact):
			number_categories[friend]['girls'] += 1
		else:
			flag = False
			for i in range(1, len(contact)):
				if contact[i] > contact[i - 1]:
					flag = True
					break
			if flag == False:
				number_categories[friend]['pizza'] += 1
			else:
				number_categories[friend]['girls'] += 1
	max_pizza = max(max_pizza, number_categories[friend]['pizza'])
	max_taxi = max(max_taxi, number_categories[friend]['taxi'])
	max_girls = max(max_girls, number_categories[friend]['girls'])
max_taxi_list = [book[0] for book in books if number_categories[book[0]]['taxi'] == max_taxi]
max_pizza_list = [book[0] for book in books if number_categories[book[0]]['pizza'] == max_pizza]
max_girls_list = [book[0] for book in books if number_categories[book[0]]['girls'] == max_girls]
print('If you want to call a taxi, you should call:', ', '.join(max_taxi_list), end='.\n')
print('If you want to order a pizza, you should call:', ', '.join(max_pizza_list), end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call:', ', '.join(max_girls_list), end='.\n')


def myNextLine():
	return input()

def is_taxi(s):
	for i in range(len(s) - 1):
		if s[i] != s[i + 1]:
			return False
	return True

def is_pizza(s):
	for i in range(len(s) - 1):
		if s[i] <= s[i + 1]:
			return False
	return True

def getFriend(phones, name):
	taxi = 0
	girls = 0
	pizza = 0
	for i in range(phones):
		s = myNextLine()
		new_s = s.replace('-', '').strip()
		if is_pizza(new_s):
			pizza += 1
		elif is_taxi(new_s):
			taxi += 1
		else:
			girls += 1
	return (taxi, girls, pizza)
n = int(myNextLine())
max_taxi = {'value': 0, 'people': []}
max_girls = {'value': 0, 'people': []}
max_pizza = {'value': 0, 'people': []}
for i in range(n):
	person = myNextLine().split(' ')
	phones = int(person[0])
	name = person[1].strip()
	result = getFriend(phones, name)
	if max_taxi['value'] < result[0]:
		max_taxi['value'] = result[0]
		max_taxi['people'] = [name]
	elif max_taxi['value'] == result[0]:
		max_taxi['people'].append(name)
	if max_girls['value'] < result[1]:
		max_girls['value'] = result[1]
		max_girls['people'] = [name]
	elif max_girls['value'] == result[1]:
		max_girls['people'].append(name)
	if max_pizza['value'] < result[2]:
		max_pizza['value'] = result[2]
		max_pizza['people'] = [name]
	elif max_pizza['value'] == result[2]:
		max_pizza['people'].append(name)
print('If you want to call a taxi, you should call: ' + ', '.join(max_taxi['people']) + '.')
print('If you want to order a pizza, you should call: ' + ', '.join(max_pizza['people']) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(max_girls['people']) + '.')


n = int(input())
f = [''] * n
(t, p, g) = ([0] * n, [0] * n, [0] * n)
for i in range(n):
	(c, y) = input().split()
	f[i] = y
	for _ in range(int(c)):
		s = input()
		if len(set(s)) == 2:
			t[i] += 1
		elif s[0] > s[1] > s[3] > s[4] > s[6] > s[7] and len(set(s)) == 7:
			p[i] += 1
		else:
			g[i] += 1
mt = max(t)
tf = [f[i] for i in range(n) if t[i] == mt]
print('If you want to call a taxi, you should call: %s.' % ', '.join(tf))
mp = max(p)
pf = [f[i] for i in range(n) if p[i] == mp]
print('If you want to order a pizza, you should call: %s.' % ', '.join(pf))
mg = max(g)
gf = [f[i] for i in range(n) if g[i] == mg]
print('If you want to go to a cafe with a wonderful girl, you should call: %s.' % ', '.join(gf))


n = int(input())
a = b = c = 0
an = bn = cn = ''
l = []
for i in range(n):
	(s, name) = input().split()
	s = int(s)
	t = p = g = 0
	for j in range(s):
		s1 = input()
		f = s1[0]
		t1 = p1 = 0
		for k in range(1, 8):
			if s1[k] == '-':
				continue
			else:
				if s1[k] == s1[0]:
					t1 += 1
				if s1[k] < f:
					p1 += 1
				f = s1[k]
		if t1 == 5:
			t += 1
		elif p1 == 5:
			p += 1
		else:
			g += 1
	l.append([name, t, p, g])
	if t > a:
		a = t
		an = name
	if p > b:
		b = p
		bn = name
	if g > c:
		c = g
		cn = name
s = 'If you want to call a taxi, you should call: '
for i in l:
	if i[1] == a:
		s += i[0] + ', '
print(s[0:len(s) - 2] + '.')
s = 'If you want to order a pizza, you should call: '
for i in l:
	if i[2] == b:
		s += i[0] + ', '
print(s[0:len(s) - 2] + '.')
s = 'If you want to go to a cafe with a wonderful girl, you should call: '
for i in l:
	if i[3] == c:
		s += i[0] + ', '
print(s[0:len(s) - 2] + '.')


l = []
for _ in range(int(input())):
	(s, n) = input().split()
	r = [0, 0, 0, n]
	l.append(r)
	for _ in range(int(s)):
		s = input().replace('-', '')
		r[(len(set(s)) > 1) * 2 - all((a > b for (a, b) in zip(s, s[1:])))] += 1
for (i, s) in enumerate(('call a taxi', 'order a pizza', 'go to a cafe with a wonderful girl')):
	m = max((row[i] for row in l))
	print('If you want to %s, you should call: %s.' % (s, ', '.join((r[3] for r in l if r[i] == m))))


d1 = {}
d2 = {}
d3 = {}
for _ in range(int(input())):
	(a, b) = input().split()
	a = int(a)
	d1[b] = 0
	d2[b] = 0
	d3[b] = 0
	for k in range(a):
		s = input()
		s = s.replace('-', '')
		if len(set(s)) == 1:
			d1[b] += 1
		elif all((i > j for (i, j) in zip(s, s[1:]))):
			d2[b] += 1
		else:
			d3[b] += 1
print('If you want to call a taxi, you should call: {}.'.format(', '.join((p for (p, count) in d1.items() if count == max(d1.values())))))
print('If you want to order a pizza, you should call: {}.'.format(', '.join((p for (p, count) in d2.items() if count == max(d2.values())))))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join((p for (p, count) in d3.items() if count == max(d3.values())))))


n = int(input())
taxi_man = ''
pizza_man = ''
girl_man = ''
pizza = -1
taxi = -1
girl = -1
for _ in range(n):
	(m, name) = input().split()
	my_taxi = 0
	my_pizza = 0
	my_girls = 0
	for _ in range(int(m)):
		a = list(input().split('-'))
		if a[0][0] == a[0][1] and a[0][1] == a[1][0] and (a[1][0] == a[1][1]) and (a[1][1] == a[2][0]) and (a[2][0] == a[2][1]):
			my_taxi = my_taxi + 1
		elif a[0][0] > a[0][1] and a[0][1] > a[1][0] and (a[1][0] > a[1][1]) and (a[1][1] > a[2][0]) and (a[2][0] > a[2][1]):
			my_pizza = my_pizza + 1
		else:
			my_girls = my_girls + 1
	if taxi < my_taxi:
		taxi_man = name
		taxi = my_taxi
	elif taxi == my_taxi:
		taxi_man = taxi_man + ', ' + name
	if pizza < my_pizza:
		pizza_man = name
		pizza = my_pizza
	elif pizza == my_pizza:
		pizza_man = pizza_man + ', ' + name
	if girl < my_girls:
		girl_man = name
		girl = my_girls
	elif girl == my_girls:
		girl_man = girl_man + ', ' + name
print('If you want to call a taxi, you should call: ' + taxi_man + '.')
print('If you want to order a pizza, you should call: ' + pizza_man + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + girl_man + '.')


n = int(input())
a1 = 0
a2 = 0
a3 = 0
T = ''
p = ''
g = ''
for i in range(n):
	(m, s) = map(str, input().split())
	m = int(m)
	Taxi = 0
	pizza = 0
	gf = 0
	for i in range(m):
		a = input()
		a = a.replace('-', '')
		if a[0] == a[1] == a[2] == a[3] == a[4] == a[5]:
			Taxi += 1
		elif int(a[0]) > int(a[1]) > int(a[2]) > int(a[3]) > int(a[4]) > int(a[5]):
			pizza += 1
		else:
			gf += 1
	if Taxi > a1:
		T = ''
		T = s
	elif Taxi == a1 and T == '':
		T = s
	elif Taxi == a1:
		T = T + ', ' + s
	if pizza > a2:
		p = ''
		p = s
	elif pizza == a2 and p == '':
		p = s
	elif pizza == a2:
		p = p + ', ' + s
	if gf > a3:
		g = ''
		g = s
	elif gf == a3 and g == '':
		g = s
	elif gf == a3:
		g = g + ', ' + s
	a1 = max(a1, Taxi)
	a2 = max(a2, pizza)
	a3 = max(a3, gf)
print('If you want to call a taxi, you should call:', T + '.')
print('If you want to order a pizza, you should call:', p + '.')
print('If you want to go to a cafe with a wonderful girl, you should call:', g + '.')


n = int(input())
l = [[0, 0, 0] for i in range(n)]
names = []
for i in range(n):
	(a, b) = input().split()
	names.append(b)
	for j in range(int(a)):
		arr = [list(val) for val in input().split('-')]
		arr = [int(ii) for ii in arr[0]] + [int(ii) for ii in arr[1]] + [int(ii) for ii in arr[2]]
		f = 0
		for x in range(5):
			if arr[x + 1] >= arr[x]:
				f = 1
		if len(set(arr)) == 1:
			l[i][0] += 1
		elif f == 0:
			l[i][1] += 1
		else:
			l[i][2] += 1
taxi = []
pizza = []
girls = []
maxt = -1
maxp = -1
maxg = -1
for i in range(n):
	if l[i][0] > maxt:
		maxt = l[i][0]
	if l[i][1] > maxp:
		maxp = l[i][1]
	if l[i][2] > maxg:
		maxg = l[i][2]
for i in range(n):
	if l[i][0] == maxt:
		taxi.append(names[i])
	if l[i][1] == maxp:
		pizza.append(names[i])
	if l[i][2] == maxg:
		girls.append(names[i])
print('If you want to call a taxi, you should call: ', end='')
for i in range(len(taxi)):
	if i != len(taxi) - 1:
		print(taxi[i], end=', ')
	else:
		print(taxi[i], end='')
print('.')
print('If you want to order a pizza, you should call: ', end='')
for i in range(len(pizza)):
	if i != len(pizza) - 1:
		print(pizza[i], end=', ')
	else:
		print(pizza[i], end='')
print('.')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(len(girls)):
	if i != len(girls) - 1:
		print(girls[i], end=', ')
	else:
		print(girls[i], end='')
print('.')


import math, re, sys, string, operator, functools, fractions, collections
sys.setrecursionlimit(10 ** 7)
RI = lambda x=' ': list(map(int, input().split(x)))
RS = lambda x=' ': input().rstrip().split(x)
dX = [-1, 1, 0, 0, -1, 1, -1, 1]
dY = [0, 0, -1, 1, 1, -1, -1, 1]
mod = int(1000000000.0 + 7)
eps = 1e-06
pi = math.acos(-1.0)
MAX = 100

def same(a):
	return all((a[i] == a[0] for i in range(len(a))))

def dec(a):
	return all((a[i] < a[i - 1] for i in range(1, len(a))))

def id(a):
	if same(a):
		return 0
	elif dec(a):
		return 1
	return 2
n = RI()[0]
name = [0] * n
cnt = [[0 for i in range(n)] for j in range(3)]
ans = ['If you want to call a taxi, you should call: ', 'If you want to order a pizza, you should call: ', 'If you want to go to a cafe with a wonderful girl, you should call: ']
for i in range(n):
	(s, name[i]) = RS()
	s = int(s)
	for j in range(s):
		num = ''.join(RS('-'))
		cnt[id(num)][i] += 1
for i in range(3):
	maxi = max(cnt[i])
	print(ans[i], end='')
	a = []
	for j in range(n):
		if cnt[i][j] == maxi:
			a.append(name[j])
	print(', '.join(a) + '.')


nfriends = int(input())
names = list()
taxi = [0] * nfriends
pizza = [0] * nfriends
woman = [0] * nfriends
for i in range(0, nfriends):
	(nstr, name) = input().split()
	n = int(nstr)
	names.append(name)
	for j in range(0, n):
		s = input()
		phone = [int(el) for el in s if el.isdigit()]
		if phone[1:] == phone[:-1]:
			taxi[i] += 1
			continue
		if list(reversed(sorted(phone))) == phone and list(reversed(list(set(phone)))) == phone:
			pizza[i] += 1
			continue
		woman[i] += 1
str1 = 'If you want to call a taxi, you should call: '
str2 = 'If you want to order a pizza, you should call: '
str3 = 'If you want to go to a cafe with a wonderful girl, you should call: '
for i in range(0, nfriends):
	if taxi[i] == max(taxi):
		str1 += names[i] + ', '
	if pizza[i] == max(pizza):
		str2 += names[i] + ', '
	if woman[i] == max(woman):
		str3 += names[i] + ', '
str1 = str1[:-2] + '.'
str2 = str2[:-2] + '.'
str3 = str3[:-2] + '.'
print(str1)
print(str2)
print(str3)


def inp(n):
	if n == 1:
		return map(int, stdin.readline().split())
	elif n == 2:
		return map(float, stdin.readline().split())
	else:
		return map(str, stdin.readline().split())

def check(arr):
	a = [0, 0, 0]
	for j in arr:
		first = j[0]
		(pizza, taxi, girl) = [0] * 3
		for i in j[1:]:
			if i == first:
				taxi = 1
			else:
				taxi = 0
				break
		if taxi:
			a[0] += taxi
		else:
			for i in j[1:]:
				if i < first:
					first = i
					pizza = 1
				else:
					pizza = 0
					break
			if pizza:
				a[1] += pizza
			else:
				a[2] += 1
	return a

def get_col(arr, i):
	return [row[i] for row in arr]

def output(maxes):
	ans = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
	for k in range(3):
		for (i, j) in dic.items():
			if dic[i][k] == maxes[k]:
				ans[k] += ' ' + i + ','
		ans[k] = ans[k][:-1] + '.'
	print(*ans, sep='\n')
from sys import *
from collections import defaultdict
(dic, piz, tax, gir) = (defaultdict(list), 0, 0, 0)
for i in range(int(input())):
	(s, name) = inp(3)
	arr = []
	for j in range(int(s)):
		arr.append(input().replace('-', ''))
	arr = check(arr)
	(tax, piz, gir) = (max(tax, arr[0]), max(piz, arr[1]), max(gir, arr[2]))
	dic[name] = arr
output([tax, piz, gir])


n = int(input())
L = []
M = []
MaxTaxi = 0
MaxGirls = 0
MaxPizza = 0
WhoHasMaxTaxiNumbers = []
WhoHasMaxGirlsNumbers = []
WhoHasMaxPizzaNumbers = []
Names = []
for i in range(n):
	NumberTaxi = 0
	NumberGirls = 0
	NumberPizza = 0
	L = input().split()
	Names += [L[1]]
	for j in range(int(L[0])):
		N = input().split('-')
		if N[0][0] == N[0][1] == N[1][0] == N[1][1] == N[2][0] == N[2][1]:
			NumberTaxi += 1
		elif int(N[0][0]) > int(N[0][1]) > int(N[1][0]) > int(N[1][1]) > int(N[2][0]) > int(N[2][1]):
			NumberPizza += 1
		else:
			NumberGirls += 1
	if NumberTaxi > MaxTaxi:
		WhoHasMaxTaxiNumbers = [L[1]]
		MaxTaxi = NumberTaxi
	elif NumberTaxi == MaxTaxi:
		WhoHasMaxTaxiNumbers += [L[1]]
	if NumberGirls > MaxGirls:
		WhoHasMaxGirlsNumbers = [L[1]]
		MaxGirls = NumberGirls
	elif NumberGirls == MaxGirls:
		WhoHasMaxGirlsNumbers += [L[1]]
	if NumberPizza > MaxPizza:
		WhoHasMaxPizzaNumbers = [L[1]]
		MaxPizza = NumberPizza
	elif NumberPizza == MaxPizza:
		WhoHasMaxPizzaNumbers += [L[1]]
if len(WhoHasMaxTaxiNumbers) == 0:
	print('If you want to call a taxi, you should call: ', end='')
	for i in range(len(Names) - 1):
		print(Names[i], end=', ')
	print(Names[-1], end='.')
else:
	print('If you want to call a taxi, you should call: ', end='')
	for i in range(len(WhoHasMaxTaxiNumbers) - 1):
		print(WhoHasMaxTaxiNumbers[i], end=', ')
	print(WhoHasMaxTaxiNumbers[-1], end='.\n')
if len(WhoHasMaxPizzaNumbers) == 0:
	print('If you want to order a pizza, you should call: ', end='')
	for i in range(len(Names) - 1):
		print(Names[i], end=', ')
	print(Names[-1], end='.\n')
else:
	print('If you want to order a pizza, you should call: ', end='')
	for i in range(len(WhoHasMaxPizzaNumbers) - 1):
		print(WhoHasMaxPizzaNumbers[i], end=', ')
	print(WhoHasMaxPizzaNumbers[-1], end='.\n')
if len(WhoHasMaxGirlsNumbers) == 0:
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	for i in range(len(Names) - 1):
		print(Names[i], end=', ')
	print(Names[-1], end='.')
else:
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	for i in range(len(WhoHasMaxGirlsNumbers) - 1):
		print(WhoHasMaxGirlsNumbers[i], end=', ')
	print(WhoHasMaxGirlsNumbers[-1], end='.')


import re

class Friend:

	def __init__(self, name):
		self.name = name
		self.taxi = 0
		self.pizza = 0
		self.girl = 0
num_friends = int(input())
friends = num_friends * [None]
(max_taxi, max_pizza, max_girl) = (0, 0, 0)
for pos in range(num_friends):
	(num, name) = input().split()
	num = int(num)
	friend = friends[pos] = Friend(name)
	for i in range(num):
		number = re.sub('\\D', '', input())
		(taxi, pizza) = (True, True)
		a = number[0]
		for b in number[1:]:
			if a != b:
				taxi = False
			if a <= b:
				pizza = False
			a = b
		if taxi:
			friend.taxi += 1
		elif pizza:
			friend.pizza += 1
		else:
			friend.girl += 1
	max_taxi = max(max_taxi, friend.taxi)
	max_pizza = max(max_pizza, friend.pizza)
	max_girl = max(max_girl, friend.girl)
print('If you want to call a taxi, you should call: ', end='')
result = []
for friend in friends:
	if friend.taxi == max_taxi:
		result.append(friend.name)
print(', '.join(result) + '.')
print('If you want to order a pizza, you should call: ', end='')
result = []
for friend in friends:
	if friend.pizza == max_pizza:
		result.append(friend.name)
print(', '.join(result) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
result = []
for friend in friends:
	if friend.girl == max_girl:
		result.append(friend.name)
print(', '.join(result) + '.')


def kind(val):
	val = val.replace('-', '')
	allsame = True
	for i in range(1, len(val)):
		if val[i - 1] != val[i]:
			allsame = False
	if allsame:
		return 0
	decreasing = True
	for i in range(1, len(val)):
		if val[i - 1] <= val[i]:
			decreasing = False
	if decreasing:
		return 1
	return 2

def solve():
	n = int(input())
	mem = list()
	names = list()
	for i in range(n):
		first = input().split()
		cur = [0 for x in range(3)]
		num = int(first[0])
		name = first[1]
		names.append(name)
		for x in range(num):
			cur[kind(input())] += 1
		mem.append(cur)
	maxvals = [0, 0, 0]
	for i in range(n):
		for x in range(3):
			if mem[i][x] > maxvals[x]:
				maxvals[x] = mem[i][x]
	taxinames = [names[i] for i in range(n) if mem[i][0] == maxvals[0]]
	print('If you want to call a taxi, you should call: ', end='')
	for i in range(len(taxinames)):
		if i == len(taxinames) - 1:
			print(taxinames[i], end='.')
		else:
			print(taxinames[i], end=', ')
	print()
	pizzanames = [names[i] for i in range(n) if mem[i][1] == maxvals[1]]
	print('If you want to order a pizza, you should call: ', end='')
	for i in range(len(pizzanames)):
		if i == len(pizzanames) - 1:
			print(pizzanames[i], end='.')
		else:
			print(pizzanames[i], end=', ')
	print()
	girlnames = [names[i] for i in range(n) if mem[i][2] == maxvals[2]]
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	for i in range(len(girlnames)):
		if i == len(girlnames) - 1:
			print(girlnames[i], end='.')
		else:
			print(girlnames[i], end=', ')
solve()


n = int(input())
(t, p, g) = ([], [], [])
ns = []
for i in range(n):
	(times, name) = [k for k in input().split()]
	ns.append(name)
	(taxi, pizza, girl) = (0, 0, 0)
	for i in range(int(times)):
		number = list(input())
		number.remove('-')
		number.remove('-')
		if len(set(number)) == 1:
			taxi += 1
		elif len(set(number)) == len(number):
			rev = sorted(number)
			rev.reverse()
			if number == rev:
				pizza += 1
			else:
				girl += 1
		else:
			girl += 1
	t.append(taxi)
	p.append(pizza)
	g.append(girl)
print('If you want to call a taxi, you should call: ', end='')
if t.count(max(t)) == 1:
	print(str(ns[t.index(max(t))]) + '.')
else:
	ans = []
	for i in range(t.count(max(t))):
		ans.append(t.index(max(t)) + i)
		t.remove(max(t))
	for i in ans:
		print(str(ns[i]), end='')
		if i != ans[-1]:
			print(', ', end='')
		else:
			print('.')
print('If you want to order a pizza, you should call: ', end='')
if p.count(max(p)) == 1:
	print(str(ns[p.index(max(p))]) + '.')
else:
	ans = []
	for i in range(p.count(max(p))):
		ans.append(p.index(max(p)) + i)
		p.remove(max(p))
	for i in ans:
		print(str(ns[i]), end='')
		if i != ans[-1]:
			print(', ', end='')
		else:
			print('.')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
if g.count(max(g)) == 1:
	print(str(ns[g.index(max(g))]) + '.')
else:
	ans = []
	for i in range(g.count(max(g))):
		ans.append(g.index(max(g)) + i)
		g.remove(max(g))
	for i in ans:
		print(str(ns[i]), end='')
		if i != ans[-1]:
			print(', ', end='')
		else:
			print('.')


t = int(input())
hey = []
ba = []
sa = []
for v in range(t):
	(n, q) = map(str, input().split())
	n = int(n)
	a1 = 0
	a2 = 0
	a3 = 0
	for i in range(n):
		c = list(input())
		d = set(c)
		if len(d) == 2:
			a1 += 1
		else:
			k1 = c[:2] + c[3:5] + c[6:8]
			k1 = list(map(int, k1))
			u = sorted(k1)
			u.sort(reverse=True)
			if u == k1 and len(set(k1)) == 6:
				a2 += 1
			else:
				a3 += 1
	hey.append([a1, q, v + 1])
	ba.append([a2, q, v + 1])
	sa.append([a3, q, v + 1])
hey.sort()
ba.sort()
sa.sort()
s1 = hey[-1][0]
s2 = ba[-1][0]
s3 = sa[-1][0]
ans1 = []
ans2 = []
ans3 = []
for i in hey:
	if i[0] == s1:
		ans1.append([i[-1], i[1]])
for i in ba:
	if i[0] == s2:
		ans2.append([i[-1], i[1]])
for i in sa:
	if i[0] == s3:
		ans3.append([i[-1], i[1]])
ans1.sort()
ans2.sort()
ans3.sort()
print('If you want to call a taxi, you should call: ', end='')
for (d, i) in enumerate(ans1):
	if d == len(ans1) - 1:
		break
	else:
		print(i[1] + ', ', end='')
print(i[1], end='')
print('.')
print('If you want to order a pizza, you should call: ', end='')
for (d, i) in enumerate(ans2):
	if d == len(ans2) - 1:
		break
	else:
		print(i[1] + ', ', end='')
print(i[1], end='')
print('.')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for (d, i) in enumerate(ans3):
	if d == len(ans3) - 1:
		break
	else:
		print(i[1] + ', ', end='')
print(i[1], end='')
print('.')


import sys
import bisect
import heapq
from time import perf_counter
from math import *
from collections import defaultdict as dd
from collections import deque
from collections import Counter as c
from itertools import combinations as comb
from bisect import bisect_left as bl, bisect_right as br, bisect
mod = pow(10, 9) + 7
mod2 = 998244353

def data():
	return sys.stdin.readline().strip()

def out(var):
	sys.stdout.write(var)

def l():
	return list(map(int, data().split()))

def sl():
	return list(map(str, data().split()))

def sp():
	return map(int, data().split())

def ssp():
	return map(str, data().split())

def l1d(n, val=0):
	return [val for i in range(n)]

def l2d(n, m, val=0):
	return [[val for i in range(n)] for j in range(m)]
n = int(data())
answer = dd(dict)
(p, g, t) = (0, 0, 0)
for i in range(n):
	(s, name) = ssp()
	s = int(s)
	answer[name]['taxi'] = 0
	answer[name]['pizza'] = 0
	answer[name]['girl'] = 0
	for j in range(s):
		number = data().replace('-', '')
		k = 0
		if len(set(number)) == 1:
			answer[name]['taxi'] += 1
		else:
			r = True
			while k < len(number) - 1:
				if int(number[k + 1]) >= int(number[k]):
					r = False
					break
				k += 1
			if r:
				answer[name]['pizza'] += 1
			else:
				answer[name]['girl'] += 1
		t = max(t, answer[name]['taxi'])
		g = max(g, answer[name]['girl'])
		p = max(p, answer[name]['pizza'])
(taxi, pizza, girl) = ([], [], [])
for i in answer.keys():
	if answer[i]['taxi'] == t:
		taxi.append(i)
	if answer[i]['girl'] == g:
		girl.append(i)
	if answer[i]['pizza'] == p:
		pizza.append(i)
out('If you want to call a taxi, you should call: ')
for i in range(len(taxi)):
	if i == len(taxi) - 1:
		out(str(taxi[i]) + '.\n')
	else:
		out(str(taxi[i]) + ', ')
out('If you want to order a pizza, you should call: ')
for i in range(len(pizza)):
	if i == len(pizza) - 1:
		out(str(pizza[i]) + '.\n')
	else:
		out(str(pizza[i]) + ', ')
out('If you want to go to a cafe with a wonderful girl, you should call: ')
for i in range(len(girl)):
	if i == len(girl) - 1:
		out(str(girl[i]) + '.\n')
	else:
		out(str(girl[i]) + ', ')


from sys import stdin, stdout
ii1 = lambda : int(stdin.readline().strip())
is1 = lambda : stdin.readline().strip()
iia = lambda : list(map(int, stdin.readline().strip().split()))
isa = lambda : stdin.readline().strip().split()
mod = 1000000007
(girls, taxi, pizza) = ([0, []], [0, []], [0, []])
for _ in range(ii1()):
	(n, s) = isa()
	t = g = p = 0
	for i in range(int(n)):
		num = list(map(int, is1().replace('-', '')))
		if len(set(num)) == 1:
			t += 1
		elif sorted(num, reverse=True) == num and len(set(num)) == len(num):
			p += 1
		else:
			g += 1
	if taxi[0] == t:
		taxi[1].append(s)
	elif taxi[0] < t:
		taxi[0] = t
		taxi[1] = [s]
	if girls[0] == g:
		girls[1].append(s)
	elif girls[0] < g:
		girls[0] = g
		girls[1] = [s]
	if pizza[0] == p:
		pizza[1].append(s)
	elif pizza[0] < p:
		pizza[0] = p
		pizza[1] = [s]
print('If you want to call a taxi, you should call:', end=' ')
print(*taxi[1], sep=', ', end='.\n')
print('If you want to order a pizza, you should call:', end=' ')
print(*pizza[1], sep=', ', end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
print(*girls[1], sep=', ', end='.\n')


n = int(input())

def func(num):
	arr = []
	for i in range(len(num)):
		arr.append(int(num[i]))
	if len(set(arr)) == 1:
		return 1
	arr1 = arr.copy()
	arr.sort(reverse=True)
	if arr1 == arr and len(set(arr1)) == 6:
		return 2
	else:
		return 3
(tcount, pcount, gcount) = (0, 0, 0)
(t, p, g) = ([], [], [])
dict = {}
for i in range(n):
	(phone, name) = input().split()
	phone = int(phone)
	(taxi, pizza, girl) = (0, 0, 0)
	while phone > 0:
		phone -= 1
		x = input().split('-')
		num = ''
		for item in x:
			num += str(item)
		if func(num) == 1:
			taxi += 1
		elif func(num) == 2:
			pizza += 1
		elif func(num) == 3:
			girl += 1
	dict[name] = str(taxi) + str(pizza) + str(girl)
	if taxi >= tcount:
		if taxi > tcount:
			t = []
			t.append(name)
		elif taxi == tcount:
			t.append(name)
		tcount = taxi
	if pizza >= pcount:
		if pizza > pcount:
			p = []
			p.append(name)
		elif pizza == pcount:
			p.append(name)
		pcount = pizza
	if girl >= gcount:
		if girl > gcount:
			g = []
			g.append(name)
		elif girl == gcount:
			g.append(name)
		gcount = girl
t = ', '.join(t)
p = ', '.join(p)
g = ', '.join(g)
print('If you want to call a taxi, you should call: {}.'.format(t))
print('If you want to order a pizza, you should call: {}.'.format(p))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(g))


def pizza(s):
	if s[0] > s[1] and s[1] > s[3] and (s[3] > s[4]) and (s[4] > s[6]) and (s[6] > s[7]):
		return True
	return False

def taxi(s):
	n = set(s)
	if len(n) == 2:
		return True
	return False
n = int(input())
friends = {}
for i in range(n):
	L = input().split()
	no = int(L[0])
	name = L[1]
	friends[name] = [0, 0, 0]
	for i in range(no):
		s = input()
		if pizza(s):
			friends[name][1] += 1
		elif taxi(s):
			friends[name][0] += 1
		else:
			friends[name][2] += 1
maxtaxi = 0
maxgirl = 0
maxpizza = 0
for each in friends:
	maxtaxi = max(maxtaxi, friends[each][0])
	maxgirl = max(maxgirl, friends[each][2])
	maxpizza = max(maxpizza, friends[each][1])
taxi = ''
pizza = ''
girl = ''
for each in friends:
	if friends[each][0] == maxtaxi:
		taxi += each + ', '
	if friends[each][1] == maxpizza:
		pizza += each + ', '
	if friends[each][2] == maxgirl:
		girl += each + ', '
taxi = taxi[:-2] + '.'
pizza = pizza[:-2] + '.'
girl = girl[:-2] + '.'
print('If you want to call a taxi, you should call: ' + taxi)
print('If you want to order a pizza, you should call: ' + pizza)
print('If you want to go to a cafe with a wonderful girl, you should call: ' + girl)


from collections import Counter
TAXY = 0
PIZZA = 1
GIRLS = 2

def number_classification(number):
	(a, b, c) = number.split('-')
	if a[0] == a[1] == b[0] == b[1] == c[0] == c[1]:
		return TAXY
	elif a[0] > a[1] > b[0] > b[1] > c[0] > c[1]:
		return PIZZA
	return GIRLS

def parse_input():
	agenda = [list(), list(), list()]
	friends = int(input())
	names = []
	messages = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
	for __ in range(friends):
		(numbers, name) = input().split()
		names.append(name)
		for __ in range(int(numbers)):
			agenda[number_classification(input())].append(name)
	for item in range(3):
		item_counter = Counter(agenda[item])
		item_max = item_counter.most_common()[0][1] if item_counter else 0
		str_names = ''
		for friend in filter(lambda x: item_counter[x] == item_max, names):
			if str_names:
				str_names += ', '
			str_names += friend
		print(f'{messages[item]} {str_names}.')
parse_input()


def check(b):
	g = []
	for i in b:
		for j in i:
			g.append(int(j))
	for i in range(1, len(g)):
		if g[i] >= g[i - 1]:
			return 0
	return 1
ans = []
t = int(input())
for iii in range(t):
	a = input().split()
	taxi = 0
	girls = 0
	pizz = 0
	for i in range(int(a[0])):
		b = input().rstrip().split('-')
		if b.count(b[0]) == len(b) and b[0][0] == b[1][1]:
			taxi += 1
		elif check(b):
			pizz += 1
		else:
			girls += 1
	ans.append((a[1], taxi, girls, pizz, iii))
ans.sort(key=lambda x: x[1], reverse=True)
te = []
for i in ans:
	if i[1] == ans[0][1]:
		te.append((i[0], i[4]))
ans.sort(key=lambda x: x[2], reverse=True)
girl = []
for i in ans:
	if i[2] == ans[0][2]:
		girl.append((i[0], i[4]))
ans.sort(key=lambda x: x[3], reverse=True)
pizza = []
for i in ans:
	if i[3] == ans[0][3]:
		pizza.append((i[0], i[4]))
te.sort(key=lambda x: x[1])
girl.sort(key=lambda x: x[1])
pizza.sort(key=lambda x: x[1])
te = [i[0] for i in te]
pizza = [i[0] for i in pizza]
girl = [i[0] for i in girl]
ans1 = 'If you want to call a taxi, you should call:'
ans2 = 'If you want to order a pizza, you should call:'
ans3 = 'If you want to go to a cafe with a wonderful girl, you should call:'
te = ', '.join(te) + '.'
girl = ', '.join(girl) + '.'
pizza = ', '.join(pizza) + '.'
print(ans1, te)
print(ans2, pizza)
print(ans3, girl)


names = []
taxi = []
pizza = []
call = []
for _ in range(int(input())):
	(n, s) = map(str, input().split())
	names.append(s)
	taxi_num = 0
	pizza_num = 0
	call_num = 0
	for i in range(int(n)):
		num = input().replace('-', '')
		if len(set(num)) == 1:
			taxi_num += 1
		else:
			for j in range(len(num) - 1):
				if num[j] <= num[j + 1]:
					call_num += 1
					break
			else:
				pizza_num += 1
	taxi.append(taxi_num)
	pizza.append(pizza_num)
	call.append(call_num)
max_taxi = max(taxi)
max_pizza = max(pizza)
max_call = max(call)
ta = 'If you want to call a taxi, you should call: '
for i in range(len(taxi)):
	if taxi[i] == max_taxi:
		ta += names[i] + ', '
print(ta[:-2] + '.')
pi = 'If you want to order a pizza, you should call: '
for i in range(len(pizza)):
	if pizza[i] == max_pizza:
		pi += names[i] + ', '
print(pi[:-2] + '.')
ca = 'If you want to go to a cafe with a wonderful girl, you should call: '
for i in range(len(call)):
	if call[i] == max_call:
		ca += names[i] + ', '
print(ca[:-2] + '.')


def same(x):
	return all((x[i] == x[0] for i in range(len(x))))

def dec(x):
	return all((x[i] < x[i - 1] for i in range(1, len(x))))

def idx(x):
	return 0 if same(x) else 1 if dec(x) else 2
n = int(input())
name = [0] * n
cnt = [[0 for i in range(n)] for j in range(3)]
res = ['If you want to call a taxi, you should call: ', 'If you want to order a pizza, you should call: ', 'If you want to go to a cafe with a wonderful girl, you should call: ']
for i in range(n):
	(m, name[i]) = input().split()
	m = int(m)
	for j in range(m):
		num = ''.join(input().split('-'))
		cnt[idx(num)][i] += 1
for i in range(3):
	mx = max(cnt[i])
	print(res[i], end='')
	x = []
	for j in range(n):
		if cnt[i][j] == mx:
			x.append(name[j])
	print(', '.join(x) + '.')


import math
L = lambda : list(map(int, input().split()))
M = lambda : map(int, input().split())
I = lambda : int(input())
t = I()
P = []
T = []
G = []
for i in range(t):
	(m, n) = input().split()
	T.append([0, n])
	G.append([0, n])
	P.append([0, n])
	for j in range(int(m)):
		x = input()
		if x[0] == x[1] == x[3] == x[4] == x[6] == x[7]:
			T[i][0] += 1
		elif x[0] > x[1] > x[3] > x[4] > x[6] > x[7]:
			P[i][0] += 1
		else:
			G[i][0] += 1
(x, y, z) = (max(T)[0], max(P)[0], max(G)[0])
X = []
Y = []
Z = []
for i in range(t):
	if T[i][0] == x:
		X.append(T[i][1])
	if P[i][0] == y:
		Y.append(P[i][1])
	if G[i][0] == z:
		Z.append(G[i][1])
print('If you want to call a taxi, you should call: ' + ', '.join(X) + '.')
print('If you want to order a pizza, you should call: ' + ', '.join(Y) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(Z) + '.')


from collections import defaultdict
d = defaultdict(list)
from collections import Counter
cases = int(input())
c = []
names = []
for _ in range(cases):
	(a, b) = input().split()
	names.append(b)
	for i in range(int(a)):
		g = input().split('-')
		g = ''.join(g)
		if g.count(g[0]) == len(g):
			d[b].append('Taxi')
		elif sorted(g)[::-1] == list(g):
			if Counter(g).most_common()[0][1] == 1:
				d[b].append('Pizza')
			else:
				d[b].append('Girl')
		else:
			d[b].append('Girl')
taxi_names = []
pizza_names = []
girl_names = []
max_taxi = 0
max_pizza = 0
max_girl = 0
for i in range(len(names)):
	taxi = d[names[i]].count('Taxi')
	if taxi >= max_taxi:
		max_taxi = taxi
	girl = d[names[i]].count('Girl')
	if girl >= max_girl:
		max_girl = girl
	pizza = d[names[i]].count('Pizza')
	if pizza > max_pizza:
		max_pizza = pizza
for i in range(len(names)):
	if d[names[i]].count('Taxi') == max_taxi:
		taxi_names.append(names[i])
	if d[names[i]].count('Pizza') == max_pizza:
		pizza_names.append(names[i])
	if d[names[i]].count('Girl') == max_girl:
		girl_names.append(names[i])
print('If you want to call a taxi, you should call: {}.'.format(', '.join(taxi_names)))
print('If you want to order a pizza, you should call: {}.'.format(', '.join(pizza_names)))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join(girl_names)))


def pizza(n):
	for i in range(len(n) - 1):
		if int(n[i]) <= int(n[i + 1]):
			return False
	return True

def main():
	n = int(input())
	arr = []
	for _ in range(n):
		(k, name) = input().split()
		arr.append([name, 0, 0, 0])
		for i in range(int(k)):
			num = input().replace('-', '')
			if pizza(num) == True:
				arr[-1][2] += 1
			elif len(set(num)) == 1:
				arr[-1][1] += 1
			else:
				arr[-1][3] += 1
	t = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
	for i in range(1, 4):
		m = max((r[i] for r in arr))
		ss = t[i - 1] + ' '
		for j in range(len(arr)):
			if arr[j][i] == m:
				ss += arr[j][0]
				ss += ','
				ss += ' '
		ss = list(ss)
		ss.pop()
		ss.pop()
		ss.append('.')
		pp = ''
		for i in ss:
			pp += i
		print(pp)
main()


n = int(input())
names = []
records = []
for i in range(n):
	records.append([0, 0, 0])
phone_numebers = []
temp = n
i = 0
while temp > 0:
	(s, name) = [x for x in input().split()]
	names.append(name)
	s = int(s)
	while s > 0:
		number = input()
		phone_numebers.append((number, i))
		s -= 1
	i += 1
	temp -= 1
for i in phone_numebers:
	number = i[0]
	ind = i[1]
	list1 = number.split('-')
	if list1[0] == list1[1] == list1[2] and (list1[0][0] == list1[0][1] and list1[1][0] == list1[1][1] and (list1[2][0] == list1[2][1])):
		records[ind][0] += 1
	elif list1[0][0] > list1[0][1] and list1[0][1] > list1[1][0] and (list1[1][0] > list1[1][1]) and (list1[1][1] > list1[2][0]) and (list1[2][0] > list1[2][1]):
		records[ind][1] += 1
	else:
		records[ind][2] += 1
maxi_taxi = 0
maxi_pizza = 0
maxi_girl = 0
for record in records:
	if record[0] > maxi_taxi:
		maxi_taxi = record[0]
	if record[1] > maxi_pizza:
		maxi_pizza = record[1]
	if record[2] > maxi_girl:
		maxi_girl = record[2]
taxi_guys = []
pizza_guys = []
girls_guys = []
for i in range(n):
	if records[i][0] == maxi_taxi:
		taxi_guys.append(names[i])
	if records[i][1] == maxi_pizza:
		pizza_guys.append(names[i])
	if records[i][2] == maxi_girl:
		girls_guys.append(names[i])
print('If you want to call a taxi, you should call: ', end='')
for i in range(len(taxi_guys)):
	if i == len(taxi_guys) - 1:
		print(taxi_guys[i] + '.')
	else:
		print(taxi_guys[i], end=', ')
print('If you want to order a pizza, you should call: ', end='')
for i in range(len(pizza_guys)):
	if i == len(pizza_guys) - 1:
		print(pizza_guys[i] + '.')
	else:
		print(pizza_guys[i], end=', ')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(len(girls_guys)):
	if i == len(girls_guys) - 1:
		print(girls_guys[i] + '.')
	else:
		print(girls_guys[i], end=', ')


(taxi, pizza, girls) = ({}, {}, {})
for _ in range(int(input())):
	(s, name) = input().split()
	taxi[name] = pizza[name] = girls[name] = 0
	for _ in range(int(s)):
		number = input().replace('-', '')
		if len(set(number)) == 1:
			taxi[name] += 1
		elif all((d1 > d2 for (d1, d2) in zip(number, number[1:]))):
			pizza[name] += 1
		else:
			girls[name] += 1
print('If you want to call a taxi, you should call: {}.'.format(', '.join((name for (name, count) in taxi.items() if count == max(taxi.values())))))
print('If you want to order a pizza, you should call: {}.'.format(', '.join((name for (name, count) in pizza.items() if count == max(pizza.values())))))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join((name for (name, count) in girls.items() if count == max(girls.values())))))


import pdb
import re
import sys

def solve_challenge():
	inp = get_input()
	books = parse_input(inp)
	(taxis_top, pizzas_top, girls_top) = get_solution(books)
	print_solution(taxis_top, pizzas_top, girls_top)

def get_input():
	var = sys.stdin.read()
	return var

def parse_input(inp):
	books = list()
	lines = inp.splitlines()
	is_name_line = True
	for line in lines[1:]:
		if is_name_line:
			arr = line.split(' ')
			(number, friend) = (int(arr[0]), arr[1])
			phonebook = list()
		else:
			phone = line.replace('-', '')
			phonebook.append(phone)
			number -= 1
		if number == 0:
			is_name_line = True
			friend_tuple = (friend, phonebook)
			books.append(friend_tuple)
		else:
			is_name_line = False
	return books

def get_solution(books):
	taxis_max = 0
	pizzas_max = 0
	girls_max = 0
	taxis_top = list()
	pizzas_top = list()
	girls_top = list()
	for book in books:
		taxis_count = 0
		pizzas_count = 0
		girls_count = 0
		(friend, phonebook) = book
		for number in phonebook:
			if is_taxi_number(number):
				taxis_count += 1
			elif is_pizza_number(number):
				pizzas_count += 1
			else:
				girls_count += 1
		(taxis_max, taxis_top) = get_max(taxis_count, taxis_max, taxis_top, friend)
		(pizzas_max, pizzas_top) = get_max(pizzas_count, pizzas_max, pizzas_top, friend)
		(girls_max, girls_top) = get_max(girls_count, girls_max, girls_top, friend)
	return (taxis_top, pizzas_top, girls_top)

def get_max(count, maximum, top, friend):
	if count > maximum:
		maximum = count
		top = [friend]
	elif count == maximum:
		top.append(friend)
	return (maximum, top)

def is_pizza_number(num):
	for i in range(1, 6):
		if int(num[i]) >= int(num[i - 1]):
			return False
	return True

def is_taxi_number(num):
	return bool(re.match('(\\w)\\1{5,}', num))

def print_solution(taxis_top, pizzas_top, girls_top):
	actions = ['call a taxi', 'order a pizza', 'go to a cafe with a wonderful girl']
	for (ind, values) in enumerate((taxis_top, pizzas_top, girls_top)):
		print('If you want to %s, you should call: %s.' % (actions[ind], ', '.join(values)))

def main():
	solve_challenge()
main()


n = int(input())
ans = {}
for _ in range(n):
	(size, name) = input().split()
	size = int(size)
	ans[name] = [0, 0, 0]
	for _ in range(size):
		line = [c for c in input() if c != '-']
		if len(set(line)) == 1:
			ans[name][0] += 1
			continue
		else:
			prev = 'a'
			for c in line:
				if c >= prev:
					ans[name][2] += 1
					break
				prev = c
			else:
				if len(set(line)) == len(line):
					ans[name][1] += 1
				else:
					ans[name][2] += 2
max_taxi = max((v[0] for (k, v) in ans.items()))
max_pizza = max((v[1] for (k, v) in ans.items()))
max_girls = max((v[2] for (k, v) in ans.items()))
name_taxi = []
name_pizza = []
name_girls = []
for (k, v) in ans.items():
	if v[0] == max_taxi:
		name_taxi.append(k)
	if v[1] == max_pizza:
		name_pizza.append(k)
	if v[2] == max_girls:
		name_girls.append(k)
print(f"If you want to call a taxi, you should call: {', '.join(name_taxi)}.")
print(f"If you want to order a pizza, you should call: {', '.join(name_pizza)}.")
print(f"If you want to go to a cafe with a wonderful girl, you should call: {', '.join(name_girls)}.")


n = int(input())
lt = []
lp = []
lg = []
for i in range(n):
	(s, name) = input().split()
	lt1 = 0
	lp1 = 0
	lg1 = 0
	for j in range(int(s)):
		d = input().split('-')
		if len(set(''.join(map(str, d)))) == 1:
			lt1 += 1
		else:
			z = ''.join(map(str, d))
			z1 = z[0]
			f = True
			for i in range(1, 6):
				if z[i] < z1:
					z1 = z[i]
				else:
					f = False
					lg1 += 1
					break
			if f:
				lp1 += 1
	lt.append((lt1, name))
	lp.append((lp1, name))
	lg.append((lg1, name))
a = max(lt)[0]
b = max(lp)[0]
c = max(lg)[0]
lt2 = []
for p in lt:
	if p[0] == a:
		lt2.append(p[1])
lp2 = []
for p in lp:
	if p[0] == b:
		lp2.append(p[1])
lg2 = []
for p in lg:
	if p[0] == c:
		lg2.append(p[1])
print('If you want to call a taxi, you should call:', end=' ')
for i in range(len(lt2) - 1):
	print(str(lt2[i]) + ', ', end='')
print(str(lt2[-1]) + '.')
print('If you want to order a pizza, you should call:', end=' ')
for i in range(len(lp2) - 1):
	print(str(lp2[i]) + ', ', end='')
print(str(lp2[-1]) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
for i in range(len(lg2) - 1):
	print(str(lg2[i]) + ', ', end='')
print(str(lg2[-1]) + '.')


n = int(input())
d = {}
for i in range(n):
	(c, name) = map(str, input().split())
	l = []
	for j in range(int(c)):
		l.append(input())
	d[name] = l
l = {}
mo = ['girl', 'pizza', 'taxi']
for i in d:
	l[i] = {}
	for j in mo:
		l[i][j] = 0
for i in d:
	for j in d[i]:
		flag = True
		if len(set(j)) == 2:
			l[i]['taxi'] += 1
			flag = False
		elif len(set(j)) == len(j) - 1:
			prev = j[0]
			flag1 = True
			for k in range(1, len(j)):
				if j[k] != '-':
					if prev < j[k]:
						flag1 = False
						break
					else:
						prev = j[k]
			if flag1:
				l[i]['pizza'] += 1
				flag = False
		if flag:
			l[i]['girl'] += 1
mo = ['girl', 'pizza', 'taxi']
maxg = 0
maxp = 0
maxt = 0
for i in l:
	for j in range(3):
		if j == 0:
			maxg = max(maxg, l[i][mo[j]])
		elif j == 1:
			maxp = max(maxp, l[i][mo[j]])
		elif j == 2:
			maxt = max(maxt, l[i][mo[j]])
girl = []
pizza = []
taxi = []
for i in l:
	for j in range(3):
		if j == 0:
			if maxg == l[i][mo[j]]:
				girl.append(i)
		elif j == 1:
			if maxp == l[i][mo[j]]:
				pizza.append(i)
		elif j == 2:
			if maxt == l[i][mo[j]]:
				taxi.append(i)
strg = ''
strt = ''
strp = ''
for i in range(len(girl)):
	if i == len(girl) - 1:
		strg += ' ' + girl[i] + '.'
	else:
		strg += ' ' + girl[i] + ','
for i in range(len(taxi)):
	if i == len(taxi) - 1:
		strt += ' ' + taxi[i] + '.'
	else:
		strt += ' ' + taxi[i] + ','
for i in range(len(pizza)):
	if i == len(pizza) - 1:
		strp += ' ' + pizza[i] + '.'
	else:
		strp += ' ' + pizza[i] + ','
s = 'If you want to call a taxi, you should call:' + strt
s1 = 'If you want to order a pizza, you should call:' + strp
s2 = 'If you want to go to a cafe with a wonderful girl, you should call:' + strg
print(s)
print(s1)
print(s2)


n = int(input())

def decrease(a):
	if int(a[7]) < int(a[6]) < int(a[4]) < int(a[3]) < int(a[1]) < int(a[0]):
		return 1
	return 0

def equal(a):
	if a == '11-11-11' or a == '22-22-22' or a == '33-33-33' or (a == '44-44-44') or (a == '55-55-55') or (a == '66-66-66') or (a == '77-77-77') or (a == '88-88-88') or (a == '99-99-99') or (a == '00-00-00'):
		return 1
	return 0

def gf(a):
	if equal(a) == 0 and decrease(a) == 0:
		return 1
	return 0
p = n * [0]
t = n * [0]
o = n * [0]
friend = []
for i in range(n):
	a = input()
	a = a.split()
	friend.append(a[1])
	for kk in range(int(a[0])):
		h = input()
		if decrease(h) == 1:
			p[i] += 1
		elif equal(h) == 1:
			t[i] += 1
		elif gf(h) == 1:
			o[i] += 1
jom = 'If you want to call a taxi, you should call: '
jom1 = 'If you want to order a pizza, you should call: '
jom2 = 'If you want to go to a cafe with a wonderful girl, you should call: '
for i in range(n):
	if t[i] == max(t):
		jom += friend[i] + ', '
for i in range(n):
	if p[i] == max(p):
		jom1 += friend[i] + ', '
for i in range(n):
	if o[i] == max(o):
		jom2 += friend[i] + ', '
jom = jom[:-2]
jom1 = jom1[:-2]
jom2 = jom2[:-2]
jom += '.'
jom1 += '.'
jom2 += '.'
print(jom)
print(jom1)
print(jom2)


n = int(input())
q = n
name = []
l1 = []
l2 = []
l3 = []
for i in range(n):
	(p, s) = input().split()
	name.append(s)
	p = int(p)
	r0 = 0
	r1 = 0
	r2 = 0
	for i in range(p):
		s = input()
		k = int(s[0])
		l = int(s[1])
		m = int(s[3])
		n = int(s[4])
		o = int(s[6])
		p = int(s[7])
		if k == l and l == m and (m == n) and (n == o) and (o == p):
			r0 = r0 + 1
		elif k > l and l > m and (m > n) and (n > o) and (o > p):
			r1 = r1 + 1
		else:
			r2 = r2 + 1
	l1.append(r0)
	l2.append(r1)
	l3.append(r2)
x = max(l1)
y = max(l2)
z = max(l3)
a = 0
print('If you want to call a taxi, you should call:', end=' ')
for i in range(q):
	if l1[i] == x and a == 0:
		print(name[i], end='')
		a = 1
	elif l1[i] == x and a == 1:
		print(', ' + name[i], end='')
print('.')
print('If you want to order a pizza, you should call:', end=' ')
a = 0
for i in range(q):
	if l2[i] == y and a == 0:
		print(name[i], end='')
		a = 1
	elif l2[i] == y and a == 1:
		print(', ' + name[i], end='')
print('.')
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
a = 0
for i in range(q):
	if l3[i] == z and a == 0:
		print(name[i], end='')
		a = 1
	elif l3[i] == z and a == 1:
		print(', ' + name[i], end='')
print('.')


import re

def is_taxi_number(num):
	return len(set(num)) == 1

def is_pizza_number(num):
	for i in range(0, len(num) - 1):
		if num[i] <= num[i + 1]:
			return False
	return True

def identify_number(num):
	if is_taxi_number(num):
		return 'Taxi'
	elif is_pizza_number(num):
		return 'Pizza'
	return 'Girl'

def remove_dashes(num):
	line = re.sub('-', '', num)
	return line

def maximal_count(d, id, input_list):
	arr = d[id]
	if not arr:
		return input_list
	m = max(map(arr.count, arr))
	out = list(set((i for i in arr if arr.count(i) == m)))
	return [i for i in input_list if i in out]

def solve(d, input_list):
	taxi = maximal_count(d, 'Taxi', input_list)
	pizza = maximal_count(d, 'Pizza', input_list)
	girl = maximal_count(d, 'Girl', input_list)
	print('If you want to call a taxi, you should call:', ', '.join(taxi) + '.')
	print('If you want to order a pizza, you should call:', ', '.join(pizza) + '.')
	print('If you want to go to a cafe with a wonderful girl, you should call:', ', '.join(girl) + '.')
n = int(input())
d = {'Taxi': [], 'Pizza': [], 'Girl': []}
input_list = []
for i in range(n):
	(k, s) = input().split()
	input_list.append(s)
	for j in range(int(k)):
		num = input()
		num = remove_dashes(num)
		id = identify_number(num)
		d[id].append(s)
solve(d, input_list)


n = int(input())
(t, p, c) = [0, 0, 0]
T = ''
P = ''
C = ''
for i in range(n):
	(a, n) = input().split()
	(x, y, z) = [0, 0, 0]
	for j in range(int(a)):
		s = input()
		s = s.replace('-', '')
		if len(set(s)) == 1:
			x = x + 1
		else:
			f = 1
			for k in range(1, len(s)):
				if int(s[k]) >= int(s[k - 1]):
					f = 0
					break
			if f:
				y = y + 1
			else:
				z = z + 1
	if x == t:
		if T == '':
			T = n
		else:
			T = T + ', ' + n
	if y == p:
		if P == '':
			P = n
		else:
			P = P + ', ' + n
	if z == c:
		if C == '':
			C = n
		else:
			C = C + ', ' + n
	if x > t:
		t = x
		T = n
	if y > p:
		p = y
		P = n
	if z > c:
		c = z
		C = n
print('If you want to call a taxi, you should call: ' + T + '.')
print('If you want to order a pizza, you should call: ' + P + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + C + '.')


def g(t):
	if len(set(t)) == 2:
		return 0
	if t[0] > t[1] > t[3] > t[4] > t[6] > t[7]:
		return 1
	return 2
(q, f) = ([-1] * 3, [0] * 3)
s = ['If you want to call a taxi, you should call: ', 'If you want to order a pizza, you should call: ', 'If you want to go to a cafe with a wonderful girl, you should call: ']
for i in range(int(input())):
	(n, t) = input().split()
	p = [0] * 3
	for i in range(int(n)):
		p[g(input())] += 1
	for i in range(3):
		if p[i] == q[i]:
			f[i].append(t)
		elif p[i] > q[i]:
			q[i] = p[i]
			f[i] = [t]
for i in range(3):
	print(s[i] + ', '.join(f[i]) + '.')


n = int(input())
taxi = [0, 0]
pizza = [0, 0]
girls = [0, 0]
for i in range(n):
	(c, name) = list(map(str, input().split()))
	taxi_count = 0
	pizza_count = 0
	girls_count = 0
	for j in range(int(c)):
		number = input().split('-')
		a = list(''.join(number))
		if len(set(a)) == 1:
			taxi_count += 1
		else:
			broke = False
			for t in range(1, 6):
				if a[t - 1] <= a[t]:
					broke = True
					break
			if not broke:
				pizza_count += 1
			else:
				girls_count += 1
	if taxi_count >= taxi[-1]:
		if taxi_count == taxi[-1]:
			taxi.insert(-1, name)
		else:
			taxi = [name, taxi_count]
	if pizza_count >= pizza[-1]:
		if pizza_count == pizza[-1]:
			pizza.insert(-1, name)
		else:
			pizza = [name, pizza_count]
	if girls_count >= girls[-1]:
		if girls_count == girls[-1]:
			girls.insert(-1, name)
		else:
			girls = [name, girls_count]
print(f'If you want to call a taxi, you should call: ', end='')
for name in taxi[:-2]:
	if name:
		print(f'{name}, ', end='')
print(f'{taxi[-2]}.')
print(f'If you want to order a pizza, you should call: ', end='')
for name in pizza[:-2]:
	if name:
		print(f'{name}, ', end='')
print(f'{pizza[-2]}.')
print(f'If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for name in girls[:-2]:
	if name:
		print(f'{name}, ', end='')
print(f'{girls[-2]}.')


n = int(input())
taxi = [0]
pizza = [0]
girls = [0]
for i in range(n):
	(ps, s) = input().split()
	vals = [0, 0, 0]
	for j in range(int(ps)):
		number = input()
		if number[0] == number[1] == number[3] == number[4] == number[6] == number[7]:
			vals[0] += 1
		elif int(number[0]) > int(number[1]) > int(number[3]) > int(number[4]) > int(number[6]) > int(number[7]):
			vals[1] += 1
		else:
			vals[2] += 1
	if vals[0] > taxi[0]:
		taxi = [vals[0], s]
	elif vals[0] == taxi[0]:
		taxi.append(s)
	if vals[1] > pizza[0]:
		pizza = [vals[1], s]
	elif vals[1] == pizza[0]:
		pizza.append(s)
	if vals[2] > girls[0]:
		girls = [vals[2], s]
	elif vals[2] == girls[0]:
		girls.append(s)
print('If you want to call a taxi, you should call: ', end='')
for i in range(1, len(taxi) - 1):
	print(taxi[i], end=', ')
print(taxi[-1], end='.\n')
print('If you want to order a pizza, you should call: ', end='')
for i in range(1, len(pizza) - 1):
	print(pizza[i], end=', ')
print(pizza[-1], end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(1, len(girls) - 1):
	print(girls[i], end=', ')
print(girls[-1], end='.')


import os, sys, time, collections, math, pprint, itertools as it, operator as op, bisect as bs, functools as fn
(maxx, localsys, mod) = (1 << 60, 0, int(1000000000.0 + 7))
nCr = lambda n, r: reduce(mul, range(n - r + 1, n + 1), 1) // factorial(r)
ceil = lambda n, x: (n + x - 1) // x
(osi, oso) = ('/home/priyanshu/Documents/cp/input.txt', '/home/priyanshu/Documents/cp/output.txt')
if os.path.exists(osi):
	sys.stdin = open(osi, 'r')
	sys.stdout = open(oso, 'w')
input = sys.stdin.readline
from functools import reduce

def maps():
	return map(int, input().split())

def A():
	for _ in range(int(input())):
		(n, k) = maps()
		S = '0' * k + input().rstrip('\n') + '0' * k
		su = sum((max(0, (len(s) - k) // (k + 1)) for s in S.split('1')))
		print(su)

def B():
	for _ in range(int(input())):
		n = int(input())
		a = list(maps())
		ans = []
		for i in range(n):
			if i == 0 or i == n - 1 or (a[i - 1] < a[i]) != (a[i] < a[i + 1]):
				ans.append(a[i])
		print(len(ans))
		print(*ans)

def C():
	for _ in range(int(input())):
		(n, x) = maps()
		a = list(maps())
		e = o = 0
		for i in a:
			(e, o) = (e, o + 1) if i % 2 else (e + 1, o)
		if o == 0:
			print('No')
			continue
		print('Yes') if x % 2 and (o % 2 or (o % 2 == 0 and o - 1 >= x)) else print('No') if e == 0 else (print('Yes') if e % 2 and e + (o - (1 if o % 2 == 0 else 0)) >= x or o >= x else print('Yes') if e + (o - (0 if o % 2 else 1)) >= x or e - 1 + o >= x else print('No')) if x % 2 else print('Yes') if e % 2 and o % 2 or (o % 2 == 0 and o + (e - (1 if e % 2 == 0 else 0)) >= x) or (e % 2 == 0 and e + (o - (1 if o % 2 == 0 else 0)) >= x) else print('No')

def D():
	d = collections.defaultdict(lambda : [0] * 3)
	for _ in range(int(input())):
		(n, name) = input().rstrip('\n').split()
		d[name]
		for __ in range(int(n)):
			t = [int(x) for line in input().rstrip().split('-') for x in line]
			if len(set(t)) == 1:
				d[name][0] += 1
			elif sorted(t, reverse=True) == t and len(set(t)) == 6:
				d[name][1] += 1
			else:
				d[name][2] += 1
	(idx, arr) = (0, ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:'])
	for i in range(3):
		(ans, N) = (-1, [])
		for j in d:
			ans = max(ans, d[j][idx])
		for j in d:
			if d[j][idx] == ans:
				N.append(j + ',')
		x = N.pop().split()
		N.append(x[0][:len(x[0]) - 1] + '.')
		print(arr[idx], *N)
		idx += 1
D()


n = int(input())
a = []
for i in range(n):
	s = input().split()
	a.append([s[1], 0, 0, 0])
	for j in range(int(s[0])):
		(z1, z2, z3) = map(int, input().split('-'))
		if z1 // 10 == z1 % 10 == z2 // 10 == z2 % 10 == z3 // 10 == z3 % 10:
			a[i][1] += 1
		elif z1 // 10 > z1 % 10 > z2 // 10 > z2 % 10 > z3 // 10 > z3 % 10:
			a[i][2] += 1
		else:
			a[i][3] += 1
(a1, a2, a3, k1, k2, k3) = ('', '', '', 0, 0, 0)
for i in range(n):
	if k1 < a[i][1]:
		(a1, k1) = (a[i][0], a[i][1])
	elif k1 == a[i][1]:
		a1 += ', ' + a[i][0]
	if k2 < a[i][2]:
		(a2, k2) = (a[i][0], a[i][2])
	elif k2 == a[i][2]:
		a2 += ', ' + a[i][0]
	if k3 < a[i][3]:
		(a3, k3) = (a[i][0], a[i][3])
	elif k3 == a[i][3]:
		a3 += ', ' + a[i][0]
if a1[0] == ',':
	a1 = a1[2:]
if a2[0] == ',':
	a2 = a2[2:]
if a3[0] == ',':
	a3 = a3[2:]
print('If you want to call a taxi, you should call: ' + a1 + '.')
print('If you want to order a pizza, you should call: ' + a2 + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + a3 + '.')


def main():
	from sys import stdin, stdout
	import collections
	names = collections.defaultdict(list)
	counter = 0
	order = {}
	for i in range(int(stdin.readline())):
		(n, ns) = stdin.readline().split()
		names[ns] = [0, 0, 0]
		order[ns] = counter
		counter += 1
		n = int(n)
		while n:
			ip = stdin.readline().strip()
			ip = ip.replace('-', '')
			flag = True
			for i in range(1, 6):
				if ip[i] != ip[0]:
					flag = False
					break
			if flag:
				names[ns][0] += 1
				n -= 1
				continue
			flag = True
			for i in range(1, 6):
				if int(ip[i]) >= int(ip[i - 1]):
					flag = False
					break
			if flag:
				names[ns][1] += 1
			else:
				names[ns][2] += 1
			n -= 1
	t = -1
	p = -1
	g = -1
	for i in names:
		t = max(t, names[i][0])
		p = max(p, names[i][1])
		g = max(g, names[i][2])
	taxi = list(filter(lambda x: names[x][0] == t, names.keys()))
	pizza = list(filter(lambda x: names[x][1] == p, names.keys()))
	girls = list(filter(lambda x: names[x][2] == g, names.keys()))
	pizza.sort(key=lambda x: order[x])
	taxi.sort(key=lambda x: order[x])
	girls.sort(key=lambda x: order[x])
	print('If you want to call a taxi, you should call:', ', '.join((x for x in taxi)), end='.\n')
	print('If you want to order a pizza, you should call:', ', '.join((x for x in pizza)), end='.\n')
	print('If you want to go to a cafe with a wonderful girl, you should call:', ', '.join((x for x in girls)), end='.\n')
main()


def mi():
	return map(int, input().split())
f = int(input())
name = [0] * f
girl = name.copy()
taxi = name.copy()
pizza = name.copy()
for i in range(f):
	(n, name[i]) = input().split()
	n = int(n)
	for __ in range(n):
		no = input()
		s = [no[0], no[1], no[3], no[4], no[6], no[7]]
		if len(set(s)) == 6 and s == sorted(s, reverse=True):
			pizza[i] += 1
		elif len(set(s)) == 1:
			taxi[i] += 1
		else:
			girl[i] += 1
mg = max(girl)
mp = max(pizza)
mt = max(taxi)
print('If you want to call a taxi, you should call: ', end='')
ct = taxi.count(mt)
k = 0
for i in range(f):
	if taxi[i] == mt:
		print(name[i], end='')
		k += 1
		if k == ct:
			print('.')
		else:
			print(', ', end='')
print('If you want to order a pizza, you should call: ', end='')
cp = pizza.count(mp)
k = 0
for i in range(f):
	if pizza[i] == mp:
		print(name[i], end='')
		k += 1
		if k == cp:
			print('.')
		else:
			print(', ', end='')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
cg = girl.count(mg)
k = 0
for i in range(f):
	if girl[i] == mg:
		print(name[i], end='')
		k += 1
		if k == cg:
			print('.')
		else:
			print(', ', end='')


n = int(input())
l1 = []
l2 = [0] * n
(tx, pz, girls) = ([0] * n, [0] * n, [0] * n)
for i in range(n):
	l1.append(input().split())
	l2[i] = []
	for j in range(int(l1[i][0])):
		l2[i].append(input().replace('-', ''))
		p = 1
		for _ in range(1, 6):
			if l2[i][j][_] >= l2[i][j][_ - 1]:
				p = 0
				break
		if p:
			pz[i] += 1
		elif l2[i][j].count(l2[i][j][0]) == 6:
			tx[i] += 1
		else:
			girls[i] += 1
(t, p, g) = (max(tx), max(pz), max(girls))
(at, ap, ag) = ('', '', '')
for i in range(n):
	if tx[i] == t:
		at += l1[i][1] + ', '
	if pz[i] == p:
		ap += l1[i][1] + ', '
	if girls[i] == g:
		ag += l1[i][1] + ', '
at = at[:-2]
ap = ap[:-2]
ag = ag[:-2]
print('If you want to call a taxi, you should call: ' + at + '.')
print('If you want to order a pizza, you should call: ' + ap + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ag + '.')


t = int(input())
b = []
c = []
d = []
count4 = 0
count5 = 0
count6 = 0
for _ in range(0, t):
	(n, m) = map(str, input().split())
	n = int(n)
	count1 = 0
	count2 = 0
	count3 = 0
	for i in range(0, n):
		a = input()
		a = list(a)
		a.pop(2)
		a.pop(4)
		a = ''.join(map(str, a))
		p = a[0]
		z = a.count(p)
		if z == 6:
			count1 += 1
		else:
			p = 0
			for i in range(0, len(a) - 1):
				if ord(a[i]) > ord(a[i + 1]):
					pass
				else:
					p = 1
					break
			if p == 0:
				count2 += 1
			else:
				count3 += 1
	if count4 == count1:
		b.append(m)
	elif count1 > count4:
		count4 = count1
		b = []
		b.append(m)
	if count5 == count2:
		c.append(m)
	elif count2 > count5:
		count5 = count2
		c = []
		c.append(m)
	if count6 == count3:
		d.append(m)
	elif count3 > count6:
		count6 = count3
		d = []
		d.append(m)
print('If you want to call a taxi, you should call: ', end='')
for i in range(0, len(b) - 1):
	print(b[i], end=', ')
print(b[len(b) - 1], end='.')
print()
print('If you want to order a pizza, you should call: ', end='')
for i in range(0, len(c) - 1):
	print(c[i], end=', ')
print(c[len(c) - 1], end='.')
print()
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(0, len(d) - 1):
	print(d[i], end=', ')
print(d[len(d) - 1], end='.')
print()


import operator

def taxi(p):
	return len(set(p)) == 1

def pizza(p):
	return all([p[i] < p[i - 1] for i in range(1, len(p))])
phones = {}
for _ in range(int(input())):
	(n, name) = input().split()
	phones[name] = [0, 0, 0]
	for __ in range(int(n)):
		phone = ''.join(input().split('-'))
		if taxi(phone):
			phones[name][0] += 1
		elif pizza(phone):
			phones[name][1] += 1
		else:
			phones[name][2] += 1
ans_str = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
max_ = [max(phones.values(), key=operator.itemgetter(i))[i] for i in range(3)]
for i in range(3):
	print(ans_str[i], ', '.join([name for name in phones.keys() if phones[name][i] == max_[i]]) + '.')


import sys
import os.path
import math
import heapq
from sys import stdin, stdout
from collections import *
from math import gcd, ceil, floor
mod = int(1000000000.0 + 7)
if os.path.exists('Updated prg/Input3d.txt'):
	sys.stdout = open('Updated prg/Output3d.txt', 'w')
	sys.stdin = open('Updated prg/Input3d.txt', 'r')

def sinp():
	return input()

def ninp():
	return int(sinp())

def mapinp():
	return map(int, sinp().split())

def linp():
	return list(mapinp())

def sl():
	return list(sinp())

def prnt(a):
	print(a)
t1 = dict()
t2 = dict()
t3 = dict()
for _ in range(ninp()):
	(s1, s2) = sinp().split()
	t1[s2] = 0
	t2[s2] = 0
	t3[s2] = 0
	s1 = int(s1)
	for _ in range(s1):
		n = input()
		n = n.replace('-', '')
		if len(set(n)) == 1:
			t1[s2] = t1[s2] + 1
		elif all((i > j for (i, j) in zip(n, n[1:]))):
			t2[s2] = t2[s2] + 1
		else:
			t3[s2] = t3[s2] + 1
print('If you want to call a taxi, you should call: {}.'.format(', '.join((name for (name, count) in t1.items() if count == max(t1.values())))))
print('If you want to order a pizza, you should call: {}.'.format(', '.join((name for (name, count) in t2.items() if count == max(t2.values())))))
print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join((name for (name, count) in t3.items() if count == max(t3.values())))))


class CodeforcesTask151BSolution:

	def __init__(self):
		self.result = ''
		self.n = 0
		self.friends = []
		self.books = []

	def read_input(self):
		self.n = int(input())
		for x in range(self.n):
			self.friends.append(input().split(' '))
			self.books.append([])
			for y in range(int(self.friends[-1][0])):
				self.books[-1].append([int(x) for x in ''.join(input().split('-'))])

	def process_task(self):
		taxiars = []
		pizzaman = []
		cafes = []
		for x in range(self.n):
			for y in range(int(self.friends[x][0])):
				if self.books[x][y].count(self.books[x][y][0]) == 6:
					taxiars.append(self.friends[x][1])
				elif self.books[x][y] == sorted(self.books[x][y], reverse=True) and sum([self.books[x][y].count(z) ** 2 for z in self.books[x][y]]) == 6:
					pizzaman.append(self.friends[x][1])
				else:
					cafes.append(self.friends[x][1])
		names = [x[1] for x in self.friends]
		taxi_chosen = []
		max_taxi = 0
		for taxi in list(set(taxiars)):
			cnt = taxiars.count(taxi)
			max_taxi = max(max_taxi, cnt)
		for taxi in names:
			cnt = taxiars.count(taxi)
			if cnt == max_taxi:
				taxi_chosen.append(taxi)
		pizza_chosen = []
		max_pizza = 0
		for pizza in list(set(pizzaman)):
			cnt = pizzaman.count(pizza)
			max_pizza = max(max_pizza, cnt)
		for pizza in names:
			cnt = pizzaman.count(pizza)
			if cnt == max_pizza:
				pizza_chosen.append(pizza)
		cafe_chosen = []
		max_cafe = 0
		for cafe in list(set(cafes)):
			cnt = cafes.count(cafe)
			max_cafe = max(max_cafe, cnt)
		for cafe in names:
			cnt = cafes.count(cafe)
			if cnt == max_cafe:
				cafe_chosen.append(cafe)
		self.result = 'If you want to call a taxi, you should call: {0}.\n'.format(', '.join(taxi_chosen))
		self.result += 'If you want to order a pizza, you should call: {0}.\n'.format(', '.join(pizza_chosen))
		self.result += 'If you want to go to a cafe with a wonderful girl, you should call: {0}.'.format(', '.join(cafe_chosen))

	def get_result(self):
		return self.result
Solution = CodeforcesTask151BSolution()
Solution.read_input()
Solution.process_task()
print(Solution.get_result())


t = int(input())
taxi = []
girl = []
pizz = []
j = 10000
for _ in range(t):
	(n, name) = map(str, input().split())
	n = int(n)
	tax = piz = gir = 0
	for i in range(n):
		s = ''.join(map(str, input().split('-')))
		if s.count(s[0]) == 6:
			tax += 1
		else:
			c = 1
			for i in range(1, 6):
				if s[i - 1] <= s[i]:
					c = 0
					break
			if c:
				piz += 1
			else:
				gir += 1
	taxi.append([tax, j, name])
	pizz.append([piz, j, name])
	girl.append([gir, j, name])
	j -= 1
taxi.append([-1, -1, -1])
pizz.append([-1, -1, -1])
girl.append([-1, -1, -1])
taxi.sort(reverse=True)
pizz.sort(reverse=True)
girl.sort(reverse=True)
print('If you want to call a taxi, you should call: ', end='')
for i in range(len(taxi)):
	if taxi[0][0] == taxi[i][0]:
		if taxi[i + 1][0] != taxi[0][0]:
			print(taxi[i][2] + '.')
		else:
			print(taxi[i][2] + ',', end=' ')
print('If you want to order a pizza, you should call: ', end='')
for i in range(len(pizz)):
	if pizz[0][0] == pizz[i][0]:
		if pizz[i + 1][0] != pizz[0][0]:
			print(pizz[i][2] + '.')
		else:
			print(pizz[i][2] + ',', end=' ')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(len(girl)):
	if girl[0][0] == girl[i][0]:
		if girl[i + 1][0] != girl[0][0]:
			print(girl[i][2] + '.')
		else:
			print(girl[i][2] + ',', end=' ')


from __future__ import division, print_function
from sys import stdin, stdout
import itertools, os, sys, threading
from collections import deque, Counter, OrderedDict, defaultdict
import heapq
from math import ceil, floor, log, sqrt, factorial, pow, pi, gcd

def ii():
	return int(input())

def si():
	return str(input())

def mi():
	return map(int, input().split())

def li():
	return list(mi())

def fii():
	return int(stdin.readline())

def fsi():
	return str(stdin.readline())

def fmi():
	return map(int, stdin.readline().split())

def fli():
	return list(fmi())
abc = 'abcdefghijklmnopqrstuvwxyz'
abd = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}
mod = 1000000007
(dx, dy) = ([-1, 1, 0, 0], [0, 0, 1, -1])

def getKey(item):
	return item[0]

def sort2(l):
	return sorted(l, key=getKey)

def d2(n, m, num):
	return [[num for x in range(m)] for y in range(n)]

def isPowerOfTwo(x):
	return x and (not x & x - 1)

def decimalToBinary(n):
	return bin(n).replace('0b', '')

def ntl(n):
	return [int(i) for i in str(n)]

def powerMod(x, y, p):
	res = 1
	x %= p
	while y > 0:
		if y & 1:
			res = res * x % p
		y = y >> 1
		x = x * x % p
	return res

def gcd(x, y):
	while y:
		(x, y) = (y, x % y)
	return x
graph = defaultdict(list)
visited = [0] * 1000000
col = [-1] * 1000000

def dfs(v, c):
	if visited[v]:
		if col[v] != c:
			print('-1')
			exit()
		return
	col[v] = c
	visited[v] = 1
	for i in graph[v]:
		dfs(i, c ^ 1)

def bfs(d, v):
	q = []
	q.append(v)
	visited[v] = 1
	while len(q) != 0:
		x = q[0]
		q.pop(0)
		for i in d[x]:
			if visited[i] != 1:
				visited[i] = 1
				q.append(i)
		print(x)

def make_graph(e):
	d = {}
	for i in range(e):
		(x, y) = mi()
		if x not in d.keys():
			d[x] = [y]
		else:
			d[x].append(y)
		if y not in d.keys():
			d[y] = [x]
		else:
			d[y].append(x)
	return d

def gr2(n):
	d = {}
	for i in range(n):
		(x, y) = mi()
		if x not in d.keys():
			d[x] = [y]
		else:
			d[x].append(y)
	return d

def connected_components(graph):
	seen = set()

	def dfs(v):
		vs = set([v])
		component = []
		while vs:
			v = vs.pop()
			seen.add(v)
			vs |= set(graph[v]) - seen
			component.append(v)
		return component
	ans = []
	for v in graph:
		if v not in seen:
			d = dfs(v)
			ans.append(d)
	return ans

def primeFactors(n):
	s = set()
	while n % 2 == 0:
		s.add(2)
		n = n // 2
	for i in range(3, int(sqrt(n)) + 1, 2):
		while n % i == 0:
			s.add(i)
			n = n // i
	if n > 2:
		s.add(n)
	return s
n = ii()
l = []
for i in range(n):
	l.append([0] * 3)
name = []
for i in range(n):
	(x, s) = input().split(' ')
	x = int(x)
	name.append(s)
	for j in range(x):
		c = 0
		f = 0
		z = list(''.join(input().split('-')))
		for k in range(5):
			if z[k] == z[k + 1]:
				c += 1
		if c == 5:
			l[i][0] += 1
			f = 1
		c = 0
		for k in range(5):
			if int(z[k]) > int(z[k + 1]):
				c += 1
		if c == 5 and f == 0:
			l[i][1] += 1
			f = 1
		elif f == 0:
			l[i][2] += 1
m1 = 0
m2 = 0
m3 = 0
taxi = []
pizza = []
girls = []
(t, p, g) = ([], [], [])
for i in range(n):
	taxi.append(l[i][0])
	pizza.append(l[i][1])
	girls.append(l[i][2])
(x, y, z) = (max(taxi), max(pizza), max(girls))
for i in range(n):
	if taxi[i] == x:
		t.append(name[i])
	if pizza[i] == y:
		p.append(name[i])
	if girls[i] == z:
		g.append(name[i])
print('If you want to call a taxi, you should call: ' + ', '.join(t) + '.')
print('If you want to order a pizza, you should call: ' + ', '.join(p) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(g) + '.')


dict1 = {}
for _ in range(int(input())):
	(n, ss) = input().split()
	a = 0
	b = 0
	c = 0
	for i in range(int(n)):
		s = input()
		s = s.replace('-', '')
		x = s[0]
		cc = s.count(x)
		if cc == 6:
			a += 1
		else:
			f = 0
			set1 = set(s)
			for i in range(len(s) - 1):
				if not int(s[i]) > int(s[i + 1]):
					f = 1
			if f == 0 and len(set1) == 6:
				b += 1
			else:
				c += 1
	dict1[ss] = (a, b, c)
l1 = []
l2 = []
l3 = []
m1 = 0
m2 = 0
m3 = 0
for i in dict1:
	x = dict1[i]
	if x[0] > m1:
		m1 = x[0]
	if x[1] > m2:
		m2 = x[1]
	if x[2] > m3:
		m3 = x[2]
for i in dict1:
	x = dict1[i]
	if x[0] == m1:
		l1.append(i)
	if x[1] == m2:
		l2.append(i)
	if x[2] == m3:
		l3.append(i)
print('If you want to call a taxi, you should call:', end='')
for i in range(len(l1) - 1):
	print(' ' + l1[i] + ',', end='')
print(' ' + l1[-1] + '.')
print('If you want to order a pizza, you should call:', end='')
for i in range(len(l2) - 1):
	print(' ' + l2[i] + ',', end='')
print(' ' + l2[-1] + '.')
print('If you want to go to a cafe with a wonderful girl, you should call:', end='')
for i in range(len(l3) - 1):
	print(' ' + l3[i] + ',', end='')
print(' ' + l3[-1] + '.')


names = {}
n = int(input())
for book in range(n):
	(s, name) = map(str, input().split())
	taxi = pizza = cafe = 0
	for i in range(int(s)):
		number = input().replace('-', '')
		if number == number[0] * 6:
			taxi += 1
		elif len(set(number)) == 6:
			for j in range(1, len(number)):
				if int(number[j]) >= int(number[j - 1]):
					cafe += 1
					break
			else:
				pizza += 1
		else:
			cafe += 1
	names[name] = {'taxi': taxi, 'pizza': pizza, 'cafe': cafe}
(taxi_guys, pizza_guys, cafe_guys) = ([], [], [])
max_taxi = max_pizza = max_cafe = 0
for name in names:
	max_taxi = max(names[name]['taxi'], max_taxi)
	max_pizza = max(names[name]['pizza'], max_pizza)
	max_cafe = max(names[name]['cafe'], max_cafe)
for name in names:
	if names[name]['taxi'] == max_taxi:
		taxi_guys.append(name)
	if names[name]['pizza'] == max_pizza:
		pizza_guys.append(name)
	if names[name]['cafe'] == max_cafe:
		cafe_guys.append(name)
print(f"If you want to call a taxi, you should call: {', '.join(taxi_guys)}.")
print(f"If you want to order a pizza, you should call: {', '.join(pizza_guys)}.")
print(f"If you want to go to a cafe with a wonderful girl, you should call: {', '.join(cafe_guys)}.")


n = int(input())
fin = {}
maxTaxi = 0
maxPizza = 0
maxGirl = 0
for i in range(n):
	s = input().split(' ')
	nbr = int(s[0])
	name = s[1]
	taxi = 0
	girl = 0
	pizza = 0
	for j in range(nbr):
		seq = input().split('-')
		seq1 = []
		for elt in seq:
			seq1.append(int(elt[0]))
			seq1.append(int(elt[1]))
		if seq1[0] == seq1[1] and seq1[1] == seq1[2] and (seq1[2] == seq1[3]) and (seq1[3] == seq1[4]) and (seq1[4] == seq1[5]):
			taxi += 1
		elif seq1[0] > seq1[1] and seq1[1] > seq1[2] and (seq1[2] > seq1[3]) and (seq1[3] > seq1[4]) and (seq1[4] > seq1[5]):
			pizza += 1
		else:
			girl += 1
	if maxTaxi < taxi:
		maxTaxi = taxi
	if maxPizza < pizza:
		maxPizza = pizza
	if maxGirl < girl:
		maxGirl = girl
	fin[name] = [taxi, pizza, girl]
i = 0
print('If you want to call a taxi, you should call: ', end='')
for (key, elt) in fin.items():
	if elt[0] == maxTaxi:
		if i > 0:
			print(', ', end='')
		print(key, end='')
		i += 1
print('.')
i = 0
print('If you want to order a pizza, you should call: ', end='')
for (key, elt) in fin.items():
	if elt[1] == maxPizza:
		if i > 0:
			print(', ', end='')
		print(key, end='')
		i += 1
print('.')
i = 0
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for (key, elt) in fin.items():
	if elt[2] == maxGirl:
		if i > 0:
			print(', ', end='')
		print(key, end='')
		i += 1
print('.')


n = int(input())
arr = []
for x in range(n):
	(t, name) = input().split()
	t = int(t)
	arr.append([name, 0, 0, 0])
	for i in range(t):
		number = input().replace('-', '')
		if number.count(number[0]) == 6:
			arr[x][1] += 1
		elif all((a > b for (a, b) in zip(number, number[1:]))):
			arr[x][2] += 1
		else:
			arr[x][3] += 1
txt = ['If you want to call a taxi, you should call:', 'If you want to order a pizza, you should call:', 'If you want to go to a cafe with a wonderful girl, you should call:']
for (j, k) in enumerate(txt, start=1):
	m = max((r[j] for r in arr))
	print(k, ', '.join((r[0] for r in arr if r[j] == m)) + '.')


ans1 = 'If you want to call a taxi, you should call:'
ans2 = 'If you want to order a pizza, you should call:'
ans3 = 'If you want to go to a cafe with a wonderful girl, you should call:'

def tonum(x):
	return ord(x) - ord('0')

def Mymax(A, k):
	m = A[0][k]
	for i in range(len(A)):
		if A[i][k] > m:
			m = A[i][k]
	return m
n = int(input())
L = []
NG = []
NP = []
NT = []
(g, p, t) = (0, 0, 0)
for i in range(n):
	(s, name) = input().split()
	s = int(s)
	for i in range(s):
		str1 = str(input())
		ln = list(map(tonum, [str1[0], str1[1], str1[3], str1[4], str1[6], str1[7]]))
		if ln.count(ln[0]) == len(ln):
			t += 1
		elif ln[0] > ln[1] > ln[2] > ln[3] > ln[4] > ln[5]:
			p += 1
		else:
			g += 1
	L.append([name, g, p, t])
	(g, p, t) = (0, 0, 0)
m1 = Mymax(L, 1)
m2 = Mymax(L, 2)
m3 = Mymax(L, 3)
for i in L:
	if i[1] == m1:
		NG.append(i[0])
	if i[2] == m2:
		NP.append(i[0])
	if i[3] == m3:
		NT.append(i[0])
print(ans1 + ' ' + ', '.join(NT) + '.')
print(ans2 + ' ' + ', '.join(NP) + '.')
print(ans3 + ' ' + ', '.join(NG) + '.')


n = int(input())
taxiarray = []
pizzaarray = []
randiarray = []
ppl = []
for i in range(n):
	(m, name) = input().split()
	m = int(m)
	randi = taxi = pizza = 0
	for j in range(m):
		phno = list(input())
		phno.remove('-')
		phno.remove('-')
		temp = set(phno)
		if len(temp) == 1:
			taxi += 1
		else:
			flag = 1
			for k in range(len(phno) - 1):
				if phno[k] <= phno[k + 1]:
					flag = 0
					break
			if flag == 1:
				pizza += 1
			else:
				randi += 1
	taxiarray.append(taxi)
	pizzaarray.append(pizza)
	randiarray.append(randi)
	ppl.append(name)
mtaxi = max(taxiarray)
mpizza = max(pizzaarray)
mrandi = max(randiarray)
twala = []
pwala = []
rwala = []
for i in range(n):
	if taxiarray[i] == mtaxi:
		twala.append(ppl[i])
	if pizzaarray[i] == mpizza:
		pwala.append(ppl[i])
	if randiarray[i] == mrandi:
		rwala.append(ppl[i])
line1 = 'If you want to call a taxi, you should call: ' + twala[0]
for i in range(1, len(twala)):
	line1 = line1 + ', ' + twala[i]
line1 = line1 + '.'
line2 = 'If you want to order a pizza, you should call: ' + pwala[0]
for i in range(1, len(pwala)):
	line2 = line2 + ', ' + pwala[i]
line2 = line2 + '.'
line3 = 'If you want to go to a cafe with a wonderful girl, you should call: ' + rwala[0]
for i in range(1, len(rwala)):
	line3 = line3 + ', ' + rwala[i]
line3 = line3 + '.'
print(line1)
print(line2)
print(line3)


listname = []
(la, lb, lc) = ([], [], [])
for _ in range(int(input())):
	(a, b, c) = (0, 0, 0)
	(x, y) = input().split()
	listname.append(y)
	for z in range(int(x)):
		s = ''.join(input().split('-'))
		bo = 1
		for i in range(5):
			if s[i] <= s[i + 1]:
				bo = 0
		if s[0] * 6 == s:
			a += 1
		else:
			b += bo
			c += 1 - bo
	(la.append(a), lb.append(b), lc.append(c))
(x, y, z) = (max(la), max(lb), max(lc))
(listname1, listname2, listname3) = ([], [], [])
for i in range(len(listname)):
	if la[i] == x:
		listname1.append(listname[i])
	if lb[i] == y:
		listname2.append(listname[i])
	if lc[i] == z:
		listname3.append(listname[i])
print('If you want to call a taxi, you should call: ' + ', '.join(listname1) + '.')
print('If you want to order a pizza, you should call: ' + ', '.join(listname2) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(listname3) + '.')


def main():
	(n, l) = (int(input()), [])
	for _ in range(n):
		(s, name) = input().split()
		row = [0, 0, 0, name]
		l.append(row)
		for _ in range(int(s)):
			(a, *bc) = filter(str.isdigit, input())
			if all((c == a for c in bc)):
				row[0] += 1
			else:
				for c in bc:
					if a <= c:
						break
					a = c
				else:
					row[1] += 1
					continue
				row[2] += 1
	for (i, s) in enumerate(('call a taxi', 'order a pizza', 'go to a cafe with a wonderful girl')):
		best = max((row[i] for row in l))
		print('If you want to %s, you should call: %s.' % (s, ', '.join((l[j][3] for j in range(n) if l[j][i] == best))))
main()


(d, t, p, g) = ({}, 0, 0, 0)
tn = 'If you want to call a taxi, you should call: '
pn = 'If you want to order a pizza, you should call: '
gn = 'If you want to go to a cafe with a wonderful girl, you should call: '

def conv(num: str):
	if len(set(num)) == 1:
		return 0
	elif any((num[i] >= num[i - 1] for i in range(1, len(num)))):
		return 2
	return 1
for _ in range(int(input())):
	(book, name) = input().split()
	d[name] = [0] * 3
	for _ in range(int(book)):
		d[name][conv(''.join(input().split('-')))] += 1
		(t, p, g) = (max(t, d[name][0]), max(p, d[name][1]), max(g, d[name][2]))
temp = []
for k in d:
	if d[k][0] == t:
		temp.append(k)
print(tn + ', '.join(temp) + '.')
temp.clear()
for k in d:
	if d[k][1] == p:
		temp.append(k)
print(pn + ', '.join(temp) + '.')
temp.clear()
for k in d:
	if d[k][2] == g:
		temp.append(k)
print(gn + ', '.join(temp) + '.')
temp.clear()


n = int(input())
all = {}
(p1, g1, t1) = ([], [], [])
for i in range(n):
	(a, b) = input().split()
	a = int(a)
	(p, g, t) = (0, 0, 0)
	for j in range(a):
		nu = input()
		if nu[0] == nu[1] and nu[1] == nu[3] and (nu[3] == nu[4]) and (nu[4] == nu[6]) and (nu[6] == nu[7]):
			t += 1
		elif nu[0] > nu[1] and nu[1] > nu[3] and (nu[3] > nu[4]) and (nu[4] > nu[6]) and (nu[6] > nu[7]):
			p += 1
		else:
			g += 1
	p1.append(p)
	g1.append(g)
	t1.append(t)
	all[b] = {'p': p, 'g': g, 't': t}
(p, g, t) = (max(p1), max(g1), max(t1))
(p1, g1, t1) = ([], [], [])
for (i, j) in all.items():
	if j['p'] == p:
		p1.append(i)
	if j['g'] == g:
		g1.append(i)
	if j['t'] == t:
		t1.append(i)
print('If you want to call a taxi, you should call:', ', '.join(t1) + '.')
print('If you want to order a pizza, you should call:', ', '.join(p1) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call:', ', '.join(g1) + '.')


import re
n = int(input())
persons = []

def isSorted(arr):
	n = len(arr)
	if n == 0 or n == 1:
		return True
	for i in range(0, n - 1):
		if int(arr[i]) <= int(arr[i + 1]):
			return False
	return True
for i in range(0, n):
	p = input().split(' ')
	perPerson = int(p[0])
	person = p[1]
	girls = 0
	taxis = 0
	pizzas = 0
	for j in range(0, perPerson):
		phone = input()
		if re.match('(\\d)\\1-\\1\\1-\\1\\1', phone):
			taxis += 1
			continue
		phone = list(phone.replace('-', ''))
		if isSorted(phone):
			pizzas += 1
			continue
		girls += 1
	persons.append({'name': person, 'girls': girls, 'taxis': taxis, 'pizzas': pizzas, 'isSelected': False})
maxTaxis = []
maxTaxisNum = 0
for i in range(0, n):
	if persons[i]['taxis'] > maxTaxisNum:
		maxTaxis.clear()
		maxTaxis.append(persons[i]['name'])
		maxTaxisNum = persons[i]['taxis']
	elif persons[i]['taxis'] == maxTaxisNum:
		maxTaxis.append(persons[i]['name'])
print('If you want to call a taxi, you should call: ' + ', '.join(maxTaxis) + '.')
maxPizzas = []
maxPizzasNum = 0
for i in range(0, n):
	if persons[i]['pizzas'] > maxPizzasNum:
		maxPizzas.clear()
		maxPizzas.append(persons[i]['name'])
		maxPizzasNum = persons[i]['pizzas']
	elif persons[i]['pizzas'] == maxPizzasNum:
		maxPizzas.append(persons[i]['name'])
print('If you want to order a pizza, you should call: ' + ', '.join(maxPizzas) + '.')
maxGirls = []
maxGirlNum = 0
for i in range(0, n):
	if persons[i]['girls'] > maxGirlNum:
		maxGirls.clear()
		maxGirls.append(persons[i]['name'])
		maxGirlNum = persons[i]['girls']
	elif persons[i]['girls'] == maxGirlNum:
		maxGirls.append(persons[i]['name'])
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join(maxGirls) + '.')


names = [['', 0, 0, 0] for _ in range(110)]
max = 0
max2 = 0
max3 = 0
qu_taxi = ['If you want to call a taxi, you should call: ']
qu_pizza = ['If you want to order a pizza, you should call: ']
qu_girl = ['If you want to go to a cafe with a wonderful girl, you should call: ']

def checker(y):
	y = list(y)
	new = []
	for i in range(len(y)):
		if y[i] != '-':
			new.append(int(y[i]))
	if len(set(new)) == 1:
		return 0
	for i in range(len(new) - 1):
		if new[i] > new[i + 1]:
			continue
		else:
			return 2
	return 1

def printy(qu_list):
	print(qu_list[0], sep='', end='')
	for i in range(1, len(qu_list)):
		if i == len(qu_list) - 1:
			print(qu_list[i], '.', sep='', end='')
		else:
			print(qu_list[i], ', ', sep='', end='')
n = int(input())
for i in range(n):
	x = input().split()
	names[i][0] += x[1]
	for j in range(int(x[0])):
		y = input()
		value = checker(y)
		if value == 0:
			names[i][1] += 1
		elif value == 1:
			names[i][2] += 1
		else:
			names[i][3] += 1
for i in range(n):
	if names[i][1] > max:
		max = names[i][1]
	if names[i][2] > max2:
		max2 = names[i][2]
	if names[i][3] > max3:
		max3 = names[i][3]
for i in range(n):
	if names[i][1] == max:
		qu_taxi.append(names[i][0])
	if names[i][2] == max2:
		qu_pizza.append(names[i][0])
	if names[i][3] == max3:
		qu_girl.append(names[i][0])
printy(qu_taxi)
print()
printy(qu_pizza)
print()
printy(qu_girl)


n = int(input())
taxi = [0 for i in range(n)]
girl = [0 for i in range(n)]
pizza = [0 for i in range(n)]
name = [None for i in range(n)]
for i in range(n):
	(si, namei) = input().split()
	name[i] = namei
	for j in range(int(si)):
		number = input()
		if number[0] == number[1] and number[1] == number[3] and (number[3] == number[4]) and (number[4] == number[6]) and (number[6] == number[7]):
			taxi[i] += 1
		elif int(number[0]) > int(number[1]) and int(number[1]) > int(number[3]) and (int(number[3]) > int(number[4])) and (int(number[4]) > int(number[6])) and (int(number[6]) > int(number[7])):
			pizza[i] += 1
		else:
			girl[i] += 1
print('If you want to call a taxi, you should call:', end=' ')
x = [i for i in range(n) if taxi[i] == max(taxi)]
print(name[x[0]], end='')
for i in range(1, len(x)):
	print(',', name[x[i]], end='')
print('.')
print('If you want to order a pizza, you should call:', end=' ')
x = [i for i in range(n) if pizza[i] == max(pizza)]
print(name[x[0]], end='')
for i in range(1, len(x)):
	print(',', name[x[i]], end='')
print('.')
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
x = [i for i in range(n) if girl[i] == max(girl)]
print(name[x[0]], end='')
for i in range(1, len(x)):
	print(',', name[x[i]], end='')
print('.')


n = int(input())
names = []
arr = []
max1 = -1
max1i = 0
max2 = -1
max2i = 0
max3 = -1
max3i = 0
for i in range(n):
	(a, b) = input().split()
	names.append(b)
	arr.append([0, 0, 0])
	for j in range(int(a)):
		x = list(''.join(input().split('-')))
		if len(set(x)) == 1:
			arr[i][0] += 1
		elif x == sorted(x, reverse=True) and len(set(x)) == len(x):
			arr[i][1] += 1
		else:
			arr[i][2] += 1
for i in range(n):
	if arr[i][0] > max1:
		max1 = arr[i][0]
		max1i = names[i]
	if arr[i][1] > max2:
		max2 = arr[i][1]
		max2i = names[i]
	if arr[i][2] > max3:
		max3 = arr[i][2]
		max3i = names[i]
flag1 = False
flag2 = False
flag3 = False
for i in range(n):
	if arr[i][0] == max1:
		if flag1:
			max1i += ', ' + names[i]
		else:
			flag1 = True
	if arr[i][1] == max2:
		if flag2:
			max2i += ', ' + names[i]
		else:
			flag2 = True
	if arr[i][2] == max3:
		if flag3:
			max3i += ', ' + names[i]
		else:
			flag3 = True
print('If you want to call a taxi, you should call:', max1i, end='.\n')
print('If you want to order a pizza, you should call:', max2i, end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call:', max3i, end='.\n')


def ntype(text):
	text = list(text)
	text[2:3] = []
	text[4:5] = []
	ntext = [int(a) for a in text]
	if all((ntext[i] == ntext[i + 1] for i in range(5))):
		return 0
	elif all((ntext[i] > ntext[i + 1] for i in range(5))):
		return 1
	else:
		return 2
n = int(input())
c = [[0 for _ in range(3)] for _ in range(n)]
f = ['' for _ in range(n)]
mx = [0 for _ in range(3)]
for i in range(n):
	(m, f[i]) = input().split()
	for _ in range(int(m)):
		ty = ntype(input())
		c[i][ty] += 1
		if c[i][ty] > mx[ty]:
			mx[ty] = c[i][ty]
y = [[1 if c[i][j] == mx[j] else 0 for j in range(3)] for i in range(n)]
print('If you want to call a taxi, you should call:', ', '.join((f[i] for i in range(n) if y[i][0])) + '.')
print('If you want to order a pizza, you should call:', ', '.join((f[i] for i in range(n) if y[i][1])) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call:', ', '.join((f[i] for i in range(n) if y[i][2])) + '.')


def check_taxi(s):
	cprev = s[0]
	for c in s[1:]:
		if c == '-':
			continue
		if c != cprev:
			return False
	return True

def check_pizza(s):
	cprev = s[0]
	for c in s[1:]:
		if c == '-':
			continue
		if c >= cprev:
			return False
		cprev = c
	return True
t = int(input())
(op_t, op_p, op_g) = ('', '', '')
(pmax, tmax, gmax) = (-1, -1, -1)
for _ in range(t):
	(n, name) = input().split()
	n = int(n)
	num = {'p': 0, 't': 0, 'g': 0}
	for i in range(n):
		s = input()
		if check_taxi(s):
			num['t'] += 1
		elif check_pizza(s):
			num['p'] += 1
		else:
			num['g'] += 1
	if num['t'] > tmax:
		tmax = num['t']
		op_t = name
	elif num['t'] == tmax:
		op_t += ', ' + name
	if num['p'] > pmax:
		pmax = num['p']
		op_p = name
	elif num['p'] == pmax:
		op_p += ', ' + name
	if num['g'] > gmax:
		gmax = num['g']
		op_g = name
	elif num['g'] == gmax:
		op_g += ', ' + name
print('If you want to call a taxi, you should call: ' + op_t + '.')
print('If you want to order a pizza, you should call: ' + op_p + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + op_g + '.')


n = int(input())
taxi = {}
pizza = {}
girls = {}
for l in range(n):
	(m, name) = input().split()
	taxi[name] = 0
	pizza[name] = 0
	girls[name] = 0
	for o in range(int(m)):
		x = input()
		x = x.replace('-', '')
		c = 0
		v = x[0]
		for i in range(0, 6):
			if x[i] != v:
				c = 1
		if c == 0:
			taxi[name] += 1
			continue
		c = 0
		for i in range(1, 6):
			if x[i] >= x[i - 1]:
				c = 1
		if c == 0:
			pizza[name] += 1
			continue
		girls[name] += 1
c = 0
for i in taxi:
	if taxi[i] > c:
		c = taxi[i]
x = []
print('If you want to call a taxi, you should call:', end=' ')
for i in taxi:
	if c == taxi[i]:
		x.append(i)
s = ', '.join(x)
print(s + '.')
c = 0
for i in pizza:
	if pizza[i] > c:
		c = pizza[i]
x = []
print('If you want to order a pizza, you should call:', end=' ')
for i in pizza:
	if c == pizza[i]:
		x.append(i)
s = ', '.join(x)
print(s + '.')
c = 0
for i in girls:
	if girls[i] > c:
		c = girls[i]
x = []
print('If you want to go to a cafe with a wonderful girl, you should call:', end=' ')
for i in girls:
	if c == girls[i]:
		x.append(i)
s = ', '.join(x)
print(s + '.')


import sys
import time
import math
from collections import defaultdict
from functools import lru_cache
INF = 10 ** 18 + 3
EPS = 1e-10
MAX_CACHE = 10 ** 9

def time_it(function, output=sys.stderr):

	def wrapped(*args, **kwargs):
		start = time.time()
		res = function(*args, **kwargs)
		elapsed_time = time.time() - start
		print('"%s" took %f ms' % (function.__name__, elapsed_time * 1000), file=output)
		return res
	return wrapped

def is_descending(num):
	biggest = num[0]
	for digit in num[1:]:
		if digit >= biggest:
			return False
		biggest = digit
	return True

@time_it
def main():
	n = int(input())
	(for_taxi, for_pizza, for_girls) = ([], [], [])
	(max_taxi, max_pizza, max_girls) = (0, 0, 0)
	for _ in range(n):
		(s, name) = input().split()
		s = int(s)
		(curr_taxi, curr_pizza, curr_girls) = (0, 0, 0)
		for __ in range(s):
			num = input().replace('-', '')
			if num == num[0] * len(num):
				curr_taxi += 1
			elif is_descending(num):
				curr_pizza += 1
			else:
				curr_girls += 1
		if curr_taxi > max_taxi:
			for_taxi.clear()
			max_taxi = curr_taxi
		if curr_taxi == max_taxi:
			for_taxi.append(name)
		if curr_pizza > max_pizza:
			for_pizza.clear()
			max_pizza = curr_pizza
		if curr_pizza == max_pizza:
			for_pizza.append(name)
		if curr_girls > max_girls:
			for_girls.clear()
			max_girls = curr_girls
		if curr_girls == max_girls:
			for_girls.append(name)
	print('If you want to call a taxi, you should call: ', end='')
	print(*for_taxi, sep=', ', end='.\n')
	print('If you want to order a pizza, you should call: ', end='')
	print(*for_pizza, sep=', ', end='.\n')
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	print(*for_girls, sep=', ', end='.\n')

def set_input(file):
	global input
	input = lambda : file.readline().strip()

def set_output(file):
	global print
	local_print = print

	def print(*args, **kwargs):
		kwargs['file'] = kwargs.get('file', file)
		return local_print(*args, **kwargs)
set_input(open('input.txt', 'r') if 'MINE' in sys.argv else sys.stdin)
set_output(sys.stdout)
main()


import sys
n = int(input())
people = []
taxis = [0] * n
pizzas = [0] * n
girls = [0] * n
for i in range(n):
	s = input().split()
	people.append(s[1])
	for number in range(int(s[0])):
		num = input().split('-')
		if num[0][0] == num[0][1] and num[0] == num[1] == num[2]:
			taxis[i] += 1
		elif int(num[0][0]) > int(num[0][1]) > int(num[1][0]) > int(num[1][1]) > int(num[2][0]) > int(num[2][1]):
			pizzas[i] += 1
		else:
			girls[i] += 1
mx_t = max(taxis)
mx_p = max(pizzas)
mx_g = max(girls)
t = []
p = []
g = []
for i in range(n):
	if mx_t == taxis[i]:
		t.append(people[i])
	if mx_p == pizzas[i]:
		p.append(people[i])
	if mx_g == girls[i]:
		g.append(people[i])
sys.stdout.write('If you want to call a taxi, you should call: ')
for i in range(len(t)):
	sys.stdout.write(t[i] + (', ' if i != len(t) - 1 else '.\n'))
sys.stdout.write('If you want to order a pizza, you should call: ')
for i in range(len(p)):
	sys.stdout.write(p[i] + (', ' if i != len(p) - 1 else '.\n'))
sys.stdout.write('If you want to go to a cafe with a wonderful girl, you should call: ')
for i in range(len(g)):
	sys.stdout.write(g[i] + (', ' if i != len(g) - 1 else '.\n'))


import re
from collections import Counter

class Task:
	friends = []
	taxiFriend = []
	pizzaFriend = []
	girlFriend = []

	def getData(self):
		numberOfFriend = int(input())
		for i in range(0, numberOfFriend):
			(numberOfPhones, name) = input().split(' ')
			phones = []
			for j in range(0, int(numberOfPhones)):
				phones += [input()]
			self.friends += [[name, phones]]

	def solve(self):
		taxiMax = 0
		pizzaMax = 0
		girlMax = 0
		for friend in self.friends:
			taxiCounter = 0
			pizzaCounter = 0
			girlCounter = 0
			friendName = friend[0]
			phoneBook = friend[1]
			for phone in phoneBook:
				phone = phone.replace('-', '')
				isgirlNumber = True
				if re.match('(\\d)\\1{5}', phone):
					taxiCounter += 1
					isgirlNumber = False
				for i in range(1, len(phone)):
					if phone[i - 1] <= phone[i]:
						break
					if i == len(phone) - 1:
						pizzaCounter += 1
						isgirlNumber = False
				if isgirlNumber:
					girlCounter += 1
			if taxiCounter > taxiMax:
				taxiMax = taxiCounter
				self.taxiFriend = [friendName]
			elif taxiCounter == taxiMax:
				self.taxiFriend += [friendName]
			if pizzaCounter > pizzaMax:
				pizzaMax = pizzaCounter
				self.pizzaFriend = [friendName]
			elif pizzaCounter == pizzaMax:
				self.pizzaFriend += [friendName]
			if girlCounter > girlMax:
				girlMax = girlCounter
				self.girlFriend = [friendName]
			elif girlCounter == girlMax:
				self.girlFriend += [friendName]

	def printAnswer(self):
		print('If you want to call a taxi, you should call: ' + str(self.taxiFriend)[1:-1].replace("'", '') + '.')
		print('If you want to order a pizza, you should call: ' + str(self.pizzaFriend)[1:-1].replace("'", '') + '.')
		print('If you want to go to a cafe with a wonderful girl,' + ' you should call: ' + str(self.girlFriend)[1:-1].replace("'", '') + '.')
task = Task()
task.getData()
task.solve()
task.printAnswer()


import sys
import os
from io import IOBase, BytesIO
mod = 10 ** 9 + 7
pie = 3.1415926536

def modinv(n, p):
	return pow(n, p - 2, p)

def ncr(n, r, p):
	t = fact[n] * (ifact[r] * ifact[n - r] % p) % p
	return t

def ain():
	return list(map(int, sin().split()))

def sin():
	return input().strip()

def GCD(x, y):
	while y:
		(x, y) = (y, x % y)
	return x

def read2DIntArray(row, col):
	arr = []
	for i in range(0, row):
		temp = list(map(int, sin().split()))
		arr.append(temp)
	return arr

def read2DCharArray(row, col):
	arr = []
	for i in range(0, row):
		temp = str(sin())
		arr.append(temp)
	return arr

def smallestNumber(n):
	lst = list(str(n))
	lst.sort()
	tmp = ''
	for (i, n) in enumerate(lst):
		if n != '0':
			tmp = lst.pop(i)
			break
	return str(tmp) + ''.join(lst)

def main():
	n = int(sin())
	lst = []
	for i in range(0, n):
		(s, name) = sin().split()
		s = int(s)
		tmp = []
		for j in range(0, s):
			tmp.append(sin())
		lst.append([s, name, tmp])
	maxTaxi = -1
	maxPizza = -1
	maxGirls = -1
	freq = []
	for i in range(0, n):
		name = lst[i][1]
		nos = lst[i][2]
		taxi = 0
		pizza = 0
		girls = 0
		for no in nos:
			if no.count(no[0]) == 6:
				taxi += 1
			else:
				flag = 0
				no = no.replace('-', '')
				for j in range(0, len(no) - 1):
					if no[j + 1] >= no[j]:
						flag = 1
						break
				if flag == 0:
					pizza += 1
				else:
					girls += 1
		freq.append([taxi, pizza, girls])
		maxTaxi = max(maxTaxi, taxi)
		maxPizza = max(maxPizza, pizza)
		maxGirls = max(maxGirls, girls)
	resTaxi = []
	resPizza = []
	resGirls = []
	for i in range(0, n):
		if freq[i][0] == maxTaxi:
			resTaxi.append(lst[i][1])
		if freq[i][1] == maxPizza:
			resPizza.append(lst[i][1])
		if freq[i][2] == maxGirls:
			resGirls.append(lst[i][1])
	print('If you want to call a taxi, you should call: ', end='')
	print(*resTaxi, sep=', ', end='.')
	print('')
	print('If you want to order a pizza, you should call: ', end='')
	print(*resPizza, sep=', ', end='.')
	print('')
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	print(*resGirls, sep=', ', end='.')
py2 = round(0.5)
if py2:
	from future_builtins import ascii, filter, hex, map, oct, zip
	range = xrange
BUFSIZE = 8192

class FastIO(BytesIO):
	newlines = 0

	def __init__(self, file):
		self._file = file
		self._fd = file.fileno()
		self.writable = 'x' in file.mode or 'w' in file.mode
		self.write = super(FastIO, self).write if self.writable else None

	def _fill(self):
		s = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
		self.seek((self.tell(), self.seek(0, 2), super(FastIO, self).write(s))[0])
		return s

	def read(self):
		while self._fill():
			pass
		return super(FastIO, self).read()

	def readline(self):
		while self.newlines == 0:
			s = self._fill()
			self.newlines = s.count(b'\n') + (not s)
		self.newlines -= 1
		return super(FastIO, self).readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.getvalue())
			(self.truncate(0), self.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		if py2:
			self.write = self.buffer.write
			self.read = self.buffer.read
			self.readline = self.buffer.readline
		else:
			self.write = lambda s: self.buffer.write(s.encode('ascii'))
			self.read = lambda : self.buffer.read().decode('ascii')
			self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))

def input():
	return sys.stdin.readline().rstrip('\r\n')
main()


n = int(input())
r = []
y = [0, 0, 0]
for _ in [0] * n:
	(m, s) = input().split()
	m = int(m)
	x = [s, 0, 0, 0]
	while m:
		t = ''.join(input().split('-'))
		if len({*t}) < 2:
			x[1] += 1
		elif len({*t}) == 6 and sorted(t)[::-1] == [*t]:
			x[2] += 1
		else:
			x[3] += 1
		m -= 1
	r.append(x)
	y = [max(u, v) for (u, v) in zip(y, x[1:])]
print('If you want to call a taxi, you should call: ', end='')
print(*[u[0] for u in r if u[1] == y[0]], sep=', ', end='.\n')
print('If you want to order a pizza, you should call: ', end='')
print(*[u[0] for u in r if u[2] == y[1]], sep=', ', end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
print(*[u[0] for u in r if u[3] == y[2]], sep=', ', end='.\n')


import re
n = int(input())
m = [[0] * n, [0] * n, [0] * n]
name = []
for k in range(n):
	(q, s) = map(str, input().split())
	name.append(s)
	taxi = 0
	pizza = 0
	girl = 0
	l = []
	for _ in range(int(q)):
		num = input()
		l.append(num)
	for i in range(len(l)):
		actual = re.sub('[^0-9]', '', l[i])
		if len(set(list(actual))) == 1:
			m[0][k] += 1
		elif list(reversed(sorted([int(x) for x in actual]))) == [int(x) for x in actual] and len(set(list(actual))) == len(actual):
			m[1][k] += 1
		else:
			m[2][k] += 1
a = [' call a taxi, ', ' order a pizza, ', ' go to a cafe with a wonderful girl, ']
for i in range(3):
	st = 'If you want to' + a[i] + 'you should call: '
	for j in range(n):
		if m[i][j] == max(m[i]):
			st = st + name[j] + ', '
	st = st[:len(st) - 2]
	st = st + '.'
	print(st)


def number_type(num):
	if num[0] == num[1] == num[3] == num[4] == num[6] == num[7]:
		return 0
	elif num[0] > num[1] > num[3] > num[4] > num[6] > num[7]:
		return 1
	else:
		return 2
n = int(input())
D = {}
(maxTaxi, maxPizza, maxGirls) = (0, 0, 0)
(personsMaxTaxi, personsMaxPizza, personsMaxGirls) = ([], [], [])
for _ in range(n):
	(m, name) = input().split()
	D[name] = [0] * 3
	for i in range(int(m)):
		D[name][number_type(input())] += 1
		if D[name][0] >= maxTaxi:
			maxTaxi = D[name][0]
		if D[name][1] >= maxPizza:
			maxPizza = D[name][1]
		if D[name][2] >= maxGirls:
			maxGirls = D[name][2]
for name in D:
	if D[name][0] == maxTaxi:
		personsMaxTaxi.append(name)
	if D[name][1] == maxPizza:
		personsMaxPizza.append(name)
	if D[name][2] == maxGirls:
		personsMaxGirls.append(name)
print('If you want to call a taxi, you should call: ', end='')
for (i, name) in enumerate(personsMaxTaxi):
	if not i == len(personsMaxTaxi) - 1:
		print(name, end=', ')
	else:
		print(name, end='.\n')
print('If you want to order a pizza, you should call: ', end='')
for (i, name) in enumerate(personsMaxPizza):
	if not i == len(personsMaxPizza) - 1:
		print(name, end=', ')
	else:
		print(name, end='.\n')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for (i, name) in enumerate(personsMaxGirls):
	if not i == len(personsMaxGirls) - 1:
		print(name, end=', ')
	else:
		print(name, end='.\n')


import sys

def is_taxi(number):
	return len({ch for ch in number if ch != '-'}) == 1

def is_pizza(number):
	ds = [int(ch) for ch in number if ch != '-']
	n = len(ds)
	return all((ds[i] < ds[i - 1] for i in range(1, n)))

def main():
	n = int(input())
	names = []
	taxi_cnts = []
	pizza_cnts = []
	girl_cnts = []
	for _ in range(n):
		(cnt, name) = input().strip().split()
		cnt = int(cnt)
		(n_t, n_p, n_g) = (0, 0, 0)
		for _ in range(cnt):
			number = input().strip()
			if is_taxi(number):
				n_t += 1
			elif is_pizza(number):
				n_p += 1
			else:
				n_g += 1
		names.append(name)
		taxi_cnts.append(n_t)
		pizza_cnts.append(n_p)
		girl_cnts.append(n_g)
	taxi_mx = max(taxi_cnts)
	pizza_mx = max(pizza_cnts)
	girl_mx = max(girl_cnts)
	print('If you want to call a taxi, you should call: {}.'.format(', '.join([names[i] for i in range(n) if taxi_cnts[i] == taxi_mx])))
	print('If you want to order a pizza, you should call: {}.'.format(', '.join([names[i] for i in range(n) if pizza_cnts[i] == pizza_mx])))
	print('If you want to go to a cafe with a wonderful girl, you should call: {}.'.format(', '.join([names[i] for i in range(n) if girl_cnts[i] == girl_mx])))
main()


def readln():
	return tuple(map(int, input().split()))
lst = []
(n,) = readln()
best = [0, 0, 0]
for _ in range(n):
	(k, name) = input().split()
	k = int(k)
	t = p = 0
	for i in range(k):
		tmp = list(''.join(input().split('-')))
		if len(set(tmp)) == 1:
			t += 1
		elif len([1 for (a, b) in zip(tmp[:5], tmp[1:]) if a > b]) == 5:
			p += 1
	lst.append((t, p, k - t - p, name))
	best[0] = max(best[0], t)
	best[1] = max(best[1], p)
	best[2] = max(best[2], k - t - p)
print('If you want to call a taxi, you should call: %s.' % ', '.join([name for (t, p, g, name) in lst if t == best[0]]))
print('If you want to order a pizza, you should call: %s.' % ', '.join([name for (t, p, g, name) in lst if p == best[1]]))
print('If you want to go to a cafe with a wonderful girl, you should call: %s.' % ', '.join([name for (t, p, g, name) in lst if g == best[2]]))


def tpg(x):
	for a in range(len(x) - 1):
		if x[a] == x[a + 1]:
			c = 0
		else:
			c = 1
			break
	if c == 0:
		return 0
	else:
		for a in range(len(x) - 1):
			if x[a] > x[a + 1]:
				c = 1
			else:
				c = 2
				break
	if c == 1:
		return 1
	else:
		return 2
n = int(input())
list_name = []
taxi_num = []
pizza_num = []
girls_num = []
for a in range(n):
	(no, name) = input().split()
	list_name.append(name)
	taxi = 0
	pizza = 0
	girls = 0
	for aa in range(int(no)):
		c = input().split('-')
		c = ''.join(c)
		res = tpg(c)
		if res == 0:
			taxi += 1
		elif res == 1:
			pizza += 1
		else:
			girls += 1
	taxi_num.append(taxi)
	pizza_num.append(pizza)
	girls_num.append(girls)
indices0 = [i for (i, x) in enumerate(taxi_num) if x == max(taxi_num)]
indices1 = [i for (i, x) in enumerate(pizza_num) if x == max(pizza_num)]
indices2 = [i for (i, x) in enumerate(girls_num) if x == max(girls_num)]
p = 5
q = 5
r = 5
if len(indices0) > 1:
	p = 0
if len(indices1) > 1:
	q = 0
if len(indices2) > 1:
	r = 0
if p == 5:
	print('If you want to call a taxi, you should call: ' + list_name[indices0[0]] + '.')
elif p == 0:
	print('If you want to call a taxi, you should call: ', end='')
	for i in range(len(indices0) - 1):
		print(list_name[indices0[i]], end=', ')
	print(list_name[indices0[-1]] + '.')
if q == 5:
	print('If you want to order a pizza, you should call: ' + list_name[indices1[0]] + '.')
elif q == 0:
	print('If you want to order a pizza, you should call: ', end='')
	for i in range(len(indices1) - 1):
		print(list_name[indices1[i]], end=', ')
	print(list_name[indices1[-1]] + '.')
if r == 5:
	print('If you want to go to a cafe with a wonderful girl, you should call: ' + list_name[indices2[0]] + '.')
elif r == 0:
	print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
	for i in range(len(indices2) - 1):
		print(list_name[indices2[i]], end=', ')
	print(list_name[indices2[-1]] + '.')


import re
import pdb
from sys import stdin, stdout

def solve_challenge():
	inp = get_input()
	books = parse_input(inp)
	(taxis_top, pizzas_top, girls_top) = get_solution(books)
	print_solution(taxis_top, pizzas_top, girls_top)

def get_input_file():
	import sys
	f = open('demo.txt', 'r')
	var = f.read()
	return var

def get_input():
	import sys
	var = sys.stdin.read()
	return var

def parse_input(inp):
	books = list()
	lines = inp.splitlines()
	is_name_line = True
	for line in lines[1:]:
		if is_name_line:
			arr = line.split(' ')
			(number, friend) = (int(arr[0]), arr[1])
			phonebook = list()
		else:
			phone = line.replace('-', '')
			phonebook.append(phone)
			number -= 1
		if number == 0:
			is_name_line = True
			friend_tuple = (friend, phonebook)
			books.append(friend_tuple)
		else:
			is_name_line = False
	return books

def get_solution(books):
	taxis_max = 0
	pizzas_max = 0
	girls_max = 0
	taxis_top = list()
	pizzas_top = list()
	girls_top = list()
	for book in books:
		taxis_count = 0
		pizzas_count = 0
		girls_count = 0
		(friend, phonebook) = book
		for number in phonebook:
			if is_taxi_number(number):
				taxis_count += 1
			elif is_pizza_number(number):
				pizzas_count += 1
			else:
				girls_count += 1
		(taxis_max, taxis_top) = get_max(taxis_count, taxis_max, taxis_top, friend)
		(pizzas_max, pizzas_top) = get_max(pizzas_count, pizzas_max, pizzas_top, friend)
		(girls_max, girls_top) = get_max(girls_count, girls_max, girls_top, friend)
	return (taxis_top, pizzas_top, girls_top)

def get_max(count, maximum, top, friend):
	if count > maximum:
		maximum = count
		top = [friend]
	elif count == maximum:
		top.append(friend)
	return (maximum, top)

def is_pizza_number(num):
	for i in range(1, 6):
		if int(num[i]) >= int(num[i - 1]):
			return False
	return True

def is_taxi_number(num):
	return bool(re.match('(\\w)\\1{5,}', num))

def print_solution(taxis_top, pizzas_top, girls_top):
	taxis = 'If you want to call a taxi, you should call: %s.' % ', '.join(taxis_top)
	pizzas = 'If you want to order a pizza, you should call: %s.' % ', '.join(pizzas_top)
	girls = 'If you want to go to a cafe with a wonderful girl, you should call: %s.' % ', '.join(girls_top)
	print(taxis)
	print(pizzas)
	print(girls)

def main():
	solve_challenge()
main()


def t(s):
	if s.count(s[0]) == 6:
		return 0
	elif s[0] > s[1] and s[1] > s[3] and (s[3] > s[4]) and (s[4] > s[6]) and (s[6] > s[7]):
		return 1
	else:
		return 2
a = ['call a taxi', 'order a pizza', 'go to a cafe with a wonderful girl']
(nm, c) = ([], [])
for i in range(int(input())):
	(nn, nmi) = input().split()
	nn = int(nn)
	c.append([0, 0, 0])
	nm.append(nmi)
	for j in range(nn):
		c[i][t(input())] += 1
for j in range(len(a)):
	(vn, vnm) = (0, [])
	for (nmi, ci) in zip(nm, c):
		if ci[j] > vn:
			vn = ci[j]
			vnm = [nmi]
		elif ci[j] == vn:
			vnm.append(nmi)
	print('If you want to ', a[j], ', you should call: ', ', '.join(vnm), '.', sep='')


from collections import *
n = int(input())
taxi = []
pizza = []
girl = []
pp = ''
for i in range(n):
	(no, name) = map(str, input().split())
	no = int(no)
	pp += name + ', '
	for j in range(no):
		s = input().replace('-', '')
		ln = len(s)
		if s.count(s[0]) == ln:
			taxi.append(name)
		else:
			f = 0
			for k in range(1, ln):
				if int(s[k]) >= int(s[k - 1]):
					f = 1
					break
			if f == 0:
				pizza.append(name)
			else:
				girl.append(name)
taxic = Counter(taxi)
pizzac = Counter(pizza)
girlc = Counter(girl)
if taxi:
	mx = max(taxic.values())
	ans = ''
	for i in taxic:
		if taxic[i] == mx:
			ans += i + ', '
else:
	ans = pp
ans = ans.strip(' ')
ans = list(ans)
ans[-1] = '.'
print('If you want to call a taxi, you should call: ' + ''.join(ans))
if pizza:
	mx = max(pizzac.values())
	ans = ''
	for i in pizzac:
		if pizzac[i] == mx:
			ans += i + ', '
else:
	ans = pp
ans = ans.strip(' ')
ans = list(ans)
ans[-1] = '.'
print('If you want to order a pizza, you should call: ' + ''.join(ans))
if girl:
	mx = max(girlc.values())
	ans = ''
	for i in girlc:
		if girlc[i] == mx:
			ans += i + ', '
else:
	ans = pp
ans = ans.strip(' ')
ans = list(ans)
ans[-1] = '.'
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ''.join(ans))


import math
import sys
import collections
from collections import defaultdict
from sys import stdin, stdout
sys.setrecursionlimit(10 ** 9)
n = int(input())
(piza, taxi, girl) = (-1, -1, -1)
(pname, tname, gname) = ([], [], [])
for _ in range(n):
	(cnt0, cnt1, cnt2) = (0, 0, 0)
	(s, name) = map(str, input().split())
	for i in range(int(s)):
		str1 = input()
		temp = []
		for j in range(len(str1)):
			if str1[j] != '-':
				temp.append(int(str1[j]))
		flag = 1
		for j in range(1, len(temp)):
			if temp[j - 1] != temp[j]:
				flag = 0
				break
		if flag == 1:
			cnt1 += 1
		else:
			t = 0
			for j in range(1, len(temp)):
				if temp[j - 1] > temp[j]:
					t += 1
			if t == 5:
				flag = 0
			else:
				flag = 2
			if flag == 0:
				cnt0 += 1
			else:
				cnt2 += 1
	if cnt0 > piza:
		pname = []
		pname.append(name)
		piza = cnt0
	elif cnt0 == piza:
		pname.append(name)
		piza = cnt0
	if cnt1 > taxi:
		tname = []
		tname.append(name)
		taxi = cnt1
	elif cnt1 == taxi:
		tname.append(name)
		taxi = cnt1
	if cnt2 > girl:
		gname = []
		gname.append(name)
		girl = cnt2
	elif cnt2 == girl:
		gname.append(name)
		girl = cnt2
print('If you want to call a taxi, you should call: ', end='')
for i in range(len(tname) - 1):
	print(tname[i] + ', ', end='')
print(tname[len(tname) - 1] + '.')
print('If you want to order a pizza, you should call: ', end='')
for i in range(len(pname) - 1):
	print(pname[i] + ', ', end='')
print(pname[len(pname) - 1] + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ', end='')
for i in range(len(gname) - 1):
	print(gname[i] + ', ', end='')
print(gname[len(gname) - 1] + '.')


n = int(input())
friends = []
I = lambda : input().split()
for i in range(n):
	data = {'name': '', 'taxi': 0, 'pizza': 0, 'girl': 0}
	inp = I()
	data['name'] = inp[1]
	for j in range(int(inp[0])):
		num = input().replace('-', '')
		if len(set(num)) == 1:
			data['taxi'] += 1
		elif len(set(num)) == len(num) and list(num) == sorted(list(num), reverse=True):
			data['pizza'] += 1
		else:
			data['girl'] += 1
	friends.append(data)
max_taxi = max([data['taxi'] for data in friends])
max_pizza = max([data['pizza'] for data in friends])
max_girl = max([data['girl'] for data in friends])
print('If you want to call a taxi, you should call: ' + ', '.join([friend['name'] for friend in filter(lambda data: data['taxi'] == max_taxi, friends)]) + '.')
print('If you want to order a pizza, you should call: ' + ', '.join([friend['name'] for friend in filter(lambda data: data['pizza'] == max_pizza, friends)]) + '.')
print('If you want to go to a cafe with a wonderful girl, you should call: ' + ', '.join([friend['name'] for friend in filter(lambda data: data['girl'] == max_girl, friends)]) + '.')


import sys
inf = float('inf')
(mod, MOD) = (1000000007, 998244353)

def get_array():
	return list(map(int, sys.stdin.readline().strip().split()))

def get_ints():
	return map(str, sys.stdin.readline().strip().split())

def input():
	return sys.stdin.readline().strip()
n = int(input())
(max_girls, max_pizza, max_taxi) = (0, 0, 0)
(taxi, pizza, girl) = ([], [], [])
for i in range(n):
	(curr_girls, curr_pizza, curr_taxi) = (0, 0, 0)
	(t, name) = get_ints()
	t = int(t)
	for j in range(t):
		string = list(input())
		string.remove('-')
		string.remove('-')
		flag = 0
		for k in range(1, 6):
			if string[k] >= string[k - 1]:
				flag = 1
				break
		if flag == 0:
			curr_pizza += 1
			continue
		flag = 0
		value = string[0]
		for k in range(1, 6):
			if string[k] != value:
				flag = 1
				break
		if flag == 0:
			curr_taxi += 1
			continue
		curr_girls += 1
	if curr_taxi > max_taxi:
		max_taxi = curr_taxi
		taxi = [name]
	elif curr_taxi == max_taxi:
		max_taxi = curr_taxi
		taxi.append(name)
	if curr_girls > max_girls:
		max_girls = curr_girls
		girl = [name]
	elif curr_girls == max_girls:
		max_girls = curr_girls
		girl.append(name)
	if curr_pizza > max_pizza:
		max_pizza = curr_pizza
		pizza = [name]
	elif curr_pizza == max_pizza:
		max_pizza = curr_pizza
		pizza.append(name)
print(f"If you want to call a taxi, you should call: {', '.join(taxi)}.")
print(f"If you want to order a pizza, you should call: {', '.join(pizza)}.")
print(f"If you want to go to a cafe with a wonderful girl, you should call: {', '.join(girl)}.")