gfhgfhgfhfg
taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught taught 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
Post a Comment