Implement a first-in-first-out (FIFO) queue using only two stacks. The queue should support the following operations: push, pop, peek, and empty.
You are given an array of commands, where each command is one of:
["push", x]- Push element x to the back of the queue. Returns null.["pop"]- Remove the element from the front of the queue and return it.["peek"]- Return the element at the front of the queue without removing it.["empty"]- Return true if the queue is empty, false otherwise.
Return an array of results for each command.