882 KiB
882 KiB
positive negative positive negative negative negative negative negative positive negative positive negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative positive negative positive positive positive negative negative positive positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative positive negative positive positive positive positive negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative negative positive negative negative negative positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive positive positive negative positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive negative positive negative negative positive negative positive positive negative positive negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative negative negative negative negative negative positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive positive negative negative negative negative negative negative positive positive negative positive negative positive positive positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive positive negative positive negative negative positive positive positive positive negative positive positive negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive positive negative negative negative positive positive negative negative negative negative negative negative negative positive positive positive negative positive positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative positive positive negative positive positive negative negative negative positive negative negative positive negative positive positive negative negative negative positive positive positive positive positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive positive negative positive positive positive negative positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative negative negative positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive negative positive positive positive positive negative negative negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative positive positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative positive negative negative negative positive negative positive positive positive negative negative positive positive positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative positive negative positive negative positive positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative positive negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative negative negative negative positive positive positive negative negative positive negative negative positive negative negative positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive negative negative positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive negative negative negative positive negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive positive positive negative positive negative positive negative positive negative positive negative positive negative positive negative negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative positive positive positive positive positive negative negative negative positive negative negative positive negative positive negative negative positive negative negative positive positive negative positive negative negative positive positive positive negative positive negative positive negative negative negative positive positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive positive positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive positive positive negative positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive negative positive positive positive negative positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative negative negative positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative positive positive positive positive negative negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive positive positive positive negative positive negative negative positive negative positive positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive positive negative negative positive negative negative positive negative positive positive positive positive negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative negative positive positive positive negative negative positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive negative negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive negative negative positive positive positive positive negative negative negative positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative positive positive positive negative positive negative negative negative negative positive positive negative negative negative positive negative positive negative negative positive positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive negative positive negative positive positive negative positive negative negative positive positive negative negative negative positive negative negative positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative negative negative negative positive negative positive negative negative positive negative positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative negative positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative negative negative positive negative positive negative positive negative positive positive negative negative positive negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative positive negative positive negative positive positive positive negative negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative negative positive positive positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive negative positive negative negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative positive positive positive positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive positive negative negative positive positive positive negative positive positive negative positive positive negative negative positive negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative negative negative positive negative negative negative negative positive positive positive negative negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative negative positive negative negative positive negative negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative negative negative negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative positive negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative negative positive negative positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive positive negative positive positive negative negative positive positive positive negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive positive positive positive positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive positive positive positive negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive negative negative negative positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative positive positive negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative negative positive positive negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative positive negative negative positive positive negative negative negative negative negative negative negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative negative negative positive negative negative positive positive positive negative negative negative negative negative positive negative negative positive negative positive negative positive positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative positive positive negative positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive negative positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive negative negative negative positive negative positive positive positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative positive negative positive negative positive negative positive positive positive positive positive positive positive negative positive positive positive positive negative positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive negative positive positive negative negative negative positive positive positive negative negative positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative negative positive positive negative negative negative negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive positive positive negative positive positive negative positive negative positive positive positive negative negative negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative positive negative negative positive positive positive positive negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive negative negative positive positive negative negative negative negative negative positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive negative positive positive negative positive negative positive positive negative negative positive positive positive negative positive negative negative positive negative negative positive positive negative positive positive positive positive negative positive positive positive negative negative positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative negative positive positive negative positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive negative positive positive positive negative positive negative positive negative positive positive negative positive positive positive negative positive positive negative negative positive negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive positive negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative positive positive positive positive positive negative positive positive positive positive negative negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative negative positive positive negative positive negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive negative negative negative positive positive negative negative positive positive negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive negative positive positive negative negative positive negative positive negative negative positive positive negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative negative negative negative positive negative positive negative positive positive negative positive positive negative positive negative positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative negative negative negative negative positive negative positive negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive negative positive negative positive negative negative negative positive positive positive negative positive positive positive negative positive positive negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive negative positive negative negative negative positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative negative positive positive positive negative negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative negative positive negative negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive positive positive positive positive negative negative positive negative negative positive negative positive negative negative negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive positive positive positive positive negative negative positive positive negative positive positive positive positive negative negative negative negative negative positive positive negative positive positive positive negative positive positive positive negative negative positive positive negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative negative negative positive positive negative positive positive negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative negative positive negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative negative positive negative positive negative positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive negative negative negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative positive negative positive positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive positive negative negative negative negative negative positive negative negative positive positive positive negative positive negative positive positive positive positive positive positive positive positive negative positive positive negative positive negative positive positive positive positive positive negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative positive positive negative negative negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive positive positive negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative negative positive negative negative negative positive negative negative negative negative positive negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative positive negative positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative positive negative negative positive negative positive positive positive negative negative positive negative negative positive negative positive negative negative negative negative positive negative positive positive positive positive negative negative positive positive negative negative negative positive negative positive negative positive negative negative negative negative positive negative negative negative positive positive negative negative negative negative negative positive positive negative negative negative positive positive positive positive positive negative positive positive positive positive negative positive positive negative negative negative negative negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive negative negative negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive positive negative positive positive positive positive negative positive negative negative negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative positive negative positive negative positive positive negative negative positive negative negative positive positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative negative negative positive positive positive positive positive positive positive negative positive negative negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive negative positive negative positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive positive negative negative negative negative positive positive positive negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative positive positive negative negative negative positive negative positive positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative negative negative positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive positive negative positive negative negative positive positive negative positive negative positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive positive positive negative negative negative positive positive positive positive negative positive positive negative negative negative negative negative positive positive negative negative negative negative positive positive negative positive positive negative positive positive positive positive positive negative negative positive positive negative positive negative negative negative negative positive negative positive positive negative negative positive positive negative negative positive positive positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative negative positive positive negative positive positive positive positive negative positive negative negative negative negative negative positive negative negative negative negative positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative negative negative positive positive negative positive negative negative negative positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive positive negative negative positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive negative positive positive negative positive negative positive positive positive positive negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive positive positive positive positive negative negative positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative negative positive negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative positive negative positive positive positive negative negative negative negative positive positive positive negative negative positive positive positive positive negative positive positive positive positive negative negative positive negative negative negative negative negative negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive negative negative positive negative negative positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive negative positive negative negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative positive positive positive positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative negative positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative negative negative negative positive positive negative positive positive positive negative negative negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative negative positive negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive positive positive negative positive positive positive negative positive positive negative positive negative positive negative negative positive negative negative positive positive negative negative positive positive positive negative positive positive negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive positive positive negative positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive negative positive negative positive positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative negative negative negative positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative positive positive positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive positive positive negative negative negative negative negative positive negative positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive negative negative negative positive positive positive negative negative positive negative positive negative negative positive positive negative negative positive positive positive positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative negative negative positive positive negative negative negative negative negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative negative negative negative positive positive negative negative positive positive positive positive positive negative negative negative positive positive negative negative positive positive negative negative negative negative positive negative negative positive negative positive negative negative negative negative positive negative positive positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive positive negative negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative negative negative positive positive negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive positive negative negative positive negative positive negative negative positive positive negative positive negative positive positive positive positive positive negative negative positive positive positive positive positive negative negative negative negative negative positive negative negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive positive negative negative negative negative negative positive positive positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive negative negative positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive negative positive negative positive positive negative positive negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative negative positive negative positive positive negative negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive negative negative negative negative negative negative negative negative positive positive negative negative negative negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive negative negative negative positive negative positive negative negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative positive positive negative positive positive positive positive negative positive positive positive positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive negative positive negative positive negative positive negative positive negative positive negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive negative negative negative positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive positive positive positive negative positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative negative negative positive positive negative negative negative positive negative positive negative positive positive negative positive negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative negative negative positive positive negative positive positive positive negative negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive negative positive positive positive positive negative negative negative negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive negative negative positive negative negative positive negative negative positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative positive positive positive positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative positive negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative positive negative positive positive positive negative negative negative negative negative negative positive negative negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative positive positive positive positive negative negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative negative positive positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive positive positive positive negative positive positive positive positive negative positive positive positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative positive positive positive positive positive negative positive negative negative positive negative positive negative negative positive negative positive negative positive negative negative negative negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive positive negative negative negative positive positive positive negative negative positive negative negative negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive negative positive positive negative negative positive positive negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative negative positive negative negative positive positive positive negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive positive positive positive positive positive negative negative negative positive positive negative positive negative positive negative negative negative positive negative negative negative negative positive positive negative positive positive positive negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive positive positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive positive positive negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative negative positive positive positive positive positive negative positive negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative negative positive positive positive positive positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive positive negative positive positive negative positive positive positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative positive negative positive positive positive positive negative negative positive positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative positive positive positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive negative positive negative positive positive positive positive positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive positive negative positive positive negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative positive positive positive positive positive positive negative positive positive negative positive negative negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative negative negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative positive positive negative positive positive positive positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive negative negative negative negative negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative negative positive positive positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive negative negative positive negative positive positive negative positive negative positive negative positive positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive negative negative negative negative positive positive positive positive positive negative negative positive negative negative positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive positive negative positive negative negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive negative negative negative positive negative negative negative negative negative negative negative negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative negative negative negative positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive negative negative negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive positive positive negative negative positive negative positive positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive negative negative negative negative negative negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative negative negative positive positive positive negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative negative negative negative positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative positive positive negative positive negative positive negative negative positive negative negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive positive positive positive positive positive positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive negative positive positive positive negative positive positive negative positive negative positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive negative positive positive negative negative negative positive positive positive negative positive negative positive positive positive positive negative negative positive negative positive negative negative positive negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative positive negative negative positive positive positive positive negative negative negative positive negative positive positive positive positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive positive positive positive negative negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive positive negative positive positive negative negative positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive negative negative positive negative positive negative positive positive negative negative positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative positive positive negative negative positive positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative negative positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive negative negative negative negative negative positive negative negative positive negative negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative positive positive positive positive positive positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative negative negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive positive positive negative negative positive negative positive positive positive negative positive negative negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive negative positive positive positive negative positive positive positive positive positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive positive negative negative negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive negative positive positive positive negative negative negative positive positive positive negative negative negative positive negative positive negative positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive positive positive positive negative negative negative positive negative positive positive negative negative positive positive negative positive negative negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative negative negative positive negative negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative positive negative positive negative positive positive positive positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative positive positive positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive negative positive positive positive positive positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive positive negative positive negative negative positive positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative positive positive negative negative positive positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive negative positive negative positive negative positive positive positive positive positive positive negative positive negative positive negative negative positive positive negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive negative negative positive positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative positive negative negative negative negative negative positive negative positive negative positive positive negative negative negative positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive positive positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative negative negative positive positive positive positive positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative negative positive positive positive negative positive negative positive positive positive positive negative positive positive negative positive negative positive positive negative negative negative positive positive negative negative positive negative positive negative negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative negative positive negative negative positive positive positive negative negative negative negative positive positive positive positive positive positive negative negative negative negative positive negative positive positive negative positive positive negative positive negative negative positive positive positive negative negative positive positive positive negative positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative positive positive negative negative positive positive negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative negative negative negative positive positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative negative positive positive negative negative positive negative negative negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative positive positive negative positive positive negative negative positive negative positive positive negative positive negative negative positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative positive positive positive positive negative positive negative negative negative positive negative negative negative positive positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive positive negative negative positive positive positive negative negative positive positive negative positive negative negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive positive negative positive positive negative positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive negative positive positive positive negative positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative negative negative negative positive positive positive negative positive negative positive negative negative positive positive positive positive negative positive positive negative negative positive positive negative positive negative negative positive positive positive positive positive positive positive negative positive negative negative positive negative positive negative positive positive negative negative negative positive positive negative positive positive positive negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive positive positive positive negative negative positive negative positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive positive negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive negative positive negative positive negative positive negative positive negative negative positive positive positive negative positive negative positive positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive negative positive positive negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive positive negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative negative positive negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive negative positive negative positive positive positive negative positive negative positive positive negative negative positive positive negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative negative positive negative negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive negative positive positive positive positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive negative negative negative negative negative positive positive positive positive negative positive positive negative positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive positive negative positive negative negative positive positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive negative negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive negative negative negative negative negative positive negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative negative positive positive positive positive negative positive negative negative positive positive positive negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative negative negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative negative negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative positive negative positive positive positive negative positive negative negative negative negative positive negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative negative negative positive positive positive positive negative positive negative positive negative negative positive negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative positive positive negative positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive positive negative negative positive positive positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive negative positive positive positive positive negative negative negative positive positive positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative negative positive negative positive negative negative positive positive positive positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive positive negative positive positive positive positive positive positive positive negative negative negative negative positive negative positive positive negative negative positive positive positive positive positive negative negative negative positive negative positive positive negative negative negative negative negative positive positive negative positive negative negative negative negative positive positive negative negative negative negative negative positive positive positive negative negative negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive negative positive negative positive negative negative positive negative negative negative positive positive positive positive positive positive negative negative positive positive positive positive negative positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative positive negative negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive positive negative positive negative positive negative positive negative positive positive negative positive negative positive positive positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive positive negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive positive negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative positive positive negative positive positive negative positive positive positive positive negative negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative positive negative negative positive negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative negative negative negative positive negative negative positive negative negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive positive negative positive positive positive negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative negative negative positive positive positive positive negative negative positive negative positive positive positive positive negative negative positive negative positive positive positive positive negative positive negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive positive negative negative negative negative positive negative positive negative positive negative positive negative positive positive positive negative negative negative positive positive negative negative negative negative negative negative negative negative negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive positive positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative negative negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative negative positive negative negative negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive negative negative negative negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative negative positive negative positive positive positive negative negative negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive negative positive positive negative negative positive negative positive negative negative positive negative positive positive positive positive negative positive negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative positive negative positive negative positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative positive negative negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive positive positive negative negative negative negative positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive positive positive negative positive positive positive negative negative positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive negative positive negative positive negative negative positive negative positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive positive negative negative positive positive positive negative negative positive positive negative negative positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive positive negative positive positive negative negative negative positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative positive negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative positive negative positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive negative positive positive positive positive positive positive negative negative negative positive negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive positive positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative positive negative positive positive negative positive positive positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive negative negative positive positive negative positive positive positive positive negative positive positive positive positive negative positive positive positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative positive positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative positive negative negative negative negative positive positive negative positive negative positive negative positive negative positive negative positive positive positive positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive positive negative positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive positive positive negative negative negative negative positive positive positive negative negative negative negative negative negative negative positive negative positive positive negative positive positive positive positive negative positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative negative negative negative positive positive positive negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive negative positive positive positive negative negative negative positive positive negative negative positive positive positive positive positive negative positive negative negative negative positive negative negative positive positive negative positive negative negative positive negative negative negative positive positive positive positive positive negative negative positive negative positive negative positive negative positive negative positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative negative negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative negative positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive negative positive negative positive positive negative positive positive positive negative positive positive negative negative negative negative positive negative negative negative positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive positive negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive negative negative negative negative positive positive positive positive positive negative negative negative positive positive positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive negative positive positive positive positive positive positive positive negative negative negative positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive negative positive negative positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive negative positive positive positive positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive negative negative positive positive positive positive positive negative positive negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative negative negative negative positive positive positive negative positive positive negative positive negative negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive negative positive negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive positive negative positive positive negative negative positive positive positive positive positive positive positive negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative negative positive positive positive positive positive negative positive negative negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive positive negative negative positive positive negative positive negative negative negative negative positive negative negative positive negative negative negative negative negative positive negative positive positive positive negative negative negative negative negative positive negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative negative negative negative positive positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive negative positive positive positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative positive positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive negative positive positive negative negative negative positive negative positive positive negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative positive negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive negative negative positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative negative positive positive positive positive negative positive negative positive negative positive positive positive positive negative negative positive positive negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative positive negative positive positive positive positive negative negative positive positive positive positive negative negative positive negative positive positive negative negative negative positive negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive negative positive positive positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive negative positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive positive positive negative positive positive negative negative positive negative positive negative positive negative negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative negative negative negative positive positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative negative positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive negative negative negative positive negative positive positive positive negative positive negative negative positive negative negative negative positive positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative positive positive positive negative positive positive negative positive positive positive positive positive positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive negative negative positive positive negative positive negative negative positive negative positive negative negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive positive negative negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative positive positive negative negative positive negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative positive positive positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive positive negative negative positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive positive positive negative positive positive negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative negative positive negative negative positive negative positive negative positive positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative negative positive negative positive positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive negative positive positive positive negative positive positive negative positive positive positive positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive positive positive positive negative positive negative positive negative positive positive negative positive positive positive negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative negative positive negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative negative positive positive positive negative negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive positive positive positive positive negative negative negative negative positive positive negative negative positive negative positive negative negative positive negative negative negative negative positive positive positive positive positive negative negative negative positive positive positive negative positive positive negative negative negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative positive negative positive positive positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative positive positive positive negative negative negative positive positive negative negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative positive positive positive positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative positive positive negative negative positive positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative negative negative negative positive positive positive positive positive negative positive positive negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive negative negative positive positive positive positive positive positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative negative negative negative negative positive negative negative negative negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative positive negative positive negative positive negative positive negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative negative negative negative negative negative positive positive positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive positive negative positive positive positive positive positive positive positive negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative negative positive positive negative negative positive negative positive negative negative negative negative negative negative positive positive positive positive negative positive positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive positive positive negative negative positive positive positive positive positive positive negative negative negative negative positive negative positive negative positive negative negative negative negative negative positive positive negative positive positive positive positive positive positive positive negative positive positive negative positive negative positive positive positive positive negative negative negative positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive negative positive negative positive positive positive positive negative positive positive negative positive positive positive positive negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative negative negative negative negative positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive negative negative negative negative negative positive negative positive positive positive positive negative negative positive negative negative negative negative positive negative negative positive negative negative positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative positive positive negative positive negative positive negative positive positive positive negative positive negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive positive negative positive negative negative negative negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive positive positive positive positive positive positive negative positive negative negative negative positive negative negative negative positive negative positive negative negative negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative positive negative positive negative negative positive positive negative negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative negative negative positive negative positive positive negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative negative negative positive positive negative negative negative positive positive positive negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative positive negative positive negative positive positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative negative positive negative negative positive positive negative negative negative positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative positive positive positive positive negative negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative positive positive negative negative positive negative positive positive negative positive negative positive negative positive positive positive positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive positive negative positive positive negative negative positive negative negative negative negative negative negative positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative positive positive negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative positive positive positive positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative positive negative positive negative negative positive negative positive positive positive positive negative negative positive negative positive positive negative positive positive positive negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative negative negative positive positive negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive negative negative negative positive positive negative negative positive positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive negative positive negative negative positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive positive negative positive positive positive positive positive negative negative positive negative negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive negative negative negative negative positive positive negative positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive positive positive negative positive negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative positive positive negative negative positive positive negative negative positive negative negative negative positive negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative positive negative positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive positive positive positive negative negative positive positive positive positive positive positive negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive positive positive negative positive negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive negative negative positive negative negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative negative positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive positive negative positive negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative positive positive negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative negative positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative negative positive positive negative positive negative negative negative negative negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive positive negative negative positive positive positive negative positive negative positive negative negative negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative positive negative positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative negative negative positive positive negative negative negative negative negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive negative negative positive negative positive positive positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive positive positive positive negative positive negative negative positive negative positive positive negative negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive positive positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative positive negative positive negative negative negative positive negative positive positive negative negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative positive negative positive positive positive negative negative positive positive negative positive negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative positive negative negative positive negative positive positive positive negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive positive positive positive positive positive negative positive negative negative positive negative positive negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative positive positive positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative positive positive negative negative negative negative negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative negative positive negative negative positive positive positive positive negative positive positive positive positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive negative positive positive negative positive negative negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive negative positive negative positive positive negative negative negative negative positive positive negative negative negative positive negative positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative positive positive negative positive positive negative positive negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative negative positive negative positive positive positive negative positive negative negative negative positive negative negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative negative negative positive positive positive positive positive positive positive positive negative negative negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive positive positive negative negative positive negative negative negative positive negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive negative positive negative negative positive negative positive negative positive positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive negative negative positive positive negative positive positive negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative positive positive negative negative negative positive positive negative positive negative negative positive negative negative negative positive positive positive positive positive positive negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive positive positive negative negative positive positive negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive positive negative negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive positive positive negative positive positive positive negative positive positive positive negative negative negative positive positive negative negative positive positive positive positive positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive positive negative positive negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative positive negative positive negative negative negative positive positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive positive positive negative positive negative positive negative positive negative positive positive negative negative negative negative positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative positive negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive negative positive negative positive negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative negative positive positive negative positive positive negative positive negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative negative negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative negative positive positive positive positive negative positive negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative negative positive negative negative positive negative positive positive positive negative negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative negative positive negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative positive positive positive positive negative positive negative negative positive positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative negative positive positive positive positive negative negative negative positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive positive positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative positive positive negative positive negative positive negative negative positive negative positive negative negative positive negative negative positive positive negative positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative negative positive positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative positive negative positive negative positive positive positive negative negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive negative positive negative negative positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative positive positive negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive negative negative positive positive negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive negative positive positive negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative positive positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative positive positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative positive positive positive negative positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative negative negative negative positive negative negative positive positive negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive negative positive negative positive negative positive positive negative negative negative negative positive positive positive positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative positive negative negative positive positive positive negative positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive positive negative negative negative negative positive positive negative positive negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative positive positive positive positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative negative positive positive negative positive positive negative negative negative negative negative positive positive negative positive negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative negative positive positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative positive negative negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative positive negative positive positive negative positive positive negative positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative negative negative positive positive negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive positive negative negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive negative positive positive negative positive negative positive negative positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive positive positive negative negative positive positive positive positive negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive negative positive negative positive negative positive negative positive positive positive positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative negative negative negative positive negative negative positive negative positive positive negative positive positive positive positive negative positive negative positive positive positive negative negative positive negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative negative positive negative positive negative positive negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive negative positive positive positive negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive positive negative positive negative negative positive positive negative positive positive positive negative positive negative positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative negative positive negative negative positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive negative positive negative positive negative negative positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative negative positive negative positive negative negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive positive positive positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive positive positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive positive positive positive negative negative negative negative positive positive negative positive negative negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative positive negative negative negative negative positive positive negative positive negative positive negative positive negative positive positive positive positive negative positive positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative negative positive negative negative positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative positive negative negative negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive negative negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive negative positive positive positive positive negative negative negative negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive negative negative positive negative negative negative negative negative positive negative positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive negative negative positive positive positive negative negative positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive negative positive negative negative positive negative negative positive positive positive negative negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive negative positive negative negative positive positive negative negative positive positive negative negative positive negative negative positive positive negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative positive negative negative positive positive positive positive negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative positive positive positive positive negative positive positive positive positive positive positive negative negative negative negative positive negative negative negative positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive positive negative positive positive negative positive positive negative positive positive positive positive negative negative positive positive positive positive negative positive positive negative negative positive positive negative positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative positive positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive positive negative negative positive positive positive negative positive positive positive negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive positive negative positive negative positive positive positive positive negative positive positive negative negative positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive negative negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative positive positive positive negative positive negative negative positive positive negative negative negative negative positive positive negative negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive positive positive positive positive positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive negative negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive negative positive positive negative negative positive positive negative positive negative negative negative negative positive positive negative positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative positive positive negative positive negative negative positive negative positive positive positive positive negative negative positive positive negative negative positive negative positive negative positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive negative negative negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative positive negative positive negative positive negative positive positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive positive negative negative negative negative positive positive positive positive negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive positive negative positive negative negative positive negative positive negative positive negative negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive positive positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive negative negative positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive positive positive negative positive negative positive positive negative positive positive negative negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive negative positive positive positive negative positive positive negative positive negative negative negative negative positive positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive positive positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive positive positive negative negative positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative negative negative negative negative negative positive negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive negative positive positive positive positive negative negative positive negative positive negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive positive negative positive negative positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative negative positive positive negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative negative negative negative negative negative positive negative negative negative positive negative positive negative positive positive negative positive positive positive negative negative positive positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive negative negative negative positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative negative positive positive positive positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive positive positive positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive positive negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative positive positive negative negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative negative negative negative positive positive positive positive positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative negative negative negative negative positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative positive positive positive positive negative positive positive negative negative positive positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive negative negative negative positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive positive positive positive positive positive positive positive negative positive negative negative positive negative positive negative negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive positive positive positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive positive negative positive positive positive positive negative negative positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative positive negative positive positive negative positive negative positive positive positive positive negative positive positive negative positive negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative negative positive negative positive positive positive positive negative positive positive positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative positive positive positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive negative positive negative positive negative negative positive negative negative negative positive positive negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive positive positive positive negative positive positive negative positive negative positive positive positive positive negative positive negative negative negative positive positive positive negative negative positive negative positive positive positive negative positive positive positive negative negative positive positive negative positive negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative positive negative negative positive positive negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive negative positive negative positive positive positive negative positive positive negative negative negative positive negative positive positive negative negative positive negative negative positive positive positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative negative positive negative positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative negative negative positive negative positive negative negative negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative negative positive positive negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative negative positive positive positive positive negative positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative positive positive negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive positive negative negative positive negative negative negative positive negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive positive negative negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative positive positive positive negative positive positive negative positive negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive negative negative positive negative positive positive positive positive negative negative negative positive positive negative positive positive positive negative positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative negative negative negative negative positive positive positive positive positive negative negative negative positive positive negative positive negative negative positive negative positive positive negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive positive positive negative positive negative positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative positive positive negative negative negative negative negative positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive positive positive positive positive negative negative positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative negative negative negative negative positive positive negative negative positive positive negative positive negative negative negative positive positive negative positive negative negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative negative positive negative negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative positive negative negative negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive negative negative negative negative positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive negative negative negative positive negative positive positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive negative negative positive negative positive negative negative positive negative negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive negative negative negative positive positive positive positive negative positive positive negative negative negative negative positive positive positive positive negative negative negative negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative positive positive positive positive negative negative negative negative positive positive negative positive negative negative negative negative positive negative negative negative positive negative negative negative positive negative positive positive positive positive negative negative positive positive positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative negative negative negative negative negative negative negative positive positive positive negative positive negative negative negative negative positive positive positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive negative positive negative positive negative positive positive negative positive positive positive negative negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative negative positive positive positive negative positive negative negative positive negative positive negative negative negative positive positive positive negative positive negative negative negative negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative negative negative positive negative negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive positive positive positive negative positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive positive positive negative negative positive negative positive negative positive negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative negative positive negative positive positive positive negative positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative positive positive negative positive positive negative negative negative negative positive positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive positive positive positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative positive positive negative positive positive positive negative negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive positive positive negative negative negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive positive positive negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative positive positive positive positive positive negative negative negative negative positive positive positive positive negative positive positive positive positive negative negative positive negative positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative positive negative positive positive positive negative positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative negative positive negative positive negative positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive positive negative positive positive negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative positive positive positive positive positive negative negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive negative negative positive negative negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative negative negative positive negative negative negative positive positive negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive positive positive negative positive positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive negative negative negative negative negative negative positive negative negative positive negative negative negative positive negative negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive positive negative negative negative positive negative positive positive negative negative positive positive positive negative negative negative positive positive negative negative positive negative negative negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive negative negative positive positive negative negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive negative negative negative negative positive negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative negative negative negative negative negative positive negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive negative positive positive negative negative positive negative positive negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive positive negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive positive negative positive positive negative positive negative negative positive positive negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive negative negative negative positive positive positive positive negative negative negative negative negative negative positive negative positive negative positive positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive positive positive positive negative positive negative positive negative negative negative positive positive positive positive positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive negative positive negative negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive positive positive positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive positive negative negative positive negative positive negative negative negative negative negative positive negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive positive negative negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive positive negative positive negative negative positive positive positive negative positive positive positive negative positive negative negative positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive negative negative positive negative negative positive negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative positive negative positive positive positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative negative positive negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive positive negative positive negative positive negative negative positive negative positive negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive positive negative positive positive negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive negative positive negative positive negative negative negative negative negative negative positive negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative positive positive negative negative positive positive positive positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive negative positive positive positive negative positive positive negative negative positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative negative negative positive negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative positive negative negative negative positive negative positive negative positive positive negative negative positive positive negative negative negative positive positive negative positive positive negative negative negative positive negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative positive negative positive positive negative positive negative positive positive positive negative negative negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative negative negative positive negative positive negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative positive negative negative negative positive negative negative negative positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative negative negative positive positive negative positive positive negative positive positive negative negative negative positive positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive positive positive negative negative negative positive positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive positive negative negative negative positive positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative negative negative negative negative positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative positive negative positive positive negative negative positive positive positive negative positive negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive positive positive positive positive positive negative positive positive negative positive negative positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative negative positive positive positive positive positive positive negative negative negative negative negative positive negative negative positive negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative negative positive positive positive positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive positive negative positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative negative negative positive positive positive negative negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive positive positive negative negative negative negative positive negative negative negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive positive positive positive positive negative negative positive positive negative negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive negative positive negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive positive negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive negative negative positive positive negative positive negative negative positive negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive positive positive negative negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative negative positive positive negative positive negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive negative negative negative negative positive positive negative positive negative negative negative negative positive positive positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative negative negative negative negative negative negative negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive negative negative negative negative positive positive positive positive positive positive negative positive positive negative positive positive negative positive positive negative positive positive positive negative negative negative negative negative negative negative negative negative positive positive negative negative negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative negative positive positive positive negative negative negative positive negative positive positive negative negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative positive positive negative negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive negative negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive negative negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive negative negative positive positive negative negative negative negative negative negative negative negative negative positive positive negative positive positive negative negative positive positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive negative positive negative negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive positive positive negative positive positive positive negative negative negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive positive positive positive negative positive negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative positive positive negative positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative negative positive negative positive positive positive positive negative negative positive negative positive positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative negative positive negative positive positive negative positive positive negative positive negative negative negative negative negative positive negative positive positive negative positive positive negative positive negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative negative positive negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative negative positive negative negative negative positive negative negative negative negative negative negative negative positive negative positive negative negative positive negative positive negative negative positive positive positive negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive negative negative positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive positive positive negative negative positive negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive negative negative negative positive positive negative positive negative negative positive positive positive positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative positive negative negative negative negative negative positive positive negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative positive positive positive negative negative negative positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive negative positive negative positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative negative negative positive negative positive positive negative negative positive positive negative negative positive negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive negative negative negative negative positive negative positive negative positive negative positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative negative negative positive positive positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative positive negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative positive negative negative positive positive positive positive negative positive positive negative negative negative positive negative negative negative positive negative positive positive negative positive positive positive positive negative positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative positive positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive negative negative positive positive positive negative positive positive negative positive negative negative negative positive positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive positive positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative positive positive negative positive positive negative negative positive positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive negative negative positive negative positive positive negative negative positive negative negative positive positive negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive negative positive positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative positive negative negative positive negative positive positive positive negative negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive negative negative positive negative positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive negative negative positive positive positive positive negative positive negative negative positive negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive negative positive negative negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative positive negative negative negative positive positive positive negative positive negative negative positive negative positive positive positive negative negative positive negative negative negative negative positive positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive positive positive positive positive positive negative positive negative positive positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive positive negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative positive positive negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative positive negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive positive positive negative negative positive positive negative positive negative positive negative positive positive positive negative negative negative negative positive positive positive negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive positive negative negative negative positive positive positive negative negative negative positive positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative positive negative negative positive positive positive negative positive negative negative positive positive positive negative negative negative negative negative negative positive negative negative positive negative negative positive negative positive positive negative positive positive negative positive negative positive negative positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative positive positive positive negative positive positive negative negative positive negative negative negative negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive positive positive negative negative positive positive negative positive negative negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative negative positive positive positive positive positive positive negative negative positive negative negative negative positive negative negative negative negative positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive positive negative positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive positive positive positive positive positive positive negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative negative negative positive positive positive positive negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative negative negative negative negative negative positive positive positive positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative negative positive positive negative positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive positive negative positive negative positive positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative positive positive positive negative negative positive positive positive negative positive positive positive negative positive positive negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive positive negative positive negative negative positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative positive positive positive negative negative positive negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive positive negative negative positive negative negative positive positive positive negative positive positive positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative negative positive negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive negative negative negative negative negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive negative negative negative negative negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive positive negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative negative positive positive positive positive positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive positive negative positive negative negative negative negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative negative negative positive positive negative positive positive negative negative positive positive positive positive negative positive negative positive negative positive negative negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative negative negative negative negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative negative negative positive negative negative positive positive negative negative negative positive positive negative positive positive negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive negative positive negative positive positive negative negative positive positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive positive positive positive positive positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative negative positive positive negative positive negative positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive negative negative negative negative positive positive negative positive negative negative positive positive positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive positive negative positive negative positive positive positive negative positive negative negative positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive positive positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative positive negative negative negative positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive positive negative positive positive negative positive negative positive negative negative positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative positive positive negative negative positive positive positive positive positive negative positive positive negative negative negative positive positive negative positive positive positive negative negative negative negative negative positive negative negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive negative negative negative negative positive negative positive positive positive positive positive positive positive negative positive positive negative negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative positive positive negative positive negative negative negative negative negative positive negative negative negative negative positive negative positive negative negative positive negative positive positive positive negative positive positive positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive positive negative negative negative positive positive negative negative positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive negative negative positive positive positive positive positive positive negative positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive negative negative positive positive negative positive negative negative positive positive positive negative negative positive positive positive negative negative positive positive positive positive positive positive negative negative positive positive positive negative positive negative positive negative positive positive negative negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative negative positive negative negative positive positive negative negative positive negative positive negative negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative negative negative positive positive positive positive positive negative negative positive negative negative negative positive negative negative negative negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive positive positive positive negative positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive positive positive negative positive positive negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative positive positive positive negative negative negative negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive positive negative positive negative negative positive positive negative positive negative positive negative positive negative negative negative positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative negative positive positive positive negative positive negative negative positive negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive positive negative negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive negative negative negative positive positive negative positive negative negative negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive negative positive positive negative positive negative negative negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative positive positive positive positive negative negative negative positive negative positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative positive negative negative positive negative negative positive negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive positive positive negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative negative negative negative positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative positive negative negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative negative negative negative negative negative positive positive negative positive positive negative positive negative positive positive negative negative negative positive positive positive positive negative negative negative positive positive negative negative positive negative negative negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive negative positive negative negative negative positive positive negative negative positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive negative positive positive positive negative positive positive positive positive positive negative negative positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative negative positive positive positive negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative positive negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative positive positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative negative negative positive negative positive positive positive negative positive positive positive positive negative negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive negative negative negative negative negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative negative positive positive positive negative positive positive positive positive negative positive negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive positive positive negative negative positive positive positive negative negative negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative positive negative positive positive positive positive negative positive positive negative negative negative positive negative positive negative positive positive negative negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive positive positive positive positive negative negative negative negative negative positive negative positive negative negative negative positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative positive positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive negative negative negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive positive positive positive negative positive negative positive negative positive negative positive negative positive negative negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative negative negative positive negative positive positive positive negative negative negative negative negative positive positive positive positive negative positive positive positive positive positive negative negative negative positive negative positive negative positive negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative positive negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative negative negative negative negative positive positive negative positive positive positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive negative positive positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative positive negative positive positive negative positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative negative positive negative negative negative negative positive negative negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative positive positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative positive negative positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive negative positive positive negative negative positive negative positive positive negative positive positive negative negative positive positive negative positive negative positive negative negative negative negative positive negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive positive positive negative negative negative negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive positive negative positive negative negative negative negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative negative negative negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive negative positive positive negative positive negative negative negative positive positive positive negative positive positive negative positive negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive negative negative negative positive negative positive negative positive positive negative positive negative negative negative positive positive positive positive positive positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative negative negative positive negative negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive positive negative positive positive negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative negative negative negative positive positive positive negative negative positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative negative negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative negative negative negative negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative negative negative positive positive negative positive negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive positive negative negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative positive positive positive positive positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative positive negative positive positive negative positive positive negative positive negative negative negative negative positive positive positive positive positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative positive positive positive positive positive negative negative positive negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative positive positive negative positive negative negative positive negative positive positive positive positive negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative negative negative positive negative negative positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative negative negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative negative negative negative negative positive positive negative negative negative negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative negative negative negative negative positive positive negative negative negative positive positive negative positive negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive positive negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive positive negative negative positive positive positive positive positive negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive positive negative negative negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive positive positive negative negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative positive positive negative negative positive positive negative positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive positive positive positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive negative negative positive positive positive negative positive negative positive negative negative positive positive negative positive negative positive positive positive negative negative positive positive positive negative positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative positive negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative negative positive positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive positive negative positive negative positive positive negative positive negative negative negative positive negative positive negative positive negative positive negative positive positive positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive positive positive negative negative negative positive positive positive positive negative negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative negative positive positive negative negative positive positive positive positive negative positive positive negative negative positive positive negative negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative positive positive negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive negative negative negative negative positive negative positive positive negative positive positive positive positive negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive negative negative positive positive negative positive negative negative positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive positive negative positive negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive negative positive negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative positive negative negative negative positive positive positive negative positive positive negative positive positive positive negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive positive negative negative positive negative negative negative positive negative negative positive negative negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative negative positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative negative positive negative positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative negative negative negative positive negative positive positive negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative negative positive negative negative negative positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative negative negative negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive positive negative negative positive negative positive positive positive positive negative negative positive positive positive negative negative positive positive negative negative positive positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive positive positive negative positive negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive negative negative negative positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative negative negative positive positive negative positive positive negative positive positive positive negative negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive positive positive negative positive positive positive negative negative negative positive negative negative positive positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative negative negative positive positive positive positive negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative positive positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative positive negative positive negative negative negative positive positive positive positive negative negative negative negative positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive positive negative negative negative negative negative positive negative negative negative positive positive negative negative positive positive positive positive positive negative negative positive positive negative negative positive positive positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative negative negative negative positive negative positive negative positive negative negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive positive positive negative negative negative positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative positive positive positive positive negative positive positive positive positive positive positive negative negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative positive positive positive negative negative negative negative negative negative positive negative negative positive negative positive negative positive positive negative positive negative positive negative negative negative positive negative negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive negative positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive positive positive positive positive negative positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive positive positive negative negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative positive negative negative negative negative positive negative negative negative positive positive negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative positive positive negative positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive negative positive negative negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative negative negative negative negative positive negative positive negative positive positive positive positive positive negative negative positive positive negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative positive positive negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive negative negative negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive positive positive positive positive positive negative negative negative positive positive negative negative negative negative positive negative negative positive negative positive negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive positive positive negative positive negative positive positive negative negative negative negative positive positive positive positive negative positive positive negative negative positive negative negative positive negative positive positive positive negative negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive positive positive positive positive negative positive positive negative negative positive positive negative positive negative negative negative negative positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive negative negative negative negative positive positive negative negative positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive positive negative negative positive positive negative negative negative negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive negative positive positive negative negative positive positive negative positive positive positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive negative positive positive negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative negative positive positive negative positive positive negative positive positive positive positive positive negative negative positive negative positive positive negative positive negative negative positive positive positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative positive negative positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative positive positive positive negative negative positive negative positive positive negative negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative positive negative negative negative negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive positive positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative negative negative negative positive positive positive negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative negative negative negative negative positive negative positive positive positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative negative positive negative negative positive negative negative negative positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative negative negative positive negative positive negative negative negative negative negative positive negative negative negative positive negative negative positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive negative positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative positive negative positive negative negative negative positive negative negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative negative negative negative negative positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative negative negative positive negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative negative positive positive positive positive positive negative positive positive negative positive positive positive negative negative positive negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive positive negative negative negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative negative positive positive positive positive negative positive positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive positive positive negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative positive positive positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive negative negative negative positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive negative positive positive negative positive negative negative negative positive positive positive positive negative positive negative negative positive positive positive negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive positive negative negative negative positive positive negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive negative negative negative negative positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative positive negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive negative negative negative negative positive positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive positive negative positive negative positive negative positive negative negative negative positive negative positive negative positive negative positive negative negative positive positive negative negative negative positive positive positive negative positive positive positive positive negative negative positive positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative positive negative positive positive negative positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative negative positive positive positive positive positive positive positive negative negative negative positive positive positive positive negative positive positive negative negative negative positive positive positive positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative negative positive positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative positive negative negative positive positive positive negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative positive positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive positive negative positive positive positive negative negative negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive positive negative positive negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive negative positive negative positive positive positive positive negative positive positive negative positive positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive negative positive negative negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive negative positive negative positive positive negative positive negative positive positive negative negative positive positive negative positive positive negative positive negative negative negative positive positive negative negative positive positive negative positive positive positive negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive positive positive positive negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive positive negative negative positive negative positive positive negative positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive positive negative positive negative negative positive positive negative negative positive positive negative positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive negative positive positive positive negative negative positive positive positive positive positive negative negative negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive negative negative positive negative positive positive positive positive positive positive negative positive positive negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive negative positive positive negative positive negative negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive negative positive negative negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative negative positive positive negative positive negative negative negative positive negative positive positive positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative negative positive negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive positive positive negative positive negative negative negative positive negative positive positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive negative negative positive negative negative negative positive positive negative positive negative positive positive negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive negative positive negative positive negative negative positive positive negative positive negative negative positive positive negative negative positive positive negative positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive negative negative positive positive positive negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative negative positive positive positive negative negative negative positive negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative positive negative positive negative positive positive negative negative positive positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive negative positive negative positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive positive negative positive positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative positive negative positive negative positive positive positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative negative negative negative positive positive positive negative positive negative negative positive negative negative positive negative negative positive negative positive positive negative positive negative negative positive negative negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive positive negative positive negative negative negative negative negative positive negative positive positive positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive positive negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive negative negative negative negative positive negative positive positive negative negative positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive negative negative negative negative positive positive negative negative negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative negative negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative positive positive negative positive negative negative negative negative negative negative negative negative negative positive positive positive positive positive negative negative negative negative negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative negative positive negative positive negative positive positive negative positive negative negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative positive positive positive positive negative positive negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive positive negative negative positive negative positive positive negative negative negative positive positive positive negative positive positive positive negative negative positive positive negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive negative negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative negative negative positive positive positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive positive negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive negative negative positive positive positive negative negative negative positive positive negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive positive negative positive positive negative negative positive positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative negative negative negative negative negative positive negative negative positive negative negative negative positive positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive negative positive positive negative positive positive negative positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive negative positive negative negative negative negative positive positive negative negative negative positive negative positive positive positive positive positive negative positive negative negative negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive positive negative negative positive negative negative positive positive negative positive positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive negative positive positive positive negative positive positive negative positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive negative positive positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive positive positive negative positive positive negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative negative positive negative positive negative positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative positive positive negative positive positive negative negative positive positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive negative negative positive negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative positive positive positive negative positive positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative negative positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive negative positive negative negative negative positive negative positive positive positive positive negative negative positive positive negative positive negative positive negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive negative positive negative positive positive positive negative positive positive negative negative positive positive positive positive positive positive negative negative positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative negative negative negative negative negative positive positive positive positive negative negative negative negative positive negative positive positive negative positive positive positive positive positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative positive negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive positive positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative negative negative positive positive negative positive negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative negative negative positive positive negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative positive positive negative negative negative positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative positive negative negative positive negative negative negative positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive negative negative negative negative negative negative positive positive positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive positive negative positive positive negative negative negative positive positive positive negative negative negative negative negative negative positive negative negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive positive negative negative positive negative positive negative positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive negative negative negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive positive positive negative positive positive negative negative negative positive negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative positive negative positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive negative positive positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative positive negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive negative positive positive positive negative positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive positive negative positive positive positive positive negative negative negative positive negative negative positive negative positive positive negative positive positive positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive positive positive negative negative negative negative positive negative positive positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive positive positive negative positive negative negative negative negative positive negative positive positive negative negative positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive negative positive positive negative negative negative negative negative negative positive positive positive negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive positive negative negative negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive negative negative positive positive positive positive positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative negative positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative positive positive positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative negative negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive positive positive negative negative negative positive negative positive negative positive negative negative positive positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive negative positive negative negative positive positive negative negative positive negative positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive negative negative positive positive positive negative positive positive positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive negative positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive positive positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive negative positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive negative negative positive positive negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive positive positive positive negative positive positive positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative positive positive positive positive negative positive negative negative negative positive positive negative positive negative negative negative negative negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive positive negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive positive negative negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive negative positive positive positive negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive positive negative positive positive positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative positive negative positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative negative negative negative negative negative positive positive negative positive positive positive negative negative negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative negative positive positive positive positive negative negative positive negative positive positive positive positive positive positive negative positive negative positive positive negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive negative positive negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive negative negative negative negative positive negative positive positive positive positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive negative negative positive negative positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive positive positive negative negative positive positive positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive positive negative negative negative positive negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative positive positive positive positive positive positive positive positive negative negative negative negative positive positive positive positive positive positive positive positive negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative positive negative positive positive negative negative negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative positive negative negative negative positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive negative negative positive positive negative negative negative positive negative positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive positive negative positive positive positive negative positive negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative positive negative positive positive negative positive positive negative negative positive negative positive negative positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive negative negative negative positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive negative negative positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive negative negative negative negative negative negative negative positive positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative positive negative negative positive positive negative negative positive positive negative negative negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive negative positive negative positive positive negative negative negative positive negative negative negative positive positive positive positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive negative negative positive positive negative negative positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive positive positive negative positive positive negative negative positive positive positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive positive positive positive negative positive positive negative positive negative positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive positive negative negative negative negative positive negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative negative positive positive positive positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative positive positive negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative positive negative positive negative negative positive negative negative negative positive negative negative negative positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative positive negative positive positive positive positive positive positive negative negative negative positive negative positive negative positive positive positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative negative negative positive negative positive positive positive negative negative positive negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive negative negative positive negative positive positive negative negative positive positive negative positive positive positive positive positive positive positive positive negative positive positive positive negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive positive negative negative positive positive positive positive negative positive positive positive positive negative positive negative negative negative negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative negative negative positive negative positive negative positive negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive negative positive positive positive positive positive negative negative positive positive positive negative positive positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative negative negative negative positive positive negative positive negative positive positive negative positive negative positive negative negative positive positive positive positive negative negative positive negative positive positive negative positive negative negative positive negative positive negative positive positive positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative positive positive negative positive negative negative positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive negative negative positive positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative negative positive positive negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative positive positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative negative positive positive negative positive positive negative positive negative negative negative negative positive positive negative negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive positive negative positive positive negative positive negative negative negative positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative negative negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative negative negative positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive negative positive negative positive negative positive negative positive negative positive negative positive positive negative negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive negative positive negative positive positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative negative positive positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative positive positive negative positive positive negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive negative positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative positive negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative positive positive positive negative positive positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative negative positive positive positive negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive positive positive negative positive positive positive positive negative positive positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative negative negative negative positive negative positive negative positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive negative positive negative negative negative positive positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive positive negative positive negative positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive negative positive negative positive negative positive negative positive negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative positive positive positive positive positive positive positive negative negative negative positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive positive negative positive negative negative positive negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative negative negative positive negative negative positive positive negative negative positive negative positive negative positive positive negative negative positive negative negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative positive positive negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative negative positive positive positive negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive negative positive negative positive positive negative positive negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive positive negative negative negative negative positive positive positive positive positive negative negative negative positive positive positive positive negative positive positive negative positive positive positive negative negative positive negative negative positive positive positive positive negative negative negative positive negative positive positive positive negative positive negative positive negative positive positive positive positive positive negative negative positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative negative positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive negative positive positive negative negative positive positive positive positive positive negative negative negative negative negative positive negative negative positive negative negative negative positive positive positive positive positive negative negative positive negative positive positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive positive negative negative positive positive negative positive positive negative positive negative positive negative positive positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative negative positive negative positive negative negative negative positive positive negative negative negative negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive negative negative positive positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive positive negative negative positive positive negative positive positive positive positive negative negative negative positive negative negative positive positive positive positive negative negative positive negative positive positive negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative positive negative negative positive positive negative positive positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive positive positive positive negative negative negative negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative negative positive negative positive negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative negative negative negative positive negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive positive negative negative negative positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative positive negative positive positive positive negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive negative positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative negative positive positive negative negative negative negative negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive positive negative positive positive positive positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive negative negative positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative negative negative negative positive positive negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative positive positive positive positive negative positive positive negative negative positive positive positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative positive positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive positive positive negative positive negative positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative positive positive negative negative positive positive positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative negative positive negative negative negative positive negative negative negative positive negative negative negative negative negative positive positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive positive positive negative positive positive positive negative negative negative negative negative positive negative negative positive negative positive positive negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative positive positive negative positive negative negative negative positive positive positive positive positive negative negative positive negative negative negative negative negative positive negative negative positive positive negative positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive positive negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative negative negative positive negative negative negative positive negative positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive negative negative positive negative positive positive positive negative positive negative positive positive positive positive negative negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative negative positive negative negative positive negative positive positive negative positive positive positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative positive positive positive negative positive negative negative negative positive positive positive positive positive negative positive positive positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative positive positive negative positive positive positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive positive negative positive positive positive negative negative negative negative positive positive negative positive negative negative positive negative positive negative negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative negative positive positive negative positive positive positive negative negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative negative negative positive negative negative negative negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive negative negative negative positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive negative negative negative negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative positive positive negative negative negative negative positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive negative positive negative positive negative negative positive negative negative positive negative positive positive negative negative negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative negative positive negative positive negative positive positive positive negative negative positive negative negative negative positive negative negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative positive positive negative negative negative positive negative negative positive positive negative negative negative negative negative positive positive positive positive negative negative negative negative positive positive negative positive negative negative positive negative positive positive positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive negative negative positive negative positive negative negative positive positive positive negative negative negative negative positive positive negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative negative positive negative negative positive negative negative negative negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive negative negative negative positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative negative negative positive negative positive positive positive positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive negative positive negative negative positive negative positive negative positive negative positive positive positive negative negative negative positive positive positive positive negative negative positive positive negative positive positive negative positive positive positive positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive negative negative positive positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative positive negative negative negative negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive positive positive positive positive positive negative negative positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive negative positive negative negative positive positive positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive positive positive negative negative negative positive positive negative negative negative positive negative negative positive positive negative positive negative positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive positive negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative positive negative positive negative positive positive positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative positive negative negative positive negative negative negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive negative negative positive negative negative negative positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive positive positive positive positive positive negative negative negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative positive positive negative negative positive negative positive positive negative positive positive negative positive positive positive positive negative negative positive negative positive negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative positive negative positive positive negative positive positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative negative negative positive negative negative negative negative positive positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive negative positive negative negative negative negative positive positive positive positive positive positive positive negative negative negative positive positive negative negative positive positive positive negative positive negative negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive negative negative positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative positive positive positive negative positive negative positive negative positive positive negative positive negative negative negative negative negative negative positive negative positive positive positive positive positive negative negative negative positive negative negative negative positive positive positive positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative positive positive positive positive positive positive negative negative negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative positive negative positive positive negative positive negative positive negative positive negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative positive positive negative negative negative positive negative negative positive negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive positive positive negative negative positive negative positive negative positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive positive negative negative positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative negative positive negative positive positive negative positive negative positive negative negative negative negative negative negative positive positive negative positive negative negative negative positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive negative positive negative positive negative negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative negative positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative positive negative negative negative positive positive negative positive positive positive negative positive positive negative positive negative negative negative positive negative positive negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative positive positive positive negative positive positive negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive positive negative negative positive positive positive negative positive positive negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive positive negative negative negative negative negative positive negative positive positive positive negative negative positive positive positive positive negative positive positive negative positive positive positive positive positive positive negative negative negative negative positive positive positive negative positive negative positive positive positive negative negative positive negative negative positive negative positive negative negative negative positive positive positive positive positive negative positive negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative negative positive positive negative positive positive positive negative negative negative negative negative negative negative positive positive negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative positive negative positive positive negative negative positive negative positive negative negative positive negative positive positive negative positive negative positive negative positive positive negative positive positive positive negative positive negative positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative negative negative positive positive positive negative negative positive positive positive positive negative negative negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive positive negative positive positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive positive positive positive negative positive negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative negative negative positive positive negative positive positive negative positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive negative negative negative positive positive negative negative positive negative positive positive positive negative negative negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative positive positive positive positive negative negative positive positive positive positive positive negative positive positive positive positive negative positive negative positive negative negative positive positive negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative positive positive negative positive negative positive positive positive negative positive negative negative negative positive negative positive negative negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive negative negative negative negative negative positive negative positive negative negative positive negative positive negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive positive negative positive negative positive positive negative positive positive positive negative positive negative positive negative positive negative negative negative negative negative positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative negative positive positive positive positive negative negative positive positive negative positive negative negative positive negative positive positive positive positive positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative positive negative positive negative positive positive positive negative negative positive negative negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative negative positive positive positive positive negative positive positive negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive negative negative positive positive positive negative negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative negative negative positive negative positive positive negative positive negative negative positive negative positive negative positive positive negative negative positive positive positive positive negative negative positive negative negative negative negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative negative positive negative negative positive negative positive negative negative negative positive positive negative negative positive positive negative positive negative negative negative negative positive negative positive negative positive positive positive negative negative negative positive positive negative positive positive positive negative positive negative positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive negative positive positive negative negative negative positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive positive negative negative negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive negative negative positive positive negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive positive positive negative negative positive positive negative positive positive negative positive negative positive negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative positive negative negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative negative positive positive positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive positive negative positive positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive negative negative positive negative negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative positive negative negative negative negative positive positive positive negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive positive positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive negative positive positive negative positive positive negative positive negative negative negative positive positive negative negative positive positive positive positive negative negative negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive negative positive negative negative negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive negative negative negative positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive negative positive positive positive negative positive positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive positive negative positive negative negative positive positive negative positive negative negative negative positive negative negative negative negative negative negative positive positive negative negative positive negative negative positive positive positive positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative positive negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive negative positive positive negative negative positive negative negative positive negative positive positive negative negative negative positive positive negative negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative positive positive negative negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative positive positive positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative positive negative positive positive negative negative negative positive positive negative positive negative positive positive positive negative positive positive positive negative positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive positive positive negative negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative negative positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive negative negative positive positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive positive positive negative positive negative positive positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative negative positive negative positive positive negative positive negative positive positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive positive positive positive positive negative positive negative positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative positive negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative negative positive negative negative positive negative negative negative positive negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative positive negative negative positive positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive positive negative negative positive negative positive positive negative positive negative negative positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive positive positive negative positive negative negative negative negative positive positive positive positive positive negative negative positive negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative negative positive negative positive negative positive negative negative positive positive positive negative positive positive positive positive positive positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative positive negative positive positive negative negative positive positive negative positive positive positive positive negative negative positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative positive negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive positive positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative negative positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative positive negative positive positive positive negative negative positive positive negative negative positive positive positive positive positive negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative positive negative negative positive positive positive positive positive negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive positive negative positive negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive positive negative negative negative negative negative negative negative negative positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive negative negative positive negative positive positive positive positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive positive positive negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative positive positive negative negative positive negative positive positive negative negative positive negative negative negative negative positive negative negative negative positive negative negative negative negative positive positive negative positive negative negative positive negative positive negative positive positive negative positive negative positive positive negative positive negative negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative negative negative positive negative positive positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative positive positive positive negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive positive positive positive positive negative positive positive negative positive positive positive positive negative negative positive negative positive positive negative negative positive negative negative negative negative negative negative positive positive positive positive positive positive negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative positive negative positive positive positive positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive negative positive positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative negative positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative negative negative negative negative negative positive positive positive negative negative negative negative positive positive positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive positive negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive positive positive negative positive negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative positive positive positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative negative positive positive positive positive negative negative positive negative positive negative negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive negative negative negative negative positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative negative negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative positive negative positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive negative negative positive negative positive positive negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive negative positive negative negative positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative positive negative positive positive positive positive negative negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive positive negative positive positive negative positive positive positive negative positive positive negative positive positive positive positive negative positive positive positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive negative positive positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative negative negative positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive negative negative positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive negative positive positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive positive positive negative positive positive negative positive positive negative positive negative negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive positive negative negative negative negative positive positive positive positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive positive negative negative negative negative negative negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative positive positive negative negative positive positive positive negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative negative negative negative positive positive positive positive positive negative positive positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive positive negative positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive positive positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative positive negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative negative positive positive positive positive positive positive positive negative positive positive negative positive negative negative positive negative positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative negative negative negative positive negative negative positive negative negative negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative positive negative negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative negative negative negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative positive positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative negative positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative negative negative negative positive negative negative positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive negative positive positive negative negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive negative positive negative negative positive negative positive positive positive negative positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive negative negative positive negative positive positive negative positive negative positive negative positive negative negative positive negative positive positive positive negative negative positive positive positive negative negative positive positive negative positive positive negative positive positive positive positive negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative negative positive negative negative positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative negative negative negative positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive positive negative positive positive positive positive positive positive positive positive positive negative negative negative positive positive positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive positive positive negative positive positive positive positive positive negative negative positive positive negative negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative negative positive negative negative negative positive negative positive negative positive positive negative negative negative negative negative negative negative positive negative positive positive positive negative negative negative negative negative positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive negative positive negative positive positive negative positive positive positive negative positive positive positive negative positive negative negative positive positive negative positive negative positive negative positive negative negative positive positive negative negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive negative positive positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative negative positive positive negative positive negative negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative positive negative negative positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative negative positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive negative positive positive negative negative negative positive positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive negative positive negative positive negative negative negative positive positive positive positive negative positive negative positive negative negative positive negative negative negative negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative positive negative negative negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive positive negative positive positive negative positive negative negative negative positive positive positive positive negative negative negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive negative positive negative negative negative negative negative positive positive positive negative positive positive positive negative negative negative positive positive positive positive positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative positive positive positive positive positive negative positive positive negative positive negative positive positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive positive negative negative negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive positive positive negative negative negative negative negative negative positive positive negative negative negative negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative negative negative negative positive negative positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive positive negative positive positive positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive negative positive negative negative negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative negative positive positive positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative negative negative positive positive positive positive negative negative positive positive negative positive positive negative positive positive positive negative positive positive negative negative positive positive positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative positive positive negative positive negative negative negative positive positive negative negative positive positive positive positive negative negative negative positive positive positive negative positive negative positive positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative negative negative positive negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive positive negative positive negative positive negative negative positive positive positive positive negative positive negative negative positive positive negative positive positive positive negative negative negative positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive negative positive negative negative negative negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative positive positive negative positive negative negative negative positive negative negative negative positive positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive positive negative negative negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative negative positive negative positive negative negative positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative negative negative negative positive negative positive positive negative negative positive negative positive negative positive positive positive positive negative negative negative negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive negative positive positive positive positive positive negative negative negative positive positive negative positive negative negative negative negative negative negative negative positive negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive negative negative negative negative positive negative positive negative positive positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive positive negative negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive negative negative negative negative positive negative positive negative negative positive negative negative positive negative positive positive positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative positive positive negative positive positive positive negative positive negative positive positive negative negative negative negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative positive positive positive positive negative negative negative negative negative negative positive positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive negative positive negative negative negative positive positive positive positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive positive positive positive negative positive negative positive positive positive negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative negative positive positive positive negative positive positive negative positive positive positive positive negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive negative negative negative positive negative positive positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative positive negative positive positive positive negative negative positive positive negative positive negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative negative positive negative positive negative negative negative negative negative negative positive negative negative negative negative positive negative negative negative positive positive positive positive negative positive positive negative positive negative positive positive positive negative positive negative negative negative negative positive positive negative positive positive positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive positive negative positive positive positive positive negative negative negative negative positive negative negative negative negative positive positive positive negative positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative positive negative positive negative negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative negative negative positive positive negative positive negative positive positive positive positive positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive positive negative negative positive negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative negative positive positive negative positive negative negative negative positive negative negative negative negative negative negative positive negative negative negative positive negative negative negative negative negative positive negative positive negative negative negative positive negative positive negative positive positive positive positive positive positive negative negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative positive positive positive positive negative negative positive negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive positive negative positive positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive negative positive negative negative negative positive positive positive positive negative negative negative negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative positive negative negative negative negative positive positive negative negative negative negative negative positive negative negative negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative positive positive positive positive positive negative negative negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative positive negative negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative negative negative negative positive negative positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative positive negative negative negative positive positive positive positive negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative negative negative positive positive positive positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive positive negative positive negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive negative negative negative positive negative positive negative negative negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative negative positive negative positive positive negative negative positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive positive positive positive negative negative positive positive negative positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive positive negative negative negative positive positive positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive negative negative positive positive positive positive negative negative positive positive positive positive negative negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative negative positive negative negative negative positive positive positive positive positive negative positive positive positive positive positive negative positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive negative negative positive negative negative positive positive positive positive negative negative negative positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive negative negative negative negative negative positive positive negative negative negative negative positive negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive positive positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive negative negative positive positive negative positive negative positive positive negative negative negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive negative negative positive positive negative negative positive positive positive negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive negative negative positive positive positive negative negative positive positive positive negative negative positive negative positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive positive positive negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative negative negative positive negative negative negative negative negative positive positive negative positive negative negative positive negative negative positive negative negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive positive positive positive negative negative positive positive negative negative negative positive negative positive negative positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive negative positive positive positive negative positive negative negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative positive negative positive negative negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive positive negative negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive positive negative positive negative positive negative negative negative positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative positive negative positive positive positive negative negative negative positive positive positive positive negative positive positive positive positive negative negative negative negative positive negative positive positive negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive positive positive negative negative positive negative negative negative negative positive positive negative positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative positive negative negative positive positive negative positive positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive negative negative positive positive positive positive negative positive negative positive positive negative positive positive negative positive positive positive negative positive positive positive positive negative positive negative positive positive positive negative negative negative negative positive positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative positive positive negative positive negative positive negative positive positive negative positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive negative positive positive positive negative negative negative positive negative positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive positive positive positive negative negative positive negative positive positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative negative positive negative negative negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative positive positive negative negative positive positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative positive positive positive positive negative negative negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive positive negative negative positive positive negative positive positive positive positive positive negative positive positive positive positive positive negative positive positive positive negative positive negative negative negative positive positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive positive negative positive negative positive negative positive negative positive positive negative positive negative negative negative positive negative negative positive negative positive positive negative positive positive negative negative positive positive negative negative positive positive positive negative negative positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive negative positive negative negative positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive negative negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive negative negative negative negative positive positive positive negative negative negative positive positive positive positive negative negative positive positive negative positive negative positive negative positive negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive positive positive positive negative positive positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative negative negative negative negative negative negative negative negative positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative negative negative negative positive positive negative negative positive negative negative negative negative negative positive negative positive positive positive negative negative positive positive negative negative negative positive positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative negative positive negative positive positive negative negative positive positive negative negative negative positive negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive positive positive negative negative positive positive positive positive positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative positive positive negative positive negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative positive positive negative negative positive positive negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive positive negative positive positive negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative negative positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative positive positive negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive positive negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive negative positive negative negative positive positive negative negative negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative negative positive positive negative positive negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive positive positive negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive negative negative positive positive negative negative negative positive negative negative negative negative positive negative negative negative negative negative negative positive positive positive negative positive positive negative negative negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative negative negative negative negative negative negative negative positive negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive positive positive positive positive positive positive negative positive positive negative negative negative negative negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative negative positive negative negative positive positive negative negative positive positive negative negative positive positive positive negative positive negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive negative negative positive positive positive positive positive positive positive positive negative positive negative negative positive negative positive negative negative positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive negative positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive positive negative positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive negative negative positive negative positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive positive positive negative positive positive positive negative negative negative negative positive positive negative negative positive positive positive negative positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive positive positive positive positive positive negative negative negative positive positive positive negative positive positive negative negative positive negative negative positive negative positive negative negative positive positive positive positive negative positive positive positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive negative positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive negative negative positive negative positive positive negative positive positive negative positive positive positive positive positive negative positive positive negative negative negative negative negative negative positive positive negative negative negative positive negative positive positive negative positive negative negative negative negative positive positive positive negative negative negative negative positive positive negative negative negative negative positive negative negative positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative negative positive positive negative positive positive negative positive negative positive positive negative negative negative negative positive negative negative negative negative negative negative positive negative positive positive negative negative negative positive negative negative negative negative negative positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive negative positive negative negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive positive positive positive positive negative negative positive negative positive negative positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive negative negative positive positive negative positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative negative positive negative positive negative positive positive positive negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive negative positive negative positive negative positive negative negative negative positive positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive negative positive negative negative negative positive negative positive positive positive positive negative negative positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive positive positive negative negative positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative negative negative positive positive negative positive negative positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive positive negative negative negative positive positive negative negative positive negative negative negative negative positive positive positive negative positive positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative positive positive negative positive negative positive positive positive negative negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative negative positive positive positive negative positive negative positive positive negative positive negative positive positive positive negative positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative negative negative positive positive negative negative positive negative positive negative positive negative positive positive positive negative negative negative negative negative positive negative positive positive positive negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative positive negative negative positive positive positive positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive negative negative positive negative positive positive negative negative negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative negative negative positive negative negative positive positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive positive positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive negative positive positive negative negative positive negative positive positive negative positive negative negative positive positive negative negative negative positive negative positive positive negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive negative negative positive positive positive positive positive negative positive negative negative positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative negative negative positive positive positive positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive positive positive negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive positive positive positive negative positive positive negative positive negative negative negative negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive negative negative negative negative positive positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive positive positive positive negative positive negative positive positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive positive negative positive positive positive positive negative negative positive positive positive negative negative positive positive positive positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive positive negative negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative positive negative negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative positive negative positive positive negative negative positive negative negative negative negative positive negative negative positive positive negative negative positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive negative negative negative negative negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative positive positive positive positive negative positive positive positive positive positive positive positive negative negative positive negative negative positive positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive negative negative negative positive negative positive negative negative negative positive negative negative negative positive negative positive negative positive positive negative positive negative negative negative negative positive negative positive positive positive positive negative negative positive negative negative positive positive negative negative positive positive positive positive positive negative negative positive positive positive positive negative negative negative negative negative negative negative negative negative positive negative negative positive positive negative positive positive negative positive positive positive negative positive positive positive positive positive positive positive positive positive negative positive negative negative positive positive positive positive negative negative negative negative positive positive negative negative negative positive positive positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive positive negative negative positive negative negative negative negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative negative negative positive negative positive negative positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive negative positive positive positive negative negative positive negative negative negative positive positive positive negative positive negative positive positive positive negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive positive negative positive negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive negative positive positive negative positive negative positive negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive negative negative negative negative positive positive positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive positive positive positive positive negative negative negative negative negative positive negative negative negative positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative positive negative negative positive negative negative positive negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative positive negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative negative positive negative negative negative positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive positive positive negative negative positive negative negative negative positive negative positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive negative positive negative negative negative positive negative positive positive positive negative negative positive negative negative negative positive negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative negative negative positive positive positive negative negative positive negative negative positive positive negative positive positive positive positive positive positive positive negative positive negative positive positive positive negative negative negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive positive positive negative positive negative negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative positive negative negative negative negative positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive positive positive negative negative positive positive negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative negative positive positive positive negative positive negative negative positive negative positive negative negative positive negative positive positive positive positive positive positive negative positive positive positive positive negative positive negative positive negative positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative negative positive negative positive negative negative negative positive positive positive positive positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative positive positive positive positive negative negative positive positive positive negative negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative positive positive positive positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative negative positive positive positive positive positive negative positive negative negative positive negative negative positive positive positive negative negative positive positive negative negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive negative positive positive positive positive negative negative negative positive negative positive negative positive negative negative negative negative negative positive positive negative negative positive positive positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive positive positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative positive negative positive negative positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive negative positive negative positive negative positive positive positive negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive negative positive positive negative positive positive positive negative positive positive negative negative negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive negative positive negative positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive positive positive positive positive positive negative positive positive positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive positive negative negative positive negative negative positive positive negative negative positive negative negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive negative positive negative positive positive negative negative negative positive negative negative positive negative positive negative negative positive negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive negative positive positive positive positive positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative negative negative positive positive positive negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative negative negative negative negative positive positive positive positive negative positive negative positive negative negative positive negative negative positive negative positive negative positive negative positive positive negative positive negative positive positive positive positive positive negative negative positive positive negative negative negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative negative positive negative negative negative negative negative negative negative negative negative positive negative negative negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive positive negative negative negative positive negative positive negative positive positive positive positive positive negative positive positive positive negative positive negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive negative positive negative negative positive positive negative negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive positive negative positive positive negative positive negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive positive negative negative negative negative positive positive positive positive positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive positive negative negative negative positive positive negative positive positive negative positive negative positive negative positive negative negative positive negative negative negative negative positive negative positive negative positive positive negative negative positive positive negative negative negative positive negative positive negative negative positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative positive positive positive negative positive negative negative negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive negative negative positive negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative negative negative positive negative positive positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive positive positive positive positive negative negative positive negative positive negative positive negative negative negative positive positive negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive positive positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative negative positive positive negative positive negative negative positive negative positive negative positive negative positive positive negative positive negative negative negative negative negative positive negative positive positive positive negative positive positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative negative positive positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive positive positive negative positive positive negative positive negative negative negative negative positive negative positive positive positive negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive negative positive positive positive positive negative positive positive negative positive negative positive negative positive negative negative positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive negative positive positive positive negative positive positive negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive positive negative negative positive positive positive positive negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive positive positive positive positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative negative negative positive negative positive positive negative negative positive negative positive negative negative positive positive negative positive positive negative positive negative positive negative negative negative negative negative positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative positive positive positive negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive negative positive negative negative positive negative positive negative positive positive negative positive negative negative positive negative positive positive positive negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive negative negative negative negative negative positive negative positive positive positive negative positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative positive negative positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive negative positive negative positive negative negative negative positive negative positive negative positive positive positive positive negative positive positive negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive positive positive positive negative negative positive negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive negative negative negative positive negative negative positive negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive negative negative positive negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative negative negative negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive positive positive negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative negative positive negative positive positive positive positive negative positive positive negative positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive negative positive negative negative negative negative negative positive positive positive negative positive negative positive negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative positive negative negative negative positive negative positive positive positive positive negative positive negative negative negative negative negative negative negative negative negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive positive positive negative negative positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative positive positive positive negative positive negative negative negative negative negative negative positive negative positive positive negative negative positive negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive negative positive negative positive positive negative negative positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative positive positive positive positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative positive negative positive negative negative positive negative negative negative negative negative negative negative negative positive positive positive negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive negative negative positive negative negative negative negative positive negative negative negative negative positive positive positive positive positive negative negative positive negative positive positive positive negative positive negative positive positive positive negative negative negative positive positive negative negative negative negative positive positive negative negative positive positive positive negative negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative positive positive negative negative negative negative negative positive positive negative negative negative positive positive negative positive positive negative positive positive positive positive negative negative negative positive positive negative positive positive positive positive positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive positive negative negative positive positive positive positive negative positive negative positive negative positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive negative positive negative positive positive positive negative negative negative positive negative positive positive positive negative negative positive positive negative negative positive negative positive negative positive positive negative positive negative positive positive positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive negative negative negative positive negative negative positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive positive positive positive negative negative negative positive negative positive positive positive positive negative negative positive negative negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative negative positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative positive negative positive positive positive positive positive negative positive positive positive positive positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative negative negative negative positive positive negative negative negative negative positive positive positive positive negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative positive positive negative negative positive positive positive positive positive negative positive negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative negative negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive negative negative negative negative negative negative positive negative negative positive negative negative negative positive positive negative positive negative negative positive negative positive positive negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive negative positive positive negative positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative positive negative positive positive positive negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive positive positive positive negative positive positive negative negative positive negative positive positive positive positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative positive positive positive positive negative positive positive negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative negative positive negative negative negative positive negative negative negative positive positive positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive positive positive negative negative positive negative negative positive positive negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive negative positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative negative negative positive positive negative positive negative positive positive positive negative negative negative negative negative positive negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative positive negative negative positive negative positive positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative negative positive negative positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative negative negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive negative negative positive negative positive positive negative positive negative positive negative negative positive negative negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative negative positive negative negative positive negative negative negative negative positive positive negative negative positive positive positive positive positive negative positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative positive negative positive positive positive negative positive negative positive negative negative negative positive negative negative positive positive positive positive negative negative negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive positive negative positive positive negative negative positive positive positive positive negative negative negative positive positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative negative positive negative positive positive positive negative positive negative positive positive positive negative positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive positive positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive positive positive positive negative negative positive negative negative positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive positive negative positive negative negative positive positive positive negative positive negative negative positive positive positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative negative negative positive positive positive negative positive negative negative positive negative negative positive positive positive negative negative negative positive positive negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive negative positive negative negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative positive negative positive negative negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive positive positive negative positive negative positive positive positive positive negative negative negative positive negative positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative positive negative positive positive positive positive positive positive positive negative negative negative positive negative positive positive positive positive positive negative positive negative positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative positive negative positive positive negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive negative negative positive negative positive positive positive positive positive negative negative positive negative positive positive negative negative negative positive positive positive positive negative negative negative negative negative positive negative negative positive negative negative positive negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive positive positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive positive negative negative negative positive negative positive positive negative positive positive positive positive positive negative negative positive negative negative negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive negative positive positive negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative positive positive negative negative positive negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive positive positive negative negative negative negative negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative negative negative negative negative positive positive positive negative negative negative positive negative negative positive positive positive negative negative negative negative negative positive positive negative negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive positive negative negative negative negative positive negative positive positive positive positive negative negative negative positive negative negative negative negative positive negative negative positive negative positive positive positive negative positive negative negative positive positive positive positive positive positive positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive positive negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative positive negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive negative negative positive negative positive positive positive positive negative positive positive negative negative positive positive positive negative negative positive positive negative positive negative positive positive negative negative positive positive negative negative positive negative negative negative positive positive negative negative positive positive negative negative positive positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive negative positive negative positive positive positive negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative negative negative negative positive positive positive negative positive positive negative positive positive positive negative positive negative positive positive positive positive positive positive positive negative negative positive negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative negative positive positive negative negative negative negative positive negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative positive positive negative negative positive negative negative negative positive negative positive positive positive positive positive negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative negative positive negative positive negative positive positive positive negative positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative positive positive negative positive negative negative positive positive positive positive negative negative positive positive positive positive positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative positive negative negative positive positive positive positive positive negative negative positive negative negative negative negative positive negative positive negative negative negative positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive positive positive positive positive positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative negative negative positive positive positive negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative positive positive positive positive negative positive negative positive negative negative positive positive negative positive negative positive negative positive negative negative negative negative positive positive negative negative negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive positive negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative negative negative negative positive positive positive negative negative positive positive negative positive negative negative positive positive negative positive negative positive negative positive negative positive negative negative negative negative negative negative positive negative positive negative positive negative positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative positive negative positive positive positive positive negative positive positive negative positive negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative negative negative negative negative positive positive negative negative positive positive negative positive positive positive positive positive positive negative positive positive negative positive positive positive negative positive positive positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive positive positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative positive positive positive negative positive negative positive positive negative negative negative positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative negative negative positive positive negative positive positive negative positive negative negative negative positive positive positive positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive negative positive positive negative positive negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative negative negative negative positive positive positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative negative positive positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive positive positive negative negative positive positive negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative positive negative positive negative negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive positive negative positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative positive positive positive negative positive negative negative negative positive positive positive negative negative negative negative positive positive positive negative positive negative negative negative positive negative negative negative negative negative positive positive negative positive positive negative positive positive positive negative positive positive negative positive positive positive positive positive negative positive positive positive positive negative negative positive negative positive positive negative positive positive positive positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative negative positive positive negative negative positive positive negative positive negative negative positive positive positive negative positive positive negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative positive positive negative positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative positive positive negative positive negative positive positive negative negative negative positive positive negative positive negative negative positive negative positive negative negative negative negative negative negative negative positive negative positive negative positive positive negative positive negative positive positive negative positive positive negative negative positive positive negative positive negative positive negative negative positive negative positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative positive positive negative negative negative positive negative negative positive positive positive negative positive positive negative positive negative positive positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative negative negative positive negative negative positive positive negative positive negative negative positive negative negative positive positive negative negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative negative positive negative negative negative negative positive positive negative negative positive negative positive positive negative positive negative positive negative negative positive positive positive negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive positive negative positive positive positive positive negative positive negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative positive negative positive negative negative negative positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative negative positive positive negative negative negative positive negative positive negative positive positive negative negative positive positive negative negative positive positive negative negative positive positive positive negative negative negative positive positive negative negative positive positive negative negative negative positive positive negative negative positive negative positive negative negative negative positive negative positive negative positive negative negative negative positive negative positive negative negative positive positive negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative negative negative negative positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive negative positive negative negative negative positive negative negative positive negative negative negative negative positive positive positive positive positive negative positive positive positive negative positive negative positive positive negative negative positive negative positive negative negative negative negative positive negative positive positive negative negative positive positive negative negative positive positive positive positive negative positive negative positive positive positive positive positive positive negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative positive positive negative positive negative negative positive positive positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative positive negative positive negative positive positive negative positive positive positive positive negative positive positive negative negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative positive positive positive positive positive negative positive positive positive positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive negative negative negative negative negative negative positive positive positive negative negative negative negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive positive negative positive positive positive negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative positive negative positive negative negative positive negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive negative positive negative positive positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative negative negative positive negative negative positive negative positive negative positive negative positive positive negative negative negative negative negative positive positive negative negative positive negative positive negative negative negative positive positive negative negative negative negative positive negative negative negative positive negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive negative negative negative negative positive positive positive negative positive positive positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive positive negative negative positive negative positive positive negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative positive positive negative positive negative positive positive positive negative negative positive negative positive negative positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative negative positive positive negative positive negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative positive positive positive negative negative positive negative positive positive positive negative negative negative negative negative negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive positive negative positive negative positive negative positive positive negative positive positive negative positive negative positive negative negative positive negative negative negative negative positive negative negative negative positive positive negative positive positive positive positive positive negative positive positive positive positive negative positive negative positive negative negative positive positive positive positive negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive negative positive positive positive negative negative negative negative positive negative negative negative positive positive positive positive positive negative negative negative positive negative positive positive negative positive negative negative negative negative negative negative positive negative positive negative positive negative negative positive positive negative positive negative negative negative positive negative positive positive negative positive negative positive positive negative negative negative positive negative positive positive positive negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive positive negative negative negative positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive positive negative negative negative positive positive negative positive negative negative positive negative negative negative negative positive positive positive negative negative negative positive positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive positive positive negative negative positive negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative negative positive negative positive negative negative positive negative positive negative negative negative negative positive negative positive negative negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative negative positive positive negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive positive negative positive negative negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative positive positive positive negative positive positive negative positive positive negative negative negative negative positive positive negative positive positive negative positive negative positive negative positive negative negative positive positive positive negative positive positive positive negative negative negative negative positive negative positive positive positive negative positive negative negative negative negative positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative negative negative positive negative negative negative positive positive positive negative negative negative positive positive positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive positive positive positive negative negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative positive positive negative positive negative negative negative negative negative negative positive positive positive negative positive positive positive negative positive positive positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive negative negative negative negative negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive positive negative negative negative positive negative positive negative positive positive positive positive negative positive negative negative negative negative negative negative negative positive positive negative positive negative positive negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative negative positive negative negative negative negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative positive positive negative negative positive negative negative positive positive negative negative positive negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive negative positive positive negative negative negative positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative positive negative positive positive negative negative negative negative positive positive negative positive positive positive negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive negative positive negative negative positive positive negative positive positive positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative negative positive positive positive positive positive negative negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive positive negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive positive positive positive negative negative positive positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative negative positive positive negative positive negative negative negative negative positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative positive negative positive positive negative positive positive negative positive positive positive negative negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative negative negative positive negative negative negative negative positive positive negative negative positive negative negative negative positive positive negative negative positive negative negative negative positive negative negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative positive positive negative positive negative negative positive positive positive positive positive negative positive negative positive positive positive negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive positive positive positive negative positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive negative negative positive positive negative positive positive negative negative positive positive positive positive negative negative negative negative negative positive positive negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive positive positive positive negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative positive positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative positive positive positive negative positive negative negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative negative positive positive negative positive positive positive negative negative positive negative positive negative positive negative negative positive positive negative negative negative positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative positive negative positive negative negative negative negative positive negative positive negative negative negative positive positive negative positive negative positive positive negative negative negative negative positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative positive positive positive positive negative negative negative negative negative positive negative positive negative negative negative negative positive negative positive negative positive negative negative positive negative positive negative positive positive negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative negative negative negative negative positive positive negative negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive negative negative negative positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive positive positive negative positive positive positive negative negative positive positive negative negative negative positive positive negative negative positive positive negative positive positive positive positive negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive negative negative negative negative positive positive positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive negative negative negative negative negative negative negative negative positive positive positive negative negative positive negative positive positive negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative negative negative negative positive positive positive negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative negative negative negative positive negative positive positive positive positive negative negative negative negative negative negative negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative positive positive positive negative negative negative negative positive negative positive positive negative positive negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative positive positive negative positive negative negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive negative negative positive negative negative positive negative positive positive negative positive negative positive negative negative positive negative negative negative negative negative positive positive positive positive positive negative negative positive negative negative positive positive negative negative positive negative positive negative positive negative positive positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative positive positive negative negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive positive negative negative positive negative negative negative negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative negative negative positive positive negative positive positive positive negative negative negative negative negative negative positive negative negative positive positive positive positive negative positive positive negative negative positive positive positive positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive negative positive positive negative negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative positive positive positive negative negative positive negative negative negative negative positive negative positive positive negative positive positive negative negative negative negative negative negative negative positive positive positive positive negative positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative negative positive negative positive negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive positive positive negative positive positive positive positive positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive positive negative positive positive positive positive negative negative positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive negative negative negative positive positive negative negative positive negative positive positive negative positive positive negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative negative positive positive positive positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative negative negative positive negative negative positive negative negative negative negative positive negative negative positive negative negative negative positive negative negative positive positive negative positive positive negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative positive positive negative negative negative negative positive negative positive negative negative negative positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive positive positive negative negative positive negative negative negative negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive positive positive positive positive positive negative positive negative negative positive negative negative negative negative negative positive negative negative negative positive negative negative positive positive positive positive negative negative positive positive negative positive positive negative positive negative positive negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive positive positive negative negative negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive positive positive negative negative positive positive positive negative positive negative positive negative positive positive negative positive negative negative positive negative negative negative positive positive positive negative negative negative positive negative negative negative positive negative positive negative positive negative negative positive negative positive positive negative positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive negative positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative negative negative negative positive positive negative negative positive positive positive negative positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive negative positive positive positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive positive negative positive negative negative negative positive positive positive negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative negative positive negative positive negative negative negative positive positive negative negative negative positive negative negative positive negative negative negative positive negative negative negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive negative negative positive positive positive positive positive negative negative positive negative positive positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive positive positive negative positive negative positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive negative negative negative positive negative negative negative positive negative negative positive positive negative positive negative positive positive positive negative positive positive negative positive negative negative positive positive positive negative negative negative positive positive negative positive negative negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative negative negative positive negative positive positive positive negative negative negative negative negative positive positive positive positive negative positive negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative negative positive negative negative negative positive positive positive negative negative negative positive negative positive negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive positive positive negative negative negative positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive positive negative positive positive negative negative negative negative positive positive positive negative negative positive positive positive negative negative negative negative positive positive negative negative negative positive positive negative negative positive positive positive positive negative negative positive positive positive positive positive positive positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive positive negative positive positive negative positive negative positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative positive negative positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative negative positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive positive negative positive negative positive negative negative negative positive positive negative negative negative negative negative positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive negative negative positive positive negative positive positive negative negative negative positive negative negative negative positive negative negative negative negative positive negative negative positive positive positive negative positive negative negative positive positive negative positive positive positive negative positive positive positive positive positive positive negative negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive negative positive positive negative negative positive negative positive negative positive positive positive negative positive positive negative positive negative positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative positive positive positive positive negative negative negative negative positive negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative positive positive negative positive positive positive negative negative positive positive positive negative negative negative negative positive positive positive negative negative positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative negative negative negative negative negative negative negative positive negative positive positive positive positive positive positive positive negative positive negative positive positive negative positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive positive negative positive negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive positive positive positive negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive positive positive negative positive positive negative negative positive negative positive negative positive positive positive positive positive negative positive positive negative positive negative negative positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative negative positive positive positive negative negative negative negative positive negative negative positive negative positive positive positive negative negative positive positive negative negative negative negative negative positive positive positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive positive negative negative negative positive positive negative positive negative negative negative positive positive negative positive negative positive negative negative negative negative negative positive negative negative positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative positive negative negative negative positive negative negative negative negative positive negative positive positive positive negative negative negative positive negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive positive positive negative negative positive positive positive negative negative positive negative negative positive positive positive positive negative negative negative positive negative negative negative negative negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative negative negative positive positive negative positive negative positive negative negative positive positive positive negative negative negative negative positive negative positive negative positive negative negative positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive negative positive positive positive negative positive positive positive negative positive positive positive positive positive negative positive negative positive positive negative negative negative positive negative positive positive negative positive negative negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive positive negative positive negative negative negative positive negative negative negative positive negative positive negative positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative negative positive positive negative negative positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive positive negative negative positive positive negative negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative negative negative positive positive negative positive negative positive negative positive positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative negative positive positive negative negative positive positive negative positive positive positive positive positive positive negative negative negative negative negative positive negative positive negative positive positive positive negative negative negative negative negative negative positive positive positive negative positive negative negative positive negative positive positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative negative positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative positive negative positive negative negative positive positive positive negative negative negative positive positive positive negative negative positive positive negative negative negative positive positive negative positive positive negative positive positive positive negative positive negative positive negative negative positive positive negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative negative positive negative negative positive positive positive positive negative negative positive negative positive positive positive positive negative positive positive negative negative positive negative negative positive positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive negative negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative negative negative positive positive positive negative negative positive positive positive negative positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive negative negative negative positive positive positive positive negative negative positive positive positive positive positive positive negative negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive positive negative positive negative negative negative negative positive positive negative negative negative negative positive negative negative negative negative positive negative negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive positive negative negative negative negative positive negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative positive positive negative negative positive positive positive positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive negative positive positive positive negative negative positive positive positive negative positive negative positive negative negative positive positive positive negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive negative negative positive positive positive negative positive positive negative positive positive negative positive negative positive positive positive positive positive negative positive positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative negative positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative negative positive positive positive positive positive positive negative negative positive negative positive negative positive positive negative positive negative positive negative positive positive negative negative positive negative positive negative positive negative positive negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive negative positive negative negative positive negative negative negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative negative positive negative negative positive negative negative negative positive negative positive positive negative positive negative negative positive positive positive positive positive positive negative positive positive negative positive positive positive positive positive negative negative negative negative negative positive positive negative positive negative negative positive negative negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive negative positive negative negative positive negative positive positive negative positive positive positive negative negative negative negative positive negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative positive negative positive negative negative negative negative positive negative positive negative negative negative positive negative negative negative negative positive negative negative negative positive negative positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative positive positive negative negative negative negative negative negative positive negative negative positive negative negative positive positive negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive negative negative positive positive positive negative positive negative positive negative negative negative negative negative positive negative positive positive negative positive positive negative negative negative positive negative positive negative positive negative positive positive negative positive positive negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive positive positive positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative positive negative negative negative positive negative positive positive positive negative positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative positive negative negative negative positive negative negative negative negative positive positive positive negative positive negative positive negative negative negative negative negative positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative negative positive negative negative positive negative positive positive positive positive positive positive positive positive negative positive positive positive negative positive positive negative positive negative positive positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative negative negative negative positive positive positive negative negative negative negative negative negative negative negative positive negative positive negative positive negative negative negative negative positive negative positive negative positive positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive negative positive negative negative positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative positive negative negative negative negative negative positive negative negative negative positive positive positive negative positive negative positive negative negative positive negative negative positive negative negative negative positive negative positive negative negative negative negative negative positive positive positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive positive negative positive negative positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive negative negative positive negative negative positive positive positive negative positive negative negative positive negative negative positive negative negative negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive negative positive positive positive negative negative negative positive negative positive positive negative negative negative negative positive positive negative negative negative positive positive negative negative positive negative negative negative positive positive negative positive negative negative negative positive positive positive positive positive positive positive positive negative positive negative negative negative negative positive positive positive positive negative negative negative negative negative positive negative negative negative positive negative negative negative positive negative negative negative negative positive positive positive negative negative negative negative negative negative positive negative positive negative positive negative positive negative positive negative positive positive negative positive negative negative negative negative positive positive positive positive negative positive positive negative positive positive negative negative positive positive positive positive positive negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive negative negative positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative negative positive negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative positive positive positive negative positive positive negative negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive negative positive negative negative negative negative positive negative negative positive negative positive negative negative positive positive negative positive positive positive negative negative negative negative negative positive negative negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative negative positive negative positive positive negative positive positive negative positive negative negative positive positive positive negative negative positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive positive positive positive negative positive negative positive positive negative positive negative positive positive negative negative positive positive negative negative negative negative negative negative positive negative positive negative positive negative negative negative negative negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive positive negative positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive positive positive positive negative negative negative positive positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative negative positive positive positive positive positive positive negative negative positive negative negative negative negative positive negative positive positive positive negative negative negative negative negative positive negative negative positive negative negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative negative negative positive positive positive positive negative negative negative negative positive positive negative negative positive negative negative positive negative negative positive negative positive negative negative positive positive positive negative positive positive negative negative positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative negative negative positive negative positive positive negative negative positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative positive positive positive negative positive positive positive negative positive negative positive negative positive positive negative negative negative negative negative positive positive positive negative negative negative positive positive negative positive negative positive negative negative positive positive negative positive positive positive positive positive negative negative positive negative negative positive positive negative positive positive negative positive negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive negative negative positive negative negative negative positive negative negative positive negative positive negative negative positive positive positive positive negative negative positive negative negative negative positive negative negative positive positive positive positive positive positive positive positive positive negative positive positive positive negative positive positive negative positive negative negative positive negative negative positive negative negative positive negative negative positive negative positive negative positive positive positive positive negative negative positive negative negative positive positive negative negative positive positive negative positive positive positive negative negative positive negative negative negative negative negative negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative negative positive positive negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive positive negative negative positive positive positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive negative positive positive positive positive positive negative negative negative negative positive negative negative negative positive positive negative negative negative positive positive negative negative negative negative positive negative positive positive positive negative positive positive negative negative negative negative positive positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive negative negative negative positive positive positive negative positive positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive positive positive negative positive negative positive positive positive positive positive positive positive negative positive negative positive negative negative negative negative negative positive positive negative positive positive negative negative positive positive negative positive negative positive positive negative positive positive negative negative negative positive positive positive positive positive negative positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive negative negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive positive positive negative negative negative positive positive positive negative negative negative positive positive negative negative positive negative positive positive positive positive positive positive positive positive negative positive negative positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative positive negative negative positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative positive negative positive positive negative positive negative negative negative positive positive positive negative negative negative negative positive positive negative positive negative positive negative positive positive negative negative negative positive positive negative negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive negative negative negative positive negative positive positive positive positive negative negative negative negative positive negative positive negative negative positive negative positive negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative negative negative positive negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative negative positive positive positive positive positive positive negative positive positive positive positive positive negative negative positive positive positive positive negative negative positive positive negative negative positive positive negative positive negative negative positive negative positive positive negative positive negative negative negative positive positive negative negative negative positive positive negative positive positive positive positive negative positive negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative positive negative negative positive negative negative positive negative negative negative negative positive positive positive positive positive positive positive negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive positive positive negative positive negative positive positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive negative negative positive positive negative positive positive negative positive positive positive positive positive negative positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive positive positive negative negative positive negative negative negative negative negative negative negative negative positive negative negative negative positive positive positive positive positive positive positive negative negative positive positive negative positive positive negative negative negative negative positive negative negative positive positive positive negative negative positive negative negative positive positive negative negative negative positive positive negative negative positive negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive negative positive negative positive negative negative negative negative negative negative negative positive positive positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive positive positive negative positive negative positive negative negative negative positive positive positive positive positive negative positive negative positive negative negative positive negative positive positive positive positive negative negative negative positive positive negative negative negative negative negative positive positive negative negative positive positive negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive negative positive negative positive negative negative negative positive positive positive positive negative negative positive positive positive negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative negative negative negative positive negative negative negative positive positive negative positive positive negative positive negative positive positive positive positive negative negative positive negative negative negative positive positive positive positive negative positive positive positive positive positive negative negative positive positive negative positive negative negative negative positive positive negative negative positive negative positive negative positive negative positive negative negative negative negative negative negative positive negative negative positive negative negative negative negative positive positive negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive positive positive positive positive positive positive positive positive positive positive positive positive negative positive positive negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive positive negative positive negative positive positive positive negative positive negative negative positive positive negative negative positive positive negative positive positive positive positive positive negative negative positive positive negative negative positive positive positive negative positive positive negative negative negative negative negative negative positive negative positive positive positive negative positive negative negative negative positive positive negative negative positive negative positive positive negative negative negative negative positive negative positive positive positive positive negative negative negative negative positive positive positive negative negative positive negative positive positive positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive negative negative negative positive positive negative negative negative negative negative positive positive positive negative negative positive negative positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive negative positive negative positive positive negative positive positive positive negative negative positive positive positive negative negative negative positive negative positive negative positive negative positive positive positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative negative positive negative positive negative positive positive negative negative negative positive negative positive negative negative negative positive positive negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive positive positive positive negative negative negative negative positive negative negative positive negative negative positive positive negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative negative negative positive positive positive positive positive positive negative positive negative positive positive positive positive positive positive negative negative positive positive negative positive positive positive positive positive negative negative negative positive negative positive negative negative positive negative positive positive positive positive negative positive negative negative positive positive negative positive positive positive negative negative negative negative positive negative positive positive positive positive positive negative positive positive negative positive negative positive negative negative negative negative positive negative negative negative positive positive negative negative positive negative positive negative negative positive negative negative positive positive positive positive positive positive negative positive positive negative positive positive positive negative positive negative negative positive negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative positive negative positive negative negative negative negative negative positive negative negative negative positive negative positive negative positive negative positive negative positive negative negative positive negative negative negative positive negative negative negative positive negative negative negative positive positive negative negative negative negative positive positive negative positive positive positive positive negative negative positive positive negative negative positive negative negative negative positive negative positive positive negative positive positive positive positive positive negative positive negative positive negative positive positive negative negative negative negative positive negative positive positive negative negative positive negative negative negative positive positive positive positive negative positive negative negative positive negative negative negative positive negative positive negative negative positive negative positive negative positive positive positive negative positive positive negative negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative negative negative negative negative negative positive positive negative positive negative positive negative negative positive negative negative positive negative negative positive positive positive negative negative positive negative positive negative positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative positive negative positive negative negative negative negative positive positive positive negative negative positive positive positive positive positive positive positive negative negative negative negative negative positive positive positive positive positive negative negative positive negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative positive positive positive negative positive negative negative positive negative negative positive negative negative positive positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive positive negative positive negative negative positive negative positive negative positive positive positive positive positive positive negative negative positive positive positive positive positive negative positive negative negative positive positive positive negative positive positive negative negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive negative negative positive negative negative positive negative positive negative positive positive positive positive negative negative negative positive negative positive negative negative positive positive positive negative negative negative negative negative negative positive positive negative positive positive positive positive negative negative negative positive positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive negative positive negative positive positive negative negative negative positive negative negative negative negative negative negative positive negative positive positive positive positive positive positive negative negative positive negative positive negative positive negative positive negative negative negative negative negative positive positive negative negative negative positive negative positive positive positive negative positive positive negative negative negative negative negative positive negative positive positive negative positive negative positive positive positive negative positive positive negative positive positive negative negative negative positive positive negative positive negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative negative positive negative positive positive negative negative negative positive positive negative positive negative negative negative positive negative negative positive negative positive negative positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative negative negative negative negative positive negative positive positive negative positive negative positive negative negative positive negative positive negative positive negative negative negative positive positive negative positive positive negative positive positive negative negative negative negative negative negative positive positive positive negative positive negative positive positive positive negative negative negative negative positive negative positive positive positive positive negative positive positive positive positive negative positive negative positive negative positive negative positive negative negative positive negative positive negative positive positive positive positive negative positive positive negative negative negative negative positive negative positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive positive negative positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative positive positive positive negative negative negative negative positive negative negative negative negative negative positive negative negative positive positive negative negative positive positive negative positive negative negative positive positive negative negative negative negative positive negative negative positive positive negative positive positive positive positive positive positive positive negative negative negative negative negative negative positive positive positive positive positive positive positive negative positive positive positive positive positive positive positive negative negative negative positive positive negative positive positive positive positive positive negative positive negative negative positive negative positive negative positive negative positive positive positive positive negative negative negative positive positive negative positive negative negative negative negative positive positive negative positive negative negative positive negative negative negative negative negative positive negative positive positive negative negative negative negative negative negative negative negative positive negative positive positive negative positive negative positive positive negative negative positive negative negative positive negative negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative negative negative negative positive negative positive positive negative negative positive positive negative positive positive positive positive positive positive positive positive positive negative positive positive negative positive positive negative negative positive positive positive negative negative positive positive negative positive positive negative negative positive positive negative negative negative negative positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative negative negative positive negative negative negative positive positive positive positive positive positive positive negative positive negative negative negative negative negative negative positive positive negative positive positive positive positive positive negative negative positive negative positive negative positive negative positive positive positive positive negative negative positive positive positive positive positive positive negative positive negative positive negative negative negative positive negative positive negative negative positive negative negative positive negative negative positive positive positive negative positive positive positive negative negative positive negative negative negative negative positive positive negative negative positive positive negative positive positive negative positive positive negative positive negative negative positive positive positive negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative negative negative negative positive positive positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative negative positive positive negative negative negative negative positive positive negative negative negative positive negative negative negative negative negative positive positive positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive positive negative negative negative negative negative negative negative negative negative negative negative negative positive negative positive positive positive negative negative negative negative positive positive positive negative negative negative positive negative negative negative positive positive positive positive negative positive positive negative positive negative positive negative positive positive positive negative negative positive negative negative negative negative positive positive positive positive positive negative positive positive positive negative negative negative negative negative positive negative positive positive negative positive positive positive positive positive negative negative positive positive positive positive positive positive positive negative negative positive negative negative negative positive negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative negative positive positive negative positive positive negative negative positive negative negative positive negative positive positive negative positive negative negative negative negative negative positive positive negative negative positive positive positive negative negative negative negative negative positive positive positive positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive positive positive positive positive positive positive negative positive negative positive negative positive negative positive negative positive positive negative negative positive negative positive positive positive negative negative positive positive negative positive positive positive positive negative negative positive positive negative negative positive positive negative negative positive negative positive negative positive positive negative negative negative negative positive negative positive positive positive negative negative positive positive positive negative negative positive negative negative negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative negative positive positive negative negative negative negative negative positive negative negative negative positive negative positive negative positive negative positive negative negative negative positive negative negative positive positive positive negative negative positive positive negative negative negative negative positive negative positive negative positive positive negative negative negative negative positive negative negative positive positive negative positive negative positive negative positive negative positive positive positive positive negative negative negative negative positive negative positive positive negative negative positive negative positive positive negative negative negative positive negative positive negative positive negative positive positive negative negative positive positive positive negative positive positive negative positive negative positive negative positive negative negative negative negative positive positive positive positive negative positive negative negative positive positive positive negative positive positive negative negative negative positive negative negative positive negative negative positive positive positive positive negative positive positive positive positive positive positive negative positive positive negative positive positive negative negative positive negative positive positive positive negative positive negative negative positive positive negative negative negative positive positive negative negative negative negative positive negative positive negative positive negative positive negative negative negative negative negative positive positive positive negative negative positive positive negative negative negative negative positive negative negative negative negative positive positive positive positive positive negative positive negative positive negative negative positive positive negative negative positive negative positive positive negative negative positive negative negative positive positive negative negative positive negative negative negative negative positive negative negative positive negative negative positive positive negative positive negative positive positive negative positive negative positive positive negative positive negative positive positive negative negative negative positive positive positive positive negative positive positive positive negative positive negative negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive positive negative negative negative positive negative positive negative negative negative positive negative negative positive negative negative positive negative negative negative positive positive positive positive negative positive negative positive positive negative positive negative positive positive positive positive negative negative positive negative negative negative positive negative positive positive positive negative negative positive negative positive negative negative positive positive positive positive positive negative positive negative positive negative positive negative negative negative negative positive positive negative negative positive positive negative negative negative negative negative positive negative negative positive positive negative positive negative positive negative positive positive positive negative positive negative negative positive negative positive positive negative negative positive negative negative positive negative negative positive positive positive positive positive positive positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative negative positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive positive positive positive negative negative negative positive negative positive negative negative positive positive negative negative positive positive negative negative negative negative negative positive positive negative positive positive positive negative negative positive positive negative negative negative negative negative positive positive positive positive negative positive positive negative negative negative positive negative negative positive positive negative positive negative positive negative negative negative positive negative negative negative negative negative negative positive negative positive negative positive negative negative negative negative negative positive negative positive negative negative positive positive negative positive negative negative negative negative negative positive negative positive negative positive negative negative positive positive negative positive positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive positive positive negative positive positive positive positive positive positive positive negative positive positive negative negative negative positive positive positive positive negative positive negative negative negative positive positive positive positive positive positive negative positive negative negative negative positive negative positive negative negative negative positive positive positive positive positive positive positive positive positive negative negative positive positive positive negative negative negative negative positive negative positive negative negative positive positive negative negative positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative positive positive positive positive negative negative positive positive negative positive negative negative negative positive positive positive negative negative negative negative negative negative positive positive positive positive positive positive negative negative positive negative positive positive positive negative positive positive negative negative negative positive negative negative negative negative negative positive positive negative negative positive positive positive positive positive negative negative negative negative positive negative positive negative negative positive positive negative positive positive negative positive negative negative positive positive negative positive negative negative negative negative positive positive negative positive positive positive positive negative negative negative positive positive negative negative negative positive positive negative negative negative negative positive positive positive negative negative positive positive negative positive positive positive negative negative positive positive negative negative positive negative positive positive negative negative negative negative negative negative positive positive negative negative positive negative negative positive negative negative positive positive negative negative positive positive positive negative positive positive positive positive negative negative negative positive positive positive negative negative positive negative positive positive positive positive negative negative positive positive positive negative positive positive positive negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive negative positive positive positive positive positive negative positive negative positive negative positive negative negative positive negative negative negative positive negative positive positive negative negative positive negative negative negative negative positive negative positive positive negative negative negative positive negative negative negative negative positive positive negative negative negative positive positive negative positive positive positive positive positive positive positive positive positive positive positive positive positive positive positive negative negative negative negative negative positive positive negative positive negative positive positive positive positive positive positive negative positive positive positive positive negative negative positive negative negative positive positive positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative negative positive positive negative positive negative negative negative positive negative positive positive positive negative positive positive positive negative positive negative negative negative positive positive positive negative positive positive negative negative negative positive positive negative negative negative positive positive positive negative negative negative negative positive negative positive positive negative negative positive positive negative negative positive positive negative negative negative positive positive positive positive positive positive negative positive positive negative negative negative positive negative positive positive positive negative negative negative negative negative positive negative positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative negative positive negative positive positive positive positive negative negative positive negative negative positive negative positive positive positive positive negative positive negative positive positive negative negative positive positive positive negative negative negative negative negative negative positive negative negative negative positive positive negative negative negative negative positive positive positive negative positive positive negative negative negative positive positive positive positive positive positive positive positive positive negative positive positive negative negative positive positive positive positive positive negative positive negative negative negative positive negative negative positive negative positive negative negative negative negative negative negative negative positive negative positive negative positive negative negative negative negative negative positive positive positive positive positive positive positive negative negative positive positive positive positive negative positive negative negative negative negative positive negative positive negative positive positive positive positive negative positive positive positive positive negative positive positive positive positive negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive negative positive positive positive negative negative positive negative positive positive negative negative negative positive negative positive negative positive negative negative negative negative positive positive positive positive negative negative positive negative negative negative positive positive positive negative negative positive negative positive negative positive positive negative positive positive positive positive negative negative positive negative negative negative negative positive positive negative positive positive negative negative positive positive negative negative positive negative positive negative positive positive negative positive positive positive negative positive negative negative positive negative negative positive negative positive positive negative negative positive positive negative positive negative positive positive positive positive negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive positive positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative negative negative positive positive negative positive positive negative negative positive negative positive positive positive negative negative negative negative negative negative negative positive positive negative negative negative negative negative negative negative negative positive negative negative negative negative negative negative negative negative negative positive negative negative positive negative negative positive positive positive positive positive negative negative negative negative negative positive negative negative positive positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive negative negative negative positive positive negative positive negative positive positive negative negative positive negative negative negative positive negative negative positive positive positive negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative negative positive positive positive positive positive positive negative positive positive positive positive negative positive negative positive negative negative positive negative positive negative negative positive positive negative positive positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative positive negative negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive negative negative positive negative positive negative negative negative negative negative positive negative negative positive positive negative positive positive positive positive positive negative negative negative positive positive negative negative positive positive negative negative positive positive positive positive positive positive negative positive positive positive negative positive positive positive negative negative negative negative negative negative positive negative positive negative negative positive positive positive positive negative negative positive positive positive positive positive positive negative negative negative negative positive positive negative positive positive negative positive positive negative negative positive negative negative positive negative negative positive negative positive positive negative negative negative positive negative negative negative negative positive positive positive negative negative negative positive negative negative positive negative positive negative positive positive positive negative positive negative negative negative negative negative negative positive positive positive negative negative positive positive positive positive negative negative negative negative positive negative positive negative positive positive positive negative negative positive negative positive positive negative negative negative positive positive negative positive negative negative positive positive negative negative positive negative positive positive negative positive positive positive negative positive positive positive negative positive negative negative negative negative negative positive negative positive negative negative negative positive positive negative positive negative positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative positive positive positive negative negative negative negative negative positive positive negative positive negative positive negative positive negative negative positive negative positive positive negative negative positive positive positive positive negative positive negative positive negative negative negative positive positive positive positive positive negative negative negative positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative positive negative positive negative negative negative positive negative positive positive negative negative negative negative negative negative negative positive positive positive negative positive positive negative negative negative positive negative positive positive positive positive positive negative negative negative positive negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive negative positive positive positive positive positive positive negative positive positive negative negative negative negative negative negative negative negative negative positive negative negative negative positive positive negative positive positive negative positive negative negative negative negative positive negative negative positive positive positive negative positive positive negative positive negative negative negative negative negative negative negative negative negative negative negative negative positive negative negative negative negative negative positive negative negative negative negative positive positive positive positive negative positive positive negative positive negative positive negative positive negative positive negative negative negative negative negative positive positive negative positive negative negative negative positive negative positive negative negative negative negative positive negative negative negative positive negative positive negative negative positive positive positive positive negative positive positive positive positive positive positive negative negative positive negative positive positive positive positive negative positive positive positive negative positive positive positive negative negative positive negative negative negative negative positive negative positive negative positive negative positive negative negative negative positive positive negative positive negative positive negative positive negative negative negative negative positive negative positive positive positive negative negative positive negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative negative negative negative negative negative positive negative positive negative positive positive negative negative positive positive negative positive negative positive negative negative negative positive negative negative positive negative negative positive positive positive negative positive negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative positive positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive positive negative positive negative negative negative positive negative positive negative positive positive positive negative negative positive negative negative positive negative negative positive negative negative positive positive negative negative positive negative negative negative negative negative positive negative negative positive negative positive negative negative positive negative positive negative positive negative positive negative positive positive negative negative positive negative negative negative positive positive positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative negative negative negative positive negative positive positive positive positive positive positive negative negative negative positive negative positive negative positive negative positive negative negative positive negative positive negative negative positive negative positive positive positive negative negative negative positive positive positive negative positive positive positive positive negative negative positive negative negative negative positive positive negative positive negative negative negative positive positive positive negative negative positive negative positive positive positive positive positive negative positive negative negative negative negative negative negative negative positive negative negative positive positive positive positive positive positive negative negative negative positive negative negative positive negative negative negative positive positive negative positive negative positive positive negative negative negative positive positive positive negative negative negative positive negative negative negative negative negative positive positive negative positive negative positive positive negative positive positive positive negative negative positive negative negative positive negative negative negative positive positive positive negative positive negative positive negative negative negative positive negative positive positive negative negative positive positive negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative negative positive positive negative positive positive negative positive negative positive positive positive negative negative positive positive negative negative positive negative positive negative positive negative negative negative positive positive positive negative positive positive negative negative negative negative positive positive negative negative positive positive negative positive negative positive negative positive negative positive positive negative negative negative negative negative positive negative negative positive negative negative negative positive negative positive negative positive positive negative negative positive negative negative positive positive negative positive negative positive negative positive negative negative negative negative negative negative negative negative negative positive negative positive negative positive positive positive negative positive negative negative negative positive positive positive negative positive negative negative positive positive positive negative negative positive positive negative negative positive negative positive negative positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive negative negative positive positive negative positive negative negative positive negative negative negative positive positive negative positive positive positive positive negative positive negative positive positive positive negative negative positive negative positive negative negative positive negative negative negative positive negative positive positive positive positive positive negative negative negative positive positive negative positive positive positive negative positive positive negative negative negative negative negative negative positive negative negative negative positive negative negative positive negative positive positive negative negative negative positive negative positive positive positive negative negative positive positive positive negative positive negative negative negative negative negative positive positive positive negative positive negative positive positive negative positive positive negative positive positive positive positive positive negative positive positive negative negative negative positive positive positive negative positive negative positive positive positive positive negative positive positive positive negative negative positive negative positive positive negative positive negative negative negative negative positive positive positive positive negative negative positive negative positive positive positive negative negative negative negative positive positive positive negative positive positive positive negative positive negative negative positive negative positive negative negative positive negative negative positive negative positive negative positive positive negative positive negative positive positive positive negative negative positive negative positive positive negative positive positive positive negative negative positive positive positive positive positive positive negative positive negative negative negative positive positive positive negative positive negative positive negative positive negative positive positive negative negative positive positive positive negative negative positive negative negative positive negative positive positive positive negative positive positive negative positive positive positive negative negative negative negative positive negative negative positive positive negative positive positive negative positive positive negative positive positive positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative positive negative negative positive positive negative negative positive positive positive negative negative negative positive negative negative negative negative positive negative positive negative positive negative negative negative positive negative negative positive negative positive positive positive negative negative negative negative negative positive negative negative negative negative negative positive negative negative negative positive negative positive positive negative negative negative positive positive positive positive positive negative positive positive negative negative positive negative negative positive negative positive positive positive negative negative negative positive negative positive negative negative negative negative negative positive negative negative negative negative negative negative positive negative negative positive negative positive negative negative negative positive negative positive positive negative positive positive positive negative negative positive negative positive positive negative negative positive positive positive negative negative positive positive negative positive positive positive negative positive negative positive positive negative positive negative positive positive negative positive positive positive negative positive negative negative negative positive negative negative negative negative positive negative positive positive positive negative positive positive positive negative negative positive positive positive positive negative positive positive negative positive negative negative negative negative positive negative positive negative negative positive negative positive negative negative negative positive negative positive negative positive negative positive negative positive positive positive negative negative negative positive positive negative positive positive negative negative positive negative positive positive negative negative positive negative positive negative positive negative negative negative positive negative negative negative positive negative negative positive negative positive negative negative negative positive positive negative positive negative positive positive positive positive positive negative positive positive negative negative positive positive negative negative negative positive negative negative negative negative positive positive negative positive negative positive positive negative negative negative negative negative positive positive positive positive negative negative positive negative negative positive positive positive positive positive positive positive negative negative negative positive negative negative negative negative negative negative positive negative positive positive negative positive positive negative positive negative negative negative positive negative positive positive positive positive negative positive negative positive positive positive negative positive positive positive positive negative positive negative negative negative positive negative positive positive negative negative negative negative positive positive positive negative negative positive positive negative positive positive negative negative positive negative positive negative positive positive positive negative positive negative positive positive positive positive negative positive negative positive positive positive positive negative negative negative negative positive negative negative positive positive negative negative negative positive negative negative negative positive negative positive negative positive positive positive positive positive negative negative negative negative negative negative negative positive positive negative positive positive negative positive positive positive positive negative positive negative negative positive positive negative positive negative negative positive negative positive negative negative positive positive negative positive positive positive negative negative positive negative negative negative positive positive negative negative negative positive negative positive positive negative negative positive negative positive negative negative positive negative negative negative positive positive positive positive negative negative positive negative positive negative positive positive positive positive negative positive negative positive negative negative positive negative positive negative positive positive negative positive negative positive positive negative negative positive positive positive negative positive negative negative positive negative negative positive negative positive negative positive negative positive positive positive negative negative negative positive positive positive positive positive negative negative positive positive positive negative positive positive negative negative positive positive negative positive negative positive positive positive positive negative positive positive positive negative positive negative positive negative positive positive positive positive positive positive positive negative positive negative positive negative positive negative positive positive negative positive positive positive negative positive negative negative positive positive negative positive positive negative negative negative positive positive negative positive positive negative negative negative negative positive positive positive negative positive positive negative positive positive negative negative positive positive negative positive positive negative positive positive positive negative positive negative negative positive positive positive negative negative negative positive negative negative positive negative positive positive positive positive negative negative negative negative negative positive positive negative positive negative positive negative negative positive negative negative positive negative positive positive positive negative positive positive positive negative positive negative positive negative negative negative positive positive negative positive negative negative positive negative negative positive positive positive negative positive negative positive positive negative negative positive positive positive negative negative positive negative positive positive negative positive positive positive negative positive positive positive positive negative positive positive positive positive positive negative positive negative negative negative positive positive positive positive negative negative positive positive negative negative negative negative positive negative negative negative positive negative positive positive negative negative positive negative positive negative positive positive positive positive negative positive positive positive positive positive negative positive positive negative negative positive negative positive positive negative positive positive positive negative negative positive negative positive positive positive negative positive positive positive positive positive positive positive positive positive positive negative positive positive positive positive positive positive negative positive negative negative positive positive negative positive negative positive positive positive negative negative negative positive positive negative negative positive positive positive negative positive negative positive positive negative negative positive positive positive negative positive positive positive positive positive positive negative positive positive positive negative positive positive positive positive negative positive negative negative positive positive positive negative negative positive negative positive negative