hgghghg

taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught

Comments