genetic

genetic algorithm framework
git clone igris.git:dracuxan/genetic.git
Log | Files | Refs | README

commit 299b5a4459a9366c99ce7a4ed5076797d91971ea
parent 6fcd8e50ff604536b78b5be27b91c3ec3f34e68c
Author: dracuxan <[email protected]>
Date:   Sun, 19 Apr 2026 23:53:01 +0530

feat: reinsertion strategy plus graphs

Diffstat:
Mgenetic/lib/genetic.ex | 32++++++++++++++++----------------
Agenetic/lib/toolbox/reinsertion.ex | 30++++++++++++++++++++++++++++++
Mgenetic/lib/utilities/genealogy.ex | 8++++----
Mgenetic/mix.exs | 6+++---
Mgenetic/mix.lock | 8++++++++
Mgenetic/scripts/n_queens.exs | 18+++++++++++++++++-
Mgenetic/scripts/one_max.exs | 22++++++++++++++++++++--
Mgenetic/scripts/tiger_sim.exs | 45++++++++++++++++++++++++++++++++-------------
Agenetic/tiger_simulation.dot | 755+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 885 insertions(+), 39 deletions(-)

diff --git a/genetic/lib/genetic.ex b/genetic/lib/genetic.ex @@ -31,7 +31,7 @@ defmodule Genetic do select_rate = Keyword.get(opts, :selection_rate, 0.8) n = round(length(population) * select_rate) - n = if rem(n, 2) == 0, do: n, else: n + 1 + n = if rem(n, 2) == 0, do: n, else: n - 1 parents = select_fn @@ -68,17 +68,11 @@ defmodule Genetic do def mutation(population, opts \\ []) do mutation_fn = Keyword.get(opts, :mutation_type, &Toolbox.Mutation.scramble/2) mutation_rate = Keyword.get(opts, :mutation_rate, 0.05) + n = floor(length(population) * mutation_rate) - # Keep population size stable; mutate each chromosome with probability `mutation_rate`. - Enum.map(population, fn chromosome -> - if :rand.uniform() < mutation_rate do - mutant = apply(mutation_fn, [chromosome, opts]) - Utilities.Genealogy.add_chromosome(chromosome, mutant) - mutant - else - chromosome - end - end) + population + |> Enum.take_random(n) + |> Enum.map(&apply(mutation_fn, [&1, opts])) end def evolve(population, problem, generation, opts \\ []) do @@ -86,20 +80,26 @@ defmodule Genetic do statistics(population, generation, opts) best = hd(population) # fit_str = best.fitness |> :erlang.float_to_binary(decimals: 4) - IO.write("\rcurrent best: #{best.fitness}\tgeneration: #{generation}") + fit_str = best.fitness + IO.write("\rcurrent best: #{fit_str}\tgeneration: #{generation} ") if problem.terminate?(population, generation) do {best, generation} else {parents, leftover} = select(population, opts) children = crossover(parents, opts) - - (children ++ leftover) - |> mutation(opts) - |> evolve(problem, generation + 1, opts) + mutants = mutation(population, opts) + offsprings = children ++ mutants + new_population = reinsertion(parents, offsprings, leftover, opts) + evolve(new_population, problem, generation + 1, opts) end end + def reinsertion(parents, offsprings, leftover, opts \\ []) do + strategy = Keyword.get(opts, :reinsertion_strategy, &Toolbox.Reinsertion.uniform/4) + apply(strategy, [parents, offsprings, leftover, opts]) + end + def statistics(population, generation, opts \\ []) do default_stats = [ min_fitness: &Enum.min_by(&1, fn c -> c.fitness end).fitness, diff --git a/genetic/lib/toolbox/reinsertion.ex b/genetic/lib/toolbox/reinsertion.ex @@ -0,0 +1,30 @@ +defmodule Toolbox.Reinsertion do + def pure(_parents, offsprings, _leftover, _opts \\ []), do: offsprings + + def elitist(parents, offsprings, leftover, opts \\ []) do + selected = Enum.flat_map(parents, fn {p1, p2} -> [p1, p2] end) + old = selected ++ leftover + survival_rate = Keyword.get(opts, :survival_rate, 0.2) + n = floor(length(old) * survival_rate) + + survivors = + old + |> Enum.sort_by(& &1.fitness, :desc) + |> Enum.take(n) + + offsprings ++ survivors + end + + def uniform(parents, offsprings, leftover, opts \\ []) do + selected = Enum.flat_map(parents, fn {p1, p2} -> [p1, p2] end) + old = selected ++ leftover + survival_rate = Keyword.get(opts, :survival_rate, 0.2) + n = floor(length(old) * survival_rate) + + survivors = + old + |> Enum.take_random(n) + + offsprings ++ survivors + end +end diff --git a/genetic/lib/utilities/genealogy.ex b/genetic/lib/utilities/genealogy.ex @@ -27,14 +27,14 @@ defmodule Utilities.Genealogy do end def handle_cast({:add_chromosomes, chromosomes}, genealogy) do - {:noreply, Graph.add_vertices(genealogy, chromosomes)} + {:noreply, Graph.add_vertices(genealogy, Enum.map(chromosomes, fn c -> c.genes end))} end # child is mutant of parent def handle_cast({:add_chromosome, parent, child}, genealogy) do new_genealogy = genealogy - |> Graph.add_edge(parent, child) + |> Graph.add_edge(parent.genes, child.genes) {:noreply, new_genealogy} end @@ -43,8 +43,8 @@ defmodule Utilities.Genealogy do def handle_cast({:add_chromosome, parent_a, parent_b, child}, genealogy) do new_genealogy = genealogy - |> Graph.add_edge(parent_a, child) - |> Graph.add_edge(parent_b, child) + |> Graph.add_edge(parent_a.genes, child.genes) + |> Graph.add_edge(parent_b.genes, child.genes) {:noreply, new_genealogy} end diff --git a/genetic/mix.exs b/genetic/mix.exs @@ -22,9 +22,9 @@ defmodule Genetic.MixProject do # Run "mix help deps" to learn about dependencies. defp deps do [ - {:libgraph, "~> 0.16.0"} - # {:dep_from_hexpm, "~> 0.3.0"}, - # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} + {:libgraph, "~> 0.16.0"}, + {:gnuplot, "~> 1.22"}, + {:alex, "~> 0.3.2"} ] end end diff --git a/genetic/mix.lock b/genetic/mix.lock @@ -1,3 +1,11 @@ %{ + "alex": {:hex, :alex, "0.3.2", "b6fa1d744783707e1ff068ecdef2eb993f9b05a2ebe9c97ba67b05902c0aaa9c", [:mix], [], "hexpm", "9d40610d06857f5a321923f28c44ca08575ad64594cbbfa4352eb115e5c0566e"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, + "ex_doc": {:hex, :ex_doc, "0.40.1", "67542e4b6dde74811cfd580e2c0149b78010fd13001fda7cfeb2b2c2ffb1344d", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "bcef0e2d360d93ac19f01a85d58f91752d930c0a30e2681145feea6bd3516e00"}, + "gnuplot": {:hex, :gnuplot, "1.22.270", "541da1d4be2acbcb2a53105a7c2f31d91127811858b522c1a2290ed5844b9624", [:mix], [{:ex_doc, "~> 0.28", [hex: :ex_doc, repo: "hexpm", optional: false]}], "hexpm", "2870982804ac79a93eebf31c07a507a1825bc23c782907da48d653cf970a4d41"}, "libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"}, + "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, + "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, + "makeup_erlang": {:hex, :makeup_erlang, "1.0.3", "4252d5d4098da7415c390e847c814bad3764c94a814a0b4245176215615e1035", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "953297c02582a33411ac6208f2c6e55f0e870df7f80da724ed613f10e6706afd"}, + "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, } diff --git a/genetic/scripts/n_queens.exs b/genetic/scripts/n_queens.exs @@ -2,7 +2,7 @@ defmodule NQueens do alias Types.Chromosome @behaviour Problem - @max_queens 7 + @max_queens 15 @target_fitness @max_queens + 1 @size @target_fitness @@ -38,7 +38,23 @@ end {soln, generation} = Genetic.run( NQueens, + selection_type: &Toolbox.Selection.elite/2, + mutation_type: &Toolbox.Mutation.scramble/2, crossover_type: &Toolbox.Crossover.order_one/3 ) IO.puts("\nfinal answer: #{inspect(soln)}\ngenrations passed: #{generation}") + +stats = + :ets.tab2list(:statistics) + |> Enum.sort_by(fn {gen, _stat} -> gen end) + |> Enum.map(fn {gen, stats} -> [gen, stats.mean_fitness] end) + +{:ok, _} = + Gnuplot.plot( + [ + [:set, :title, "mean fitness versus generation (n__queens)"], + [:plot, "-", :with, :points] + ], + [stats] + ) diff --git a/genetic/scripts/one_max.exs b/genetic/scripts/one_max.exs @@ -37,6 +37,10 @@ end {soln, generation} = Genetic.run( OneMax, + population_size: 100, + selection_rate: 0.8, + mutation_rate: 0.01, + survival_rate: 0.2, selection_type: &Toolbox.Selection.elite/2, crossover_type: &Toolbox.Crossover.uniform/3, mutation_type: &Toolbox.Mutation.scramble/2 @@ -45,5 +49,19 @@ end IO.puts("\nfinal answer: #{inspect(soln)}") IO.puts("generations passed: #{generation}") -{_, tgs} = Utilities.Statistics.lookup(generation) -IO.inspect(tgs) +# {_, tgs} = Utilities.Statistics.lookup(generation) +# IO.inspect(tgs) + +stats = + :ets.tab2list(:statistics) + |> Enum.sort_by(fn {gen, _stat} -> gen end) + |> Enum.map(fn {gen, stats} -> [gen, stats.mean_fitness] end) + +{:ok, _} = + Gnuplot.plot( + [ + [:set, :title, "mean fitness versus generation (one_max)"], + [:plot, "-", :with, :line] + ], + [stats] + ) diff --git a/genetic/scripts/tiger_sim.exs b/genetic/scripts/tiger_sim.exs @@ -37,18 +37,18 @@ defmodule TigerSimulation do @impl true def fitness_function(chromosome) do - # tropic_scores = [0.0, 3.0, 2.0, -1.0, 0.5, 1.0, -1.0, 0.0] - tundra_scores = [1.0, 3.0, -2.0, 1.0, 0.5, 2.0, 1.0, 0.0] + tropic_scores = [0.0, 3.0, 2.0, -1.0, 0.5, 1.0, -1.0, 0.0] + # tundra_scores = [1.0, 3.0, -2.0, 1.0, 0.5, 2.0, 1.0, 0.0] traits = chromosome.genes traits - |> Enum.zip(tundra_scores) + |> Enum.zip(tropic_scores) |> Enum.map(fn {t, s} -> t * s end) |> Enum.sum() end @impl true - def terminate?(_population, generation), do: generation == 1000 + def terminate?(_population, generation), do: generation == 150 def average_tiger(population) do genes = Enum.map(population, & &1.genes) @@ -70,15 +70,34 @@ end {tiger, _generation} = Genetic.run(TigerSimulation, - population_size: 1000, - selection_rate: 0.9, - mutation_rate: 0.1, + population_size: 100, + selection_rate: 0.8, + mutation_rate: 0.05, + survival_rate: 0.2, mutation_type: &Toolbox.Mutation.flip/2, - crossover_type: &Toolbox.Crossover.single_point/3, - statistics: %{average_tiger: &TigerSimulation.average_tiger/1} + crossover_type: &Toolbox.Crossover.single_point/3 + # statistics: %{average_tiger: &TigerSimulation.average_tiger/1} ) -# IO.puts("\nbest(?) tropical tiger: #{inspect(tiger.genes)}") -IO.puts("\nbest(?) tundra tiger: #{inspect(tiger.genes)}") -# genealogy = Utilities.Genealogy.get_tree() -# IO.inspect(Graph.vertices(genealogy)) +IO.puts("\nbest(?) tropical tiger: #{inspect(tiger.genes)}") +# IO.puts("\nbest(?) tundra tiger: #{inspect(tiger.genes)}") + +genealogy = Utilities.Genealogy.get_tree() +{:ok, dot} = Graph.Serializers.DOT.serialize(genealogy) +{:ok, dotfile} = File.open("tiger_simulation.dot", [:write]) +:ok = IO.binwrite(dotfile, dot) +:ok = File.close(dotfile) + +stats = + :ets.tab2list(:statistics) + |> Enum.sort_by(fn {gen, _stats} -> gen end) + |> Enum.map(fn {gen, stats} -> [gen, stats.mean_fitness] end) + +{:ok, _} = + Gnuplot.plot( + [ + [:set, :title, "mean fitness versus generation (tiger_sim)"], + [:plot, "-", :with, :points] + ], + [stats] + ) diff --git a/genetic/tiger_simulation.dot b/genetic/tiger_simulation.dot @@ -0,0 +1,755 @@ +strict digraph { + 949457869[label="[0, 1, 1, 1, 0, 0, 0, 0]"] + 2536618053[label="[0, 1, 0, 1, 0, 1, 0, 1]"] + 724171536[label="[1, 0, 1, 0, 1, 1, 0, 0]"] + 1402067371[label="[0, 1, 0, 1, 1, 1, 0, 0]"] + 3908895871[label="[0, 0, 1, 0, 1, 0, 0, 1]"] + 2403915804[label="[0, 1, 1, 1, 1, 1, 1, 1]"] + 2848633694[label="[1, 0, 1, 1, 1, 1, 1, 0]"] + 1971595665[label="[1, 1, 0, 1, 1, 1, 0, 1]"] + 19331105[label="[0, 1, 0, 0, 0, 0, 1, 0]"] + 677448650[label="[0, 0, 1, 0, 1, 0, 1, 1]"] + 3937712037[label="[0, 1, 1, 0, 1, 1, 0, 1]"] + 767075551[label="[1, 1, 0, 1, 0, 1, 1, 0]"] + 3354606782[label="[0, 1, 0, 0, 0, 1, 0, 1]"] + 2268642208[label="[0, 0, 1, 1, 0, 0, 1, 0]"] + 284311100[label="[0, 1, 1, 0, 1, 1, 0, 0]"] + 4072798414[label="[1, 1, 0, 0, 1, 1, 0, 0]"] + 1809647678[label="[1, 0, 0, 1, 1, 0, 0, 1]"] + 443214995[label="[1, 1, 0, 0, 0, 0, 0, 1]"] + 2445954675[label="[1, 1, 1, 0, 1, 0, 0, 0]"] + 2457784034[label="[0, 0, 1, 0, 0, 1, 1, 1]"] + 1389735369[label="[1, 0, 1, 0, 0, 0, 0, 1]"] + 3026510743[label="[1, 0, 0, 1, 1, 0, 0, 0]"] + 4171340714[label="[0, 0, 0, 0, 0, 0, 0, 0]"] + 1099471454[label="[1, 0, 0, 0, 0, 0, 1, 1]"] + 3513907054[label="[1, 0, 0, 1, 0, 0, 1, 1]"] + 2587689007[label="[1, 1, 1, 0, 0, 1, 1, 1]"] + 2925632667[label="[1, 1, 1, 0, 1, 1, 1, 0]"] + 2057570518[label="[1, 1, 0, 1, 0, 0, 1, 0]"] + 3257104108[label="[0, 1, 1, 1, 0, 1, 0, 1]"] + 3335717218[label="[0, 0, 1, 1, 1, 0, 0, 0]"] + 698173556[label="[0, 1, 1, 0, 0, 1, 1, 1]"] + 3715967540[label="[1, 1, 0, 0, 1, 0, 0, 1]"] + 2368887397[label="[0, 0, 0, 0, 0, 1, 1, 1]"] + 2884901790[label="[0, 1, 0, 1, 0, 0, 0, 1]"] + 3234209085[label="[1, 1, 1, 1, 0, 1, 0, 1]"] + 2037827799[label="[1, 0, 0, 1, 0, 0, 0, 0]"] + 4285881222[label="[1, 1, 0, 1, 0, 1, 0, 0]"] + 793347728[label="[0, 0, 0, 1, 0, 0, 1, 1]"] + 2563037542[label="[1, 1, 1, 1, 0, 1, 1, 1]"] + 2250553917[label="[0, 1, 1, 0, 0, 0, 0, 1]"] + 1714495371[label="[0, 1, 1, 1, 1, 0, 1, 1]"] + 3610445940[label="[1, 1, 0, 0, 1, 0, 1, 0]"] + 3161838376[label="[1, 0, 1, 1, 1, 0, 1, 0]"] + 2642425121[label="[1, 0, 1, 1, 1, 0, 0, 0]"] + 587814686[label="[1, 0, 0, 0, 1, 0, 1, 1]"] + 74531871[label="[1, 1, 0, 0, 0, 1, 0, 0]"] + 3965625862[label="[1, 1, 1, 0, 1, 1, 0, 0]"] + 635681421[label="[0, 0, 1, 0, 1, 1, 1, 0]"] + 3539985169[label="[0, 1, 1, 0, 1, 0, 0, 0]"] + 3260494834[label="[1, 1, 1, 0, 1, 0, 0, 1]"] + 1596605361[label="[1, 0, 0, 0, 1, 1, 1, 1]"] + 496639972[label="[0, 1, 0, 0, 0, 0, 1, 1]"] + 4127025499[label="[0, 0, 1, 0, 1, 1, 1, 1]"] + 1476128492[label="[0, 0, 0, 1, 0, 1, 1, 0]"] + 4058374985[label="[0, 1, 1, 0, 1, 1, 1, 0]"] + 3385205003[label="[1, 0, 0, 1, 0, 0, 0, 1]"] + 504513812[label="[1, 1, 1, 0, 0, 0, 1, 1]"] + 467112377[label="[0, 0, 1, 1, 0, 0, 0, 0]"] + 3844664360[label="[0, 1, 0, 1, 0, 0, 0, 0]"] + 2878229955[label="[1, 0, 1, 0, 1, 0, 1, 0]"] + 1315291317[label="[1, 1, 1, 0, 0, 0, 1, 0]"] + 1240788070[label="[0, 1, 0, 1, 0, 1, 1, 1]"] + 512258003[label="[0, 1, 1, 0, 1, 0, 0, 1]"] + 2059513195[label="[1, 1, 1, 1, 0, 1, 1, 0]"] + 765970116[label="[0, 0, 1, 0, 1, 0, 1, 0]"] + 2250372135[label="[0, 1, 0, 1, 0, 0, 1, 0]"] + 1451784272[label="[1, 0, 1, 0, 1, 0, 0, 1]"] + 4005480581[label="[0, 0, 1, 0, 0, 1, 1, 0]"] + 341183630[label="[0, 1, 1, 0, 0, 0, 1, 0]"] + 1543204776[label="[1, 1, 1, 1, 1, 1, 0, 1]"] + 2304576397[label="[1, 1, 1, 0, 0, 1, 0, 1]"] + 3847528191[label="[0, 0, 0, 1, 0, 0, 0, 0]"] + 449175020[label="[0, 0, 1, 0, 0, 0, 1, 0]"] + 1687961054[label="[0, 1, 0, 0, 0, 1, 1, 1]"] + 3682568289[label="[1, 0, 0, 0, 1, 1, 1, 0]"] + 3594480722[label="[1, 1, 1, 1, 1, 1, 1, 0]"] + 2101625518[label="[0, 0, 0, 0, 0, 0, 0, 1]"] + 3358219454[label="[0, 1, 1, 0, 1, 1, 1, 1]"] + 688080727[label="[1, 0, 1, 0, 1, 1, 0, 1]"] + 2424212868[label="[1, 1, 0, 0, 0, 0, 1, 0]"] + 907040973[label="[1, 1, 0, 1, 1, 1, 1, 1]"] + 3801418391[label="[0, 1, 1, 1, 1, 1, 0, 0]"] + 3587387457[label="[0, 1, 0, 0, 1, 1, 0, 1]"] + 4248627782[label="[0, 1, 0, 1, 1, 1, 1, 0]"] + 1258450967[label="[0, 1, 0, 0, 1, 1, 1, 1]"] + 3043258635[label="[0, 0, 1, 0, 0, 1, 0, 1]"] + 128572598[label="[0, 0, 0, 1, 1, 0, 1, 0]"] + 3980964254[label="[1, 0, 0, 0, 1, 1, 0, 1]"] + 2343540229[label="[0, 0, 1, 1, 1, 1, 1, 0]"] + 3730757465[label="[1, 1, 1, 0, 1, 0, 1, 1]"] + 3041433247[label="[1, 1, 1, 0, 0, 1, 0, 0]"] + 93601957[label="[1, 0, 0, 0, 1, 0, 0, 1]"] + 3569664228[label="[1, 0, 0, 1, 0, 1, 1, 1]"] + 3701305222[label="[1, 1, 0, 1, 1, 1, 0, 0]"] + 3024132584[label="[1, 0, 1, 1, 1, 1, 0, 0]"] + 3031670352[label="[1, 1, 0, 0, 1, 0, 1, 1]"] + 1389186369[label="[0, 0, 1, 1, 0, 1, 0, 1]"] + 1476137680[label="[0, 0, 0, 1, 1, 1, 0, 0]"] + 3408895888[label="[1, 1, 0, 1, 1, 0, 0, 1]"] + 1025807162[label="[1, 1, 1, 0, 0, 0, 0, 0]"] + 1257748804[label="[1, 0, 1, 0, 1, 1, 1, 1]"] + 3806784681[label="[1, 1, 0, 1, 0, 0, 1, 1]"] + 2662161374[label="[0, 0, 1, 1, 0, 1, 1, 0]"] + 341781252[label="[1, 0, 0, 1, 1, 1, 1, 1]"] + 2956543858[label="[0, 0, 0, 1, 1, 1, 1, 1]"] + 4225915748[label="[0, 1, 0, 1, 1, 0, 0, 1]"] + 4174934612[label="[1, 1, 0, 0, 0, 0, 1, 1]"] + 616242749[label="[0, 0, 1, 1, 1, 0, 0, 1]"] + 114033711[label="[0, 0, 0, 1, 0, 1, 0, 1]"] + 489079066[label="[0, 0, 1, 0, 1, 1, 0, 1]"] + 3863142590[label="[0, 1, 0, 0, 0, 1, 0, 0]"] + 730092841[label="[0, 1, 1, 0, 0, 1, 0, 1]"] + 625166020[label="[0, 1, 0, 0, 0, 0, 0, 1]"] + 2695800214[label="[0, 0, 0, 0, 1, 0, 1, 1]"] + 2757872035[label="[1, 1, 1, 1, 1, 1, 1, 1]"] + 814309891[label="[0, 0, 0, 0, 0, 0, 1, 1]"] + 2389889247[label="[0, 1, 1, 0, 1, 0, 1, 1]"] + 3818475453[label="[0, 1, 0, 1, 1, 1, 0, 1]"] + 4267216582[label="[0, 1, 1, 1, 1, 0, 0, 1]"] + 2611811393[label="[0, 0, 1, 1, 0, 1, 1, 1]"] + 4006653452[label="[0, 1, 0, 1, 0, 0, 1, 1]"] + 3283303280[label="[0, 1, 1, 1, 0, 0, 1, 1]"] + 566349598[label="[1, 0, 1, 0, 0, 0, 0, 0]"] + 1102237284[label="[1, 0, 0, 0, 1, 0, 0, 0]"] + 3886701531[label="[0, 1, 1, 0, 0, 0, 1, 1]"] + 1281893856[label="[1, 0, 0, 1, 1, 0, 1, 0]"] + 1807202653[label="[0, 1, 1, 0, 0, 1, 0, 0]"] + 3653750597[label="[0, 1, 0, 1, 1, 0, 0, 0]"] + 3932195571[label="[1, 0, 1, 1, 0, 1, 0, 0]"] + 2614247803[label="[1, 1, 0, 1, 0, 1, 0, 1]"] + 340839238[label="[1, 1, 1, 0, 1, 1, 0, 1]"] + 703869277[label="[0, 1, 0, 0, 1, 1, 0, 0]"] + 1005042913[label="[0, 0, 0, 0, 1, 1, 1, 1]"] + 2093178660[label="[1, 0, 1, 0, 1, 1, 1, 0]"] + 3116854283[label="[0, 0, 1, 1, 1, 0, 1, 0]"] + 269858152[label="[1, 1, 1, 0, 1, 1, 1, 1]"] + 3720302707[label="[0, 1, 1, 1, 0, 0, 0, 1]"] + 3992611598[label="[0, 1, 0, 1, 0, 1, 1, 0]"] + 2694424578[label="[0, 1, 1, 1, 1, 1, 0, 1]"] + 2210017943[label="[1, 0, 1, 0, 0, 0, 1, 1]"] + 1947342348[label="[1, 1, 0, 0, 1, 1, 1, 0]"] + 1594237941[label="[1, 0, 0, 0, 1, 1, 0, 0]"] + 2577465764[label="[1, 1, 0, 1, 1, 0, 0, 0]"] + 2021613852[label="[0, 0, 0, 1, 1, 0, 0, 0]"] + 2576868663[label="[0, 1, 0, 0, 1, 0, 0, 1]"] + 2929388316[label="[1, 1, 0, 0, 0, 1, 1, 1]"] + 1211446481[label="[0, 1, 1, 0, 0, 0, 0, 0]"] + 3956835859[label="[1, 1, 1, 1, 1, 1, 0, 0]"] + 3164977462[label="[0, 1, 0, 1, 1, 0, 1, 0]"] + 2675173574[label="[0, 0, 1, 0, 0, 0, 1, 1]"] + 1744448600[label="[0, 1, 1, 1, 1, 1, 1, 0]"] + 4040258515[label="[1, 1, 0, 0, 1, 1, 0, 1]"] + 4204565953[label="[1, 1, 1, 1, 1, 0, 0, 0]"] + 4280082815[label="[0, 1, 1, 1, 0, 1, 1, 1]"] + 2359991343[label="[1, 0, 1, 1, 0, 1, 1, 1]"] + 1669442311[label="[1, 0, 1, 0, 0, 0, 1, 0]"] + 3372683600[label="[0, 1, 0, 0, 1, 0, 1, 1]"] + 2698673405[label="[1, 1, 0, 0, 1, 1, 1, 1]"] + 2001959156[label="[0, 0, 1, 1, 1, 1, 0, 0]"] + 500051265[label="[1, 0, 0, 1, 1, 1, 1, 0]"] + 2951794785[label="[1, 0, 0, 0, 1, 0, 1, 0]"] + 2895857263[label="[0, 1, 1, 1, 0, 1, 0, 0]"] + 3615109539[label="[0, 1, 1, 1, 0, 0, 1, 0]"] + 3722414022[label="[1, 1, 0, 1, 0, 0, 0, 1]"] + 949457869 -> 341183630 [weight=1] + 949457869 -> 3720302707 [weight=1] + 2536618053 -> 114033711 [weight=1] + 2536618053 -> 625166020 [weight=1] + 2536618053 -> 730092841 [weight=1] + 2536618053 -> 2536618053 [weight=1] + 2536618053 -> 2576868663 [weight=1] + 2536618053 -> 2614247803 [weight=1] + 2536618053 -> 3257104108 [weight=1] + 2536618053 -> 4006653452 [weight=1] + 724171536 -> 1257748804 [weight=1] + 724171536 -> 4072798414 [weight=1] + 1402067371 -> 1947342348 [weight=1] + 1402067371 -> 3818475453 [weight=1] + 3908895871 -> 512258003 [weight=1] + 3908895871 -> 635681421 [weight=1] + 3908895871 -> 677448650 [weight=1] + 3908895871 -> 1451784272 [weight=1] + 3908895871 -> 2695800214 [weight=1] + 3908895871 -> 3408895888 [weight=1] + 3908895871 -> 3715967540 [weight=1] + 3908895871 -> 3908895871 [weight=1] + 2403915804 -> 1258450967 [weight=1] + 2403915804 -> 1744448600 [weight=1] + 2403915804 -> 2389889247 [weight=1] + 2403915804 -> 2403915804 [weight=1] + 2403915804 -> 2694424578 [weight=1] + 2403915804 -> 2757872035 [weight=1] + 2403915804 -> 3587387457 [weight=1] + 2403915804 -> 4280082815 [weight=1] + 2848633694 -> 2343540229 [weight=1] + 2848633694 -> 2878229955 [weight=1] + 1971595665 -> 1971595665 [weight=1] + 1971595665 -> 3715967540 [weight=1] + 19331105 -> 19331105 [weight=1] + 19331105 -> 625166020 [weight=1] + 19331105 -> 1389186369 [weight=1] + 19331105 -> 1669442311 [weight=1] + 19331105 -> 2951794785 [weight=1] + 19331105 -> 3844664360 [weight=1] + 19331105 -> 3863142590 [weight=1] + 3937712037 -> 284311100 [weight=1] + 3937712037 -> 340839238 [weight=1] + 3937712037 -> 730092841 [weight=1] + 3937712037 -> 1807202653 [weight=1] + 3937712037 -> 3937712037 [weight=1] + 767075551 -> 767075551 [weight=1] + 767075551 -> 3992611598 [weight=1] + 3354606782 -> 496639972 [weight=1] + 3354606782 -> 730092841 [weight=1] + 3354606782 -> 1687961054 [weight=1] + 3354606782 -> 3234209085 [weight=1] + 284311100 -> 284311100 [weight=1] + 284311100 -> 1807202653 [weight=1] + 284311100 -> 3937712037 [weight=1] + 284311100 -> 3965625862 [weight=1] + 4072798414 -> 907040973 [weight=1] + 4072798414 -> 3031670352 [weight=1] + 4072798414 -> 3965625862 [weight=1] + 4072798414 -> 4072798414 [weight=1] + 443214995 -> 443214995 [weight=1] + 443214995 -> 625166020 [weight=1] + 443214995 -> 3354606782 [weight=1] + 443214995 -> 4174934612 [weight=1] + 2445954675 -> 269858152 [weight=1] + 2445954675 -> 284311100 [weight=1] + 2445954675 -> 340839238 [weight=1] + 2445954675 -> 1543204776 [weight=1] + 2445954675 -> 1807202653 [weight=1] + 2445954675 -> 2445954675 [weight=1] + 2445954675 -> 2925632667 [weight=1] + 2445954675 -> 3041433247 [weight=1] + 2445954675 -> 3234209085 [weight=1] + 2445954675 -> 3260494834 [weight=1] + 2445954675 -> 3539985169 [weight=1] + 2445954675 -> 3730757465 [weight=1] + 2445954675 -> 3801418391 [weight=1] + 2445954675 -> 3965625862 [weight=1] + 2445954675 -> 4204565953 [weight=1] + 2457784034 -> 698173556 [weight=1] + 2457784034 -> 1389186369 [weight=1] + 2457784034 -> 2457784034 [weight=1] + 2457784034 -> 2611811393 [weight=1] + 2457784034 -> 3043258635 [weight=1] + 2457784034 -> 3847528191 [weight=1] + 1389735369 -> 625166020 [weight=1] + 1389735369 -> 1669442311 [weight=1] + 2587689007 -> 698173556 [weight=1] + 2587689007 -> 1025807162 [weight=1] + 2587689007 -> 2587689007 [weight=1] + 2925632667 -> 2925632667 [weight=1] + 2925632667 -> 3260494834 [weight=1] + 2925632667 -> 3956835859 [weight=1] + 2925632667 -> 4058374985 [weight=1] + 2057570518 -> 449175020 [weight=1] + 2057570518 -> 2662161374 [weight=1] + 2057570518 -> 3806784681 [weight=1] + 3257104108 -> 730092841 [weight=1] + 3257104108 -> 2250553917 [weight=1] + 3257104108 -> 2895857263 [weight=1] + 3257104108 -> 3234209085 [weight=1] + 3257104108 -> 3257104108 [weight=1] + 3257104108 -> 3539985169 [weight=1] + 3257104108 -> 4280082815 [weight=1] + 3335717218 -> 2642425121 [weight=1] + 3335717218 -> 3335717218 [weight=1] + 698173556 -> 698173556 [weight=1] + 698173556 -> 730092841 [weight=1] + 698173556 -> 1211446481 [weight=1] + 698173556 -> 1807202653 [weight=1] + 698173556 -> 2250553917 [weight=1] + 698173556 -> 2563037542 [weight=1] + 698173556 -> 2587689007 [weight=1] + 698173556 -> 2698673405 [weight=1] + 698173556 -> 2757872035 [weight=1] + 698173556 -> 3257104108 [weight=1] + 698173556 -> 3587387457 [weight=1] + 698173556 -> 3730757465 [weight=1] + 698173556 -> 3886701531 [weight=1] + 698173556 -> 4058374985 [weight=1] + 698173556 -> 4280082815 [weight=1] + 3715967540 -> 1971595665 [weight=1] + 3715967540 -> 2576868663 [weight=1] + 3715967540 -> 2614247803 [weight=1] + 3715967540 -> 3715967540 [weight=1] + 3715967540 -> 4040258515 [weight=1] + 3715967540 -> 4225915748 [weight=1] + 2884901790 -> 2457784034 [weight=1] + 2884901790 -> 3844664360 [weight=1] + 3234209085 -> 730092841 [weight=1] + 3234209085 -> 2563037542 [weight=1] + 3234209085 -> 2587689007 [weight=1] + 3234209085 -> 3257104108 [weight=1] + 4285881222 -> 2614247803 [weight=1] + 4285881222 -> 3610445940 [weight=1] + 2563037542 -> 504513812 [weight=1] + 2563037542 -> 1687961054 [weight=1] + 2563037542 -> 2563037542 [weight=1] + 2563037542 -> 3234209085 [weight=1] + 2563037542 -> 3283303280 [weight=1] + 2563037542 -> 3886701531 [weight=1] + 2563037542 -> 4280082815 [weight=1] + 2250553917 -> 625166020 [weight=1] + 2250553917 -> 698173556 [weight=1] + 2250553917 -> 730092841 [weight=1] + 2250553917 -> 1211446481 [weight=1] + 2250553917 -> 2250553917 [weight=1] + 2250553917 -> 3257104108 [weight=1] + 2250553917 -> 3886701531 [weight=1] + 2250553917 -> 3937712037 [weight=1] + 1714495371 -> 1714495371 [weight=1] + 1714495371 -> 1744448600 [weight=1] + 1714495371 -> 3031670352 [weight=1] + 1714495371 -> 3615109539 [weight=1] + 3610445940 -> 1947342348 [weight=1] + 3610445940 -> 2878229955 [weight=1] + 2642425121 -> 2642425121 [weight=1] + 2642425121 -> 3335717218 [weight=1] + 74531871 -> 767075551 [weight=1] + 74531871 -> 3041433247 [weight=1] + 3965625862 -> 284311100 [weight=1] + 3965625862 -> 340839238 [weight=1] + 3965625862 -> 1807202653 [weight=1] + 3965625862 -> 3965625862 [weight=1] + 635681421 -> 635681421 [weight=1] + 635681421 -> 4127025499 [weight=1] + 3539985169 -> 512258003 [weight=1] + 3539985169 -> 2445954675 [weight=1] + 3539985169 -> 3539985169 [weight=1] + 3539985169 -> 3956835859 [weight=1] + 3260494834 -> 269858152 [weight=1] + 3260494834 -> 512258003 [weight=1] + 3260494834 -> 730092841 [weight=1] + 3260494834 -> 1543204776 [weight=1] + 3260494834 -> 2304576397 [weight=1] + 3260494834 -> 2445954675 [weight=1] + 3260494834 -> 2925632667 [weight=1] + 3260494834 -> 3257104108 [weight=1] + 3260494834 -> 3260494834 [weight=1] + 3260494834 -> 3358219454 [weight=1] + 3260494834 -> 3956835859 [weight=1] + 3260494834 -> 3965625862 [weight=1] + 3260494834 -> 4267216582 [weight=1] + 1596605361 -> 1005042913 [weight=1] + 1596605361 -> 1596605361 [weight=1] + 4127025499 -> 635681421 [weight=1] + 4127025499 -> 1257748804 [weight=1] + 4127025499 -> 2001959156 [weight=1] + 4127025499 -> 4127025499 [weight=1] + 4127025499 -> 4225915748 [weight=1] + 4058374985 -> 284311100 [weight=1] + 4058374985 -> 2445954675 [weight=1] + 4058374985 -> 3358219454 [weight=1] + 4058374985 -> 3594480722 [weight=1] + 504513812 -> 504513812 [weight=1] + 504513812 -> 1315291317 [weight=1] + 504513812 -> 2563037542 [weight=1] + 504513812 -> 3886701531 [weight=1] + 467112377 -> 566349598 [weight=1] + 467112377 -> 2268642208 [weight=1] + 3844664360 -> 19331105 [weight=1] + 3844664360 -> 698173556 [weight=1] + 3844664360 -> 3844664360 [weight=1] + 3844664360 -> 3847528191 [weight=1] + 2878229955 -> 765970116 [weight=1] + 2878229955 -> 1451784272 [weight=1] + 2878229955 -> 2343540229 [weight=1] + 2878229955 -> 2662161374 [weight=1] + 2878229955 -> 2878229955 [weight=1] + 1315291317 -> 341183630 [weight=1] + 1315291317 -> 504513812 [weight=1] + 1315291317 -> 1315291317 [weight=1] + 512258003 -> 730092841 [weight=1] + 512258003 -> 3260494834 [weight=1] + 512258003 -> 3358219454 [weight=1] + 512258003 -> 3539985169 [weight=1] + 512258003 -> 3801418391 [weight=1] + 2059513195 -> 767075551 [weight=1] + 2059513195 -> 3041433247 [weight=1] + 765970116 -> 765970116 [weight=1] + 765970116 -> 2343540229 [weight=1] + 765970116 -> 2878229955 [weight=1] + 2250372135 -> 2057570518 [weight=1] + 2250372135 -> 4006653452 [weight=1] + 1451784272 -> 341781252 [weight=1] + 1451784272 -> 688080727 [weight=1] + 1451784272 -> 1451784272 [weight=1] + 1451784272 -> 1687961054 [weight=1] + 1451784272 -> 1809647678 [weight=1] + 1451784272 -> 2093178660 [weight=1] + 1451784272 -> 2577465764 [weight=1] + 1451784272 -> 2878229955 [weight=1] + 1451784272 -> 3026510743 [weight=1] + 1451784272 -> 3260494834 [weight=1] + 1451784272 -> 3408895888 [weight=1] + 1451784272 -> 3908895871 [weight=1] + 1451784272 -> 4225915748 [weight=1] + 4005480581 -> 2457784034 [weight=1] + 4005480581 -> 3844664360 [weight=1] + 341183630 -> 341183630 [weight=1] + 341183630 -> 1315291317 [weight=1] + 341183630 -> 1669442311 [weight=1] + 341183630 -> 3720302707 [weight=1] + 341183630 -> 3886701531 [weight=1] + 341183630 -> 3937712037 [weight=1] + 1543204776 -> 340839238 [weight=1] + 1543204776 -> 512258003 [weight=1] + 1543204776 -> 730092841 [weight=1] + 1543204776 -> 1543204776 [weight=1] + 1543204776 -> 2445954675 [weight=1] + 1543204776 -> 2757872035 [weight=1] + 1543204776 -> 3956835859 [weight=1] + 1543204776 -> 4204565953 [weight=1] + 2304576397 -> 730092841 [weight=1] + 2304576397 -> 2304576397 [weight=1] + 2304576397 -> 3041433247 [weight=1] + 2304576397 -> 3260494834 [weight=1] + 449175020 -> 1669442311 [weight=1] + 449175020 -> 2675173574 [weight=1] + 1687961054 -> 19331105 [weight=1] + 1687961054 -> 1240788070 [weight=1] + 1687961054 -> 1451784272 [weight=1] + 1687961054 -> 1687961054 [weight=1] + 1687961054 -> 3354606782 [weight=1] + 1687961054 -> 3587387457 [weight=1] + 1687961054 -> 4174934612 [weight=1] + 1687961054 -> 4280082815 [weight=1] + 3682568289 -> 93601957 [weight=1] + 3682568289 -> 3682568289 [weight=1] + 3594480722 -> 1543204776 [weight=1] + 3594480722 -> 1744448600 [weight=1] + 3594480722 -> 1947342348 [weight=1] + 3594480722 -> 2563037542 [weight=1] + 3594480722 -> 2757872035 [weight=1] + 3594480722 -> 4058374985 [weight=1] + 3358219454 -> 269858152 [weight=1] + 3358219454 -> 284311100 [weight=1] + 3358219454 -> 512258003 [weight=1] + 3358219454 -> 3260494834 [weight=1] + 3358219454 -> 3358219454 [weight=1] + 3358219454 -> 3539985169 [weight=1] + 3358219454 -> 3730757465 [weight=1] + 688080727 -> 1257748804 [weight=1] + 688080727 -> 1669442311 [weight=1] + 688080727 -> 3587387457 [weight=1] + 688080727 -> 3937712037 [weight=1] + 2424212868 -> 2424212868 [weight=1] + 2424212868 -> 3932195571 [weight=1] + 907040973 -> 341781252 [weight=1] + 907040973 -> 907040973 [weight=1] + 907040973 -> 2956543858 [weight=1] + 907040973 -> 3031670352 [weight=1] + 907040973 -> 3260494834 [weight=1] + 907040973 -> 3956835859 [weight=1] + 3801418391 -> 3956835859 [weight=1] + 3801418391 -> 3965625862 [weight=1] + 3801418391 -> 4058374985 [weight=1] + 3801418391 -> 4267216582 [weight=1] + 3587387457 -> 625166020 [weight=1] + 3587387457 -> 698173556 [weight=1] + 3587387457 -> 1258450967 [weight=1] + 3587387457 -> 2403915804 [weight=1] + 3587387457 -> 2694424578 [weight=1] + 3587387457 -> 3587387457 [weight=1] + 3587387457 -> 3937712037 [weight=1] + 3587387457 -> 4040258515 [weight=1] + 4248627782 -> 1258450967 [weight=1] + 4248627782 -> 2093178660 [weight=1] + 4248627782 -> 2848633694 [weight=1] + 4248627782 -> 4225915748 [weight=1] + 1258450967 -> 489079066 [weight=1] + 1258450967 -> 1005042913 [weight=1] + 1258450967 -> 1257748804 [weight=1] + 1258450967 -> 1258450967 [weight=1] + 1258450967 -> 1402067371 [weight=1] + 1258450967 -> 2698673405 [weight=1] + 1258450967 -> 3587387457 [weight=1] + 1258450967 -> 3937712037 [weight=1] + 3043258635 -> 114033711 [weight=1] + 3043258635 -> 730092841 [weight=1] + 3043258635 -> 2675173574 [weight=1] + 3043258635 -> 3257104108 [weight=1] + 3980964254 -> 688080727 [weight=1] + 3980964254 -> 1099471454 [weight=1] + 3980964254 -> 3569664228 [weight=1] + 3980964254 -> 3818475453 [weight=1] + 2343540229 -> 2343540229 [weight=1] + 2343540229 -> 2878229955 [weight=1] + 3730757465 -> 1258450967 [weight=1] + 3730757465 -> 2389889247 [weight=1] + 3730757465 -> 2445954675 [weight=1] + 3730757465 -> 2757872035 [weight=1] + 3730757465 -> 3031670352 [weight=1] + 3730757465 -> 3260494834 [weight=1] + 3730757465 -> 3283303280 [weight=1] + 3730757465 -> 3730757465 [weight=1] + 3730757465 -> 3965625862 [weight=1] + 3041433247 -> 340839238 [weight=1] + 3041433247 -> 1807202653 [weight=1] + 3041433247 -> 2304576397 [weight=1] + 3041433247 -> 2445954675 [weight=1] + 3041433247 -> 3041433247 [weight=1] + 93601957 -> 93601957 [weight=1] + 93601957 -> 3682568289 [weight=1] + 3701305222 -> 1402067371 [weight=1] + 3701305222 -> 2698673405 [weight=1] + 3024132584 -> 1257748804 [weight=1] + 3024132584 -> 2001959156 [weight=1] + 3031670352 -> 677448650 [weight=1] + 3031670352 -> 907040973 [weight=1] + 3031670352 -> 2614247803 [weight=1] + 3031670352 -> 3031670352 [weight=1] + 3031670352 -> 3610445940 [weight=1] + 3031670352 -> 3715967540 [weight=1] + 1389186369 -> 19331105 [weight=1] + 1389186369 -> 1389186369 [weight=1] + 1389186369 -> 1451784272 [weight=1] + 1389186369 -> 2457784034 [weight=1] + 1389186369 -> 2536618053 [weight=1] + 1389186369 -> 2611811393 [weight=1] + 1389186369 -> 2662161374 [weight=1] + 1389186369 -> 3043258635 [weight=1] + 1389186369 -> 3992611598 [weight=1] + 1476137680 -> 1594237941 [weight=1] + 1476137680 -> 2021613852 [weight=1] + 3408895888 -> 907040973 [weight=1] + 3408895888 -> 1451784272 [weight=1] + 3408895888 -> 1809647678 [weight=1] + 3408895888 -> 2093178660 [weight=1] + 3408895888 -> 2577465764 [weight=1] + 3408895888 -> 3260494834 [weight=1] + 3408895888 -> 3408895888 [weight=1] + 3408895888 -> 3908895871 [weight=1] + 3408895888 -> 4225915748 [weight=1] + 1025807162 -> 1211446481 [weight=1] + 1025807162 -> 2587689007 [weight=1] + 1257748804 -> 907040973 [weight=1] + 1257748804 -> 1258450967 [weight=1] + 1257748804 -> 1451784272 [weight=1] + 1257748804 -> 2093178660 [weight=1] + 1257748804 -> 2577465764 [weight=1] + 1257748804 -> 2848633694 [weight=1] + 1257748804 -> 3024132584 [weight=1] + 1257748804 -> 3408895888 [weight=1] + 1257748804 -> 4127025499 [weight=1] + 1257748804 -> 4225915748 [weight=1] + 3806784681 -> 2057570518 [weight=1] + 3806784681 -> 4006653452 [weight=1] + 4225915748 -> 1451784272 [weight=1] + 4225915748 -> 3408895888 [weight=1] + 4225915748 -> 3653750597 [weight=1] + 4225915748 -> 3844664360 [weight=1] + 4225915748 -> 3908895871 [weight=1] + 4225915748 -> 4127025499 [weight=1] + 4225915748 -> 4225915748 [weight=1] + 4225915748 -> 4248627782 [weight=1] + 616242749 -> 3116854283 [weight=1] + 616242749 -> 4225915748 [weight=1] + 489079066 -> 489079066 [weight=1] + 489079066 -> 1005042913 [weight=1] + 489079066 -> 1258450967 [weight=1] + 489079066 -> 3937712037 [weight=1] + 3863142590 -> 3354606782 [weight=1] + 3863142590 -> 3594480722 [weight=1] + 730092841 -> 340839238 [weight=1] + 730092841 -> 730092841 [weight=1] + 730092841 -> 1807202653 [weight=1] + 730092841 -> 2304576397 [weight=1] + 730092841 -> 3937712037 [weight=1] + 625166020 -> 443214995 [weight=1] + 625166020 -> 625166020 [weight=1] + 625166020 -> 1687961054 [weight=1] + 625166020 -> 2536618053 [weight=1] + 2757872035 -> 907040973 [weight=1] + 2757872035 -> 2389889247 [weight=1] + 2757872035 -> 2403915804 [weight=1] + 2757872035 -> 2757872035 [weight=1] + 2757872035 -> 3354606782 [weight=1] + 2757872035 -> 3594480722 [weight=1] + 2757872035 -> 3965625862 [weight=1] + 2757872035 -> 4040258515 [weight=1] + 2389889247 -> 2389889247 [weight=1] + 2389889247 -> 2757872035 [weight=1] + 3818475453 -> 1240788070 [weight=1] + 3818475453 -> 1971595665 [weight=1] + 3818475453 -> 2576868663 [weight=1] + 3818475453 -> 3587387457 [weight=1] + 3818475453 -> 3720302707 [weight=1] + 3818475453 -> 3818475453 [weight=1] + 3818475453 -> 4040258515 [weight=1] + 3818475453 -> 4225915748 [weight=1] + 3818475453 -> 4248627782 [weight=1] + 2611811393 -> 2662161374 [weight=1] + 2611811393 -> 3806784681 [weight=1] + 4006653452 -> 1099471454 [weight=1] + 4006653452 -> 3818475453 [weight=1] + 3283303280 -> 2675173574 [weight=1] + 3283303280 -> 3257104108 [weight=1] + 3283303280 -> 4006653452 [weight=1] + 566349598 -> 1451784272 [weight=1] + 566349598 -> 3844664360 [weight=1] + 1102237284 -> 1594237941 [weight=1] + 1102237284 -> 2021613852 [weight=1] + 3886701531 -> 341183630 [weight=1] + 3886701531 -> 496639972 [weight=1] + 3886701531 -> 504513812 [weight=1] + 3886701531 -> 730092841 [weight=1] + 3886701531 -> 2563037542 [weight=1] + 3886701531 -> 3720302707 [weight=1] + 3886701531 -> 3886701531 [weight=1] + 3886701531 -> 4040258515 [weight=1] + 3886701531 -> 4280082815 [weight=1] + 1807202653 -> 284311100 [weight=1] + 1807202653 -> 730092841 [weight=1] + 1807202653 -> 1807202653 [weight=1] + 1807202653 -> 2445954675 [weight=1] + 1807202653 -> 2694424578 [weight=1] + 1807202653 -> 3041433247 [weight=1] + 1807202653 -> 3539985169 [weight=1] + 1807202653 -> 3965625862 [weight=1] + 3653750597 -> 2001959156 [weight=1] + 3653750597 -> 2093178660 [weight=1] + 3653750597 -> 2577465764 [weight=1] + 3653750597 -> 3653750597 [weight=1] + 3653750597 -> 4127025499 [weight=1] + 3653750597 -> 4225915748 [weight=1] + 3932195571 -> 2424212868 [weight=1] + 3932195571 -> 3932195571 [weight=1] + 2614247803 -> 2536618053 [weight=1] + 2614247803 -> 2614247803 [weight=1] + 340839238 -> 340839238 [weight=1] + 340839238 -> 730092841 [weight=1] + 340839238 -> 3937712037 [weight=1] + 340839238 -> 3965625862 [weight=1] + 703869277 -> 1258450967 [weight=1] + 703869277 -> 2445954675 [weight=1] + 1005042913 -> 1005042913 [weight=1] + 1005042913 -> 1596605361 [weight=1] + 2093178660 -> 635681421 [weight=1] + 2093178660 -> 688080727 [weight=1] + 2093178660 -> 1451784272 [weight=1] + 2093178660 -> 1947342348 [weight=1] + 2093178660 -> 2093178660 [weight=1] + 2093178660 -> 2878229955 [weight=1] + 2093178660 -> 3408895888 [weight=1] + 2093178660 -> 4248627782 [weight=1] + 269858152 -> 269858152 [weight=1] + 269858152 -> 2445954675 [weight=1] + 269858152 -> 2925632667 [weight=1] + 269858152 -> 3260494834 [weight=1] + 269858152 -> 3358219454 [weight=1] + 269858152 -> 3730757465 [weight=1] + 269858152 -> 3965625862 [weight=1] + 3720302707 -> 341183630 [weight=1] + 3720302707 -> 3234209085 [weight=1] + 3720302707 -> 3260494834 [weight=1] + 3720302707 -> 3283303280 [weight=1] + 3720302707 -> 3720302707 [weight=1] + 3720302707 -> 3818475453 [weight=1] + 3992611598 -> 767075551 [weight=1] + 3992611598 -> 1389186369 [weight=1] + 3992611598 -> 2536618053 [weight=1] + 3992611598 -> 2662161374 [weight=1] + 3992611598 -> 3992611598 [weight=1] + 2694424578 -> 1807202653 [weight=1] + 2694424578 -> 2694424578 [weight=1] + 2694424578 -> 3260494834 [weight=1] + 2694424578 -> 3801418391 [weight=1] + 2210017943 -> 1669442311 [weight=1] + 2210017943 -> 2675173574 [weight=1] + 1947342348 -> 1744448600 [weight=1] + 1947342348 -> 3031670352 [weight=1] + 1947342348 -> 4040258515 [weight=1] + 1947342348 -> 4248627782 [weight=1] + 1594237941 -> 2951794785 [weight=1] + 1594237941 -> 3385205003 [weight=1] + 1594237941 -> 3863142590 [weight=1] + 1594237941 -> 4072798414 [weight=1] + 2577465764 -> 1451784272 [weight=1] + 2577465764 -> 2093178660 [weight=1] + 2577465764 -> 2577465764 [weight=1] + 2577465764 -> 3026510743 [weight=1] + 2577465764 -> 3260494834 [weight=1] + 2577465764 -> 3408895888 [weight=1] + 2577465764 -> 3653750597 [weight=1] + 2576868663 -> 2576868663 [weight=1] + 2576868663 -> 3715967540 [weight=1] + 2929388316 -> 443214995 [weight=1] + 2929388316 -> 1687961054 [weight=1] + 1211446481 -> 698173556 [weight=1] + 1211446481 -> 1025807162 [weight=1] + 1211446481 -> 1211446481 [weight=1] + 1211446481 -> 1807202653 [weight=1] + 1211446481 -> 2250553917 [weight=1] + 1211446481 -> 2895857263 [weight=1] + 1211446481 -> 3886701531 [weight=1] + 3956835859 -> 284311100 [weight=1] + 3956835859 -> 1543204776 [weight=1] + 3956835859 -> 2445954675 [weight=1] + 3956835859 -> 3260494834 [weight=1] + 3956835859 -> 3594480722 [weight=1] + 3956835859 -> 3801418391 [weight=1] + 3956835859 -> 3956835859 [weight=1] + 3164977462 -> 3116854283 [weight=1] + 3164977462 -> 4225915748 [weight=1] + 2675173574 -> 449175020 [weight=1] + 2675173574 -> 2210017943 [weight=1] + 2675173574 -> 2611811393 [weight=1] + 2675173574 -> 3806784681 [weight=1] + 1744448600 -> 2403915804 [weight=1] + 1744448600 -> 3594480722 [weight=1] + 4040258515 -> 730092841 [weight=1] + 4040258515 -> 1543204776 [weight=1] + 4040258515 -> 1947342348 [weight=1] + 4040258515 -> 2698673405 [weight=1] + 4040258515 -> 2757872035 [weight=1] + 4040258515 -> 3587387457 [weight=1] + 4040258515 -> 3886701531 [weight=1] + 4040258515 -> 4040258515 [weight=1] + 4280082815 -> 2403915804 [weight=1] + 4280082815 -> 2563037542 [weight=1] + 4280082815 -> 3886701531 [weight=1] + 4280082815 -> 4280082815 [weight=1] + 2359991343 -> 688080727 [weight=1] + 2359991343 -> 2210017943 [weight=1] + 2359991343 -> 2611811393 [weight=1] + 2359991343 -> 3569664228 [weight=1] + 1669442311 -> 566349598 [weight=1] + 1669442311 -> 2268642208 [weight=1] + 3372683600 -> 512258003 [weight=1] + 3372683600 -> 2695800214 [weight=1] + 2698673405 -> 1257748804 [weight=1] + 2698673405 -> 1947342348 [weight=1] + 2698673405 -> 3818475453 [weight=1] + 2698673405 -> 4072798414 [weight=1] + 2001959156 -> 2001959156 [weight=1] + 2001959156 -> 2956543858 [weight=1] + 2001959156 -> 3024132584 [weight=1] + 2001959156 -> 3653750597 [weight=1] + 2001959156 -> 3956835859 [weight=1] + 2001959156 -> 4127025499 [weight=1] + 2895857263 -> 2445954675 [weight=1] + 2895857263 -> 3257104108 [weight=1] + 3615109539 -> 19331105 [weight=1] + 3615109539 -> 1714495371 [weight=1] + 3615109539 -> 3615109539 [weight=1] + 3615109539 -> 4280082815 [weight=1] + 3722414022 -> 3385205003 [weight=1] + 3722414022 -> 4072798414 [weight=1] +}