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