同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上同上