activefXmarkifXcftrueactiveiftrueXYmarkXactiveiffalseXYmarkYactivefXfactiveXactiveifX1X2X3ifactiveX1X2X3activeifX1X2X3ifX1activeX2X3fmarkXmarkfXifmarkX1X2X3markifX1X2X3ifX1markX2X3markifX1X2X3properfXfproperXproperifX1X2X3ifproperX1properX2properX3propercokcpropertrueoktrueproperfalseokfalsefokXokfXifokX1okX2okX3okifX1X2X3topmarkXtopproperXtopokXtopactiveXactivefXftrueactivefXifXcftrueactivefXactiveXactivefXfactiveXactiveifX1X2X3activeX1activeifX1X2X3ifactiveX1X2X3activeifX1X2X3activeX2activeifX1X2X3ifX1activeX2X3fmarkXfXifmarkX1X2X3ifX1X2X3ifX1markX2X3ifX1X2X3properfXproperXproperfXfproperXproperifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1properifX1X2X3ifproperX1properX2properX3fokXfXifokX1okX2okX3ifX1X2X3topmarkXproperXtopmarkXtopproperXtopokXactiveXtopokXtopactiveXtruetopokXtopactiveXtopmarkXtopproperXtruetopokXactiveXfalseactivefXactiveXactiveifX1X2X3activeX1activeifX1X2X3activeX2trueactive11activeifX1X2X3ifX1activeX2X3falseactiveifX1X2X3ifactiveX1X2X3falseactivefXfactiveXfalseactivefXifXcftruefalseactivefXftruefalsetopmarkXproperXfalseproperfXproperXproperifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1trueproper11properifX1X2X3ifproperX1properX2properX3falseifmarkX1X2X3ifX1X2X3ifX1markX2X3ifX1X2X3ifokX1okX2okX3ifX1X2X3trueif33ifmarkX1X2X3ifX1X2X3ifX1markX2X3ifX1X2X3if32ifmarkX1X2X3ifX1X2X3if31properfXfproperXfalsefmarkXfXfokXfXtruef11