Source: https://courses.cs.washington.edu/courses/cse143/11wi/lectures/01-19/07-stack-queue.pdf