From 3a822390f1fc3c279c7025f0e8cd4312cf2bc9dd Mon Sep 17 00:00:00 2001 From: Cameron Custer Date: Sun, 19 Jul 2026 13:43:52 -0700 Subject: [PATCH 1/4] convert single-call recursive lambdas to unnamed IIFEs For the 7 library files where a `this auto&&` recursive lambda is defined and invoked exactly once, drop the name and immediately invoke the lambda in place. This removes a redundant binding without changing behavior. Note: explicit return types are retained where present, since C++ cannot deduce the return type of a recursive lambda whose recursive call precedes any return. Verified: repo clang-format passes; all affected tests compile under both g++ and clang; self-contained handmade stress tests pass at runtime. --- .../min_plus_convolution_convex_and_arbitrary.hpp | 7 +++---- library/graphs/euler_path.hpp | 5 ++--- .../offline_incremental_scc.hpp | 10 ++++------ library/trees/centroid_decomp.hpp | 6 +++--- library/trees/edge_cd.hpp | 5 ++--- library/trees/shallowest_decomp_tree.hpp | 5 ++--- library/trees/uncommon/subtree_isomorphism.hpp | 5 ++--- 7 files changed, 18 insertions(+), 25 deletions(-) diff --git a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp index bc739d0b1..99bd99b53 100644 --- a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp +++ b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp @@ -9,8 +9,8 @@ vi min_plus(const vi& convex, const vi& arbitrary) { int n = sz(convex); int m = sz(arbitrary); vi res(n + m - 1, INT_MAX); - auto dnc = [&](this auto&& dnc, int res_le, int res_ri, - int arb_le, int arb_ri) { + [&](this auto&& dnc, int res_le, int res_ri, int arb_le, + int arb_ri) { if (res_le >= res_ri) return; int mid_res = (res_le + res_ri) / 2; int op_arb = arb_le; @@ -25,7 +25,6 @@ vi min_plus(const vi& convex, const vi& arbitrary) { dnc(res_le, mid_res, arb_le, min(arb_ri, op_arb + 1)); // NOLINTNEXTLINE(readability-suspicious-call-argument) dnc(mid_res + 1, res_ri, op_arb, arb_ri); - }; - dnc(0, n + m - 1, 0, m); + }(0, n + m - 1, 0, m); return res; } diff --git a/library/graphs/euler_path.hpp b/library/graphs/euler_path.hpp index 066923b3c..256ae3898 100644 --- a/library/graphs/euler_path.hpp +++ b/library/graphs/euler_path.hpp @@ -17,15 +17,14 @@ vector euler_path(auto& g, int m, int s) { vi vis(m); vector path; - auto dfs = [&](this auto&& dfs, int u, int eu) -> void { + [&](this auto&& dfs, int u, int eu) -> void { while (!empty(g[u])) { auto [v, ev] = g[u].back(); g[u].pop_back(); if (!vis[ev]) vis[ev] = 1, dfs(v, ev); } path.emplace_back(u, eu); - }; - dfs(s, -1); + }(s, -1); ranges::reverse(path); return path; } diff --git a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp index e4dd62510..32c747b51 100644 --- a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp +++ b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp @@ -16,8 +16,9 @@ vi offline_incremental_scc(vector> eds, vi ids(n, -1), joins(m, m), idx(m), vs(n), scc_id; ranges::iota(idx, 0); vector g; - auto dnc = [&](this auto&& dnc, auto el, auto er, int tl, - int tr) { + // uses -1 as the lower bound to correctly handle + // self-edges + [&](this auto&& dnc, auto el, auto er, int tl, int tr) { g.clear(); int mid = midpoint(tl, tr); for (auto it = el; it != er; it++) { @@ -44,9 +45,6 @@ vi offline_incremental_scc(vector> eds, } dnc(el, split, tl, mid); dnc(split, er, mid, tr); - }; - // uses -1 as the lower bound to correctly handle - // self-edges - dnc(all(idx), -1, m); + }(all(idx), -1, m); return joins; } diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index c0b685b31..cc1410833 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -19,10 +19,10 @@ vi cd(auto& g, auto f) { } return 2 * s[u] >= n ? s[p] = n - s[u], u : -1; }; - auto dfs = [&](this auto&& dfs, int u) -> int { + [&](this auto&& dfs, int u) -> int { f(u = ctd(u, u, s[u])); for (int v : g[u]) erase(g[v], u), p[dfs(v)] = u; return u; - }; - return dfs(0), p; + }(0); + return p; } diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index d175ea0df..5acebde82 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -26,7 +26,7 @@ template void edge_cd(vector& g, auto f) { } return 2 * s[u] > m ? s[p] = m + 1 - s[u], u : -1; }; - auto dfs = [&](this auto&& dfs, int u, int m) { + [&](this auto&& dfs, int u, int m) { if (m < 2) return; u = ctd(u, u, m); int sum = 0; @@ -40,6 +40,5 @@ template void edge_cd(vector& g, auto f) { dfs(u, sum); swap(g[u], oth); dfs(u, m - sum); - }; - dfs(0, sz(g) - 1); + }(0, sz(g) - 1); }; diff --git a/library/trees/shallowest_decomp_tree.hpp b/library/trees/shallowest_decomp_tree.hpp index 0c59111e2..6b84c4f4a 100644 --- a/library/trees/shallowest_decomp_tree.hpp +++ b/library/trees/shallowest_decomp_tree.hpp @@ -9,7 +9,7 @@ //! @space O(n) void shallowest(auto& g, auto f) { vector order(bit_width(size(g))); - auto dfs = [&](this auto&& dfs, int u, int p) -> int { + [&](this auto&& dfs, int u, int p) -> int { int once = 0, twice = 0; for (int v : g[u]) if (v != p) { @@ -19,8 +19,7 @@ void shallowest(auto& g, auto f) { auto dp = (once | (bit_ceil(twice + 1u) - 1)) + 1; order[countr_zero(dp)].push_back(u); return dp; - }; - dfs(0, 0); + }(0, 0); for (const vi& vec : order | views::reverse) for (int u : vec) { f(u); diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index ffdecba31..aea091087 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -12,7 +12,7 @@ auto subtree_iso(const auto& g) { vi iso_id(sz(g), -1); map hashes; - auto dfs = [&](this auto&& dfs, int u, int p) -> int { + [&](this auto&& dfs, int u, int p) -> int { vi ch_ids; for (int v : g[u]) if (v != p) ch_ids.push_back(dfs(v, u)); @@ -20,7 +20,6 @@ auto subtree_iso(const auto& g) { return iso_id[u] = hashes.try_emplace(ch_ids, sz(hashes)) .first->second; - }; - dfs(0, 0); + }(0, 0); return pair{sz(hashes), iso_id}; } From 0cae55deba5baae7f99184c7451ef6eeea8047e7 Mon Sep 17 00:00:00 2001 From: Cameron Custer Date: Sun, 19 Jul 2026 13:55:01 -0700 Subject: [PATCH 2/4] rename IIFE recursion parameter to `self` Per convention, name the `this auto&&` recursion parameter of the unnamed IIFEs `self` (previously `dfs`/`dnc`). Updates the parameter and all recursive call sites within each of the 7 IIFEs. No behavior change. --- .../min_plus_convolution_convex_and_arbitrary.hpp | 6 +++--- library/graphs/euler_path.hpp | 4 ++-- .../offline_incremental_scc.hpp | 6 +++--- library/trees/centroid_decomp.hpp | 4 ++-- library/trees/edge_cd.hpp | 6 +++--- library/trees/shallowest_decomp_tree.hpp | 4 ++-- library/trees/uncommon/subtree_isomorphism.hpp | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp index 99bd99b53..4b5d68727 100644 --- a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp +++ b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp @@ -9,7 +9,7 @@ vi min_plus(const vi& convex, const vi& arbitrary) { int n = sz(convex); int m = sz(arbitrary); vi res(n + m - 1, INT_MAX); - [&](this auto&& dnc, int res_le, int res_ri, int arb_le, + [&](this auto&& self, int res_le, int res_ri, int arb_le, int arb_ri) { if (res_le >= res_ri) return; int mid_res = (res_le + res_ri) / 2; @@ -22,9 +22,9 @@ vi min_plus(const vi& convex, const vi& arbitrary) { op_arb = i; } } - dnc(res_le, mid_res, arb_le, min(arb_ri, op_arb + 1)); + self(res_le, mid_res, arb_le, min(arb_ri, op_arb + 1)); // NOLINTNEXTLINE(readability-suspicious-call-argument) - dnc(mid_res + 1, res_ri, op_arb, arb_ri); + self(mid_res + 1, res_ri, op_arb, arb_ri); }(0, n + m - 1, 0, m); return res; } diff --git a/library/graphs/euler_path.hpp b/library/graphs/euler_path.hpp index 256ae3898..9d9a4bffa 100644 --- a/library/graphs/euler_path.hpp +++ b/library/graphs/euler_path.hpp @@ -17,11 +17,11 @@ vector euler_path(auto& g, int m, int s) { vi vis(m); vector path; - [&](this auto&& dfs, int u, int eu) -> void { + [&](this auto&& self, int u, int eu) -> void { while (!empty(g[u])) { auto [v, ev] = g[u].back(); g[u].pop_back(); - if (!vis[ev]) vis[ev] = 1, dfs(v, ev); + if (!vis[ev]) vis[ev] = 1, self(v, ev); } path.emplace_back(u, eu); }(s, -1); diff --git a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp index 32c747b51..82c86bb9f 100644 --- a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp +++ b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp @@ -18,7 +18,7 @@ vi offline_incremental_scc(vector> eds, vector g; // uses -1 as the lower bound to correctly handle // self-edges - [&](this auto&& dnc, auto el, auto er, int tl, int tr) { + [&](this auto&& self, auto el, auto er, int tl, int tr) { g.clear(); int mid = midpoint(tl, tr); for (auto it = el; it != er; it++) { @@ -43,8 +43,8 @@ vi offline_incremental_scc(vector> eds, auto& [u, v] = eds[*it]; u = scc_id[u], v = scc_id[v]; } - dnc(el, split, tl, mid); - dnc(split, er, mid, tr); + self(el, split, tl, mid); + self(split, er, mid, tr); }(all(idx), -1, m); return joins; } diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index cc1410833..b324125d9 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -19,9 +19,9 @@ vi cd(auto& g, auto f) { } return 2 * s[u] >= n ? s[p] = n - s[u], u : -1; }; - [&](this auto&& dfs, int u) -> int { + [&](this auto&& self, int u) -> int { f(u = ctd(u, u, s[u])); - for (int v : g[u]) erase(g[v], u), p[dfs(v)] = u; + for (int v : g[u]) erase(g[v], u), p[self(v)] = u; return u; }(0); return p; diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index 5acebde82..dfdd2799a 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -26,7 +26,7 @@ template void edge_cd(vector& g, auto f) { } return 2 * s[u] > m ? s[p] = m + 1 - s[u], u : -1; }; - [&](this auto&& dfs, int u, int m) { + [&](this auto&& self, int u, int m) { if (m < 2) return; u = ctd(u, u, m); int sum = 0; @@ -37,8 +37,8 @@ template void edge_cd(vector& g, auto f) { f(u, it - begin(g[u])); G oth(it, end(g[u])); g[u].erase(it, end(g[u])); - dfs(u, sum); + self(u, sum); swap(g[u], oth); - dfs(u, m - sum); + self(u, m - sum); }(0, sz(g) - 1); }; diff --git a/library/trees/shallowest_decomp_tree.hpp b/library/trees/shallowest_decomp_tree.hpp index 6b84c4f4a..34ba1aaa7 100644 --- a/library/trees/shallowest_decomp_tree.hpp +++ b/library/trees/shallowest_decomp_tree.hpp @@ -9,11 +9,11 @@ //! @space O(n) void shallowest(auto& g, auto f) { vector order(bit_width(size(g))); - [&](this auto&& dfs, int u, int p) -> int { + [&](this auto&& self, int u, int p) -> int { int once = 0, twice = 0; for (int v : g[u]) if (v != p) { - int dp = dfs(v, u); + int dp = self(v, u); twice |= once & dp, once |= dp; } auto dp = (once | (bit_ceil(twice + 1u) - 1)) + 1; diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index aea091087..73c196305 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -12,10 +12,10 @@ auto subtree_iso(const auto& g) { vi iso_id(sz(g), -1); map hashes; - [&](this auto&& dfs, int u, int p) -> int { + [&](this auto&& self, int u, int p) -> int { vi ch_ids; for (int v : g[u]) - if (v != p) ch_ids.push_back(dfs(v, u)); + if (v != p) ch_ids.push_back(self(v, u)); ranges::sort(ch_ids); return iso_id[u] = hashes.try_emplace(ch_ids, sz(hashes)) From bc82754fa5b05fff7e09647588257d8a891720e6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Sun, 19 Jul 2026 21:22:07 +0000 Subject: [PATCH 3/4] [auto-verifier] verify commit 0cae55deba5baae7f99184c7451ef6eeea8047e7 --- .verify-helper/timestamps.remote.json | 34 +++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.verify-helper/timestamps.remote.json b/.verify-helper/timestamps.remote.json index 4e8f9fcb1..5c11c6984 100644 --- a/.verify-helper/timestamps.remote.json +++ b/.verify-helper/timestamps.remote.json @@ -1,7 +1,7 @@ { "tests/library_checker_aizu_tests/convolution/gcd_convolution.test.cpp": "2026-07-07 12:06:00 -0700", "tests/library_checker_aizu_tests/convolution/lcm_convolution.test.cpp": "2026-07-07 12:06:00 -0700", -"tests/library_checker_aizu_tests/convolution/min_plus_convolution.test.cpp": "2026-07-08 09:28:48 -0700", +"tests/library_checker_aizu_tests/convolution/min_plus_convolution.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/convolution/xor_convolution.test.cpp": "2026-07-08 09:28:48 -0700", "tests/library_checker_aizu_tests/data_structures/binary_search_example.test.cpp": "2026-07-06 13:10:16 -0700", "tests/library_checker_aizu_tests/data_structures/binary_trie.test.cpp": "2026-07-10 20:39:22 -0700", @@ -63,20 +63,20 @@ "tests/library_checker_aizu_tests/graphs/connected_components_of_complement_graph.test.cpp": "2026-07-12 12:50:20 -0700", "tests/library_checker_aizu_tests/graphs/dijkstra_aizu.test.cpp": "2026-07-08 09:28:48 -0700", "tests/library_checker_aizu_tests/graphs/dijkstra_lib_checker.test.cpp": "2026-07-08 09:28:48 -0700", -"tests/library_checker_aizu_tests/graphs/directed_cycle.test.cpp": "2026-07-12 12:50:20 -0700", +"tests/library_checker_aizu_tests/graphs/directed_cycle.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/graphs/enumerate_triangles.test.cpp": "2026-07-08 09:28:48 -0700", -"tests/library_checker_aizu_tests/graphs/euler_walk_directed.test.cpp": "2026-07-07 12:06:00 -0700", -"tests/library_checker_aizu_tests/graphs/euler_walk_undirected.test.cpp": "2026-07-07 12:06:00 -0700", +"tests/library_checker_aizu_tests/graphs/euler_walk_directed.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/graphs/euler_walk_undirected.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/graphs/hopcroft_karp_aizu.test.cpp": "2026-07-09 08:31:16 -0500", "tests/library_checker_aizu_tests/graphs/hopcroft_karp_lib_checker.test.cpp": "2026-07-09 08:31:16 -0500", "tests/library_checker_aizu_tests/graphs/mst.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/graphs/offline_incremental_scc.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/graphs/strongly_connected_components_aizu.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/graphs/strongly_connected_components_lib_checker.test.cpp": "2026-07-12 12:50:20 -0700", +"tests/library_checker_aizu_tests/graphs/offline_incremental_scc.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/graphs/strongly_connected_components_aizu.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/graphs/strongly_connected_components_lib_checker.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/graphs/two_edge_components.test.cpp": "2026-07-07 12:06:00 -0700", -"tests/library_checker_aizu_tests/handmade_tests/count_paths.test.cpp": "2026-07-12 12:50:20 -0700", +"tests/library_checker_aizu_tests/handmade_tests/count_paths.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/handmade_tests/dsu.test.cpp": "2026-07-07 12:06:00 -0700", -"tests/library_checker_aizu_tests/handmade_tests/edge_cd_small_trees.test.cpp": "2026-07-12 12:50:20 -0700", +"tests/library_checker_aizu_tests/handmade_tests/edge_cd_small_trees.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/handmade_tests/fib_matrix_expo.test.cpp": "2026-07-07 12:06:00 -0700", "tests/library_checker_aizu_tests/handmade_tests/functional_graph.test.cpp": "2026-07-07 12:06:00 -0700", "tests/library_checker_aizu_tests/handmade_tests/hilbert_mos.test.cpp": "2026-07-10 20:39:22 -0700", @@ -132,11 +132,11 @@ "tests/library_checker_aizu_tests/strings/suffix_array_short.test.cpp": "2026-07-12 12:50:20 -0700", "tests/library_checker_aizu_tests/strings/trie.test.cpp": "2026-07-06 13:10:16 -0700", "tests/library_checker_aizu_tests/strings/wildcard_pattern_matching.test.cpp": "2026-07-07 12:06:00 -0700", -"tests/library_checker_aizu_tests/trees/cd_count_paths_per_length.test.cpp": "2026-07-08 09:28:48 -0700", -"tests/library_checker_aizu_tests/trees/edge_cd_contour_range_query.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/trees/edge_cd_contour_range_update.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/trees/edge_cd_count_paths_per_length.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp": "2026-07-12 12:50:20 -0700", +"tests/library_checker_aizu_tests/trees/cd_count_paths_per_length.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/edge_cd_contour_range_query.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/edge_cd_contour_range_update.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/edge_cd_count_paths_per_length.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp": "2026-07-19 13:55:01 -0700", "tests/library_checker_aizu_tests/trees/hld_aizu1.test.cpp": "2026-07-10 20:39:22 -0700", "tests/library_checker_aizu_tests/trees/hld_aizu2.test.cpp": "2026-07-08 22:13:09 -0500", "tests/library_checker_aizu_tests/trees/hld_lib_checker_path.test.cpp": "2026-07-10 20:39:22 -0700", @@ -148,7 +148,7 @@ "tests/library_checker_aizu_tests/trees/kth_path_tree_lift.test.cpp": "2026-07-12 12:50:20 -0700", "tests/library_checker_aizu_tests/trees/lca_all_methods_aizu.test.cpp": "2026-07-12 12:50:20 -0700", "tests/library_checker_aizu_tests/trees/lca_all_methods_lib_checker.test.cpp": "2026-07-12 12:50:20 -0700", -"tests/library_checker_aizu_tests/trees/shallowest_aizu_tree_height.test.cpp": "2026-07-07 09:27:22 -0700", -"tests/library_checker_aizu_tests/trees/shallowest_lib_checker_tree_path_composite.test.cpp": "2026-07-07 09:27:22 -0700", -"tests/library_checker_aizu_tests/trees/subtree_isomorphism.test.cpp": "2026-07-07 09:27:22 -0700" +"tests/library_checker_aizu_tests/trees/shallowest_aizu_tree_height.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/shallowest_lib_checker_tree_path_composite.test.cpp": "2026-07-19 13:55:01 -0700", +"tests/library_checker_aizu_tests/trees/subtree_isomorphism.test.cpp": "2026-07-19 13:55:01 -0700" } \ No newline at end of file From 6ca802062ef520be7f522a64b5e0e8ab949ac023 Mon Sep 17 00:00:00 2001 From: Cameron Custer Date: Sun, 19 Jul 2026 15:37:47 -0700 Subject: [PATCH 4/4] suppress cppcheck containerOutOfBounds in edge_cd.hpp --- tests/.config/.cppcheck_suppression_list | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/.config/.cppcheck_suppression_list b/tests/.config/.cppcheck_suppression_list index fd9aef02f..afdeda9ed 100644 --- a/tests/.config/.cppcheck_suppression_list +++ b/tests/.config/.cppcheck_suppression_list @@ -60,6 +60,7 @@ unusedFunction:../kactl/content/data-structures/UnionFind.h:14 unusedFunction:../kactl/content/number-theory/ModPow.h:13 unusedFunction:../kactl/stress-tests/utilities/genTree.h:49 containerOutOfBounds:../library/data_structures_[l,r)/uncommon/permutation_tree.hpp:85 +containerOutOfBounds:../library/trees/edge_cd.hpp ctuOneDefinitionRuleViolation:../library/data_structures_[l,r)/bit.hpp:12 ctuOneDefinitionRuleViolation:../library/data_structures_[l,r)/lazy_seg_tree.hpp:4 mismatchingContainerExpression:../library/trees/extra_members/virtual_tree.hpp:19