It is well known, in the field of Mathematics studying infinity, that [the Cartesian product of any finite amount of countable sets is also countable][1].

Your task is to write two programs to implement this, one to map from list to integer, one to map from integer to list.

Your function must be bijective and deterministic, meaning that `1` will always map to a certian list, and `2` will always map to another certain list, etc...

[Earlier](http://codegolf.stackexchange.com/questions/71924/bijective-mapping-from-integers-to-a-variable-number-of-bits), we mapped integers to a list consisting only of `0` and `1`. However, now the list will consist of non-negative numbers.

#Specs

- Whether it starts from `1` or starts from `0` is your choice.
- The empty array `[]` must be encoded.
- Input/output may be in any base.

#Scoring

This is [tag:code-golf]. Shortest solution in bytes wins.

[1]: https://proofwiki.org/wiki/Cartesian_Product_of_Countable_Sets_is_Countable/Corollary