from collections import defaultdict

def reconstruct_itinerary(tickets, start='JFK'):
    adj = defaultdict(list)
    for origin, destination in tickets:
        adj[origin].append(destination)
    for destinations in adj.values():
        destinations.sort(reverse=True)
    stack, reverse_route = [start], []
    while stack:
        if adj[stack[-1]]:
            stack.append(adj[stack[-1]].pop())
        else:
            reverse_route.append(stack.pop())
    return reverse_route[::-1]
