string string string dateTime dateTime number string tFlight string string number string tPassenger string Flight List[ Status = "cancelled" ].Flight Number Passenger List[ list contains( Cancelled Flights, Flight Number ) ] sort( Waiting List, passenger priority ) reassign next passenger Prioritized Waiting List [] Flight List Passenger1.Status "gold", "silver", "bronze" Passenger2.Status "gold", "silver", "bronze" Passenger1.Miles true, false false "gold" "gold" >= Passenger2.Miles true "gold" "silver","bronze" - true "silver" "silver" >= Passenger2.Miles true "silver" "bronze" - true "bronze" "bronze" >= Passenger2.Miles true Waiting List[1] Flights[ Flight Number = Next Passenger.Flight Number ][1] Flights[ From = Original Flight.From and To = Original Flight.To and Departure > Original Flight.Departure and Status = "scheduled" and has capacity( item, Reassigned Passengers List ) ][1] Next Passenger.Name Next Passenger.Status Next Passenger.Miles Best Alternate Flight.Flight Number remove( Waiting List, 1 ) append( Reassigned Passengers List, Reassigned Passenger ) if count( Remaining Waiting List ) > 0 then reassign next passenger( Remaining Waiting List, Updated Reassigned Passengers List, Flights ) else Updated Reassigned Passengers List flight.Capacity > count( rebooked list[ Flight Number = flight.Flight Number ] )