In this task you will be given a list of dictionaries. A dictionary is a set of key-value pairs, where each key is unique and has a value associated with that key. You should sort the list of dictionaries from smallest to largest by their 'first' key. If there is two dictionaries with the same 'first' value then sort them by their 'second' key. Negative numbers should come before positive numbers.

[{'first': 21, 'second': -11}, {'first': 38, 'second': -22}, {'first': -72, 'second': -45}, {'first': -77, 'second': 66}]
[{'first': -77, 'second': 66}, {'first': -72, 'second': -45}, {'first': 21, 'second': -11}, {'first': 38, 'second': -22}]

[{'first': 70, 'second': -97}, {'first': -89, 'second': 93}, {'first': -70, 'second': 43}, {'first': -96, 'second': 34}, {'first': -75, 'second': -81}, {'first': 45, 'second': 92}, {'first': -86, 'second': -2}]
[{'first': -96, 'second': 34}, {'first': -89, 'second': 93}, {'first': -86, 'second': -2}, {'first': -75, 'second': -81}, {'first': -70, 'second': 43}, {'first': 45, 'second': 92}, {'first': 70, 'second': -97}]

[{'first': -13, 'second': -42}, {'first': 30, 'second': 10}, {'first': 3, 'second': -17}]

first: -13
second: -42
first: 3
second: -17
first: 30
second: 10