arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sll_codegen.rs
poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sll_codegen.rsRaw
   1use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
   2pub(crate) enum AnyBitCircuit {
   3    B0(BitCircuit<11, 6>),
   4    B1(BitCircuit<15, 6>),
   5    B2(BitCircuit<19, 6>),
   6    B3(BitCircuit<22, 6>),
   7    B4(BitCircuit<25, 6>),
   8    B5(BitCircuit<28, 6>),
   9    B6(BitCircuit<31, 6>),
  10    B7(BitCircuit<33, 6>),
  11    B8(BitCircuit<35, 6>),
  12    B9(BitCircuit<37, 6>),
  13    B10(BitCircuit<39, 6>),
  14    B11(BitCircuit<41, 6>),
  15    B12(BitCircuit<43, 6>),
  16    B13(BitCircuit<45, 6>),
  17    B14(BitCircuit<47, 6>),
  18    B15(BitCircuit<48, 6>),
  19    B16(BitCircuit<49, 6>),
  20    B17(BitCircuit<50, 6>),
  21    B18(BitCircuit<51, 6>),
  22    B19(BitCircuit<52, 6>),
  23    B20(BitCircuit<53, 6>),
  24    B21(BitCircuit<54, 6>),
  25    B22(BitCircuit<55, 6>),
  26    B23(BitCircuit<56, 6>),
  27    B24(BitCircuit<57, 6>),
  28    B25(BitCircuit<58, 6>),
  29    B26(BitCircuit<59, 6>),
  30    B27(BitCircuit<60, 6>),
  31    B28(BitCircuit<61, 6>),
  32    B29(BitCircuit<62, 6>),
  33    B30(BitCircuit<63, 6>),
  34    B31(BitCircuit<63, 6>),
  35}
  36impl BitCircuitInfo for AnyBitCircuit {
  37    fn info(&self) -> (&[Node], &[usize], usize) {
  38        match self {
  39            AnyBitCircuit::B0(bit_circuit) => (
  40                bit_circuit.nodes.as_ref(),
  41                bit_circuit.levels.as_ref(),
  42                bit_circuit.max_inter_state,
  43            ),
  44            AnyBitCircuit::B1(bit_circuit) => (
  45                bit_circuit.nodes.as_ref(),
  46                bit_circuit.levels.as_ref(),
  47                bit_circuit.max_inter_state,
  48            ),
  49            AnyBitCircuit::B2(bit_circuit) => (
  50                bit_circuit.nodes.as_ref(),
  51                bit_circuit.levels.as_ref(),
  52                bit_circuit.max_inter_state,
  53            ),
  54            AnyBitCircuit::B3(bit_circuit) => (
  55                bit_circuit.nodes.as_ref(),
  56                bit_circuit.levels.as_ref(),
  57                bit_circuit.max_inter_state,
  58            ),
  59            AnyBitCircuit::B4(bit_circuit) => (
  60                bit_circuit.nodes.as_ref(),
  61                bit_circuit.levels.as_ref(),
  62                bit_circuit.max_inter_state,
  63            ),
  64            AnyBitCircuit::B5(bit_circuit) => (
  65                bit_circuit.nodes.as_ref(),
  66                bit_circuit.levels.as_ref(),
  67                bit_circuit.max_inter_state,
  68            ),
  69            AnyBitCircuit::B6(bit_circuit) => (
  70                bit_circuit.nodes.as_ref(),
  71                bit_circuit.levels.as_ref(),
  72                bit_circuit.max_inter_state,
  73            ),
  74            AnyBitCircuit::B7(bit_circuit) => (
  75                bit_circuit.nodes.as_ref(),
  76                bit_circuit.levels.as_ref(),
  77                bit_circuit.max_inter_state,
  78            ),
  79            AnyBitCircuit::B8(bit_circuit) => (
  80                bit_circuit.nodes.as_ref(),
  81                bit_circuit.levels.as_ref(),
  82                bit_circuit.max_inter_state,
  83            ),
  84            AnyBitCircuit::B9(bit_circuit) => (
  85                bit_circuit.nodes.as_ref(),
  86                bit_circuit.levels.as_ref(),
  87                bit_circuit.max_inter_state,
  88            ),
  89            AnyBitCircuit::B10(bit_circuit) => (
  90                bit_circuit.nodes.as_ref(),
  91                bit_circuit.levels.as_ref(),
  92                bit_circuit.max_inter_state,
  93            ),
  94            AnyBitCircuit::B11(bit_circuit) => (
  95                bit_circuit.nodes.as_ref(),
  96                bit_circuit.levels.as_ref(),
  97                bit_circuit.max_inter_state,
  98            ),
  99            AnyBitCircuit::B12(bit_circuit) => (
 100                bit_circuit.nodes.as_ref(),
 101                bit_circuit.levels.as_ref(),
 102                bit_circuit.max_inter_state,
 103            ),
 104            AnyBitCircuit::B13(bit_circuit) => (
 105                bit_circuit.nodes.as_ref(),
 106                bit_circuit.levels.as_ref(),
 107                bit_circuit.max_inter_state,
 108            ),
 109            AnyBitCircuit::B14(bit_circuit) => (
 110                bit_circuit.nodes.as_ref(),
 111                bit_circuit.levels.as_ref(),
 112                bit_circuit.max_inter_state,
 113            ),
 114            AnyBitCircuit::B15(bit_circuit) => (
 115                bit_circuit.nodes.as_ref(),
 116                bit_circuit.levels.as_ref(),
 117                bit_circuit.max_inter_state,
 118            ),
 119            AnyBitCircuit::B16(bit_circuit) => (
 120                bit_circuit.nodes.as_ref(),
 121                bit_circuit.levels.as_ref(),
 122                bit_circuit.max_inter_state,
 123            ),
 124            AnyBitCircuit::B17(bit_circuit) => (
 125                bit_circuit.nodes.as_ref(),
 126                bit_circuit.levels.as_ref(),
 127                bit_circuit.max_inter_state,
 128            ),
 129            AnyBitCircuit::B18(bit_circuit) => (
 130                bit_circuit.nodes.as_ref(),
 131                bit_circuit.levels.as_ref(),
 132                bit_circuit.max_inter_state,
 133            ),
 134            AnyBitCircuit::B19(bit_circuit) => (
 135                bit_circuit.nodes.as_ref(),
 136                bit_circuit.levels.as_ref(),
 137                bit_circuit.max_inter_state,
 138            ),
 139            AnyBitCircuit::B20(bit_circuit) => (
 140                bit_circuit.nodes.as_ref(),
 141                bit_circuit.levels.as_ref(),
 142                bit_circuit.max_inter_state,
 143            ),
 144            AnyBitCircuit::B21(bit_circuit) => (
 145                bit_circuit.nodes.as_ref(),
 146                bit_circuit.levels.as_ref(),
 147                bit_circuit.max_inter_state,
 148            ),
 149            AnyBitCircuit::B22(bit_circuit) => (
 150                bit_circuit.nodes.as_ref(),
 151                bit_circuit.levels.as_ref(),
 152                bit_circuit.max_inter_state,
 153            ),
 154            AnyBitCircuit::B23(bit_circuit) => (
 155                bit_circuit.nodes.as_ref(),
 156                bit_circuit.levels.as_ref(),
 157                bit_circuit.max_inter_state,
 158            ),
 159            AnyBitCircuit::B24(bit_circuit) => (
 160                bit_circuit.nodes.as_ref(),
 161                bit_circuit.levels.as_ref(),
 162                bit_circuit.max_inter_state,
 163            ),
 164            AnyBitCircuit::B25(bit_circuit) => (
 165                bit_circuit.nodes.as_ref(),
 166                bit_circuit.levels.as_ref(),
 167                bit_circuit.max_inter_state,
 168            ),
 169            AnyBitCircuit::B26(bit_circuit) => (
 170                bit_circuit.nodes.as_ref(),
 171                bit_circuit.levels.as_ref(),
 172                bit_circuit.max_inter_state,
 173            ),
 174            AnyBitCircuit::B27(bit_circuit) => (
 175                bit_circuit.nodes.as_ref(),
 176                bit_circuit.levels.as_ref(),
 177                bit_circuit.max_inter_state,
 178            ),
 179            AnyBitCircuit::B28(bit_circuit) => (
 180                bit_circuit.nodes.as_ref(),
 181                bit_circuit.levels.as_ref(),
 182                bit_circuit.max_inter_state,
 183            ),
 184            AnyBitCircuit::B29(bit_circuit) => (
 185                bit_circuit.nodes.as_ref(),
 186                bit_circuit.levels.as_ref(),
 187                bit_circuit.max_inter_state,
 188            ),
 189            AnyBitCircuit::B30(bit_circuit) => (
 190                bit_circuit.nodes.as_ref(),
 191                bit_circuit.levels.as_ref(),
 192                bit_circuit.max_inter_state,
 193            ),
 194            AnyBitCircuit::B31(bit_circuit) => (
 195                bit_circuit.nodes.as_ref(),
 196                bit_circuit.levels.as_ref(),
 197                bit_circuit.max_inter_state,
 198            ),
 199        }
 200    }
 201}
 202
 203impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
 204    fn input_size(&self) -> usize {
 205        2 * u32::BITS as usize
 206    }
 207    fn output_size(&self) -> usize {
 208        u32::BITS as usize
 209    }
 210    fn get_circuit(&self, bit: usize) -> (&[Node], &[usize], usize) {
 211        self.0[bit].info()
 212    }
 213}
 214
 215pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([
 216    AnyBitCircuit::B0(BitCircuit::new(
 217        [
 218            Node::new(0, 0, 0),
 219            Node::new(0, 1, 0),
 220            Node::new(0, 0, 0),
 221            Node::new(36, 0, 1),
 222            Node::new(0, 0, 0),
 223            Node::new(35, 0, 1),
 224            Node::new(0, 0, 0),
 225            Node::new(34, 0, 1),
 226            Node::new(0, 0, 0),
 227            Node::new(33, 0, 1),
 228            Node::new(32, 0, 1),
 229        ],
 230        [0, 2, 4, 6, 8, 10],
 231        2,
 232    )),
 233    AnyBitCircuit::B1(BitCircuit::new(
 234        [
 235            Node::new(0, 0, 0),
 236            Node::new(0, 1, 0),
 237            Node::new(1, 1, 0),
 238            Node::new(0, 0, 0),
 239            Node::new(36, 0, 2),
 240            Node::new(36, 0, 1),
 241            Node::new(0, 0, 0),
 242            Node::new(35, 0, 1),
 243            Node::new(35, 0, 2),
 244            Node::new(0, 0, 0),
 245            Node::new(34, 0, 1),
 246            Node::new(34, 0, 2),
 247            Node::new(33, 0, 1),
 248            Node::new(33, 0, 2),
 249            Node::new(32, 1, 0),
 250        ],
 251        [0, 3, 6, 9, 12, 14],
 252        3,
 253    )),
 254    AnyBitCircuit::B2(BitCircuit::new(
 255        [
 256            Node::new(0, 0, 0),
 257            Node::new(1, 1, 0),
 258            Node::new(2, 1, 0),
 259            Node::new(0, 1, 0),
 260            Node::new(0, 0, 0),
 261            Node::new(36, 0, 1),
 262            Node::new(36, 0, 2),
 263            Node::new(36, 0, 3),
 264            Node::new(0, 0, 0),
 265            Node::new(35, 0, 1),
 266            Node::new(35, 0, 2),
 267            Node::new(35, 0, 3),
 268            Node::new(0, 0, 0),
 269            Node::new(34, 0, 2),
 270            Node::new(34, 0, 1),
 271            Node::new(34, 0, 3),
 272            Node::new(33, 0, 2),
 273            Node::new(33, 3, 1),
 274            Node::new(32, 0, 1),
 275        ],
 276        [0, 4, 8, 12, 16, 18],
 277        4,
 278    )),
 279    AnyBitCircuit::B3(BitCircuit::new(
 280        [
 281            Node::new(0, 0, 0),
 282            Node::new(3, 1, 0),
 283            Node::new(1, 1, 0),
 284            Node::new(2, 1, 0),
 285            Node::new(0, 1, 0),
 286            Node::new(0, 0, 0),
 287            Node::new(36, 0, 2),
 288            Node::new(36, 0, 4),
 289            Node::new(36, 0, 3),
 290            Node::new(36, 0, 1),
 291            Node::new(0, 0, 0),
 292            Node::new(35, 0, 3),
 293            Node::new(35, 0, 4),
 294            Node::new(35, 0, 2),
 295            Node::new(35, 0, 1),
 296            Node::new(34, 0, 3),
 297            Node::new(34, 0, 2),
 298            Node::new(34, 0, 4),
 299            Node::new(34, 0, 1),
 300            Node::new(33, 0, 3),
 301            Node::new(33, 2, 1),
 302            Node::new(32, 0, 1),
 303        ],
 304        [0, 5, 10, 15, 19, 21],
 305        5,
 306    )),
 307    AnyBitCircuit::B4(BitCircuit::new(
 308        [
 309            Node::new(0, 0, 0),
 310            Node::new(1, 1, 0),
 311            Node::new(0, 1, 0),
 312            Node::new(2, 1, 0),
 313            Node::new(3, 1, 0),
 314            Node::new(4, 1, 0),
 315            Node::new(0, 0, 0),
 316            Node::new(36, 0, 4),
 317            Node::new(36, 0, 2),
 318            Node::new(36, 0, 5),
 319            Node::new(36, 0, 1),
 320            Node::new(36, 0, 3),
 321            Node::new(0, 0, 0),
 322            Node::new(35, 0, 3),
 323            Node::new(35, 0, 4),
 324            Node::new(35, 0, 5),
 325            Node::new(35, 0, 2),
 326            Node::new(35, 0, 1),
 327            Node::new(34, 0, 2),
 328            Node::new(34, 0, 3),
 329            Node::new(34, 4, 1),
 330            Node::new(34, 0, 5),
 331            Node::new(33, 0, 3),
 332            Node::new(33, 1, 2),
 333            Node::new(32, 0, 1),
 334        ],
 335        [0, 6, 12, 18, 22, 24],
 336        6,
 337    )),
 338    AnyBitCircuit::B5(BitCircuit::new(
 339        [
 340            Node::new(0, 0, 0),
 341            Node::new(0, 1, 0),
 342            Node::new(4, 1, 0),
 343            Node::new(2, 1, 0),
 344            Node::new(1, 1, 0),
 345            Node::new(3, 1, 0),
 346            Node::new(5, 1, 0),
 347            Node::new(0, 0, 0),
 348            Node::new(36, 0, 5),
 349            Node::new(36, 0, 1),
 350            Node::new(36, 0, 3),
 351            Node::new(36, 0, 4),
 352            Node::new(36, 0, 6),
 353            Node::new(36, 0, 2),
 354            Node::new(0, 0, 0),
 355            Node::new(35, 0, 5),
 356            Node::new(35, 0, 3),
 357            Node::new(35, 0, 1),
 358            Node::new(35, 0, 2),
 359            Node::new(35, 0, 4),
 360            Node::new(35, 0, 6),
 361            Node::new(34, 5, 1),
 362            Node::new(34, 0, 3),
 363            Node::new(34, 0, 2),
 364            Node::new(34, 4, 6),
 365            Node::new(33, 2, 3),
 366            Node::new(33, 1, 0),
 367            Node::new(32, 0, 1),
 368        ],
 369        [0, 7, 14, 21, 25, 27],
 370        7,
 371    )),
 372    AnyBitCircuit::B6(BitCircuit::new(
 373        [
 374            Node::new(0, 0, 0),
 375            Node::new(5, 1, 0),
 376            Node::new(0, 1, 0),
 377            Node::new(3, 1, 0),
 378            Node::new(4, 1, 0),
 379            Node::new(1, 1, 0),
 380            Node::new(2, 1, 0),
 381            Node::new(6, 1, 0),
 382            Node::new(0, 0, 0),
 383            Node::new(36, 0, 5),
 384            Node::new(36, 0, 7),
 385            Node::new(36, 0, 3),
 386            Node::new(36, 0, 4),
 387            Node::new(36, 0, 6),
 388            Node::new(36, 0, 1),
 389            Node::new(36, 0, 2),
 390            Node::new(0, 0, 0),
 391            Node::new(35, 0, 3),
 392            Node::new(35, 0, 4),
 393            Node::new(35, 0, 7),
 394            Node::new(35, 0, 1),
 395            Node::new(35, 0, 6),
 396            Node::new(35, 0, 2),
 397            Node::new(35, 0, 5),
 398            Node::new(34, 0, 1),
 399            Node::new(34, 4, 5),
 400            Node::new(34, 7, 6),
 401            Node::new(34, 3, 2),
 402            Node::new(33, 3, 2),
 403            Node::new(33, 0, 1),
 404            Node::new(32, 1, 0),
 405        ],
 406        [0, 8, 16, 24, 28, 30],
 407        8,
 408    )),
 409    AnyBitCircuit::B7(BitCircuit::new(
 410        [
 411            Node::new(0, 0, 0),
 412            Node::new(4, 1, 0),
 413            Node::new(3, 1, 0),
 414            Node::new(7, 1, 0),
 415            Node::new(0, 1, 0),
 416            Node::new(5, 1, 0),
 417            Node::new(1, 1, 0),
 418            Node::new(6, 1, 0),
 419            Node::new(2, 1, 0),
 420            Node::new(0, 0, 0),
 421            Node::new(36, 0, 6),
 422            Node::new(36, 0, 5),
 423            Node::new(36, 0, 1),
 424            Node::new(36, 0, 4),
 425            Node::new(36, 0, 7),
 426            Node::new(36, 0, 3),
 427            Node::new(36, 0, 8),
 428            Node::new(36, 0, 2),
 429            Node::new(35, 0, 8),
 430            Node::new(35, 0, 4),
 431            Node::new(35, 0, 2),
 432            Node::new(35, 0, 1),
 433            Node::new(35, 0, 3),
 434            Node::new(35, 0, 7),
 435            Node::new(35, 0, 5),
 436            Node::new(35, 0, 6),
 437            Node::new(34, 3, 2),
 438            Node::new(34, 5, 6),
 439            Node::new(34, 0, 7),
 440            Node::new(34, 1, 4),
 441            Node::new(33, 3, 1),
 442            Node::new(33, 0, 2),
 443            Node::new(32, 0, 1),
 444        ],
 445        [0, 9, 18, 26, 30, 32],
 446        9,
 447    )),
 448    AnyBitCircuit::B8(BitCircuit::new(
 449        [
 450            Node::new(0, 0, 0),
 451            Node::new(7, 1, 0),
 452            Node::new(0, 1, 0),
 453            Node::new(5, 1, 0),
 454            Node::new(2, 1, 0),
 455            Node::new(8, 1, 0),
 456            Node::new(4, 1, 0),
 457            Node::new(3, 1, 0),
 458            Node::new(1, 1, 0),
 459            Node::new(6, 1, 0),
 460            Node::new(0, 0, 0),
 461            Node::new(36, 0, 7),
 462            Node::new(36, 0, 3),
 463            Node::new(36, 0, 8),
 464            Node::new(36, 0, 9),
 465            Node::new(36, 0, 1),
 466            Node::new(36, 0, 6),
 467            Node::new(36, 0, 5),
 468            Node::new(36, 0, 4),
 469            Node::new(36, 0, 2),
 470            Node::new(35, 0, 2),
 471            Node::new(35, 0, 8),
 472            Node::new(35, 9, 7),
 473            Node::new(35, 0, 3),
 474            Node::new(35, 0, 5),
 475            Node::new(35, 0, 1),
 476            Node::new(35, 0, 4),
 477            Node::new(35, 0, 6),
 478            Node::new(34, 1, 6),
 479            Node::new(34, 5, 4),
 480            Node::new(34, 3, 0),
 481            Node::new(34, 7, 2),
 482            Node::new(33, 2, 1),
 483            Node::new(33, 0, 3),
 484            Node::new(32, 0, 1),
 485        ],
 486        [0, 10, 20, 28, 32, 34],
 487        10,
 488    )),
 489    AnyBitCircuit::B9(BitCircuit::new(
 490        [
 491            Node::new(0, 0, 0),
 492            Node::new(0, 1, 0),
 493            Node::new(6, 1, 0),
 494            Node::new(9, 1, 0),
 495            Node::new(4, 1, 0),
 496            Node::new(3, 1, 0),
 497            Node::new(1, 1, 0),
 498            Node::new(2, 1, 0),
 499            Node::new(7, 1, 0),
 500            Node::new(5, 1, 0),
 501            Node::new(8, 1, 0),
 502            Node::new(0, 0, 0),
 503            Node::new(36, 0, 8),
 504            Node::new(36, 0, 7),
 505            Node::new(36, 0, 10),
 506            Node::new(36, 0, 6),
 507            Node::new(36, 0, 4),
 508            Node::new(36, 0, 5),
 509            Node::new(36, 0, 3),
 510            Node::new(36, 0, 2),
 511            Node::new(36, 0, 1),
 512            Node::new(36, 0, 9),
 513            Node::new(35, 0, 1),
 514            Node::new(35, 0, 2),
 515            Node::new(35, 0, 10),
 516            Node::new(35, 0, 8),
 517            Node::new(35, 4, 7),
 518            Node::new(35, 9, 3),
 519            Node::new(35, 0, 6),
 520            Node::new(35, 0, 5),
 521            Node::new(34, 6, 0),
 522            Node::new(34, 7, 5),
 523            Node::new(34, 2, 4),
 524            Node::new(34, 1, 3),
 525            Node::new(33, 3, 1),
 526            Node::new(33, 0, 2),
 527            Node::new(32, 0, 1),
 528        ],
 529        [0, 11, 22, 30, 34, 36],
 530        11,
 531    )),
 532    AnyBitCircuit::B10(BitCircuit::new(
 533        [
 534            Node::new(0, 0, 0),
 535            Node::new(9, 1, 0),
 536            Node::new(10, 1, 0),
 537            Node::new(1, 1, 0),
 538            Node::new(0, 1, 0),
 539            Node::new(7, 1, 0),
 540            Node::new(8, 1, 0),
 541            Node::new(3, 1, 0),
 542            Node::new(4, 1, 0),
 543            Node::new(2, 1, 0),
 544            Node::new(6, 1, 0),
 545            Node::new(5, 1, 0),
 546            Node::new(0, 0, 0),
 547            Node::new(36, 0, 7),
 548            Node::new(36, 0, 11),
 549            Node::new(36, 0, 8),
 550            Node::new(36, 0, 6),
 551            Node::new(36, 0, 5),
 552            Node::new(36, 0, 1),
 553            Node::new(36, 0, 4),
 554            Node::new(36, 0, 9),
 555            Node::new(36, 0, 3),
 556            Node::new(36, 0, 2),
 557            Node::new(36, 0, 10),
 558            Node::new(35, 7, 4),
 559            Node::new(35, 0, 11),
 560            Node::new(35, 0, 1),
 561            Node::new(35, 8, 10),
 562            Node::new(35, 9, 6),
 563            Node::new(35, 0, 2),
 564            Node::new(35, 0, 3),
 565            Node::new(35, 0, 5),
 566            Node::new(34, 2, 7),
 567            Node::new(34, 5, 4),
 568            Node::new(34, 1, 3),
 569            Node::new(34, 6, 0),
 570            Node::new(33, 0, 1),
 571            Node::new(33, 3, 2),
 572            Node::new(32, 0, 1),
 573        ],
 574        [0, 12, 24, 32, 36, 38],
 575        12,
 576    )),
 577    AnyBitCircuit::B11(BitCircuit::new(
 578        [
 579            Node::new(0, 0, 0),
 580            Node::new(8, 1, 0),
 581            Node::new(3, 1, 0),
 582            Node::new(7, 1, 0),
 583            Node::new(6, 1, 0),
 584            Node::new(5, 1, 0),
 585            Node::new(2, 1, 0),
 586            Node::new(10, 1, 0),
 587            Node::new(0, 1, 0),
 588            Node::new(1, 1, 0),
 589            Node::new(11, 1, 0),
 590            Node::new(4, 1, 0),
 591            Node::new(9, 1, 0),
 592            Node::new(0, 0, 0),
 593            Node::new(36, 0, 5),
 594            Node::new(36, 0, 12),
 595            Node::new(36, 0, 3),
 596            Node::new(36, 0, 7),
 597            Node::new(36, 0, 2),
 598            Node::new(36, 0, 8),
 599            Node::new(36, 0, 6),
 600            Node::new(36, 0, 4),
 601            Node::new(36, 0, 1),
 602            Node::new(36, 0, 10),
 603            Node::new(36, 0, 11),
 604            Node::new(36, 0, 9),
 605            Node::new(35, 0, 11),
 606            Node::new(35, 0, 1),
 607            Node::new(35, 12, 2),
 608            Node::new(35, 5, 10),
 609            Node::new(35, 7, 4),
 610            Node::new(35, 0, 3),
 611            Node::new(35, 0, 8),
 612            Node::new(35, 6, 9),
 613            Node::new(34, 0, 7),
 614            Node::new(34, 5, 3),
 615            Node::new(34, 6, 4),
 616            Node::new(34, 1, 2),
 617            Node::new(33, 3, 1),
 618            Node::new(33, 0, 2),
 619            Node::new(32, 1, 0),
 620        ],
 621        [0, 13, 26, 34, 38, 40],
 622        13,
 623    )),
 624    AnyBitCircuit::B12(BitCircuit::new(
 625        [
 626            Node::new(0, 0, 0),
 627            Node::new(12, 1, 0),
 628            Node::new(8, 1, 0),
 629            Node::new(9, 1, 0),
 630            Node::new(7, 1, 0),
 631            Node::new(11, 1, 0),
 632            Node::new(3, 1, 0),
 633            Node::new(0, 1, 0),
 634            Node::new(1, 1, 0),
 635            Node::new(5, 1, 0),
 636            Node::new(2, 1, 0),
 637            Node::new(10, 1, 0),
 638            Node::new(4, 1, 0),
 639            Node::new(6, 1, 0),
 640            Node::new(0, 0, 0),
 641            Node::new(36, 0, 7),
 642            Node::new(36, 0, 5),
 643            Node::new(36, 0, 10),
 644            Node::new(36, 0, 13),
 645            Node::new(36, 0, 11),
 646            Node::new(36, 0, 12),
 647            Node::new(36, 0, 1),
 648            Node::new(36, 0, 2),
 649            Node::new(36, 0, 6),
 650            Node::new(36, 0, 3),
 651            Node::new(36, 0, 9),
 652            Node::new(36, 0, 4),
 653            Node::new(36, 0, 8),
 654            Node::new(35, 3, 5),
 655            Node::new(35, 0, 12),
 656            Node::new(35, 1, 8),
 657            Node::new(35, 13, 10),
 658            Node::new(35, 9, 2),
 659            Node::new(35, 6, 7),
 660            Node::new(35, 0, 11),
 661            Node::new(35, 0, 4),
 662            Node::new(34, 7, 0),
 663            Node::new(34, 2, 5),
 664            Node::new(34, 1, 4),
 665            Node::new(34, 6, 3),
 666            Node::new(33, 3, 2),
 667            Node::new(33, 0, 1),
 668            Node::new(32, 0, 1),
 669        ],
 670        [0, 14, 28, 36, 40, 42],
 671        14,
 672    )),
 673    AnyBitCircuit::B13(BitCircuit::new(
 674        [
 675            Node::new(0, 0, 0),
 676            Node::new(10, 1, 0),
 677            Node::new(13, 1, 0),
 678            Node::new(3, 1, 0),
 679            Node::new(12, 1, 0),
 680            Node::new(11, 1, 0),
 681            Node::new(1, 1, 0),
 682            Node::new(6, 1, 0),
 683            Node::new(8, 1, 0),
 684            Node::new(9, 1, 0),
 685            Node::new(2, 1, 0),
 686            Node::new(4, 1, 0),
 687            Node::new(7, 1, 0),
 688            Node::new(0, 1, 0),
 689            Node::new(5, 1, 0),
 690            Node::new(0, 0, 0),
 691            Node::new(36, 0, 12),
 692            Node::new(36, 0, 7),
 693            Node::new(36, 0, 13),
 694            Node::new(36, 0, 5),
 695            Node::new(36, 0, 3),
 696            Node::new(36, 0, 1),
 697            Node::new(36, 0, 4),
 698            Node::new(36, 0, 9),
 699            Node::new(36, 0, 10),
 700            Node::new(36, 0, 2),
 701            Node::new(36, 0, 8),
 702            Node::new(36, 0, 6),
 703            Node::new(36, 0, 11),
 704            Node::new(36, 0, 14),
 705            Node::new(35, 3, 11),
 706            Node::new(35, 5, 4),
 707            Node::new(35, 12, 8),
 708            Node::new(35, 14, 10),
 709            Node::new(35, 0, 2),
 710            Node::new(35, 9, 6),
 711            Node::new(35, 13, 7),
 712            Node::new(35, 0, 1),
 713            Node::new(34, 7, 1),
 714            Node::new(34, 2, 3),
 715            Node::new(34, 0, 6),
 716            Node::new(34, 4, 5),
 717            Node::new(33, 0, 1),
 718            Node::new(33, 3, 2),
 719            Node::new(32, 1, 0),
 720        ],
 721        [0, 15, 30, 38, 42, 44],
 722        15,
 723    )),
 724    AnyBitCircuit::B14(BitCircuit::new(
 725        [
 726            Node::new(0, 0, 0),
 727            Node::new(14, 1, 0),
 728            Node::new(8, 1, 0),
 729            Node::new(6, 1, 0),
 730            Node::new(9, 1, 0),
 731            Node::new(1, 1, 0),
 732            Node::new(3, 1, 0),
 733            Node::new(4, 1, 0),
 734            Node::new(13, 1, 0),
 735            Node::new(5, 1, 0),
 736            Node::new(10, 1, 0),
 737            Node::new(11, 1, 0),
 738            Node::new(7, 1, 0),
 739            Node::new(2, 1, 0),
 740            Node::new(0, 1, 0),
 741            Node::new(12, 1, 0),
 742            Node::new(0, 0, 0),
 743            Node::new(36, 0, 7),
 744            Node::new(36, 0, 5),
 745            Node::new(36, 0, 9),
 746            Node::new(36, 0, 15),
 747            Node::new(36, 0, 3),
 748            Node::new(36, 0, 10),
 749            Node::new(36, 0, 4),
 750            Node::new(36, 0, 12),
 751            Node::new(36, 0, 14),
 752            Node::new(36, 0, 2),
 753            Node::new(36, 0, 6),
 754            Node::new(36, 0, 13),
 755            Node::new(36, 0, 1),
 756            Node::new(36, 0, 8),
 757            Node::new(36, 0, 11),
 758            Node::new(35, 5, 13),
 759            Node::new(35, 12, 6),
 760            Node::new(35, 2, 7),
 761            Node::new(35, 3, 14),
 762            Node::new(35, 9, 10),
 763            Node::new(35, 1, 4),
 764            Node::new(35, 11, 15),
 765            Node::new(35, 0, 8),
 766            Node::new(34, 2, 3),
 767            Node::new(34, 7, 6),
 768            Node::new(34, 1, 0),
 769            Node::new(34, 4, 5),
 770            Node::new(33, 3, 2),
 771            Node::new(33, 1, 0),
 772            Node::new(32, 1, 0),
 773        ],
 774        [0, 16, 32, 40, 44, 46],
 775        16,
 776    )),
 777    AnyBitCircuit::B15(BitCircuit::new(
 778        [
 779            Node::new(0, 0, 0),
 780            Node::new(6, 1, 0),
 781            Node::new(7, 1, 0),
 782            Node::new(11, 1, 0),
 783            Node::new(4, 1, 0),
 784            Node::new(15, 1, 0),
 785            Node::new(2, 1, 0),
 786            Node::new(5, 1, 0),
 787            Node::new(8, 1, 0),
 788            Node::new(3, 1, 0),
 789            Node::new(9, 1, 0),
 790            Node::new(1, 1, 0),
 791            Node::new(10, 1, 0),
 792            Node::new(0, 1, 0),
 793            Node::new(14, 1, 0),
 794            Node::new(13, 1, 0),
 795            Node::new(12, 1, 0),
 796            Node::new(36, 0, 2),
 797            Node::new(36, 0, 16),
 798            Node::new(36, 0, 13),
 799            Node::new(36, 0, 1),
 800            Node::new(36, 0, 10),
 801            Node::new(36, 0, 4),
 802            Node::new(36, 0, 8),
 803            Node::new(36, 0, 9),
 804            Node::new(36, 0, 14),
 805            Node::new(36, 0, 3),
 806            Node::new(36, 0, 11),
 807            Node::new(36, 0, 5),
 808            Node::new(36, 0, 12),
 809            Node::new(36, 0, 6),
 810            Node::new(36, 0, 15),
 811            Node::new(36, 0, 7),
 812            Node::new(35, 15, 14),
 813            Node::new(35, 3, 8),
 814            Node::new(35, 7, 9),
 815            Node::new(35, 5, 1),
 816            Node::new(35, 13, 12),
 817            Node::new(35, 0, 11),
 818            Node::new(35, 2, 6),
 819            Node::new(35, 10, 4),
 820            Node::new(34, 4, 1),
 821            Node::new(34, 6, 3),
 822            Node::new(34, 2, 5),
 823            Node::new(34, 7, 0),
 824            Node::new(33, 1, 0),
 825            Node::new(33, 3, 2),
 826            Node::new(32, 0, 1),
 827        ],
 828        [0, 17, 33, 41, 45, 47],
 829        17,
 830    )),
 831    AnyBitCircuit::B16(BitCircuit::new(
 832        [
 833            Node::new(0, 0, 0),
 834            Node::new(12, 1, 0),
 835            Node::new(9, 1, 0),
 836            Node::new(1, 1, 0),
 837            Node::new(16, 1, 0),
 838            Node::new(15, 1, 0),
 839            Node::new(4, 1, 0),
 840            Node::new(8, 1, 0),
 841            Node::new(14, 1, 0),
 842            Node::new(13, 1, 0),
 843            Node::new(0, 1, 0),
 844            Node::new(7, 1, 0),
 845            Node::new(5, 1, 0),
 846            Node::new(11, 1, 0),
 847            Node::new(10, 1, 0),
 848            Node::new(3, 1, 0),
 849            Node::new(2, 1, 0),
 850            Node::new(6, 1, 0),
 851            Node::new(36, 0, 15),
 852            Node::new(36, 0, 8),
 853            Node::new(36, 0, 14),
 854            Node::new(36, 0, 12),
 855            Node::new(36, 0, 3),
 856            Node::new(36, 0, 17),
 857            Node::new(36, 0, 1),
 858            Node::new(36, 0, 2),
 859            Node::new(36, 0, 11),
 860            Node::new(36, 0, 9),
 861            Node::new(36, 0, 6),
 862            Node::new(36, 0, 16),
 863            Node::new(36, 0, 13),
 864            Node::new(36, 0, 7),
 865            Node::new(36, 0, 5),
 866            Node::new(36, 10, 4),
 867            Node::new(35, 8, 14),
 868            Node::new(35, 10, 6),
 869            Node::new(35, 0, 12),
 870            Node::new(35, 13, 15),
 871            Node::new(35, 4, 7),
 872            Node::new(35, 3, 9),
 873            Node::new(35, 11, 2),
 874            Node::new(35, 5, 1),
 875            Node::new(34, 2, 0),
 876            Node::new(34, 6, 7),
 877            Node::new(34, 4, 5),
 878            Node::new(34, 1, 3),
 879            Node::new(33, 1, 3),
 880            Node::new(33, 2, 0),
 881            Node::new(32, 1, 0),
 882        ],
 883        [0, 18, 34, 42, 46, 48],
 884        18,
 885    )),
 886    AnyBitCircuit::B17(BitCircuit::new(
 887        [
 888            Node::new(0, 0, 0),
 889            Node::new(9, 1, 0),
 890            Node::new(0, 1, 0),
 891            Node::new(12, 1, 0),
 892            Node::new(10, 1, 0),
 893            Node::new(1, 1, 0),
 894            Node::new(8, 1, 0),
 895            Node::new(2, 1, 0),
 896            Node::new(6, 1, 0),
 897            Node::new(5, 1, 0),
 898            Node::new(7, 1, 0),
 899            Node::new(13, 1, 0),
 900            Node::new(15, 1, 0),
 901            Node::new(16, 1, 0),
 902            Node::new(3, 1, 0),
 903            Node::new(4, 1, 0),
 904            Node::new(14, 1, 0),
 905            Node::new(17, 1, 0),
 906            Node::new(11, 1, 0),
 907            Node::new(36, 2, 13),
 908            Node::new(36, 0, 16),
 909            Node::new(36, 0, 8),
 910            Node::new(36, 0, 7),
 911            Node::new(36, 0, 3),
 912            Node::new(36, 0, 1),
 913            Node::new(36, 0, 10),
 914            Node::new(36, 0, 11),
 915            Node::new(36, 0, 12),
 916            Node::new(36, 0, 18),
 917            Node::new(36, 0, 9),
 918            Node::new(36, 0, 6),
 919            Node::new(36, 0, 14),
 920            Node::new(36, 0, 4),
 921            Node::new(36, 0, 15),
 922            Node::new(36, 5, 17),
 923            Node::new(35, 6, 8),
 924            Node::new(35, 12, 9),
 925            Node::new(35, 11, 0),
 926            Node::new(35, 14, 4),
 927            Node::new(35, 5, 15),
 928            Node::new(35, 10, 7),
 929            Node::new(35, 2, 1),
 930            Node::new(35, 3, 13),
 931            Node::new(34, 1, 0),
 932            Node::new(34, 3, 2),
 933            Node::new(34, 7, 6),
 934            Node::new(34, 5, 4),
 935            Node::new(33, 2, 1),
 936            Node::new(33, 0, 3),
 937            Node::new(32, 0, 1),
 938        ],
 939        [0, 19, 35, 43, 47, 49],
 940        19,
 941    )),
 942    AnyBitCircuit::B18(BitCircuit::new(
 943        [
 944            Node::new(0, 0, 0),
 945            Node::new(3, 1, 0),
 946            Node::new(14, 1, 0),
 947            Node::new(6, 1, 0),
 948            Node::new(16, 1, 0),
 949            Node::new(0, 1, 0),
 950            Node::new(1, 1, 0),
 951            Node::new(4, 1, 0),
 952            Node::new(8, 1, 0),
 953            Node::new(12, 1, 0),
 954            Node::new(10, 1, 0),
 955            Node::new(2, 1, 0),
 956            Node::new(18, 1, 0),
 957            Node::new(13, 1, 0),
 958            Node::new(15, 1, 0),
 959            Node::new(7, 1, 0),
 960            Node::new(11, 1, 0),
 961            Node::new(17, 1, 0),
 962            Node::new(9, 1, 0),
 963            Node::new(5, 1, 0),
 964            Node::new(36, 5, 4),
 965            Node::new(36, 6, 17),
 966            Node::new(36, 0, 19),
 967            Node::new(36, 0, 16),
 968            Node::new(36, 0, 3),
 969            Node::new(36, 0, 8),
 970            Node::new(36, 0, 1),
 971            Node::new(36, 0, 2),
 972            Node::new(36, 0, 10),
 973            Node::new(36, 0, 7),
 974            Node::new(36, 0, 18),
 975            Node::new(36, 0, 13),
 976            Node::new(36, 0, 9),
 977            Node::new(36, 11, 12),
 978            Node::new(36, 0, 14),
 979            Node::new(36, 0, 15),
 980            Node::new(35, 6, 3),
 981            Node::new(35, 5, 0),
 982            Node::new(35, 9, 12),
 983            Node::new(35, 8, 13),
 984            Node::new(35, 4, 7),
 985            Node::new(35, 2, 11),
 986            Node::new(35, 15, 14),
 987            Node::new(35, 10, 1),
 988            Node::new(34, 4, 3),
 989            Node::new(34, 0, 6),
 990            Node::new(34, 5, 7),
 991            Node::new(34, 2, 1),
 992            Node::new(33, 3, 0),
 993            Node::new(33, 1, 2),
 994            Node::new(32, 1, 0),
 995        ],
 996        [0, 20, 36, 44, 48, 50],
 997        20,
 998    )),
 999    AnyBitCircuit::B19(BitCircuit::new(
1000        [
1001            Node::new(0, 0, 0),
1002            Node::new(7, 1, 0),
1003            Node::new(0, 1, 0),
1004            Node::new(19, 1, 0),
1005            Node::new(8, 1, 0),
1006            Node::new(10, 1, 0),
1007            Node::new(5, 1, 0),
1008            Node::new(18, 1, 0),
1009            Node::new(9, 1, 0),
1010            Node::new(11, 1, 0),
1011            Node::new(14, 1, 0),
1012            Node::new(16, 1, 0),
1013            Node::new(4, 1, 0),
1014            Node::new(15, 1, 0),
1015            Node::new(2, 1, 0),
1016            Node::new(6, 1, 0),
1017            Node::new(17, 1, 0),
1018            Node::new(1, 1, 0),
1019            Node::new(3, 1, 0),
1020            Node::new(12, 1, 0),
1021            Node::new(13, 1, 0),
1022            Node::new(36, 0, 15),
1023            Node::new(36, 0, 1),
1024            Node::new(36, 14, 7),
1025            Node::new(36, 0, 20),
1026            Node::new(36, 0, 12),
1027            Node::new(36, 0, 8),
1028            Node::new(36, 0, 6),
1029            Node::new(36, 0, 13),
1030            Node::new(36, 0, 10),
1031            Node::new(36, 0, 4),
1032            Node::new(36, 17, 16),
1033            Node::new(36, 2, 11),
1034            Node::new(36, 18, 3),
1035            Node::new(36, 0, 9),
1036            Node::new(36, 0, 5),
1037            Node::new(36, 0, 19),
1038            Node::new(35, 9, 11),
1039            Node::new(35, 13, 12),
1040            Node::new(35, 0, 8),
1041            Node::new(35, 1, 7),
1042            Node::new(35, 4, 15),
1043            Node::new(35, 14, 2),
1044            Node::new(35, 6, 3),
1045            Node::new(35, 5, 10),
1046            Node::new(34, 4, 0),
1047            Node::new(34, 3, 1),
1048            Node::new(34, 6, 7),
1049            Node::new(34, 2, 5),
1050            Node::new(33, 0, 3),
1051            Node::new(33, 2, 1),
1052            Node::new(32, 0, 1),
1053        ],
1054        [0, 21, 37, 45, 49, 51],
1055        21,
1056    )),
1057    AnyBitCircuit::B20(BitCircuit::new(
1058        [
1059            Node::new(0, 0, 0),
1060            Node::new(18, 1, 0),
1061            Node::new(15, 1, 0),
1062            Node::new(17, 1, 0),
1063            Node::new(5, 1, 0),
1064            Node::new(3, 1, 0),
1065            Node::new(2, 1, 0),
1066            Node::new(1, 1, 0),
1067            Node::new(9, 1, 0),
1068            Node::new(7, 1, 0),
1069            Node::new(14, 1, 0),
1070            Node::new(20, 1, 0),
1071            Node::new(4, 1, 0),
1072            Node::new(16, 1, 0),
1073            Node::new(10, 1, 0),
1074            Node::new(11, 1, 0),
1075            Node::new(12, 1, 0),
1076            Node::new(8, 1, 0),
1077            Node::new(19, 1, 0),
1078            Node::new(0, 1, 0),
1079            Node::new(13, 1, 0),
1080            Node::new(6, 1, 0),
1081            Node::new(36, 0, 16),
1082            Node::new(36, 12, 11),
1083            Node::new(36, 0, 9),
1084            Node::new(36, 0, 10),
1085            Node::new(36, 0, 21),
1086            Node::new(36, 0, 14),
1087            Node::new(36, 5, 18),
1088            Node::new(36, 6, 1),
1089            Node::new(36, 0, 17),
1090            Node::new(36, 19, 13),
1091            Node::new(36, 0, 2),
1092            Node::new(36, 0, 8),
1093            Node::new(36, 7, 3),
1094            Node::new(36, 0, 4),
1095            Node::new(36, 0, 20),
1096            Node::new(36, 0, 15),
1097            Node::new(35, 0, 1),
1098            Node::new(35, 4, 3),
1099            Node::new(35, 8, 9),
1100            Node::new(35, 5, 7),
1101            Node::new(35, 15, 6),
1102            Node::new(35, 2, 10),
1103            Node::new(35, 11, 12),
1104            Node::new(35, 13, 14),
1105            Node::new(34, 1, 3),
1106            Node::new(34, 2, 0),
1107            Node::new(34, 5, 4),
1108            Node::new(34, 7, 6),
1109            Node::new(33, 3, 2),
1110            Node::new(33, 0, 1),
1111            Node::new(32, 0, 1),
1112        ],
1113        [0, 22, 38, 46, 50, 52],
1114        22,
1115    )),
1116    AnyBitCircuit::B21(BitCircuit::new(
1117        [
1118            Node::new(0, 0, 0),
1119            Node::new(15, 1, 0),
1120            Node::new(13, 1, 0),
1121            Node::new(18, 1, 0),
1122            Node::new(16, 1, 0),
1123            Node::new(9, 1, 0),
1124            Node::new(7, 1, 0),
1125            Node::new(17, 1, 0),
1126            Node::new(4, 1, 0),
1127            Node::new(21, 1, 0),
1128            Node::new(12, 1, 0),
1129            Node::new(1, 1, 0),
1130            Node::new(5, 1, 0),
1131            Node::new(2, 1, 0),
1132            Node::new(19, 1, 0),
1133            Node::new(0, 1, 0),
1134            Node::new(14, 1, 0),
1135            Node::new(6, 1, 0),
1136            Node::new(8, 1, 0),
1137            Node::new(3, 1, 0),
1138            Node::new(11, 1, 0),
1139            Node::new(10, 1, 0),
1140            Node::new(20, 1, 0),
1141            Node::new(36, 11, 7),
1142            Node::new(36, 0, 10),
1143            Node::new(36, 0, 21),
1144            Node::new(36, 12, 9),
1145            Node::new(36, 19, 14),
1146            Node::new(36, 0, 5),
1147            Node::new(36, 0, 20),
1148            Node::new(36, 0, 1),
1149            Node::new(36, 8, 22),
1150            Node::new(36, 13, 3),
1151            Node::new(36, 0, 18),
1152            Node::new(36, 0, 16),
1153            Node::new(36, 0, 6),
1154            Node::new(36, 0, 2),
1155            Node::new(36, 0, 17),
1156            Node::new(36, 15, 4),
1157            Node::new(35, 13, 3),
1158            Node::new(35, 6, 4),
1159            Node::new(35, 12, 7),
1160            Node::new(35, 1, 8),
1161            Node::new(35, 10, 15),
1162            Node::new(35, 5, 0),
1163            Node::new(35, 2, 9),
1164            Node::new(35, 14, 11),
1165            Node::new(34, 2, 1),
1166            Node::new(34, 5, 0),
1167            Node::new(34, 4, 3),
1168            Node::new(34, 7, 6),
1169            Node::new(33, 3, 2),
1170            Node::new(33, 0, 1),
1171            Node::new(32, 0, 1),
1172        ],
1173        [0, 23, 39, 47, 51, 53],
1174        23,
1175    )),
1176    AnyBitCircuit::B22(BitCircuit::new(
1177        [
1178            Node::new(0, 0, 0),
1179            Node::new(19, 1, 0),
1180            Node::new(5, 1, 0),
1181            Node::new(2, 1, 0),
1182            Node::new(7, 1, 0),
1183            Node::new(6, 1, 0),
1184            Node::new(12, 1, 0),
1185            Node::new(17, 1, 0),
1186            Node::new(10, 1, 0),
1187            Node::new(4, 1, 0),
1188            Node::new(20, 1, 0),
1189            Node::new(0, 1, 0),
1190            Node::new(21, 1, 0),
1191            Node::new(3, 1, 0),
1192            Node::new(15, 1, 0),
1193            Node::new(13, 1, 0),
1194            Node::new(14, 1, 0),
1195            Node::new(1, 1, 0),
1196            Node::new(22, 1, 0),
1197            Node::new(18, 1, 0),
1198            Node::new(8, 1, 0),
1199            Node::new(9, 1, 0),
1200            Node::new(11, 1, 0),
1201            Node::new(16, 1, 0),
1202            Node::new(36, 13, 1),
1203            Node::new(36, 0, 16),
1204            Node::new(36, 3, 19),
1205            Node::new(36, 11, 23),
1206            Node::new(36, 0, 15),
1207            Node::new(36, 0, 22),
1208            Node::new(36, 5, 18),
1209            Node::new(36, 0, 21),
1210            Node::new(36, 9, 10),
1211            Node::new(36, 0, 8),
1212            Node::new(36, 0, 6),
1213            Node::new(36, 17, 7),
1214            Node::new(36, 0, 4),
1215            Node::new(36, 2, 12),
1216            Node::new(36, 0, 14),
1217            Node::new(36, 0, 20),
1218            Node::new(35, 10, 8),
1219            Node::new(35, 4, 13),
1220            Node::new(35, 12, 14),
1221            Node::new(35, 5, 0),
1222            Node::new(35, 7, 11),
1223            Node::new(35, 1, 6),
1224            Node::new(35, 15, 3),
1225            Node::new(35, 9, 2),
1226            Node::new(34, 6, 0),
1227            Node::new(34, 7, 5),
1228            Node::new(34, 2, 3),
1229            Node::new(34, 4, 1),
1230            Node::new(33, 0, 1),
1231            Node::new(33, 2, 3),
1232            Node::new(32, 1, 0),
1233        ],
1234        [0, 24, 40, 48, 52, 54],
1235        24,
1236    )),
1237    AnyBitCircuit::B23(BitCircuit::new(
1238        [
1239            Node::new(0, 0, 0),
1240            Node::new(9, 1, 0),
1241            Node::new(22, 1, 0),
1242            Node::new(12, 1, 0),
1243            Node::new(3, 1, 0),
1244            Node::new(23, 1, 0),
1245            Node::new(10, 1, 0),
1246            Node::new(16, 1, 0),
1247            Node::new(2, 1, 0),
1248            Node::new(21, 1, 0),
1249            Node::new(17, 1, 0),
1250            Node::new(19, 1, 0),
1251            Node::new(20, 1, 0),
1252            Node::new(8, 1, 0),
1253            Node::new(7, 1, 0),
1254            Node::new(11, 1, 0),
1255            Node::new(13, 1, 0),
1256            Node::new(0, 1, 0),
1257            Node::new(1, 1, 0),
1258            Node::new(18, 1, 0),
1259            Node::new(6, 1, 0),
1260            Node::new(14, 1, 0),
1261            Node::new(5, 1, 0),
1262            Node::new(15, 1, 0),
1263            Node::new(4, 1, 0),
1264            Node::new(36, 4, 11),
1265            Node::new(36, 8, 19),
1266            Node::new(36, 18, 10),
1267            Node::new(36, 0, 1),
1268            Node::new(36, 0, 21),
1269            Node::new(36, 0, 23),
1270            Node::new(36, 14, 5),
1271            Node::new(36, 17, 7),
1272            Node::new(36, 24, 12),
1273            Node::new(36, 0, 6),
1274            Node::new(36, 0, 16),
1275            Node::new(36, 0, 15),
1276            Node::new(36, 20, 2),
1277            Node::new(36, 22, 9),
1278            Node::new(36, 0, 3),
1279            Node::new(36, 0, 13),
1280            Node::new(35, 15, 7),
1281            Node::new(35, 5, 6),
1282            Node::new(35, 9, 1),
1283            Node::new(35, 4, 12),
1284            Node::new(35, 14, 8),
1285            Node::new(35, 11, 0),
1286            Node::new(35, 10, 13),
1287            Node::new(35, 3, 2),
1288            Node::new(34, 5, 1),
1289            Node::new(34, 2, 3),
1290            Node::new(34, 7, 6),
1291            Node::new(34, 0, 4),
1292            Node::new(33, 3, 1),
1293            Node::new(33, 2, 0),
1294            Node::new(32, 0, 1),
1295        ],
1296        [0, 25, 41, 49, 53, 55],
1297        25,
1298    )),
1299    AnyBitCircuit::B24(BitCircuit::new(
1300        [
1301            Node::new(0, 0, 0),
1302            Node::new(2, 1, 0),
1303            Node::new(16, 1, 0),
1304            Node::new(0, 1, 0),
1305            Node::new(6, 1, 0),
1306            Node::new(22, 1, 0),
1307            Node::new(14, 1, 0),
1308            Node::new(15, 1, 0),
1309            Node::new(19, 1, 0),
1310            Node::new(20, 1, 0),
1311            Node::new(21, 1, 0),
1312            Node::new(13, 1, 0),
1313            Node::new(1, 1, 0),
1314            Node::new(24, 1, 0),
1315            Node::new(11, 1, 0),
1316            Node::new(23, 1, 0),
1317            Node::new(3, 1, 0),
1318            Node::new(17, 1, 0),
1319            Node::new(8, 1, 0),
1320            Node::new(10, 1, 0),
1321            Node::new(12, 1, 0),
1322            Node::new(9, 1, 0),
1323            Node::new(4, 1, 0),
1324            Node::new(7, 1, 0),
1325            Node::new(5, 1, 0),
1326            Node::new(18, 1, 0),
1327            Node::new(36, 23, 15),
1328            Node::new(36, 0, 7),
1329            Node::new(36, 0, 20),
1330            Node::new(36, 12, 17),
1331            Node::new(36, 0, 14),
1332            Node::new(36, 0, 19),
1333            Node::new(36, 1, 25),
1334            Node::new(36, 18, 13),
1335            Node::new(36, 0, 6),
1336            Node::new(36, 0, 21),
1337            Node::new(36, 16, 8),
1338            Node::new(36, 22, 9),
1339            Node::new(36, 24, 10),
1340            Node::new(36, 3, 2),
1341            Node::new(36, 4, 5),
1342            Node::new(36, 0, 11),
1343            Node::new(35, 1, 0),
1344            Node::new(35, 8, 14),
1345            Node::new(35, 13, 7),
1346            Node::new(35, 4, 10),
1347            Node::new(35, 9, 3),
1348            Node::new(35, 2, 11),
1349            Node::new(35, 5, 6),
1350            Node::new(35, 15, 12),
1351            Node::new(34, 5, 2),
1352            Node::new(34, 3, 0),
1353            Node::new(34, 4, 7),
1354            Node::new(34, 6, 1),
1355            Node::new(33, 3, 0),
1356            Node::new(33, 2, 1),
1357            Node::new(32, 1, 0),
1358        ],
1359        [0, 26, 42, 50, 54, 56],
1360        26,
1361    )),
1362    AnyBitCircuit::B25(BitCircuit::new(
1363        [
1364            Node::new(0, 0, 0),
1365            Node::new(7, 1, 0),
1366            Node::new(21, 1, 0),
1367            Node::new(5, 1, 0),
1368            Node::new(19, 1, 0),
1369            Node::new(23, 1, 0),
1370            Node::new(9, 1, 0),
1371            Node::new(8, 1, 0),
1372            Node::new(6, 1, 0),
1373            Node::new(18, 1, 0),
1374            Node::new(0, 1, 0),
1375            Node::new(12, 1, 0),
1376            Node::new(20, 1, 0),
1377            Node::new(10, 1, 0),
1378            Node::new(11, 1, 0),
1379            Node::new(17, 1, 0),
1380            Node::new(13, 1, 0),
1381            Node::new(1, 1, 0),
1382            Node::new(14, 1, 0),
1383            Node::new(15, 1, 0),
1384            Node::new(24, 1, 0),
1385            Node::new(25, 1, 0),
1386            Node::new(22, 1, 0),
1387            Node::new(3, 1, 0),
1388            Node::new(4, 1, 0),
1389            Node::new(16, 1, 0),
1390            Node::new(2, 1, 0),
1391            Node::new(36, 17, 15),
1392            Node::new(36, 10, 25),
1393            Node::new(36, 0, 11),
1394            Node::new(36, 0, 13),
1395            Node::new(36, 0, 19),
1396            Node::new(36, 0, 16),
1397            Node::new(36, 7, 20),
1398            Node::new(36, 0, 14),
1399            Node::new(36, 24, 12),
1400            Node::new(36, 8, 22),
1401            Node::new(36, 3, 2),
1402            Node::new(36, 0, 18),
1403            Node::new(36, 1, 5),
1404            Node::new(36, 26, 9),
1405            Node::new(36, 23, 4),
1406            Node::new(36, 6, 21),
1407            Node::new(35, 2, 8),
1408            Node::new(35, 4, 12),
1409            Node::new(35, 7, 14),
1410            Node::new(35, 1, 6),
1411            Node::new(35, 3, 13),
1412            Node::new(35, 11, 9),
1413            Node::new(35, 0, 15),
1414            Node::new(35, 5, 10),
1415            Node::new(34, 2, 1),
1416            Node::new(34, 7, 6),
1417            Node::new(34, 4, 5),
1418            Node::new(34, 0, 3),
1419            Node::new(33, 2, 3),
1420            Node::new(33, 0, 1),
1421            Node::new(32, 0, 1),
1422        ],
1423        [0, 27, 43, 51, 55, 57],
1424        27,
1425    )),
1426    AnyBitCircuit::B26(BitCircuit::new(
1427        [
1428            Node::new(0, 0, 0),
1429            Node::new(4, 1, 0),
1430            Node::new(21, 1, 0),
1431            Node::new(5, 1, 0),
1432            Node::new(22, 1, 0),
1433            Node::new(2, 1, 0),
1434            Node::new(11, 1, 0),
1435            Node::new(24, 1, 0),
1436            Node::new(3, 1, 0),
1437            Node::new(20, 1, 0),
1438            Node::new(7, 1, 0),
1439            Node::new(25, 1, 0),
1440            Node::new(14, 1, 0),
1441            Node::new(9, 1, 0),
1442            Node::new(13, 1, 0),
1443            Node::new(15, 1, 0),
1444            Node::new(23, 1, 0),
1445            Node::new(18, 1, 0),
1446            Node::new(8, 1, 0),
1447            Node::new(16, 1, 0),
1448            Node::new(6, 1, 0),
1449            Node::new(0, 1, 0),
1450            Node::new(12, 1, 0),
1451            Node::new(17, 1, 0),
1452            Node::new(10, 1, 0),
1453            Node::new(26, 1, 0),
1454            Node::new(19, 1, 0),
1455            Node::new(1, 1, 0),
1456            Node::new(36, 0, 12),
1457            Node::new(36, 0, 15),
1458            Node::new(36, 13, 11),
1459            Node::new(36, 21, 19),
1460            Node::new(36, 10, 16),
1461            Node::new(36, 1, 9),
1462            Node::new(36, 3, 2),
1463            Node::new(36, 0, 14),
1464            Node::new(36, 20, 4),
1465            Node::new(36, 5, 17),
1466            Node::new(36, 27, 23),
1467            Node::new(36, 8, 26),
1468            Node::new(36, 0, 22),
1469            Node::new(36, 0, 6),
1470            Node::new(36, 24, 25),
1471            Node::new(36, 18, 7),
1472            Node::new(35, 1, 4),
1473            Node::new(35, 0, 8),
1474            Node::new(35, 13, 11),
1475            Node::new(35, 3, 15),
1476            Node::new(35, 9, 14),
1477            Node::new(35, 7, 6),
1478            Node::new(35, 12, 5),
1479            Node::new(35, 10, 2),
1480            Node::new(34, 6, 3),
1481            Node::new(34, 1, 4),
1482            Node::new(34, 5, 7),
1483            Node::new(34, 2, 0),
1484            Node::new(33, 3, 2),
1485            Node::new(33, 0, 1),
1486            Node::new(32, 0, 1),
1487        ],
1488        [0, 28, 44, 52, 56, 58],
1489        28,
1490    )),
1491    AnyBitCircuit::B27(BitCircuit::new(
1492        [
1493            Node::new(0, 0, 0),
1494            Node::new(6, 1, 0),
1495            Node::new(22, 1, 0),
1496            Node::new(18, 1, 0),
1497            Node::new(13, 1, 0),
1498            Node::new(24, 1, 0),
1499            Node::new(17, 1, 0),
1500            Node::new(9, 1, 0),
1501            Node::new(0, 1, 0),
1502            Node::new(2, 1, 0),
1503            Node::new(20, 1, 0),
1504            Node::new(10, 1, 0),
1505            Node::new(11, 1, 0),
1506            Node::new(5, 1, 0),
1507            Node::new(14, 1, 0),
1508            Node::new(4, 1, 0),
1509            Node::new(7, 1, 0),
1510            Node::new(26, 1, 0),
1511            Node::new(19, 1, 0),
1512            Node::new(16, 1, 0),
1513            Node::new(27, 1, 0),
1514            Node::new(21, 1, 0),
1515            Node::new(3, 1, 0),
1516            Node::new(15, 1, 0),
1517            Node::new(25, 1, 0),
1518            Node::new(1, 1, 0),
1519            Node::new(8, 1, 0),
1520            Node::new(12, 1, 0),
1521            Node::new(23, 1, 0),
1522            Node::new(36, 0, 27),
1523            Node::new(36, 15, 10),
1524            Node::new(36, 13, 21),
1525            Node::new(36, 11, 17),
1526            Node::new(36, 9, 3),
1527            Node::new(36, 7, 24),
1528            Node::new(36, 25, 6),
1529            Node::new(36, 1, 2),
1530            Node::new(36, 16, 28),
1531            Node::new(36, 12, 20),
1532            Node::new(36, 8, 19),
1533            Node::new(36, 0, 4),
1534            Node::new(36, 22, 18),
1535            Node::new(36, 26, 5),
1536            Node::new(36, 0, 14),
1537            Node::new(36, 0, 23),
1538            Node::new(35, 15, 8),
1539            Node::new(35, 10, 13),
1540            Node::new(35, 4, 3),
1541            Node::new(35, 6, 5),
1542            Node::new(35, 0, 1),
1543            Node::new(35, 12, 9),
1544            Node::new(35, 14, 7),
1545            Node::new(35, 11, 2),
1546            Node::new(34, 0, 5),
1547            Node::new(34, 7, 3),
1548            Node::new(34, 6, 2),
1549            Node::new(34, 4, 1),
1550            Node::new(33, 3, 2),
1551            Node::new(33, 1, 0),
1552            Node::new(32, 0, 1),
1553        ],
1554        [0, 29, 45, 53, 57, 59],
1555        29,
1556    )),
1557    AnyBitCircuit::B28(BitCircuit::new(
1558        [
1559            Node::new(0, 0, 0),
1560            Node::new(21, 1, 0),
1561            Node::new(7, 1, 0),
1562            Node::new(23, 1, 0),
1563            Node::new(18, 1, 0),
1564            Node::new(16, 1, 0),
1565            Node::new(12, 1, 0),
1566            Node::new(3, 1, 0),
1567            Node::new(15, 1, 0),
1568            Node::new(17, 1, 0),
1569            Node::new(0, 1, 0),
1570            Node::new(27, 1, 0),
1571            Node::new(2, 1, 0),
1572            Node::new(22, 1, 0),
1573            Node::new(13, 1, 0),
1574            Node::new(4, 1, 0),
1575            Node::new(10, 1, 0),
1576            Node::new(9, 1, 0),
1577            Node::new(24, 1, 0),
1578            Node::new(5, 1, 0),
1579            Node::new(11, 1, 0),
1580            Node::new(1, 1, 0),
1581            Node::new(8, 1, 0),
1582            Node::new(6, 1, 0),
1583            Node::new(14, 1, 0),
1584            Node::new(28, 1, 0),
1585            Node::new(26, 1, 0),
1586            Node::new(19, 1, 0),
1587            Node::new(20, 1, 0),
1588            Node::new(25, 1, 0),
1589            Node::new(36, 16, 26),
1590            Node::new(36, 17, 29),
1591            Node::new(36, 23, 13),
1592            Node::new(36, 7, 27),
1593            Node::new(36, 0, 14),
1594            Node::new(36, 15, 28),
1595            Node::new(36, 19, 1),
1596            Node::new(36, 12, 4),
1597            Node::new(36, 0, 24),
1598            Node::new(36, 0, 8),
1599            Node::new(36, 22, 18),
1600            Node::new(36, 21, 9),
1601            Node::new(36, 10, 5),
1602            Node::new(36, 20, 11),
1603            Node::new(36, 6, 25),
1604            Node::new(36, 2, 3),
1605            Node::new(35, 9, 15),
1606            Node::new(35, 11, 1),
1607            Node::new(35, 4, 6),
1608            Node::new(35, 5, 14),
1609            Node::new(35, 3, 13),
1610            Node::new(35, 7, 0),
1611            Node::new(35, 12, 10),
1612            Node::new(35, 8, 2),
1613            Node::new(34, 0, 4),
1614            Node::new(34, 2, 1),
1615            Node::new(34, 6, 3),
1616            Node::new(34, 7, 5),
1617            Node::new(33, 1, 0),
1618            Node::new(33, 3, 2),
1619            Node::new(32, 0, 1),
1620        ],
1621        [0, 30, 46, 54, 58, 60],
1622        30,
1623    )),
1624    AnyBitCircuit::B29(BitCircuit::new(
1625        [
1626            Node::new(0, 0, 0),
1627            Node::new(15, 1, 0),
1628            Node::new(8, 1, 0),
1629            Node::new(10, 1, 0),
1630            Node::new(19, 1, 0),
1631            Node::new(25, 1, 0),
1632            Node::new(22, 1, 0),
1633            Node::new(20, 1, 0),
1634            Node::new(16, 1, 0),
1635            Node::new(4, 1, 0),
1636            Node::new(5, 1, 0),
1637            Node::new(28, 1, 0),
1638            Node::new(24, 1, 0),
1639            Node::new(12, 1, 0),
1640            Node::new(0, 1, 0),
1641            Node::new(1, 1, 0),
1642            Node::new(11, 1, 0),
1643            Node::new(27, 1, 0),
1644            Node::new(9, 1, 0),
1645            Node::new(18, 1, 0),
1646            Node::new(3, 1, 0),
1647            Node::new(17, 1, 0),
1648            Node::new(29, 1, 0),
1649            Node::new(14, 1, 0),
1650            Node::new(26, 1, 0),
1651            Node::new(6, 1, 0),
1652            Node::new(21, 1, 0),
1653            Node::new(23, 1, 0),
1654            Node::new(2, 1, 0),
1655            Node::new(7, 1, 0),
1656            Node::new(13, 1, 0),
1657            Node::new(36, 30, 22),
1658            Node::new(36, 16, 17),
1659            Node::new(36, 29, 27),
1660            Node::new(36, 2, 12),
1661            Node::new(36, 9, 7),
1662            Node::new(36, 20, 4),
1663            Node::new(36, 18, 5),
1664            Node::new(36, 28, 19),
1665            Node::new(36, 0, 23),
1666            Node::new(36, 3, 24),
1667            Node::new(36, 13, 11),
1668            Node::new(36, 0, 1),
1669            Node::new(36, 15, 21),
1670            Node::new(36, 25, 6),
1671            Node::new(36, 10, 26),
1672            Node::new(36, 14, 8),
1673            Node::new(35, 4, 10),
1674            Node::new(35, 8, 13),
1675            Node::new(35, 11, 2),
1676            Node::new(35, 7, 9),
1677            Node::new(35, 12, 6),
1678            Node::new(35, 5, 1),
1679            Node::new(35, 14, 0),
1680            Node::new(35, 15, 3),
1681            Node::new(34, 1, 3),
1682            Node::new(34, 2, 5),
1683            Node::new(34, 7, 0),
1684            Node::new(34, 4, 6),
1685            Node::new(33, 1, 3),
1686            Node::new(33, 0, 2),
1687            Node::new(32, 1, 0),
1688        ],
1689        [0, 31, 47, 55, 59, 61],
1690        31,
1691    )),
1692    AnyBitCircuit::B30(BitCircuit::new(
1693        [
1694            Node::new(0, 0, 0),
1695            Node::new(21, 1, 0),
1696            Node::new(7, 1, 0),
1697            Node::new(24, 1, 0),
1698            Node::new(23, 1, 0),
1699            Node::new(9, 1, 0),
1700            Node::new(26, 1, 0),
1701            Node::new(8, 1, 0),
1702            Node::new(20, 1, 0),
1703            Node::new(3, 1, 0),
1704            Node::new(30, 1, 0),
1705            Node::new(4, 1, 0),
1706            Node::new(25, 1, 0),
1707            Node::new(29, 1, 0),
1708            Node::new(0, 1, 0),
1709            Node::new(2, 1, 0),
1710            Node::new(22, 1, 0),
1711            Node::new(28, 1, 0),
1712            Node::new(1, 1, 0),
1713            Node::new(18, 1, 0),
1714            Node::new(14, 1, 0),
1715            Node::new(11, 1, 0),
1716            Node::new(12, 1, 0),
1717            Node::new(6, 1, 0),
1718            Node::new(17, 1, 0),
1719            Node::new(27, 1, 0),
1720            Node::new(16, 1, 0),
1721            Node::new(15, 1, 0),
1722            Node::new(19, 1, 0),
1723            Node::new(10, 1, 0),
1724            Node::new(13, 1, 0),
1725            Node::new(5, 1, 0),
1726            Node::new(36, 0, 27),
1727            Node::new(36, 29, 6),
1728            Node::new(36, 31, 1),
1729            Node::new(36, 30, 13),
1730            Node::new(36, 21, 25),
1731            Node::new(36, 15, 19),
1732            Node::new(36, 23, 16),
1733            Node::new(36, 7, 3),
1734            Node::new(36, 9, 28),
1735            Node::new(36, 11, 8),
1736            Node::new(36, 14, 26),
1737            Node::new(36, 20, 10),
1738            Node::new(36, 22, 17),
1739            Node::new(36, 18, 24),
1740            Node::new(36, 5, 12),
1741            Node::new(36, 2, 4),
1742            Node::new(35, 5, 1),
1743            Node::new(35, 6, 11),
1744            Node::new(35, 10, 7),
1745            Node::new(35, 13, 14),
1746            Node::new(35, 8, 4),
1747            Node::new(35, 0, 15),
1748            Node::new(35, 2, 3),
1749            Node::new(35, 9, 12),
1750            Node::new(34, 3, 6),
1751            Node::new(34, 2, 7),
1752            Node::new(34, 0, 1),
1753            Node::new(34, 5, 4),
1754            Node::new(33, 3, 0),
1755            Node::new(33, 1, 2),
1756            Node::new(32, 0, 1),
1757        ],
1758        [0, 32, 48, 56, 60, 62],
1759        32,
1760    )),
1761    AnyBitCircuit::B31(BitCircuit::new(
1762        [
1763            Node::new(16, 1, 0),
1764            Node::new(12, 1, 0),
1765            Node::new(1, 1, 0),
1766            Node::new(2, 1, 0),
1767            Node::new(23, 1, 0),
1768            Node::new(6, 1, 0),
1769            Node::new(14, 1, 0),
1770            Node::new(8, 1, 0),
1771            Node::new(5, 1, 0),
1772            Node::new(26, 1, 0),
1773            Node::new(15, 1, 0),
1774            Node::new(3, 1, 0),
1775            Node::new(20, 1, 0),
1776            Node::new(7, 1, 0),
1777            Node::new(28, 1, 0),
1778            Node::new(13, 1, 0),
1779            Node::new(0, 1, 0),
1780            Node::new(22, 1, 0),
1781            Node::new(29, 1, 0),
1782            Node::new(30, 1, 0),
1783            Node::new(27, 1, 0),
1784            Node::new(17, 1, 0),
1785            Node::new(9, 1, 0),
1786            Node::new(11, 1, 0),
1787            Node::new(21, 1, 0),
1788            Node::new(4, 1, 0),
1789            Node::new(19, 1, 0),
1790            Node::new(10, 1, 0),
1791            Node::new(18, 1, 0),
1792            Node::new(24, 1, 0),
1793            Node::new(25, 1, 0),
1794            Node::new(31, 1, 0),
1795            Node::new(36, 7, 29),
1796            Node::new(36, 27, 9),
1797            Node::new(36, 11, 26),
1798            Node::new(36, 3, 28),
1799            Node::new(36, 22, 30),
1800            Node::new(36, 23, 20),
1801            Node::new(36, 10, 31),
1802            Node::new(36, 6, 19),
1803            Node::new(36, 13, 4),
1804            Node::new(36, 8, 24),
1805            Node::new(36, 2, 21),
1806            Node::new(36, 15, 18),
1807            Node::new(36, 25, 12),
1808            Node::new(36, 5, 17),
1809            Node::new(36, 1, 14),
1810            Node::new(36, 16, 0),
1811            Node::new(35, 2, 5),
1812            Node::new(35, 10, 4),
1813            Node::new(35, 8, 6),
1814            Node::new(35, 9, 11),
1815            Node::new(35, 15, 0),
1816            Node::new(35, 12, 14),
1817            Node::new(35, 13, 7),
1818            Node::new(35, 3, 1),
1819            Node::new(34, 0, 2),
1820            Node::new(34, 4, 5),
1821            Node::new(34, 7, 6),
1822            Node::new(34, 1, 3),
1823            Node::new(33, 3, 0),
1824            Node::new(33, 1, 2),
1825            Node::new(32, 1, 0),
1826        ],
1827        [0, 32, 48, 56, 60, 62],
1828        32,
1829    )),
1830]);