PyMatching: Crash while decoding surface code with d=5 rounds=20 perfect stabilizer measurements

The python code at the end of this message causes PyMatching to crash the python interpreter.

Basically what the code is doing is using (in development features of) stim to generate a surface code circuit, and then reduce the circuit to an error model in terms of possible detection events. I’ve hard coded the output of that part, so that you should be able to use the public version of stim on pypi.

Anyways, the code takes the circuit and the error model and converts them into a pymatching.Matcher, then samples the circuit’s detection events 1000 times and attempts to decode them. Then the process crashes.

I tried to make a smaller repro, but smaller instances were not crashing. It’s possible that I’m misusing some of the features (e.g. I translate stim’s logical observable concept into pymatching’s qubit concept), but of course regardless of any misuse the software shouldn’t take down the python interpreter.

import math

import pymatching
import networkx as nx
import stim


def test_decoding(circuit: stim.Circuit, detector_error_model_data, num_detectors: int, num_shots: int):
    print(f"test_decoding(\n"
          f"    circuit={circuit!r},\n"
          f"    detector_error_model_data={detector_error_model_data!r},\n"
          f"    num_detectors={num_detectors!r},\n"
          f"    num_shots={num_shots!r}\n"
          f")")
    m = detector_error_model_to_matching(detector_error_model_data, num_detectors)

    detector_samples = circuit.compile_detector_sampler().sample(num_shots, append_observables=True)
    num_correct = 0
    for sample in detector_samples:
        actual_observable = sample[-1]
        detectors_only = sample[:-1]
        predicted_observable = m.decode(detectors_only)[0]
        num_correct += actual_observable == predicted_observable
    print("shots", num_shots)
    print("correct predictions", num_correct)
    print("logical error rate", (num_shots - num_correct) / num_shots)


def detector_error_model_to_matching(error_model_data, num_detectors: int):
    g = nx.Graph()
    g.add_node(num_detectors, is_boundary=True)

    touched = set()
    for error in error_model_data:
        prob = error[0]
        flipped_detectors = [b for a, b in error[1:] if a == 'D']
        flipped_observables = [b for a, b in error[1:] if a == 'L']
        if len(flipped_detectors) == 1:
            flipped_detectors.append(num_detectors)
        if len(flipped_detectors) != 2:
            continue
        touched |= set(flipped_detectors)
        g.add_edge(*flipped_detectors, weight=-math.log(prob), qubit_id=flipped_observables)

    # Work around single connected component obstacle.
    for detector_unaffected_by_errors in set(range(num_detectors)) - touched:
        g.add_edge(num_detectors, detector_unaffected_by_errors, weight=99999)

    return pymatching.Matching(g)


def main():
    # # uses dev features
    # circuit: stim.Circuit = stim.Circuit.generated(
    #     "surface_code:rotated_memory_x",
    #     distance=5,
    #     rounds=20,
    #     before_round_data_depolarization=0.1,
    # )
    # test_decoding(circuit,
    #               circuit.error_graph(),
    #               num_detectors=circuit.num_detectors,
    #               num_shots=1000)
    test_decoding(
        circuit=stim.Circuit('''
            RX 1 3 5 7 9 12 14 16 18 20 23 25 27 29 31 34 36 38 40 42 45 47 49 51 53
            R 2 6 13 15 17 19 21 22 24 26 28 30 35 37 39 41 43 44 46 48 50 52 59 63
            TICK
            DEPOLARIZE1(0.1) 1 3 5 7 9 12 14 16 18 20 23 25 27 29 31 34 36 38 40 42 45 47 49 51 53
            H 2 6 15 19 24 28 37 41 46 50 59 63
            TICK
            CX 2 3 24 25 46 47 15 16 37 38 6 7 28 29 50 51 19 20 41 42 23 22 45 44 14 13 36 35 27 26 49 48 18 17 40 39 31 30 53 52
            TICK
            CX 2 1 24 23 46 45 15 14 37 36 6 5 28 27 50 49 19 18 41 40 12 22 34 44 3 13 25 35 16 26 38 48 7 17 29 39 20 30 42 52
            TICK
            CX 24 14 46 36 15 5 37 27 59 49 28 18 50 40 19 9 41 31 63 53 12 13 34 35 25 26 47 48 16 17 38 39 29 30 51 52 20 21 42 43
            TICK
            CX 24 12 46 34 15 3 37 25 59 47 28 16 50 38 19 7 41 29 63 51 1 13 23 35 14 26 36 48 5 17 27 39 18 30 40 52 9 21 31 43
            TICK
            H 2 6 15 19 24 28 37 41 46 50 59 63
            TICK
            MR 2 6 13 15 17 19 21 22 24 26 28 30 35 37 39 41 43 44 46 48 50 52 59 63
            DETECTOR rec[-24]
            DETECTOR rec[-16]
            DETECTOR rec[-6]
            DETECTOR rec[-21]
            DETECTOR rec[-11]
            DETECTOR rec[-2]
            DETECTOR rec[-23]
            DETECTOR rec[-14]
            DETECTOR rec[-4]
            DETECTOR rec[-19]
            DETECTOR rec[-9]
            DETECTOR rec[-1]
            REPEAT 19 {
                TICK
                DEPOLARIZE1(0.1) 1 3 5 7 9 12 14 16 18 20 23 25 27 29 31 34 36 38 40 42 45 47 49 51 53
                H 2 6 15 19 24 28 37 41 46 50 59 63
                TICK
                CX 2 3 24 25 46 47 15 16 37 38 6 7 28 29 50 51 19 20 41 42 23 22 45 44 14 13 36 35 27 26 49 48 18 17 40 39 31 30 53 52
                TICK
                CX 2 1 24 23 46 45 15 14 37 36 6 5 28 27 50 49 19 18 41 40 12 22 34 44 3 13 25 35 16 26 38 48 7 17 29 39 20 30 42 52
                TICK
                CX 24 14 46 36 15 5 37 27 59 49 28 18 50 40 19 9 41 31 63 53 12 13 34 35 25 26 47 48 16 17 38 39 29 30 51 52 20 21 42 43
                TICK
                CX 24 12 46 34 15 3 37 25 59 47 28 16 50 38 19 7 41 29 63 51 1 13 23 35 14 26 36 48 5 17 27 39 18 30 40 52 9 21 31 43
                TICK
                H 2 6 15 19 24 28 37 41 46 50 59 63
                TICK
                MR 2 6 13 15 17 19 21 22 24 26 28 30 35 37 39 41 43 44 46 48 50 52 59 63
                DETECTOR rec[-1] rec[-25]
                DETECTOR rec[-2] rec[-26]
                DETECTOR rec[-3] rec[-27]
                DETECTOR rec[-4] rec[-28]
                DETECTOR rec[-5] rec[-29]
                DETECTOR rec[-6] rec[-30]
                DETECTOR rec[-7] rec[-31]
                DETECTOR rec[-8] rec[-32]
                DETECTOR rec[-9] rec[-33]
                DETECTOR rec[-10] rec[-34]
                DETECTOR rec[-11] rec[-35]
                DETECTOR rec[-12] rec[-36]
                DETECTOR rec[-13] rec[-37]
                DETECTOR rec[-14] rec[-38]
                DETECTOR rec[-15] rec[-39]
                DETECTOR rec[-16] rec[-40]
                DETECTOR rec[-17] rec[-41]
                DETECTOR rec[-18] rec[-42]
                DETECTOR rec[-19] rec[-43]
                DETECTOR rec[-20] rec[-44]
                DETECTOR rec[-21] rec[-45]
                DETECTOR rec[-22] rec[-46]
                DETECTOR rec[-23] rec[-47]
                DETECTOR rec[-24] rec[-48]
            }
            MX 1 3 5 7 9 12 14 16 18 20 23 25 27 29 31 34 36 38 40 42 45 47 49 51 53
            DETECTOR rec[-24] rec[-25] rec[-49]
            DETECTOR rec[-14] rec[-15] rec[-19] rec[-20] rec[-41]
            DETECTOR rec[-4] rec[-5] rec[-9] rec[-10] rec[-31]
            DETECTOR rec[-18] rec[-19] rec[-23] rec[-24] rec[-46]
            DETECTOR rec[-8] rec[-9] rec[-13] rec[-14] rec[-36]
            DETECTOR rec[-3] rec[-4] rec[-27]
            DETECTOR rec[-22] rec[-23] rec[-48]
            DETECTOR rec[-12] rec[-13] rec[-17] rec[-18] rec[-39]
            DETECTOR rec[-2] rec[-3] rec[-7] rec[-8] rec[-29]
            DETECTOR rec[-16] rec[-17] rec[-21] rec[-22] rec[-44]
            DETECTOR rec[-6] rec[-7] rec[-11] rec[-12] rec[-34]
            DETECTOR rec[-1] rec[-2] rec[-26]
            OBSERVABLE_INCLUDE(0) rec[-5] rec[-10] rec[-15] rec[-20] rec[-25]
        '''),
        detector_error_model_data=[[0.06666666666666667, ('D', 0), ('D', 3)], [0.06666666666666667, ('D', 0), ('L', 0)],
                                   [0.06666666666666667, ('D', 1), ('D', 3)], [0.06666666666666667, ('D', 1), ('D', 4)],
                                   [0.12444444444444444, ('D', 1), ('L', 0)], [0.06666666666666667, ('D', 2), ('D', 4)],
                                   [0.06666666666666667, ('D', 2), ('D', 5)], [0.12444444444444444, ('D', 2), ('L', 0)],
                                   [0.06666666666666667, ('D', 3), ('D', 6)], [0.06666666666666667, ('D', 3), ('D', 7)],
                                   [0.06666666666666667, ('D', 4), ('D', 7)], [0.06666666666666667, ('D', 4), ('D', 8)],
                                   [0.06666666666666667, ('D', 5), ('D', 8)], [0.06666666666666667, ('D', 6), ('D', 9)],
                                   [0.06666666666666667, ('D', 7), ('D', 9)],
                                   [0.06666666666666667, ('D', 7), ('D', 10)],
                                   [0.06666666666666667, ('D', 8), ('D', 10)],
                                   [0.06666666666666667, ('D', 8), ('D', 11)], [0.12444444444444444, ('D', 9)],
                                   [0.12444444444444444, ('D', 10)], [0.06666666666666667, ('D', 11)],
                                   [0.034525331874368625, ('D', 12)], [0.034525331874368625, ('D', 12), ('D', 14)],
                                   [0.034525331874368625, ('D', 12), ('D', 14), ('D', 15)],
                                   [0.034525331874368625, ('D', 12), ('D', 15)],
                                   [0.034525331874368625, ('D', 13), ('D', 15)],
                                   [0.034525331874368625, ('D', 13), ('D', 15), ('D', 16)],
                                   [0.034525331874368625, ('D', 13), ('D', 16), ('D', 17)],
                                   [0.034525331874368625, ('D', 13), ('D', 17)], [0.06666666666666667, ('D', 14)],
                                   [0.034525331874368625, ('D', 14), ('D', 15), ('D', 20), ('D', 21)],
                                   [0.034525331874368625, ('D', 14), ('D', 19)],
                                   [0.034525331874368625, ('D', 14), ('D', 19), ('D', 20)],
                                   [0.034525331874368625, ('D', 14), ('D', 21)],
                                   [0.034525331874368625, ('D', 15), ('D', 16), ('D', 21), ('D', 22)],
                                   [0.034525331874368625, ('D', 15), ('D', 20)],
                                   [0.034525331874368625, ('D', 15), ('D', 22)], [0.06666666666666667, ('D', 16)],
                                   [0.034525331874368625, ('D', 16), ('D', 17), ('D', 22), ('D', 23)],
                                   [0.034525331874368625, ('D', 16), ('D', 21)],
                                   [0.034525331874368625, ('D', 16), ('D', 23)],
                                   [0.034525331874368625, ('D', 17), ('D', 18), ('D', 23), ('L', 0)],
                                   [0.034525331874368625, ('D', 17), ('D', 18), ('L', 0)],
                                   [0.034525331874368625, ('D', 17), ('D', 22)],
                                   [0.06666666666666667, ('D', 17), ('L', 0)], [0.034525331874368625, ('D', 18)],
                                   [0.034525331874368625, ('D', 18), ('D', 23)],
                                   [0.034525331874368625, ('D', 19), ('D', 20), ('D', 24)],
                                   [0.034525331874368625, ('D', 19), ('D', 24)], [0.06666666666666667, ('D', 20)],
                                   [0.034525331874368625, ('D', 20), ('D', 21), ('D', 24), ('D', 25)],
                                   [0.034525331874368625, ('D', 20), ('D', 25)],
                                   [0.034525331874368625, ('D', 21), ('D', 22), ('D', 25), ('D', 26)],
                                   [0.034525331874368625, ('D', 21), ('D', 24)],
                                   [0.034525331874368625, ('D', 21), ('D', 26)],
                                   [0.034525331874368625, ('D', 22), ('D', 23), ('D', 26), ('D', 27)],
                                   [0.034525331874368625, ('D', 22), ('D', 25)],
                                   [0.034525331874368625, ('D', 22), ('D', 27)],
                                   [0.034525331874368625, ('D', 23), ('D', 26)],
                                   [0.034525331874368625, ('D', 23), ('D', 27), ('D', 28), ('L', 0)],
                                   [0.034525331874368625, ('D', 23), ('D', 28)],
                                   [0.034525331874368625, ('D', 24), ('D', 25), ('D', 30), ('D', 31)],
                                   [0.034525331874368625, ('D', 24), ('D', 29)],
                                   [0.034525331874368625, ('D', 24), ('D', 29), ('D', 30)],
                                   [0.034525331874368625, ('D', 24), ('D', 31)],
                                   [0.034525331874368625, ('D', 25), ('D', 26), ('D', 31), ('D', 32)],
                                   [0.034525331874368625, ('D', 25), ('D', 30)],
                                   [0.034525331874368625, ('D', 25), ('D', 32)],
                                   [0.034525331874368625, ('D', 26), ('D', 27), ('D', 32), ('D', 33)],
                                   [0.034525331874368625, ('D', 26), ('D', 31)],
                                   [0.034525331874368625, ('D', 26), ('D', 33)],
                                   [0.034525331874368625, ('D', 27), ('D', 28), ('D', 33), ('L', 0)],
                                   [0.034525331874368625, ('D', 27), ('D', 32)],
                                   [0.06666666666666667, ('D', 27), ('L', 0)],
                                   [0.034525331874368625, ('D', 28), ('D', 33)], [0.034525331874368625, ('D', 29)],
                                   [0.034525331874368625, ('D', 29), ('D', 30)], [0.06666666666666667, ('D', 30)],
                                   [0.034525331874368625, ('D', 30), ('D', 31), ('D', 34)],
                                   [0.034525331874368625, ('D', 30), ('D', 34)], [0.06666666666666667, ('D', 31)],
                                   [0.034525331874368625, ('D', 31), ('D', 32), ('D', 34)],
                                   [0.034525331874368625, ('D', 32), ('D', 33), ('D', 35)],
                                   [0.034525331874368625, ('D', 32), ('D', 34)],
                                   [0.034525331874368625, ('D', 32), ('D', 35)], [0.06666666666666667, ('D', 33)],
                                   [0.034525331874368625, ('D', 33), ('D', 35), ('L', 0)],
                                   [0.034525331874368625, ('D', 35), ('L', 0)], [0.034525331874368625, ('D', 36)],
                                   [0.034525331874368625, ('D', 36), ('D', 38)],
                                   [0.034525331874368625, ('D', 36), ('D', 38), ('D', 39)],
                                   [0.034525331874368625, ('D', 36), ('D', 39)],
                                   [0.034525331874368625, ('D', 37), ('D', 39)],
                                   [0.034525331874368625, ('D', 37), ('D', 39), ('D', 40)],
                                   [0.034525331874368625, ('D', 37), ('D', 40), ('D', 41)],
                                   [0.034525331874368625, ('D', 37), ('D', 41)], [0.06666666666666667, ('D', 38)],
                                   [0.034525331874368625, ('D', 38), ('D', 39), ('D', 44), ('D', 45)],
                                   [0.034525331874368625, ('D', 38), ('D', 43)],
                                   [0.034525331874368625, ('D', 38), ('D', 43), ('D', 44)],
                                   [0.034525331874368625, ('D', 38), ('D', 45)],
                                   [0.034525331874368625, ('D', 39), ('D', 40), ('D', 45), ('D', 46)],
                                   [0.034525331874368625, ('D', 39), ('D', 44)],
                                   [0.034525331874368625, ('D', 39), ('D', 46)], [0.06666666666666667, ('D', 40)],
                                   [0.034525331874368625, ('D', 40), ('D', 41), ('D', 46), ('D', 47)],
                                   [0.034525331874368625, ('D', 40), ('D', 45)],
                                   [0.034525331874368625, ('D', 40), ('D', 47)],
                                   [0.034525331874368625, ('D', 41), ('D', 42), ('D', 47), ('L', 0)],
                                   [0.034525331874368625, ('D', 41), ('D', 42), ('L', 0)],
                                   [0.034525331874368625, ('D', 41), ('D', 46)],
                                   [0.06666666666666667, ('D', 41), ('L', 0)], [0.034525331874368625, ('D', 42)],
                                   [0.034525331874368625, ('D', 42), ('D', 47)],
                                   [0.034525331874368625, ('D', 43), ('D', 44), ('D', 48)],
                                   [0.034525331874368625, ('D', 43), ('D', 48)], [0.06666666666666667, ('D', 44)],
                                   [0.034525331874368625, ('D', 44), ('D', 45), ('D', 48), ('D', 49)],
                                   [0.034525331874368625, ('D', 44), ('D', 49)],
                                   [0.034525331874368625, ('D', 45), ('D', 46), ('D', 49), ('D', 50)],
                                   [0.034525331874368625, ('D', 45), ('D', 48)],
                                   [0.034525331874368625, ('D', 45), ('D', 50)],
                                   [0.034525331874368625, ('D', 46), ('D', 47), ('D', 50), ('D', 51)],
                                   [0.034525331874368625, ('D', 46), ('D', 49)],
                                   [0.034525331874368625, ('D', 46), ('D', 51)],
                                   [0.034525331874368625, ('D', 47), ('D', 50)],
                                   [0.034525331874368625, ('D', 47), ('D', 51), ('D', 52), ('L', 0)],
                                   [0.034525331874368625, ('D', 47), ('D', 52)],
                                   [0.034525331874368625, ('D', 48), ('D', 49), ('D', 54), ('D', 55)],
                                   [0.034525331874368625, ('D', 48), ('D', 53)],
                                   [0.034525331874368625, ('D', 48), ('D', 53), ('D', 54)],
                                   [0.034525331874368625, ('D', 48), ('D', 55)],
                                   [0.034525331874368625, ('D', 49), ('D', 50), ('D', 55), ('D', 56)],
                                   [0.034525331874368625, ('D', 49), ('D', 54)],
                                   [0.034525331874368625, ('D', 49), ('D', 56)],
                                   [0.034525331874368625, ('D', 50), ('D', 51), ('D', 56), ('D', 57)],
                                   [0.034525331874368625, ('D', 50), ('D', 55)],
                                   [0.034525331874368625, ('D', 50), ('D', 57)],
                                   [0.034525331874368625, ('D', 51), ('D', 52), ('D', 57), ('L', 0)],
                                   [0.034525331874368625, ('D', 51), ('D', 56)],
                                   [0.06666666666666667, ('D', 51), ('L', 0)],
                                   [0.034525331874368625, ('D', 52), ('D', 57)], [0.034525331874368625, ('D', 53)],
                                   [0.034525331874368625, ('D', 53), ('D', 54)], [0.06666666666666667, ('D', 54)],
                                   [0.034525331874368625, ('D', 54), ('D', 55), ('D', 58)],
                                   [0.034525331874368625, ('D', 54), ('D', 58)], [0.06666666666666667, ('D', 55)],
                                   [0.034525331874368625, ('D', 55), ('D', 56), ('D', 58)],
                                   [0.034525331874368625, ('D', 56), ('D', 57), ('D', 59)],
                                   [0.034525331874368625, ('D', 56), ('D', 58)],
                                   [0.034525331874368625, ('D', 56), ('D', 59)], [0.06666666666666667, ('D', 57)],
                                   [0.034525331874368625, ('D', 57), ('D', 59), ('L', 0)],
                                   [0.034525331874368625, ('D', 59), ('L', 0)], [0.034525331874368625, ('D', 60)],
                                   [0.034525331874368625, ('D', 60), ('D', 62)],
                                   [0.034525331874368625, ('D', 60), ('D', 62), ('D', 63)],
                                   [0.034525331874368625, ('D', 60), ('D', 63)],
                                   [0.034525331874368625, ('D', 61), ('D', 63)],
                                   [0.034525331874368625, ('D', 61), ('D', 63), ('D', 64)],
                                   [0.034525331874368625, ('D', 61), ('D', 64), ('D', 65)],
                                   [0.034525331874368625, ('D', 61), ('D', 65)], [0.06666666666666667, ('D', 62)],
                                   [0.034525331874368625, ('D', 62), ('D', 63), ('D', 68), ('D', 69)],
                                   [0.034525331874368625, ('D', 62), ('D', 67)],
                                   [0.034525331874368625, ('D', 62), ('D', 67), ('D', 68)],
                                   [0.034525331874368625, ('D', 62), ('D', 69)],
                                   [0.034525331874368625, ('D', 63), ('D', 64), ('D', 69), ('D', 70)],
                                   [0.034525331874368625, ('D', 63), ('D', 68)],
                                   [0.034525331874368625, ('D', 63), ('D', 70)], [0.06666666666666667, ('D', 64)],
                                   [0.034525331874368625, ('D', 64), ('D', 65), ('D', 70), ('D', 71)],
                                   [0.034525331874368625, ('D', 64), ('D', 69)],
                                   [0.034525331874368625, ('D', 64), ('D', 71)],
                                   [0.034525331874368625, ('D', 65), ('D', 66), ('D', 71), ('L', 0)],
                                   [0.034525331874368625, ('D', 65), ('D', 66), ('L', 0)],
                                   [0.034525331874368625, ('D', 65), ('D', 70)],
                                   [0.06666666666666667, ('D', 65), ('L', 0)], [0.034525331874368625, ('D', 66)],
                                   [0.034525331874368625, ('D', 66), ('D', 71)],
                                   [0.034525331874368625, ('D', 67), ('D', 68), ('D', 72)],
                                   [0.034525331874368625, ('D', 67), ('D', 72)], [0.06666666666666667, ('D', 68)],
                                   [0.034525331874368625, ('D', 68), ('D', 69), ('D', 72), ('D', 73)],
                                   [0.034525331874368625, ('D', 68), ('D', 73)],
                                   [0.034525331874368625, ('D', 69), ('D', 70), ('D', 73), ('D', 74)],
                                   [0.034525331874368625, ('D', 69), ('D', 72)],
                                   [0.034525331874368625, ('D', 69), ('D', 74)],
                                   [0.034525331874368625, ('D', 70), ('D', 71), ('D', 74), ('D', 75)],
                                   [0.034525331874368625, ('D', 70), ('D', 73)],
                                   [0.034525331874368625, ('D', 70), ('D', 75)],
                                   [0.034525331874368625, ('D', 71), ('D', 74)],
                                   [0.034525331874368625, ('D', 71), ('D', 75), ('D', 76), ('L', 0)],
                                   [0.034525331874368625, ('D', 71), ('D', 76)],
                                   [0.034525331874368625, ('D', 72), ('D', 73), ('D', 78), ('D', 79)],
                                   [0.034525331874368625, ('D', 72), ('D', 77)],
                                   [0.034525331874368625, ('D', 72), ('D', 77), ('D', 78)],
                                   [0.034525331874368625, ('D', 72), ('D', 79)],
                                   [0.034525331874368625, ('D', 73), ('D', 74), ('D', 79), ('D', 80)],
                                   [0.034525331874368625, ('D', 73), ('D', 78)],
                                   [0.034525331874368625, ('D', 73), ('D', 80)],
                                   [0.034525331874368625, ('D', 74), ('D', 75), ('D', 80), ('D', 81)],
                                   [0.034525331874368625, ('D', 74), ('D', 79)],
                                   [0.034525331874368625, ('D', 74), ('D', 81)],
                                   [0.034525331874368625, ('D', 75), ('D', 76), ('D', 81), ('L', 0)],
                                   [0.034525331874368625, ('D', 75), ('D', 80)],
                                   [0.06666666666666667, ('D', 75), ('L', 0)],
                                   [0.034525331874368625, ('D', 76), ('D', 81)], [0.034525331874368625, ('D', 77)],
                                   [0.034525331874368625, ('D', 77), ('D', 78)], [0.06666666666666667, ('D', 78)],
                                   [0.034525331874368625, ('D', 78), ('D', 79), ('D', 82)],
                                   [0.034525331874368625, ('D', 78), ('D', 82)], [0.06666666666666667, ('D', 79)],
                                   [0.034525331874368625, ('D', 79), ('D', 80), ('D', 82)],
                                   [0.034525331874368625, ('D', 80), ('D', 81), ('D', 83)],
                                   [0.034525331874368625, ('D', 80), ('D', 82)],
                                   [0.034525331874368625, ('D', 80), ('D', 83)], [0.06666666666666667, ('D', 81)],
                                   [0.034525331874368625, ('D', 81), ('D', 83), ('L', 0)],
                                   [0.034525331874368625, ('D', 83), ('L', 0)], [0.034525331874368625, ('D', 84)],
                                   [0.034525331874368625, ('D', 84), ('D', 86)],
                                   [0.034525331874368625, ('D', 84), ('D', 86), ('D', 87)],
                                   [0.034525331874368625, ('D', 84), ('D', 87)],
                                   [0.034525331874368625, ('D', 85), ('D', 87)],
                                   [0.034525331874368625, ('D', 85), ('D', 87), ('D', 88)],
                                   [0.034525331874368625, ('D', 85), ('D', 88), ('D', 89)],
                                   [0.034525331874368625, ('D', 85), ('D', 89)], [0.06666666666666667, ('D', 86)],
                                   [0.034525331874368625, ('D', 86), ('D', 87), ('D', 92), ('D', 93)],
                                   [0.034525331874368625, ('D', 86), ('D', 91)],
                                   [0.034525331874368625, ('D', 86), ('D', 91), ('D', 92)],
                                   [0.034525331874368625, ('D', 86), ('D', 93)],
                                   [0.034525331874368625, ('D', 87), ('D', 88), ('D', 93), ('D', 94)],
                                   [0.034525331874368625, ('D', 87), ('D', 92)],
                                   [0.034525331874368625, ('D', 87), ('D', 94)], [0.06666666666666667, ('D', 88)],
                                   [0.034525331874368625, ('D', 88), ('D', 89), ('D', 94), ('D', 95)],
                                   [0.034525331874368625, ('D', 88), ('D', 93)],
                                   [0.034525331874368625, ('D', 88), ('D', 95)],
                                   [0.034525331874368625, ('D', 89), ('D', 90), ('D', 95), ('L', 0)],
                                   [0.034525331874368625, ('D', 89), ('D', 90), ('L', 0)],
                                   [0.034525331874368625, ('D', 89), ('D', 94)],
                                   [0.06666666666666667, ('D', 89), ('L', 0)], [0.034525331874368625, ('D', 90)],
                                   [0.034525331874368625, ('D', 90), ('D', 95)],
                                   [0.034525331874368625, ('D', 91), ('D', 92), ('D', 96)],
                                   [0.034525331874368625, ('D', 91), ('D', 96)], [0.06666666666666667, ('D', 92)],
                                   [0.034525331874368625, ('D', 92), ('D', 93), ('D', 96), ('D', 97)],
                                   [0.034525331874368625, ('D', 92), ('D', 97)],
                                   [0.034525331874368625, ('D', 93), ('D', 94), ('D', 97), ('D', 98)],
                                   [0.034525331874368625, ('D', 93), ('D', 96)],
                                   [0.034525331874368625, ('D', 93), ('D', 98)],
                                   [0.034525331874368625, ('D', 94), ('D', 95), ('D', 98), ('D', 99)],
                                   [0.034525331874368625, ('D', 94), ('D', 97)],
                                   [0.034525331874368625, ('D', 94), ('D', 99)],
                                   [0.034525331874368625, ('D', 95), ('D', 98)],
                                   [0.034525331874368625, ('D', 95), ('D', 99), ('D', 100), ('L', 0)],
                                   [0.034525331874368625, ('D', 95), ('D', 100)],
                                   [0.034525331874368625, ('D', 96), ('D', 97), ('D', 102), ('D', 103)],
                                   [0.034525331874368625, ('D', 96), ('D', 101)],
                                   [0.034525331874368625, ('D', 96), ('D', 101), ('D', 102)],
                                   [0.034525331874368625, ('D', 96), ('D', 103)],
                                   [0.034525331874368625, ('D', 97), ('D', 98), ('D', 103), ('D', 104)],
                                   [0.034525331874368625, ('D', 97), ('D', 102)],
                                   [0.034525331874368625, ('D', 97), ('D', 104)],
                                   [0.034525331874368625, ('D', 98), ('D', 99), ('D', 104), ('D', 105)],
                                   [0.034525331874368625, ('D', 98), ('D', 103)],
                                   [0.034525331874368625, ('D', 98), ('D', 105)],
                                   [0.034525331874368625, ('D', 99), ('D', 100), ('D', 105), ('L', 0)],
                                   [0.034525331874368625, ('D', 99), ('D', 104)],
                                   [0.06666666666666667, ('D', 99), ('L', 0)],
                                   [0.034525331874368625, ('D', 100), ('D', 105)], [0.034525331874368625, ('D', 101)],
                                   [0.034525331874368625, ('D', 101), ('D', 102)], [0.06666666666666667, ('D', 102)],
                                   [0.034525331874368625, ('D', 102), ('D', 103), ('D', 106)],
                                   [0.034525331874368625, ('D', 102), ('D', 106)], [0.06666666666666667, ('D', 103)],
                                   [0.034525331874368625, ('D', 103), ('D', 104), ('D', 106)],
                                   [0.034525331874368625, ('D', 104), ('D', 105), ('D', 107)],
                                   [0.034525331874368625, ('D', 104), ('D', 106)],
                                   [0.034525331874368625, ('D', 104), ('D', 107)], [0.06666666666666667, ('D', 105)],
                                   [0.034525331874368625, ('D', 105), ('D', 107), ('L', 0)],
                                   [0.034525331874368625, ('D', 107), ('L', 0)], [0.034525331874368625, ('D', 108)],
                                   [0.034525331874368625, ('D', 108), ('D', 110)],
                                   [0.034525331874368625, ('D', 108), ('D', 110), ('D', 111)],
                                   [0.034525331874368625, ('D', 108), ('D', 111)],
                                   [0.034525331874368625, ('D', 109), ('D', 111)],
                                   [0.034525331874368625, ('D', 109), ('D', 111), ('D', 112)],
                                   [0.034525331874368625, ('D', 109), ('D', 112), ('D', 113)],
                                   [0.034525331874368625, ('D', 109), ('D', 113)], [0.06666666666666667, ('D', 110)],
                                   [0.034525331874368625, ('D', 110), ('D', 111), ('D', 116), ('D', 117)],
                                   [0.034525331874368625, ('D', 110), ('D', 115)],
                                   [0.034525331874368625, ('D', 110), ('D', 115), ('D', 116)],
                                   [0.034525331874368625, ('D', 110), ('D', 117)],
                                   [0.034525331874368625, ('D', 111), ('D', 112), ('D', 117), ('D', 118)],
                                   [0.034525331874368625, ('D', 111), ('D', 116)],
                                   [0.034525331874368625, ('D', 111), ('D', 118)], [0.06666666666666667, ('D', 112)],
                                   [0.034525331874368625, ('D', 112), ('D', 113), ('D', 118), ('D', 119)],
                                   [0.034525331874368625, ('D', 112), ('D', 117)],
                                   [0.034525331874368625, ('D', 112), ('D', 119)],
                                   [0.034525331874368625, ('D', 113), ('D', 114), ('D', 119), ('L', 0)],
                                   [0.034525331874368625, ('D', 113), ('D', 114), ('L', 0)],
                                   [0.034525331874368625, ('D', 113), ('D', 118)],
                                   [0.06666666666666667, ('D', 113), ('L', 0)], [0.034525331874368625, ('D', 114)],
                                   [0.034525331874368625, ('D', 114), ('D', 119)],
                                   [0.034525331874368625, ('D', 115), ('D', 116), ('D', 120)],
                                   [0.034525331874368625, ('D', 115), ('D', 120)], [0.06666666666666667, ('D', 116)],
                                   [0.034525331874368625, ('D', 116), ('D', 117), ('D', 120), ('D', 121)],
                                   [0.034525331874368625, ('D', 116), ('D', 121)],
                                   [0.034525331874368625, ('D', 117), ('D', 118), ('D', 121), ('D', 122)],
                                   [0.034525331874368625, ('D', 117), ('D', 120)],
                                   [0.034525331874368625, ('D', 117), ('D', 122)],
                                   [0.034525331874368625, ('D', 118), ('D', 119), ('D', 122), ('D', 123)],
                                   [0.034525331874368625, ('D', 118), ('D', 121)],
                                   [0.034525331874368625, ('D', 118), ('D', 123)],
                                   [0.034525331874368625, ('D', 119), ('D', 122)],
                                   [0.034525331874368625, ('D', 119), ('D', 123), ('D', 124), ('L', 0)],
                                   [0.034525331874368625, ('D', 119), ('D', 124)],
                                   [0.034525331874368625, ('D', 120), ('D', 121), ('D', 126), ('D', 127)],
                                   [0.034525331874368625, ('D', 120), ('D', 125)],
                                   [0.034525331874368625, ('D', 120), ('D', 125), ('D', 126)],
                                   [0.034525331874368625, ('D', 120), ('D', 127)],
                                   [0.034525331874368625, ('D', 121), ('D', 122), ('D', 127), ('D', 128)],
                                   [0.034525331874368625, ('D', 121), ('D', 126)],
                                   [0.034525331874368625, ('D', 121), ('D', 128)],
                                   [0.034525331874368625, ('D', 122), ('D', 123), ('D', 128), ('D', 129)],
                                   [0.034525331874368625, ('D', 122), ('D', 127)],
                                   [0.034525331874368625, ('D', 122), ('D', 129)],
                                   [0.034525331874368625, ('D', 123), ('D', 124), ('D', 129), ('L', 0)],
                                   [0.034525331874368625, ('D', 123), ('D', 128)],
                                   [0.06666666666666667, ('D', 123), ('L', 0)],
                                   [0.034525331874368625, ('D', 124), ('D', 129)], [0.034525331874368625, ('D', 125)],
                                   [0.034525331874368625, ('D', 125), ('D', 126)], [0.06666666666666667, ('D', 126)],
                                   [0.034525331874368625, ('D', 126), ('D', 127), ('D', 130)],
                                   [0.034525331874368625, ('D', 126), ('D', 130)], [0.06666666666666667, ('D', 127)],
                                   [0.034525331874368625, ('D', 127), ('D', 128), ('D', 130)],
                                   [0.034525331874368625, ('D', 128), ('D', 129), ('D', 131)],
                                   [0.034525331874368625, ('D', 128), ('D', 130)],
                                   [0.034525331874368625, ('D', 128), ('D', 131)], [0.06666666666666667, ('D', 129)],
                                   [0.034525331874368625, ('D', 129), ('D', 131), ('L', 0)],
                                   [0.034525331874368625, ('D', 131), ('L', 0)], [0.034525331874368625, ('D', 132)],
                                   [0.034525331874368625, ('D', 132), ('D', 134)],
                                   [0.034525331874368625, ('D', 132), ('D', 134), ('D', 135)],
                                   [0.034525331874368625, ('D', 132), ('D', 135)],
                                   [0.034525331874368625, ('D', 133), ('D', 135)],
                                   [0.034525331874368625, ('D', 133), ('D', 135), ('D', 136)],
                                   [0.034525331874368625, ('D', 133), ('D', 136), ('D', 137)],
                                   [0.034525331874368625, ('D', 133), ('D', 137)], [0.06666666666666667, ('D', 134)],
                                   [0.034525331874368625, ('D', 134), ('D', 135), ('D', 140), ('D', 141)],
                                   [0.034525331874368625, ('D', 134), ('D', 139)],
                                   [0.034525331874368625, ('D', 134), ('D', 139), ('D', 140)],
                                   [0.034525331874368625, ('D', 134), ('D', 141)],
                                   [0.034525331874368625, ('D', 135), ('D', 136), ('D', 141), ('D', 142)],
                                   [0.034525331874368625, ('D', 135), ('D', 140)],
                                   [0.034525331874368625, ('D', 135), ('D', 142)], [0.06666666666666667, ('D', 136)],
                                   [0.034525331874368625, ('D', 136), ('D', 137), ('D', 142), ('D', 143)],
                                   [0.034525331874368625, ('D', 136), ('D', 141)],
                                   [0.034525331874368625, ('D', 136), ('D', 143)],
                                   [0.034525331874368625, ('D', 137), ('D', 138), ('D', 143), ('L', 0)],
                                   [0.034525331874368625, ('D', 137), ('D', 138), ('L', 0)],
                                   [0.034525331874368625, ('D', 137), ('D', 142)],
                                   [0.06666666666666667, ('D', 137), ('L', 0)], [0.034525331874368625, ('D', 138)],
                                   [0.034525331874368625, ('D', 138), ('D', 143)],
                                   [0.034525331874368625, ('D', 139), ('D', 140), ('D', 144)],
                                   [0.034525331874368625, ('D', 139), ('D', 144)], [0.06666666666666667, ('D', 140)],
                                   [0.034525331874368625, ('D', 140), ('D', 141), ('D', 144), ('D', 145)],
                                   [0.034525331874368625, ('D', 140), ('D', 145)],
                                   [0.034525331874368625, ('D', 141), ('D', 142), ('D', 145), ('D', 146)],
                                   [0.034525331874368625, ('D', 141), ('D', 144)],
                                   [0.034525331874368625, ('D', 141), ('D', 146)],
                                   [0.034525331874368625, ('D', 142), ('D', 143), ('D', 146), ('D', 147)],
                                   [0.034525331874368625, ('D', 142), ('D', 145)],
                                   [0.034525331874368625, ('D', 142), ('D', 147)],
                                   [0.034525331874368625, ('D', 143), ('D', 146)],
                                   [0.034525331874368625, ('D', 143), ('D', 147), ('D', 148), ('L', 0)],
                                   [0.034525331874368625, ('D', 143), ('D', 148)],
                                   [0.034525331874368625, ('D', 144), ('D', 145), ('D', 150), ('D', 151)],
                                   [0.034525331874368625, ('D', 144), ('D', 149)],
                                   [0.034525331874368625, ('D', 144), ('D', 149), ('D', 150)],
                                   [0.034525331874368625, ('D', 144), ('D', 151)],
                                   [0.034525331874368625, ('D', 145), ('D', 146), ('D', 151), ('D', 152)],
                                   [0.034525331874368625, ('D', 145), ('D', 150)],
                                   [0.034525331874368625, ('D', 145), ('D', 152)],
                                   [0.034525331874368625, ('D', 146), ('D', 147), ('D', 152), ('D', 153)],
                                   [0.034525331874368625, ('D', 146), ('D', 151)],
                                   [0.034525331874368625, ('D', 146), ('D', 153)],
                                   [0.034525331874368625, ('D', 147), ('D', 148), ('D', 153), ('L', 0)],
                                   [0.034525331874368625, ('D', 147), ('D', 152)],
                                   [0.06666666666666667, ('D', 147), ('L', 0)],
                                   [0.034525331874368625, ('D', 148), ('D', 153)], [0.034525331874368625, ('D', 149)],
                                   [0.034525331874368625, ('D', 149), ('D', 150)], [0.06666666666666667, ('D', 150)],
                                   [0.034525331874368625, ('D', 150), ('D', 151), ('D', 154)],
                                   [0.034525331874368625, ('D', 150), ('D', 154)], [0.06666666666666667, ('D', 151)],
                                   [0.034525331874368625, ('D', 151), ('D', 152), ('D', 154)],
                                   [0.034525331874368625, ('D', 152), ('D', 153), ('D', 155)],
                                   [0.034525331874368625, ('D', 152), ('D', 154)],
                                   [0.034525331874368625, ('D', 152), ('D', 155)], [0.06666666666666667, ('D', 153)],
                                   [0.034525331874368625, ('D', 153), ('D', 155), ('L', 0)],
                                   [0.034525331874368625, ('D', 155), ('L', 0)], [0.034525331874368625, ('D', 156)],
                                   [0.034525331874368625, ('D', 156), ('D', 158)],
                                   [0.034525331874368625, ('D', 156), ('D', 158), ('D', 159)],
                                   [0.034525331874368625, ('D', 156), ('D', 159)],
                                   [0.034525331874368625, ('D', 157), ('D', 159)],
                                   [0.034525331874368625, ('D', 157), ('D', 159), ('D', 160)],
                                   [0.034525331874368625, ('D', 157), ('D', 160), ('D', 161)],
                                   [0.034525331874368625, ('D', 157), ('D', 161)], [0.06666666666666667, ('D', 158)],
                                   [0.034525331874368625, ('D', 158), ('D', 159), ('D', 164), ('D', 165)],
                                   [0.034525331874368625, ('D', 158), ('D', 163)],
                                   [0.034525331874368625, ('D', 158), ('D', 163), ('D', 164)],
                                   [0.034525331874368625, ('D', 158), ('D', 165)],
                                   [0.034525331874368625, ('D', 159), ('D', 160), ('D', 165), ('D', 166)],
                                   [0.034525331874368625, ('D', 159), ('D', 164)],
                                   [0.034525331874368625, ('D', 159), ('D', 166)], [0.06666666666666667, ('D', 160)],
                                   [0.034525331874368625, ('D', 160), ('D', 161), ('D', 166), ('D', 167)],
                                   [0.034525331874368625, ('D', 160), ('D', 165)],
                                   [0.034525331874368625, ('D', 160), ('D', 167)],
                                   [0.034525331874368625, ('D', 161), ('D', 162), ('D', 167), ('L', 0)],
                                   [0.034525331874368625, ('D', 161), ('D', 162), ('L', 0)],
                                   [0.034525331874368625, ('D', 161), ('D', 166)],
                                   [0.06666666666666667, ('D', 161), ('L', 0)], [0.034525331874368625, ('D', 162)],
                                   [0.034525331874368625, ('D', 162), ('D', 167)],
                                   [0.034525331874368625, ('D', 163), ('D', 164), ('D', 168)],
                                   [0.034525331874368625, ('D', 163), ('D', 168)], [0.06666666666666667, ('D', 164)],
                                   [0.034525331874368625, ('D', 164), ('D', 165), ('D', 168), ('D', 169)],
                                   [0.034525331874368625, ('D', 164), ('D', 169)],
                                   [0.034525331874368625, ('D', 165), ('D', 166), ('D', 169), ('D', 170)],
                                   [0.034525331874368625, ('D', 165), ('D', 168)],
                                   [0.034525331874368625, ('D', 165), ('D', 170)],
                                   [0.034525331874368625, ('D', 166), ('D', 167), ('D', 170), ('D', 171)],
                                   [0.034525331874368625, ('D', 166), ('D', 169)],
                                   [0.034525331874368625, ('D', 166), ('D', 171)],
                                   [0.034525331874368625, ('D', 167), ('D', 170)],
                                   [0.034525331874368625, ('D', 167), ('D', 171), ('D', 172), ('L', 0)],
                                   [0.034525331874368625, ('D', 167), ('D', 172)],
                                   [0.034525331874368625, ('D', 168), ('D', 169), ('D', 174), ('D', 175)],
                                   [0.034525331874368625, ('D', 168), ('D', 173)],
                                   [0.034525331874368625, ('D', 168), ('D', 173), ('D', 174)],
                                   [0.034525331874368625, ('D', 168), ('D', 175)],
                                   [0.034525331874368625, ('D', 169), ('D', 170), ('D', 175), ('D', 176)],
                                   [0.034525331874368625, ('D', 169), ('D', 174)],
                                   [0.034525331874368625, ('D', 169), ('D', 176)],
                                   [0.034525331874368625, ('D', 170), ('D', 171), ('D', 176), ('D', 177)],
                                   [0.034525331874368625, ('D', 170), ('D', 175)],
                                   [0.034525331874368625, ('D', 170), ('D', 177)],
                                   [0.034525331874368625, ('D', 171), ('D', 172), ('D', 177), ('L', 0)],
                                   [0.034525331874368625, ('D', 171), ('D', 176)],
                                   [0.06666666666666667, ('D', 171), ('L', 0)],
                                   [0.034525331874368625, ('D', 172), ('D', 177)], [0.034525331874368625, ('D', 173)],
                                   [0.034525331874368625, ('D', 173), ('D', 174)], [0.06666666666666667, ('D', 174)],
                                   [0.034525331874368625, ('D', 174), ('D', 175), ('D', 178)],
                                   [0.034525331874368625, ('D', 174), ('D', 178)], [0.06666666666666667, ('D', 175)],
                                   [0.034525331874368625, ('D', 175), ('D', 176), ('D', 178)],
                                   [0.034525331874368625, ('D', 176), ('D', 177), ('D', 179)],
                                   [0.034525331874368625, ('D', 176), ('D', 178)],
                                   [0.034525331874368625, ('D', 176), ('D', 179)], [0.06666666666666667, ('D', 177)],
                                   [0.034525331874368625, ('D', 177), ('D', 179), ('L', 0)],
                                   [0.034525331874368625, ('D', 179), ('L', 0)], [0.034525331874368625, ('D', 180)],
                                   [0.034525331874368625, ('D', 180), ('D', 182)],
                                   [0.034525331874368625, ('D', 180), ('D', 182), ('D', 183)],
                                   [0.034525331874368625, ('D', 180), ('D', 183)],
                                   [0.034525331874368625, ('D', 181), ('D', 183)],
                                   [0.034525331874368625, ('D', 181), ('D', 183), ('D', 184)],
                                   [0.034525331874368625, ('D', 181), ('D', 184), ('D', 185)],
                                   [0.034525331874368625, ('D', 181), ('D', 185)], [0.06666666666666667, ('D', 182)],
                                   [0.034525331874368625, ('D', 182), ('D', 183), ('D', 188), ('D', 189)],
                                   [0.034525331874368625, ('D', 182), ('D', 187)],
                                   [0.034525331874368625, ('D', 182), ('D', 187), ('D', 188)],
                                   [0.034525331874368625, ('D', 182), ('D', 189)],
                                   [0.034525331874368625, ('D', 183), ('D', 184), ('D', 189), ('D', 190)],
                                   [0.034525331874368625, ('D', 183), ('D', 188)],
                                   [0.034525331874368625, ('D', 183), ('D', 190)], [0.06666666666666667, ('D', 184)],
                                   [0.034525331874368625, ('D', 184), ('D', 185), ('D', 190), ('D', 191)],
                                   [0.034525331874368625, ('D', 184), ('D', 189)],
                                   [0.034525331874368625, ('D', 184), ('D', 191)],
                                   [0.034525331874368625, ('D', 185), ('D', 186), ('D', 191), ('L', 0)],
                                   [0.034525331874368625, ('D', 185), ('D', 186), ('L', 0)],
                                   [0.034525331874368625, ('D', 185), ('D', 190)],
                                   [0.06666666666666667, ('D', 185), ('L', 0)], [0.034525331874368625, ('D', 186)],
                                   [0.034525331874368625, ('D', 186), ('D', 191)],
                                   [0.034525331874368625, ('D', 187), ('D', 188), ('D', 192)],
                                   [0.034525331874368625, ('D', 187), ('D', 192)], [0.06666666666666667, ('D', 188)],
                                   [0.034525331874368625, ('D', 188), ('D', 189), ('D', 192), ('D', 193)],
                                   [0.034525331874368625, ('D', 188), ('D', 193)],
                                   [0.034525331874368625, ('D', 189), ('D', 190), ('D', 193), ('D', 194)],
                                   [0.034525331874368625, ('D', 189), ('D', 192)],
                                   [0.034525331874368625, ('D', 189), ('D', 194)],
                                   [0.034525331874368625, ('D', 190), ('D', 191), ('D', 194), ('D', 195)],
                                   [0.034525331874368625, ('D', 190), ('D', 193)],
                                   [0.034525331874368625, ('D', 190), ('D', 195)],
                                   [0.034525331874368625, ('D', 191), ('D', 194)],
                                   [0.034525331874368625, ('D', 191), ('D', 195), ('D', 196), ('L', 0)],
                                   [0.034525331874368625, ('D', 191), ('D', 196)],
                                   [0.034525331874368625, ('D', 192), ('D', 193), ('D', 198), ('D', 199)],
                                   [0.034525331874368625, ('D', 192), ('D', 197)],
                                   [0.034525331874368625, ('D', 192), ('D', 197), ('D', 198)],
                                   [0.034525331874368625, ('D', 192), ('D', 199)],
                                   [0.034525331874368625, ('D', 193), ('D', 194), ('D', 199), ('D', 200)],
                                   [0.034525331874368625, ('D', 193), ('D', 198)],
                                   [0.034525331874368625, ('D', 193), ('D', 200)],
                                   [0.034525331874368625, ('D', 194), ('D', 195), ('D', 200), ('D', 201)],
                                   [0.034525331874368625, ('D', 194), ('D', 199)],
                                   [0.034525331874368625, ('D', 194), ('D', 201)],
                                   [0.034525331874368625, ('D', 195), ('D', 196), ('D', 201), ('L', 0)],
                                   [0.034525331874368625, ('D', 195), ('D', 200)],
                                   [0.06666666666666667, ('D', 195), ('L', 0)],
                                   [0.034525331874368625, ('D', 196), ('D', 201)], [0.034525331874368625, ('D', 197)],
                                   [0.034525331874368625, ('D', 197), ('D', 198)], [0.06666666666666667, ('D', 198)],
                                   [0.034525331874368625, ('D', 198), ('D', 199), ('D', 202)],
                                   [0.034525331874368625, ('D', 198), ('D', 202)], [0.06666666666666667, ('D', 199)],
                                   [0.034525331874368625, ('D', 199), ('D', 200), ('D', 202)],
                                   [0.034525331874368625, ('D', 200), ('D', 201), ('D', 203)],
                                   [0.034525331874368625, ('D', 200), ('D', 202)],
                                   [0.034525331874368625, ('D', 200), ('D', 203)], [0.06666666666666667, ('D', 201)],
                                   [0.034525331874368625, ('D', 201), ('D', 203), ('L', 0)],
                                   [0.034525331874368625, ('D', 203), ('L', 0)], [0.034525331874368625, ('D', 204)],
                                   [0.034525331874368625, ('D', 204), ('D', 206)],
                                   [0.034525331874368625, ('D', 204), ('D', 206), ('D', 207)],
                                   [0.034525331874368625, ('D', 204), ('D', 207)],
                                   [0.034525331874368625, ('D', 205), ('D', 207)],
                                   [0.034525331874368625, ('D', 205), ('D', 207), ('D', 208)],
                                   [0.034525331874368625, ('D', 205), ('D', 208), ('D', 209)],
                                   [0.034525331874368625, ('D', 205), ('D', 209)], [0.06666666666666667, ('D', 206)],
                                   [0.034525331874368625, ('D', 206), ('D', 207), ('D', 212), ('D', 213)],
                                   [0.034525331874368625, ('D', 206), ('D', 211)],
                                   [0.034525331874368625, ('D', 206), ('D', 211), ('D', 212)],
                                   [0.034525331874368625, ('D', 206), ('D', 213)],
                                   [0.034525331874368625, ('D', 207), ('D', 208), ('D', 213), ('D', 214)],
                                   [0.034525331874368625, ('D', 207), ('D', 212)],
                                   [0.034525331874368625, ('D', 207), ('D', 214)], [0.06666666666666667, ('D', 208)],
                                   [0.034525331874368625, ('D', 208), ('D', 209), ('D', 214), ('D', 215)],
                                   [0.034525331874368625, ('D', 208), ('D', 213)],
                                   [0.034525331874368625, ('D', 208), ('D', 215)],
                                   [0.034525331874368625, ('D', 209), ('D', 210), ('D', 215), ('L', 0)],
                                   [0.034525331874368625, ('D', 209), ('D', 210), ('L', 0)],
                                   [0.034525331874368625, ('D', 209), ('D', 214)],
                                   [0.06666666666666667, ('D', 209), ('L', 0)], [0.034525331874368625, ('D', 210)],
                                   [0.034525331874368625, ('D', 210), ('D', 215)],
                                   [0.034525331874368625, ('D', 211), ('D', 212), ('D', 216)],
                                   [0.034525331874368625, ('D', 211), ('D', 216)], [0.06666666666666667, ('D', 212)],
                                   [0.034525331874368625, ('D', 212), ('D', 213), ('D', 216), ('D', 217)],
                                   [0.034525331874368625, ('D', 212), ('D', 217)],
                                   [0.034525331874368625, ('D', 213), ('D', 214), ('D', 217), ('D', 218)],
                                   [0.034525331874368625, ('D', 213), ('D', 216)],
                                   [0.034525331874368625, ('D', 213), ('D', 218)],
                                   [0.034525331874368625, ('D', 214), ('D', 215), ('D', 218), ('D', 219)],
                                   [0.034525331874368625, ('D', 214), ('D', 217)],
                                   [0.034525331874368625, ('D', 214), ('D', 219)],
                                   [0.034525331874368625, ('D', 215), ('D', 218)],
                                   [0.034525331874368625, ('D', 215), ('D', 219), ('D', 220), ('L', 0)],
                                   [0.034525331874368625, ('D', 215), ('D', 220)],
                                   [0.034525331874368625, ('D', 216), ('D', 217), ('D', 222), ('D', 223)],
                                   [0.034525331874368625, ('D', 216), ('D', 221)],
                                   [0.034525331874368625, ('D', 216), ('D', 221), ('D', 222)],
                                   [0.034525331874368625, ('D', 216), ('D', 223)],
                                   [0.034525331874368625, ('D', 217), ('D', 218), ('D', 223), ('D', 224)],
                                   [0.034525331874368625, ('D', 217), ('D', 222)],
                                   [0.034525331874368625, ('D', 217), ('D', 224)],
                                   [0.034525331874368625, ('D', 218), ('D', 219), ('D', 224), ('D', 225)],
                                   [0.034525331874368625, ('D', 218), ('D', 223)],
                                   [0.034525331874368625, ('D', 218), ('D', 225)],
                                   [0.034525331874368625, ('D', 219), ('D', 220), ('D', 225), ('L', 0)],
                                   [0.034525331874368625, ('D', 219), ('D', 224)],
                                   [0.06666666666666667, ('D', 219), ('L', 0)],
                                   [0.034525331874368625, ('D', 220), ('D', 225)], [0.034525331874368625, ('D', 221)],
                                   [0.034525331874368625, ('D', 221), ('D', 222)], [0.06666666666666667, ('D', 222)],
                                   [0.034525331874368625, ('D', 222), ('D', 223), ('D', 226)],
                                   [0.034525331874368625, ('D', 222), ('D', 226)], [0.06666666666666667, ('D', 223)],
                                   [0.034525331874368625, ('D', 223), ('D', 224), ('D', 226)],
                                   [0.034525331874368625, ('D', 224), ('D', 225), ('D', 227)],
                                   [0.034525331874368625, ('D', 224), ('D', 226)],
                                   [0.034525331874368625, ('D', 224), ('D', 227)], [0.06666666666666667, ('D', 225)],
                                   [0.034525331874368625, ('D', 225), ('D', 227), ('L', 0)],
                                   [0.034525331874368625, ('D', 227), ('L', 0)], [0.034525331874368625, ('D', 228)],
                                   [0.034525331874368625, ('D', 228), ('D', 230)],
                                   [0.034525331874368625, ('D', 228), ('D', 230), ('D', 231)],
                                   [0.034525331874368625, ('D', 228), ('D', 231)],
                                   [0.034525331874368625, ('D', 229), ('D', 231)],
                                   [0.034525331874368625, ('D', 229), ('D', 231), ('D', 232)],
                                   [0.034525331874368625, ('D', 229), ('D', 232), ('D', 233)],
                                   [0.034525331874368625, ('D', 229), ('D', 233)], [0.06666666666666667, ('D', 230)],
                                   [0.034525331874368625, ('D', 230), ('D', 231), ('D', 236), ('D', 237)],
                                   [0.034525331874368625, ('D', 230), ('D', 235)],
                                   [0.034525331874368625, ('D', 230), ('D', 235), ('D', 236)],
                                   [0.034525331874368625, ('D', 230), ('D', 237)],
                                   [0.034525331874368625, ('D', 231), ('D', 232), ('D', 237), ('D', 238)],
                                   [0.034525331874368625, ('D', 231), ('D', 236)],
                                   [0.034525331874368625, ('D', 231), ('D', 238)], [0.06666666666666667, ('D', 232)],
                                   [0.034525331874368625, ('D', 232), ('D', 233), ('D', 238), ('D', 239)],
                                   [0.034525331874368625, ('D', 232), ('D', 237)],
                                   [0.034525331874368625, ('D', 232), ('D', 239)],
                                   [0.034525331874368625, ('D', 233), ('D', 234), ('D', 239), ('L', 0)],
                                   [0.034525331874368625, ('D', 233), ('D', 234), ('L', 0)],
                                   [0.034525331874368625, ('D', 233), ('D', 238)],
                                   [0.06666666666666667, ('D', 233), ('L', 0)], [0.034525331874368625, ('D', 234)],
                                   [0.034525331874368625, ('D', 234), ('D', 239)],
                                   [0.034525331874368625, ('D', 235), ('D', 236), ('D', 240)],
                                   [0.034525331874368625, ('D', 235), ('D', 240)], [0.06666666666666667, ('D', 236)],
                                   [0.034525331874368625, ('D', 236), ('D', 237), ('D', 240), ('D', 241)],
                                   [0.034525331874368625, ('D', 236), ('D', 241)],
                                   [0.034525331874368625, ('D', 237), ('D', 238), ('D', 241), ('D', 242)],
                                   [0.034525331874368625, ('D', 237), ('D', 240)],
                                   [0.034525331874368625, ('D', 237), ('D', 242)],
                                   [0.034525331874368625, ('D', 238), ('D', 239), ('D', 242), ('D', 243)],
                                   [0.034525331874368625, ('D', 238), ('D', 241)],
                                   [0.034525331874368625, ('D', 238), ('D', 243)],
                                   [0.034525331874368625, ('D', 239), ('D', 242)],
                                   [0.034525331874368625, ('D', 239), ('D', 243), ('D', 244), ('L', 0)],
                                   [0.034525331874368625, ('D', 239), ('D', 244)],
                                   [0.034525331874368625, ('D', 240), ('D', 241), ('D', 246), ('D', 247)],
                                   [0.034525331874368625, ('D', 240), ('D', 245)],
                                   [0.034525331874368625, ('D', 240), ('D', 245), ('D', 246)],
                                   [0.034525331874368625, ('D', 240), ('D', 247)],
                                   [0.034525331874368625, ('D', 241), ('D', 242), ('D', 247), ('D', 248)],
                                   [0.034525331874368625, ('D', 241), ('D', 246)],
                                   [0.034525331874368625, ('D', 241), ('D', 248)],
                                   [0.034525331874368625, ('D', 242), ('D', 243), ('D', 248), ('D', 249)],
                                   [0.034525331874368625, ('D', 242), ('D', 247)],
                                   [0.034525331874368625, ('D', 242), ('D', 249)],
                                   [0.034525331874368625, ('D', 243), ('D', 244), ('D', 249), ('L', 0)],
                                   [0.034525331874368625, ('D', 243), ('D', 248)],
                                   [0.06666666666666667, ('D', 243), ('L', 0)],
                                   [0.034525331874368625, ('D', 244), ('D', 249)], [0.034525331874368625, ('D', 245)],
                                   [0.034525331874368625, ('D', 245), ('D', 246)], [0.06666666666666667, ('D', 246)],
                                   [0.034525331874368625, ('D', 246), ('D', 247), ('D', 250)],
                                   [0.034525331874368625, ('D', 246), ('D', 250)], [0.06666666666666667, ('D', 247)],
                                   [0.034525331874368625, ('D', 247), ('D', 248), ('D', 250)],
                                   [0.034525331874368625, ('D', 248), ('D', 249), ('D', 251)],
                                   [0.034525331874368625, ('D', 248), ('D', 250)],
                                   [0.034525331874368625, ('D', 248), ('D', 251)], [0.06666666666666667, ('D', 249)],
                                   [0.034525331874368625, ('D', 249), ('D', 251), ('L', 0)],
                                   [0.034525331874368625, ('D', 251), ('L', 0)], [0.034525331874368625, ('D', 252)],
                                   [0.034525331874368625, ('D', 252), ('D', 254)],
                                   [0.034525331874368625, ('D', 252), ('D', 254), ('D', 255)],
                                   [0.034525331874368625, ('D', 252), ('D', 255)],
                                   [0.034525331874368625, ('D', 253), ('D', 255)],
                                   [0.034525331874368625, ('D', 253), ('D', 255), ('D', 256)],
                                   [0.034525331874368625, ('D', 253), ('D', 256), ('D', 257)],
                                   [0.034525331874368625, ('D', 253), ('D', 257)], [0.06666666666666667, ('D', 254)],
                                   [0.034525331874368625, ('D', 254), ('D', 255), ('D', 260), ('D', 261)],
                                   [0.034525331874368625, ('D', 254), ('D', 259)],
                                   [0.034525331874368625, ('D', 254), ('D', 259), ('D', 260)],
                                   [0.034525331874368625, ('D', 254), ('D', 261)],
                                   [0.034525331874368625, ('D', 255), ('D', 256), ('D', 261), ('D', 262)],
                                   [0.034525331874368625, ('D', 255), ('D', 260)],
                                   [0.034525331874368625, ('D', 255), ('D', 262)], [0.06666666666666667, ('D', 256)],
                                   [0.034525331874368625, ('D', 256), ('D', 257), ('D', 262), ('D', 263)],
                                   [0.034525331874368625, ('D', 256), ('D', 261)],
                                   [0.034525331874368625, ('D', 256), ('D', 263)],
                                   [0.034525331874368625, ('D', 257), ('D', 258), ('D', 263), ('L', 0)],
                                   [0.034525331874368625, ('D', 257), ('D', 258), ('L', 0)],
                                   [0.034525331874368625, ('D', 257), ('D', 262)],
                                   [0.06666666666666667, ('D', 257), ('L', 0)], [0.034525331874368625, ('D', 258)],
                                   [0.034525331874368625, ('D', 258), ('D', 263)],
                                   [0.034525331874368625, ('D', 259), ('D', 260), ('D', 264)],
                                   [0.034525331874368625, ('D', 259), ('D', 264)], [0.06666666666666667, ('D', 260)],
                                   [0.034525331874368625, ('D', 260), ('D', 261), ('D', 264), ('D', 265)],
                                   [0.034525331874368625, ('D', 260), ('D', 265)],
                                   [0.034525331874368625, ('D', 261), ('D', 262), ('D', 265), ('D', 266)],
                                   [0.034525331874368625, ('D', 261), ('D', 264)],
                                   [0.034525331874368625, ('D', 261), ('D', 266)],
                                   [0.034525331874368625, ('D', 262), ('D', 263), ('D', 266), ('D', 267)],
                                   [0.034525331874368625, ('D', 262), ('D', 265)],
                                   [0.034525331874368625, ('D', 262), ('D', 267)],
                                   [0.034525331874368625, ('D', 263), ('D', 266)],
                                   [0.034525331874368625, ('D', 263), ('D', 267), ('D', 268), ('L', 0)],
                                   [0.034525331874368625, ('D', 263), ('D', 268)],
                                   [0.034525331874368625, ('D', 264), ('D', 265), ('D', 270), ('D', 271)],
                                   [0.034525331874368625, ('D', 264), ('D', 269)],
                                   [0.034525331874368625, ('D', 264), ('D', 269), ('D', 270)],
                                   [0.034525331874368625, ('D', 264), ('D', 271)],
                                   [0.034525331874368625, ('D', 265), ('D', 266), ('D', 271), ('D', 272)],
                                   [0.034525331874368625, ('D', 265), ('D', 270)],
                                   [0.034525331874368625, ('D', 265), ('D', 272)],
                                   [0.034525331874368625, ('D', 266), ('D', 267), ('D', 272), ('D', 273)],
                                   [0.034525331874368625, ('D', 266), ('D', 271)],
                                   [0.034525331874368625, ('D', 266), ('D', 273)],
                                   [0.034525331874368625, ('D', 267), ('D', 268), ('D', 273), ('L', 0)],
                                   [0.034525331874368625, ('D', 267), ('D', 272)],
                                   [0.06666666666666667, ('D', 267), ('L', 0)],
                                   [0.034525331874368625, ('D', 268), ('D', 273)], [0.034525331874368625, ('D', 269)],
                                   [0.034525331874368625, ('D', 269), ('D', 270)], [0.06666666666666667, ('D', 270)],
                                   [0.034525331874368625, ('D', 270), ('D', 271), ('D', 274)],
                                   [0.034525331874368625, ('D', 270), ('D', 274)], [0.06666666666666667, ('D', 271)],
                                   [0.034525331874368625, ('D', 271), ('D', 272), ('D', 274)],
                                   [0.034525331874368625, ('D', 272), ('D', 273), ('D', 275)],
                                   [0.034525331874368625, ('D', 272), ('D', 274)],
                                   [0.034525331874368625, ('D', 272), ('D', 275)], [0.06666666666666667, ('D', 273)],
                                   [0.034525331874368625, ('D', 273), ('D', 275), ('L', 0)],
                                   [0.034525331874368625, ('D', 275), ('L', 0)], [0.034525331874368625, ('D', 276)],
                                   [0.034525331874368625, ('D', 276), ('D', 278)],
                                   [0.034525331874368625, ('D', 276), ('D', 278), ('D', 279)],
                                   [0.034525331874368625, ('D', 276), ('D', 279)],
                                   [0.034525331874368625, ('D', 277), ('D', 279)],
                                   [0.034525331874368625, ('D', 277), ('D', 279), ('D', 280)],
                                   [0.034525331874368625, ('D', 277), ('D', 280), ('D', 281)],
                                   [0.034525331874368625, ('D', 277), ('D', 281)], [0.06666666666666667, ('D', 278)],
                                   [0.034525331874368625, ('D', 278), ('D', 279), ('D', 284), ('D', 285)],
                                   [0.034525331874368625, ('D', 278), ('D', 283)],
                                   [0.034525331874368625, ('D', 278), ('D', 283), ('D', 284)],
                                   [0.034525331874368625, ('D', 278), ('D', 285)],
                                   [0.034525331874368625, ('D', 279), ('D', 280), ('D', 285), ('D', 286)],
                                   [0.034525331874368625, ('D', 279), ('D', 284)],
                                   [0.034525331874368625, ('D', 279), ('D', 286)], [0.06666666666666667, ('D', 280)],
                                   [0.034525331874368625, ('D', 280), ('D', 281), ('D', 286), ('D', 287)],
                                   [0.034525331874368625, ('D', 280), ('D', 285)],
                                   [0.034525331874368625, ('D', 280), ('D', 287)],
                                   [0.034525331874368625, ('D', 281), ('D', 282), ('D', 287), ('L', 0)],
                                   [0.034525331874368625, ('D', 281), ('D', 282), ('L', 0)],
                                   [0.034525331874368625, ('D', 281), ('D', 286)],
                                   [0.06666666666666667, ('D', 281), ('L', 0)], [0.034525331874368625, ('D', 282)],
                                   [0.034525331874368625, ('D', 282), ('D', 287)],
                                   [0.034525331874368625, ('D', 283), ('D', 284), ('D', 288)],
                                   [0.034525331874368625, ('D', 283), ('D', 288)], [0.06666666666666667, ('D', 284)],
                                   [0.034525331874368625, ('D', 284), ('D', 285), ('D', 288), ('D', 289)],
                                   [0.034525331874368625, ('D', 284), ('D', 289)],
                                   [0.034525331874368625, ('D', 285), ('D', 286), ('D', 289), ('D', 290)],
                                   [0.034525331874368625, ('D', 285), ('D', 288)],
                                   [0.034525331874368625, ('D', 285), ('D', 290)],
                                   [0.034525331874368625, ('D', 286), ('D', 287), ('D', 290), ('D', 291)],
                                   [0.034525331874368625, ('D', 286), ('D', 289)],
                                   [0.034525331874368625, ('D', 286), ('D', 291)],
                                   [0.034525331874368625, ('D', 287), ('D', 290)],
                                   [0.034525331874368625, ('D', 287), ('D', 291), ('D', 292), ('L', 0)],
                                   [0.034525331874368625, ('D', 287), ('D', 292)],
                                   [0.034525331874368625, ('D', 288), ('D', 289), ('D', 294), ('D', 295)],
                                   [0.034525331874368625, ('D', 288), ('D', 293)],
                                   [0.034525331874368625, ('D', 288), ('D', 293), ('D', 294)],
                                   [0.034525331874368625, ('D', 288), ('D', 295)],
                                   [0.034525331874368625, ('D', 289), ('D', 290), ('D', 295), ('D', 296)],
                                   [0.034525331874368625, ('D', 289), ('D', 294)],
                                   [0.034525331874368625, ('D', 289), ('D', 296)],
                                   [0.034525331874368625, ('D', 290), ('D', 291), ('D', 296), ('D', 297)],
                                   [0.034525331874368625, ('D', 290), ('D', 295)],
                                   [0.034525331874368625, ('D', 290), ('D', 297)],
                                   [0.034525331874368625, ('D', 291), ('D', 292), ('D', 297), ('L', 0)],
                                   [0.034525331874368625, ('D', 291), ('D', 296)],
                                   [0.06666666666666667, ('D', 291), ('L', 0)],
                                   [0.034525331874368625, ('D', 292), ('D', 297)], [0.034525331874368625, ('D', 293)],
                                   [0.034525331874368625, ('D', 293), ('D', 294)], [0.06666666666666667, ('D', 294)],
                                   [0.034525331874368625, ('D', 294), ('D', 295), ('D', 298)],
                                   [0.034525331874368625, ('D', 294), ('D', 298)], [0.06666666666666667, ('D', 295)],
                                   [0.034525331874368625, ('D', 295), ('D', 296), ('D', 298)],
                                   [0.034525331874368625, ('D', 296), ('D', 297), ('D', 299)],
                                   [0.034525331874368625, ('D', 296), ('D', 298)],
                                   [0.034525331874368625, ('D', 296), ('D', 299)], [0.06666666666666667, ('D', 297)],
                                   [0.034525331874368625, ('D', 297), ('D', 299), ('L', 0)],
                                   [0.034525331874368625, ('D', 299), ('L', 0)], [0.034525331874368625, ('D', 300)],
                                   [0.034525331874368625, ('D', 300), ('D', 302)],
                                   [0.034525331874368625, ('D', 300), ('D', 302), ('D', 303)],
                                   [0.034525331874368625, ('D', 300), ('D', 303)],
                                   [0.034525331874368625, ('D', 301), ('D', 303)],
                                   [0.034525331874368625, ('D', 301), ('D', 303), ('D', 304)],
                                   [0.034525331874368625, ('D', 301), ('D', 304), ('D', 305)],
                                   [0.034525331874368625, ('D', 301), ('D', 305)], [0.06666666666666667, ('D', 302)],
                                   [0.034525331874368625, ('D', 302), ('D', 303), ('D', 308), ('D', 309)],
                                   [0.034525331874368625, ('D', 302), ('D', 307)],
                                   [0.034525331874368625, ('D', 302), ('D', 307), ('D', 308)],
                                   [0.034525331874368625, ('D', 302), ('D', 309)],
                                   [0.034525331874368625, ('D', 303), ('D', 304), ('D', 309), ('D', 310)],
                                   [0.034525331874368625, ('D', 303), ('D', 308)],
                                   [0.034525331874368625, ('D', 303), ('D', 310)], [0.06666666666666667, ('D', 304)],
                                   [0.034525331874368625, ('D', 304), ('D', 305), ('D', 310), ('D', 311)],
                                   [0.034525331874368625, ('D', 304), ('D', 309)],
                                   [0.034525331874368625, ('D', 304), ('D', 311)],
                                   [0.034525331874368625, ('D', 305), ('D', 306), ('D', 311), ('L', 0)],
                                   [0.034525331874368625, ('D', 305), ('D', 306), ('L', 0)],
                                   [0.034525331874368625, ('D', 305), ('D', 310)],
                                   [0.06666666666666667, ('D', 305), ('L', 0)], [0.034525331874368625, ('D', 306)],
                                   [0.034525331874368625, ('D', 306), ('D', 311)],
                                   [0.034525331874368625, ('D', 307), ('D', 308), ('D', 312)],
                                   [0.034525331874368625, ('D', 307), ('D', 312)], [0.06666666666666667, ('D', 308)],
                                   [0.034525331874368625, ('D', 308), ('D', 309), ('D', 312), ('D', 313)],
                                   [0.034525331874368625, ('D', 308), ('D', 313)],
                                   [0.034525331874368625, ('D', 309), ('D', 310), ('D', 313), ('D', 314)],
                                   [0.034525331874368625, ('D', 309), ('D', 312)],
                                   [0.034525331874368625, ('D', 309), ('D', 314)],
                                   [0.034525331874368625, ('D', 310), ('D', 311), ('D', 314), ('D', 315)],
                                   [0.034525331874368625, ('D', 310), ('D', 313)],
                                   [0.034525331874368625, ('D', 310), ('D', 315)],
                                   [0.034525331874368625, ('D', 311), ('D', 314)],
                                   [0.034525331874368625, ('D', 311), ('D', 315), ('D', 316), ('L', 0)],
                                   [0.034525331874368625, ('D', 311), ('D', 316)],
                                   [0.034525331874368625, ('D', 312), ('D', 313), ('D', 318), ('D', 319)],
                                   [0.034525331874368625, ('D', 312), ('D', 317)],
                                   [0.034525331874368625, ('D', 312), ('D', 317), ('D', 318)],
                                   [0.034525331874368625, ('D', 312), ('D', 319)],
                                   [0.034525331874368625, ('D', 313), ('D', 314), ('D', 319), ('D', 320)],
                                   [0.034525331874368625, ('D', 313), ('D', 318)],
                                   [0.034525331874368625, ('D', 313), ('D', 320)],
                                   [0.034525331874368625, ('D', 314), ('D', 315), ('D', 320), ('D', 321)],
                                   [0.034525331874368625, ('D', 314), ('D', 319)],
                                   [0.034525331874368625, ('D', 314), ('D', 321)],
                                   [0.034525331874368625, ('D', 315), ('D', 316), ('D', 321), ('L', 0)],
                                   [0.034525331874368625, ('D', 315), ('D', 320)],
                                   [0.06666666666666667, ('D', 315), ('L', 0)],
                                   [0.034525331874368625, ('D', 316), ('D', 321)], [0.034525331874368625, ('D', 317)],
                                   [0.034525331874368625, ('D', 317), ('D', 318)], [0.06666666666666667, ('D', 318)],
                                   [0.034525331874368625, ('D', 318), ('D', 319), ('D', 322)],
                                   [0.034525331874368625, ('D', 318), ('D', 322)], [0.06666666666666667, ('D', 319)],
                                   [0.034525331874368625, ('D', 319), ('D', 320), ('D', 322)],
                                   [0.034525331874368625, ('D', 320), ('D', 321), ('D', 323)],
                                   [0.034525331874368625, ('D', 320), ('D', 322)],
                                   [0.034525331874368625, ('D', 320), ('D', 323)], [0.06666666666666667, ('D', 321)],
                                   [0.034525331874368625, ('D', 321), ('D', 323), ('L', 0)],
                                   [0.034525331874368625, ('D', 323), ('L', 0)], [0.034525331874368625, ('D', 324)],
                                   [0.034525331874368625, ('D', 324), ('D', 326)],
                                   [0.034525331874368625, ('D', 324), ('D', 326), ('D', 327)],
                                   [0.034525331874368625, ('D', 324), ('D', 327)],
                                   [0.034525331874368625, ('D', 325), ('D', 327)],
                                   [0.034525331874368625, ('D', 325), ('D', 327), ('D', 328)],
                                   [0.034525331874368625, ('D', 325), ('D', 328), ('D', 329)],
                                   [0.034525331874368625, ('D', 325), ('D', 329)], [0.06666666666666667, ('D', 326)],
                                   [0.034525331874368625, ('D', 326), ('D', 327), ('D', 332), ('D', 333)],
                                   [0.034525331874368625, ('D', 326), ('D', 331)],
                                   [0.034525331874368625, ('D', 326), ('D', 331), ('D', 332)],
                                   [0.034525331874368625, ('D', 326), ('D', 333)],
                                   [0.034525331874368625, ('D', 327), ('D', 328), ('D', 333), ('D', 334)],
                                   [0.034525331874368625, ('D', 327), ('D', 332)],
                                   [0.034525331874368625, ('D', 327), ('D', 334)], [0.06666666666666667, ('D', 328)],
                                   [0.034525331874368625, ('D', 328), ('D', 329), ('D', 334), ('D', 335)],
                                   [0.034525331874368625, ('D', 328), ('D', 333)],
                                   [0.034525331874368625, ('D', 328), ('D', 335)],
                                   [0.034525331874368625, ('D', 329), ('D', 330), ('D', 335), ('L', 0)],
                                   [0.034525331874368625, ('D', 329), ('D', 330), ('L', 0)],
                                   [0.034525331874368625, ('D', 329), ('D', 334)],
                                   [0.06666666666666667, ('D', 329), ('L', 0)], [0.034525331874368625, ('D', 330)],
                                   [0.034525331874368625, ('D', 330), ('D', 335)],
                                   [0.034525331874368625, ('D', 331), ('D', 332), ('D', 336)],
                                   [0.034525331874368625, ('D', 331), ('D', 336)], [0.06666666666666667, ('D', 332)],
                                   [0.034525331874368625, ('D', 332), ('D', 333), ('D', 336), ('D', 337)],
                                   [0.034525331874368625, ('D', 332), ('D', 337)],
                                   [0.034525331874368625, ('D', 333), ('D', 334), ('D', 337), ('D', 338)],
                                   [0.034525331874368625, ('D', 333), ('D', 336)],
                                   [0.034525331874368625, ('D', 333), ('D', 338)],
                                   [0.034525331874368625, ('D', 334), ('D', 335), ('D', 338), ('D', 339)],
                                   [0.034525331874368625, ('D', 334), ('D', 337)],
                                   [0.034525331874368625, ('D', 334), ('D', 339)],
                                   [0.034525331874368625, ('D', 335), ('D', 338)],
                                   [0.034525331874368625, ('D', 335), ('D', 339), ('D', 340), ('L', 0)],
                                   [0.034525331874368625, ('D', 335), ('D', 340)],
                                   [0.034525331874368625, ('D', 336), ('D', 337), ('D', 342), ('D', 343)],
                                   [0.034525331874368625, ('D', 336), ('D', 341)],
                                   [0.034525331874368625, ('D', 336), ('D', 341), ('D', 342)],
                                   [0.034525331874368625, ('D', 336), ('D', 343)],
                                   [0.034525331874368625, ('D', 337), ('D', 338), ('D', 343), ('D', 344)],
                                   [0.034525331874368625, ('D', 337), ('D', 342)],
                                   [0.034525331874368625, ('D', 337), ('D', 344)],
                                   [0.034525331874368625, ('D', 338), ('D', 339), ('D', 344), ('D', 345)],
                                   [0.034525331874368625, ('D', 338), ('D', 343)],
                                   [0.034525331874368625, ('D', 338), ('D', 345)],
                                   [0.034525331874368625, ('D', 339), ('D', 340), ('D', 345), ('L', 0)],
                                   [0.034525331874368625, ('D', 339), ('D', 344)],
                                   [0.06666666666666667, ('D', 339), ('L', 0)],
                                   [0.034525331874368625, ('D', 340), ('D', 345)], [0.034525331874368625, ('D', 341)],
                                   [0.034525331874368625, ('D', 341), ('D', 342)], [0.06666666666666667, ('D', 342)],
                                   [0.034525331874368625, ('D', 342), ('D', 343), ('D', 346)],
                                   [0.034525331874368625, ('D', 342), ('D', 346)], [0.06666666666666667, ('D', 343)],
                                   [0.034525331874368625, ('D', 343), ('D', 344), ('D', 346)],
                                   [0.034525331874368625, ('D', 344), ('D', 345), ('D', 347)],
                                   [0.034525331874368625, ('D', 344), ('D', 346)],
                                   [0.034525331874368625, ('D', 344), ('D', 347)], [0.06666666666666667, ('D', 345)],
                                   [0.034525331874368625, ('D', 345), ('D', 347), ('L', 0)],
                                   [0.034525331874368625, ('D', 347), ('L', 0)], [0.034525331874368625, ('D', 348)],
                                   [0.034525331874368625, ('D', 348), ('D', 350)],
                                   [0.034525331874368625, ('D', 348), ('D', 350), ('D', 351)],
                                   [0.034525331874368625, ('D', 348), ('D', 351)],
                                   [0.034525331874368625, ('D', 349), ('D', 351)],
                                   [0.034525331874368625, ('D', 349), ('D', 351), ('D', 352)],
                                   [0.034525331874368625, ('D', 349), ('D', 352), ('D', 353)],
                                   [0.034525331874368625, ('D', 349), ('D', 353)], [0.06666666666666667, ('D', 350)],
                                   [0.034525331874368625, ('D', 350), ('D', 351), ('D', 356), ('D', 357)],
                                   [0.034525331874368625, ('D', 350), ('D', 355)],
                                   [0.034525331874368625, ('D', 350), ('D', 355), ('D', 356)],
                                   [0.034525331874368625, ('D', 350), ('D', 357)],
                                   [0.034525331874368625, ('D', 351), ('D', 352), ('D', 357), ('D', 358)],
                                   [0.034525331874368625, ('D', 351), ('D', 356)],
                                   [0.034525331874368625, ('D', 351), ('D', 358)], [0.06666666666666667, ('D', 352)],
                                   [0.034525331874368625, ('D', 352), ('D', 353), ('D', 358), ('D', 359)],
                                   [0.034525331874368625, ('D', 352), ('D', 357)],
                                   [0.034525331874368625, ('D', 352), ('D', 359)],
                                   [0.034525331874368625, ('D', 353), ('D', 354), ('D', 359), ('L', 0)],
                                   [0.034525331874368625, ('D', 353), ('D', 354), ('L', 0)],
                                   [0.034525331874368625, ('D', 353), ('D', 358)],
                                   [0.06666666666666667, ('D', 353), ('L', 0)], [0.034525331874368625, ('D', 354)],
                                   [0.034525331874368625, ('D', 354), ('D', 359)],
                                   [0.034525331874368625, ('D', 355), ('D', 356), ('D', 360)],
                                   [0.034525331874368625, ('D', 355), ('D', 360)], [0.06666666666666667, ('D', 356)],
                                   [0.034525331874368625, ('D', 356), ('D', 357), ('D', 360), ('D', 361)],
                                   [0.034525331874368625, ('D', 356), ('D', 361)],
                                   [0.034525331874368625, ('D', 357), ('D', 358), ('D', 361), ('D', 362)],
                                   [0.034525331874368625, ('D', 357), ('D', 360)],
                                   [0.034525331874368625, ('D', 357), ('D', 362)],
                                   [0.034525331874368625, ('D', 358), ('D', 359), ('D', 362), ('D', 363)],
                                   [0.034525331874368625, ('D', 358), ('D', 361)],
                                   [0.034525331874368625, ('D', 358), ('D', 363)],
                                   [0.034525331874368625, ('D', 359), ('D', 362)],
                                   [0.034525331874368625, ('D', 359), ('D', 363), ('D', 364), ('L', 0)],
                                   [0.034525331874368625, ('D', 359), ('D', 364)],
                                   [0.034525331874368625, ('D', 360), ('D', 361), ('D', 366), ('D', 367)],
                                   [0.034525331874368625, ('D', 360), ('D', 365)],
                                   [0.034525331874368625, ('D', 360), ('D', 365), ('D', 366)],
                                   [0.034525331874368625, ('D', 360), ('D', 367)],
                                   [0.034525331874368625, ('D', 361), ('D', 362), ('D', 367), ('D', 368)],
                                   [0.034525331874368625, ('D', 361), ('D', 366)],
                                   [0.034525331874368625, ('D', 361), ('D', 368)],
                                   [0.034525331874368625, ('D', 362), ('D', 363), ('D', 368), ('D', 369)],
                                   [0.034525331874368625, ('D', 362), ('D', 367)],
                                   [0.034525331874368625, ('D', 362), ('D', 369)],
                                   [0.034525331874368625, ('D', 363), ('D', 364), ('D', 369), ('L', 0)],
                                   [0.034525331874368625, ('D', 363), ('D', 368)],
                                   [0.06666666666666667, ('D', 363), ('L', 0)],
                                   [0.034525331874368625, ('D', 364), ('D', 369)], [0.034525331874368625, ('D', 365)],
                                   [0.034525331874368625, ('D', 365), ('D', 366)], [0.06666666666666667, ('D', 366)],
                                   [0.034525331874368625, ('D', 366), ('D', 367), ('D', 370)],
                                   [0.034525331874368625, ('D', 366), ('D', 370)], [0.06666666666666667, ('D', 367)],
                                   [0.034525331874368625, ('D', 367), ('D', 368), ('D', 370)],
                                   [0.034525331874368625, ('D', 368), ('D', 369), ('D', 371)],
                                   [0.034525331874368625, ('D', 368), ('D', 370)],
                                   [0.034525331874368625, ('D', 368), ('D', 371)], [0.06666666666666667, ('D', 369)],
                                   [0.034525331874368625, ('D', 369), ('D', 371), ('L', 0)],
                                   [0.034525331874368625, ('D', 371), ('L', 0)], [0.034525331874368625, ('D', 372)],
                                   [0.034525331874368625, ('D', 372), ('D', 374)],
                                   [0.034525331874368625, ('D', 372), ('D', 374), ('D', 375)],
                                   [0.034525331874368625, ('D', 372), ('D', 375)],
                                   [0.034525331874368625, ('D', 373), ('D', 375)],
                                   [0.034525331874368625, ('D', 373), ('D', 375), ('D', 376)],
                                   [0.034525331874368625, ('D', 373), ('D', 376), ('D', 377)],
                                   [0.034525331874368625, ('D', 373), ('D', 377)], [0.06666666666666667, ('D', 374)],
                                   [0.034525331874368625, ('D', 374), ('D', 375), ('D', 380), ('D', 381)],
                                   [0.034525331874368625, ('D', 374), ('D', 379)],
                                   [0.034525331874368625, ('D', 374), ('D', 379), ('D', 380)],
                                   [0.034525331874368625, ('D', 374), ('D', 381)],
                                   [0.034525331874368625, ('D', 375), ('D', 376), ('D', 381), ('D', 382)],
                                   [0.034525331874368625, ('D', 375), ('D', 380)],
                                   [0.034525331874368625, ('D', 375), ('D', 382)], [0.06666666666666667, ('D', 376)],
                                   [0.034525331874368625, ('D', 376), ('D', 377), ('D', 382), ('D', 383)],
                                   [0.034525331874368625, ('D', 376), ('D', 381)],
                                   [0.034525331874368625, ('D', 376), ('D', 383)],
                                   [0.034525331874368625, ('D', 377), ('D', 378), ('D', 383), ('L', 0)],
                                   [0.034525331874368625, ('D', 377), ('D', 378), ('L', 0)],
                                   [0.034525331874368625, ('D', 377), ('D', 382)],
                                   [0.06666666666666667, ('D', 377), ('L', 0)], [0.034525331874368625, ('D', 378)],
                                   [0.034525331874368625, ('D', 378), ('D', 383)],
                                   [0.034525331874368625, ('D', 379), ('D', 380), ('D', 384)],
                                   [0.034525331874368625, ('D', 379), ('D', 384)], [0.06666666666666667, ('D', 380)],
                                   [0.034525331874368625, ('D', 380), ('D', 381), ('D', 384), ('D', 385)],
                                   [0.034525331874368625, ('D', 380), ('D', 385)],
                                   [0.034525331874368625, ('D', 381), ('D', 382), ('D', 385), ('D', 386)],
                                   [0.034525331874368625, ('D', 381), ('D', 384)],
                                   [0.034525331874368625, ('D', 381), ('D', 386)],
                                   [0.034525331874368625, ('D', 382), ('D', 383), ('D', 386), ('D', 387)],
                                   [0.034525331874368625, ('D', 382), ('D', 385)],
                                   [0.034525331874368625, ('D', 382), ('D', 387)],
                                   [0.034525331874368625, ('D', 383), ('D', 386)],
                                   [0.034525331874368625, ('D', 383), ('D', 387), ('D', 388), ('L', 0)],
                                   [0.034525331874368625, ('D', 383), ('D', 388)],
                                   [0.034525331874368625, ('D', 384), ('D', 385), ('D', 390), ('D', 391)],
                                   [0.034525331874368625, ('D', 384), ('D', 389)],
                                   [0.034525331874368625, ('D', 384), ('D', 389), ('D', 390)],
                                   [0.034525331874368625, ('D', 384), ('D', 391)],
                                   [0.034525331874368625, ('D', 385), ('D', 386), ('D', 391), ('D', 392)],
                                   [0.034525331874368625, ('D', 385), ('D', 390)],
                                   [0.034525331874368625, ('D', 385), ('D', 392)],
                                   [0.034525331874368625, ('D', 386), ('D', 387), ('D', 392), ('D', 393)],
                                   [0.034525331874368625, ('D', 386), ('D', 391)],
                                   [0.034525331874368625, ('D', 386), ('D', 393)],
                                   [0.034525331874368625, ('D', 387), ('D', 388), ('D', 393), ('L', 0)],
                                   [0.034525331874368625, ('D', 387), ('D', 392)],
                                   [0.06666666666666667, ('D', 387), ('L', 0)],
                                   [0.034525331874368625, ('D', 388), ('D', 393)], [0.034525331874368625, ('D', 389)],
                                   [0.034525331874368625, ('D', 389), ('D', 390)], [0.06666666666666667, ('D', 390)],
                                   [0.034525331874368625, ('D', 390), ('D', 391), ('D', 394)],
                                   [0.034525331874368625, ('D', 390), ('D', 394)], [0.06666666666666667, ('D', 391)],
                                   [0.034525331874368625, ('D', 391), ('D', 392), ('D', 394)],
                                   [0.034525331874368625, ('D', 392), ('D', 393), ('D', 395)],
                                   [0.034525331874368625, ('D', 392), ('D', 394)],
                                   [0.034525331874368625, ('D', 392), ('D', 395)], [0.06666666666666667, ('D', 393)],
                                   [0.034525331874368625, ('D', 393), ('D', 395), ('L', 0)],
                                   [0.034525331874368625, ('D', 395), ('L', 0)], [0.034525331874368625, ('D', 396)],
                                   [0.034525331874368625, ('D', 396), ('D', 398)],
                                   [0.034525331874368625, ('D', 396), ('D', 398), ('D', 399)],
                                   [0.034525331874368625, ('D', 396), ('D', 399)],
                                   [0.034525331874368625, ('D', 397), ('D', 399)],
                                   [0.034525331874368625, ('D', 397), ('D', 399), ('D', 400)],
                                   [0.034525331874368625, ('D', 397), ('D', 400), ('D', 401)],
                                   [0.034525331874368625, ('D', 397), ('D', 401)], [0.06666666666666667, ('D', 398)],
                                   [0.034525331874368625, ('D', 398), ('D', 399), ('D', 404), ('D', 405)],
                                   [0.034525331874368625, ('D', 398), ('D', 403)],
                                   [0.034525331874368625, ('D', 398), ('D', 403), ('D', 404)],
                                   [0.034525331874368625, ('D', 398), ('D', 405)],
                                   [0.034525331874368625, ('D', 399), ('D', 400), ('D', 405), ('D', 406)],
                                   [0.034525331874368625, ('D', 399), ('D', 404)],
                                   [0.034525331874368625, ('D', 399), ('D', 406)], [0.06666666666666667, ('D', 400)],
                                   [0.034525331874368625, ('D', 400), ('D', 401), ('D', 406), ('D', 407)],
                                   [0.034525331874368625, ('D', 400), ('D', 405)],
                                   [0.034525331874368625, ('D', 400), ('D', 407)],
                                   [0.034525331874368625, ('D', 401), ('D', 402), ('D', 407), ('L', 0)],
                                   [0.034525331874368625, ('D', 401), ('D', 402), ('L', 0)],
                                   [0.034525331874368625, ('D', 401), ('D', 406)],
                                   [0.06666666666666667, ('D', 401), ('L', 0)], [0.034525331874368625, ('D', 402)],
                                   [0.034525331874368625, ('D', 402), ('D', 407)],
                                   [0.034525331874368625, ('D', 403), ('D', 404), ('D', 408)],
                                   [0.034525331874368625, ('D', 403), ('D', 408)], [0.06666666666666667, ('D', 404)],
                                   [0.034525331874368625, ('D', 404), ('D', 405), ('D', 408), ('D', 409)],
                                   [0.034525331874368625, ('D', 404), ('D', 409)],
                                   [0.034525331874368625, ('D', 405), ('D', 406), ('D', 409), ('D', 410)],
                                   [0.034525331874368625, ('D', 405), ('D', 408)],
                                   [0.034525331874368625, ('D', 405), ('D', 410)],
                                   [0.034525331874368625, ('D', 406), ('D', 407), ('D', 410), ('D', 411)],
                                   [0.034525331874368625, ('D', 406), ('D', 409)],
                                   [0.034525331874368625, ('D', 406), ('D', 411)],
                                   [0.034525331874368625, ('D', 407), ('D', 410)],
                                   [0.034525331874368625, ('D', 407), ('D', 411), ('D', 412), ('L', 0)],
                                   [0.034525331874368625, ('D', 407), ('D', 412)],
                                   [0.034525331874368625, ('D', 408), ('D', 409), ('D', 414), ('D', 415)],
                                   [0.034525331874368625, ('D', 408), ('D', 413)],
                                   [0.034525331874368625, ('D', 408), ('D', 413), ('D', 414)],
                                   [0.034525331874368625, ('D', 408), ('D', 415)],
                                   [0.034525331874368625, ('D', 409), ('D', 410), ('D', 415), ('D', 416)],
                                   [0.034525331874368625, ('D', 409), ('D', 414)],
                                   [0.034525331874368625, ('D', 409), ('D', 416)],
                                   [0.034525331874368625, ('D', 410), ('D', 411), ('D', 416), ('D', 417)],
                                   [0.034525331874368625, ('D', 410), ('D', 415)],
                                   [0.034525331874368625, ('D', 410), ('D', 417)],
                                   [0.034525331874368625, ('D', 411), ('D', 412), ('D', 417), ('L', 0)],
                                   [0.034525331874368625, ('D', 411), ('D', 416)],
                                   [0.06666666666666667, ('D', 411), ('L', 0)],
                                   [0.034525331874368625, ('D', 412), ('D', 417)], [0.034525331874368625, ('D', 413)],
                                   [0.034525331874368625, ('D', 413), ('D', 414)], [0.06666666666666667, ('D', 414)],
                                   [0.034525331874368625, ('D', 414), ('D', 415), ('D', 418)],
                                   [0.034525331874368625, ('D', 414), ('D', 418)], [0.06666666666666667, ('D', 415)],
                                   [0.034525331874368625, ('D', 415), ('D', 416), ('D', 418)],
                                   [0.034525331874368625, ('D', 416), ('D', 417), ('D', 419)],
                                   [0.034525331874368625, ('D', 416), ('D', 418)],
                                   [0.034525331874368625, ('D', 416), ('D', 419)], [0.06666666666666667, ('D', 417)],
                                   [0.034525331874368625, ('D', 417), ('D', 419), ('L', 0)],
                                   [0.034525331874368625, ('D', 419), ('L', 0)], [0.034525331874368625, ('D', 420)],
                                   [0.034525331874368625, ('D', 420), ('D', 422)],
                                   [0.034525331874368625, ('D', 420), ('D', 422), ('D', 423)],
                                   [0.034525331874368625, ('D', 420), ('D', 423)],
                                   [0.034525331874368625, ('D', 421), ('D', 423)],
                                   [0.034525331874368625, ('D', 421), ('D', 423), ('D', 424)],
                                   [0.034525331874368625, ('D', 421), ('D', 424), ('D', 425)],
                                   [0.034525331874368625, ('D', 421), ('D', 425)], [0.06666666666666667, ('D', 422)],
                                   [0.034525331874368625, ('D', 422), ('D', 423), ('D', 428), ('D', 429)],
                                   [0.034525331874368625, ('D', 422), ('D', 427)],
                                   [0.034525331874368625, ('D', 422), ('D', 427), ('D', 428)],
                                   [0.034525331874368625, ('D', 422), ('D', 429)],
                                   [0.034525331874368625, ('D', 423), ('D', 424), ('D', 429), ('D', 430)],
                                   [0.034525331874368625, ('D', 423), ('D', 428)],
                                   [0.034525331874368625, ('D', 423), ('D', 430)], [0.06666666666666667, ('D', 424)],
                                   [0.034525331874368625, ('D', 424), ('D', 425), ('D', 430), ('D', 431)],
                                   [0.034525331874368625, ('D', 424), ('D', 429)],
                                   [0.034525331874368625, ('D', 424), ('D', 431)],
                                   [0.034525331874368625, ('D', 425), ('D', 426), ('D', 431), ('L', 0)],
                                   [0.034525331874368625, ('D', 425), ('D', 426), ('L', 0)],
                                   [0.034525331874368625, ('D', 425), ('D', 430)],
                                   [0.06666666666666667, ('D', 425), ('L', 0)], [0.034525331874368625, ('D', 426)],
                                   [0.034525331874368625, ('D', 426), ('D', 431)],
                                   [0.034525331874368625, ('D', 427), ('D', 428), ('D', 432)],
                                   [0.034525331874368625, ('D', 427), ('D', 432)], [0.06666666666666667, ('D', 428)],
                                   [0.034525331874368625, ('D', 428), ('D', 429), ('D', 432), ('D', 433)],
                                   [0.034525331874368625, ('D', 428), ('D', 433)],
                                   [0.034525331874368625, ('D', 429), ('D', 430), ('D', 433), ('D', 434)],
                                   [0.034525331874368625, ('D', 429), ('D', 432)],
                                   [0.034525331874368625, ('D', 429), ('D', 434)],
                                   [0.034525331874368625, ('D', 430), ('D', 431), ('D', 434), ('D', 435)],
                                   [0.034525331874368625, ('D', 430), ('D', 433)],
                                   [0.034525331874368625, ('D', 430), ('D', 435)],
                                   [0.034525331874368625, ('D', 431), ('D', 434)],
                                   [0.034525331874368625, ('D', 431), ('D', 435), ('D', 436), ('L', 0)],
                                   [0.034525331874368625, ('D', 431), ('D', 436)],
                                   [0.034525331874368625, ('D', 432), ('D', 433), ('D', 438), ('D', 439)],
                                   [0.034525331874368625, ('D', 432), ('D', 437)],
                                   [0.034525331874368625, ('D', 432), ('D', 437), ('D', 438)],
                                   [0.034525331874368625, ('D', 432), ('D', 439)],
                                   [0.034525331874368625, ('D', 433), ('D', 434), ('D', 439), ('D', 440)],
                                   [0.034525331874368625, ('D', 433), ('D', 438)],
                                   [0.034525331874368625, ('D', 433), ('D', 440)],
                                   [0.034525331874368625, ('D', 434), ('D', 435), ('D', 440), ('D', 441)],
                                   [0.034525331874368625, ('D', 434), ('D', 439)],
                                   [0.034525331874368625, ('D', 434), ('D', 441)],
                                   [0.034525331874368625, ('D', 435), ('D', 436), ('D', 441), ('L', 0)],
                                   [0.034525331874368625, ('D', 435), ('D', 440)],
                                   [0.06666666666666667, ('D', 435), ('L', 0)],
                                   [0.034525331874368625, ('D', 436), ('D', 441)], [0.034525331874368625, ('D', 437)],
                                   [0.034525331874368625, ('D', 437), ('D', 438)], [0.06666666666666667, ('D', 438)],
                                   [0.034525331874368625, ('D', 438), ('D', 439), ('D', 442)],
                                   [0.034525331874368625, ('D', 438), ('D', 442)], [0.06666666666666667, ('D', 439)],
                                   [0.034525331874368625, ('D', 439), ('D', 440), ('D', 442)],
                                   [0.034525331874368625, ('D', 440), ('D', 441), ('D', 443)],
                                   [0.034525331874368625, ('D', 440), ('D', 442)],
                                   [0.034525331874368625, ('D', 440), ('D', 443)], [0.06666666666666667, ('D', 441)],
                                   [0.034525331874368625, ('D', 441), ('D', 443), ('L', 0)],
                                   [0.034525331874368625, ('D', 443), ('L', 0)], [0.034525331874368625, ('D', 444)],
                                   [0.034525331874368625, ('D', 444), ('D', 446)],
                                   [0.034525331874368625, ('D', 444), ('D', 446), ('D', 447)],
                                   [0.034525331874368625, ('D', 444), ('D', 447)],
                                   [0.034525331874368625, ('D', 445), ('D', 447)],
                                   [0.034525331874368625, ('D', 445), ('D', 447), ('D', 448)],
                                   [0.034525331874368625, ('D', 445), ('D', 448), ('D', 449)],
                                   [0.034525331874368625, ('D', 445), ('D', 449)], [0.06666666666666667, ('D', 446)],
                                   [0.034525331874368625, ('D', 446), ('D', 447), ('D', 452), ('D', 453)],
                                   [0.034525331874368625, ('D', 446), ('D', 451)],
                                   [0.034525331874368625, ('D', 446), ('D', 451), ('D', 452)],
                                   [0.034525331874368625, ('D', 446), ('D', 453)],
                                   [0.034525331874368625, ('D', 447), ('D', 448), ('D', 453), ('D', 454)],
                                   [0.034525331874368625, ('D', 447), ('D', 452)],
                                   [0.034525331874368625, ('D', 447), ('D', 454)], [0.06666666666666667, ('D', 448)],
                                   [0.034525331874368625, ('D', 448), ('D', 449), ('D', 454), ('D', 455)],
                                   [0.034525331874368625, ('D', 448), ('D', 453)],
                                   [0.034525331874368625, ('D', 448), ('D', 455)],
                                   [0.034525331874368625, ('D', 449), ('D', 450), ('D', 455), ('L', 0)],
                                   [0.034525331874368625, ('D', 449), ('D', 450), ('L', 0)],
                                   [0.034525331874368625, ('D', 449), ('D', 454)],
                                   [0.06666666666666667, ('D', 449), ('L', 0)], [0.034525331874368625, ('D', 450)],
                                   [0.034525331874368625, ('D', 450), ('D', 455)],
                                   [0.034525331874368625, ('D', 451), ('D', 452), ('D', 456)],
                                   [0.034525331874368625, ('D', 451), ('D', 456)], [0.06666666666666667, ('D', 452)],
                                   [0.034525331874368625, ('D', 452), ('D', 453), ('D', 456), ('D', 457)],
                                   [0.034525331874368625, ('D', 452), ('D', 457)],
                                   [0.034525331874368625, ('D', 453), ('D', 454), ('D', 457), ('D', 458)],
                                   [0.034525331874368625, ('D', 453), ('D', 456)],
                                   [0.034525331874368625, ('D', 453), ('D', 458)],
                                   [0.034525331874368625, ('D', 454), ('D', 455), ('D', 458), ('D', 459)],
                                   [0.034525331874368625, ('D', 454), ('D', 457)],
                                   [0.034525331874368625, ('D', 454), ('D', 459)],
                                   [0.034525331874368625, ('D', 455), ('D', 458)],
                                   [0.034525331874368625, ('D', 455), ('D', 459), ('D', 460), ('L', 0)],
                                   [0.034525331874368625, ('D', 455), ('D', 460)],
                                   [0.034525331874368625, ('D', 456), ('D', 457), ('D', 462), ('D', 463)],
                                   [0.034525331874368625, ('D', 456), ('D', 461)],
                                   [0.034525331874368625, ('D', 456), ('D', 461), ('D', 462)],
                                   [0.034525331874368625, ('D', 456), ('D', 463)],
                                   [0.034525331874368625, ('D', 457), ('D', 458), ('D', 463), ('D', 464)],
                                   [0.034525331874368625, ('D', 457), ('D', 462)],
                                   [0.034525331874368625, ('D', 457), ('D', 464)],
                                   [0.034525331874368625, ('D', 458), ('D', 459), ('D', 464), ('D', 465)],
                                   [0.034525331874368625, ('D', 458), ('D', 463)],
                                   [0.034525331874368625, ('D', 458), ('D', 465)],
                                   [0.034525331874368625, ('D', 459), ('D', 460), ('D', 465), ('L', 0)],
                                   [0.034525331874368625, ('D', 459), ('D', 464)],
                                   [0.06666666666666667, ('D', 459), ('L', 0)],
                                   [0.034525331874368625, ('D', 460), ('D', 465)], [0.034525331874368625, ('D', 461)],
                                   [0.034525331874368625, ('D', 461), ('D', 462)], [0.06666666666666667, ('D', 462)],
                                   [0.034525331874368625, ('D', 462), ('D', 463), ('D', 466)],
                                   [0.034525331874368625, ('D', 462), ('D', 466)], [0.06666666666666667, ('D', 463)],
                                   [0.034525331874368625, ('D', 463), ('D', 464), ('D', 466)],
                                   [0.034525331874368625, ('D', 464), ('D', 465), ('D', 467)],
                                   [0.034525331874368625, ('D', 464), ('D', 466)],
                                   [0.034525331874368625, ('D', 464), ('D', 467)], [0.06666666666666667, ('D', 465)],
                                   [0.034525331874368625, ('D', 465), ('D', 467), ('L', 0)],
                                   [0.034525331874368625, ('D', 467), ('L', 0)]],
        num_detectors=480,
        num_shots=1000
    )


if __name__ == '__main__':
    main()

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (8 by maintainers)

Commits related to this issue

Most upvoted comments

I tried to make a simpler repo now that stim v1.4 is out. Unfortunately it seems to have stopped crashing for unknown reasons. So you’re stuck with the giant one.

import math
from typing import Callable, List

import pymatching
import networkx as nx
import stim


def test_decoding(circuit: stim.Circuit, num_shots: int):
    m = detector_error_model_to_matching(circuit.detector_error_model())

    detector_samples = circuit.compile_detector_sampler().sample(num_shots, append_observables=True)
    num_correct = 0
    for sample in detector_samples:
        actual_observable = sample[-1]
        detectors_only = sample[:-1]
        predicted_observable = m.decode(detectors_only)[0]
        num_correct += actual_observable == predicted_observable
    print("shots", num_shots)
    print("correct predictions", num_correct)
    print("logical error rate", (num_shots - num_correct) / num_shots)


def detector_error_model_to_matching(model: stim.DetectorErrorModel) -> pymatching.Matching:
    det_offset = 0

    def _iter_model(m: stim.DetectorErrorModel, reps: int, callback: Callable[[float, List[int], List[int]], None]):
        nonlocal det_offset
        for _ in range(reps):
            for instruction in m:
                if isinstance(instruction, stim.DemRepeatBlock):
                    _iter_model(instruction.body_copy(), instruction.repeat_count, callback)
                elif isinstance(instruction, stim.DemInstruction):
                    if instruction.type == "error":
                        dets = []
                        frames = []
                        for t in instruction.targets_copy():
                            v = str(t)
                            if v.startswith("D"):
                                dets.append(int(v[1:]) + det_offset)
                            elif v.startswith("L"):
                                frames.append(int(v[1:]))
                            else:
                                raise NotImplementedError()
                        p = instruction.args_copy()[0]
                        callback(p, dets, frames)
                    elif instruction.type == "shift_detectors":
                        det_offset += instruction.targets_copy()[0]
                    elif instruction.type == "detector":
                        pass
                    elif instruction.type == "logical_observable":
                        pass
                    else:
                        raise NotImplementedError()
                else:
                    raise NotImplementedError()

    g = nx.Graph()
    num_detectors = model.num_detectors
    for k in range(num_detectors):
        g.add_node(k)
    g.add_node(num_detectors, is_boundary=True)

    def handle_error(p: float, dets: List[int], frame_changes: List[int]):
        if p == 0:
            return
        if len(dets) == 1:
            dets.append(num_detectors)
        if len(dets) != 2:
            return  # Just ignore correlated error mechanisms (e.g. Y errors / XX errors)
        g.add_edge(*dets, weight=-math.log(p), qubit_id=frame_changes)

    _iter_model(model, 1, handle_error)

    return pymatching.Matching(g)


def main():
    test_decoding(
        num_shots=1000,
        circuit=stim.Circuit.generated(
            "surface_code:rotated_memory_x",
            distance=5,
            rounds=20,
            before_round_data_depolarization=0.001,
            after_clifford_depolarization=0.001,
        ),
    )


if __name__ == '__main__':
    main()