楔子

作者:宁九儿 更新时间:2018/4/5 9:34:01 字数:81972

别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过别通过

设置
阅读主题:
字体大小:
字体格式:
简体 繁体
页面宽度:
手机阅读
菠萝包轻小说

iOS版APP
安卓版APP

扫一扫下载