Beyond the Worst-Case Analysis of Algorithms (Introduction)