activep0mark0activepsXmarkXactiveleq0YmarktrueactiveleqsX0markfalseactiveleqsXsYmarkleqXYactiveiftrueXYmarkXactiveiffalseXYmarkYactivediffXYmarkifleqXY0sdiffpXYactivepXpactiveXactivesXsactiveXactiveleqX1X2leqactiveX1X2activeleqX1X2leqX1activeX2activeifX1X2X3ifactiveX1X2X3activediffX1X2diffactiveX1X2activediffX1X2diffX1activeX2pmarkXmarkpXsmarkXmarksXleqmarkX1X2markleqX1X2leqX1markX2markleqX1X2ifmarkX1X2X3markifX1X2X3diffmarkX1X2markdiffX1X2diffX1markX2markdiffX1X2properpXpproperXproper0ok0propersXsproperXproperleqX1X2leqproperX1properX2propertrueoktrueproperfalseokfalseproperifX1X2X3ifproperX1properX2properX3properdiffX1X2diffproperX1properX2pokXokpXsokXoksXleqokX1okX2okleqX1X2ifokX1okX2okX3okifX1X2X3diffokX1okX2okdiffX1X2topmarkXtopproperXtopokXtopactiveXactiveleqsXsYleqXYactivediffXYpXactivediffXYdiffpXYactivediffXYsdiffpXYactivediffXYleqXYactivediffXYifleqXY0sdiffpXYactivepXactiveXactivepXpactiveXactivesXactiveXactivesXsactiveXactiveleqX1X2activeX1activeleqX1X2leqactiveX1X2activeleqX1X2activeX2activeleqX1X2leqX1activeX2activeifX1X2X3activeX1activeifX1X2X3ifactiveX1X2X3activediffX1X2activeX1activediffX1X2diffactiveX1X2activediffX1X2activeX2activediffX1X2diffX1activeX2pmarkXpXsmarkXsXleqmarkX1X2leqX1X2leqX1markX2leqX1X2ifmarkX1X2X3ifX1X2X3diffmarkX1X2diffX1X2diffX1markX2diffX1X2properpXproperXproperpXpproperXpropersXproperXpropersXsproperXproperleqX1X2properX2properleqX1X2properX1properleqX1X2leqproperX1properX2properifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1properifX1X2X3ifproperX1properX2properX3properdiffX1X2properX2properdiffX1X2properX1properdiffX1X2diffproperX1properX2pokXpXsokXsXleqokX1okX2leqX1X2ifokX1okX2okX3ifX1X2X3diffokX1okX2diffX1X2topmarkXproperXtopmarkXtopproperXtopokXactiveXtopokXtopactiveXtruetopokXtopactiveXtopmarkXtopproperXtruetopokXactiveXfalseactivepXactiveXactivesXactiveXactiveleqX1X2activeX1activeleqX1X2activeX2activeifX1X2X3activeX1activediffX1X2activeX1activediffX1X2activeX2trueactive11activediffX1X2diffX1activeX2falseactivediffX1X2diffactiveX1X2falseactiveifX1X2X3ifactiveX1X2X3falseactiveleqX1X2leqX1activeX2falseactiveleqX1X2leqactiveX1X2falseactivesXsactiveXfalseactivepXpactiveXfalseactivediffXYifleqXY0sdiffpXYfalseactivediffXYleqXYfalseactivediffXYsdiffpXYfalseactivediffXYdiffpXYfalseactivediffXYpXfalseactiveleqsXsYleqXYfalsetopmarkXproperXfalseproperpXproperXpropersXproperXproperleqX1X2properX2properleqX1X2properX1properifX1X2X3properX3properifX1X2X3properX2properifX1X2X3properX1properdiffX1X2properX2properdiffX1X2properX1trueproper11properdiffX1X2diffproperX1properX2falsediffmarkX1X2diffX1X2diffX1markX2diffX1X2diffokX1okX2diffX1X2truediff22diffmarkX1X2diffX1X2diff21properifX1X2X3ifproperX1properX2properX3falseifmarkX1X2X3ifX1X2X3ifokX1okX2okX3ifX1X2X3trueif33ifmarkX1X2X3ifX1X2X3if31properleqX1X2leqproperX1properX2falseleqmarkX1X2leqX1X2leqX1markX2leqX1X2leqokX1okX2leqX1X2trueleq22leqmarkX1X2leqX1X2leq21propersXsproperXfalsesmarkXsXsokXsXtrues11properpXpproperXfalsepmarkXpXpokXpXtruep11