$L = \{a^nb^m | n \le m \le 3n \} $
This is by far the hardest pushdown automaton I had to design. I literally have no idea where to start. Here's my thought process. Firstly, I thought that for each valid pair $(n,m)$ the differences between the number of $b$s abd $a$s will be the same. That wasn't true, as the number of possible strings rose for each new value of $n$.
Next, I tried adding $a$ on top of the stack when I read $a$, and then removing them when I read $b$s. That would only cover the case when $m=n$. I can produce an automaton where $m=n$, $m=2n$ or $m=3n$, but how do I cover all the cases where $m \in [n, n+1, n+2, ..., 3n]$?