Код вроде и так субоптимален. Можно чуть-чуть изворачиваться, но суть та же...