aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Tasks.org42
-rw-r--r--analysis/vis.livemd149
-rw-r--r--nix/tex-env.nix1
-rw-r--r--thesis/assets/insert_small_n.json2
-rw-r--r--thesis/main.tex1
-rw-r--r--thesis/parts/results.tex168
6 files changed, 247 insertions, 116 deletions
diff --git a/Tasks.org b/Tasks.org
index bc7bd59..b46518f 100644
--- a/Tasks.org
+++ b/Tasks.org
@@ -40,7 +40,7 @@
*** DONE Lead to next chapter
-** TODO Design
+** DONE Design
*** DONE Usage Example
@@ -66,17 +66,13 @@
**** DONE Segmentation
-**** TODO Limitations w/ pre-benchmark steps
-
*** DONE Selection process & adaptive containers
**** DONE Selection process
-**** TODO Adaptive container detection
-
-**** TODO Code generation
+**** DONE Adaptive container detection
-** TODO Implementation
+** DONE Implementation
*** DONE Modifications to Primrose
@@ -94,7 +90,7 @@
**** DONE Chosen benchmarks
-**** TODO Fitting
+**** DONE Fitting
*** DONE Profiling wrapper
@@ -110,21 +106,7 @@
**** DONE Generated code (opaque types)
-*** TODO Misc Concerns
-
-**** TODO Explain cargo's role in rust projects & how it is integrated
-
-**** TODO Caching and stuff
-
-**** TODO Ease of use
-
-**** TODO Integration w/ Cargo
-
-***** TODO Metadata fetching
-
-***** TODO Caching of build dependencies
-
-** TODO Results & Analysis
+** DONE Results & Analysis
*** DONE Testing setup, benchmarking rationale
@@ -150,18 +132,18 @@
**** DONE Summarise predicted versus actual
-**** TODO Evaluate performance
+**** DONE Evaluate performance
-**** TODO Comment on distribution of best implementation
+**** DONE Comment on distribution of best implementation
-**** TODO Surprising ones / Explain failures
+**** DONE Surprising ones / Explain failures
-*** TODO Performance of adaptive containers
+*** DONE Performance of adaptive containers
-**** TODO Find where adaptive containers get suggested
+**** DONE Find where adaptive containers get suggested
-**** TODO Comment on relative performance speedup
+**** DONE Comment on relative performance speedup
-**** TODO Suggest future improvements?
+**** DONE Suggest future improvements?
** TODO Conclusion
diff --git a/analysis/vis.livemd b/analysis/vis.livemd
index 0aa2711..6a0a7c5 100644
--- a/analysis/vis.livemd
+++ b/analysis/vis.livemd
@@ -245,6 +245,21 @@ graph
```elixir
graph =
+ CostModel.plot(
+ cost_models,
+ cost_model_points,
+ ["HashSet", "BTreeSet"],
+ "insert",
+ ns: 1..500//10,
+ # y_domain: [0, 4000],
+ draw_points: true
+ )
+
+graph
+```
+
+```elixir
+graph =
CostModel.split_plot(
cost_models,
cost_model_points,
@@ -457,29 +472,22 @@ DF.n_rows(singular_benchmarks)
```
```elixir
-# Best and predicted best implementation for each container type
-selection_comparison =
- singular_benchmarks
- |> DF.explode("using")
- |> DF.unnest("using")
- |> DF.group_by(["proj"])
- |> DF.filter(time == min(time))
- |> DF.join(
- cost_estimates
- |> DF.filter(not contains(impl, "until"))
- |> DF.group_by(["proj", "ctn"])
- |> DF.filter(cost == min(cost))
- |> DF.rename(%{"impl" => "predicted_impl"})
- )
- |> DF.select(["proj", "ctn", "impl", "predicted_impl"])
- |> DF.rename(%{"impl" => "best_impl"})
+display_using = fn using ->
+ using
+ |> Enum.map(fn %{"ctn" => ctn, "impl" => impl} -> ctn <> "=" <> impl end)
+ |> Enum.join(", ")
+end
```
```elixir
# Tools for printing out latex
defmodule Latex do
- def escape_latex(str) do
- String.replace(str, ~r/(\\|{|}|_|\^|#|&|\$|%|~)/, "\\\\\\1")
+ def escape_latex(val) do
+ if is_number(val) do
+ "$" <> to_string(val) <> "$"
+ else
+ String.replace(to_string(val), ~r/(\\|{|}|_|\^|#|&|\$|%|~)/, "\\\\\\1")
+ end
end
def table(df) do
@@ -493,14 +501,51 @@ defmodule Latex do
(DF.to_rows(df)
|> Enum.map(fn row ->
cols
- |> Enum.map(&escape_latex(Kernel.to_string(row[&1])))
+ |> Enum.map(&escape_latex(row[&1]))
|> Enum.join(" & ")
end)
|> Enum.join(" \\\\\n")) <>
" \\\\\n\\end{tabular}"
end
end
+```
+
+```elixir
+singular_benchmarks
+|> DF.group_by("proj")
+|> DF.summarise(max: max(time), min: min(time))
+|> DF.mutate(spread: round((max - min) * ^(10 ** -6), 2), slowdown: round(max / min - 1, 1))
+|> DF.discard(["max", "min"])
+|> DF.sort_by(proj)
+|> DF.rename(%{
+ "proj" => "Project",
+ "spread" => "Maximum slowdown (ms)",
+ "slowdown" => "Maximum relative slowdown"
+})
+|> Latex.table()
+|> IO.puts()
+```
+```elixir
+# Best and predicted best implementation for each container type
+selection_comparison =
+ singular_benchmarks
+ |> DF.explode("using")
+ |> DF.unnest("using")
+ |> DF.group_by(["proj"])
+ |> DF.filter(time == min(time))
+ |> DF.join(
+ cost_estimates
+ |> DF.filter(not contains(impl, "until"))
+ |> DF.group_by(["proj", "ctn"])
+ |> DF.filter(cost == min(cost))
+ |> DF.rename(%{"impl" => "predicted_impl"})
+ )
+ |> DF.select(["proj", "ctn", "impl", "predicted_impl"])
+ |> DF.rename(%{"impl" => "best_impl"})
+```
+
+```elixir
Latex.table(selection_comparison)
selection_comparison
@@ -517,6 +562,8 @@ selection_comparison
SE.not_equal(selection_comparison["best_impl"], selection_comparison["predicted_impl"])
|> SE.transform(&if &1, do: "*", else: "")
)
+|> DF.ungroup()
+|> DF.sort_by(proj)
|> DF.rename(%{
"mark" => " ",
"proj" => "Project",
@@ -531,32 +578,37 @@ selection_comparison
## Adaptive Containers
```elixir
-# Projects where an adaptive container was suggested
-adaptive_projs =
- (estimated_costs
- |> DF.to_rows()
- |> Enum.filter(fn %{"using" => using} ->
- using
- |> Enum.map(fn %{"impl" => impl} -> String.contains?(impl, "until") end)
- |> Enum.any?()
- end)
- |> DF.new()
- |> DF.distinct(["proj"]))["proj"]
+# Container types where an adaptive container was suggested
+adaptive_suggestions =
+ estimated_costs
+ |> DF.explode("using")
+ |> DF.unnest("using")
+ |> DF.filter(contains(impl, "until"))
+ |> DF.distinct(["proj", "ctn", "impl"])
+
+adaptive_suggestions
+# hacky but oh well
+|> DF.mutate(impl: replace(impl, "std::collections::", ""))
+|> DF.mutate(impl: replace(impl, "std::vec::", ""))
+|> DF.mutate(impl: replace(impl, "primrose_library::", ""))
+|> DF.sort_by(asc: proj, asc: ctn)
+|> DF.rename(%{
+ "proj" => "Project",
+ "ctn" => "Container Type",
+ "impl" => "Suggestion"
+})
+|> Latex.table()
+|> IO.puts()
```
```elixir
+adaptive_projs = DF.distinct(adaptive_suggestions, ["proj"])["proj"]
adaptive_estimated_costs = estimated_costs |> DF.filter(proj in ^adaptive_projs)
adaptive_raw_benchmarks =
raw_benchmarks
|> DF.filter(proj in ^adaptive_projs)
-display_using = fn using ->
- using
- |> Enum.map(fn %{"ctn" => ctn, "impl" => impl} -> ctn <> "=" <> impl end)
- |> Enum.join(", ")
-end
-
adaptive_raw_benchmarks =
adaptive_raw_benchmarks
|> DF.put(
@@ -573,6 +625,10 @@ adaptive_raw_benchmarks =
```
```elixir
+format_dur = fn dur ->
+ String.split(to_string(dur), " ") |> hd
+end
+
best_usings =
adaptive_raw_benchmarks
# get best set of assignments for each project
@@ -586,13 +642,24 @@ best_usings =
# select adaptive container and the best assignment for each project
|> DF.join(adaptive_raw_benchmarks)
|> DF.filter(using == best_using or contains(using, "until"))
- # summary data point
- |> DF.mutate(value: cast(mean, :string) <> " +/- " <> cast(stderr, :string))
+
+# summary data point
+
+best_usings =
+ best_usings
+ |> DF.put("mean", SE.transform(best_usings["mean"], format_dur))
+ |> DF.put("stderr", SE.transform(best_usings["stderr"], format_dur))
+ |> DF.mutate(value: mean <> " +/- " <> stderr)
|> DF.select(["proj", "using", "n", "value"])
```
```elixir
-best_usings
-|> DF.filter(proj == "aoc_2022_09")
-|> DF.pivot_wider("n", "value")
+for proj <- SE.distinct(best_usings["proj"]) |> SE.to_enum() do
+ best_usings
+ |> DF.filter(proj == ^proj)
+ |> DF.select(["proj", "using", "n", "value"])
+ |> DF.pivot_wider("n", "value")
+ |> Latex.table()
+ |> IO.puts()
+end
```
diff --git a/nix/tex-env.nix b/nix/tex-env.nix
index 13137fe..403bf48 100644
--- a/nix/tex-env.nix
+++ b/nix/tex-env.nix
@@ -14,5 +14,6 @@ pkgs.texlive.combine {
zapfchan
latex-bin
latexmk
+ adjustbox
;
}
diff --git a/thesis/assets/insert_small_n.json b/thesis/assets/insert_small_n.json
index e17b175..abf4de8 100644
--- a/thesis/assets/insert_small_n.json
+++ b/thesis/assets/insert_small_n.json
@@ -1 +1 @@
-{"$schema":"https://vega.github.io/schema/vega-lite/v5.json","height":250,"layer":[{"data":{"values":[{"impl":"BTreeSet","n":1,"op":"insert","t":18.076851637320825},{"impl":"BTreeSet","n":11,"op":"insert","t":33.665771829276444},{"impl":"BTreeSet","n":21,"op":"insert","t":37.87193340568318},{"impl":"BTreeSet","n":31,"op":"insert","t":40.40661054191706},{"impl":"BTreeSet","n":41,"op":"insert","t":42.22709874089264},{"impl":"BTreeSet","n":51,"op":"insert","t":43.64895053908166},{"impl":"BTreeSet","n":61,"op":"insert","t":44.8159785719409},{"impl":"BTreeSet","n":71,"op":"insert","t":45.8059397870653},{"impl":"BTreeSet","n":81,"op":"insert","t":46.66566783475544},{"impl":"BTreeSet","n":91,"op":"insert","t":47.42556718359447},{"impl":"BTreeSet","n":101,"op":"insert","t":48.10649924425795},{"impl":"BTreeSet","n":111,"op":"insert","t":48.72340048345857},{"impl":"BTreeSet","n":121,"op":"insert","t":49.287333337638515},{"impl":"BTreeSet","n":131,"op":"insert","t":49.80671997646803},{"impl":"BTreeSet","n":141,"op":"insert","t":50.28812093662533},{"impl":"BTreeSet","n":151,"op":"insert","t":50.73674632953512},{"impl":"BTreeSet","n":161,"op":"insert","t":51.15680279239976},{"impl":"BTreeSet","n":171,"op":"insert","t":51.551735709219614},{"impl":"BTreeSet","n":181,"op":"insert","t":51.924402487819485},{"impl":"BTreeSet","n":191,"op":"insert","t":52.27719917833814},{"impl":"BTreeSet","n":201,"op":"insert","t":52.61215474239215},{"impl":"BTreeSet","n":211,"op":"insert","t":52.93100241040586},{"impl":"BTreeSet","n":221,"op":"insert","t":53.23523450085467},{"impl":"BTreeSet","n":231,"op":"insert","t":53.526145097906976},{"impl":"BTreeSet","n":241,"op":"insert","t":53.80486367805183},{"impl":"BTreeSet","n":251,"op":"insert","t":54.07238189572098},{"impl":"BTreeSet","n":261,"op":"insert","t":54.32957513289575},{"impl":"BTreeSet","n":271,"op":"insert","t":54.57721999485979},{"impl":"BTreeSet","n":281,"op":"insert","t":54.81600863413287},{"impl":"BTreeSet","n":291,"op":"insert","t":55.04656056853548},{"impl":"BTreeSet","n":301,"op":"insert","t":55.269432501709346},{"impl":"BTreeSet","n":311,"op":"insert","t":55.485126538040944},{"impl":"BTreeSet","n":321,"op":"insert","t":55.69409709704608},{"impl":"BTreeSet","n":331,"op":"insert","t":55.89675676672391},{"impl":"BTreeSet","n":341,"op":"insert","t":56.09348128545787},{"impl":"BTreeSet","n":351,"op":"insert","t":56.28461380366389},{"impl":"BTreeSet","n":361,"op":"insert","t":56.47046854663763},{"impl":"BTreeSet","n":371,"op":"insert","t":56.651333976811955},{"impl":"BTreeSet","n":381,"op":"insert","t":56.82747553534151},{"impl":"BTreeSet","n":391,"op":"insert","t":56.999138028432256},{"impl":"BTreeSet","n":401,"op":"insert","t":57.166547712263835},{"impl":"BTreeSet","n":411,"op":"insert","t":57.32991412106506},{"impl":"BTreeSet","n":421,"op":"insert","t":57.48943167540099},{"impl":"BTreeSet","n":431,"op":"insert","t":57.64528110163869},{"impl":"BTreeSet","n":441,"op":"insert","t":57.79763068858459},{"impl":"BTreeSet","n":451,"op":"insert","t":57.946637403205735},{"impl":"BTreeSet","n":461,"op":"insert","t":58.092447883981976},{"impl":"BTreeSet","n":471,"op":"insert","t":58.23519932764929},{"impl":"BTreeSet","n":481,"op":"insert","t":58.37502028277615},{"impl":"BTreeSet","n":491,"op":"insert","t":58.5120313616779},{"impl":"BTreeSet","n":501,"op":"insert","t":58.646345880550285},{"impl":"BTreeSet","n":511,"op":"insert","t":58.77807043633554},{"impl":"BTreeSet","n":521,"op":"insert","t":58.90730542767972},{"impl":"BTreeSet","n":531,"op":"insert","t":59.03414552635978},{"impl":"BTreeSet","n":541,"op":"insert","t":59.1586801047264},{"impl":"BTreeSet","n":551,"op":"insert","t":59.28099362399662},{"impl":"BTreeSet","n":561,"op":"insert","t":59.40116598762232},{"impl":"BTreeSet","n":571,"op":"insert","t":59.51927286343717},{"impl":"BTreeSet","n":581,"op":"insert","t":59.63538597783513},{"impl":"BTreeSet","n":591,"op":"insert","t":59.74957338484447},{"impl":"BTreeSet","n":601,"op":"insert","t":59.86189971262526},{"impl":"BTreeSet","n":611,"op":"insert","t":59.97242638962576},{"impl":"BTreeSet","n":621,"op":"insert","t":60.0812118523796},{"impl":"BTreeSet","n":631,"op":"insert","t":60.188311736703355},{"impl":"BTreeSet","n":641,"op":"insert","t":60.29377905386108},{"impl":"BTreeSet","n":651,"op":"insert","t":60.397664353092026},{"impl":"BTreeSet","n":661,"op":"insert","t":60.50001587174911},{"impl":"BTreeSet","n":671,"op":"insert","t":60.6008796741644},{"impl":"BTreeSet","n":681,"op":"insert","t":60.70029978024233},{"impl":"BTreeSet","n":691,"op":"insert","t":60.798318284679155},{"impl":"BTreeSet","n":701,"op":"insert","t":60.894975467616945},{"impl":"BTreeSet","n":711,"op":"insert","t":60.99030989746001},{"impl":"BTreeSet","n":721,"op":"insert","t":61.08435852651069},{"impl":"BTreeSet","n":731,"op":"insert","t":61.17715678001809},{"impl":"BTreeSet","n":741,"op":"insert","t":61.26873863917659},{"impl":"BTreeSet","n":751,"op":"insert","t":61.35913671856106},{"impl":"BTreeSet","n":761,"op":"insert","t":61.4483823384402},{"impl":"BTreeSet","n":771,"op":"insert","t":61.53650559236918},{"impl":"BTreeSet","n":781,"op":"insert","t":61.623535410426925},{"impl":"BTreeSet","n":791,"op":"insert","t":61.70949961843006},{"impl":"BTreeSet","n":801,"op":"insert","t":61.7944249934273},{"impl":"BTreeSet","n":811,"op":"insert","t":61.87833731575092},{"impl":"BTreeSet","n":821,"op":"insert","t":61.96126141787846},{"impl":"BTreeSet","n":831,"op":"insert","t":62.04322123033667},{"impl":"BTreeSet","n":841,"op":"insert","t":62.12423982485957},{"impl":"BTreeSet","n":851,"op":"insert","t":62.204339454995825},{"impl":"BTreeSet","n":861,"op":"insert","t":62.28354159434386},{"impl":"BTreeSet","n":871,"op":"insert","t":62.36186697257938},{"impl":"BTreeSet","n":881,"op":"insert","t":62.4393356094263},{"impl":"BTreeSet","n":891,"op":"insert","t":62.51596684671048},{"impl":"BTreeSet","n":901,"op":"insert","t":62.59177937862466},{"impl":"BTreeSet","n":911,"op":"insert","t":62.666791280323025},{"impl":"BTreeSet","n":921,"op":"insert","t":62.741020034954815},{"impl":"BTreeSet","n":931,"op":"insert","t":62.81448255923811},{"impl":"BTreeSet","n":941,"op":"insert","t":62.887195227667576},{"impl":"BTreeSet","n":951,"op":"insert","t":62.95917389544249},{"impl":"BTreeSet","n":961,"op":"insert","t":63.030433920195556},{"impl":"BTreeSet","n":971,"op":"insert","t":63.10099018259709},{"impl":"BTreeSet","n":981,"op":"insert","t":63.170857105903494},{"impl":"BTreeSet","n":991,"op":"insert","t":63.24004867451437},{"impl":"BTreeSet","n":1001,"op":"insert","t":63.30857845159817},{"impl":"BTreeSet","n":1011,"op":"insert","t":63.376459595841524},{"impl":"BTreeSet","n":1021,"op":"insert","t":63.44370487737442},{"impl":"BTreeSet","n":1031,"op":"insert","t":63.51032669291928},{"impl":"BTreeSet","n":1041,"op":"insert","t":63.57633708020871},{"impl":"BTreeSet","n":1051,"op":"insert","t":63.641747731714226},{"impl":"BTreeSet","n":1061,"op":"insert","t":63.706570007724764},{"impl":"BTreeSet","n":1071,"op":"insert","t":63.77081494881182},{"impl":"BTreeSet","n":1081,"op":"insert","t":63.83449328771523},{"impl":"BTreeSet","n":1091,"op":"insert","t":63.89761546068188},{"impl":"BTreeSet","n":1101,"op":"insert","t":63.96019161828685},{"impl":"BTreeSet","n":1111,"op":"insert","t":64.02223163576562},{"impl":"BTreeSet","n":1121,"op":"insert","t":64.0837451228831},{"impl":"BTreeSet","n":1131,"op":"insert","t":64.14474143336462},{"impl":"BTreeSet","n":1141,"op":"insert","t":64.20522967391156},{"impl":"BTreeSet","n":1151,"op":"insert","t":64.26521871282395},{"impl":"BTreeSet","n":1161,"op":"insert","t":64.32471718824975},{"impl":"BTreeSet","n":1171,"op":"insert","t":64.38373351608058},{"impl":"BTreeSet","n":1181,"op":"insert","t":64.44227589751175},{"impl":"BTreeSet","n":1191,"op":"insert","t":64.5003523262834},{"impl":"BTreeSet","n":1201,"op":"insert","t":64.55797059561914},{"impl":"BTreeSet","n":1211,"op":"insert","t":64.61513830487672},{"impl":"BTreeSet","n":1221,"op":"insert","t":64.67186286592549},{"impl":"BTreeSet","n":1231,"op":"insert","t":64.72815150926361},{"impl":"BTreeSet","n":1241,"op":"insert","t":64.78401128988784},{"impl":"BTreeSet","n":1251,"op":"insert","t":64.83944909292778},{"impl":"BTreeSet","n":1261,"op":"insert","t":64.89447163905572},{"impl":"BTreeSet","n":1271,"op":"insert","t":64.94908548968303},{"impl":"BTreeSet","n":1281,"op":"insert","t":65.00329705195269},{"impl":"BTreeSet","n":1291,"op":"insert","t":65.05711258353783},{"impl":"BTreeSet","n":1301,"op":"insert","t":65.11053819725518},{"impl":"BTreeSet","n":1311,"op":"insert","t":65.1635798655017},{"impl":"BTreeSet","n":1321,"op":"insert","t":65.2162434245229},{"impl":"BTreeSet","n":1331,"op":"insert","t":65.26853457851995},{"impl":"BTreeSet","n":1341,"op":"insert","t":65.3204589036033},{"impl":"BTreeSet","n":1351,"op":"insert","t":65.37202185159923},{"impl":"BTreeSet","n":1361,"op":"insert","t":65.4232287537162},{"impl":"BTreeSet","n":1371,"op":"insert","t":65.47408482407695},{"impl":"BTreeSet","n":1381,"op":"insert","t":65.52459516312214},{"impl":"BTreeSet","n":1391,"op":"insert","t":65.57476476089141},{"impl":"BTreeSet","n":1401,"op":"insert","t":65.62459850018664},{"impl":"BTreeSet","n":1411,"op":"insert","t":65.67410115962306},{"impl":"BTreeSet","n":1421,"op":"insert","t":65.72327741657233},{"impl":"BTreeSet","n":1431,"op":"insert","t":65.77213185000252},{"impl":"BTreeSet","n":1441,"op":"insert","t":65.82066894321927},{"impl":"BTreeSet","n":1451,"op":"insert","t":65.86889308651209},{"impl":"BTreeSet","n":1461,"op":"insert","t":65.91680857970977},{"impl":"BTreeSet","n":1471,"op":"insert","t":65.96441963464869},{"impl":"BTreeSet","n":1481,"op":"insert","t":66.01173037755746},{"impl":"BTreeSet","n":1491,"op":"insert","t":66.05874485136141},{"impl":"BTreeSet","n":1501,"op":"insert","t":66.10546701790989},{"impl":"BTreeSet","n":1511,"op":"insert","t":66.15190076012979},{"impl":"BTreeSet","n":1521,"op":"insert","t":66.19804988410799},{"impl":"BTreeSet","n":1531,"op":"insert","t":66.24391812110547},{"impl":"BTreeSet","n":1541,"op":"insert","t":66.28950912950597},{"impl":"BTreeSet","n":1551,"op":"insert","t":66.33482649670165},{"impl":"BTreeSet","n":1561,"op":"insert","t":66.37987374091803},{"impl":"BTreeSet","n":1571,"op":"insert","t":66.42465431298072},{"impl":"BTreeSet","n":1581,"op":"insert","t":66.46917159802616},{"impl":"BTreeSet","n":1591,"op":"insert","t":66.51342891715836},{"impl":"BTreeSet","n":1601,"op":"insert","t":66.55742952905373},{"impl":"BTreeSet","n":1611,"op":"insert","t":66.60117663151595},{"impl":"BTreeSet","n":1621,"op":"insert","t":66.6446733629828},{"impl":"BTreeSet","n":1631,"op":"insert","t":66.68792280398652},{"impl":"BTreeSet","n":1641,"op":"insert","t":66.73092797856974},{"impl":"BTreeSet","n":1651,"op":"insert","t":66.77369185565811},{"impl":"BTreeSet","n":1661,"op":"insert","t":66.81621735039181},{"impl":"BTreeSet","n":1671,"op":"insert","t":66.85850732541681},{"impl":"BTreeSet","n":1681,"op":"insert","t":66.90056459213781},{"impl":"BTreeSet","n":1691,"op":"insert","t":66.94239191193394},{"impl":"BTreeSet","n":1701,"op":"insert","t":66.98399199733856},{"impl":"BTreeSet","n":1711,"op":"insert","t":67.02536751318465},{"impl":"BTreeSet","n":1721,"op":"insert","t":67.06652107771663},{"impl":"BTreeSet","n":1731,"op":"insert","t":67.10745526367012},{"impl":"BTreeSet","n":1741,"op":"insert","t":67.1481725993205},{"impl":"BTreeSet","n":1751,"op":"insert","t":67.1886755695016},{"impl":"BTreeSet","n":1761,"op":"insert","t":67.22896661659506},{"impl":"BTreeSet","n":1771,"op":"insert","t":67.26904814149208},{"impl":"BTreeSet","n":1781,"op":"insert","t":67.30892250452784},{"impl":"BTreeSet","n":1791,"op":"insert","t":67.34859202638981},{"impl":"BTreeSet","n":1801,"op":"insert","t":67.38805898900077},{"impl":"BTreeSet","n":1811,"op":"insert","t":67.42732563637739},{"impl":"BTreeSet","n":1821,"op":"insert","t":67.46639417546528},{"impl":"BTreeSet","n":1831,"op":"insert","t":67.50526677695093},{"impl":"BTreeSet","n":1841,"op":"insert","t":67.54394557605177},{"impl":"BTreeSet","n":1851,"op":"insert","t":67.58243267328469},{"impl":"BTreeSet","n":1861,"op":"insert","t":67.62073013521396},{"impl":"BTreeSet","n":1871,"op":"insert","t":67.65883999517901},{"impl":"BTreeSet","n":1881,"op":"insert","t":67.69676425400284},{"impl":"BTreeSet","n":1891,"op":"insert","t":67.73450488068177},{"impl":"BTreeSet","n":1901,"op":"insert","t":67.77206381305675},{"impl":"BTreeSet","n":1911,"op":"insert","t":67.80944295846729},{"impl":"BTreeSet","n":1921,"op":"insert","t":67.84664419438826},{"impl":"BTreeSet","n":1931,"op":"insert","t":67.88366936905012},{"impl":"BTreeSet","n":1941,"op":"insert","t":67.9205203020431},{"impl":"BTreeSet","n":1951,"op":"insert","t":67.95719878490594},{"impl":"BTreeSet","n":1961,"op":"insert","t":67.99370658169958},{"impl":"BTreeSet","n":1971,"op":"insert","t":68.03004542956617},{"impl":"BTreeSet","n":1981,"op":"insert","t":68.06621703927406},{"impl":"BTreeSet","n":1991,"op":"insert","t":68.10222309574893},{"impl":"BTreeSet","n":2001,"op":"insert","t":68.13806525859167},{"impl":"BTreeSet","n":2011,"op":"insert","t":68.1737451625835},{"impl":"BTreeSet","n":2021,"op":"insert","t":68.20926441817826},{"impl":"BTreeSet","n":2031,"op":"insert","t":68.24462461198283},{"impl":"BTreeSet","n":2041,"op":"insert","t":68.27982730722559},{"impl":"BTreeSet","n":2051,"op":"insert","t":68.31487404421354},{"impl":"BTreeSet","n":2061,"op":"insert","t":68.34976634077815},{"impl":"BTreeSet","n":2071,"op":"insert","t":68.38450569271059},{"impl":"BTreeSet","n":2081,"op":"insert","t":68.4190935741864},{"impl":"BTreeSet","n":2091,"op":"insert","t":68.45353143817995},{"impl":"BTreeSet","n":2101,"op":"insert","t":68.48782071686905},{"impl":"BTreeSet","n":2111,"op":"insert","t":68.52196282202999},{"impl":"BTreeSet","n":2121,"op":"insert","t":68.55595914542316},{"impl":"BTreeSet","n":2131,"op":"insert","t":68.58981105916968},{"impl":"BTreeSet","n":2141,"op":"insert","t":68.62351991611912},{"impl":"BTreeSet","n":2151,"op":"insert","t":68.65708705020882},{"impl":"BTreeSet","n":2161,"op":"insert","t":68.69051377681467},{"impl":"BTreeSet","n":2171,"op":"insert","t":68.72380139309391},{"impl":"BTreeSet","n":2181,"op":"insert","t":68.75695117832008},{"impl":"BTreeSet","n":2191,"op":"insert","t":68.78996439421024},{"impl":"BTreeSet","n":2201,"op":"insert","t":68.82284228524476},{"impl":"BTreeSet","n":2211,"op":"insert","t":68.85558607897981},{"impl":"BTreeSet","n":2221,"op":"insert","t":68.88819698635298},{"impl":"BTreeSet","n":2231,"op":"insert","t":68.92067620198178},{"impl":"BTreeSet","n":2241,"op":"insert","t":68.95302490445567},{"impl":"BTreeSet","n":2251,"op":"insert","t":68.98524425662151},{"impl":"BTreeSet","n":2261,"op":"insert","t":69.01733540586264},{"impl":"BTreeSet","n":2271,"op":"insert","t":69.04929948437187},{"impl":"BTreeSet","n":2281,"op":"insert","t":69.08113760941852},{"impl":"BTreeSet","n":2291,"op":"insert","t":69.11285088360941},{"impl":"BTreeSet","n":2301,"op":"insert","t":69.14444039514443},{"impl":"BTreeSet","n":2311,"op":"insert","t":69.1759072180664},{"impl":"BTreeSet","n":2321,"op":"insert","t":69.20725241250557},{"impl":"BTreeSet","n":2331,"op":"insert","t":69.23847702491888},{"impl":"BTreeSet","n":2341,"op":"insert","t":69.2695820883241},{"impl":"BTreeSet","n":2351,"op":"insert","t":69.300568622529},{"impl":"BTreeSet","n":2361,"op":"insert","t":69.33143763435558},{"impl":"BTreeSet","n":2371,"op":"insert","t":69.36219011785965},{"impl":"BTreeSet","n":2381,"op":"insert","t":69.3928270545457},{"impl":"BTreeSet","n":2391,"op":"insert","t":69.4233494135774},{"impl":"BTreeSet","n":2401,"op":"insert","t":69.45375815198355},{"impl":"BTreeSet","n":2411,"op":"insert","t":69.48405421485987},{"impl":"BTreeSet","n":2421,"op":"insert","t":69.51423853556652},{"impl":"BTreeSet","n":2431,"op":"insert","t":69.54431203592169},{"impl":"BTreeSet","n":2441,"op":"insert","t":69.574275626391},{"impl":"BTreeSet","n":2451,"op":"insert","t":69.60413020627327},{"impl":"BTreeSet","n":2461,"op":"insert","t":69.63387666388229},{"impl":"BTreeSet","n":2471,"op":"insert","t":69.66351587672509},{"impl":"BTreeSet","n":2481,"op":"insert","t":69.69304871167648},{"impl":"BTreeSet","n":2491,"op":"insert","t":69.72247602515013},{"impl":"BTreeSet","n":2501,"op":"insert","t":69.75179866326621},{"impl":"BTreeSet","n":2511,"op":"insert","t":69.78101746201573},{"impl":"BTreeSet","n":2521,"op":"insert","t":69.81013324742153},{"impl":"BTreeSet","n":2531,"op":"insert","t":69.83914683569617},{"impl":"BTreeSet","n":2541,"op":"insert","t":69.8680590333966},{"impl":"BTreeSet","n":2551,"op":"insert","t":69.89687063757597},{"impl":"BTreeSet","n":2561,"op":"insert","t":69.92558243593227},{"impl":"BTreeSet","n":2571,"op":"insert","t":69.9541952069542},{"impl":"BTreeSet","n":2581,"op":"insert","t":69.98270972006412},{"impl":"BTreeSet","n":2591,"op":"insert","t":70.01112673575841},{"impl":"BTreeSet","n":2601,"op":"insert","t":70.03944700574488},{"impl":"BTreeSet","n":2611,"op":"insert","t":70.06767127307769},{"impl":"BTreeSet","n":2621,"op":"insert","t":70.09580027228975},{"impl":"BTreeSet","n":2631,"op":"insert","t":70.12383472952246},{"impl":"BTreeSet","n":2641,"op":"insert","t":70.15177536265298},{"impl":"BTreeSet","n":2651,"op":"insert","t":70.17962288141932},{"impl":"BTreeSet","n":2661,"op":"insert","t":70.20737798754278},{"impl":"BTreeSet","n":2671,"op":"insert","t":70.23504137484834},{"impl":"BTreeSet","n":2681,"op":"insert","t":70.26261372938255},{"impl":"BTreeSet","n":2691,"op":"insert","t":70.29009572952954},{"impl":"BTreeSet","n":2701,"op":"insert","t":70.31748804612457},{"impl":"BTreeSet","n":2711,"op":"insert","t":70.34479134256568},{"impl":"BTreeSet","n":2721,"op":"insert","t":70.37200627492322},{"impl":"BTreeSet","n":2731,"op":"insert","t":70.39913349204734},{"impl":"BTreeSet","n":2741,"op":"insert","t":70.4261736356736},{"impl":"BTreeSet","n":2751,"op":"insert","t":70.45312734052659},{"impl":"BTreeSet","n":2761,"op":"insert","t":70.47999523442162},{"impl":"BTreeSet","n":2771,"op":"insert","t":70.50677793836475},{"impl":"BTreeSet","n":2781,"op":"insert","t":70.53347606665082},{"impl":"BTreeSet","n":2791,"op":"insert","t":70.56009022695983},{"impl":"BTreeSet","n":2801,"op":"insert","t":70.58662102045162},{"impl":"BTreeSet","n":2811,"op":"insert","t":70.61306904185875},{"impl":"BTreeSet","n":2821,"op":"insert","t":70.63943487957782},{"impl":"BTreeSet","n":2831,"op":"insert","t":70.66571911575916},{"impl":"BTreeSet","n":2841,"op":"insert","t":70.69192232639493},{"impl":"BTreeSet","n":2851,"op":"insert","t":70.71804508140566},{"impl":"BTreeSet","n":2861,"op":"insert","t":70.74408794472532},{"impl":"BTreeSet","n":2871,"op":"insert","t":70.77005147438483},{"impl":"BTreeSet","n":2881,"op":"insert","t":70.79593622259415},{"impl":"BTreeSet","n":2891,"op":"insert","t":70.82174273582304},{"impl":"BTreeSet","n":2901,"op":"insert","t":70.84747155488026},{"impl":"BTreeSet","n":2911,"op":"insert","t":70.87312321499155},{"impl":"BTreeSet","n":2921,"op":"insert","t":70.89869824587618},{"impl":"BTreeSet","n":2931,"op":"insert","t":70.9241971718222},{"impl":"BTreeSet","n":2941,"op":"insert","t":70.94962051176056},{"impl":"BTreeSet","n":2951,"op":"insert","t":70.97496877933767},{"impl":"BTreeSet","n":2961,"op":"insert","t":71.00024248298705},{"impl":"BTreeSet","n":2971,"op":"insert","t":71.02544212599958},{"impl":"BTreeSet","n":2981,"op":"insert","t":71.05056820659259},{"impl":"BTreeSet","n":2991,"op":"insert","t":71.0756212179779},{"impl":"HashSet","n":1,"op":"insert","t":42.36046627462573},{"impl":"HashSet","n":11,"op":"insert","t":41.594022761659076},{"impl":"HashSet","n":21,"op":"insert","t":41.3877463759026},{"impl":"HashSet","n":31,"op":"insert","t":41.2637275126149},{"impl":"HashSet","n":41,"op":"insert","t":41.17485590519688},{"impl":"HashSet","n":51,"op":"insert","t":41.105602634862315},{"impl":"HashSet","n":61,"op":"insert","t":41.04889041818507},{"impl":"HashSet","n":71,"op":"insert","t":41.000892693231044},{"impl":"HashSet","n":81,"op":"insert","t":40.959304690214175},{"impl":"HashSet","n":91,"op":"insert","t":40.92263014949843},{"impl":"HashSet","n":101,"op":"insert","t":40.88984244282164},{"impl":"HashSet","n":111,"op":"insert","t":40.86020651927552},{"impl":"HashSet","n":121,"op":"insert","t":40.83317797608328},{"impl":"HashSet","n":131,"op":"insert","t":40.80834234283602},{"impl":"HashSet","n":141,"op":"insert","t":40.78537676349713},{"impl":"HashSet","n":151,"op":"insert","t":40.7640248389323},{"impl":"HashSet","n":161,"op":"insert","t":40.74407955281326},{"impl":"HashSet","n":171,"op":"insert","t":40.72537135147731},{"impl":"HashSet","n":181,"op":"insert","t":40.70775961664723},{"impl":"HashSet","n":191,"op":"insert","t":40.69112643430331},{"impl":"HashSet","n":201,"op":"insert","t":40.6753719555249},{"impl":"HashSet","n":211,"op":"insert","t":40.66041088486551},{"impl":"HashSet","n":221,"op":"insert","t":40.64616978259725},{"impl":"HashSet","n":231,"op":"insert","t":40.63258496446592},{"impl":"HashSet","n":241,"op":"insert","t":40.61960084686293},{"impl":"HashSet","n":251,"op":"insert","t":40.60716862865582},{"impl":"HashSet","n":261,"op":"insert","t":40.59524523069254},{"impl":"HashSet","n":271,"op":"insert","t":40.583792434803435},{"impl":"HashSet","n":281,"op":"insert","t":40.57277617889415},{"impl":"HashSet","n":291,"op":"insert","t":40.56216597535706},{"impl":"HashSet","n":301,"op":"insert","t":40.5519344277854},{"impl":"HashSet","n":311,"op":"insert","t":40.54205682670186},{"impl":"HashSet","n":321,"op":"insert","t":40.53251080928906},{"impl":"HashSet","n":331,"op":"insert","t":40.523276071335175},{"impl":"HashSet","n":341,"op":"insert","t":40.51433412206557},{"impl":"HashSet","n":351,"op":"insert","t":40.505668074419226},{"impl":"HashSet","n":361,"op":"insert","t":40.497262464793316},{"impl":"HashSet","n":371,"op":"insert","t":40.48910309742268},{"impl":"HashSet","n":381,"op":"insert","t":40.48117690946153},{"impl":"HashSet","n":391,"op":"insert","t":40.47347185354769},{"impl":"HashSet","n":401,"op":"insert","t":40.465976795199786},{"impl":"HashSet","n":411,"op":"insert","t":40.45868142285428},{"impl":"HashSet","n":421,"op":"insert","t":40.451576168718795},{"impl":"HashSet","n":431,"op":"insert","t":40.44465213891748},{"impl":"HashSet","n":441,"op":"insert","t":40.43790105164968},{"impl":"HashSet","n":451,"op":"insert","t":40.43131518228317},{"impl":"HashSet","n":461,"op":"insert","t":40.42488731446957},{"impl":"HashSet","n":471,"op":"insert","t":40.41861069650598},{"impl":"HashSet","n":481,"op":"insert","t":40.4124790022817},{"impl":"HashSet","n":491,"op":"insert","t":40.40648629624357},{"impl":"HashSet","n":501,"op":"insert","t":40.400627001893895},{"impl":"HashSet","n":511,"op":"insert","t":40.394895873401715},{"impl":"HashSet","n":521,"op":"insert","t":40.389287969965615},{"impl":"HashSet","n":531,"op":"insert","t":40.3837986326139},{"impl":"HashSet","n":541,"op":"insert","t":40.378423463169355},{"impl":"HashSet","n":551,"op":"insert","t":40.37315830514066},{"impl":"HashSet","n":561,"op":"insert","t":40.36799922633247},{"impl":"HashSet","n":571,"op":"insert","t":40.36294250299197},{"impl":"HashSet","n":581,"op":"insert","t":40.357984605331836},{"impl":"HashSet","n":591,"op":"insert","t":40.35312218428858},{"impl":"HashSet","n":601,"op":"insert","t":40.34835205939196},{"impl":"HashSet","n":611,"op":"insert","t":40.343671207635424},{"impl":"HashSet","n":621,"op":"insert","t":40.33907675325004},{"impl":"HashSet","n":631,"op":"insert","t":40.33456595829529},{"impl":"HashSet","n":641,"op":"insert","t":40.33013621398966},{"impl":"HashSet","n":651,"op":"insert","t":40.32578503271245},{"impl":"HashSet","n":661,"op":"insert","t":40.32151004061509},{"impl":"HashSet","n":671,"op":"insert","t":40.317308970787344},{"impl":"HashSet","n":681,"op":"insert","t":40.31317965692902},{"impl":"HashSet","n":691,"op":"insert","t":40.309120027482955},{"impl":"HashSet","n":701,"op":"insert","t":40.30512810018951},{"impl":"HashSet","n":711,"op":"insert","t":40.30120197702681},{"impl":"HashSet","n":721,"op":"insert","t":40.29733983950432},{"impl":"HashSet","n":731,"op":"insert","t":40.29353994428058},{"impl":"HashSet","n":741,"op":"insert","t":40.289800619078726},{"impl":"HashSet","n":751,"op":"insert","t":40.28612025887574},{"impl":"HashSet","n":761,"op":"insert","t":40.28249732234379},{"impl":"HashSet","n":771,"op":"insert","t":40.27893032852384},{"impl":"HashSet","n":781,"op":"insert","t":40.275417853713705},{"impl":"HashSet","n":791,"op":"insert","t":40.271958528553895},{"impl":"HashSet","n":801,"op":"insert","t":40.268551035296795},{"impl":"HashSet","n":811,"op":"insert","t":40.26519410524497},{"impl":"HashSet","n":821,"op":"insert","t":40.261886516346685},{"impl":"HashSet","n":831,"op":"insert","t":40.258627090936855},{"impl":"HashSet","n":841,"op":"insert","t":40.25541469361315},{"impl":"HashSet","n":851,"op":"insert","t":40.252248229237644},{"impl":"HashSet","n":861,"op":"insert","t":40.249126641055184},{"impl":"HashSet","n":871,"op":"insert","t":40.24604890892044},{"impl":"HashSet","n":881,"op":"insert","t":40.243014047626104},{"impl":"HashSet","n":891,"op":"insert","t":40.240021105325454},{"impl":"HashSet","n":901,"op":"insert","t":40.237069162043},{"impl":"HashSet","n":911,"op":"insert","t":40.23415732826728},{"impl":"HashSet","n":921,"op":"insert","t":40.23128474362044},{"impl":"HashSet","n":931,"op":"insert","t":40.228450575599815},{"impl":"HashSet","n":941,"op":"insert","t":40.225654018386464},{"impl":"HashSet","n":951,"op":"insert","t":40.22289429171698},{"impl":"HashSet","n":961,"op":"insert","t":40.22017063981413},{"impl":"HashSet","n":971,"op":"insert","t":40.21748233037281},{"impl":"HashSet","n":981,"op":"insert","t":40.21482865359815},{"impl":"HashSet","n":991,"op":"insert","t":40.21220892129221},{"impl":"HashSet","n":1001,"op":"insert","t":40.2096224659866},{"impl":"HashSet","n":1011,"op":"insert","t":40.20706864011823},{"impl":"HashSet","n":1021,"op":"insert","t":40.2045468152456},{"impl":"HashSet","n":1031,"op":"insert","t":40.20205638130328},{"impl":"HashSet","n":1041,"op":"insert","t":40.19959674589236},{"impl":"HashSet","n":1051,"op":"insert","t":40.19716733360489},{"impl":"HashSet","n":1061,"op":"insert","t":40.194767585380234},{"impl":"HashSet","n":1071,"op":"insert","t":40.19239695789163},{"impl":"HashSet","n":1081,"op":"insert","t":40.190054922961274},{"impl":"HashSet","n":1091,"op":"insert","t":40.1877409670023},{"impl":"HashSet","n":1101,"op":"insert","t":40.18545459048634},{"impl":"HashSet","n":1111,"op":"insert","t":40.18319530743493},{"impl":"HashSet","n":1121,"op":"insert","t":40.180962644933935},{"impl":"HashSet","n":1131,"op":"insert","t":40.17875614266936},{"impl":"HashSet","n":1141,"op":"insert","t":40.17657535248376},{"impl":"HashSet","n":1151,"op":"insert","t":40.17441983795183},{"impl":"HashSet","n":1161,"op":"insert","t":40.172289173974455},{"impl":"HashSet","n":1171,"op":"insert","t":40.17018294639021},{"impl":"HashSet","n":1181,"op":"insert","t":40.16810075160322},{"impl":"HashSet","n":1191,"op":"insert","t":40.16604219622688},{"impl":"HashSet","n":1201,"op":"insert","t":40.16400689674237},{"impl":"HashSet","n":1211,"op":"insert","t":40.161994479171376},{"impl":"HashSet","n":1221,"op":"insert","t":40.160004578762205},{"impl":"HashSet","n":1231,"op":"insert","t":40.1580368396888},{"impl":"HashSet","n":1241,"op":"insert","t":40.15609091476181},{"impl":"HashSet","n":1251,"op":"insert","t":40.15416646515143},{"impl":"HashSet","n":1261,"op":"insert","t":40.15226316012102},{"impl":"HashSet","n":1271,"op":"insert","t":40.15038067677151},{"impl":"HashSet","n":1281,"op":"insert","t":40.14851869979565},{"impl":"HashSet","n":1291,"op":"insert","t":40.14667692124188},{"impl":"HashSet","n":1301,"op":"insert","t":40.14485504028727},{"impl":"HashSet","n":1311,"op":"insert","t":40.14305276301922},{"impl":"HashSet","n":1321,"op":"insert","t":40.141269802225395},{"impl":"HashSet","n":1331,"op":"insert","t":40.1395058771916},{"impl":"HashSet","n":1341,"op":"insert","t":40.13776071350721},{"impl":"HashSet","n":1351,"op":"insert","t":40.13603404287786},{"impl":"HashSet","n":1361,"op":"insert","t":40.13432560294502},{"impl":"HashSet","n":1371,"op":"insert","t":40.13263513711214},{"impl":"HashSet","n":1381,"op":"insert","t":40.130962394377185},{"impl":"HashSet","n":1391,"op":"insert","t":40.12930712917116},{"impl":"HashSet","n":1401,"op":"insert","t":40.127669101202436},{"impl":"HashSet","n":1411,"op":"insert","t":40.12604807530659},{"impl":"HashSet","n":1421,"op":"insert","t":40.124443821301604},{"impl":"HashSet","n":1431,"op":"insert","t":40.12285611384804},{"impl":"HashSet","n":1441,"op":"insert","t":40.12128473231424},{"impl":"HashSet","n":1451,"op":"insert","t":40.11972946064597},{"impl":"HashSet","n":1461,"op":"insert","t":40.118190087240805},{"impl":"HashSet","n":1471,"op":"insert","t":40.11666640482655},{"impl":"HashSet","n":1481,"op":"insert","t":40.11515821034393},{"impl":"HashSet","n":1491,"op":"insert","t":40.11366530483317},{"impl":"HashSet","n":1501,"op":"insert","t":40.1121874933244},{"impl":"HashSet","n":1511,"op":"insert","t":40.11072458473168},{"impl":"HashSet","n":1521,"op":"insert","t":40.109276391750484},{"impl":"HashSet","n":1531,"op":"insert","t":40.107842730758634},{"impl":"HashSet","n":1541,"op":"insert","t":40.10642342172035},{"impl":"HashSet","n":1551,"op":"insert","t":40.10501828809349},{"impl":"HashSet","n":1561,"op":"insert","t":40.10362715673973},{"impl":"HashSet","n":1571,"op":"insert","t":40.10224985783761},{"impl":"HashSet","n":1581,"op":"insert","t":40.100886224798366},{"impl":"HashSet","n":1591,"op":"insert","t":40.09953609418438},{"impl":"HashSet","n":1601,"op":"insert","t":40.0981993056302},{"impl":"HashSet","n":1611,"op":"insert","t":40.09687570176607},{"impl":"HashSet","n":1621,"op":"insert","t":40.09556512814368},{"impl":"HashSet","n":1631,"op":"insert","t":40.09426743316443},{"impl":"HashSet","n":1641,"op":"insert","t":40.09298246800961},{"impl":"HashSet","n":1651,"op":"insert","t":40.091710086572945},{"impl":"HashSet","n":1661,"op":"insert","t":40.09045014539507},{"impl":"HashSet","n":1671,"op":"insert","t":40.08920250359989},{"impl":"HashSet","n":1681,"op":"insert","t":40.08796702283307},{"impl":"HashSet","n":1691,"op":"insert","t":40.08674356720204},{"impl":"HashSet","n":1701,"op":"insert","t":40.08553200321809},{"impl":"HashSet","n":1711,"op":"insert","t":40.08433219973989},{"impl":"HashSet","n":1721,"op":"insert","t":40.083144027918834},{"impl":"HashSet","n":1731,"op":"insert","t":40.081967361145885},{"impl":"HashSet","n":1741,"op":"insert","t":40.08080207499998},{"impl":"HashSet","n":1751,"op":"insert","t":40.07964804719789},{"impl":"HashSet","n":1761,"op":"insert","t":40.07850515754555},{"impl":"HashSet","n":1771,"op":"insert","t":40.07737328789067},{"impl":"HashSet","n":1781,"op":"insert","t":40.076252322076854},{"impl":"HashSet","n":1791,"op":"insert","t":40.07514214589882},{"impl":"HashSet","n":1801,"op":"insert","t":40.074042647058945},{"impl":"HashSet","n":1811,"op":"insert","t":40.07295371512508},{"impl":"HashSet","n":1821,"op":"insert","t":40.071875241489366},{"impl":"HashSet","n":1831,"op":"insert","t":40.07080711932835},{"impl":"HashSet","n":1841,"op":"insert","t":40.06974924356406},{"impl":"HashSet","n":1851,"op":"insert","t":40.06870151082622},{"impl":"HashSet","n":1861,"op":"insert","t":40.067663819415415},{"impl":"HashSet","n":1871,"op":"insert","t":40.066636069267275},{"impl":"HashSet","n":1881,"op":"insert","t":40.06561816191763},{"impl":"HashSet","n":1891,"op":"insert","t":40.06461000046856},{"impl":"HashSet","n":1901,"op":"insert","t":40.063611489555385},{"impl":"HashSet","n":1911,"op":"insert","t":40.06262253531441},{"impl":"HashSet","n":1921,"op":"insert","t":40.061643045351644},{"impl":"HashSet","n":1931,"op":"insert","t":40.0606729287123},{"impl":"HashSet","n":1941,"op":"insert","t":40.059712095851005},{"impl":"HashSet","n":1951,"op":"insert","t":40.05876045860283},{"impl":"HashSet","n":1961,"op":"insert","t":40.05781793015514},{"impl":"HashSet","n":1971,"op":"insert","t":40.05688442501995},{"impl":"HashSet","n":1981,"op":"insert","t":40.055959859007245},{"impl":"HashSet","n":1991,"op":"insert","t":40.05504414919871},{"impl":"HashSet","n":2001,"op":"insert","t":40.05413721392236},{"impl":"HashSet","n":2011,"op":"insert","t":40.05323897272763},{"impl":"HashSet","n":2021,"op":"insert","t":40.0523493463611},{"impl":"HashSet","n":2031,"op":"insert","t":40.051468256742965},{"impl":"HashSet","n":2041,"op":"insert","t":40.050595626943874},{"impl":"HashSet","n":2051,"op":"insert","t":40.04973138116251},{"impl":"HashSet","n":2061,"op":"insert","t":40.0488754447036},{"impl":"HashSet","n":2071,"op":"insert","t":40.048027743956496},{"impl":"HashSet","n":2081,"op":"insert","t":40.04718820637435},{"impl":"HashSet","n":2091,"op":"insert","t":40.04635676045361},{"impl":"HashSet","n":2101,"op":"insert","t":40.04553333571418},{"impl":"HashSet","n":2111,"op":"insert","t":40.04471786267999},{"impl":"HashSet","n":2121,"op":"insert","t":40.04391027285992},{"impl":"HashSet","n":2131,"op":"insert","t":40.0431104987294},{"impl":"HashSet","n":2141,"op":"insert","t":40.0423184737122},{"impl":"HashSet","n":2151,"op":"insert","t":40.041534132162845},{"impl":"HashSet","n":2161,"op":"insert","t":40.040757409349254},{"impl":"HashSet","n":2171,"op":"insert","t":40.039988241435964},{"impl":"HashSet","n":2181,"op":"insert","t":40.03922656546755},{"impl":"HashSet","n":2191,"op":"insert","t":40.03847231935263},{"impl":"HashSet","n":2201,"op":"insert","t":40.037725441848025},{"impl":"HashSet","n":2211,"op":"insert","t":40.036985872543454},{"impl":"HashSet","n":2221,"op":"insert","t":40.03625355184645},{"impl":"HashSet","n":2231,"op":"insert","t":40.03552842096771},{"impl":"HashSet","n":2241,"op":"insert","t":40.03481042190668},{"impl":"HashSet","n":2251,"op":"insert","t":40.03409949743752},{"impl":"HashSet","n":2261,"op":"insert","t":40.03339559109541},{"impl":"HashSet","n":2271,"op":"insert","t":40.032698647163066},{"impl":"HashSet","n":2281,"op":"insert","t":40.03200861065761},{"impl":"HashSet","n":2291,"op":"insert","t":40.03132542731773},{"impl":"HashSet","n":2301,"op":"insert","t":40.03064904359114},{"impl":"HashSet","n":2311,"op":"insert","t":40.0299794066222},{"impl":"HashSet","n":2321,"op":"insert","t":40.029316464239976},{"impl":"HashSet","n":2331,"op":"insert","t":40.02866016494638},{"impl":"HashSet","n":2341,"op":"insert","t":40.02801045790474},{"impl":"HashSet","n":2351,"op":"insert","t":40.02736729292843},{"impl":"HashSet","n":2361,"op":"insert","t":40.0267306204699},{"impl":"HashSet","n":2371,"op":"insert","t":40.02610039160983},{"impl":"HashSet","n":2381,"op":"insert","t":40.02547655804659},{"impl":"HashSet","n":2391,"op":"insert","t":40.02485907208588},{"impl":"HashSet","n":2401,"op":"insert","t":40.024247886630526},{"impl":"HashSet","n":2411,"op":"insert","t":40.02364295517065},{"impl":"HashSet","n":2421,"op":"insert","t":40.023044231773895},{"impl":"HashSet","n":2431,"op":"insert","t":40.0224516710759},{"impl":"HashSet","n":2441,"op":"insert","t":40.02186522827095},{"impl":"HashSet","n":2451,"op":"insert","t":40.02128485910294},{"impl":"HashSet","n":2461,"op":"insert","t":40.0207105198563},{"impl":"HashSet","n":2471,"op":"insert","t":40.02014216734731},{"impl":"HashSet","n":2481,"op":"insert","t":40.019579758915455},{"impl":"HashSet","n":2491,"op":"insert","t":40.01902325241507},{"impl":"HashSet","n":2501,"op":"insert","t":40.01847260620702},{"impl":"HashSet","n":2511,"op":"insert","t":40.017927779150654},{"impl":"HashSet","n":2521,"op":"insert","t":40.017388730595876},{"impl":"HashSet","n":2531,"op":"insert","t":40.016855420375364},{"impl":"HashSet","n":2541,"op":"insert","t":40.01632780879698},{"impl":"HashSet","n":2551,"op":"insert","t":40.01580585663628},{"impl":"HashSet","n":2561,"op":"insert","t":40.01528952512918},{"impl":"HashSet","n":2571,"op":"insert","t":40.01477877596485},{"impl":"HashSet","n":2581,"op":"insert","t":40.01427357127859},{"impl":"HashSet","n":2591,"op":"insert","t":40.013773873644986},{"impl":"HashSet","n":2601,"op":"insert","t":40.01327964607112},{"impl":"HashSet","n":2611,"op":"insert","t":40.01279085198993},{"impl":"HashSet","n":2621,"op":"insert","t":40.012307455253705},{"impl":"HashSet","n":2631,"op":"insert","t":40.0118294201277},{"impl":"HashSet","n":2641,"op":"insert","t":40.01135671128385},{"impl":"HashSet","n":2651,"op":"insert","t":40.01088929379467},{"impl":"HashSet","n":2661,"op":"insert","t":40.010427133127145},{"impl":"HashSet","n":2671,"op":"insert","t":40.00997019513689},{"impl":"HashSet","n":2681,"op":"insert","t":40.009518446062295},{"impl":"HashSet","n":2691,"op":"insert","t":40.00907185251884},{"impl":"HashSet","n":2701,"op":"insert","t":40.00863038149347},{"impl":"HashSet","n":2711,"op":"insert","t":40.00819400033917},{"impl":"HashSet","n":2721,"op":"insert","t":40.00776267676951},{"impl":"HashSet","n":2731,"op":"insert","t":40.00733637885338},{"impl":"HashSet","n":2741,"op":"insert","t":40.0069150750098},{"impl":"HashSet","n":2751,"op":"insert","t":40.00649873400282},{"impl":"HashSet","n":2761,"op":"insert","t":40.00608732493649},{"impl":"HashSet","n":2771,"op":"insert","t":40.00568081724995},{"impl":"HashSet","n":2781,"op":"insert","t":40.00527918071264},{"impl":"HashSet","n":2791,"op":"insert","t":40.00488238541951},{"impl":"HashSet","n":2801,"op":"insert","t":40.0044904017864},{"impl":"HashSet","n":2811,"op":"insert","t":40.00410320054539},{"impl":"HashSet","n":2821,"op":"insert","t":40.00372075274043},{"impl":"HashSet","n":2831,"op":"insert","t":40.00334302972284},{"impl":"HashSet","n":2841,"op":"insert","t":40.002970003146984},{"impl":"HashSet","n":2851,"op":"insert","t":40.00260164496603},{"impl":"HashSet","n":2861,"op":"insert","t":40.00223792742773},{"impl":"HashSet","n":2871,"op":"insert","t":40.00187882307039},{"impl":"HashSet","n":2881,"op":"insert","t":40.00152430471874},{"impl":"HashSet","n":2891,"op":"insert","t":40.00117434547999},{"impl":"HashSet","n":2901,"op":"insert","t":40.000828918739955},{"impl":"HashSet","n":2911,"op":"insert","t":40.0004879981592},{"impl":"HashSet","n":2921,"op":"insert","t":40.00015155766926},{"impl":"HashSet","n":2931,"op":"insert","t":39.99981957146897},{"impl":"HashSet","n":2941,"op":"insert","t":39.99949201402077},{"impl":"HashSet","n":2951,"op":"insert","t":39.9991688600472},{"impl":"HashSet","n":2961,"op":"insert","t":39.9988500845273},{"impl":"HashSet","n":2971,"op":"insert","t":39.9985356626932},{"impl":"HashSet","n":2981,"op":"insert","t":39.99822557002672},{"impl":"HashSet","n":2991,"op":"insert","t":39.997919782256005},{"impl":"SortedVecSet","n":1,"op":"insert","t":140.63478147706036},{"impl":"SortedVecSet","n":11,"op":"insert","t":73.60540067231153},{"impl":"SortedVecSet","n":21,"op":"insert","t":55.961778987197064},{"impl":"SortedVecSet","n":31,"op":"insert","t":45.57018654908772},{"impl":"SortedVecSet","n":41,"op":"insert","t":38.277262079155975},{"impl":"SortedVecSet","n":51,"op":"insert","t":32.713936483869816},{"impl":"SortedVecSet","n":61,"op":"insert","t":28.256258402657863},{"impl":"SortedVecSet","n":71,"op":"insert","t":24.56686837408178},{"impl":"SortedVecSet","n":81,"op":"insert","t":21.442572014471764},{"impl":"SortedVecSet","n":91,"op":"insert","t":18.751455257448},{"impl":"SortedVecSet","n":101,"op":"insert","t":16.403007936549074},{"impl":"SortedVecSet","n":111,"op":"insert","t":14.33242608863273},{"impl":"SortedVecSet","n":121,"op":"insert","t":12.491713776155677},{"impl":"SortedVecSet","n":131,"op":"insert","t":10.844330230582415},{"impl":"SortedVecSet","n":141,"op":"insert","t":9.361811640138285},{"impl":"SortedVecSet","n":151,"op":"insert","t":8.021553203083585},{"impl":"SortedVecSet","n":161,"op":"insert","t":6.805303831831225},{"impl":"SortedVecSet","n":171,"op":"insert","t":5.698115242957556},{"impl":"SortedVecSet","n":181,"op":"insert","t":4.68759017043422},{"impl":"SortedVecSet","n":191,"op":"insert","t":3.7633330134899268},{"impl":"SortedVecSet","n":201,"op":"insert","t":2.9165408365745407},{"impl":"SortedVecSet","n":211,"op":"insert","t":2.1396937755398255},{"impl":"SortedVecSet","n":221,"op":"insert","t":1.4263171966362052},{"impl":"SortedVecSet","n":231,"op":"insert","t":0.77079653355662},{"impl":"SortedVecSet","n":241,"op":"insert","t":0.1682313935795321},{"impl":"SortedVecSet","n":251,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":261,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":271,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":281,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":291,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":301,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":311,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":321,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":331,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":341,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":351,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":361,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":371,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":381,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":391,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":401,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":411,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":421,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":431,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":441,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":451,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":461,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":471,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":481,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":491,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":501,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":511,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":521,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":531,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":541,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":551,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":561,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":571,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":581,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":591,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":601,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":611,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":621,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":631,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":641,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":651,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":661,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":671,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":681,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":691,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":701,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":711,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":721,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":731,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":741,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":751,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":761,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":771,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":781,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":791,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":801,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":811,"op":"insert","t":0.0},{"impl":"SortedVecSet","n":821,"op":"insert","t":0.0693485512948655},{"impl":"SortedVecSet","n":831,"op":"insert","t":0.32391478033218846},{"impl":"SortedVecSet","n":841,"op":"insert","t":0.5826233575802462},{"impl":"SortedVecSet","n":851,"op":"insert","t":0.8453777328859076},{"impl":"SortedVecSet","n":861,"op":"insert","t":1.1120847400201228},{"impl":"SortedVecSet","n":871,"op":"insert","t":1.3826544403670198},{"impl":"SortedVecSet","n":881,"op":"insert","t":1.656999975536678},{"impl":"SortedVecSet","n":891,"op":"insert","t":1.93503742829526},{"impl":"SortedVecSet","n":901,"op":"insert","t":2.2166856912562594},{"impl":"SortedVecSet","n":911,"op":"insert","t":2.5018663428192554},{"impl":"SortedVecSet","n":921,"op":"insert","t":2.790503529880567},{"impl":"SortedVecSet","n":931,"op":"insert","t":3.0825238568775717},{"impl":"SortedVecSet","n":941,"op":"insert","t":3.377856280760625},{"impl":"SortedVecSet","n":951,"op":"insert","t":3.676432011515999},{"impl":"SortedVecSet","n":961,"op":"insert","t":3.9781844178926065},{"impl":"SortedVecSet","n":971,"op":"insert","t":4.283048938007823},{"impl":"SortedVecSet","n":981,"op":"insert","t":4.590962994533754},{"impl":"SortedVecSet","n":991,"op":"insert","t":4.901865914184214},{"impl":"SortedVecSet","n":1001,"op":"insert","t":5.2156988512440705},{"impl":"SortedVecSet","n":1011,"op":"insert","t":5.532404714899229},{"impl":"SortedVecSet","n":1021,"op":"insert","t":5.851928100143283},{"impl":"SortedVecSet","n":1031,"op":"insert","t":6.174215222051231},{"impl":"SortedVecSet","n":1041,"op":"insert","t":6.499213853225825},{"impl":"SortedVecSet","n":1051,"op":"insert","t":6.826873264233683},{"impl":"SortedVecSet","n":1061,"op":"insert","t":7.157144166862224},{"impl":"SortedVecSet","n":1071,"op":"insert","t":7.4899786600382185},{"impl":"SortedVecSet","n":1081,"op":"insert","t":7.825330178259065},{"impl":"SortedVecSet","n":1091,"op":"insert","t":8.16315344239888},{"impl":"SortedVecSet","n":1101,"op":"insert","t":8.50340441275884},{"impl":"SortedVecSet","n":1111,"op":"insert","t":8.846040244240072},{"impl":"SortedVecSet","n":1121,"op":"insert","t":9.191019243524806},{"impl":"SortedVecSet","n":1131,"op":"insert","t":9.538300828159208},{"impl":"SortedVecSet","n":1141,"op":"insert","t":9.887845487437488},{"impl":"SortedVecSet","n":1151,"op":"insert","t":10.239614744991826},{"impl":"SortedVecSet","n":1161,"op":"insert","t":10.593571123001595},{"impl":"SortedVecSet","n":1171,"op":"insert","t":10.949678107936194},{"impl":"SortedVecSet","n":1181,"op":"insert","t":11.307900117755736},{"impl":"SortedVecSet","n":1191,"op":"insert","t":11.668202470493213},{"impl":"SortedVecSet","n":1201,"op":"insert","t":12.030551354151328},{"impl":"SortedVecSet","n":1211,"op":"insert","t":12.394913797846812},{"impl":"SortedVecSet","n":1221,"op":"insert","t":12.761257644141182},{"impl":"SortedVecSet","n":1231,"op":"insert","t":13.129551522500577},{"impl":"SortedVecSet","n":1241,"op":"insert","t":13.499764823828485},{"impl":"SortedVecSet","n":1251,"op":"insert","t":13.871867676021168},{"impl":"SortedVecSet","n":1261,"op":"insert","t":14.245830920495848},{"impl":"SortedVecSet","n":1271,"op":"insert","t":14.621626089645844},{"impl":"SortedVecSet","n":1281,"op":"insert","t":14.999225385179557},{"impl":"SortedVecSet","n":1291,"op":"insert","t":15.378601657301147},{"impl":"SortedVecSet","n":1301,"op":"insert","t":15.759728384695137},{"impl":"SortedVecSet","n":1311,"op":"insert","t":16.14257965527642},{"impl":"SortedVecSet","n":1321,"op":"insert","t":16.527130147672665},{"impl":"SortedVecSet","n":1331,"op":"insert","t":16.913355113404066},{"impl":"SortedVecSet","n":1341,"op":"insert","t":17.301230359730653},{"impl":"SortedVecSet","n":1351,"op":"insert","t":17.690732233136742},{"impl":"SortedVecSet","n":1361,"op":"insert","t":18.081837603423992},{"impl":"SortedVecSet","n":1371,"op":"insert","t":18.47452384838718},{"impl":"SortedVecSet","n":1381,"op":"insert","t":18.868768839046425},{"impl":"SortedVecSet","n":1391,"op":"insert","t":19.264550925412664},{"impl":"SortedVecSet","n":1401,"op":"insert","t":19.661848922762374},{"impl":"SortedVecSet","n":1411,"op":"insert","t":20.060642098400905},{"impl":"SortedVecSet","n":1421,"op":"insert","t":20.460910158893086},{"impl":"SortedVecSet","n":1431,"op":"insert","t":20.862633237741335},{"impl":"SortedVecSet","n":1441,"op":"insert","t":21.26579188349308},{"impl":"SortedVecSet","n":1451,"op":"insert","t":21.670367048259465},{"impl":"SortedVecSet","n":1461,"op":"insert","t":22.076340076628043},{"impl":"SortedVecSet","n":1471,"op":"insert","t":22.48369269495379},{"impl":"SortedVecSet","n":1481,"op":"insert","t":22.89240700101317},{"impl":"SortedVecSet","n":1491,"op":"insert","t":23.30246545400564},{"impl":"SortedVecSet","n":1501,"op":"insert","t":23.713850864890077},{"impl":"SortedVecSet","n":1511,"op":"insert","t":24.126546387041685},{"impl":"SortedVecSet","n":1521,"op":"insert","t":24.540535507216816},{"impl":"SortedVecSet","n":1531,"op":"insert","t":24.955802036814674},{"impl":"SortedVecSet","n":1541,"op":"insert","t":25.372330103422144},{"impl":"SortedVecSet","n":1551,"op":"insert","t":25.790104142633766},{"impl":"SortedVecSet","n":1561,"op":"insert","t":26.209108890132796},{"impl":"SortedVecSet","n":1571,"op":"insert","t":26.62932937402661},{"impl":"SortedVecSet","n":1581,"op":"insert","t":27.05075090742423},{"impl":"SortedVecSet","n":1591,"op":"insert","t":27.47335908124859},{"impl":"SortedVecSet","n":1601,"op":"insert","t":27.897139757273465},{"impl":"SortedVecSet","n":1611,"op":"insert","t":28.32207906137731},{"impl":"SortedVecSet","n":1621,"op":"insert","t":28.74816337700628},{"impl":"SortedVecSet","n":1631,"op":"insert","t":29.175379338837473},{"impl":"SortedVecSet","n":1641,"op":"insert","t":29.603713826636493},{"impl":"SortedVecSet","n":1651,"op":"insert","t":30.03315395930136},{"impl":"SortedVecSet","n":1661,"op":"insert","t":30.46368708908622},{"impl":"SortedVecSet","n":1671,"op":"insert","t":30.895300795998594},{"impl":"SortedVecSet","n":1681,"op":"insert","t":31.327982882363415},{"impl":"SortedVecSet","n":1691,"op":"insert","t":31.761721367548773},{"impl":"SortedVecSet","n":1701,"op":"insert","t":32.19650448284676},{"impl":"SortedVecSet","n":1711,"op":"insert","t":32.6323206665046},{"impl":"SortedVecSet","n":1721,"op":"insert","t":33.06915855890017},{"impl":"SortedVecSet","n":1731,"op":"insert","t":33.507006997858014},{"impl":"SortedVecSet","n":1741,"op":"insert","t":33.94585501409935},{"impl":"SortedVecSet","n":1751,"op":"insert","t":34.38569182682315},{"impl":"SortedVecSet","n":1761,"op":"insert","t":34.82650683941273},{"impl":"SortedVecSet","n":1771,"op":"insert","t":35.268289635263585},{"impl":"SortedVecSet","n":1781,"op":"insert","t":35.711029973729524},{"impl":"SortedVecSet","n":1791,"op":"insert","t":36.15471778618121},{"impl":"SortedVecSet","n":1801,"op":"insert","t":36.59934317217562},{"impl":"SortedVecSet","n":1811,"op":"insert","t":37.04489639573035},{"impl":"SortedVecSet","n":1821,"op":"insert","t":37.49136788170145},{"impl":"SortedVecSet","n":1831,"op":"insert","t":37.938748212259924},{"impl":"SortedVecSet","n":1841,"op":"insert","t":38.387028123464574},{"impl":"SortedVecSet","n":1851,"op":"insert","t":38.83619850192704},{"impl":"SortedVecSet","n":1861,"op":"insert","t":39.28625038156744},{"impl":"SortedVecSet","n":1871,"op":"insert","t":39.73717494045658},{"impl":"SortedVecSet","n":1881,"op":"insert","t":40.18896349774204},{"impl":"SortedVecSet","n":1891,"op":"insert","t":40.6416075106564},{"impl":"SortedVecSet","n":1901,"op":"insert","t":41.09509857160376},{"impl":"SortedVecSet","n":1911,"op":"insert","t":41.5494284053232},{"impl":"SortedVecSet","n":1921,"op":"insert","t":42.00458886612577},{"impl":"SortedVecSet","n":1931,"op":"insert","t":42.460571935203546},{"impl":"SortedVecSet","n":1941,"op":"insert","t":42.917369718008246},{"impl":"SortedVecSet","n":1951,"op":"insert","t":43.37497444169671},{"impl":"SortedVecSet","n":1961,"op":"insert","t":43.83337845264242},{"impl":"SortedVecSet","n":1971,"op":"insert","t":44.292574214009505},{"impl":"SortedVecSet","n":1981,"op":"insert","t":44.75255430338888},{"impl":"SortedVecSet","n":1991,"op":"insert","t":45.213311410493276},{"impl":"SortedVecSet","n":2001,"op":"insert","t":45.67483833491042},{"impl":"SortedVecSet","n":2011,"op":"insert","t":46.13712798391214},{"impl":"SortedVecSet","n":2021,"op":"insert","t":46.60017337031766},{"impl":"SortedVecSet","n":2031,"op":"insert","t":47.06396761040986},{"impl":"SortedVecSet","n":2041,"op":"insert","t":47.528503921902114},{"impl":"SortedVecSet","n":2051,"op":"insert","t":47.99377562195605},{"impl":"SortedVecSet","n":2061,"op":"insert","t":48.45977612524598},{"impl":"SortedVecSet","n":2071,"op":"insert","t":48.92649894207136},{"impl":"SortedVecSet","n":2081,"op":"insert","t":49.39393767651424},{"impl":"SortedVecSet","n":2091,"op":"insert","t":49.8620860246408},{"impl":"SortedVecSet","n":2101,"op":"insert","t":50.330937772745926},{"impl":"SortedVecSet","n":2111,"op":"insert","t":50.8004867956395},{"impl":"SortedVecSet","n":2121,"op":"insert","t":51.27072705497335},{"impl":"SortedVecSet","n":2131,"op":"insert","t":51.74165259760673},{"impl":"SortedVecSet","n":2141,"op":"insert","t":52.21325755401122},{"impl":"SortedVecSet","n":2151,"op":"insert","t":52.68553613671213},{"impl":"SortedVecSet","n":2161,"op":"insert","t":53.15848263876609},{"impl":"SortedVecSet","n":2171,"op":"insert","t":53.632091432273626},{"impl":"SortedVecSet","n":2181,"op":"insert","t":54.106356966926455},{"impl":"SortedVecSet","n":2191,"op":"insert","t":54.581273768587664},{"impl":"SortedVecSet","n":2201,"op":"insert","t":55.056836437903996},{"impl":"SortedVecSet","n":2211,"op":"insert","t":55.53303964895005},{"impl":"SortedVecSet","n":2221,"op":"insert","t":56.009878147902754},{"impl":"SortedVecSet","n":2231,"op":"insert","t":56.487346751746},{"impl":"SortedVecSet","n":2241,"op":"insert","t":56.96544034700344},{"impl":"SortedVecSet","n":2251,"op":"insert","t":57.44415388850024},{"impl":"SortedVecSet","n":2261,"op":"insert","t":57.9234823981524},{"impl":"SortedVecSet","n":2271,"op":"insert","t":58.40342096378191},{"impl":"SortedVecSet","n":2281,"op":"insert","t":58.88396473795876},{"impl":"SortedVecSet","n":2291,"op":"insert","t":59.3651089368679},{"impl":"SortedVecSet","n":2301,"op":"insert","t":59.84684883920107},{"impl":"SortedVecSet","n":2311,"op":"insert","t":60.329179785072256},{"impl":"SortedVecSet","n":2321,"op":"insert","t":60.81209717495713},{"impl":"SortedVecSet","n":2331,"op":"insert","t":61.29559646865505},{"impl":"SortedVecSet","n":2341,"op":"insert","t":61.77967318427301},{"impl":"SortedVecSet","n":2351,"op":"insert","t":62.264322897231324},{"impl":"SortedVecSet","n":2361,"op":"insert","t":62.749541239291176},{"impl":"SortedVecSet","n":2371,"op":"insert","t":63.235323897601575},{"impl":"SortedVecSet","n":2381,"op":"insert","t":63.72166661376701},{"impl":"SortedVecSet","n":2391,"op":"insert","t":64.2085651829345},{"impl":"SortedVecSet","n":2401,"op":"insert","t":64.69601545289993},{"impl":"SortedVecSet","n":2411,"op":"insert","t":65.18401332323256},{"impl":"SortedVecSet","n":2421,"op":"insert","t":65.67255474441782},{"impl":"SortedVecSet","n":2431,"op":"insert","t":66.16163571701787},{"impl":"SortedVecSet","n":2441,"op":"insert","t":66.65125229084944},{"impl":"SortedVecSet","n":2451,"op":"insert","t":67.14140056417807},{"impl":"SortedVecSet","n":2461,"op":"insert","t":67.63207668292912},{"impl":"SortedVecSet","n":2471,"op":"insert","t":68.12327683991509},{"impl":"SortedVecSet","n":2481,"op":"insert","t":68.61499727407758},{"impl":"SortedVecSet","n":2491,"op":"insert","t":69.10723426974525},{"impl":"SortedVecSet","n":2501,"op":"insert","t":69.59998415590664},{"impl":"SortedVecSet","n":2511,"op":"insert","t":70.09324330549717},{"impl":"SortedVecSet","n":2521,"op":"insert","t":70.58700813470043},{"impl":"SortedVecSet","n":2531,"op":"insert","t":71.08127510226342},{"impl":"SortedVecSet","n":2541,"op":"insert","t":71.57604070882508},{"impl":"SortedVecSet","n":2551,"op":"insert","t":72.07130149625834},{"impl":"SortedVecSet","n":2561,"op":"insert","t":72.56705404702461},{"impl":"SortedVecSet","n":2571,"op":"insert","t":73.063294983541},{"impl":"SortedVecSet","n":2581,"op":"insert","t":73.56002096756029},{"impl":"SortedVecSet","n":2591,"op":"insert","t":74.05722869956199},{"impl":"SortedVecSet","n":2601,"op":"insert","t":74.55491491815593},{"impl":"SortedVecSet","n":2611,"op":"insert","t":75.05307639949692},{"impl":"SortedVecSet","n":2621,"op":"insert","t":75.55170995671077},{"impl":"SortedVecSet","n":2631,"op":"insert","t":76.05081243933077},{"impl":"SortedVecSet","n":2641,"op":"insert","t":76.55038073274562},{"impl":"SortedVecSet","n":2651,"op":"insert","t":77.0504117576572},{"impl":"SortedVecSet","n":2661,"op":"insert","t":77.55090246954893},{"impl":"SortedVecSet","n":2671,"op":"insert","t":78.05184985816342},{"impl":"SortedVecSet","n":2681,"op":"insert","t":78.55325094699106},{"impl":"SortedVecSet","n":2691,"op":"insert","t":79.05510279276706},{"impl":"SortedVecSet","n":2701,"op":"insert","t":79.5574024849781},{"impl":"SortedVecSet","n":2711,"op":"insert","t":80.06014714537824},{"impl":"SortedVecSet","n":2721,"op":"insert","t":80.56333392751412},{"impl":"SortedVecSet","n":2731,"op":"insert","t":81.0669600162581},{"impl":"SortedVecSet","n":2741,"op":"insert","t":81.57102262734992},{"impl":"SortedVecSet","n":2751,"op":"insert","t":82.07551900694779},{"impl":"SortedVecSet","n":2761,"op":"insert","t":82.58044643118657},{"impl":"SortedVecSet","n":2771,"op":"insert","t":83.08580220574405},{"impl":"SortedVecSet","n":2781,"op":"insert","t":83.5915836654155},{"impl":"SortedVecSet","n":2791,"op":"insert","t":84.09778817369576},{"impl":"SortedVecSet","n":2801,"op":"insert","t":84.60441312236838},{"impl":"SortedVecSet","n":2811,"op":"insert","t":85.11145593110237},{"impl":"SortedVecSet","n":2821,"op":"insert","t":85.6189140470562},{"impl":"SortedVecSet","n":2831,"op":"insert","t":86.1267849444888},{"impl":"SortedVecSet","n":2841,"op":"insert","t":86.63506612437712},{"impl":"SortedVecSet","n":2851,"op":"insert","t":87.14375511404052},{"impl":"SortedVecSet","n":2861,"op":"insert","t":87.65284946677238},{"impl":"SortedVecSet","n":2871,"op":"insert","t":88.16234676147701},{"impl":"SortedVecSet","n":2881,"op":"insert","t":88.67224460231355},{"impl":"SortedVecSet","n":2891,"op":"insert","t":89.18254061834614},{"impl":"SortedVecSet","n":2901,"op":"insert","t":89.69323246319993},{"impl":"SortedVecSet","n":2911,"op":"insert","t":90.2043178147226},{"impl":"SortedVecSet","n":2921,"op":"insert","t":90.7157943746526},{"impl":"SortedVecSet","n":2931,"op":"insert","t":91.2276598682923},{"impl":"SortedVecSet","n":2941,"op":"insert","t":91.73991204418695},{"impl":"SortedVecSet","n":2951,"op":"insert","t":92.25254867380929},{"impl":"SortedVecSet","n":2961,"op":"insert","t":92.76556755124867},{"impl":"SortedVecSet","n":2971,"op":"insert","t":93.27896649290699},{"impl":"SortedVecSet","n":2981,"op":"insert","t":93.79274333719829},{"impl":"SortedVecSet","n":2991,"op":"insert","t":94.30689594425351},{"impl":"VecSet","n":1,"op":"insert","t":0.0},{"impl":"VecSet","n":11,"op":"insert","t":0.0},{"impl":"VecSet","n":21,"op":"insert","t":0.0},{"impl":"VecSet","n":31,"op":"insert","t":0.0},{"impl":"VecSet","n":41,"op":"insert","t":4.620092681631547},{"impl":"VecSet","n":51,"op":"insert","t":15.572381629769382},{"impl":"VecSet","n":61,"op":"insert","t":24.931466353925913},{"impl":"VecSet","n":71,"op":"insert","t":33.18354382562444},{"impl":"VecSet","n":81,"op":"insert","t":40.62145448736979},{"impl":"VecSet","n":91,"op":"insert","t":47.43531074716071},{"impl":"VecSet","n":101,"op":"insert","t":53.75555438551828},{"impl":"VecSet","n":111,"op":"insert","t":59.67557982063394},{"impl":"VecSet","n":121,"op":"insert","t":65.26455801744669},{"impl":"VecSet","n":131,"op":"insert","t":70.57515093754313},{"impl":"VecSet","n":141,"op":"insert","t":75.64838016372927},{"impl":"VecSet","n":151,"op":"insert","t":80.51682336879638},{"impl":"VecSet","n":161,"op":"insert","t":85.20678372347511},{"impl":"VecSet","n":171,"op":"insert","t":89.73980445082813},{"impl":"VecSet","n":181,"op":"insert","t":94.13375228911875},{"impl":"VecSet","n":191,"op":"insert","t":98.4036092091819},{"impl":"VecSet","n":201,"op":"insert","t":102.56206185862696},{"impl":"VecSet","n":211,"op":"insert","t":106.61994774341746},{"impl":"VecSet","n":221,"op":"insert","t":110.58659800045794},{"impl":"VecSet","n":231,"op":"insert","t":114.47010425143675},{"impl":"VecSet","n":241,"op":"insert","t":118.27752886268067},{"impl":"VecSet","n":251,"op":"insert","t":122.0150724297177},{"impl":"VecSet","n":261,"op":"insert","t":125.68820852219541},{"impl":"VecSet","n":271,"op":"insert","t":129.30179308094807},{"impl":"VecSet","n":281,"op":"insert","t":132.8601539823823},{"impl":"VecSet","n":291,"op":"insert","t":136.36716493421733},{"impl":"VecSet","n":301,"op":"insert","t":139.826306881025},{"impl":"VecSet","n":311,"op":"insert","t":143.24071937032664},{"impl":"VecSet","n":321,"op":"insert","t":146.61324378670872},{"impl":"VecSet","n":331,"op":"insert","t":149.9464599515489},{"impl":"VecSet","n":341,"op":"insert","t":153.24271727373963},{"impl":"VecSet","n":351,"op":"insert","t":156.50416139682974},{"impl":"VecSet","n":361,"op":"insert","t":159.7327571019979},{"impl":"VecSet","n":371,"op":"insert","t":162.93030808094727},{"impl":"VecSet","n":381,"op":"insert","t":166.09847407842744},{"impl":"VecSet","n":391,"op":"insert","t":169.238785813424},{"impl":"VecSet","n":401,"op":"insert","t":172.35265801571651},{"impl":"VecSet","n":411,"op":"insert","t":175.44140085642965},{"impl":"VecSet","n":421,"op":"insert","t":178.50623000429607},{"impl":"VecSet","n":431,"op":"insert","t":181.5482755012612},{"impl":"VecSet","n":441,"op":"insert","t":184.56858961995871},{"impl":"VecSet","n":451,"op":"insert","t":187.56815384006816},{"impl":"VecSet","n":461,"op":"insert","t":190.54788505952624},{"impl":"VecSet","n":471,"op":"insert","t":193.50864113913633},{"impl":"VecSet","n":481,"op":"insert","t":196.45122586462577},{"impl":"VecSet","n":491,"op":"insert","t":199.37639339808908},{"impl":"VecSet","n":501,"op":"insert","t":202.28485228060063},{"impl":"VecSet","n":511,"op":"insert","t":205.17726903923096},{"impl":"VecSet","n":521,"op":"insert","t":208.0542714444772},{"impl":"VecSet","n":531,"op":"insert","t":210.91645145799265},{"impl":"VecSet","n":541,"op":"insert","t":213.7643679052916},{"impl":"VecSet","n":551,"op":"insert","t":216.59854890365762},{"impl":"VecSet","n":561,"op":"insert","t":219.41949407167812},{"impl":"VecSet","n":571,"op":"insert","t":222.2276765435579},{"impl":"VecSet","n":581,"op":"insert","t":225.02354480855223},{"impl":"VecSet","n":591,"op":"insert","t":227.80752439342723},{"impl":"VecSet","n":601,"op":"insert","t":230.58001940375377},{"impl":"VecSet","n":611,"op":"insert","t":233.34141393801355},{"impl":"VecSet","n":621,"op":"insert","t":236.09207338690862},{"impl":"VecSet","n":631,"op":"insert","t":238.83234562887768},{"impl":"VecSet","n":641,"op":"insert","t":241.56256213161396},{"impl":"VecSet","n":651,"op":"insert","t":244.2830389683145},{"impl":"VecSet","n":661,"op":"insert","t":246.99407775646355},{"impl":"VecSet","n":671,"op":"insert","t":249.69596652612697},{"impl":"VecSet","n":681,"op":"insert","t":252.38898052401765},{"impl":"VecSet","n":691,"op":"insert","t":255.07338295894806},{"impl":"VecSet","n":701,"op":"insert","t":257.74942569372513},{"impl":"VecSet","n":711,"op":"insert","t":260.41734988803887},{"impl":"VecSet","n":721,"op":"insert","t":263.07738659645145},{"impl":"VecSet","n":731,"op":"insert","t":265.72975732519956},{"impl":"VecSet","n":741,"op":"insert","t":268.37467455116536},{"impl":"VecSet","n":751,"op":"insert","t":271.012342206062},{"impl":"VecSet","n":761,"op":"insert","t":273.64295612859263},{"impl":"VecSet","n":771,"op":"insert","t":276.26670448709285},{"impl":"VecSet","n":781,"op":"insert","t":278.8837681749383},{"impl":"VecSet","n":791,"op":"insert","t":281.49432118079767},{"impl":"VecSet","n":801,"op":"insert","t":284.09853093562594},{"impl":"VecSet","n":811,"op":"insert","t":286.6965586381307},{"impl":"VecSet","n":821,"op":"insert","t":289.28855956029435},{"impl":"VecSet","n":831,"op":"insert","t":291.87468333440023},{"impl":"VecSet","n":841,"op":"insert","t":294.4550742228913},{"impl":"VecSet","n":851,"op":"insert","t":297.02987137227865},{"impl":"VecSet","n":861,"op":"insert","t":299.5992090522171},{"impl":"VecSet","n":871,"op":"insert","t":302.16321688077767},{"impl":"VecSet","n":881,"op":"insert","t":304.7220200368599},{"impl":"VecSet","n":891,"op":"insert","t":307.27573946061693},{"impl":"VecSet","n":901,"op":"insert","t":309.8244920426958},{"impl":"VecSet","n":911,"op":"insert","t":312.3683908030322},{"impl":"VecSet","n":921,"op":"insert","t":314.9075450598859},{"impl":"VecSet","n":931,"op":"insert","t":317.4420605897486},{"impl":"VecSet","n":941,"op":"insert","t":319.9720397787086},{"impl":"VecSet","n":951,"op":"insert","t":322.4975817658155},{"impl":"VecSet","n":961,"op":"insert","t":325.018782578945},{"impl":"VecSet","n":971,"op":"insert","t":327.5357352636328},{"impl":"VecSet","n":981,"op":"insert","t":330.04853000530665},{"impl":"VecSet","n":991,"op":"insert","t":332.5572542453201},{"impl":"VecSet","n":1001,"op":"insert","t":335.06199279116146},{"impl":"VecSet","n":1011,"op":"insert","t":337.56282792118367},{"impl":"VecSet","n":1021,"op":"insert","t":340.0598394841814},{"impl":"VecSet","n":1031,"op":"insert","t":342.55310499411405},{"impl":"VecSet","n":1041,"op":"insert","t":345.04269972025764},{"impl":"VecSet","n":1051,"op":"insert","t":347.5286967730468},{"impl":"VecSet","n":1061,"op":"insert","t":350.0111671858523},{"impl":"VecSet","n":1071,"op":"insert","t":352.4901799929221},{"impl":"VecSet","n":1081,"op":"insert","t":354.9658023037016},{"impl":"VecSet","n":1091,"op":"insert","t":357.4380993737309},{"impl":"VecSet","n":1101,"op":"insert","t":359.9071346723081},{"impl":"VecSet","n":1111,"op":"insert","t":362.37296994709305},{"impl":"VecSet","n":1121,"op":"insert","t":364.83566528581775},{"impl":"VecSet","n":1131,"op":"insert","t":367.2952791752546},{"impl":"VecSet","n":1141,"op":"insert","t":369.7518685575909},{"impl":"VecSet","n":1151,"op":"insert","t":372.205488884342},{"impl":"VecSet","n":1161,"op":"insert","t":374.65619416793413},{"impl":"VecSet","n":1171,"op":"insert","t":377.10403703107374},{"impl":"VecSet","n":1181,"op":"insert","t":379.54906875401844},{"impl":"VecSet","n":1191,"op":"insert","t":381.9913393198551},{"impl":"VecSet","n":1201,"op":"insert","t":384.4308974578847},{"impl":"VecSet","n":1211,"op":"insert","t":386.86779068520826},{"impl":"VecSet","n":1221,"op":"insert","t":389.3020653466031},{"impl":"VecSet","n":1231,"op":"insert","t":391.733766652773},{"impl":"VecSet","n":1241,"op":"insert","t":394.16293871705},{"impl":"VecSet","n":1251,"op":"insert","t":396.58962459062434},{"impl":"VecSet","n":1261,"op":"insert","t":399.0138662963717},{"impl":"VecSet","n":1271,"op":"insert","t":401.435704861344},{"impl":"VecSet","n":1281,"op":"insert","t":403.85518034798713},{"impl":"VecSet","n":1291,"op":"insert","t":406.2723318841454},{"impl":"VecSet","n":1301,"op":"insert","t":408.6871976919078},{"impl":"VecSet","n":1311,"op":"insert","t":411.09981511534977},{"impl":"VecSet","n":1321,"op":"insert","t":413.51022064722184},{"impl":"VecSet","n":1331,"op":"insert","t":415.91844995463066},{"impl":"VecSet","n":1341,"op":"insert","t":418.32453790375973},{"impl":"VecSet","n":1351,"op":"insert","t":420.7285185836714},{"impl":"VecSet","n":1361,"op":"insert","t":423.13042532923134},{"impl":"VecSet","n":1371,"op":"insert","t":425.53029074319414},{"impl":"VecSet","n":1381,"op":"insert","t":427.9281467174858},{"impl":"VecSet","n":1391,"op":"insert","t":430.32402445371866},{"impl":"VecSet","n":1401,"op":"insert","t":432.7179544829717},{"impl":"VecSet","n":1411,"op":"insert","t":435.1099666848676},{"impl":"VecSet","n":1421,"op":"insert","t":437.50009030597516},{"impl":"VecSet","n":1431,"op":"insert","t":439.8883539775676},{"impl":"VecSet","n":1441,"op":"insert","t":442.27478573276244},{"impl":"VecSet","n":1451,"op":"insert","t":444.65941302306715},{"impl":"VecSet","n":1461,"op":"insert","t":447.0422627343589},{"impl":"VecSet","n":1471,"op":"insert","t":449.42336120231823},{"impl":"VecSet","n":1481,"op":"insert","t":451.8027342273382},{"impl":"VecSet","n":1491,"op":"insert","t":454.1804070889357},{"impl":"VecSet","n":1501,"op":"insert","t":456.5564045596771},{"impl":"VecSet","n":1511,"op":"insert","t":458.93075091864443},{"impl":"VecSet","n":1521,"op":"insert","t":461.30346996445576},{"impl":"VecSet","n":1531,"op":"insert","t":463.67458502785973},{"impl":"VecSet","n":1541,"op":"insert","t":466.0441189839197},{"impl":"VecSet","n":1551,"op":"insert","t":468.412094263804},{"impl":"VecSet","n":1561,"op":"insert","t":470.7785328661978},{"impl":"VecSet","n":1571,"op":"insert","t":473.1434563683493},{"impl":"VecSet","n":1581,"op":"insert","t":475.50688593676705},{"impl":"VecSet","n":1591,"op":"insert","t":477.86884233757854},{"impl":"VecSet","n":1601,"op":"insert","t":480.22934594656584},{"impl":"VecSet","n":1611,"op":"insert","t":482.58841675888704},{"impl":"VecSet","n":1621,"op":"insert","t":484.94607439849847},{"impl":"VecSet","n":1631,"op":"insert","t":487.302338127286},{"impl":"VecSet","n":1641,"op":"insert","t":489.65722685391836},{"impl":"VecSet","n":1651,"op":"insert","t":492.0107591424302},{"impl":"VecSet","n":1661,"op":"insert","t":494.3629532205472},{"impl":"VecSet","n":1671,"op":"insert","t":496.71382698776074},{"impl":"VecSet","n":1681,"op":"insert","t":499.06339802316177},{"impl":"VecSet","n":1691,"op":"insert","t":501.4116835930422},{"impl":"VecSet","n":1701,"op":"insert","t":503.7587006582725},{"impl":"VecSet","n":1711,"op":"insert","t":506.10446588146294},{"impl":"VecSet","n":1721,"op":"insert","t":508.4489956339163},{"impl":"VecSet","n":1731,"op":"insert","t":510.79230600237827},{"impl":"VecSet","n":1741,"op":"insert","t":513.1344127955952},{"impl":"VecSet","n":1751,"op":"insert","t":515.475331550682},{"impl":"VecSet","n":1761,"op":"insert","t":517.8150775393108},{"impl":"VecSet","n":1771,"op":"insert","t":520.1536657737222},{"impl":"VecSet","n":1781,"op":"insert","t":522.4911110125695},{"impl":"VecSet","n":1791,"op":"insert","t":524.8274277665973},{"impl":"VecSet","n":1801,"op":"insert","t":527.1626303041633},{"impl":"VecSet","n":1811,"op":"insert","t":529.4967326566069},{"impl":"VecSet","n":1821,"op":"insert","t":531.82974862347},{"impl":"VecSet","n":1831,"op":"insert","t":534.1616917775747},{"impl":"VecSet","n":1841,"op":"insert","t":536.4925754699623},{"impl":"VecSet","n":1851,"op":"insert","t":538.8224128347002},{"impl":"VecSet","n":1861,"op":"insert","t":541.1512167935566},{"impl":"VecSet","n":1871,"op":"insert","t":543.4790000605528},{"impl":"VecSet","n":1881,"op":"insert","t":545.8057751463921},{"impl":"VecSet","n":1891,"op":"insert","t":548.1315543627719},{"impl":"VecSet","n":1901,"op":"insert","t":550.4563498265828},{"impl":"VecSet","n":1911,"op":"insert","t":552.7801734639963},{"impl":"VecSet","n":1921,"op":"insert","t":555.103037014447},{"impl":"VecSet","n":1931,"op":"insert","t":557.4249520345103},{"impl":"VecSet","n":1941,"op":"insert","t":559.745929901681},{"impl":"VecSet","n":1951,"op":"insert","t":562.0659818180543},{"impl":"VecSet","n":1961,"op":"insert","t":564.3851188139124},{"impl":"VecSet","n":1971,"op":"insert","t":566.7033517512205},{"impl":"VecSet","n":1981,"op":"insert","t":569.0206913270339},{"impl":"VecSet","n":1991,"op":"insert","t":571.3371480768199},{"impl":"VecSet","n":2001,"op":"insert","t":573.6527323776954},{"impl":"VecSet","n":2011,"op":"insert","t":575.9674544515851},{"impl":"VecSet","n":2021,"op":"insert","t":578.2813243683003},{"impl":"VecSet","n":2031,"op":"insert","t":580.5943520485423},{"impl":"VecSet","n":2041,"op":"insert","t":582.9065472668321},{"impl":"VecSet","n":2051,"op":"insert","t":585.2179196543681},{"impl":"VecSet","n":2061,"op":"insert","t":587.5284787018143},{"impl":"VecSet","n":2071,"op":"insert","t":589.8382337620216},{"impl":"VecSet","n":2081,"op":"insert","t":592.1471940526833},{"impl":"VecSet","n":2091,"op":"insert","t":594.4553686589259},{"impl":"VecSet","n":2101,"op":"insert","t":596.7627665358407},{"impl":"VecSet","n":2111,"op":"insert","t":599.0693965109515},{"impl":"VecSet","n":2121,"op":"insert","t":601.3752672866283},{"impl":"VecSet","n":2131,"op":"insert","t":603.6803874424402},{"impl":"VecSet","n":2141,"op":"insert","t":605.9847654374562},{"impl":"VecSet","n":2151,"op":"insert","t":608.2884096124908},{"impl":"VecSet","n":2161,"op":"insert","t":610.5913281922981},{"impl":"VecSet","n":2171,"op":"insert","t":612.8935292877153},{"impl":"VecSet","n":2181,"op":"insert","t":615.1950208977563},{"impl":"VecSet","n":2191,"op":"insert","t":617.4958109116585},{"impl":"VecSet","n":2201,"op":"insert","t":619.7959071108819},{"impl":"VecSet","n":2211,"op":"insert","t":622.0953171710637},{"impl":"VecSet","n":2221,"op":"insert","t":624.394048663928},{"impl":"VecSet","n":2231,"op":"insert","t":626.6921090591536},{"impl":"VecSet","n":2241,"op":"insert","t":628.9895057261997},{"impl":"VecSet","n":2251,"op":"insert","t":631.2862459360897},{"impl":"VecSet","n":2261,"op":"insert","t":633.5823368631578},{"impl":"VecSet","n":2271,"op":"insert","t":635.877785586755},{"impl":"VecSet","n":2281,"op":"insert","t":638.1725990929184},{"impl":"VecSet","n":2291,"op":"insert","t":640.4667842760045},{"impl":"VecSet","n":2301,"op":"insert","t":642.7603479402867},{"impl":"VecSet","n":2311,"op":"insert","t":645.0532968015161},{"impl":"VecSet","n":2321,"op":"insert","t":647.3456374884526},{"impl":"VecSet","n":2331,"op":"insert","t":649.6373765443598},{"impl":"VecSet","n":2341,"op":"insert","t":651.928520428469},{"impl":"VecSet","n":2351,"op":"insert","t":654.2190755174123},{"impl":"VecSet","n":2361,"op":"insert","t":656.5090481066245},{"impl":"VecSet","n":2371,"op":"insert","t":658.7984444117167},{"impl":"VecSet","n":2381,"op":"insert","t":661.0872705698189},{"impl":"VecSet","n":2391,"op":"insert","t":663.375532640897},{"impl":"VecSet","n":2401,"op":"insert","t":665.6632366090398},{"impl":"VecSet","n":2411,"op":"insert","t":667.9503883837219},{"impl":"VecSet","n":2421,"op":"insert","t":670.2369938010377},{"impl":"VecSet","n":2431,"op":"insert","t":672.5230586249118},{"impl":"VecSet","n":2441,"op":"insert","t":674.8085885482844},{"impl":"VecSet","n":2451,"op":"insert","t":677.0935891942715},{"impl":"VecSet","n":2461,"op":"insert","t":679.378066117303},{"impl":"VecSet","n":2471,"op":"insert","t":681.6620248042354},{"impl":"VecSet","n":2481,"op":"insert","t":683.9454706754454},{"impl":"VecSet","n":2491,"op":"insert","t":686.2284090858975},{"impl":"VecSet","n":2501,"op":"insert","t":688.5108453261944},{"impl":"VecSet","n":2511,"op":"insert","t":690.7927846236021},{"impl":"VecSet","n":2521,"op":"insert","t":693.0742321430587},{"impl":"VecSet","n":2531,"op":"insert","t":695.3551929881605},{"impl":"VecSet","n":2541,"op":"insert","t":697.6356722021299},{"impl":"VecSet","n":2551,"op":"insert","t":699.915674768763},{"impl":"VecSet","n":2561,"op":"insert","t":702.1952056133614},{"impl":"VecSet","n":2571,"op":"insert","t":704.4742696036421},{"impl":"VecSet","n":2581,"op":"insert","t":706.7528715506332},{"impl":"VecSet","n":2591,"op":"insert","t":709.0310162095499},{"impl":"VecSet","n":2601,"op":"insert","t":711.3087082806544},{"impl":"VecSet","n":2611,"op":"insert","t":713.5859524101002},{"impl":"VecSet","n":2621,"op":"insert","t":715.8627531907584},{"impl":"VecSet","n":2631,"op":"insert","t":718.139115163031},{"impl":"VecSet","n":2641,"op":"insert","t":720.4150428156444},{"impl":"VecSet","n":2651,"op":"insert","t":722.6905405864331},{"impl":"VecSet","n":2661,"op":"insert","t":724.9656128631055},{"impl":"VecSet","n":2671,"op":"insert","t":727.2402639839952},{"impl":"VecSet","n":2681,"op":"insert","t":729.5144982387994},{"impl":"VecSet","n":2691,"op":"insert","t":731.7883198693036},{"impl":"VecSet","n":2701,"op":"insert","t":734.0617330700923},{"impl":"VecSet","n":2711,"op":"insert","t":736.3347419892465},{"impl":"VecSet","n":2721,"op":"insert","t":738.6073507290289},{"impl":"VecSet","n":2731,"op":"insert","t":740.8795633465554},{"impl":"VecSet","n":2741,"op":"insert","t":743.1513838544568},{"impl":"VecSet","n":2751,"op":"insert","t":745.422816221525},{"impl":"VecSet","n":2761,"op":"insert","t":747.6938643733502},{"impl":"VecSet","n":2771,"op":"insert","t":749.964532192946},{"impl":"VecSet","n":2781,"op":"insert","t":752.2348235213615},{"impl":"VecSet","n":2791,"op":"insert","t":754.5047421582856},{"impl":"VecSet","n":2801,"op":"insert","t":756.7742918626375},{"impl":"VecSet","n":2811,"op":"insert","t":759.043476353148},{"impl":"VecSet","n":2821,"op":"insert","t":761.312299308931},{"impl":"VecSet","n":2831,"op":"insert","t":763.5807643700432},{"impl":"VecSet","n":2841,"op":"insert","t":765.8488751380364},{"impl":"VecSet","n":2851,"op":"insert","t":768.1166351764973},{"impl":"VecSet","n":2861,"op":"insert","t":770.38404801158},{"impl":"VecSet","n":2871,"op":"insert","t":772.6511171325283},{"impl":"VecSet","n":2881,"op":"insert","t":774.9178459921889},{"impl":"VecSet","n":2891,"op":"insert","t":777.184238007516},{"impl":"VecSet","n":2901,"op":"insert","t":779.4502965600673},{"impl":"VecSet","n":2911,"op":"insert","t":781.7160249964903},{"impl":"VecSet","n":2921,"op":"insert","t":783.9814266290027},{"impl":"VecSet","n":2931,"op":"insert","t":786.2465047358614},{"impl":"VecSet","n":2941,"op":"insert","t":788.5112625618267},{"impl":"VecSet","n":2951,"op":"insert","t":790.775703318616},{"impl":"VecSet","n":2961,"op":"insert","t":793.0398301853513},{"impl":"VecSet","n":2971,"op":"insert","t":795.303646308999},{"impl":"VecSet","n":2981,"op":"insert","t":797.5671548048017},{"impl":"VecSet","n":2991,"op":"insert","t":799.8303587567038}]},"encoding":{"color":{"field":"impl","legend":{"title":"Implementation"}},"x":{"axis":{"title":"Size of container (n)"},"field":"n","scale":{"domain":[1,3000]},"type":"quantitative"},"y":{"axis":{"title":"Estimated cost"},"field":"t","scale":{"domain":[0,200]},"type":"quantitative"}},"mark":{"clip":true,"fillOpacity":1,"type":"line"}}],"width":500} \ No newline at end of file
+{"$schema":"https://vega.github.io/schema/vega-lite/v5.json","height":250,"layer":[{"data":{"values":[{"impl":"LinkedList","n":1,"op":"remove","t":15441.040258897787},{"impl":"LinkedList","n":11,"op":"remove","t":5696.89433322902},{"impl":"LinkedList","n":21,"op":"remove","t":3105.377607707722},{"impl":"LinkedList","n":31,"op":"remove","t":1564.170949020905},{"impl":"LinkedList","n":41,"op":"remove","t":471.7340692337093},{"impl":"LinkedList","n":51,"op":"remove","t":0.0},{"impl":"LinkedList","n":61,"op":"remove","t":0.0},{"impl":"LinkedList","n":71,"op":"remove","t":0.0},{"impl":"LinkedList","n":81,"op":"remove","t":0.0},{"impl":"LinkedList","n":91,"op":"remove","t":0.0},{"impl":"LinkedList","n":101,"op":"remove","t":0.0},{"impl":"LinkedList","n":111,"op":"remove","t":0.0},{"impl":"LinkedList","n":121,"op":"remove","t":0.0},{"impl":"LinkedList","n":131,"op":"remove","t":0.0},{"impl":"LinkedList","n":141,"op":"remove","t":0.0},{"impl":"LinkedList","n":151,"op":"remove","t":0.0},{"impl":"LinkedList","n":161,"op":"remove","t":0.0},{"impl":"LinkedList","n":171,"op":"remove","t":0.0},{"impl":"LinkedList","n":181,"op":"remove","t":0.0},{"impl":"LinkedList","n":191,"op":"remove","t":0.0},{"impl":"LinkedList","n":201,"op":"remove","t":0.0},{"impl":"LinkedList","n":211,"op":"remove","t":0.0},{"impl":"LinkedList","n":221,"op":"remove","t":0.0},{"impl":"LinkedList","n":231,"op":"remove","t":0.0},{"impl":"LinkedList","n":241,"op":"remove","t":0.0},{"impl":"LinkedList","n":251,"op":"remove","t":0.0},{"impl":"LinkedList","n":261,"op":"remove","t":0.0},{"impl":"LinkedList","n":271,"op":"remove","t":0.0},{"impl":"LinkedList","n":281,"op":"remove","t":0.0},{"impl":"LinkedList","n":291,"op":"remove","t":0.0},{"impl":"LinkedList","n":301,"op":"remove","t":0.0},{"impl":"LinkedList","n":311,"op":"remove","t":0.0},{"impl":"LinkedList","n":321,"op":"remove","t":0.0},{"impl":"LinkedList","n":331,"op":"remove","t":0.0},{"impl":"LinkedList","n":341,"op":"remove","t":0.0},{"impl":"LinkedList","n":351,"op":"remove","t":0.0},{"impl":"LinkedList","n":361,"op":"remove","t":0.0},{"impl":"LinkedList","n":371,"op":"remove","t":0.0},{"impl":"LinkedList","n":381,"op":"remove","t":0.0},{"impl":"LinkedList","n":391,"op":"remove","t":0.0},{"impl":"LinkedList","n":401,"op":"remove","t":0.0},{"impl":"LinkedList","n":411,"op":"remove","t":0.0},{"impl":"LinkedList","n":421,"op":"remove","t":0.0},{"impl":"LinkedList","n":431,"op":"remove","t":0.0},{"impl":"LinkedList","n":441,"op":"remove","t":0.0},{"impl":"LinkedList","n":451,"op":"remove","t":0.0},{"impl":"LinkedList","n":461,"op":"remove","t":0.0},{"impl":"LinkedList","n":471,"op":"remove","t":0.0},{"impl":"LinkedList","n":481,"op":"remove","t":0.0},{"impl":"LinkedList","n":491,"op":"remove","t":0.0},{"impl":"LinkedList","n":501,"op":"remove","t":0.0},{"impl":"LinkedList","n":511,"op":"remove","t":0.0},{"impl":"LinkedList","n":521,"op":"remove","t":0.0},{"impl":"LinkedList","n":531,"op":"remove","t":0.0},{"impl":"LinkedList","n":541,"op":"remove","t":0.0},{"impl":"LinkedList","n":551,"op":"remove","t":0.0},{"impl":"LinkedList","n":561,"op":"remove","t":0.0},{"impl":"LinkedList","n":571,"op":"remove","t":0.0},{"impl":"LinkedList","n":581,"op":"remove","t":0.0},{"impl":"LinkedList","n":591,"op":"remove","t":0.0},{"impl":"LinkedList","n":601,"op":"remove","t":0.0},{"impl":"LinkedList","n":611,"op":"remove","t":0.0},{"impl":"LinkedList","n":621,"op":"remove","t":0.0},{"impl":"LinkedList","n":631,"op":"remove","t":0.0},{"impl":"LinkedList","n":641,"op":"remove","t":0.0},{"impl":"LinkedList","n":651,"op":"remove","t":0.0},{"impl":"LinkedList","n":661,"op":"remove","t":0.0},{"impl":"LinkedList","n":671,"op":"remove","t":0.0},{"impl":"LinkedList","n":681,"op":"remove","t":0.0},{"impl":"LinkedList","n":691,"op":"remove","t":0.0},{"impl":"LinkedList","n":701,"op":"remove","t":0.0},{"impl":"LinkedList","n":711,"op":"remove","t":0.0},{"impl":"LinkedList","n":721,"op":"remove","t":0.0},{"impl":"LinkedList","n":731,"op":"remove","t":0.0},{"impl":"LinkedList","n":741,"op":"remove","t":0.0},{"impl":"LinkedList","n":751,"op":"remove","t":0.0},{"impl":"LinkedList","n":761,"op":"remove","t":0.0},{"impl":"LinkedList","n":771,"op":"remove","t":0.0},{"impl":"LinkedList","n":781,"op":"remove","t":0.0},{"impl":"LinkedList","n":791,"op":"remove","t":0.0},{"impl":"LinkedList","n":801,"op":"remove","t":0.0},{"impl":"LinkedList","n":811,"op":"remove","t":0.0},{"impl":"LinkedList","n":821,"op":"remove","t":0.0},{"impl":"LinkedList","n":831,"op":"remove","t":0.0},{"impl":"LinkedList","n":841,"op":"remove","t":0.0},{"impl":"LinkedList","n":851,"op":"remove","t":0.0},{"impl":"LinkedList","n":861,"op":"remove","t":0.0},{"impl":"LinkedList","n":871,"op":"remove","t":0.0},{"impl":"LinkedList","n":881,"op":"remove","t":0.0},{"impl":"LinkedList","n":891,"op":"remove","t":0.0},{"impl":"LinkedList","n":901,"op":"remove","t":0.0},{"impl":"LinkedList","n":911,"op":"remove","t":0.0},{"impl":"LinkedList","n":921,"op":"remove","t":0.0},{"impl":"LinkedList","n":931,"op":"remove","t":0.0},{"impl":"LinkedList","n":941,"op":"remove","t":0.0},{"impl":"LinkedList","n":951,"op":"remove","t":0.0},{"impl":"LinkedList","n":961,"op":"remove","t":0.0},{"impl":"LinkedList","n":971,"op":"remove","t":0.0},{"impl":"LinkedList","n":981,"op":"remove","t":0.0},{"impl":"LinkedList","n":991,"op":"remove","t":0.0},{"impl":"LinkedList","n":1001,"op":"remove","t":0.0},{"impl":"LinkedList","n":1011,"op":"remove","t":0.0},{"impl":"LinkedList","n":1021,"op":"remove","t":0.0},{"impl":"LinkedList","n":1031,"op":"remove","t":0.0},{"impl":"LinkedList","n":1041,"op":"remove","t":0.0},{"impl":"LinkedList","n":1051,"op":"remove","t":0.0},{"impl":"LinkedList","n":1061,"op":"remove","t":0.0},{"impl":"LinkedList","n":1071,"op":"remove","t":0.0},{"impl":"LinkedList","n":1081,"op":"remove","t":0.0},{"impl":"LinkedList","n":1091,"op":"remove","t":0.0},{"impl":"LinkedList","n":1101,"op":"remove","t":0.0},{"impl":"LinkedList","n":1111,"op":"remove","t":0.0},{"impl":"LinkedList","n":1121,"op":"remove","t":0.0},{"impl":"LinkedList","n":1131,"op":"remove","t":0.0},{"impl":"LinkedList","n":1141,"op":"remove","t":0.0},{"impl":"LinkedList","n":1151,"op":"remove","t":0.0},{"impl":"LinkedList","n":1161,"op":"remove","t":0.0},{"impl":"LinkedList","n":1171,"op":"remove","t":0.0},{"impl":"LinkedList","n":1181,"op":"remove","t":0.0},{"impl":"LinkedList","n":1191,"op":"remove","t":0.0},{"impl":"LinkedList","n":1201,"op":"remove","t":0.0},{"impl":"LinkedList","n":1211,"op":"remove","t":0.0},{"impl":"LinkedList","n":1221,"op":"remove","t":0.0},{"impl":"LinkedList","n":1231,"op":"remove","t":0.0},{"impl":"LinkedList","n":1241,"op":"remove","t":0.0},{"impl":"LinkedList","n":1251,"op":"remove","t":0.0},{"impl":"LinkedList","n":1261,"op":"remove","t":0.0},{"impl":"LinkedList","n":1271,"op":"remove","t":0.0},{"impl":"LinkedList","n":1281,"op":"remove","t":0.0},{"impl":"LinkedList","n":1291,"op":"remove","t":0.0},{"impl":"LinkedList","n":1301,"op":"remove","t":0.0},{"impl":"LinkedList","n":1311,"op":"remove","t":0.0},{"impl":"LinkedList","n":1321,"op":"remove","t":0.0},{"impl":"LinkedList","n":1331,"op":"remove","t":0.0},{"impl":"LinkedList","n":1341,"op":"remove","t":0.0},{"impl":"LinkedList","n":1351,"op":"remove","t":0.0},{"impl":"LinkedList","n":1361,"op":"remove","t":0.0},{"impl":"LinkedList","n":1371,"op":"remove","t":0.0},{"impl":"LinkedList","n":1381,"op":"remove","t":0.0},{"impl":"LinkedList","n":1391,"op":"remove","t":0.0},{"impl":"LinkedList","n":1401,"op":"remove","t":0.0},{"impl":"LinkedList","n":1411,"op":"remove","t":0.0},{"impl":"LinkedList","n":1421,"op":"remove","t":0.0},{"impl":"LinkedList","n":1431,"op":"remove","t":0.0},{"impl":"LinkedList","n":1441,"op":"remove","t":0.0},{"impl":"LinkedList","n":1451,"op":"remove","t":0.0},{"impl":"LinkedList","n":1461,"op":"remove","t":0.0},{"impl":"LinkedList","n":1471,"op":"remove","t":0.0},{"impl":"LinkedList","n":1481,"op":"remove","t":0.0},{"impl":"LinkedList","n":1491,"op":"remove","t":0.0},{"impl":"LinkedList","n":1501,"op":"remove","t":0.0},{"impl":"LinkedList","n":1511,"op":"remove","t":0.0},{"impl":"LinkedList","n":1521,"op":"remove","t":0.0},{"impl":"LinkedList","n":1531,"op":"remove","t":0.0},{"impl":"LinkedList","n":1541,"op":"remove","t":0.0},{"impl":"LinkedList","n":1551,"op":"remove","t":0.0},{"impl":"LinkedList","n":1561,"op":"remove","t":0.0},{"impl":"LinkedList","n":1571,"op":"remove","t":0.0},{"impl":"LinkedList","n":1581,"op":"remove","t":0.0},{"impl":"LinkedList","n":1591,"op":"remove","t":0.0},{"impl":"LinkedList","n":1601,"op":"remove","t":0.0},{"impl":"LinkedList","n":1611,"op":"remove","t":0.0},{"impl":"LinkedList","n":1621,"op":"remove","t":0.0},{"impl":"LinkedList","n":1631,"op":"remove","t":0.0},{"impl":"LinkedList","n":1641,"op":"remove","t":0.0},{"impl":"LinkedList","n":1651,"op":"remove","t":0.0},{"impl":"LinkedList","n":1661,"op":"remove","t":0.0},{"impl":"LinkedList","n":1671,"op":"remove","t":0.0},{"impl":"LinkedList","n":1681,"op":"remove","t":0.0},{"impl":"LinkedList","n":1691,"op":"remove","t":0.0},{"impl":"LinkedList","n":1701,"op":"remove","t":0.0},{"impl":"LinkedList","n":1711,"op":"remove","t":0.0},{"impl":"LinkedList","n":1721,"op":"remove","t":0.0},{"impl":"LinkedList","n":1731,"op":"remove","t":0.0},{"impl":"LinkedList","n":1741,"op":"remove","t":0.0},{"impl":"LinkedList","n":1751,"op":"remove","t":0.0},{"impl":"LinkedList","n":1761,"op":"remove","t":0.0},{"impl":"LinkedList","n":1771,"op":"remove","t":0.0},{"impl":"LinkedList","n":1781,"op":"remove","t":0.0},{"impl":"LinkedList","n":1791,"op":"remove","t":0.0},{"impl":"LinkedList","n":1801,"op":"remove","t":0.0},{"impl":"LinkedList","n":1811,"op":"remove","t":0.0},{"impl":"LinkedList","n":1821,"op":"remove","t":0.0},{"impl":"LinkedList","n":1831,"op":"remove","t":0.0},{"impl":"LinkedList","n":1841,"op":"remove","t":0.0},{"impl":"LinkedList","n":1851,"op":"remove","t":0.0},{"impl":"LinkedList","n":1861,"op":"remove","t":0.0},{"impl":"LinkedList","n":1871,"op":"remove","t":0.0},{"impl":"LinkedList","n":1881,"op":"remove","t":0.0},{"impl":"LinkedList","n":1891,"op":"remove","t":0.0},{"impl":"LinkedList","n":1901,"op":"remove","t":0.0},{"impl":"LinkedList","n":1911,"op":"remove","t":0.0},{"impl":"LinkedList","n":1921,"op":"remove","t":0.0},{"impl":"LinkedList","n":1931,"op":"remove","t":0.0},{"impl":"LinkedList","n":1941,"op":"remove","t":0.0},{"impl":"LinkedList","n":1951,"op":"remove","t":0.0},{"impl":"LinkedList","n":1961,"op":"remove","t":0.0},{"impl":"LinkedList","n":1971,"op":"remove","t":0.0},{"impl":"LinkedList","n":1981,"op":"remove","t":0.0},{"impl":"LinkedList","n":1991,"op":"remove","t":0.0},{"impl":"LinkedList","n":2001,"op":"remove","t":0.0},{"impl":"LinkedList","n":2011,"op":"remove","t":0.0},{"impl":"LinkedList","n":2021,"op":"remove","t":0.0},{"impl":"LinkedList","n":2031,"op":"remove","t":0.0},{"impl":"LinkedList","n":2041,"op":"remove","t":0.0},{"impl":"LinkedList","n":2051,"op":"remove","t":0.0},{"impl":"LinkedList","n":2061,"op":"remove","t":0.0},{"impl":"LinkedList","n":2071,"op":"remove","t":0.0},{"impl":"LinkedList","n":2081,"op":"remove","t":0.0},{"impl":"LinkedList","n":2091,"op":"remove","t":0.0},{"impl":"LinkedList","n":2101,"op":"remove","t":0.0},{"impl":"LinkedList","n":2111,"op":"remove","t":0.0},{"impl":"LinkedList","n":2121,"op":"remove","t":0.0},{"impl":"LinkedList","n":2131,"op":"remove","t":0.0},{"impl":"LinkedList","n":2141,"op":"remove","t":0.0},{"impl":"LinkedList","n":2151,"op":"remove","t":0.0},{"impl":"LinkedList","n":2161,"op":"remove","t":0.0},{"impl":"LinkedList","n":2171,"op":"remove","t":0.0},{"impl":"LinkedList","n":2181,"op":"remove","t":0.0},{"impl":"LinkedList","n":2191,"op":"remove","t":0.0},{"impl":"LinkedList","n":2201,"op":"remove","t":0.0},{"impl":"LinkedList","n":2211,"op":"remove","t":0.0},{"impl":"LinkedList","n":2221,"op":"remove","t":0.0},{"impl":"LinkedList","n":2231,"op":"remove","t":0.0},{"impl":"LinkedList","n":2241,"op":"remove","t":0.0},{"impl":"LinkedList","n":2251,"op":"remove","t":0.0},{"impl":"LinkedList","n":2261,"op":"remove","t":0.0},{"impl":"LinkedList","n":2271,"op":"remove","t":0.0},{"impl":"LinkedList","n":2281,"op":"remove","t":0.0},{"impl":"LinkedList","n":2291,"op":"remove","t":0.0},{"impl":"LinkedList","n":2301,"op":"remove","t":0.0},{"impl":"LinkedList","n":2311,"op":"remove","t":0.0},{"impl":"LinkedList","n":2321,"op":"remove","t":0.0},{"impl":"LinkedList","n":2331,"op":"remove","t":0.0},{"impl":"LinkedList","n":2341,"op":"remove","t":0.0},{"impl":"LinkedList","n":2351,"op":"remove","t":0.0},{"impl":"LinkedList","n":2361,"op":"remove","t":0.0},{"impl":"LinkedList","n":2371,"op":"remove","t":0.0},{"impl":"LinkedList","n":2381,"op":"remove","t":0.0},{"impl":"LinkedList","n":2391,"op":"remove","t":0.0},{"impl":"LinkedList","n":2401,"op":"remove","t":0.0},{"impl":"LinkedList","n":2411,"op":"remove","t":0.0},{"impl":"LinkedList","n":2421,"op":"remove","t":0.0},{"impl":"LinkedList","n":2431,"op":"remove","t":0.0},{"impl":"LinkedList","n":2441,"op":"remove","t":0.0},{"impl":"LinkedList","n":2451,"op":"remove","t":0.0},{"impl":"LinkedList","n":2461,"op":"remove","t":0.0},{"impl":"LinkedList","n":2471,"op":"remove","t":0.0},{"impl":"LinkedList","n":2481,"op":"remove","t":0.0},{"impl":"LinkedList","n":2491,"op":"remove","t":0.0},{"impl":"LinkedList","n":2501,"op":"remove","t":0.0},{"impl":"LinkedList","n":2511,"op":"remove","t":0.0},{"impl":"LinkedList","n":2521,"op":"remove","t":0.0},{"impl":"LinkedList","n":2531,"op":"remove","t":0.0},{"impl":"LinkedList","n":2541,"op":"remove","t":0.0},{"impl":"LinkedList","n":2551,"op":"remove","t":0.0},{"impl":"LinkedList","n":2561,"op":"remove","t":0.0},{"impl":"LinkedList","n":2571,"op":"remove","t":0.0},{"impl":"LinkedList","n":2581,"op":"remove","t":0.0},{"impl":"LinkedList","n":2591,"op":"remove","t":0.0},{"impl":"LinkedList","n":2601,"op":"remove","t":0.0},{"impl":"LinkedList","n":2611,"op":"remove","t":0.0},{"impl":"LinkedList","n":2621,"op":"remove","t":0.0},{"impl":"LinkedList","n":2631,"op":"remove","t":0.0},{"impl":"LinkedList","n":2641,"op":"remove","t":0.0},{"impl":"LinkedList","n":2651,"op":"remove","t":0.0},{"impl":"LinkedList","n":2661,"op":"remove","t":0.0},{"impl":"LinkedList","n":2671,"op":"remove","t":0.0},{"impl":"LinkedList","n":2681,"op":"remove","t":0.0},{"impl":"LinkedList","n":2691,"op":"remove","t":0.0},{"impl":"LinkedList","n":2701,"op":"remove","t":0.0},{"impl":"LinkedList","n":2711,"op":"remove","t":0.0},{"impl":"LinkedList","n":2721,"op":"remove","t":0.0},{"impl":"LinkedList","n":2731,"op":"remove","t":0.0},{"impl":"LinkedList","n":2741,"op":"remove","t":0.0},{"impl":"LinkedList","n":2751,"op":"remove","t":0.0},{"impl":"LinkedList","n":2761,"op":"remove","t":0.0},{"impl":"LinkedList","n":2771,"op":"remove","t":0.0},{"impl":"LinkedList","n":2781,"op":"remove","t":0.0},{"impl":"LinkedList","n":2791,"op":"remove","t":0.0},{"impl":"LinkedList","n":2801,"op":"remove","t":0.0},{"impl":"LinkedList","n":2811,"op":"remove","t":0.0},{"impl":"LinkedList","n":2821,"op":"remove","t":0.0},{"impl":"LinkedList","n":2831,"op":"remove","t":0.0},{"impl":"LinkedList","n":2841,"op":"remove","t":0.0},{"impl":"LinkedList","n":2851,"op":"remove","t":0.0},{"impl":"LinkedList","n":2861,"op":"remove","t":0.0},{"impl":"LinkedList","n":2871,"op":"remove","t":0.0},{"impl":"LinkedList","n":2881,"op":"remove","t":0.0},{"impl":"LinkedList","n":2891,"op":"remove","t":0.0},{"impl":"LinkedList","n":2901,"op":"remove","t":0.0},{"impl":"LinkedList","n":2911,"op":"remove","t":0.0},{"impl":"LinkedList","n":2921,"op":"remove","t":0.0},{"impl":"LinkedList","n":2931,"op":"remove","t":0.0},{"impl":"LinkedList","n":2941,"op":"remove","t":0.0},{"impl":"LinkedList","n":2951,"op":"remove","t":0.0},{"impl":"LinkedList","n":2961,"op":"remove","t":0.0},{"impl":"LinkedList","n":2971,"op":"remove","t":0.0},{"impl":"LinkedList","n":2981,"op":"remove","t":0.0},{"impl":"LinkedList","n":2991,"op":"remove","t":0.0},{"impl":"Vec","n":1,"op":"remove","t":0.0},{"impl":"Vec","n":11,"op":"remove","t":0.0},{"impl":"Vec","n":21,"op":"remove","t":0.0},{"impl":"Vec","n":31,"op":"remove","t":0.0},{"impl":"Vec","n":41,"op":"remove","t":16.78839464605562},{"impl":"Vec","n":51,"op":"remove","t":185.5156708216391},{"impl":"Vec","n":61,"op":"remove","t":323.3250453346377},{"impl":"Vec","n":71,"op":"remove","t":439.65172057663176},{"impl":"Vec","n":81,"op":"remove","t":540.1785966998305},{"impl":"Vec","n":91,"op":"remove","t":628.5950201043124},{"impl":"Vec","n":101,"op":"remove","t":707.4323611432887},{"impl":"Vec","n":111,"op":"remove","t":778.5030441827903},{"impl":"Vec","n":121,"op":"remove","t":843.1494100682903},{"impl":"Vec","n":131,"op":"remove","t":902.3934237543431},{"impl":"Vec","n":141,"op":"remove","t":957.0311554735222},{"impl":"Vec","n":151,"op":"remove","t":1007.6948118298096},{"impl":"Vec","n":161,"op":"remove","t":1054.8948356147466},{"impl":"Vec","n":171,"op":"remove","t":1099.0492974492317},{"impl":"Vec","n":181,"op":"remove","t":1140.504921606483},{"impl":"Vec","n":191,"op":"remove","t":1179.5524501834907},{"impl":"Vec","n":201,"op":"remove","t":1216.4380819327712},{"impl":"Vec","n":211,"op":"remove","t":1251.3721309207926},{"impl":"Vec","n":221,"op":"remove","t":1284.5356784178925},{"impl":"Vec","n":231,"op":"remove","t":1316.0857514990576},{"impl":"Vec","n":241,"op":"remove","t":1346.1594033743231},{"impl":"Vec","n":251,"op":"remove","t":1374.8769636162328},{"impl":"Vec","n":261,"op":"remove","t":1402.3446530374476},{"impl":"Vec","n":271,"op":"remove","t":1428.6567066646276},{"impl":"Vec","n":281,"op":"remove","t":1453.897111836678},{"impl":"Vec","n":291,"op":"remove","t":1478.1410422352078},{"impl":"Vec","n":301,"op":"remove","t":1501.4560495285173},{"impl":"Vec","n":311,"op":"remove","t":1523.903060188833},{"impl":"Vec","n":321,"op":"remove","t":1545.537214499242},{"impl":"Vec","n":331,"op":"remove","t":1566.4085768127902},{"impl":"Vec","n":341,"op":"remove","t":1586.562740067523},{"impl":"Vec","n":351,"op":"remove","t":1606.041342904422},{"impl":"Vec","n":361,"op":"remove","t":1624.8825141255197},{"impl":"Vec","n":371,"op":"remove","t":1643.1212564092943},{"impl":"Vec","n":381,"op":"remove","t":1660.7897789807057},{"impl":"Vec","n":391,"op":"remove","t":1677.9177871737638},{"impl":"Vec","n":401,"op":"remove","t":1694.5327354206875},{"impl":"Vec","n":411,"op":"remove","t":1710.6600490746828},{"impl":"Vec","n":421,"op":"remove","t":1726.3233195631037},{"impl":"Vec","n":431,"op":"remove","t":1741.5444766286105},{"impl":"Vec","n":441,"op":"remove","t":1756.3439408123609},{"impl":"Vec","n":451,"op":"remove","t":1770.740758838138},{"impl":"Vec","n":461,"op":"remove","t":1784.7527241479247},{"impl":"Vec","n":471,"op":"remove","t":1798.3964845013274},{"impl":"Vec","n":481,"op":"remove","t":1811.687638269916},{"impl":"Vec","n":491,"op":"remove","t":1824.6408208225102},{"impl":"Vec","n":501,"op":"remove","t":1837.2697822004106},{"impl":"Vec","n":511,"op":"remove","t":1849.5874571156364},{"impl":"Vec","n":521,"op":"remove","t":1861.6060281650402},{"impl":"Vec","n":531,"op":"remove","t":1873.3369830343422},{"impl":"Vec","n":541,"op":"remove","t":1884.7911663649916},{"impl":"Vec","n":551,"op":"remove","t":1895.9788268704683},{"impl":"Vec","n":561,"op":"remove","t":1906.909660214807},{"impl":"Vec","n":571,"op":"remove","t":1917.5928481026326},{"impl":"Vec","n":581,"op":"remove","t":1928.0370939754316},{"impl":"Vec","n":591,"op":"remove","t":1938.2506556616095},{"impl":"Vec","n":601,"op":"remove","t":1948.241375287038},{"impl":"Vec","n":611,"op":"remove","t":1958.0167067173807},{"impl":"Vec","n":621,"op":"remove","t":1967.5837407726726},{"impl":"Vec","n":631,"op":"remove","t":1976.9492284276625},{"impl":"Vec","n":641,"op":"remove","t":1986.1196021880069},{"impl":"Vec","n":651,"op":"remove","t":1995.1009958117534},{"impl":"Vec","n":661,"op":"remove","t":2003.8992625274805},{"impl":"Vec","n":671,"op":"remove","t":2012.519991884537},{"impl":"Vec","n":681,"op":"remove","t":2020.9685253568437},{"impl":"Vec","n":691,"op":"remove","t":2029.249970809241},{"impl":"Vec","n":701,"op":"remove","t":2037.369215924498},{"impl":"Vec","n":711,"op":"remove","t":2045.3309406792823},{"impl":"Vec","n":721,"op":"remove","t":2053.1396289488252},{"impl":"Vec","n":731,"op":"remove","t":2060.799579312294},{"impl":"Vec","n":741,"op":"remove","t":2068.3149151240195},{"impl":"Vec","n":751,"op":"remove","t":2075.689593909654},{"impl":"Vec","n":761,"op":"remove","t":2082.9274161408366},{"impl":"Vec","n":771,"op":"remove","t":2090.03203343704},{"impl":"Vec","n":781,"op":"remove","t":2097.0069562389103},{"impl":"Vec","n":791,"op":"remove","t":2103.855560993442},{"impl":"Vec","n":801,"op":"remove","t":2110.581096887773},{"impl":"Vec","n":811,"op":"remove","t":2117.186692165231},{"impl":"Vec","n":821,"op":"remove","t":2123.6753600543325},{"impl":"Vec","n":831,"op":"remove","t":2130.050004338853},{"impl":"Vec","n":841,"op":"remove","t":2136.31342459474},{"impl":"Vec","n":851,"op":"remove","t":2142.4683211174906},{"impl":"Vec","n":861,"op":"remove","t":2148.5172995616936},{"impl":"Vec","n":871,"op":"remove","t":2154.462875312685},{"impl":"Vec","n":881,"op":"remove","t":2160.307477608658},{"impl":"Vec","n":891,"op":"remove","t":2166.053453430138},{"impl":"Vec","n":901,"op":"remove","t":2171.7030711723937},{"impl":"Vec","n":911,"op":"remove","t":2177.258524115169},{"impl":"Vec","n":921,"op":"remove","t":2182.721933702993},{"impl":"Vec","n":931,"op":"remove","t":2188.0953526483804},{"impl":"Vec","n":941,"op":"remove","t":2193.380767869231},{"impl":"Vec","n":951,"op":"remove","t":2198.5801032709783},{"impl":"Vec","n":961,"op":"remove","t":2203.6952223832172},{"impl":"Vec","n":971,"op":"remove","t":2208.727930859852},{"impl":"Vec","n":981,"op":"remove","t":2213.6799788511607},{"impl":"Vec","n":991,"op":"remove","t":2218.553063255551},{"impl":"Vec","n":1001,"op":"remove","t":2223.3488298582947},{"impl":"Vec","n":1011,"op":"remove","t":2228.0688753639392},{"impl":"Vec","n":1021,"op":"remove","t":2232.7147493286957},{"impl":"Vec","n":1031,"op":"remove","t":2237.2879559986577},{"impl":"Vec","n":1041,"op":"remove","t":2241.7899560592996},{"impl":"Vec","n":1051,"op":"remove","t":2246.2221683013313},{"impl":"Vec","n":1061,"op":"remove","t":2250.5859712076917},{"impl":"Vec","n":1071,"op":"remove","t":2254.8827044660807},{"impl":"Vec","n":1081,"op":"remove","t":2259.1136704112214},{"impl":"Vec","n":1091,"op":"remove","t":2263.2801354007115},{"impl":"Vec","n":1101,"op":"remove","t":2267.383331128098},{"impl":"Vec","n":1111,"op":"remove","t":2271.424455876595},{"impl":"Vec","n":1121,"op":"remove","t":2275.4046757166293},{"impl":"Vec","n":1131,"op":"remove","t":2279.325125650206},{"impl":"Vec","n":1141,"op":"remove","t":2283.186910704896},{"impl":"Vec","n":1151,"op":"remove","t":2286.9911069801096},{"impl":"Vec","n":1161,"op":"remove","t":2290.7387626480895},{"impl":"Vec","n":1171,"op":"remove","t":2294.430898912002},{"impl":"Vec","n":1181,"op":"remove","t":2298.068510923272},{"impl":"Vec","n":1191,"op":"remove","t":2301.652568660261},{"impl":"Vec","n":1201,"op":"remove","t":2305.1840177701915},{"impl":"Vec","n":1211,"op":"remove","t":2308.663780376178},{"impl":"Vec","n":1221,"op":"remove","t":2312.092755851068},{"impl":"Vec","n":1231,"op":"remove","t":2315.471821559723},{"impl":"Vec","n":1241,"op":"remove","t":2318.801833571271},{"impl":"Vec","n":1251,"op":"remove","t":2322.0836273427744},{"impl":"Vec","n":1261,"op":"remove","t":2325.318018375684},{"impl":"Vec","n":1271,"op":"remove","t":2328.5058028463673},{"impl":"Vec","n":1281,"op":"remove","t":2331.6477582119223},{"impl":"Vec","n":1291,"op":"remove","t":2334.74464379244},{"impl":"Vec","n":1301,"op":"remove","t":2337.797201330809},{"impl":"Vec","n":1311,"op":"remove","t":2340.8061555310715},{"impl":"Vec","n":1321,"op":"remove","t":2343.772214576343},{"impl":"Vec","n":1331,"op":"remove","t":2346.696070627187},{"impl":"Vec","n":1341,"op":"remove","t":2349.578400301349},{"impl":"Vec","n":1351,"op":"remove","t":2352.4198651356564},{"impl":"Vec","n":1361,"op":"remove","t":2355.221112030899},{"impl":"Vec","n":1371,"op":"remove","t":2357.982773680423},{"impl":"Vec","n":1381,"op":"remove","t":2360.705468983135},{"impl":"Vec","n":1391,"op":"remove","t":2363.3898034416325},{"impl":"Vec","n":1401,"op":"remove","t":2366.0363695460514},{"impl":"Vec","n":1411,"op":"remove","t":2368.645747144277},{"impl":"Vec","n":1421,"op":"remove","t":2371.2185037990726},{"impl":"Vec","n":1431,"op":"remove","t":2373.755195132696},{"impl":"Vec","n":1441,"op":"remove","t":2376.256365159507},{"impl":"Vec","n":1451,"op":"remove","t":2378.7225466070768},{"impl":"Vec","n":1461,"op":"remove","t":2381.1542612262765},{"impl":"Vec","n":1471,"op":"remove","t":2383.5520200907768},{"impl":"Vec","n":1481,"op":"remove","t":2385.9163238864107},{"impl":"Vec","n":1491,"op":"remove","t":2388.247663190802},{"impl":"Vec","n":1501,"op":"remove","t":2390.5465187436375},{"impl":"Vec","n":1511,"op":"remove","t":2392.813361707973},{"impl":"Vec","n":1521,"op":"remove","t":2395.048653922925},{"impl":"Vec","n":1531,"op":"remove","t":2397.252848148067},{"impl":"Vec","n":1541,"op":"remove","t":2399.4263882998903},{"impl":"Vec","n":1551,"op":"remove","t":2401.5697096806007},{"impl":"Vec","n":1561,"op":"remove","t":2403.6832391995713},{"impl":"Vec","n":1571,"op":"remove","t":2405.767395587724},{"impl":"Vec","n":1581,"op":"remove","t":2407.822589605104},{"impl":"Vec","n":1591,"op":"remove","t":2409.8492242419193},{"impl":"Vec","n":1601,"op":"remove","t":2411.847694913272},{"impl":"Vec","n":1611,"op":"remove","t":2413.818389647832},{"impl":"Vec","n":1621,"op":"remove","t":2415.7616892706787},{"impl":"Vec","n":1631,"op":"remove","t":2417.677967580503},{"impl":"Vec","n":1641,"op":"remove","t":2419.5675915214156},{"impl":"Vec","n":1651,"op":"remove","t":2421.430921349518},{"impl":"Vec","n":1661,"op":"remove","t":2423.2683107944517},{"impl":"Vec","n":1671,"op":"remove","t":2425.0801072161},{"impl":"Vec","n":1681,"op":"remove","t":2426.866651756615},{"impl":"Vec","n":1691,"op":"remove","t":2428.6282794879303},{"impl":"Vec","n":1701,"op":"remove","t":2430.36531955493},{"impl":"Vec","n":1711,"op":"remove","t":2432.0780953144204},{"impl":"Vec","n":1721,"op":"remove","t":2433.766924470053},{"impl":"Vec","n":1731,"op":"remove","t":2435.4321192033353},{"impl":"Vec","n":1741,"op":"remove","t":2437.073986300877},{"impl":"Vec","n":1751,"op":"remove","t":2438.6928272779774},{"impl":"Vec","n":1761,"op":"remove","t":2440.288938498711},{"impl":"Vec","n":1771,"op":"remove","t":2441.8626112925986},{"impl":"Vec","n":1781,"op":"remove","t":2443.414132068},{"impl":"Vec","n":1791,"op":"remove","t":2444.9437824223387},{"impl":"Vec","n":1801,"op":"remove","t":2446.4518392492414},{"impl":"Vec","n":1811,"op":"remove","t":2447.9385748427267},{"impl":"Vec","n":1821,"op":"remove","t":2449.4042569985195},{"impl":"Vec","n":1831,"op":"remove","t":2450.849149112588},{"impl":"Vec","n":1841,"op":"remove","t":2452.273510277003},{"impl":"Vec","n":1851,"op":"remove","t":2453.6775953731963},{"impl":"Vec","n":1861,"op":"remove","t":2455.061655162709},{"impl":"Vec","n":1871,"op":"remove","t":2456.4259363755064},{"impl":"Vec","n":1881,"op":"remove","t":2457.770681795943},{"impl":"Vec","n":1891,"op":"remove","t":2459.096130346439},{"impl":"Vec","n":1901,"op":"remove","t":2460.4025171689673},{"impl":"Vec","n":1911,"op":"remove","t":2461.6900737043816},{"impl":"Vec","n":1921,"op":"remove","t":2462.959027769692},{"impl":"Vec","n":1931,"op":"remove","t":2464.209603633325},{"impl":"Vec","n":1941,"op":"remove","t":2465.44202208844},{"impl":"Vec","n":1951,"op":"remove","t":2466.6565005243665},{"impl":"Vec","n":1961,"op":"remove","t":2467.853252996216},{"impl":"Vec","n":1971,"op":"remove","t":2469.0324902927105},{"impl":"Vec","n":1981,"op":"remove","t":2470.1944200023186},{"impl":"Vec","n":1991,"op":"remove","t":2471.3392465776988},{"impl":"Vec","n":2001,"op":"remove","t":2472.46717139855},{"impl":"Vec","n":2011,"op":"remove","t":2473.578392832885},{"impl":"Vec","n":2021,"op":"remove","t":2474.67310629679},{"impl":"Vec","n":2031,"op":"remove","t":2475.7515043126978},{"impl":"Vec","n":2041,"op":"remove","t":2476.8137765662486},{"impl":"Vec","n":2051,"op":"remove","t":2477.8601099617445},{"impl":"Vec","n":2061,"op":"remove","t":2478.8906886762616},{"impl":"Vec","n":2071,"op":"remove","t":2479.905694212456},{"impl":"Vec","n":2081,"op":"remove","t":2480.905305450092},{"impl":"Vec","n":2091,"op":"remove","t":2481.8896986963364},{"impl":"Vec","n":2101,"op":"remove","t":2482.859047734861},{"impl":"Vec","n":2111,"op":"remove","t":2483.8135238737636},{"impl":"Vec","n":2121,"op":"remove","t":2484.7532959923697},{"impl":"Vec","n":2131,"op":"remove","t":2485.678530586935},{"impl":"Vec","n":2141,"op":"remove","t":2486.5893918152606},{"impl":"Vec","n":2151,"op":"remove","t":2487.4860415402936},{"impl":"Vec","n":2161,"op":"remove","t":2488.3686393726935},{"impl":"Vec","n":2171,"op":"remove","t":2489.2373427124303},{"impl":"Vec","n":2181,"op":"remove","t":2490.092306789425},{"impl":"Vec","n":2191,"op":"remove","t":2490.933684703253},{"impl":"Vec","n":2201,"op":"remove","t":2491.761627461952},{"impl":"Vec","n":2211,"op":"remove","t":2492.576284019943},{"impl":"Vec","n":2221,"op":"remove","t":2493.3778013151077},{"impl":"Vec","n":2231,"op":"remove","t":2494.1663243050125},{"impl":"Vec","n":2241,"op":"remove","t":2494.9419960023492},{"impl":"Vec","n":2251,"op":"remove","t":2495.7049575095593},{"impl":"Vec","n":2261,"op":"remove","t":2496.455348052713},{"impl":"Vec","n":2271,"op":"remove","t":2497.1933050146263},{"impl":"Vec","n":2281,"op":"remove","t":2497.9189639672577},{"impl":"Vec","n":2291,"op":"remove","t":2498.6324587033964},{"impl":"Vec","n":2301,"op":"remove","t":2499.3339212676574},{"impl":"Vec","n":2311,"op":"remove","t":2500.0234819868033},{"impl":"Vec","n":2321,"op":"remove","t":2500.701269499415},{"impl":"Vec","n":2331,"op":"remove","t":2501.367410784927},{"impl":"Vec","n":2341,"op":"remove","t":2502.0220311920307},{"impl":"Vec","n":2351,"op":"remove","t":2502.6652544664894},{"impl":"Vec","n":2361,"op":"remove","t":2503.2972027783385},{"impl":"Vec","n":2371,"op":"remove","t":2503.9179967485416},{"impl":"Vec","n":2381,"op":"remove","t":2504.527755475056},{"impl":"Vec","n":2391,"op":"remove","t":2505.1265965583734},{"impl":"Vec","n":2401,"op":"remove","t":2505.714636126513},{"impl":"Vec","n":2411,"op":"remove","t":2506.2919888595115},{"impl":"Vec","n":2421,"op":"remove","t":2506.8587680133837},{"impl":"Vec","n":2431,"op":"remove","t":2507.415085443612},{"impl":"Vec","n":2441,"op":"remove","t":2507.9610516281414},{"impl":"Vec","n":2451,"op":"remove","t":2508.4967756899046},{"impl":"Vec","n":2461,"op":"remove","t":2509.0223654188903},{"impl":"Vec","n":2471,"op":"remove","t":2509.537927293768},{"impl":"Vec","n":2481,"op":"remove","t":2510.043566503072},{"impl":"Vec","n":2491,"op":"remove","t":2510.539386965956},{"impl":"Vec","n":2501,"op":"remove","t":2511.0254913525428},{"impl":"Vec","n":2511,"op":"remove","t":2511.501981103852},{"impl":"Vec","n":2521,"op":"remove","t":2511.9689564513496},{"impl":"Vec","n":2531,"op":"remove","t":2512.4265164360954},{"impl":"Vec","n":2541,"op":"remove","t":2512.874758927523},{"impl":"Vec","n":2551,"op":"remove","t":2513.3137806418463},{"impl":"Vec","n":2561,"op":"remove","t":2513.7436771601056},{"impl":"Vec","n":2571,"op":"remove","t":2514.1645429458645},{"impl":"Vec","n":2581,"op":"remove","t":2514.5764713625613},{"impl":"Vec","n":2591,"op":"remove","t":2514.9795546905284},{"impl":"Vec","n":2601,"op":"remove","t":2515.3738841436766},{"impl":"Vec","n":2611,"op":"remove","t":2515.7595498858705},{"impl":"Vec","n":2621,"op":"remove","t":2516.136641046973},{"impl":"Vec","n":2631,"op":"remove","t":2516.5052457386123},{"impl":"Vec","n":2641,"op":"remove","t":2516.865451069615},{"impl":"Vec","n":2651,"op":"remove","t":2517.217343161182},{"impl":"Vec","n":2661,"op":"remove","t":2517.561007161749},{"impl":"Vec","n":2671,"op":"remove","t":2517.8965272615933},{"impl":"Vec","n":2681,"op":"remove","t":2518.2239867071453},{"impl":"Vec","n":2691,"op":"remove","t":2518.5434678150527},{"impl":"Vec","n":2701,"op":"remove","t":2518.8550519859728},{"impl":"Vec","n":2711,"op":"remove","t":2519.158819718112},{"impl":"Vec","n":2721,"op":"remove","t":2519.454850620516},{"impl":"Vec","n":2731,"op":"remove","t":2519.7432234261178},{"impl":"Vec","n":2741,"op":"remove","t":2520.0240160045496},{"impl":"Vec","n":2751,"op":"remove","t":2520.2973053747137},{"impl":"Vec","n":2761,"op":"remove","t":2520.563167717132},{"impl":"Vec","n":2771,"op":"remove","t":2520.82167838607},{"impl":"Vec","n":2781,"op":"remove","t":2521.072911921442},{"impl":"Vec","n":2791,"op":"remove","t":2521.3169420605027},{"impl":"Vec","n":2801,"op":"remove","t":2521.553841749334},{"impl":"Vec","n":2811,"op":"remove","t":2521.7836831541176},{"impl":"Vec","n":2821,"op":"remove","t":2522.006537672218},{"impl":"Vec","n":2831,"op":"remove","t":2522.2224759430615},{"impl":"Vec","n":2841,"op":"remove","t":2522.431567858828},{"impl":"Vec","n":2851,"op":"remove","t":2522.6338825749535},{"impl":"Vec","n":2861,"op":"remove","t":2522.829488520448},{"impl":"Vec","n":2871,"op":"remove","t":2523.0184534080354},{"impl":"Vec","n":2881,"op":"remove","t":2523.2008442441143},{"impl":"Vec","n":2891,"op":"remove","t":2523.376727338548},{"impl":"Vec","n":2901,"op":"remove","t":2523.546168314284},{"impl":"Vec","n":2911,"op":"remove","t":2523.7092321168134},{"impl":"Vec","n":2921,"op":"remove","t":2523.8659830234615},{"impl":"Vec","n":2931,"op":"remove","t":2524.016484652517},{"impl":"Vec","n":2941,"op":"remove","t":2524.160799972223},{"impl":"Vec","n":2951,"op":"remove","t":2524.298991309587},{"impl":"Vec","n":2961,"op":"remove","t":2524.4311203590737},{"impl":"Vec","n":2971,"op":"remove","t":2524.5572481911263},{"impl":"Vec","n":2981,"op":"remove","t":2524.677435260553},{"impl":"Vec","n":2991,"op":"remove","t":2524.7917414147823}]},"encoding":{"color":{"field":"impl","legend":{"title":"Implementation"}},"x":{"axis":{"title":"Size of container (n)"},"field":"n","scale":{"domain":[1,3000]},"type":"quantitative"},"y":{"axis":{"title":"Estimated cost"},"field":"t","scale":{"domain":[0,200]},"type":"quantitative"}},"mark":{"clip":true,"fillOpacity":1,"type":"line"}}],"width":500} \ No newline at end of file
diff --git a/thesis/main.tex b/thesis/main.tex
index a4ff0b1..45285e1 100644
--- a/thesis/main.tex
+++ b/thesis/main.tex
@@ -6,6 +6,7 @@
\usepackage[dvipsnames]{xcolor}
\usepackage{graphicx}
+\usepackage{adjustbox}
\usepackage{amsmath}
\usepackage{microtype}
diff --git a/thesis/parts/results.tex b/thesis/parts/results.tex
index bd30fcf..6562d38 100644
--- a/thesis/parts/results.tex
+++ b/thesis/parts/results.tex
@@ -34,7 +34,7 @@ The lines correspond to our fitted curves, while the points indicate the raw obs
\begin{figure}[h!]
\centering
- \includegraphics[width=15cm]{assets/insert.png}
+ \includegraphics[width=12cm]{assets/insert.png}
\caption{Estimated cost of insert operation by implementation}
\label{fig:cm_insert}
\end{figure}
@@ -82,7 +82,7 @@ This seems inaccurate, and is likely a result of few data points at low n values
\begin{figure}[h!]
\centering
- \includegraphics[width=15cm]{assets/insert_small_n.png}
+ \includegraphics[width=12cm]{assets/insert_small_n.png}
\caption{Estimated cost of insert operation on set implementations, at small n values}
\label{fig:cm_insert_small_n}
\end{figure}
@@ -94,7 +94,7 @@ Figure \ref{fig:cm_contains} shows our built cost models, again grouped for read
\begin{figure}[h!]
\centering
- \includegraphics[width=15cm]{assets/contains.png}
+ \includegraphics[width=12cm]{assets/contains.png}
\caption{Estimated cost of \code{contains} operation by implementation}
\label{fig:cm_contains}
\end{figure}
@@ -127,10 +127,12 @@ Future improvements could address the overfitting problems some operations had,
%% * Predictions
\section{Selections}
+We now proceed with end-to-end testing of the system, selecting containers for a selection of programs with varying needs.
+
\subsection{Benchmarks}
%% ** Chosen benchmarks
-Our test cases broadly fall into two categories: Example cases, which just repeat a few operations many times, and our 'real' cases, which are implementations of common algorithms and solutions to programming puzles.
+Our test cases broadly fall into two categories: Example cases, which repeat a few operations many times, and 'real' cases, which are implementations of common algorithms and solutions to programming puzles.
We expect the results from our example cases to be relatively unsurprising, while our real cases are more complex and harder to predict.
Most of our real cases are solutions to puzzles from Advent of Code\citep{wastl_advent_2015}, a popular collection of programming puzzles.
@@ -157,77 +159,155 @@ Table \ref{table:test_cases} lists and briefly describes our test cases.
%% ** Effect of selection on benchmarks (spread in execution time)
Table \ref{table:benchmark_spread} shows the difference in benchmark results between the slowest possible assignment of containers, and the fastest.
-Even in our example projects, we see that the wrong choice of container can slow down our programs substantially.
+Even in our example projects, we see that the wrong choice of container can slow down our programs substantially, with the exception of two of our test cases which were largely unaffected.
\begin{table}[h!]
\centering
\begin{tabular}{|c|c|c|}
-Project & worst - best time (seconds) & Maximum slowdown \\
+Project & Maximum slowdown (ms) & Maximum relative slowdown \\
\hline
-aoc\_2021\_09 & 29.685 & 4.75 \\
-aoc\_2022\_08 & 0.036 & 2.088 \\
-aoc\_2022\_09 & 10.031 & 132.844 \\
-aoc\_2022\_14 & 0.293 & 2.036 \\
-prime\_sieve & 28.408 & 18.646 \\
-example\_mapping & 0.031 & 1.805 \\
-example\_sets & 0.179 & 12.65 \\
-example\_stack & 1.931 & 8.454 \\
+aoc\_2021\_09 & $55206.94$ & $12.0$ \\
+aoc\_2022\_08 & $12161.38$ & $392.5$ \\
+aoc\_2022\_09 & $18.96$ & $0.3$ \\
+aoc\_2022\_14 & $83.82$ & $0.3$ \\
+example\_mapping & $85.88$ & $108.4$ \\
+example\_sets & $1.33$ & $1.6$ \\
+example\_stack & $0.36$ & $19.2$ \\
+prime\_sieve & $26093.26$ & $34.1$ \\
\end{tabular}
\caption{Spread in total benchmark results by project}
\label{table:benchmark_spread}
+
\end{table}
-%% ** Summarise predicted versus actual
\subsection{Prediction accuracy}
-We now compare the implementations suggested by our system, to the selection that is actually best.
+We now compare the implementations suggested by our system to the selection that is actually best, obtained by brute force.
For now, we ignore suggestions for adaptive containers.
Table \ref{table:predicted_actual} shows the predicted best assignments alongside the actual best assignment, obtained by brute-force.
-In all but two of our test cases (marked with *), we correctly identify the best container.
-
-\todo{but also its just vec/hashset every time, which is kinda boring. we should either get more variety (by adding to the library or adding new test cases), or mention this as a limitation in testing}
+In all but three of our test cases (marked with *), we correctly identify the best container.
\begin{table}[h!]
\centering
-\begin{tabular}{|c|c|c|c|}
-Project & Container Type & Best implementation & Predicted best \\
-\hline
-aoc\_2022\_09 & Set & HashSet & HashSet \\
-example\_stack & StackCon & Vec & Vec \\
-aoc\_2021\_09 & Set & HashSet & HashSet \\
-aoc\_2021\_09 & Map & HashMap & HashMap \\
-aoc\_2022\_14 & Set & HashSet & HashSet \\
-aoc\_2022\_14 & List & Vec & LinkedList \\
-aoc\_2022\_08 & Map & HashMap & HashMap \\
-example\_sets & Set & HashSet & HashSet \\
-example\_mapping & Map & HashMap & HashMap \\
-prime\_sieve & Primes & HashSet & BTreeSet \\
-prime\_sieve & Sieve & Vec & LinkedList \\
-\end{tabular}
+ \begin{tabular}{|c|c|c|c|c|}
+ Project & Container Type & Best implementation & Predicted best & \\
+ \hline
+ aoc\_2021\_09 & Set & HashSet & HashSet & \\
+ aoc\_2021\_09 & Map & HashMap & HashMap & \\
+ aoc\_2022\_08 & Map & HashMap & HashMap & \\
+ aoc\_2022\_09 & Set & HashSet & HashSet & \\
+ aoc\_2022\_14 & Set & HashSet & HashSet & \\
+ aoc\_2022\_14 & List & Vec & LinkedList & * \\
+ example\_mapping & Map & HashMap & HashMap & \\
+ example\_sets & Set & HashSet & HashSet & \\
+ example\_stack & StackCon & Vec & Vec & \\
+ prime\_sieve & Sieve & Vec & LinkedList & * \\
+ prime\_sieve & Primes & HashSet & BTreeSet & * \\
+ \end{tabular}
\caption{Actual best vs predicted best implementations}
\label{table:predicted_actual}
\end{table}
-%% ** Evaluate performance
-\subsection{Evaluation}
+Two of these failures appear to be caused by being overly eager to suggest a \code{LinkedList}.
+From looking at detailed profiling information, it seems that both of these container types had a relatively small amount of items in them.
+Therefore this is likely caused by our cost models being inaccurate at small $n$ values, such as in Figure \ref{fig:cm_insert_small_n}.
-%% ** Comment on distribution of best implementation
+Our only other failure comes from suggesting a \code{BTreeSet} instead of a \code{HashSet}.
+Our cost models suggest that a \code{BTreeSet} is more suitable for the \code{prime_sieve} benchmarks with a smaller $n$ value, but not for the larger ones.
+However, because the smaller benchmarks complete in less time, Criterion (the benchmarking framework used) chooses to run them for more iterations.
+This causes the smaller $n$ values to carry more weight than they should.
-%% ** Surprising ones / Explain failures
+This could be worked around by adjusting Criterion's settings to run all benchmarks for the same number of iterations, at the cost of the increased accuracy for smaller benchmarks that the existing strategy gives.
+Another method would be to only fix the number of iterations when profiling the application, and to run benchmarks as normal otherwise.
+Whilst this should be possible, Criterion doesn't currently support this.
-%% * Performance of adaptive containers
-\section{Adaptive containers}
+Overall, our results show our system is able to suggest the best containers, at least for large $n$ values.
+Unfortunately, these tests are somewhat limited, as the best container seems relatively predictable: \code{Vec} where uniqueness is not important, and \code{Hash*} otherwise.
+Therefore more thorough testing is needed to fully establish the system's effectiveness.
-\todo{These also need more work, and better test cases}
+\subsection{Adaptive containers}
+
+We now look at cases where an adaptive container was suggested, and evaluate the result.
+
+Table \ref{table:adaptive_suggestions} shows the container types for which adaptive containers were suggested, along with the inner types and the threshold at which to switch.
%% ** Find where adaptive containers get suggested
+\begin{table}[h]
+ \centering
+ \begin{tabular}{|c|c|c|}
+ Project & Container Type & Suggestion \\
+ \hline
+ aoc\_2022\_08 & Map & SortedVecMap until n=1664, then HashMap \\
+ aoc\_2022\_09 & Set & HashSet until n=185540, then BTreeSet \\
+ example\_mapping & Map & VecMap until n=225, then HashMap \\
+ prime\_sieve & Primes & BTreeSet until n=34, then HashSet \\
+ prime\_sieve & Sieve & LinkedList until n=747, then Vec \\
+ \end{tabular}
+ \caption{Suggestions for adaptive containers}
+ \label{table:adaptive_suggestions}
+\end{table}
+
+The suggested containers for both \code{aoc_2022_08} and \code{example_mapping} are unsurprising.
+Since hashing incurs a roughly constant cost, it makes sense that below a certain $n$ value, simply searching through a list is more effective.
+The suggestion of \code{SortedVecMap} vs \code{VecMap} likely has to do with the relative frequency of \code{insert} operations compared to others.
+
+The suggestion to start with a \code{LinkedList} for \code{prime_sieve / Sieve} is likely due to the same issues that cause a \code{LinkedList} to be suggested in the non-adaptive case.
+This may also be the case for the suggestion of \code{BTreeSet} for \code{prime_sieve / Primes}.
+
+The suggestion of \code{BTreeSet} for \code{aoc_2022_09} is most surprising.
+As the $n$ threshold after which we switch is outside the range we benchmark our implementations at, this suggestion is based on our model attempting to generalise far outside the range it has seen before.
%% ** Comment on relative performance speedup
+Table \ref{table:adaptive_perfcomp} compares our adaptive container suggestions with the fastest non-adaptive implementation.
+Since we must select an implementation for all containers before selecting a project, we show all possible combinations of adaptive and non-adaptive container selections.
+
+Note that the numbered columns indicate the benchmark 'size', not the actual size that the container reaches within that benchmark.
+The exact definition of this varies by benchmark.
+
+\begin{table}[h]
+ \centering
+ \begin{adjustbox}{angle=90}
+ \begin{tabular}{|c|c|c|c|c|c|}
+ \hline
+ Project & Assignment & 100 & 1000 & 2000 & \\
+ \hline
+ aoc\_2022\_09 & Set=HashSet & 1ms $\pm$ 5us & 13ms $\pm$ 828us & 27ms $\pm$ 1ms & \\
+ aoc\_2022\_09 & Set=Adaptive & 1ms $\pm$ 2us & 11ms $\pm$ 17us & 39ms $\pm$ 684us & \\
+ \hline
+ & & 100 & 200 & & \\
+ \hline
+ aoc\_2022\_08 & Map=HashMap & 1ms $\pm$ 9us & 5ms $\pm$ 66us & &\\
+ aoc\_2022\_08 & Map=Adaptive & 1ms $\pm$ 6us & 5ms $\pm$ 41us & & \\
+ \hline
+ & & 50 & 150 & 2500 & 7500 \\
+ \hline
+ example\_mapping & Map=HashMap & 3us $\pm$ 7ns & 11us $\pm$ 49ns & 185us $\pm$ 2us & 591us $\pm$ 1us \\
+ example\_mapping & Map=Adaptive & 4us $\pm$ 7ns & 33us $\pm$ 55ns & 187us $\pm$ 318ns & 595us $\pm$ 1us \\
+ \hline
+ & & 50 & 500 & 50000 & \\
+ \hline
+ prime\_sieve & Sieve=Vec, Primes=HashSet & 1us $\pm$ 3ns & 78us $\pm$ 1us & 766ms $\pm$ 1ms & \\
+ prime\_sieve & Sieve=Vec, Primes=Adaptive & 1us $\pm$ 3ns & 84us $\pm$ 138ns & 785ms $\pm$ 730us & \\
+ prime\_sieve & Sieve=Adaptive, Primes=HashSet & 2us $\pm$ 6ns & 208us $\pm$ 568ns & 763ms $\pm$ 1ms & \\
+ prime\_sieve & Sieve=Adaptive, Primes=Adaptive & 2us $\pm$ 4ns & 205us $\pm$ 434ns & 762ms $\pm$ 2ms & \\
+ \hline
+ \end{tabular}
+ \end{adjustbox}
+ \caption{Adaptive containers vs the best single container, by size of benchmark}
+ \label{table:adaptive_perfcomp}
+\end{table}
+
+In all but one project, the non-adaptive containers are as fast or faster than the adaptive containers at all sizes of benchmarks.
+In the \code{aoc_2022_09} project, the adaptive container is marginally faster until the benchmark size reaches 2000, at which point it is significantly slower.
%% ** Suggest future improvements?
+This shows that adaptive containers as we have implemented them are not effective in practice.
+Even in cases where we never reach the size threshold, the presence of adaptive containers has an overhead which slows down the program 3x in the worst case (\code{example_mapping}, size = 150).
-%% * Selection time / developer experience
-%% \section{Selection time}
+One explanation for this could be that every operation now requires checking which inner implementation we are using, resulting in branching overhead.
+More work could be done to minimise the overhead introduced, such as by using indirect jumps rather than branching instructions.
-%% ** Mention speedup versus naive brute force
+It is also unclear if the threshold values that we suggest are the optimal ones.
+Currently, we decide our threshold by picking a value between two partitions with different best containers.
+Future work could take a more complex approach that finds the best threshold value based on our cost models, and takes the overhead of all operations into account.