commit 299b5a4459a9366c99ce7a4ed5076797d91971ea
parent 6fcd8e50ff604536b78b5be27b91c3ec3f34e68c
Author: dracuxan <[email protected]>
Date: Sun, 19 Apr 2026 23:53:01 +0530
feat: reinsertion strategy plus graphs
Diffstat:
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]
+}