https://github.com/epiqc/ScaffCC
Raw File
Tip revision: 9d2cca71cf54ddfebda26e247d82ae7b71d9e03c authored by Pranav Gokhale on 30 June 2018, 18:56:21 UTC
Fix OpenQASM output formatting of Rx and Ry
Tip revision: 9d2cca7
boolean_formula.x2y2.scaffold
/*
*
* Quantum Boolean Formula
* Author: Mohammad Javad Dousti
* University of Southern California (USC)
* Code is written based on GFI 1.2
*
*/

//Quantum primitive gates
//#include "gates.h"
#include <stdio.h>
#include <math.h>

//Definition of given constants
#define t 12           //size of the phase estimation register
#define m 6             //size of the direction register (!!!NEED TO UPDATE HEX() IF CHANGING THIS VALUE!!!)
#define x_max 2         //size of hex board in x direction
#define y_max 2         //size of hex board in y direction
#define s x_max*y_max   //# of remaining moves; height of the tree
#define width (m*s)+2

#define pi 3.14159


/*-------------------------------------My helper functions-----------------------------------*/

const double PI = 3.141592654;

// Swaps 2 qubit states
module Swap (qbit q1[1], qbit q2[1]){
    CNOT ( q1[0],q2[0]);
    CNOT ( q2[0],q1[0]);
    CNOT ( q1[0],q2[0]);
}


/*------------------Some helper functions borrowed from GSE implementation--------------------------*/
module controlledRz(qbit target[1], qbit control[1], double theta){
	Rz(target[0],-1*theta/2);
	CNOT(control[0],target[0]);
	Rz(target[0],theta/2);
	CNOT(control[0],target[0]);
}

module ctrlH(qbit *target, qbit *ctrl) {
    S(*ctrl);
    Rz(*target,pi);
    Rz(*target,-pi/4);
    CNOT( *ctrl,*target);
    Rz(*target,pi/4);
    Rz(*target,-pi/2);
    CNOT( *ctrl,*target);
    Rz(*target,-pi/2);
}

module ControlledRotationPiMinus (qbit target[1], qbit control[1], int j){
    int k;
    double power =1.0;
    power=pow(2, j);
    controlledRz (target, control, - (3*PI) / (2*power));
}

module inverseQFT (qbit* topregister, int length_topregister){
    int i,j;
    for (i =0;i<length_topregister;i++){
        H(topregister [i]);
        for (j =1;j <(length_topregister-i);j++){
            ControlledRotationPiMinus (&topregister[i+j], &topregister[i],j);
        }
    }
    for(i =0;i <(length_topregister/2);i++){ //forall
        Swap (&topregister[i], &topregister[length_topregister-1-i]);
    }
}

//Negative control CNOT; This implementation can change to a primitive if the underlying technology supports negative-controlled NOT
/*module NCNOT( qbit ctrl[1],qbit target[1]){
    X(ctrl[0]);
    CNOT( ctrl[0],target[0]);
    X(ctrl[0]);
}

//n-control Toffoli; n>2
module nToffoli( int length_in, qbit* in,qbit target[1]){
    //This should not lead to a compile error as long as the values are set in compile time.
    qbit ancilla[length_in-2];
    int i;
    
    Toffoli ( ancilla[0], in[1],in[0]);
    for(i=2; i<length_in-1; i++){ //forall
        Toffoli ( ancilla[i-1], ancilla[i-2],in[i]);
    }
    Toffoli ( target[0], ancilla[length_in-3],in[length_in-1]);
    
    //uncomputing ancilla
    for(i=length_in-2; i>=2; i--){ //forall
        Toffoli ( ancilla[i-1], ancilla[i-2],in[i]);
    }
}

module AND(qbit target[1], qbit* in, int length_in){
    PrepZ(target[0],0);
    
    if (length_in == 1){
        CNOT( in[0],target[0]);
    }else if (length_in == 2){
        Toffoli( target[0], in[1],in[0]);
    }else{
        nToffoli( length_in, target,in);
    }
}

module NAND(qbit target[1], qbit* in, int length_in){
    AND (&target[0], in, length_in);
    X(target[0]);
}


module NOR(qbit target[1], qbit* in, int length_in){
    int i;
    
    for(i=0; i<length_in; i++){ //forall
        X(in[i]);
    }
        
    AND(&target[1], in, length_in);

    for(i=0; i<length_in; i++){ //forall
        X(in[i]);
    }
}

module OR(qbit target[1], qbit* in, int length_in){
    NOR(&target[0], in, length_in);
    X(target[0]);
}
*/
/*-------------------------------------------------------------------------------------------*/
/* IARPA - GFI Algorithm 13 */
/* Progress status: done */
/* Classical implementation: No */
/* begin ctqg
module C_TESTPOS(qbit ctrl[1], int pos, qbit bitmap[s], qbit maskmap[s], qbit newmap[s]){
    //pos is a compile-time constant, so no mux is needed to be implemented explicitly
    
    //No need to create a new ancilla each time; garbage collector will take care of "local" ancilla
    qbit ancilla[1];
    PrepZ(ancilla[0],1);
    
    //ancilla[0] will get the old value of newmap[pos]; since newmap[pos] is a binary qubit, we can assume that it is possible to safely reset it to 0
    if (maskmap[pos]==1 && bitmap[pos]==1 && ctrl[0]==1){
        Swap(&newmap[pos], &ancilla[0]);
    }
    
}
// end ctqg */
module C_TESTPOS(qbit ctrl[1], int pos, qbit bitmap[s], qbit maskmap[s], qbit newmap[s]){
	qbit I00[1];
	qbit I11[1];
	qbit I1g[3];
	qbit tof_anc[2];
	CNOT ( I11[0] , maskmap[pos] );
	CNOT ( I1g[0] , I11[0] );
	CNOT ( I11[0] , maskmap[pos] );
	Toffoli ( I11[0] , bitmap[pos] , I1g[0] );
	Toffoli ( I1g[1] , I11[0] , I1g[0] );
	Toffoli ( I11[0] , bitmap[pos] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , ctrl[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I11[0] , I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[2] ,tof_anc[0], I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , ctrl[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[0] , newmap[pos] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( newmap[pos] ,tof_anc[1], I00[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , newmap[pos] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[0] ,tof_anc[1], newmap[pos] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[0] , newmap[pos] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( newmap[pos] ,tof_anc[1], I00[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
}

/* IARPA - GFI Algorithm 12 */
/* Classical implementation: No */
/*module FLOOD_FILL(qbit bitmap[s], qbit maskmap[s]){
//-------------Part 1: Initialization---------------
    qbit stale[1];
    qbit ancilla[4];
    qbit newmap[s];
    qbit ctrl[1];
    qbit nctrl[1];
    
    int index0, index1;
    for(index0=0; index0<s; index0++){ //forall
        PrepZ(newmap[index0],0);
        //Note that the control-swap can be considered as a normal swap here because in case of bitmap[index0]==0, swapping does not change the values of bitmap[index0] and newmap[index0]. All of the swap gates can be done in parallel.
        Swap(&newmap[index0], &bitmap[index0]);
    }
    //stale = 0 if at least one of the values in bitmap (which is already swapped to newmap) is 1, otherwise stale=1
    NOR(&stale[0], newmap, s);
//-------------Part 2: While Loop---------------
    //ancilla[1]
    PrepZ(ctrl[0],0);
    for (index1=0; index1<x_max; index1++){
        PrepZ(ancilla[0],1);
        NCNOT( &stale[0],&ctrl[0]);
        Swap(&ancilla[0], stale);
    //-------------Part 3: For Loop-----------------
        for (index0=0; index0<s; index0++){
            //note that since these are binary qubits, ideally, they will not be entangled and can be purified without uncomputation
            PrepZ(nctrl[0],0);
            PrepZ(ancilla[1],0);
            PrepZ(ancilla[2],0);
            PrepZ(ancilla[3],0);
            
            X(ancilla[1]);
            
            Toffoli( nctrl[0], ctrl[0],newmap[index0]);
            Fredkin_decomp(ancilla[1], bitmap[index0], nctrl[0]);
            
            //The conditions can be evaluated at compile time so they do not need to have multiple-control unitary
            if (index0+x_max<s){
                C_TESTPOS(&nctrl[0], index0+x_max, maskmap, bitmap, newmap);
            }
            
            if (index0-x_max>=0){
                C_TESTPOS(&nctrl[0], index0-x_max, maskmap, bitmap, newmap);            
            }
            
            if (index0 % x_max >0){
                if (index0 -1 >= 0){
                    C_TESTPOS(&nctrl[0], index0-1, maskmap, bitmap, newmap);
                }
                if (index0 + x_max - 1 <s){
                    C_TESTPOS(&nctrl[0], index0+x_max-1, maskmap, bitmap, newmap);
                }
            }

            if (index0 % x_max < x_max - 1){
                if (index0 + 1 <s){
                    C_TESTPOS(&nctrl[0], index0+1, maskmap, bitmap, newmap);
                }
                if (index0 - x_max + 1 >= 0){
                    C_TESTPOS(&nctrl[0], index0 - x_max + 1, maskmap, bitmap, newmap);
                }
            }
            
            Fredkin_decomp(ancilla[2], newmap[index0], nctrl[0]);
            Fredkin_decomp(ancilla[3], stale[0], nctrl[0]);
        }
        CNOT( stale[0],ctrl[0]);
    }   
}
*/
/* IARPA - GFI Algorithm 11 */
/* Progress status: done */
/* Classical implementation: No */
/*module CHECKWIN_RED(qbit redboard[s], qbit outcome[1]){
    int index0;
    qbit blueboard[s];
    //qbit outcome[1];
    
    //initializing blueboard to 0
    for(index0=0; index0<s; index0++){ //forall
        PrepZ(blueboard[index0],0);
    }
    
    for(index0=0; index0<x_max; index0++){ //forall
        //A negative controled CNOT
        NCNOT( &redboard[index0],&blueboard[index0]);       //note that this implementation does not need any MUX; because this gfor 
                                                        //sequentially accesses the redboard vector
    }
    
    FLOOD_FILL(blueboard, redboard);
    
    //if outcome==1 then red won; otherwise blue won
    //NOR(outcome[0], blueboard[x_max*(y_max-1)..s]);
    NOR(&outcome[0], &blueboard[x_max*(y_max-1)], s-(x_max*(y_max-1))+1);
}
*/
/* IARPA - GFI Algorithm 10 */
/* Progress status: done */
/* Classical implementation: No */
/*module HEX(qbit pos[width], qbit init_r[s], qbit init_b[s], qbit redState[1]){
    qbit redboard[s];
    qbit blueboard[s];
    qbit player[1];
    
    int i;
    int select;
    int move;
    int shift=m*(s-1);
    qbit address[m];
    
    qbit blueState[1];
    //qbit redState[1];
    qbit ancilla[3];
    
    PrepZ(player[0],0);
    PrepZ(blueState[0],0);
    PrepZ(redState[0],0);

    for (i=0; i<m; i++){ //forall
        PrepZ(address[i],0);
    }
    
    //initialization of redboard & blueboard
    for(move=0; move<s; move++){ //forall
        PrepZ(redboard[move],0);
        PrepZ(blueboard[move],0);
        CNOT( init_r[move],redboard[move]);
        CNOT( init_b[move],blueboard[move]);
    }
    
    
    for (move=0; move<s; move++){ //forall
        PrepZ(ancilla[0],1);
        PrepZ(ancilla[1],1);
        
        //address can be assigned during the loop unrolling; all the usages of address needs compiler help for adding a MUX; more info is presented in the report
        //address = (pos>>shift) & (pow(2,m) -1);
        // Address is a window into the position qbit register; 
        // we'll just swap the bits we want into the address ancilla bits
        for (i=0; i<m; i++){ //forall
            Swap(&address[i], &pos[shift+i]);
        }

        //CNOT( redboard[address],blueState[0]);
        //Fredkin_decomp (redState[0], blueState[0], redboard[address]);
        
        //CNOT( blueboard[address],redState[0]);
        //Fredkin_decomp (redState[0], blueState[0], blueboard[address]);
        
        //Fredkin_decomp (ancilla[0], blueboard[address], player[0]);
        //X(player[0]);
        //Fredkin_decomp (ancilla[1], redboard[address], player[0]);

        // Can't address with qbits, but can used boolean controlled gates
// begin ctqg
        for (select=0; select<pow(2,m); select++){ //forall
            if ( (address[0] == (select & 1<<0) ) &&
                 (address[1] == (select & 1<<1) ) &&
                 (address[2] == (select & 1<<2) ) &&
                 (address[3] == (select & 1<<3) ) &&
                 (address[4] == (select & 1<<4) ) &&
                 (address[5] == (select & 1<<5) ) ){
                CNOT( redboard[select],blueState[0]);
                //Fredkin_decomp (redState[0], blueState[0], redboard[select]);
                CNOT( blueState[0] , redboard[select]);
                Toffoli ( redState[0], redboard[select],blueState[0]);
                CNOT( blueState[0] , redboard[select]);
        
                CNOT( blueboard[select],redState[0]);
                //Fredkin_decomp (redState[0], blueState[0], blueboard[select]);
                CNOT ( blueState[0],blueboard[select]);
                Toffoli ( redState[0], blueboard[select],blueState[0]);
                CNOT ( blueState[0],blueboard[select]);
        
                //Fredkin_decomp (ancilla[0], blueboard[select], player[0]);
                CNOT ( blueboard[select],player[0]);
                Toffoli ( ancilla[0], player[0],blueboard[select]);
                CNOT ( blueboard[select],player[0]);
                X(player[0]);
                //Fredkin_decomp (ancilla[1], redboard[select], player[0]);
                CNOT ( redboard[select],player[0]);
                Toffoli ( ancilla[1], player[0],redboard[select]);
                CNOT ( redboard[select],player[0]);
            }
        }
// end ctqg
        
        // Swap back; don't lose your bits!
        for (i=0; i<m; i++){ //forall
            Swap(&address[i], &pos[shift+i]);
        }

        //can be done in compile time
        shift=shift-m;
    }
    
    //ancilla[2] is a reference only
    CHECKWIN_RED(redboard, &ancilla[2]);
    
    CNOT( ancilla[2],blueState[0]);
    Fredkin_decomp(redState[0], blueState[0], ancilla[2]);
    X(ancilla[2]);
    
    CNOT( ancilla[2],redState[0]);
    Fredkin_decomp(redState[0], blueState[0], ancilla[2]);
    X(ancilla[2]);
}
*/
/* Partitioning Algorithm 9 to 2 sub-algorithms: Type -M and Type +M */
/* IARPA - GFI Algorithm 9; Type -M; */
/* Progress status: done */
/* Classical implementation: No */
/*module C_SHIFT_MINUS_M(qbit ctrl[1], qbit register1[width], int w){
    int index0;
    for(index0=0; index0<w+m; index0++){ //forall
        Toffoli( register1[index0], ctrl[0],register1[index0-m]);
        Toffoli( register1[index0-m], ctrl[0],register1[index0]);
    }
}
*/
/* IARPA - GFI Algorithm 9; Type +M; */
/* Progress status: done */
/* Classical implementation: No */
/*module C_SHIFT_PLUS_M(qbit ctrl[1], qbit register1[width], int w){
    int index0;
    for(index0=w-1; index0>=m; index0--){ //forall
        Toffoli( register1[index0], ctrl[0],register1[index0-m]);
        Toffoli( register1[index0-m], ctrl[0],register1[index0]);
    }
}
*/

/* IARPA - GFI Algorithm 8 */
/* Progress status: done */
/*module C_TOCHILD(qbit ctrl[1], qbit pos[width], qbit dir[m], int w){
    C_SHIFT_PLUS_M(&ctrl[0], pos, m);
    int qubit;
    for(qubit=0; qubit<m; qubit++){ //forall
        Toffoli( pos[qubit], ctrl[0],dir[qubit]);
        Toffoli( dir[qubit], ctrl[0],pos[qubit]);
        X(dir[qubit]);
    }
}
*/

/* IARPA - GFI Algorithm 7 */
/* Progress status: done */
/* Classical implementation: No */
/*module C_TOPARENT(qbit ctrl[1], qbit pos[width], qbit dir[m], int w){
    int qubit;
    for(qubit=0; qubit<m; qubit++){ //forall
        Toffoli( dir[qubit], ctrl[0],pos[qubit]);
        X(dir[qubit]);
        Toffoli( pos[qubit], ctrl[0],dir[qubit]);
    }
    C_SHIFT_MINUS_M(&ctrl[0], pos, -m);
}
*/


/* IARPA - GFI Algorithm 6 */
/* Progress status: done */
/* Classical implementation: No */
/* begin ctqg
module C_UNDO_ORACLE(qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit dir[m], qbit init_r[s], qbit init_b[s]){
    int i;
    qbit redState[1];
    qbit nToffAnc[1];
    qbit ancilla[3];
    qbit pos_temp[s-2];

    HEX(pos, init_r, init_b, redState);
    //nToffoli(b.work.binary[0], {b.paraleaf, HEX(b.pos, init_r, init_b, redState), ctrl[0]}, 3);
    Toffoli ( nToffAnc[0], redState[0],paraleaf[0]);
    Toffoli ( binary[0], ctrl[0],nToffAnc[0]);
    // Uncompute
    Toffoli ( nToffAnc[0], redState[0],paraleaf[0]);
    
    NAND (&ancilla[0], dir, m);
    PrepZ(ancilla[1],1);
    CNOT( ancilla[0],ancilla[1]); //ancilla[1]=X(ancilla[0])
    //using pos_temp as a reference to pos[sm, (s-1)m, ..., 3m]
    for (int i=3; i<=s; i++){
        pos_temp[i-3]=pos[i*m];
    }
    NOR(&ancilla[2], pos_temp, s-2);
    
    // begin ctqg
    if (ctrl[0]==1){
        if (pos[width-1]==0 && pos[width-2]==1 && dir[0]==0){
            X(leaf[0]);
        }else if (pos[width-1]==1 || (pos[width-1]==0 && pos[width-2]==1 && pos[width-2-m]==1 && ancilla[0]==1)){
            X(binary[0]);
            X(paraleaf[0]);
        }else if (ancilla[2]==1){
            if (ancilla[1]==1){
                if (pos[2*m]==1){
                    X(height1[0]);
                }else if (pos[m]==1){
                    X(r[0]);
                }else if (pos[1]==1){
                    X(rp[0]);
                    X(binary[0]);
                }
            }else if (pos[2*m]==0 && pos[m]==0 && pos[1]==1){
                X(height1[0]);
            }else if (pos[2*m]==0 && pos[m]==0 && dir[0]==1){
                X(rpp[0]);
            }else if (pos[2*m]==0 && pos[m]==0 && pos[0]==1){
                X(r[0]);
            }else if (pos[2*m]==0 && pos[m]==0){
                X(rp[0]);
                X(binary[0]);
            }
        }
    }
    // end ctqg
}
end ctqg */
module C_UNDO_ORACLE(qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit dir[m], qbit init_r[s], qbit init_b[s]){
	qbit I00[20];
	qbit I0g[22];
	qbit I11[11];
	qbit I1g[163];
	qbit tof_anc[7];
	CNOT ( init_r[0] , I00[8] );
	CNOT ( init_b[0] , I00[12] );
	CNOT ( pos[18] , I00[2] );
	CNOT ( I00[2] , pos[18] );
	CNOT ( pos[18] , I00[2] );
	CNOT ( pos[19] , I00[3] );
	CNOT ( I00[3] , pos[19] );
	CNOT ( pos[19] , I00[3] );
	CNOT ( pos[20] , I00[4] );
	CNOT ( I00[4] , pos[20] );
	CNOT ( pos[20] , I00[4] );
	CNOT ( pos[21] , I00[5] );
	CNOT ( I00[5] , pos[21] );
	CNOT ( pos[21] , I00[5] );
	CNOT ( pos[22] , I00[6] );
	CNOT ( I00[6] , pos[22] );
	CNOT ( pos[22] , I00[6] );
	CNOT ( pos[23] , I00[7] );
	CNOT ( I00[7] , pos[23] );
	CNOT ( pos[23] , I00[7] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[0] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[0] );
	CNOT ( I11[5] , I1g[0] );
	Toffoli ( I1g[1] , I11[5] , I1g[0] );
	Toffoli ( I11[5] , I00[3] , I1g[0] );
	CNOT ( I11[5] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I11[5] , I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[2] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[3] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[5] , I1g[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I1g[4] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[5] , I1g[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I1g[5] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[8] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I0g[1] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[8] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[12] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I0g[1] , I00[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[12] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[6] , I00[12] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[12] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[7] , I00[8] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[8] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[6] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[6] );
	CNOT ( I11[5] , I1g[6] );
	Toffoli ( I1g[7] , I11[5] , I1g[6] );
	Toffoli ( I11[5] , I00[3] , I1g[6] );
	CNOT ( I11[5] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] , I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I11[5] , I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I1g[8] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] , I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I11[5] , I1g[9] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli ( I1g[9] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I11[5] , I1g[10] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I1g[10] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I11[5] , I1g[11] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I1g[11] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[9] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I0g[1] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[9] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[13] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I0g[1] , I00[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[13] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I11[6] , I00[13] , I00[0] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[13] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[0] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I11[7] , I00[9] , I00[0] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[9] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	// Toffoli ( I1g[6] , I1g[7] , I1g[8] , I1g[9] , I1g[10] , I1g[11] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[8] );
	Toffoli (tof_anc[0], I1g[7] , I1g[6] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[12] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[12] );
	Toffoli ( I1g[13] , I11[5] , I1g[12] );
	Toffoli ( I11[5] , I00[3] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] , I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I11[5] , I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I1g[14] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] , I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I11[5] , I1g[15] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli ( I1g[15] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I11[5] , I1g[16] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I1g[16] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I11[5] , I1g[17] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I1g[17] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[10] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I0g[1] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[10] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[14] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I0g[1] , I00[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[14] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I11[6] , I00[14] , I00[0] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[14] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[0] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I11[7] , I00[10] , I00[0] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[10] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	// Toffoli ( I1g[12] , I1g[13] , I1g[14] , I1g[15] , I1g[16] , I1g[17] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[14] );
	Toffoli (tof_anc[0], I1g[13] , I1g[12] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[18] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[18] );
	Toffoli ( I1g[19] , I11[5] , I1g[18] );
	Toffoli ( I11[5] , I00[3] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] , I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I11[5] , I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I1g[20] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] , I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I11[5] , I1g[21] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli ( I1g[21] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I11[5] , I1g[22] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I1g[22] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I11[5] , I1g[23] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I1g[23] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I11[5] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[11] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I0g[1] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[11] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[15] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I0g[1] , I00[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[15] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I11[6] , I00[15] , I00[0] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[15] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[0] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I11[7] , I00[11] , I00[0] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	// Toffoli ( I1g[18] , I1g[19] , I1g[20] , I1g[21] , I1g[22] , I1g[23] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[20] );
	Toffoli (tof_anc[0], I1g[19] , I1g[18] );
	CNOT ( pos[18] , I00[2] );
	CNOT ( I00[2] , pos[18] );
	CNOT ( pos[18] , I00[2] );
	CNOT ( pos[19] , I00[3] );
	CNOT ( I00[3] , pos[19] );
	CNOT ( pos[19] , I00[3] );
	CNOT ( pos[20] , I00[4] );
	CNOT ( I00[4] , pos[20] );
	CNOT ( pos[20] , I00[4] );
	CNOT ( pos[21] , I00[5] );
	CNOT ( I00[5] , pos[21] );
	CNOT ( pos[21] , I00[5] );
	CNOT ( pos[22] , I00[6] );
	CNOT ( I00[6] , pos[22] );
	CNOT ( pos[22] , I00[6] );
	CNOT ( pos[23] , I00[7] );
	CNOT ( I00[7] , pos[23] );
	CNOT ( pos[23] , I00[7] );
	CNOT ( init_r[1] , I00[9] );
	CNOT ( init_b[1] , I00[13] );
	CNOT ( pos[12] , I00[2] );
	CNOT ( I00[2] , pos[12] );
	CNOT ( pos[12] , I00[2] );
	CNOT ( pos[13] , I00[3] );
	CNOT ( I00[3] , pos[13] );
	CNOT ( pos[13] , I00[3] );
	CNOT ( pos[14] , I00[4] );
	CNOT ( I00[4] , pos[14] );
	CNOT ( pos[14] , I00[4] );
	CNOT ( pos[15] , I00[5] );
	CNOT ( I00[5] , pos[15] );
	CNOT ( pos[15] , I00[5] );
	CNOT ( pos[16] , I00[6] );
	CNOT ( I00[6] , pos[16] );
	CNOT ( pos[16] , I00[6] );
	CNOT ( pos[17] , I00[7] );
	CNOT ( I00[7] , pos[17] );
	CNOT ( pos[17] , I00[7] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[24] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[24] );
	CNOT ( I11[5] , I1g[24] );
	Toffoli ( I1g[25] , I11[5] , I1g[24] );
	Toffoli ( I11[5] , I00[3] , I1g[24] );
	CNOT ( I11[5] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] , I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I11[5] , I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I1g[26] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] , I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I11[5] , I1g[27] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli ( I1g[27] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I11[5] , I1g[28] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I1g[28] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I11[5] , I1g[29] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I1g[29] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I11[5] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[8] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I0g[1] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[8] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[12] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I0g[1] , I00[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[12] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I11[6] , I00[12] , I00[0] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[12] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[0] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I11[7] , I00[8] , I00[0] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[8] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	// Toffoli ( I1g[24] , I1g[25] , I1g[26] , I1g[27] , I1g[28] , I1g[29] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[26] );
	Toffoli (tof_anc[0], I1g[25] , I1g[24] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[30] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[30] );
	CNOT ( I11[5] , I1g[30] );
	Toffoli ( I1g[31] , I11[5] , I1g[30] );
	Toffoli ( I11[5] , I00[3] , I1g[30] );
	CNOT ( I11[5] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] , I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I11[5] , I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I1g[32] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] , I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I11[5] , I1g[33] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli ( I1g[33] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I11[5] , I1g[34] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I1g[34] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I11[5] , I1g[35] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I1g[35] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I11[5] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[9] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I0g[1] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[9] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[13] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I0g[1] , I00[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[13] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I11[6] , I00[13] , I00[0] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[13] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[0] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I11[7] , I00[9] , I00[0] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[9] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	// Toffoli ( I1g[30] , I1g[31] , I1g[32] , I1g[33] , I1g[34] , I1g[35] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[32] );
	Toffoli (tof_anc[0], I1g[31] , I1g[30] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[36] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[36] );
	Toffoli ( I1g[37] , I11[5] , I1g[36] );
	Toffoli ( I11[5] , I00[3] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] , I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I11[5] , I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I1g[38] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] , I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I11[5] , I1g[39] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli ( I1g[39] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I11[5] , I1g[40] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I1g[40] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I11[5] , I1g[41] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I1g[41] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I11[5] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[10] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I0g[1] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[10] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[14] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I0g[1] , I00[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[14] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I11[6] , I00[14] , I00[0] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[14] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[0] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I11[7] , I00[10] , I00[0] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[10] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	// Toffoli ( I1g[36] , I1g[37] , I1g[38] , I1g[39] , I1g[40] , I1g[41] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[38] );
	Toffoli (tof_anc[0], I1g[37] , I1g[36] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[42] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[42] );
	Toffoli ( I1g[43] , I11[5] , I1g[42] );
	Toffoli ( I11[5] , I00[3] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] , I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I11[5] , I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I1g[44] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] , I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I11[5] , I1g[45] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli ( I1g[45] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I11[5] , I1g[46] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I1g[46] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I11[5] , I1g[47] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I1g[47] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I11[5] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[11] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I0g[1] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[11] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[15] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I0g[1] , I00[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[15] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I11[6] , I00[15] , I00[0] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[15] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[0] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I11[7] , I00[11] , I00[0] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	// Toffoli ( I1g[42] , I1g[43] , I1g[44] , I1g[45] , I1g[46] , I1g[47] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[44] );
	Toffoli (tof_anc[0], I1g[43] , I1g[42] );
	CNOT ( pos[12] , I00[2] );
	CNOT ( I00[2] , pos[12] );
	CNOT ( pos[12] , I00[2] );
	CNOT ( pos[13] , I00[3] );
	CNOT ( I00[3] , pos[13] );
	CNOT ( pos[13] , I00[3] );
	CNOT ( pos[14] , I00[4] );
	CNOT ( I00[4] , pos[14] );
	CNOT ( pos[14] , I00[4] );
	CNOT ( pos[15] , I00[5] );
	CNOT ( I00[5] , pos[15] );
	CNOT ( pos[15] , I00[5] );
	CNOT ( pos[16] , I00[6] );
	CNOT ( I00[6] , pos[16] );
	CNOT ( pos[16] , I00[6] );
	CNOT ( pos[17] , I00[7] );
	CNOT ( I00[7] , pos[17] );
	CNOT ( pos[17] , I00[7] );
	CNOT ( init_r[2] , I00[10] );
	CNOT ( init_b[2] , I00[14] );
	CNOT ( pos[6] , I00[2] );
	CNOT ( I00[2] , pos[6] );
	CNOT ( pos[6] , I00[2] );
	CNOT ( pos[7] , I00[3] );
	CNOT ( I00[3] , pos[7] );
	CNOT ( pos[7] , I00[3] );
	CNOT ( pos[8] , I00[4] );
	CNOT ( I00[4] , pos[8] );
	CNOT ( pos[8] , I00[4] );
	CNOT ( pos[9] , I00[5] );
	CNOT ( I00[5] , pos[9] );
	CNOT ( pos[9] , I00[5] );
	CNOT ( pos[10] , I00[6] );
	CNOT ( I00[6] , pos[10] );
	CNOT ( pos[10] , I00[6] );
	CNOT ( pos[11] , I00[7] );
	CNOT ( I00[7] , pos[11] );
	CNOT ( pos[11] , I00[7] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[48] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[48] );
	CNOT ( I11[5] , I1g[48] );
	Toffoli ( I1g[49] , I11[5] , I1g[48] );
	Toffoli ( I11[5] , I00[3] , I1g[48] );
	CNOT ( I11[5] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] , I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I11[5] , I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I1g[50] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] , I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I11[5] , I1g[51] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli ( I1g[51] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I11[5] , I1g[52] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I1g[52] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I11[5] , I1g[53] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I1g[53] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I11[5] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[8] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I0g[1] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[8] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[12] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I0g[1] , I00[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[12] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I11[6] , I00[12] , I00[0] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[12] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[0] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I11[7] , I00[8] , I00[0] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[8] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	// Toffoli ( I1g[48] , I1g[49] , I1g[50] , I1g[51] , I1g[52] , I1g[53] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[50] );
	Toffoli (tof_anc[0], I1g[49] , I1g[48] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[54] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[54] );
	CNOT ( I11[5] , I1g[54] );
	Toffoli ( I1g[55] , I11[5] , I1g[54] );
	Toffoli ( I11[5] , I00[3] , I1g[54] );
	CNOT ( I11[5] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] , I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I11[5] , I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I1g[56] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] , I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I11[5] , I1g[57] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli ( I1g[57] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I11[5] , I1g[58] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I1g[58] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I11[5] , I1g[59] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I1g[59] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I11[5] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[9] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I0g[1] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[9] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[13] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I0g[1] , I00[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[13] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I11[6] , I00[13] , I00[0] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[13] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[0] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I11[7] , I00[9] , I00[0] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[9] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	// Toffoli ( I1g[54] , I1g[55] , I1g[56] , I1g[57] , I1g[58] , I1g[59] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[56] );
	Toffoli (tof_anc[0], I1g[55] , I1g[54] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[60] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[60] );
	Toffoli ( I1g[61] , I11[5] , I1g[60] );
	Toffoli ( I11[5] , I00[3] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] , I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I11[5] , I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I1g[62] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] , I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I11[5] , I1g[63] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli ( I1g[63] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I11[5] , I1g[64] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I1g[64] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I11[5] , I1g[65] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I1g[65] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I11[5] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[10] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I0g[1] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[10] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[14] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I0g[1] , I00[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[14] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I11[6] , I00[14] , I00[0] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[14] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[0] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I11[7] , I00[10] , I00[0] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[10] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	// Toffoli ( I1g[60] , I1g[61] , I1g[62] , I1g[63] , I1g[64] , I1g[65] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[62] );
	Toffoli (tof_anc[0], I1g[61] , I1g[60] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[66] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[66] );
	Toffoli ( I1g[67] , I11[5] , I1g[66] );
	Toffoli ( I11[5] , I00[3] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] , I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I11[5] , I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I1g[68] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] , I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I11[5] , I1g[69] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli ( I1g[69] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I11[5] , I1g[70] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I1g[70] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I11[5] , I1g[71] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I1g[71] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I11[5] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[11] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I0g[1] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[11] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[15] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I0g[1] , I00[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[15] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I11[6] , I00[15] , I00[0] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[15] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[0] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I11[7] , I00[11] , I00[0] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	// Toffoli ( I1g[66] , I1g[67] , I1g[68] , I1g[69] , I1g[70] , I1g[71] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[68] );
	Toffoli (tof_anc[0], I1g[67] , I1g[66] );
	CNOT ( pos[6] , I00[2] );
	CNOT ( I00[2] , pos[6] );
	CNOT ( pos[6] , I00[2] );
	CNOT ( pos[7] , I00[3] );
	CNOT ( I00[3] , pos[7] );
	CNOT ( pos[7] , I00[3] );
	CNOT ( pos[8] , I00[4] );
	CNOT ( I00[4] , pos[8] );
	CNOT ( pos[8] , I00[4] );
	CNOT ( pos[9] , I00[5] );
	CNOT ( I00[5] , pos[9] );
	CNOT ( pos[9] , I00[5] );
	CNOT ( pos[10] , I00[6] );
	CNOT ( I00[6] , pos[10] );
	CNOT ( pos[10] , I00[6] );
	CNOT ( pos[11] , I00[7] );
	CNOT ( I00[7] , pos[11] );
	CNOT ( pos[11] , I00[7] );
	CNOT ( init_r[3] , I00[11] );
	CNOT ( init_b[3] , I00[15] );
	CNOT ( pos[0] , I00[2] );
	CNOT ( I00[2] , pos[0] );
	CNOT ( pos[0] , I00[2] );
	CNOT ( pos[1] , I00[3] );
	CNOT ( I00[3] , pos[1] );
	CNOT ( pos[1] , I00[3] );
	CNOT ( pos[2] , I00[4] );
	CNOT ( I00[4] , pos[2] );
	CNOT ( pos[2] , I00[4] );
	CNOT ( pos[3] , I00[5] );
	CNOT ( I00[5] , pos[3] );
	CNOT ( pos[3] , I00[5] );
	CNOT ( pos[4] , I00[6] );
	CNOT ( I00[6] , pos[4] );
	CNOT ( pos[4] , I00[6] );
	CNOT ( pos[5] , I00[7] );
	CNOT ( I00[7] , pos[5] );
	CNOT ( pos[5] , I00[7] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[72] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[72] );
	CNOT ( I11[5] , I1g[72] );
	Toffoli ( I1g[73] , I11[5] , I1g[72] );
	Toffoli ( I11[5] , I00[3] , I1g[72] );
	CNOT ( I11[5] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] , I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I11[5] , I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I1g[74] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] , I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I11[5] , I1g[75] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli ( I1g[75] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I11[5] , I1g[76] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I1g[76] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I11[5] , I1g[77] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I1g[77] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I11[5] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[8] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I0g[1] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[8] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[1] ,tof_anc[4], I00[8] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[12] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I0g[1] , I00[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[12] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[1] ,tof_anc[4], I00[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I11[6] , I00[12] , I00[0] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[12] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[12] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[0] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I11[7] , I00[8] , I00[0] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[8] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	// Toffoli ( I1g[72] , I1g[73] , I1g[74] , I1g[75] , I1g[76] , I1g[77] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I00[8] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[74] );
	Toffoli (tof_anc[0], I1g[73] , I1g[72] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[78] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[78] );
	CNOT ( I11[5] , I1g[78] );
	Toffoli ( I1g[79] , I11[5] , I1g[78] );
	Toffoli ( I11[5] , I00[3] , I1g[78] );
	CNOT ( I11[5] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] , I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I11[5] , I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I1g[80] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] , I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I11[5] , I1g[81] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli ( I1g[81] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I11[5] , I1g[82] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I1g[82] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I11[5] , I1g[83] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I1g[83] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I11[5] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[9] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I0g[1] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[9] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[1] ,tof_anc[4], I00[9] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[13] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I0g[1] , I00[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[13] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[1] ,tof_anc[4], I00[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I11[6] , I00[13] , I00[0] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[13] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[13] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[0] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I11[7] , I00[9] , I00[0] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[9] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	// Toffoli ( I1g[78] , I1g[79] , I1g[80] , I1g[81] , I1g[82] , I1g[83] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I00[9] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[80] );
	Toffoli (tof_anc[0], I1g[79] , I1g[78] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	CNOT ( I1g[84] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	X ( I11[5] );
	Toffoli ( I11[5] , I00[3] , I1g[84] );
	Toffoli ( I1g[85] , I11[5] , I1g[84] );
	Toffoli ( I11[5] , I00[3] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] , I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I11[5] , I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I1g[86] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] , I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I11[5] , I1g[87] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli ( I1g[87] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I11[5] , I1g[88] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I1g[88] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I11[5] , I1g[89] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I1g[89] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I11[5] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[10] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I0g[1] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[10] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[1] ,tof_anc[4], I00[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[14] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I0g[1] , I00[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[14] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[1] ,tof_anc[4], I00[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I11[6] , I00[14] , I00[0] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[14] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[14] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[0] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I11[7] , I00[10] , I00[0] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[10] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	// Toffoli ( I1g[84] , I1g[85] , I1g[86] , I1g[87] , I1g[88] , I1g[89] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I00[10] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[86] );
	Toffoli (tof_anc[0], I1g[85] , I1g[84] );
	CNOT ( I11[5] , I00[2] );
	CNOT ( I1g[90] , I11[5] );
	CNOT ( I11[5] , I00[2] );
	Toffoli ( I11[5] , I00[3] , I1g[90] );
	Toffoli ( I1g[91] , I11[5] , I1g[90] );
	Toffoli ( I11[5] , I00[3] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] , I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I11[5] , I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I1g[92] ,tof_anc[0], I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I00[4] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] ,tof_anc[0], I00[4] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] , I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I11[5] , I1g[93] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli ( I1g[93] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I00[5] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli ( I11[5] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli ( I11[5] ,tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I11[5] , I1g[94] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I1g[94] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I00[6] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[5] ,tof_anc[2], I00[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli ( I11[5] ,tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I11[5] , I1g[95] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I1g[95] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I00[7] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[5] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I11[5] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[5] ,tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[11] ,tof_anc[4], I00[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I0g[1] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[11] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[1] ,tof_anc[4], I00[11] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[15] ,tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I0g[1] , I00[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli ( I00[15] ,tof_anc[5], I00[1] );
	Toffoli (tof_anc[5],tof_anc[4], I0g[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[1] ,tof_anc[4], I00[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I11[6] , I00[15] , I00[0] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli ( I00[0] ,tof_anc[5], I00[15] );
	Toffoli (tof_anc[5],tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[15] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[0] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I00[0] ,tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I11[7] , I00[11] , I00[0] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli ( I00[0] ,tof_anc[5], I00[11] );
	Toffoli (tof_anc[5],tof_anc[4], I11[7] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	// Toffoli ( I1g[90] , I1g[91] , I1g[92] , I1g[93] , I1g[94] , I1g[95] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I00[11] ,tof_anc[4], I00[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[92] );
	Toffoli (tof_anc[0], I1g[91] , I1g[90] );
	CNOT ( pos[0] , I00[2] );
	CNOT ( I00[2] , pos[0] );
	CNOT ( pos[0] , I00[2] );
	CNOT ( pos[1] , I00[3] );
	CNOT ( I00[3] , pos[1] );
	CNOT ( pos[1] , I00[3] );
	CNOT ( pos[2] , I00[4] );
	CNOT ( I00[4] , pos[2] );
	CNOT ( pos[2] , I00[4] );
	CNOT ( pos[3] , I00[5] );
	CNOT ( I00[5] , pos[3] );
	CNOT ( pos[3] , I00[5] );
	CNOT ( pos[4] , I00[6] );
	CNOT ( I00[6] , pos[4] );
	CNOT ( pos[4] , I00[6] );
	CNOT ( pos[5] , I00[7] );
	CNOT ( I00[7] , pos[5] );
	CNOT ( pos[5] , I00[7] );
	X ( I00[8] );
	CNOT ( I00[8] , I00[16] );
	X ( I00[8] );
	X ( I00[9] );
	CNOT ( I00[9] , I00[17] );
	X ( I00[9] );
	CNOT ( I00[16] , I0g[8] );
	CNOT ( I0g[8] , I00[16] );
	CNOT ( I00[16] , I0g[8] );
	CNOT ( I00[17] , I0g[9] );
	CNOT ( I0g[9] , I00[17] );
	CNOT ( I00[17] , I0g[9] );
	CNOT ( I00[18] , I0g[10] );
	CNOT ( I0g[10] , I00[18] );
	CNOT ( I00[18] , I0g[10] );
	CNOT ( I00[19] , I0g[11] );
	CNOT ( I0g[11] , I00[19] );
	CNOT ( I00[19] , I0g[11] );
	X ( I0g[8] );
	X ( I0g[9] );
	X ( I0g[10] );
	X ( I0g[11] );
	Toffoli ( I0g[9] , I0g[8] , I0g[14] );
	Toffoli ( I0g[14] , I0g[10] , I0g[15] );
	Toffoli ( I0g[15] , I0g[11] , I0g[4] );
	Toffoli ( I0g[14] , I0g[10] , I0g[15] );
	X ( I0g[8] );
	X ( I0g[9] );
	X ( I0g[10] );
	X ( I0g[11] );
	X ( I0g[4] );
	CNOT ( I0g[4] , I0g[12] );
	X ( I0g[4] );
	CNOT ( I0g[4] , I1g[96] );
	CNOT ( I1g[96] , I0g[4] );
	CNOT ( I0g[4] , I1g[96] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[8] );
	CNOT ( I0g[13] , I00[16] );
	Toffoli ( I00[16] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[16] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[97] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[97] );
	Toffoli ( I1g[98] , I11[9] , I1g[97] );
	Toffoli ( I11[9] , I00[10] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I11[9] , I1g[99] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli ( I1g[99] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I1g[99] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I1g[99] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	// Toffoli ( I1g[97] , I1g[98] , I1g[99] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[99] );
	Toffoli (tof_anc[0], I1g[98] , I1g[97] );
	CNOT ( I0g[13] , I0g[8] );
	Toffoli ( I0g[8] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[8] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[9] );
	CNOT ( I0g[13] , I00[17] );
	Toffoli ( I00[17] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[17] );
	CNOT ( I11[9] , I00[19] );
	CNOT ( I1g[100] , I11[9] );
	CNOT ( I11[9] , I00[19] );
	Toffoli ( I11[9] , I00[11] , I1g[100] );
	Toffoli ( I1g[101] , I11[9] , I1g[100] );
	Toffoli ( I11[9] , I00[11] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I11[9] , I1g[102] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli ( I1g[102] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I1g[102] , I11[10] , I0g[11] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli ( I0g[11] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I1g[102] , I0g[11] , I11[10] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	// Toffoli ( I1g[100] , I1g[101] , I1g[102] , I11[10] , I0g[11] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli ( I0g[11] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[102] );
	Toffoli (tof_anc[0], I1g[101] , I1g[100] );
	CNOT ( I11[9] , I00[16] );
	CNOT ( I1g[103] , I11[9] );
	CNOT ( I11[9] , I00[16] );
	Toffoli ( I11[9] , I00[8] , I1g[103] );
	Toffoli ( I1g[104] , I11[9] , I1g[103] );
	Toffoli ( I11[9] , I00[8] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I11[9] , I1g[105] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli ( I1g[105] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I1g[105] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I1g[105] , I0g[8] , I11[10] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	// Toffoli ( I1g[103] , I1g[104] , I1g[105] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[105] );
	Toffoli (tof_anc[0], I1g[104] , I1g[103] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[106] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[106] );
	Toffoli ( I1g[107] , I11[9] , I1g[106] );
	Toffoli ( I11[9] , I00[10] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I11[9] , I1g[108] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli ( I1g[108] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I1g[108] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I1g[108] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	// Toffoli ( I1g[106] , I1g[107] , I1g[108] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[108] );
	Toffoli (tof_anc[0], I1g[107] , I1g[106] );
	CNOT ( I0g[13] , I0g[9] );
	Toffoli ( I0g[9] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[9] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[10] );
	CNOT ( I0g[13] , I00[18] );
	Toffoli ( I00[18] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[18] );
	CNOT ( I11[9] , I00[16] );
	CNOT ( I1g[109] , I11[9] );
	CNOT ( I11[9] , I00[16] );
	Toffoli ( I11[9] , I00[8] , I1g[109] );
	Toffoli ( I1g[110] , I11[9] , I1g[109] );
	Toffoli ( I11[9] , I00[8] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I11[9] , I1g[111] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli ( I1g[111] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I1g[111] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I1g[111] , I0g[8] , I11[10] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	// Toffoli ( I1g[109] , I1g[110] , I1g[111] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[111] );
	Toffoli (tof_anc[0], I1g[110] , I1g[109] );
	CNOT ( I0g[13] , I0g[10] );
	Toffoli ( I0g[10] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[10] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[11] );
	CNOT ( I0g[13] , I00[19] );
	Toffoli ( I00[19] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[19] );
	CNOT ( I11[9] , I00[17] );
	CNOT ( I1g[112] , I11[9] );
	CNOT ( I11[9] , I00[17] );
	Toffoli ( I11[9] , I00[9] , I1g[112] );
	Toffoli ( I1g[113] , I11[9] , I1g[112] );
	Toffoli ( I11[9] , I00[9] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I11[9] , I1g[114] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli ( I1g[114] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I1g[114] , I11[10] , I0g[9] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli ( I0g[9] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I1g[114] , I0g[9] , I11[10] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	// Toffoli ( I1g[112] , I1g[113] , I1g[114] , I11[10] , I0g[9] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli ( I0g[9] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[114] );
	Toffoli (tof_anc[0], I1g[113] , I1g[112] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[115] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[115] );
	Toffoli ( I1g[116] , I11[9] , I1g[115] );
	Toffoli ( I11[9] , I00[10] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I11[9] , I1g[117] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli ( I1g[117] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I1g[117] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I1g[117] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	// Toffoli ( I1g[115] , I1g[116] , I1g[117] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[117] );
	Toffoli (tof_anc[0], I1g[116] , I1g[115] );
	CNOT ( I0g[13] , I0g[11] );
	Toffoli ( I0g[11] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[11] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	CNOT ( I0g[4] , I0g[12] );
	X ( I0g[4] );
	CNOT ( I0g[4] , I0g[12] );
	X ( I0g[4] );
	CNOT ( I0g[4] , I1g[96] );
	CNOT ( I1g[96] , I0g[4] );
	CNOT ( I0g[4] , I1g[96] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[8] );
	CNOT ( I0g[13] , I00[16] );
	Toffoli ( I00[16] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[16] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[118] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[118] );
	Toffoli ( I1g[119] , I11[9] , I1g[118] );
	Toffoli ( I11[9] , I00[10] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I11[9] , I1g[120] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli ( I1g[120] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I1g[120] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I1g[120] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	// Toffoli ( I1g[118] , I1g[119] , I1g[120] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[120] );
	Toffoli (tof_anc[0], I1g[119] , I1g[118] );
	CNOT ( I0g[13] , I0g[8] );
	Toffoli ( I0g[8] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[8] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[9] );
	CNOT ( I0g[13] , I00[17] );
	Toffoli ( I00[17] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[17] );
	CNOT ( I11[9] , I00[19] );
	CNOT ( I1g[121] , I11[9] );
	CNOT ( I11[9] , I00[19] );
	Toffoli ( I11[9] , I00[11] , I1g[121] );
	Toffoli ( I1g[122] , I11[9] , I1g[121] );
	Toffoli ( I11[9] , I00[11] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I11[9] , I1g[123] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli ( I1g[123] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I1g[123] , I11[10] , I0g[11] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli ( I0g[11] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I1g[123] , I0g[11] , I11[10] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	// Toffoli ( I1g[121] , I1g[122] , I1g[123] , I11[10] , I0g[11] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli ( I0g[11] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[123] );
	Toffoli (tof_anc[0], I1g[122] , I1g[121] );
	CNOT ( I11[9] , I00[16] );
	CNOT ( I1g[124] , I11[9] );
	CNOT ( I11[9] , I00[16] );
	Toffoli ( I11[9] , I00[8] , I1g[124] );
	Toffoli ( I1g[125] , I11[9] , I1g[124] );
	Toffoli ( I11[9] , I00[8] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I11[9] , I1g[126] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli ( I1g[126] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I1g[126] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I1g[126] , I0g[8] , I11[10] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	// Toffoli ( I1g[124] , I1g[125] , I1g[126] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[126] );
	Toffoli (tof_anc[0], I1g[125] , I1g[124] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[127] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[127] );
	Toffoli ( I1g[128] , I11[9] , I1g[127] );
	Toffoli ( I11[9] , I00[10] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I11[9] , I1g[129] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli ( I1g[129] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I1g[129] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I1g[129] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	// Toffoli ( I1g[127] , I1g[128] , I1g[129] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[129] );
	Toffoli (tof_anc[0], I1g[128] , I1g[127] );
	CNOT ( I0g[13] , I0g[9] );
	Toffoli ( I0g[9] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[9] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[10] );
	CNOT ( I0g[13] , I00[18] );
	Toffoli ( I00[18] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[18] );
	CNOT ( I11[9] , I00[16] );
	CNOT ( I1g[130] , I11[9] );
	CNOT ( I11[9] , I00[16] );
	Toffoli ( I11[9] , I00[8] , I1g[130] );
	Toffoli ( I1g[131] , I11[9] , I1g[130] );
	Toffoli ( I11[9] , I00[8] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I11[9] , I1g[132] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli ( I1g[132] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I1g[132] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I1g[132] , I0g[8] , I11[10] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	// Toffoli ( I1g[130] , I1g[131] , I1g[132] , I11[10] , I0g[8] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli ( I0g[8] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[132] );
	Toffoli (tof_anc[0], I1g[131] , I1g[130] );
	CNOT ( I0g[13] , I0g[10] );
	Toffoli ( I0g[10] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[10] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	X ( I0g[5] );
	Toffoli ( I0g[13] , I0g[12] , I0g[11] );
	CNOT ( I0g[13] , I00[19] );
	Toffoli ( I00[19] , I0g[13] , I0g[5] );
	CNOT ( I0g[13] , I00[19] );
	CNOT ( I11[9] , I00[17] );
	CNOT ( I1g[133] , I11[9] );
	CNOT ( I11[9] , I00[17] );
	Toffoli ( I11[9] , I00[9] , I1g[133] );
	Toffoli ( I1g[134] , I11[9] , I1g[133] );
	Toffoli ( I11[9] , I00[9] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I11[9] , I1g[135] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli ( I1g[135] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I1g[135] , I11[10] , I0g[9] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli ( I0g[9] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I1g[135] , I0g[9] , I11[10] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	// Toffoli ( I1g[133] , I1g[134] , I1g[135] , I11[10] , I0g[9] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli ( I0g[9] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[135] );
	Toffoli (tof_anc[0], I1g[134] , I1g[133] );
	CNOT ( I11[9] , I00[18] );
	CNOT ( I1g[136] , I11[9] );
	CNOT ( I11[9] , I00[18] );
	Toffoli ( I11[9] , I00[10] , I1g[136] );
	Toffoli ( I1g[137] , I11[9] , I1g[136] );
	Toffoli ( I11[9] , I00[10] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I11[9] , I1g[138] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli ( I1g[138] ,tof_anc[0], I11[9] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I0g[13] , I11[9] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli ( I11[9] ,tof_anc[0], I0g[13] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I1g[138] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I1g[138] , I0g[10] , I11[10] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli ( I11[10] ,tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	// Toffoli ( I1g[136] , I1g[137] , I1g[138] , I11[10] , I0g[10] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli ( I0g[10] ,tof_anc[1], I11[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[138] );
	Toffoli (tof_anc[0], I1g[137] , I1g[136] );
	CNOT ( I0g[13] , I0g[11] );
	Toffoli ( I0g[11] , I0g[13] , I0g[6] );
	CNOT ( I0g[13] , I0g[11] );
	CNOT ( I0g[13] , I0g[4] );
	Toffoli ( I0g[4] , I0g[13] , I0g[7] );
	CNOT ( I0g[13] , I0g[4] );
	CNOT ( I0g[4] , I0g[12] );
	X ( I00[18] );
	X ( I00[19] );
	Toffoli ( I00[19] , I00[18] , I11[8] );
	X ( I00[18] );
	X ( I00[19] );
	CNOT ( I11[8] , I00[1] );
	CNOT ( I11[8] , I00[1] );
	Toffoli ( I00[1] , I11[8] , I0g[1] );
	CNOT ( I11[8] , I00[1] );
	X ( I11[8] );
	CNOT ( I11[8] , I0g[1] );
	CNOT ( I11[8] , I00[1] );
	Toffoli ( I00[1] , I11[8] , I0g[1] );
	CNOT ( I11[8] , I00[1] );
	X ( I11[8] );
	Toffoli ( I0g[1] , paraleaf[0] , I0g[0] );
	Toffoli ( I0g[0] , binary[0] , ctrl[0] );
	Toffoli ( I0g[1] , paraleaf[0] , I0g[0] );
	Toffoli ( dir[1] , dir[0] , I0g[16] );
	Toffoli ( I0g[16] , dir[2] , I0g[17] );
	Toffoli ( I0g[17] , dir[3] , I0g[18] );
	Toffoli ( I0g[18] , dir[4] , I0g[19] );
	Toffoli ( I0g[19] , dir[5] , I11[2] );
	Toffoli ( I0g[18] , dir[4] , I0g[19] );
	Toffoli ( I0g[17] , dir[3] , I0g[18] );
	Toffoli ( I0g[16] , dir[2] , I0g[17] );
	X ( I11[2] );
	CNOT ( I11[2] , I11[3] );
	CNOT ( I0g[20] , I0g[2] );
	CNOT ( I0g[2] , I0g[20] );
	CNOT ( I0g[2] , pos[18] );
	CNOT ( I0g[21] , I0g[3] );
	CNOT ( I0g[3] , I0g[21] );
	CNOT ( I0g[3] , pos[24] );
	X ( I0g[2] );
	X ( I0g[3] );
	Toffoli ( I0g[3] , I0g[2] , I11[4] );
	X ( I0g[2] );
	X ( I0g[3] );
	CNOT ( I11[0] , ctrl[0] );
	CNOT ( I1g[139] , I11[0] );
	CNOT ( I11[0] , ctrl[0] );
	Toffoli ( I11[0] , pos[25] , I1g[139] );
	CNOT ( I11[0] , I1g[139] );
	Toffoli ( I1g[140] , I11[0] , I1g[139] );
	Toffoli ( I11[0] , pos[25] , I1g[139] );
	CNOT ( I11[0] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , pos[24] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I11[0] ,tof_anc[0], pos[24] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I11[0] , I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I1g[141] ,tof_anc[0], I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , pos[24] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I11[0] ,tof_anc[0], pos[24] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , dir[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli ( I11[0] ,tof_anc[1], dir[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I11[0] ,tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I11[0] , I1g[142] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli ( I1g[142] ,tof_anc[1], I11[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , dir[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli ( I11[0] ,tof_anc[1], dir[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I11[0] ,tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , leaf[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli ( leaf[0] ,tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I1g[142] ,tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], pos[25] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , pos[25] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[1] ,tof_anc[2], pos[25] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I11[0] , I11[1] , I1g[143] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I11[0] );
	Toffoli ( I1g[143] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I11[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], pos[25] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , pos[25] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[1] ,tof_anc[2], pos[25] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[0] ,tof_anc[3], pos[25] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , pos[24] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[1] ,tof_anc[3], pos[24] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I11[0] , I11[1] , I1g[144] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I11[0] );
	Toffoli ( I1g[144] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I11[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[0] ,tof_anc[3], pos[25] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , pos[24] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[1] ,tof_anc[3], pos[24] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[0] ,tof_anc[4], pos[25] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , pos[18] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[1] ,tof_anc[4], pos[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I11[0] , I11[1] , I1g[145] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I11[0] );
	Toffoli ( I1g[145] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[0] ,tof_anc[4], pos[25] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , pos[18] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[1] ,tof_anc[4], pos[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( I11[0] ,tof_anc[5], pos[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , I11[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( I11[1] ,tof_anc[5], I11[2] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , I11[0] , I11[1] , I1g[146] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[6],tof_anc[5], I11[0] );
	Toffoli ( I1g[146] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , pos[25] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( I11[0] ,tof_anc[5], pos[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , I11[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( I11[1] ,tof_anc[5], I11[2] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , I1g[146] , binary[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( binary[0] ,tof_anc[5], I1g[146] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , I1g[146] , paraleaf[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli ( paraleaf[0] ,tof_anc[5], I1g[146] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli ( I1g[142] ,tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I11[4] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], I11[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I11[0] , I1g[147] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[147] ,tof_anc[2], I11[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I11[4] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], I11[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I11[3] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I11[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I11[0] , I1g[148] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I1g[148] ,tof_anc[3], I11[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I11[3] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I11[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] , I1g[149] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I1g[149] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , height1[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( height1[0] ,tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I1g[149] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , I11[0] , I1g[150] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I1g[150] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , I1g[150] , r[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( r[0] ,tof_anc[5], I1g[150] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I1g[149] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I11[0] ,tof_anc[5], pos[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , I11[0] , I1g[151] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I1g[151] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( I11[0] ,tof_anc[5], pos[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , I1g[151] , rp[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( rp[0] ,tof_anc[5], I1g[151] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[149] , I1g[151] , binary[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli ( binary[0] ,tof_anc[5], I1g[151] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[149] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[148] ,tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] , I1g[152] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I1g[152] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I11[0] , I1g[153] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli ( I1g[153] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I1g[153] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli ( I11[0] ,tof_anc[6], pos[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I1g[153] , I11[0] , I1g[154] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli ( I1g[154] ,tof_anc[6], I11[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I1g[153] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli ( I11[0] ,tof_anc[6], pos[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[152] , I1g[153] , I1g[154] , height1[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli ( height1[0] ,tof_anc[6], I1g[154] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[153] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[152] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[148] ,tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] , I1g[155] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I1g[155] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I11[0] , I1g[156] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli ( I1g[156] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , dir[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli ( I11[0] ,tof_anc[6], dir[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli ( I11[0] ,tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , I11[0] , I1g[157] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli ( I1g[157] ,tof_anc[6], I11[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , dir[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli ( I11[0] ,tof_anc[6], dir[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli ( I11[0] ,tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[155] , I1g[156] , I1g[157] , rpp[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli ( rpp[0] ,tof_anc[6], I1g[157] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[156] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[155] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[148] ,tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] , I1g[158] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I1g[158] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I11[0] , I1g[159] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli ( I1g[159] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I1g[159] , pos[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli ( I11[0] ,tof_anc[6], pos[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I1g[159] , I11[0] , I1g[160] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli ( I1g[160] ,tof_anc[6], I11[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I1g[159] , pos[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli ( I11[0] ,tof_anc[6], pos[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[158] , I1g[159] , I1g[160] , r[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli ( r[0] ,tof_anc[6], I1g[160] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[159] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[158] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[148] ,tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] , I1g[161] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I1g[161] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , pos[12] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], pos[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli ( I11[0] ,tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , I11[0] , I1g[162] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli ( I1g[162] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli ( I11[0] ,tof_anc[5], pos[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , I11[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli ( I11[0] ,tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , I1g[162] , rp[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli ( rp[0] ,tof_anc[5], I1g[162] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	// Toffoli ( I1g[139] , I1g[140] , I1g[141] , I1g[142] , I1g[147] , I1g[148] , I1g[161] , I1g[162] , binary[0] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli ( binary[0] ,tof_anc[5], I1g[162] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[161] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[148] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[147] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[141] );
	Toffoli (tof_anc[0], I1g[140] , I1g[139] );
}



/* IARPA - GFI Algorithm 5 */
/* Progress status: done */
/* Classical implementation: No */
//module C_WALK(qbit ctrl[1], qstruct B_qstruct b){
// ctqg
module C_WALK(qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit dir[m]){
	qbit I00[12];
	qbit I11[2];
	qbit I1g[8];
	qbit tof_anc[8];
	X ( dir[0] );
	Toffoli ( paraleaf[0] , I00[5] , dir[0] );
	Toffoli ( rp[0] , I00[9] , dir[0] );
	X ( dir[0] );
	Toffoli ( rp[0] , I00[8] , dir[0] );
	Toffoli ( paraleaf[0] , I00[6] , dir[0] );
	Toffoli ( height1[0] , I00[7] , I00[0] );
	Toffoli ( dir[0] , I00[1] , dir[1] );
	Toffoli ( dir[2] , I00[2] , I00[1] );
	Toffoli ( dir[3] , I00[3] , I00[2] );
	Toffoli ( dir[4] , I00[4] , I00[3] );
	Toffoli ( dir[5] , I00[0] , I00[4] );
	Toffoli ( dir[4] , I00[4] , I00[3] );
	Toffoli ( dir[3] , I00[3] , I00[2] );
	Toffoli ( dir[2] , I00[2] , I00[1] );
	Toffoli ( r[0] , I00[10] , I00[0] );
	CNOT ( I11[0] , leaf[0] );
	CNOT ( I11[1] , I00[5] );
	Toffoli ( I1g[0] , I11[1] , I11[0] );
	CNOT ( I11[0] , leaf[0] );
	CNOT ( I11[1] , I00[5] );
	Toffoli ( ctrl[0] , pos[25] , I1g[0] );
	X ( I1g[0] );
	Toffoli ( I11[0] , I00[6] , I1g[0] );
	Toffoli ( I1g[1] , I11[0] , I1g[0] );
	Toffoli ( I11[0] , I00[6] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[0] );
	Toffoli ( dir[0] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[0] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[0] );
	Toffoli ( pos[0] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[1] );
	Toffoli ( dir[1] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[1] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[1] );
	Toffoli ( pos[1] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[2] );
	Toffoli ( dir[2] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[2] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[2] );
	Toffoli ( pos[2] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[3] );
	Toffoli ( dir[3] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[3] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[3] );
	Toffoli ( pos[3] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[4] );
	Toffoli ( dir[4] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[4] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[4] );
	Toffoli ( pos[4] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[5] );
	Toffoli ( dir[5] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( dir[5] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[5] );
	Toffoli ( pos[5] ,tof_anc[1], ctrl[0] );
	Toffoli (tof_anc[1],tof_anc[0], dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	CNOT ( I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , rpp[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], rpp[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I00[8] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I11[0] , I11[1] , I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I11[0] );
	Toffoli ( I1g[2] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , rpp[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], rpp[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I00[8] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[0] , ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( ctrl[0] ,tof_anc[1], pos[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[2] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[9] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[0] ,tof_anc[1], I00[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[10] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[0] , I11[1] , I1g[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I11[0] );
	Toffoli ( I1g[3] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I11[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[9] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[0] ,tof_anc[1], I00[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[10] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , pos[1] , ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( ctrl[0] ,tof_anc[2], pos[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[3] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , r[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[0] ,tof_anc[2], r[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[0] , I1g[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I1g[4] ,tof_anc[2], I11[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , r[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[0] ,tof_anc[2], r[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[1] , ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( ctrl[0] ,tof_anc[3], pos[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[0] );
	Toffoli ( pos[0] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[0] );
	Toffoli ( dir[0] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[0] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[1] );
	Toffoli ( pos[1] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[1] );
	Toffoli ( dir[1] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[1] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[2] );
	Toffoli ( pos[2] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[2] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[2] );
	Toffoli ( dir[2] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[2] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[2] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[3] );
	Toffoli ( pos[3] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[3] );
	Toffoli ( dir[3] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[3] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[4] );
	Toffoli ( pos[4] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[4] );
	Toffoli ( dir[4] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[4] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], dir[5] );
	Toffoli ( pos[5] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], dir[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], pos[5] );
	Toffoli ( dir[5] ,tof_anc[4], ctrl[0] );
	Toffoli (tof_anc[4],tof_anc[3], pos[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( dir[5] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[4] ,tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[7] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[0] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[0] , I1g[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I1g[5] ,tof_anc[3], I11[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[7] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[0] ,tof_anc[3], I00[7] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[0] );
	Toffoli ( dir[0] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[0] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[0] );
	Toffoli ( pos[0] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[1] );
	Toffoli ( dir[1] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[1] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[1] );
	Toffoli ( pos[1] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[2] );
	Toffoli ( dir[2] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[2] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[2] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[2] );
	Toffoli ( pos[2] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[2] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[3] );
	Toffoli ( dir[3] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[3] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[3] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[3] );
	Toffoli ( pos[3] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[3] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[4] );
	Toffoli ( dir[4] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[4] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[4] );
	Toffoli ( pos[4] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], pos[5] );
	Toffoli ( dir[5] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], pos[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( dir[5] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], dir[5] );
	Toffoli ( pos[5] ,tof_anc[5], ctrl[0] );
	Toffoli (tof_anc[5],tof_anc[4], dir[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , pos[1] , ctrl[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( ctrl[0] ,tof_anc[4], pos[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I1g[5] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , height1[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[0] ,tof_anc[4], height1[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[0] , I1g[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I1g[6] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , height1[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[0] ,tof_anc[4], height1[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[0] );
	Toffoli ( pos[0] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[0] );
	Toffoli ( dir[0] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[0] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[1] );
	Toffoli ( pos[1] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[1] );
	Toffoli ( dir[1] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[1] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[2] );
	Toffoli ( pos[2] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[2] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[2] );
	Toffoli ( dir[2] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[2] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[2] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[3] );
	Toffoli ( pos[3] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[3] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[3] );
	Toffoli ( dir[3] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[3] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[3] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[4] );
	Toffoli ( pos[4] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[4] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[4] );
	Toffoli ( dir[4] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[4] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[4] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], dir[5] );
	Toffoli ( pos[5] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], dir[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], pos[5] );
	Toffoli ( dir[5] ,tof_anc[6], ctrl[0] );
	Toffoli (tof_anc[6],tof_anc[5], pos[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( dir[5] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I1g[6] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I00[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[0] ,tof_anc[5], I00[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I11[0] , I1g[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I1g[7] ,tof_anc[5], I11[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I00[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[0] ,tof_anc[5], I00[0] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[0] );
	Toffoli ( dir[0] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[0] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[0] );
	Toffoli ( pos[0] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[1] );
	Toffoli ( dir[1] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[1] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[1] );
	Toffoli ( pos[1] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[2] );
	Toffoli ( dir[2] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[2] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[2] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[2] );
	Toffoli ( pos[2] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[2] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[3] );
	Toffoli ( dir[3] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[3] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[3] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[3] );
	Toffoli ( pos[3] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[3] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[4] );
	Toffoli ( dir[4] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[4] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[4] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[4] );
	Toffoli ( pos[4] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[4] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[5] );
	Toffoli ( dir[5] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[5] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[5] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[5] );
	Toffoli ( pos[5] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[5] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I1g[7] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[0] , ctrl[0] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[0] );
	Toffoli ( pos[0] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[0] , ctrl[0] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[0] );
	Toffoli ( dir[0] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[0] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[0] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[1] , ctrl[0] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[1] );
	Toffoli ( pos[1] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[1] , ctrl[0] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[1] );
	Toffoli ( dir[1] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[1] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[2] , ctrl[0] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[2] );
	Toffoli ( pos[2] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[2] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[2] , ctrl[0] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[2] );
	Toffoli ( dir[2] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[2] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[2] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[3] , ctrl[0] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[3] );
	Toffoli ( pos[3] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[3] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[3] , ctrl[0] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[3] );
	Toffoli ( dir[3] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[3] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[3] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[4] , ctrl[0] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[4] );
	Toffoli ( pos[4] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[4] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[4] , ctrl[0] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[4] );
	Toffoli ( dir[4] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[4] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[4] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[5] , ctrl[0] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], dir[5] );
	Toffoli ( pos[5] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], dir[5] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , pos[5] , ctrl[0] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], pos[5] );
	Toffoli ( dir[5] ,tof_anc[7], ctrl[0] );
	Toffoli (tof_anc[7],tof_anc[6], pos[5] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , dir[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( dir[5] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
	Toffoli ( I00[11] , dir[0] , ctrl[0] );
	Toffoli ( rp[0] , I00[11] , pos[0] );
}

/* IARPA - GFI Algorithm 4 */
/* Progress status: finished */
/* Classical implementation: No */
//module C_DIFFUSE(qbit ctrl[1], qstruct Work_qstruct work, qbit dir[m]){
// begin ctqg
module C_DIFFUSE(qbit ctrl[1], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit dir[m]){
    int qubit;
    
    /* Relace:
    if (binary[0]==1) {
        if (ctrl[0]==1)
            H(dir[0]);
    }else{
        for(qubit=0; qubit<m; qubit++){ //forall
            if (binary[0]==0) {
                if (leaf[0] ==0 && rpp[0]==0){
                    H(dir[qubit]);
            }
        }
    }

    with: */
    qbit bin1ctrl1[1];
    qbit bin0leaf0rpp0[1];
    qbit tof_anc[1];

    PrepZ( bin1ctrl1[0], 0 );
    PrepZ( bin0leaf0rpp0[0], 0 );
    PrepZ( tof_anc[0], 0 );

    // Generate control for H
    Toffoli( bin1ctrl1[0] , ctrl[0], binary[0]);
    ctrlH( &dir[0], &bin1ctrl1[0] );
    Toffoli( bin1ctrl1[0] , ctrl[0], binary[0]); // Uncompute

    // Invert sense of all inputs
    X( binary[0] );
    X( leaf[0] );
    X( rpp[0] );

    // 3-ctrl Toffoli to generate control signal
    Toffoli( bin0leaf0rpp0[0] , tof_anc[0], binary[0]);
    Toffoli( tof_anc[0] , rpp[0], leaf[0]);
    Toffoli( bin0leaf0rpp0[0] , tof_anc[0], binary[0]);
    Toffoli( tof_anc[0] , rpp[0], leaf[0]);

    // Apply ctrlH's
    for(qubit=0; qubit<m; qubit++){ //forall
        ctrlH( &dir[qubit], &bin0leaf0rpp0[0] );
    }

    // Uncompute tof_ancilla
    Toffoli( tof_anc[0] , rpp[0], leaf[0]);
    Toffoli( bin0leaf0rpp0[0] , tof_anc[0], binary[0]);
    Toffoli( tof_anc[0] , rpp[0], leaf[0]);
    Toffoli( bin0leaf0rpp0[0] , tof_anc[0], binary[0]);

    // Restore the original values
    X( rpp[0] );
    X( leaf[0] );
    X( binary[0] );

}
// end ctqg


/* IARPA - GFI Algorithm 3 */
/* Progress status: done */
/* Classical implementation: No */
/* begin ctqg
module C_ORACLE(qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit init_r[s], qbit init_b[s]){
    int i;
    qbit ancilla[1];
    qbit hex[1];
    qbit pos_temp[s-1];
    
    //using pos_temp as a reference to pos[sm, (s-1)m, ..., 2m]; it should not count as new ancillas
    for (int i=2; i<=s; i++){
        pos_temp[i-2]=pos[i*m];
    }
    NOR(&ancilla[0], pos_temp, s-1);
    
// begin ctqg
    if (ctrl[0]==1){
        if (pos[width-1]==1){
            X(leaf[0]);
        }else if (pos[width-2]==1){
            X(paraleaf[0]);
            HEX(pos, init_r, init_b, hex);
            CNOT( hex[0],binary[0]);
        }else if (ancilla[0]==1){
            if (pos[m]==1){
                X(height1[0]);
            }else if (pos[1]==1){
                X(r[0]);
            }else if (pos[0]==1){
                X(rp[0]);
                X(binary[0]);
            }else{
                X(rpp[0]);
            }           
        }
    }
// end ctqg
}
end ctqg */
module C_ORACLE(qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit init_r[s], qbit init_b[s]){
	qbit I00[20];
	qbit I0g[21];
	qbit I11[7];
	qbit I1g[146];
	qbit tof_anc[9];
	CNOT ( I0g[5] , I0g[2] );
	CNOT ( I0g[2] , I0g[5] );
	CNOT ( I0g[2] , pos[12] );
	CNOT ( I0g[6] , I0g[3] );
	CNOT ( I0g[3] , I0g[6] );
	CNOT ( I0g[3] , pos[18] );
	CNOT ( I0g[7] , I0g[4] );
	CNOT ( I0g[4] , I0g[7] );
	CNOT ( I0g[4] , pos[24] );
	X ( I0g[2] );
	X ( I0g[3] );
	X ( I0g[4] );
	Toffoli ( I0g[3] , I0g[2] , I0g[8] );
	Toffoli ( I0g[8] , I0g[4] , I0g[0] );
	X ( I0g[2] );
	X ( I0g[3] );
	X ( I0g[4] );
	CNOT ( I11[0] , ctrl[0] );
	CNOT ( I1g[0] , I11[0] );
	CNOT ( I11[0] , ctrl[0] );
	Toffoli ( I11[0] , pos[25] , I1g[0] );
	Toffoli ( I1g[1] , I11[0] , I1g[0] );
	Toffoli ( I11[0] , pos[25] , I1g[0] );
	Toffoli ( leaf[0] , I1g[1] , I1g[0] );
	CNOT ( I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[24] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], pos[24] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I11[0] , I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[2] ,tof_anc[0], I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , pos[24] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[0] ,tof_anc[0], pos[24] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , paraleaf[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( paraleaf[0] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[8] , init_r[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_r[0] ,tof_anc[1], I00[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[12] , init_b[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_b[0] ,tof_anc[1], I00[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[18] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[18] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[18] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[19] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[19] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[19] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[20] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[20] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[20] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[20] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[21] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[21] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[21] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[21] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[21] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[22] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[22] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[22] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[22] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[22] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[22] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[23] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[23] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[23] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[23] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[23] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[23] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[3] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[1] , I1g[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I1g[4] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[1] , I1g[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I1g[5] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[1] , I1g[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I1g[6] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I11[1] , I1g[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I1g[7] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I11[1] , I1g[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli ( I1g[8] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[8] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[1] , I00[8] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[12] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[1] , I00[12] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[12] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[12] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[8] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[3] , I1g[4] , I1g[5] , I1g[6] , I1g[7] , I1g[8] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[8] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[7] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[4] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[9] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I11[1] , I1g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I1g[10] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I11[1] , I1g[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I1g[11] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I11[1] , I1g[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I1g[12] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I11[1] , I1g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli ( I1g[13] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I11[1] , I1g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli ( I1g[14] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[9] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[1] , I00[9] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[9] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[13] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[1] , I00[13] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[13] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[13] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[9] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[9] , I1g[10] , I1g[11] , I1g[12] , I1g[13] , I1g[14] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[14] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[13] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[12] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[11] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[15] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I11[1] , I1g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I1g[16] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I11[1] , I1g[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I1g[17] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I11[1] , I1g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I1g[18] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I11[1] , I1g[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli ( I1g[19] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I11[1] , I1g[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli ( I1g[20] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[10] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[1] , I00[10] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[10] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[14] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[1] , I00[14] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[14] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[10] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[15] , I1g[16] , I1g[17] , I1g[18] , I1g[19] , I1g[20] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[20] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[19] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[18] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[17] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[21] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[21] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I11[1] , I1g[22] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I1g[22] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I11[1] , I1g[23] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I1g[23] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I11[1] , I1g[24] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I1g[24] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I11[1] , I1g[25] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli ( I1g[25] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I11[1] , I1g[26] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli ( I1g[26] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[11] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[1] , I00[11] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[11] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[15] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[1] , I00[15] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[15] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[15] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[11] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[21] , I1g[22] , I1g[23] , I1g[24] , I1g[25] , I1g[26] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[26] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[25] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[24] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[23] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[22] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[18] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[18] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[18] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[19] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[19] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[19] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[20] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[20] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[20] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[20] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[21] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[21] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[21] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[21] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[21] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[21] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[22] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[22] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[22] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[22] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[22] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[22] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[23] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[23] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[23] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[23] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[23] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[23] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[9] , init_r[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_r[1] ,tof_anc[1], I00[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[13] , init_b[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_b[1] ,tof_anc[1], I00[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[12] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[12] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[12] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[13] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[13] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[13] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[14] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[14] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[14] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[15] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[15] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[15] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[16] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[16] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[16] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[17] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[17] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[17] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[27] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[27] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I11[1] , I1g[28] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I1g[28] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I11[1] , I1g[29] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I1g[29] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I11[1] , I1g[30] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I1g[30] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I11[1] , I1g[31] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli ( I1g[31] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I11[1] , I1g[32] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli ( I1g[32] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[8] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[1] , I00[8] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[12] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[1] , I00[12] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[12] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[12] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[8] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[27] , I1g[28] , I1g[29] , I1g[30] , I1g[31] , I1g[32] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[32] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[31] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[30] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[29] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[28] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[27] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[33] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[33] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I11[1] , I1g[34] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I1g[34] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I11[1] , I1g[35] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I1g[35] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I11[1] , I1g[36] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I1g[36] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I11[1] , I1g[37] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli ( I1g[37] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I11[1] , I1g[38] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli ( I1g[38] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[9] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[1] , I00[9] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[9] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[13] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[1] , I00[13] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[13] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[13] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[9] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[33] , I1g[34] , I1g[35] , I1g[36] , I1g[37] , I1g[38] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[38] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[37] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[36] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[35] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[34] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[33] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[39] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[39] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I11[1] , I1g[40] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I1g[40] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I11[1] , I1g[41] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I1g[41] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I11[1] , I1g[42] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I1g[42] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I11[1] , I1g[43] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli ( I1g[43] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I11[1] , I1g[44] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli ( I1g[44] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[10] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[1] , I00[10] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[10] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[14] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[1] , I00[14] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[14] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[10] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[39] , I1g[40] , I1g[41] , I1g[42] , I1g[43] , I1g[44] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[44] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[43] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[42] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[41] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[40] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[39] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[45] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[45] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I11[1] , I1g[46] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I1g[46] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I11[1] , I1g[47] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I1g[47] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I11[1] , I1g[48] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I1g[48] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I11[1] , I1g[49] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli ( I1g[49] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I11[1] , I1g[50] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli ( I1g[50] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[11] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[1] , I00[11] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[11] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[15] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[1] , I00[15] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[15] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[15] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[11] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[45] , I1g[46] , I1g[47] , I1g[48] , I1g[49] , I1g[50] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[50] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[49] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[48] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[47] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[46] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[45] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[12] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[12] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[12] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[13] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[13] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[13] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[14] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[14] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[14] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[15] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[15] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[15] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[16] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[16] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[16] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[17] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[17] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[17] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[10] , init_r[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_r[2] ,tof_anc[1], I00[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[14] , init_b[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_b[2] ,tof_anc[1], I00[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[6] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[6] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[6] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[7] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[7] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[7] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[8] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[8] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[8] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[9] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[9] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[9] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[10] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[10] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[10] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[11] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[11] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[11] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[51] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[51] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I11[1] , I1g[52] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I1g[52] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I11[1] , I1g[53] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I1g[53] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I11[1] , I1g[54] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I1g[54] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I11[1] , I1g[55] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli ( I1g[55] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I11[1] , I1g[56] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli ( I1g[56] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[8] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[1] , I00[8] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[12] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[1] , I00[12] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[12] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[12] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[8] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[51] , I1g[52] , I1g[53] , I1g[54] , I1g[55] , I1g[56] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[56] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[55] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[54] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[53] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[52] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[51] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[57] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[57] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I11[1] , I1g[58] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I1g[58] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I11[1] , I1g[59] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I1g[59] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I11[1] , I1g[60] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I1g[60] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I11[1] , I1g[61] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli ( I1g[61] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I11[1] , I1g[62] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli ( I1g[62] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[9] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[1] , I00[9] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[9] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[13] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[1] , I00[13] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[13] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[13] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[9] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[57] , I1g[58] , I1g[59] , I1g[60] , I1g[61] , I1g[62] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[62] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[61] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[60] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[59] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[58] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[57] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[63] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[63] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I11[1] , I1g[64] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I1g[64] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I11[1] , I1g[65] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I1g[65] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I11[1] , I1g[66] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I1g[66] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I11[1] , I1g[67] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli ( I1g[67] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I11[1] , I1g[68] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli ( I1g[68] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[10] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[1] , I00[10] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[10] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[14] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[1] , I00[14] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[14] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[10] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[63] , I1g[64] , I1g[65] , I1g[66] , I1g[67] , I1g[68] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[68] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[67] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[66] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[65] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[64] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[63] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[69] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[69] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I11[1] , I1g[70] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I1g[70] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I11[1] , I1g[71] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I1g[71] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I11[1] , I1g[72] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I1g[72] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I11[1] , I1g[73] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli ( I1g[73] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I11[1] , I1g[74] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli ( I1g[74] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[11] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[1] , I00[11] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[11] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[15] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[1] , I00[15] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[15] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[15] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[11] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[69] , I1g[70] , I1g[71] , I1g[72] , I1g[73] , I1g[74] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[74] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[73] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[72] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[71] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[70] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[69] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[6] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[6] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[6] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[7] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[7] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[7] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[8] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[8] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[8] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[8] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[9] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[9] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[9] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[10] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[10] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[10] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[11] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[11] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[11] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[11] , init_r[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_r[3] ,tof_anc[1], I00[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[15] , init_b[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( init_b[3] ,tof_anc[1], I00[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[0] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[0] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[0] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[1] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[1] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[1] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[2] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[2] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[2] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[3] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[3] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[3] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[4] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[4] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[4] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[5] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[5] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[5] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[75] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[75] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I11[1] , I1g[76] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I1g[76] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I11[1] , I1g[77] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I1g[77] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I11[1] , I1g[78] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I1g[78] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I11[1] , I1g[79] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli ( I1g[79] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I11[1] , I1g[80] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli ( I1g[80] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[1] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[8] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[1] , I00[8] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[8] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[8] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[1] ,tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I0g[1] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[12] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[1] , I00[12] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[12] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[12] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[1] ,tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[12] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[12] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[0] , I00[12] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[12] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[8] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[8] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[75] , I1g[76] , I1g[77] , I1g[78] , I1g[79] , I1g[80] , I00[0] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli ( I00[8] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[80] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[79] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[78] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[77] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[76] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[75] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[81] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[81] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I11[1] , I1g[82] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I1g[82] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I11[1] , I1g[83] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I1g[83] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I11[1] , I1g[84] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I1g[84] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I11[1] , I1g[85] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli ( I1g[85] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I11[1] , I1g[86] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli ( I1g[86] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[1] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[9] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[1] , I00[9] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[9] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[9] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[1] ,tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I0g[1] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[13] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[1] , I00[13] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[13] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[13] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[1] ,tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[13] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[13] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[0] , I00[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[13] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[9] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[9] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[81] , I1g[82] , I1g[83] , I1g[84] , I1g[85] , I1g[86] , I00[0] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli ( I00[9] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[86] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[85] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[84] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[83] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[82] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[81] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[87] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[87] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[1] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I11[1] , I1g[88] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I1g[88] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I11[1] , I1g[89] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I1g[89] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I11[1] , I1g[90] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I1g[90] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I11[1] , I1g[91] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli ( I1g[91] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I11[1] , I1g[92] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli ( I1g[92] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[1] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[10] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[1] , I00[10] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[10] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[10] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[1] ,tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I0g[1] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[14] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[1] , I00[14] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[14] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[14] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[1] ,tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[14] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[14] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[0] , I00[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[14] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[10] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[10] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[87] , I1g[88] , I1g[89] , I1g[90] , I1g[91] , I1g[92] , I00[0] , I00[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli ( I00[10] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[92] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[91] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[90] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[89] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[88] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[87] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[1] , I1g[93] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[93] ,tof_anc[1], I11[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[1] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I11[1] , I1g[94] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I1g[94] ,tof_anc[2], I11[1] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I00[3] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[1] ,tof_anc[2], I00[3] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I11[1] , I1g[95] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I1g[95] ,tof_anc[3], I11[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I00[4] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[1] ,tof_anc[3], I00[4] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli ( I11[1] ,tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I11[1] , I1g[96] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I1g[96] ,tof_anc[4], I11[1] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I00[5] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I11[1] ,tof_anc[4], I00[5] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli ( I11[1] ,tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I11[1] , I1g[97] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli ( I1g[97] ,tof_anc[5], I11[1] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I00[6] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli ( I11[1] ,tof_anc[5], I00[6] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli ( I11[1] ,tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I11[1] , I1g[98] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli ( I1g[98] ,tof_anc[6], I11[1] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I00[7] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli ( I11[1] ,tof_anc[6], I00[7] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I11[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli ( I11[1] ,tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[1] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[11] ,tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[1] , I00[11] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[11] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[11] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[1] ,tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I0g[1] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[15] ,tof_anc[7], I0g[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[1] , I00[15] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli ( I0g[1] ,tof_anc[8], I00[15] );
	Toffoli (tof_anc[8],tof_anc[7], I00[1] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[15] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[1] ,tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[15] , I00[0] , I11[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli ( I11[2] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[15] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[0] , I00[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[15] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli ( I00[0] ,tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[11] , I00[0] , I11[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli ( I11[3] ,tof_anc[8], I00[0] );
	Toffoli (tof_anc[8],tof_anc[7], I00[11] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[93] , I1g[94] , I1g[95] , I1g[96] , I1g[97] , I1g[98] , I00[0] , I00[11] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli ( I00[11] ,tof_anc[7], I00[0] );
	Toffoli (tof_anc[7],tof_anc[6], I1g[98] );
	Toffoli (tof_anc[6],tof_anc[5], I1g[97] );
	Toffoli (tof_anc[5],tof_anc[4], I1g[96] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[95] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[94] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[93] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[0] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[0] , I00[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[2] ,tof_anc[1], pos[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[2] , pos[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[0] ,tof_anc[1], I00[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[1] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[1] , I00[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[3] ,tof_anc[1], pos[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[3] , pos[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[1] ,tof_anc[1], I00[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[2] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[2] , I00[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[4] ,tof_anc[1], pos[2] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[4] , pos[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[2] ,tof_anc[1], I00[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[3] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[3] , I00[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[5] ,tof_anc[1], pos[3] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[5] , pos[3] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[3] ,tof_anc[1], I00[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[4] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[4] , I00[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[6] ,tof_anc[1], pos[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[6] , pos[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[4] ,tof_anc[1], I00[6] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[5] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , pos[5] , I00[7] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[7] ,tof_anc[1], pos[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[7] , pos[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( pos[5] ,tof_anc[1], I00[7] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[8] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[8] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[8] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[8] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[9] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I00[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[16] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[13] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I00[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[16] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I00[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[17] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[14] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I00[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[17] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[15] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[19] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[16] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I00[19] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[13] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[14] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[15] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[16] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[19] , I0g[13] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[19] );
	Toffoli ( I0g[14] ,tof_anc[2], I0g[13] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[20] , I0g[15] , I0g[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[20] );
	Toffoli ( I0g[19] ,tof_anc[2], I0g[15] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[20] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[16] , I0g[20] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[9] );
	Toffoli ( I0g[20] ,tof_anc[2], I0g[16] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[20] , I0g[15] , I0g[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[20] );
	Toffoli ( I0g[19] ,tof_anc[2], I0g[15] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[20] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[13] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[14] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[15] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[16] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[17] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I0g[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[99] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I1g[99] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I1g[99] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[99] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[99] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I1g[99] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[13] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[16] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[100] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[100] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I11[5] , I1g[101] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli ( I1g[101] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I11[5] , I1g[102] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli ( I1g[102] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I1g[102] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I1g[102] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[100] , I1g[101] , I1g[102] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[102] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[101] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[100] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[13] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[14] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[17] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[103] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[103] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I00[11] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli ( I11[5] ,tof_anc[2], I00[11] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I11[5] , I1g[104] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli ( I1g[104] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I00[11] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli ( I11[5] ,tof_anc[2], I00[11] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I11[5] , I1g[105] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli ( I1g[105] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I1g[105] , I11[6] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli ( I0g[16] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I1g[105] , I0g[16] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[103] , I1g[104] , I1g[105] , I11[6] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli ( I0g[16] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[105] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[104] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[103] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[106] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[106] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I11[5] , I1g[107] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli ( I1g[107] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I11[5] , I1g[108] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli ( I1g[108] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I1g[108] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I1g[108] , I0g[13] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[106] , I1g[107] , I1g[108] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[108] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[107] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[106] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[109] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[109] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I11[5] , I1g[110] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli ( I1g[110] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I11[5] , I1g[111] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli ( I1g[111] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I1g[111] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I1g[111] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[109] , I1g[110] , I1g[111] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[111] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[110] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[109] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[14] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[15] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[18] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[112] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[112] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I11[5] , I1g[113] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli ( I1g[113] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I11[5] , I1g[114] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli ( I1g[114] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I1g[114] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I1g[114] , I0g[13] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[112] , I1g[113] , I1g[114] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[114] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[113] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[112] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[15] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[16] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[19] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[115] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[115] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I00[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli ( I11[5] ,tof_anc[2], I00[9] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I11[5] , I1g[116] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli ( I1g[116] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I00[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli ( I11[5] ,tof_anc[2], I00[9] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I11[5] , I1g[117] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli ( I1g[117] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I1g[117] , I11[6] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli ( I0g[14] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I1g[117] , I0g[14] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[115] , I1g[116] , I1g[117] , I11[6] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli ( I0g[14] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[117] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[116] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[115] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[118] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[118] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I11[5] , I1g[119] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli ( I1g[119] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I11[5] , I1g[120] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli ( I1g[120] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I1g[120] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I1g[120] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[118] , I1g[119] , I1g[120] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[120] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[119] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[118] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[16] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[17] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I0g[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[17] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I0g[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[9] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[99] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I1g[99] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I1g[99] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[99] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[99] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I1g[99] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[13] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[16] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[121] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[121] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I11[5] , I1g[122] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli ( I1g[122] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I11[5] , I1g[123] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli ( I1g[123] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I1g[123] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I1g[123] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[121] , I1g[122] , I1g[123] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[123] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[122] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[121] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[13] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[13] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[13] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[14] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[17] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[17] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[124] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[124] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I00[11] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli ( I11[5] ,tof_anc[2], I00[11] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I11[5] , I1g[125] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli ( I1g[125] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I00[11] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli ( I11[5] ,tof_anc[2], I00[11] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I11[5] , I1g[126] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli ( I1g[126] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I1g[126] , I11[6] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli ( I0g[16] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I1g[126] , I0g[16] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[16] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[124] , I1g[125] , I1g[126] , I11[6] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli ( I0g[16] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[126] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[125] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[124] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[127] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[127] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I11[5] , I1g[128] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli ( I1g[128] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I11[5] , I1g[129] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli ( I1g[129] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I1g[129] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I1g[129] , I0g[13] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[127] , I1g[128] , I1g[129] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[129] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[128] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[127] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[130] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[130] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I11[5] , I1g[131] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli ( I1g[131] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I11[5] , I1g[132] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli ( I1g[132] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I1g[132] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I1g[132] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[130] , I1g[131] , I1g[132] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[132] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[131] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[130] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[14] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[14] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[14] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[15] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[18] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[133] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[133] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[16] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I11[5] , I1g[134] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli ( I1g[134] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I00[8] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli ( I11[5] ,tof_anc[2], I00[8] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I11[5] , I1g[135] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli ( I1g[135] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I1g[135] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I1g[135] , I0g[13] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[13] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[133] , I1g[134] , I1g[135] , I11[6] , I0g[13] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli ( I0g[13] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[135] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[134] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[133] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[15] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[15] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[15] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I0g[10] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[17] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[16] );
	Toffoli ( I0g[18] ,tof_anc[2], I0g[17] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[10] , I0g[18] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli ( I00[19] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[10] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I00[19] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[136] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[136] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[17] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I00[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli ( I11[5] ,tof_anc[2], I00[9] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I11[5] , I1g[137] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli ( I1g[137] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I00[9] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli ( I11[5] ,tof_anc[2], I00[9] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I11[5] , I1g[138] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli ( I1g[138] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I1g[138] , I11[6] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli ( I0g[14] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I1g[138] , I0g[14] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[14] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[136] , I1g[137] , I1g[138] , I11[6] , I0g[14] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli ( I0g[14] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[138] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[137] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[136] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[5] , I1g[139] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[139] ,tof_anc[1], I11[5] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[5] ,tof_anc[1], I00[18] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I11[5] , I1g[140] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli ( I1g[140] ,tof_anc[2], I11[5] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I00[10] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli ( I11[5] ,tof_anc[2], I00[10] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I11[5] , I1g[141] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli ( I1g[141] ,tof_anc[3], I11[5] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I0g[18] , I11[5] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli ( I11[5] ,tof_anc[3], I0g[18] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I1g[141] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I1g[141] , I0g[15] , I11[6] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli ( I11[6] ,tof_anc[4], I0g[15] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[139] , I1g[140] , I1g[141] , I11[6] , I0g[15] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli ( I0g[15] ,tof_anc[4], I11[6] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[141] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[140] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[139] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[11] , I0g[18] , I0g[16] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli ( I0g[16] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[11] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[16] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[16] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[12] , I0g[18] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli ( I0g[9] ,tof_anc[2], I0g[18] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[12] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[9] , I0g[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[18] ,tof_anc[1], I0g[9] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[17] , I0g[9] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[9] ,tof_anc[1], I0g[17] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[18] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[19] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[4] , I00[18] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I11[4] );
	Toffoli ( I00[19] ,tof_anc[2], I00[18] );
	Toffoli (tof_anc[2],tof_anc[1], I11[4] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[18] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[18] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[19] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I00[19] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I00[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I00[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[1] , I11[4] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[1] );
	Toffoli ( I00[1] ,tof_anc[2], I11[4] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I00[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[4] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I0g[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I00[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[1] , I11[4] , I00[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[1] );
	Toffoli ( I00[1] ,tof_anc[2], I11[4] );
	Toffoli (tof_anc[2],tof_anc[1], I0g[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I00[1] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[4] ,tof_anc[1], I00[1] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[4] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I11[4] ,tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , binary[0] , I0g[1] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I0g[1] ,tof_anc[1], binary[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli ( I1g[2] , I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[0] ,tof_anc[1], I0g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I11[0] , I1g[142] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[142] ,tof_anc[1], I11[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I0g[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I11[0] ,tof_anc[1], I0g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], pos[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I11[0] , I1g[143] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[143] ,tof_anc[2], I11[0] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , pos[6] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I11[0] ,tof_anc[2], pos[6] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , height1[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( height1[0] ,tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli ( I1g[143] ,tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[0] ,tof_anc[3], pos[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I11[0] , I1g[144] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I1g[144] ,tof_anc[3], I11[0] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , pos[1] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I11[0] ,tof_anc[3], pos[1] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , r[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( r[0] ,tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli ( I1g[144] ,tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , pos[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[0] ,tof_anc[4], pos[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , I11[0] , I1g[145] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I1g[145] ,tof_anc[4], I11[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , pos[0] , I11[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( I11[0] ,tof_anc[4], pos[0] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , rp[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( rp[0] ,tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , binary[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( binary[0] ,tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , I1g[145] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli ( I1g[145] ,tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	// Toffoli ( I1g[0] , I1g[1] , I1g[2] , I1g[142] , I1g[143] , I1g[144] , I1g[145] , rpp[0] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli ( rpp[0] ,tof_anc[4], I1g[145] );
	Toffoli (tof_anc[4],tof_anc[3], I1g[144] );
	Toffoli (tof_anc[3],tof_anc[2], I1g[143] );
	Toffoli (tof_anc[2],tof_anc[1], I1g[142] );
	Toffoli (tof_anc[1],tof_anc[0], I1g[2] );
	Toffoli (tof_anc[0], I1g[1] , I1g[0] );
}



/* IARPA - GFI Algorithm 2 */
/* Progress status: done */
/* Classical implementation: No */
//module EXP_U(int power, qbit ctrl[1], qstruct B_qstruct b, qbit init_r[s], qbit init_b[s]){
module EXP_U(int power, qbit ctrl[1], qbit pos[width], qbit leaf[1], qbit paraleaf[1], qbit binary[1], qbit height1[1], qbit r[1], qbit rp[1], qbit rpp[1], qbit dir[m], qbit init_r[s], qbit init_b[s]){
    //it is assumed that int is 32-bit and power<=6*31; according to GFI, power<=189 is enough.
    //extra code added to support repetition of 2^189 times; all of these codes will dissappear after compilation
    
    int val = 0;
    int i;
    int loop0,loop1,loop2,loop3,loop4,loop5,loop6;

    int counter0, counter1,counter2,counter3,counter4,counter5,counter6;
    val = 6*31;
    if (power>val){
	    counter6 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter6=1;
        }
    val = 5*31;
    if (power>val){
	    counter5 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter5=1;
        }
    
    val = 4*31;
    if (power>val){
	    counter4 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter4=1;
        }
    val = 3*31;
    if (power>val){
	    counter3 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter3=1;
        }
    val = 2*31;
    if (power>val){
	    counter2 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter2=1;
        }
    val = 31;
    if (power>val){
	    counter1 = (int)pow(2, power%val);
	    power = power - (power%val);
        }else{
            counter1=1;
        }

	counter0 = (int)pow(2, power);
	power = 0;

    for(loop0=0; loop0<counter0; loop0++){ //forall
        for(loop1=0; loop1<counter1; loop1++){ //forall
            for(loop2=0; loop2<counter2; loop2++){ //forall
                for (loop3=0; loop3<counter3; loop3++){ //forall
                    for (loop4=0; loop4<counter4; loop4++){ //forall
                        for (loop5=0; loop5<counter5; loop5++){ //forall
                            for (loop6=0; loop6<counter6; loop6++){ //forall
                                C_ORACLE(&ctrl[0], pos, leaf, paraleaf, binary, height1, r, rp, rpp, init_r, init_b);
                                C_DIFFUSE(&ctrl[0], leaf, paraleaf, binary, height1, r, rp, rpp, dir);
                                //C_WALK(&ctrl[0], b);
                                C_WALK(&ctrl[0], pos, leaf, paraleaf, binary, height1, r, rp, rpp, dir);
                                //C_UNDO_ORACLE(&ctrl[0], b, init_r, init_b);
                                C_UNDO_ORACLE(&ctrl[0], pos, leaf, paraleaf, binary, height1, r, rp, rpp, dir, init_r, init_b);
                            }
                        }
                    }
                }
            }
        }
    }
}

/* IARPA - GFI Algorithm 1 */
/* Progress status: done */
/* Classical implementation: No */
/* init_r & init_b are runtime inputs of the program */
//int main (qbit init_r[s], qbit init_b[s]){

int main (){
	int i;
	qbit a[t];
  //qstruct B_qstruct b;
  qbit pos[width];
  qbit leaf[1];
  qbit paraleaf[1];
  qbit binary[1];
  qbit height1[1];
  qbit r[1];
  qbit rp[1];
  qbit rpp[1];
  qbit dir[m];
  qbit init_r[s];
  qbit init_b[s];
	
	cbit results[t];
	int final_result=0;
	int loop_counter;

  // Compile time input
//  char red_input [12] = {'0','1','0','0','0','1','0','1','0','0','0','1'};
//  char blue_input [12] = {'0','1','0','1','1','1','1','1','1','1','0','0'};
//
//  for (loop_counter=0; loop_counter<s; loop_counter++){
//    PrepZ(red_input[loop_counter], red_input[loop_counter] - 48); // poor man's atoi ('0' = 48, '1' = 49)
//    PrepZ(blue_input[loop_counter], blue_input[loop_counter] - 48);
//  }  
    
    /* ---Boolean Formula Fix: August 5 2016: Chars->Qbits--- */
    /* ---Boolean Formula Fix: June 17 2018: CNOT/Toffoli ordering--- */

    qbit red_input[12];
    qbit blue_input[12];

    PrepZ(red_input[0],0);
    PrepZ(red_input[1],1);
    PrepZ(red_input[2],0);
    PrepZ(red_input[3],0);

    PrepZ(blue_input[0],0);
    PrepZ(blue_input[1],1);
    PrepZ(blue_input[2],0);
    PrepZ(blue_input[3],1);


	//|a> =0
	for (loop_counter=0; loop_counter<t; loop_counter++){ //forall
		PrepZ(a[loop_counter],0);
	}

  for (loop_counter=0; loop_counter<width; loop_counter++){ //forall
		PrepZ(pos[loop_counter],0);
	}
	for (loop_counter=0; loop_counter<m; loop_counter++){ //forall
		PrepZ(dir[loop_counter],0);
	}
	
	for (loop_counter=0; loop_counter<t; loop_counter++){ //forall
		H(a[loop_counter]);
		EXP_U(loop_counter, &a[loop_counter], pos, leaf, paraleaf, binary, height1, r, rp, rpp, dir, init_r, init_b);
	}

	inverseQFT(a, t);

	for (loop_counter=0; loop_counter<t; loop_counter++){ //forall
		results[loop_counter] = MeasZ(a[loop_counter]);
	}

	//This code is written to avoid early return; later we may change it because it is a classical code in nature and early return makes no problem in classical codes
	//for (i=0; i<t; i++){
	//	if (results[i]==1)
	//		final_result=final_result+1;
	//}
	
	//if (final_result==0)
		return 0;
	//else
	//	return 1;
}
back to top