Alternative approach by Andrea Giammarchi.