Solution by Veesh Goldman