gecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgec
gecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgec
gecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgec
 




 







 
