Marriott posts surprise profit