my solution to http://lightoj.com/