activefactXmarkifzeroXs0prodXfactpXactiveadd0XmarkXactiveaddsXYmarksaddXYactiveprod0Xmark0activeprodsXYmarkaddYprodXYactiveiftrueXYmarkXactiveiffalseXYmarkYactivezero0marktrueactivezerosXmarkfalseactivepsXmarkXactivefactXfactactiveXactiveifX1X2X3ifactiveX1X2X3activezeroXzeroactiveXactivesXsactiveXactiveprodX1X2prodactiveX1X2activeprodX1X2prodX1activeX2activepXpactiveXactiveaddX1X2addactiveX1X2activeaddX1X2addX1activeX2factmarkXmarkfactXifmarkX1X2X3markifX1X2X3zeromarkXmarkzeroXsmarkXmarksXprodmarkX1X2markprodX1X2prodX1markX2markprodX1X2pmarkXmarkpXaddmarkX1X2markaddX1X2addX1markX2markaddX1X2properfactXfactproperXproperifX1X2X3ifproperX1properX2properX3properzeroXzeroproperXpropersXsproperXproper0ok0properprodX1X2prodproperX1properX2properpXpproperXproperaddX1X2addproperX1properX2propertrueoktrueproperfalseokfalsefactokXokfactXifokX1okX2okX3okifX1X2X3zerookXokzeroXsokXoksXprodokX1okX2okprodX1X2pokXokpXaddokX1okX2okaddX1X2topmarkXtopproperXtopokXtopactiveXactivefactXpXactivefactXfactpXactivefactXprodXfactpXactivefactXs0activefactXzeroXactivefactXifzeroXs0prodXfactpXactiveaddsXYaddXYactiveaddsXYsaddXYactiveprodsXYprodXYactiveprodsXYaddYprodXYactivefactXactiveXactivefactXfactactiveXactiveifX1X2X3activeX1activeifX1X2X3ifactiveX1X2X3activezeroXactiveXactivezeroXzeroactiveXactivesXactiveXactivesXsactiveXactiveprodX1X2activeX1activeprodX1X2prodactiveX1X2activeprodX1X2activeX2activeprodX1X2prodX1activeX2activepXactiveXactivepXpactiveXactiveaddX1X2activeX1activeaddX1X2addactiveX1X2activeaddX1X2activeX2activeaddX1X2addX1activeX2factmarkXfactXifmarkX1X2X3ifX1X2X3zeromarkXzeroXsmarkXsXprodmarkX1X2prodX1X2prodX1markX2prodX1X2pmarkXpXaddmarkX1X2addX1X2addX1markX2addX1X2properfactXproperXproperfactXfactproperXproperifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1properifX1X2X3ifproperX1properX2properX3properzeroXproperXproperzeroXzeroproperXpropersXproperXpropersXsproperXproperprodX1X2properX2properprodX1X2properX1properprodX1X2prodproperX1properX2properpXproperXproperpXpproperXproperaddX1X2properX2properaddX1X2properX1properaddX1X2addproperX1properX2factokXfactXifokX1okX2okX3ifX1X2X3zerookXzeroXsokXsXprodokX1okX2prodX1X2pokXpXaddokX1okX2addX1X2topmarkXproperXtopmarkXtopproperXtopokXactiveXtopokXtopactiveXtruetopokXtopactiveXtopmarkXtopproperXtruetopokXactiveXfalseactivefactXactiveXactiveifX1X2X3activeX1activezeroXactiveXactivesXactiveXactiveprodX1X2activeX1activeprodX1X2activeX2activepXactiveXactiveaddX1X2activeX1activeaddX1X2activeX2trueactive11activeaddX1X2addX1activeX2falseactiveaddX1X2addactiveX1X2falseactivepXpactiveXfalseactiveprodX1X2prodX1activeX2falseactiveprodX1X2prodactiveX1X2falseactivesXsactiveXfalseactivezeroXzeroactiveXfalseactiveifX1X2X3ifactiveX1X2X3falseactivefactXfactactiveXfalseactiveprodsXYaddYprodXYfalseactiveprodsXYprodXYfalseactiveaddsXYsaddXYfalseactiveaddsXYaddXYfalseactivefactXifzeroXs0prodXfactpXfalseactivefactXzeroXfalseactivefactXs0falseactivefactXprodXfactpXfalseactivefactXfactpXfalseactivefactXpXfalsetopmarkXproperXfalseproperfactXproperXproperifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1properzeroXproperXpropersXproperXproperprodX1X2properX2properprodX1X2properX1properpXproperXproperaddX1X2properX2properaddX1X2properX1trueproper11properaddX1X2addproperX1properX2falseaddmarkX1X2addX1X2addX1markX2addX1X2addokX1okX2addX1X2trueadd22addmarkX1X2addX1X2add21properpXpproperXfalsepmarkXpXpokXpXtruep11properprodX1X2prodproperX1properX2falseprodmarkX1X2prodX1X2prodX1markX2prodX1X2prodokX1okX2prodX1X2trueprod22prodmarkX1X2prodX1X2prod21propersXsproperXfalsesmarkXsXsokXsXtrues11properzeroXzeroproperXfalsezeromarkXzeroXzerookXzeroXtruezero11properifX1X2X3ifproperX1properX2properX3falseifmarkX1X2X3ifX1X2X3ifokX1okX2okX3ifX1X2X3trueif33ifmarkX1X2X3ifX1X2X3if31properfactXfactproperXfalsefactmarkXfactXfactokXfactXtruefact11