gecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgec