5#

some optimization