
from synet.utils.common import PathReq
from synet.utils.common import ECMPPathsReq
from synet.utils.common import PathOrderReq
from synet.utils.common import Protocols
from synet.utils.common import KConnectedPathsReq

topology_file = 'topos/small/Bics.graphml'
seed = 2692189509
reqs_simple_1 = [
    PathReq(Protocols.OSPF, "Lisbon", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'London', 'Lisbon'], False),
]

edges_cost_simple_1 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 2),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_ecmp_1_2 = [
    ECMPPathsReq(Protocols.OSPF, 'Rotterdam', [PathReq(Protocols.OSPF, "Rotterdam", ['Vaduz', 'Zurich', 'Frankfurt', 'Brussels', 'Rotterdam'], False), PathReq(Protocols.OSPF, "Rotterdam", ['Vaduz', 'Zurich', 'Frankfurt', 'Amsterdam', 'Rotterdam'], False)], False),
]

edges_cost_ecmp_1_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_kconnected_1_2 = [
    KConnectedPathsReq(Protocols.OSPF, 'Rotterdam', [PathReq(Protocols.OSPF, "Rotterdam", ['Vaduz', 'Zurich', 'Frankfurt', 'Brussels', 'Rotterdam'], False), PathReq(Protocols.OSPF, "Rotterdam", ['Vaduz', 'Zurich', 'Frankfurt', 'Amsterdam', 'Rotterdam'], False)], False),
]

edges_cost_kconnected_1_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_order_1_2 = [
    PathOrderReq(Protocols.OSPF, 'Geneva', [PathReq(Protocols.OSPF, "Geneva", ['Lyon', 'Geneva'], False), PathReq(Protocols.OSPF, "Geneva", ['Lyon', 'Paris', 'Geneva'], False)], False),
]

edges_cost_order_1_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_simple_2 = [
    PathReq(Protocols.OSPF, "Bucharest", ['Praha', 'Warsaw', 'Kiev', 'Bucharest'], False),
    PathReq(Protocols.OSPF, "Lyon", ['Praha', 'Frankfurt', 'Zurich', 'Geneva', 'Lyon'], False),
]

edges_cost_simple_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 2),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 2),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_ecmp_2_2 = [
    ECMPPathsReq(Protocols.OSPF, 'Kiev', [PathReq(Protocols.OSPF, "Kiev", ['Marseille', 'Milan', 'Zurich', 'Frankfurt', 'Warsaw', 'Kiev'], False), PathReq(Protocols.OSPF, "Kiev", ['Marseille', 'Milan', 'Vienna', 'Frankfurt', 'Warsaw', 'Kiev'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Stockholm', [PathReq(Protocols.OSPF, "Stockholm", ['Marseille', 'Milan', 'Vienna', 'Frankfurt', 'Stockholm'], False), PathReq(Protocols.OSPF, "Stockholm", ['Marseille', 'Milan', 'Zurich', 'Frankfurt', 'Stockholm'], False)], False),
]

edges_cost_ecmp_2_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_kconnected_2_2 = [
    KConnectedPathsReq(Protocols.OSPF, 'Kiev', [PathReq(Protocols.OSPF, "Kiev", ['Marseille', 'Milan', 'Zurich', 'Frankfurt', 'Warsaw', 'Kiev'], False), PathReq(Protocols.OSPF, "Kiev", ['Marseille', 'Milan', 'Vienna', 'Frankfurt', 'Warsaw', 'Kiev'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Stockholm', [PathReq(Protocols.OSPF, "Stockholm", ['Marseille', 'Milan', 'Vienna', 'Frankfurt', 'Stockholm'], False), PathReq(Protocols.OSPF, "Stockholm", ['Marseille', 'Milan', 'Zurich', 'Frankfurt', 'Stockholm'], False)], False),
]

edges_cost_kconnected_2_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_order_2_2 = [
    PathOrderReq(Protocols.OSPF, 'Sofia', [PathReq(Protocols.OSPF, "Sofia", ['Budapest', 'Sofia'], False), PathReq(Protocols.OSPF, "Sofia", ['Budapest', 'Bucharest', 'Istanbul', 'Athens', 'Sofia'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Bucharest', [PathReq(Protocols.OSPF, "Bucharest", ['Istanbul', 'Bucharest'], False), PathReq(Protocols.OSPF, "Bucharest", ['Istanbul', 'Athens', 'Sofia', 'Budapest', 'Bucharest'], False)], False),
]

edges_cost_order_2_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_simple_4 = [
    PathReq(Protocols.OSPF, "Sofia", ['Warsaw', 'Kiev', 'Bucharest', 'Budapest', 'Sofia'], False),
    PathReq(Protocols.OSPF, "Strasbourg", ['Warsaw', 'Frankfurt', 'Strasbourg'], False),
    PathReq(Protocols.OSPF, "Barcelona", ['Warsaw', 'Frankfurt', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False),
    PathReq(Protocols.OSPF, "Lisbon", ['Warsaw', 'Frankfurt', 'Brussels', 'London', 'Lisbon'], False),
]

edges_cost_simple_4 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 2),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 2),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 2),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 2),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_ecmp_4_2 = [
    ECMPPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Stockholm', 'Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Stockholm', 'Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Stockholm', 'Frankfurt', 'Vienna', 'Milan', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Stockholm', 'Frankfurt', 'Zurich', 'Milan', 'Marseille'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Ljubjana', [PathReq(Protocols.OSPF, "Ljubjana", ['Stockholm', 'Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False), PathReq(Protocols.OSPF, "Ljubjana", ['Stockholm', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Sofia', [PathReq(Protocols.OSPF, "Sofia", ['Stockholm', 'Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia'], False), PathReq(Protocols.OSPF, "Sofia", ['Stockholm', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia'], False)], False),
]

edges_cost_ecmp_4_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_kconnected_4_2 = [
    KConnectedPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Stockholm', 'Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Stockholm', 'Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Stockholm', 'Frankfurt', 'Vienna', 'Milan', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Stockholm', 'Frankfurt', 'Zurich', 'Milan', 'Marseille'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Ljubjana', [PathReq(Protocols.OSPF, "Ljubjana", ['Stockholm', 'Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False), PathReq(Protocols.OSPF, "Ljubjana", ['Stockholm', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Sofia', [PathReq(Protocols.OSPF, "Sofia", ['Stockholm', 'Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia'], False), PathReq(Protocols.OSPF, "Sofia", ['Stockholm', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia'], False)], False),
]

edges_cost_kconnected_4_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_order_4_2 = [
    PathOrderReq(Protocols.OSPF, 'Bratislava', [PathReq(Protocols.OSPF, "Bratislava", ['Budapest', 'Bratislava'], False), PathReq(Protocols.OSPF, "Bratislava", ['Budapest', 'Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Praha', 'Bratislava'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Luxembourg', [PathReq(Protocols.OSPF, "Luxembourg", ['Brussels', 'Luxembourg'], False), PathReq(Protocols.OSPF, "Luxembourg", ['Brussels', 'Frankfurt', 'Strasbourg', 'Luxembourg'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Strasbourg', [PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Strasbourg'], False), PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Geneva', 'Zurich', 'Milan', 'Vienna', 'Frankfurt', 'Strasbourg'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Paris', [PathReq(Protocols.OSPF, "Paris", ['Brussels', 'Paris'], False), PathReq(Protocols.OSPF, "Paris", ['Brussels', 'London', 'Paris'], False)], False),
]

edges_cost_order_4_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 3),
    ("Paris", "London", 2),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 2),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 4),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 3),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_simple_8 = [
    PathReq(Protocols.OSPF, "London", ['Brussels', 'London'], False),
    PathReq(Protocols.OSPF, "Luxembourg", ['Brussels', 'Luxembourg'], False),
    PathReq(Protocols.OSPF, "Stockholm", ['Brussels', 'Frankfurt', 'Stockholm'], False),
    PathReq(Protocols.OSPF, "Ljubjana", ['Brussels', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False),
    PathReq(Protocols.OSPF, "Sofia", ['Brussels', 'Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia'], False),
    PathReq(Protocols.OSPF, "Kiev", ['Brussels', 'Frankfurt', 'Warsaw', 'Kiev'], False),
    PathReq(Protocols.OSPF, "Paris", ['Brussels', 'Paris'], False),
    PathReq(Protocols.OSPF, "Frankfurt", ['Brussels', 'Frankfurt'], False),
]

edges_cost_simple_8 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 2),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_ecmp_8_2 = [
    ECMPPathsReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan', 'Marseille'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'London', [PathReq(Protocols.OSPF, "London", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'London'], False), PathReq(Protocols.OSPF, "London", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'London'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Luxembourg', [PathReq(Protocols.OSPF, "Luxembourg", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'Luxembourg'], False), PathReq(Protocols.OSPF, "Luxembourg", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Strasbourg', 'Luxembourg'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Praha', [PathReq(Protocols.OSPF, "Praha", ['Bucharest', 'Kiev', 'Warsaw', 'Praha'], False), PathReq(Protocols.OSPF, "Praha", ['Bucharest', 'Budapest', 'Bratislava', 'Praha'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Rotterdam', [PathReq(Protocols.OSPF, "Rotterdam", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'Rotterdam'], False), PathReq(Protocols.OSPF, "Rotterdam", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'Rotterdam'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Barcelona', [PathReq(Protocols.OSPF, "Barcelona", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False), PathReq(Protocols.OSPF, "Barcelona", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False)], False),
]

edges_cost_ecmp_8_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 2),
    ("Brussels", "Paris", 2),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 2),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_kconnected_8_2 = [
    KConnectedPathsReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan', 'Marseille'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'London', [PathReq(Protocols.OSPF, "London", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'London'], False), PathReq(Protocols.OSPF, "London", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'London'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Luxembourg', [PathReq(Protocols.OSPF, "Luxembourg", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'Luxembourg'], False), PathReq(Protocols.OSPF, "Luxembourg", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Strasbourg', 'Luxembourg'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Praha', [PathReq(Protocols.OSPF, "Praha", ['Bucharest', 'Kiev', 'Warsaw', 'Praha'], False), PathReq(Protocols.OSPF, "Praha", ['Bucharest', 'Budapest', 'Bratislava', 'Praha'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Rotterdam', [PathReq(Protocols.OSPF, "Rotterdam", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Brussels', 'Rotterdam'], False), PathReq(Protocols.OSPF, "Rotterdam", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Amsterdam', 'Rotterdam'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Barcelona', [PathReq(Protocols.OSPF, "Barcelona", ['Bucharest', 'Kiev', 'Warsaw', 'Frankfurt', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False), PathReq(Protocols.OSPF, "Barcelona", ['Bucharest', 'Budapest', 'Bratislava', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False)], False),
]

edges_cost_kconnected_8_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 2),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 2),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_order_8_2 = [
    PathOrderReq(Protocols.OSPF, 'Paris', [PathReq(Protocols.OSPF, "Paris", ['London', 'Paris'], False), PathReq(Protocols.OSPF, "Paris", ['London', 'Brussels', 'Paris'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Madrid', [PathReq(Protocols.OSPF, "Madrid", ['Paris', 'Madrid'], False), PathReq(Protocols.OSPF, "Madrid", ['Paris', 'Lyon', 'Marseille', 'Barcelona', 'Madrid'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Amsterdam', [PathReq(Protocols.OSPF, "Amsterdam", ['Frankfurt', 'Amsterdam'], False), PathReq(Protocols.OSPF, "Amsterdam", ['Frankfurt', 'Brussels', 'Amsterdam'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Bucharest', [PathReq(Protocols.OSPF, "Bucharest", ['Istanbul', 'Bucharest'], False), PathReq(Protocols.OSPF, "Bucharest", ['Istanbul', 'Athens', 'Sofia', 'Budapest', 'Bucharest'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Strasbourg', [PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Strasbourg'], False), PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Geneva', 'Paris', 'Brussels', 'Frankfurt', 'Strasbourg'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Budapest', [PathReq(Protocols.OSPF, "Budapest", ['Bratislava', 'Budapest'], False), PathReq(Protocols.OSPF, "Budapest", ['Bratislava', 'Praha', 'Frankfurt', 'Warsaw', 'Kiev', 'Bucharest', 'Budapest'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Barcelona', [PathReq(Protocols.OSPF, "Barcelona", ['Madrid', 'Barcelona'], False), PathReq(Protocols.OSPF, "Barcelona", ['Madrid', 'Paris', 'Lyon', 'Marseille', 'Barcelona'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Marseille', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Marseille', 'Lyon', 'Geneva', 'Zurich', 'Milan'], False)], False),
]

edges_cost_order_8_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 2),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 2),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 1),
    ("Zurich", "Frankfurt", 3),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 3),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_simple_16 = [
    PathReq(Protocols.OSPF, "Paris", ['Praha', 'Frankfurt', 'Brussels', 'Paris'], False),
    PathReq(Protocols.OSPF, "Vienna", ['Praha', 'Bratislava', 'Vienna'], False),
    PathReq(Protocols.OSPF, "Madrid", ['Praha', 'Frankfurt', 'Brussels', 'Paris', 'Madrid'], False),
    PathReq(Protocols.OSPF, "Istanbul", ['Praha', 'Bratislava', 'Budapest', 'Bucharest', 'Istanbul'], False),
    PathReq(Protocols.OSPF, "Strasbourg", ['Praha', 'Frankfurt', 'Strasbourg'], False),
    PathReq(Protocols.OSPF, "Bratislava", ['Praha', 'Bratislava'], False),
    PathReq(Protocols.OSPF, "Zurich", ['Praha', 'Frankfurt', 'Zurich'], False),
    PathReq(Protocols.OSPF, "Marseille", ['Praha', 'Bratislava', 'Vienna', 'Milan', 'Marseille'], False),
    PathReq(Protocols.OSPF, "Barcelona", ['Praha', 'Bratislava', 'Vienna', 'Milan', 'Marseille', 'Barcelona'], False),
    PathReq(Protocols.OSPF, "Rotterdam", ['Praha', 'Frankfurt', 'Amsterdam', 'Rotterdam'], False),
    PathReq(Protocols.OSPF, "Ljubjana", ['Praha', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False),
    PathReq(Protocols.OSPF, "Amsterdam", ['Praha', 'Frankfurt', 'Amsterdam'], False),
    PathReq(Protocols.OSPF, "Dublin", ['Praha', 'Frankfurt', 'Amsterdam', 'London', 'Dublin'], False),
    PathReq(Protocols.OSPF, "Zagreb", ['Praha', 'Bratislava', 'Budapest', 'Zagreb'], False),
    PathReq(Protocols.OSPF, "Warsaw", ['Praha', 'Warsaw'], False),
    PathReq(Protocols.OSPF, "Stockholm", ['Praha', 'Frankfurt', 'Stockholm'], False),
]

edges_cost_simple_16 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 2),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 2),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 2),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 2),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 2),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 2),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_ecmp_16_2 = [
    ECMPPathsReq(Protocols.OSPF, 'Kiev', [PathReq(Protocols.OSPF, "Kiev", ['Frankfurt', 'Warsaw', 'Kiev'], False), PathReq(Protocols.OSPF, "Kiev", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Frankfurt', 'Vienna', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Frankfurt', 'Zurich', 'Roma', 'Milan'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Warsaw', [PathReq(Protocols.OSPF, "Warsaw", ['Frankfurt', 'Praha', 'Warsaw'], False), PathReq(Protocols.OSPF, "Warsaw", ['Frankfurt', 'Warsaw'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Sofia', [PathReq(Protocols.OSPF, "Sofia", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia'], False), PathReq(Protocols.OSPF, "Sofia", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Lisbon', [PathReq(Protocols.OSPF, "Lisbon", ['Frankfurt', 'Brussels', 'London', 'Lisbon'], False), PathReq(Protocols.OSPF, "Lisbon", ['Frankfurt', 'Amsterdam', 'London', 'Lisbon'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Bratislava', [PathReq(Protocols.OSPF, "Bratislava", ['Frankfurt', 'Vienna', 'Bratislava'], False), PathReq(Protocols.OSPF, "Bratislava", ['Frankfurt', 'Praha', 'Bratislava'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Istanbul', [PathReq(Protocols.OSPF, "Istanbul", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev', 'Bucharest', 'Istanbul'], False), PathReq(Protocols.OSPF, "Istanbul", ['Frankfurt', 'Warsaw', 'Kiev', 'Bucharest', 'Istanbul'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Budapest', [PathReq(Protocols.OSPF, "Budapest", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest'], False), PathReq(Protocols.OSPF, "Budapest", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Ljubjana', [PathReq(Protocols.OSPF, "Ljubjana", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False), PathReq(Protocols.OSPF, "Ljubjana", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'London', [PathReq(Protocols.OSPF, "London", ['Frankfurt', 'Brussels', 'London'], False), PathReq(Protocols.OSPF, "London", ['Frankfurt', 'Amsterdam', 'London'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Luxembourg', [PathReq(Protocols.OSPF, "Luxembourg", ['Frankfurt', 'Brussels', 'Luxembourg'], False), PathReq(Protocols.OSPF, "Luxembourg", ['Frankfurt', 'Strasbourg', 'Luxembourg'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Bucharest', [PathReq(Protocols.OSPF, "Bucharest", ['Frankfurt', 'Warsaw', 'Kiev', 'Bucharest'], False), PathReq(Protocols.OSPF, "Bucharest", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev', 'Bucharest'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Athens', [PathReq(Protocols.OSPF, "Athens", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia', 'Athens'], False), PathReq(Protocols.OSPF, "Athens", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia', 'Athens'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Zagreb', [PathReq(Protocols.OSPF, "Zagreb", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb'], False), PathReq(Protocols.OSPF, "Zagreb", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    ECMPPathsReq(Protocols.OSPF, 'Geneva', [PathReq(Protocols.OSPF, "Geneva", ['Frankfurt', 'Zurich', 'Geneva'], False), PathReq(Protocols.OSPF, "Geneva", ['Frankfurt', 'Strasbourg', 'Basel', 'Geneva'], False)], False),
]

edges_cost_ecmp_16_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 2),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 2),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 2),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 2),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 3),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 2),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_kconnected_16_2 = [
    KConnectedPathsReq(Protocols.OSPF, 'Kiev', [PathReq(Protocols.OSPF, "Kiev", ['Frankfurt', 'Warsaw', 'Kiev'], False), PathReq(Protocols.OSPF, "Kiev", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Frankfurt', 'Vienna', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Frankfurt', 'Zurich', 'Roma', 'Milan'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Warsaw', [PathReq(Protocols.OSPF, "Warsaw", ['Frankfurt', 'Praha', 'Warsaw'], False), PathReq(Protocols.OSPF, "Warsaw", ['Frankfurt', 'Warsaw'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Sofia', [PathReq(Protocols.OSPF, "Sofia", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia'], False), PathReq(Protocols.OSPF, "Sofia", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Lisbon', [PathReq(Protocols.OSPF, "Lisbon", ['Frankfurt', 'Brussels', 'London', 'Lisbon'], False), PathReq(Protocols.OSPF, "Lisbon", ['Frankfurt', 'Amsterdam', 'London', 'Lisbon'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Bratislava', [PathReq(Protocols.OSPF, "Bratislava", ['Frankfurt', 'Vienna', 'Bratislava'], False), PathReq(Protocols.OSPF, "Bratislava", ['Frankfurt', 'Praha', 'Bratislava'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Istanbul', [PathReq(Protocols.OSPF, "Istanbul", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev', 'Bucharest', 'Istanbul'], False), PathReq(Protocols.OSPF, "Istanbul", ['Frankfurt', 'Warsaw', 'Kiev', 'Bucharest', 'Istanbul'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Budapest', [PathReq(Protocols.OSPF, "Budapest", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest'], False), PathReq(Protocols.OSPF, "Budapest", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Ljubjana', [PathReq(Protocols.OSPF, "Ljubjana", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False), PathReq(Protocols.OSPF, "Ljubjana", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb', 'Ljubjana'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'London', [PathReq(Protocols.OSPF, "London", ['Frankfurt', 'Brussels', 'London'], False), PathReq(Protocols.OSPF, "London", ['Frankfurt', 'Amsterdam', 'London'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Luxembourg', [PathReq(Protocols.OSPF, "Luxembourg", ['Frankfurt', 'Brussels', 'Luxembourg'], False), PathReq(Protocols.OSPF, "Luxembourg", ['Frankfurt', 'Strasbourg', 'Luxembourg'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Bucharest', [PathReq(Protocols.OSPF, "Bucharest", ['Frankfurt', 'Warsaw', 'Kiev', 'Bucharest'], False), PathReq(Protocols.OSPF, "Bucharest", ['Frankfurt', 'Praha', 'Warsaw', 'Kiev', 'Bucharest'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Athens', [PathReq(Protocols.OSPF, "Athens", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Sofia', 'Athens'], False), PathReq(Protocols.OSPF, "Athens", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Sofia', 'Athens'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Zagreb', [PathReq(Protocols.OSPF, "Zagreb", ['Frankfurt', 'Vienna', 'Bratislava', 'Budapest', 'Zagreb'], False), PathReq(Protocols.OSPF, "Zagreb", ['Frankfurt', 'Praha', 'Bratislava', 'Budapest', 'Zagreb'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Dublin', [PathReq(Protocols.OSPF, "Dublin", ['Frankfurt', 'Amsterdam', 'London', 'Dublin'], False), PathReq(Protocols.OSPF, "Dublin", ['Frankfurt', 'Brussels', 'London', 'Dublin'], False)], False),
    KConnectedPathsReq(Protocols.OSPF, 'Geneva', [PathReq(Protocols.OSPF, "Geneva", ['Frankfurt', 'Zurich', 'Geneva'], False), PathReq(Protocols.OSPF, "Geneva", ['Frankfurt', 'Strasbourg', 'Basel', 'Geneva'], False)], False),
]

edges_cost_kconnected_16_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 2),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 2),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 1),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 1),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 1),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 1),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 1),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 2),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 1),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 1),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 1),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 3),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 1),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 1),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

reqs_order_16_2 = [
    PathOrderReq(Protocols.OSPF, 'Basel', [PathReq(Protocols.OSPF, "Basel", ['Geneva', 'Basel'], False), PathReq(Protocols.OSPF, "Basel", ['Geneva', 'Paris', 'Brussels', 'Frankfurt', 'Strasbourg', 'Basel'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Milan', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Milan', 'Zurich', 'Geneva', 'Lyon', 'Marseille'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Kiev', [PathReq(Protocols.OSPF, "Kiev", ['Bucharest', 'Kiev'], False), PathReq(Protocols.OSPF, "Kiev", ['Bucharest', 'Budapest', 'Bratislava', 'Praha', 'Warsaw', 'Kiev'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Brussels', [PathReq(Protocols.OSPF, "Brussels", ['Paris', 'Brussels'], False), PathReq(Protocols.OSPF, "Brussels", ['Paris', 'London', 'Brussels'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Brussels', [PathReq(Protocols.OSPF, "Brussels", ['London', 'Brussels'], False), PathReq(Protocols.OSPF, "Brussels", ['London', 'Paris', 'Brussels'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Frankfurt', [PathReq(Protocols.OSPF, "Frankfurt", ['Warsaw', 'Frankfurt'], False), PathReq(Protocols.OSPF, "Frankfurt", ['Warsaw', 'Praha', 'Frankfurt'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Basel', [PathReq(Protocols.OSPF, "Basel", ['Strasbourg', 'Basel'], False), PathReq(Protocols.OSPF, "Basel", ['Strasbourg', 'Luxembourg', 'Brussels', 'Paris', 'Geneva', 'Basel'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Marseille', [PathReq(Protocols.OSPF, "Marseille", ['Barcelona', 'Marseille'], False), PathReq(Protocols.OSPF, "Marseille", ['Barcelona', 'Madrid', 'Paris', 'Lyon', 'Marseille'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Strasbourg', [PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Strasbourg'], False), PathReq(Protocols.OSPF, "Strasbourg", ['Basel', 'Geneva', 'Paris', 'Brussels', 'Frankfurt', 'Strasbourg'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Milan', [PathReq(Protocols.OSPF, "Milan", ['Roma', 'Milan'], False), PathReq(Protocols.OSPF, "Milan", ['Roma', 'Zurich', 'Milan'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Amsterdam', [PathReq(Protocols.OSPF, "Amsterdam", ['Brussels', 'Amsterdam'], False), PathReq(Protocols.OSPF, "Amsterdam", ['Brussels', 'Frankfurt', 'Amsterdam'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Geneva', [PathReq(Protocols.OSPF, "Geneva", ['Basel', 'Geneva'], False), PathReq(Protocols.OSPF, "Geneva", ['Basel', 'Strasbourg', 'Luxembourg', 'Brussels', 'Paris', 'Geneva'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Brussels', [PathReq(Protocols.OSPF, "Brussels", ['Rotterdam', 'Brussels'], False), PathReq(Protocols.OSPF, "Brussels", ['Rotterdam', 'Amsterdam', 'Brussels'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Istanbul', [PathReq(Protocols.OSPF, "Istanbul", ['Athens', 'Istanbul'], False), PathReq(Protocols.OSPF, "Istanbul", ['Athens', 'Sofia', 'Budapest', 'Bucharest', 'Istanbul'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Geneva', [PathReq(Protocols.OSPF, "Geneva", ['Zurich', 'Geneva'], False), PathReq(Protocols.OSPF, "Geneva", ['Zurich', 'Roma', 'Milan', 'Marseille', 'Lyon', 'Geneva'], False)], False),
    PathOrderReq(Protocols.OSPF, 'Barcelona', [PathReq(Protocols.OSPF, "Barcelona", ['Madrid', 'Barcelona'], False), PathReq(Protocols.OSPF, "Barcelona", ['Madrid', 'Paris', 'Lyon', 'Marseille', 'Barcelona'], False)], False),
]

edges_cost_order_16_2 = [
    ("Lyon", "Paris", 1),
    ("Lyon", "Marseille", 1),
    ("Lyon", "Geneva", 1),
    ("Kiev", "Bucharest", 1),
    ("Kiev", "Warsaw", 1),
    ("Istanbul", "Bucharest", 1),
    ("Istanbul", "Athens", 1),
    ("Paris", "Madrid", 1),
    ("Paris", "Lyon", 1),
    ("Paris", "Brussels", 1),
    ("Paris", "London", 1),
    ("Paris", "Geneva", 1),
    ("Basel", "Geneva", 1),
    ("Basel", "Strasbourg", 1),
    ("Athens", "Sofia", 1),
    ("Athens", "Istanbul", 1),
    ("Luxembourg", "Brussels", 1),
    ("Luxembourg", "Strasbourg", 2),
    ("Rotterdam", "Amsterdam", 1),
    ("Rotterdam", "Brussels", 1),
    ("Vienna", "Milan", 1),
    ("Vienna", "Frankfurt", 1),
    ("Vienna", "Bratislava", 1),
    ("Ljubjana", "Zagreb", 1),
    ("Geneva", "Paris", 1),
    ("Geneva", "Lyon", 1),
    ("Geneva", "Basel", 1),
    ("Geneva", "Zurich", 3),
    ("Zagreb", "Budapest", 1),
    ("Zagreb", "Ljubjana", 1),
    ("Bratislava", "Budapest", 1),
    ("Bratislava", "Praha", 1),
    ("Bratislava", "Vienna", 1),
    ("Brussels", "Paris", 1),
    ("Brussels", "Luxembourg", 1),
    ("Brussels", "London", 2),
    ("Brussels", "Amsterdam", 1),
    ("Brussels", "Rotterdam", 2),
    ("Brussels", "Frankfurt", 1),
    ("Strasbourg", "Basel", 3),
    ("Strasbourg", "Frankfurt", 1),
    ("Strasbourg", "Luxembourg", 1),
    ("Budapest", "Bucharest", 1),
    ("Budapest", "Zagreb", 1),
    ("Budapest", "Sofia", 1),
    ("Budapest", "Bratislava", 1),
    ("Vaduz", "Zurich", 1),
    ("Dublin", "London", 1),
    ("Barcelona", "Madrid", 1),
    ("Barcelona", "Marseille", 1),
    ("Stockholm", "Frankfurt", 1),
    ("Roma", "Milan", 1),
    ("Roma", "Zurich", 1),
    ("Marseille", "Milan", 1),
    ("Marseille", "Lyon", 1),
    ("Marseille", "Barcelona", 1),
    ("Frankfurt", "Brussels", 3),
    ("Frankfurt", "Strasbourg", 1),
    ("Frankfurt", "Zurich", 3),
    ("Frankfurt", "Praha", 1),
    ("Frankfurt", "Stockholm", 1),
    ("Frankfurt", "Amsterdam", 1),
    ("Frankfurt", "Warsaw", 1),
    ("Frankfurt", "Vienna", 2),
    ("Bucharest", "Budapest", 1),
    ("Bucharest", "Kiev", 1),
    ("Bucharest", "Istanbul", 1),
    ("Zurich", "Vaduz", 1),
    ("Zurich", "Milan", 3),
    ("Zurich", "Frankfurt", 1),
    ("Zurich", "Geneva", 1),
    ("Zurich", "Roma", 1),
    ("Madrid", "Paris", 1),
    ("Madrid", "Barcelona", 1),
    ("Sofia", "Budapest", 1),
    ("Sofia", "Athens", 1),
    ("Milan", "Zurich", 1),
    ("Milan", "Marseille", 1),
    ("Milan", "Roma", 1),
    ("Milan", "Vienna", 1),
    ("Praha", "Bratislava", 1),
    ("Praha", "Frankfurt", 1),
    ("Praha", "Warsaw", 1),
    ("London", "Paris", 1),
    ("London", "Amsterdam", 1),
    ("London", "Brussels", 1),
    ("London", "Dublin", 1),
    ("London", "Lisbon", 1),
    ("Lisbon", "London", 1),
    ("Amsterdam", "Brussels", 2),
    ("Amsterdam", "Rotterdam", 1),
    ("Amsterdam", "Frankfurt", 1),
    ("Amsterdam", "London", 2),
    ("Warsaw", "Praha", 1),
    ("Warsaw", "Frankfurt", 1),
    ("Warsaw", "Kiev", 1),
]

####################

reqs_simple = [reqs_simple_1,reqs_simple_2,reqs_simple_4,reqs_simple_8,reqs_simple_16]

reqs_simple_vals = [edges_cost_simple_1,edges_cost_simple_2,edges_cost_simple_4,edges_cost_simple_8,edges_cost_simple_16]

####################

reqs_ecmp = [reqs_ecmp_1_2,reqs_ecmp_2_2,reqs_ecmp_4_2,reqs_ecmp_8_2,reqs_ecmp_16_2]

reqs_ecmp_vals = [edges_cost_ecmp_1_2,edges_cost_ecmp_2_2,edges_cost_ecmp_4_2,edges_cost_ecmp_8_2,edges_cost_ecmp_16_2]

####################

reqs_kconnected = [reqs_kconnected_1_2,reqs_kconnected_2_2,reqs_kconnected_4_2,reqs_kconnected_8_2,reqs_kconnected_16_2]

reqs_kconnected_vals = [edges_cost_kconnected_1_2,edges_cost_kconnected_2_2,edges_cost_kconnected_4_2,edges_cost_kconnected_8_2,edges_cost_kconnected_16_2]

####################

reqs_order = [reqs_order_1_2, reqs_order_2_2, reqs_order_4_2, reqs_order_8_2, reqs_order_16_2]

reqs_order_vals = [edges_cost_order_1_2, edges_cost_order_2_2, edges_cost_order_4_2, edges_cost_order_8_2, edges_cost_order_16_2]

####################

