Please add comments to explain the conditions