Solution by rakulius.