int getSmallestDACIndexInScope(int forbiddenScopeIndex)
	{
        assert(forbiddenScopeIndex >= 0); assert(forbiddenScopeIndex < 3);
		switch (forbiddenScopeIndex) {
            case 0: return min(y->getDACOrder(),z->getDACOrder()); break;
            case 1: return min(x->getDACOrder(),z->getDACOrder()); break;
            case 2: return min(x->getDACOrder(),y->getDACOrder()); break;
            default: exit(EXIT_FAILURE);
        }
	}
 int getSmallestDACIndexInScope(int forbiddenScopeIndex) {assert(forbiddenScopeIndex >= 0); assert(forbiddenScopeIndex < 2); return (forbiddenScopeIndex)?x->getDACOrder():y->getDACOrder();}
    void setDACScopeIndex() {
        if (x->getDACOrder() < y->getDACOrder() && x->getDACOrder() < z->getDACOrder()) dacvar = 0;
        else if (y->getDACOrder() < x->getDACOrder() && y->getDACOrder() < z->getDACOrder()) dacvar = 1;
        else dacvar = 2;
	}
 void setDACScopeIndex() {if (x->getDACOrder() < y->getDACOrder()) dacvar = 0; else dacvar = 1;}