final solution >:-D