[{"data":1,"prerenderedAt":6194},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":374,"course-wordcounts":6062,"ref-card-index":6118},[4,28,50,71,120,152,205,230,286,306,331,352],{"module":5,"moduleNumber":6,"slug":7,"lessons":8},"Foundations",1,"foundations",[9,15,21],{"title":10,"path":11,"lessonNumber":6,"topics":12,"summary":14},"What Is an Algorithm?","\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm",[5,13],"Correctness & Induction","An algorithm is a finite, mechanical recipe that transforms inputs into outputs. We pin down what counts as an algorithm, how we write one down, and the three things we always ask of it: is it correct, is it fast, and can we prove it.\n",{"title":16,"path":17,"lessonNumber":18,"topics":19,"summary":20},"Asymptotic Analysis","\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis",2,[16],"We measure an algorithm's running time as a function of its input size, then strip away machine-specific constants and lower-order terms to compare algorithms cleanly. This lesson defines the RAM model and the $O$, $\\Omega$, $\\Theta$, $o$, and $\\omega$ notations, and shows how to read the cost of loops off the page.\n",{"title":22,"path":23,"lessonNumber":24,"topics":25,"summary":27},"Recurrences and the Master Theorem","\u002Falgorithms\u002Ffoundations\u002Frecurrences",3,[26],"Recurrences","Recursive and divide-and-conquer algorithms describe their own running time with a recurrence: $T(n)$ in terms of $T$ on smaller inputs. We solve recurrences three ways — drawing the recursion tree, guessing-and-verifying by induction, and applying the Master Theorem — using merge sort as the running example.\n",{"module":29,"moduleNumber":18,"slug":30,"lessons":31},"Divide & Conquer","divide-and-conquer",[32,38,44],{"title":33,"path":34,"lessonNumber":6,"topics":35,"summary":37},"Divide and Conquer & Mergesort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort",[29,36],"Comparison Sorting","Divide and conquer breaks a problem into smaller copies of itself, solves them recursively, and stitches the answers together. We meet the paradigm through mergesort — its merge step, its loop-invariant proof, and the recursion tree that pins its cost at $\\Theta(n\\log n)$ — then glimpse Karatsuba multiplication as a second example of the same idea.",{"title":39,"path":40,"lessonNumber":18,"topics":41,"summary":43},"Quicksort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort",[36,42],"Probabilistic Analysis","Quicksort sorts in place by partitioning around a pivot and recursing on each side. We give Lomuto and Hoare partitioning with a correctness invariant, see why a bad pivot costs $\\Theta(n^2)$ while a balanced one gives $\\Theta(n\\log n)$, and prove that randomizing the pivot makes the expected cost $\\Theta(n\\log n)$ on every input.",{"title":45,"path":46,"lessonNumber":24,"topics":47,"summary":49},"Linear-Time Selection","\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection",[48,29],"Order Statistics","Finding the $k$-th smallest element looks like it should require sorting, but it does not. Quickselect adapts quicksort's partition to recurse on just one side, achieving expected $O(n)$. The median-of-medians algorithm guarantees a good pivot with the groups-of-five trick, pushing the worst case down to a provable $O(n)$.",{"module":51,"moduleNumber":24,"slug":52,"lessons":53},"Sorting & Order Statistics","sorting",[54,60,65],{"title":55,"path":56,"lessonNumber":6,"topics":57,"summary":59},"Heaps and Heapsort","\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort",[58,36],"Heaps","A binary heap is a tree we store flat in an array, with index arithmetic standing in for pointers. We build the max-heap property bottom-up in $O(n)$ time, sort in place in $\\Theta(n\\log n)$ by repeatedly extracting the maximum, and reuse the same structure to implement a priority queue.",{"title":61,"path":62,"lessonNumber":18,"topics":63,"summary":64},"Lower Bounds for Comparison Sorting","\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds",[36],"Every sort we have seen runs in $\\Omega(n\\log n)$, and that is no accident. Modeling a sort as a decision tree of comparisons, we show any such tree must have $n!$ leaves, forcing height $\\ge \\log_2(n!) = \\Omega(n\\log n)$ — a worst-case bound no comparison sort can ever beat.",{"title":66,"path":67,"lessonNumber":24,"topics":68,"summary":70},"Sorting in Linear Time","\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting",[69],"Linear-Time Sorting","The $\\Omega(n\\log n)$ barrier only binds algorithms that compare. By instead using keys as array indices we slip past it: counting sort runs in $\\Theta(n+k)$ and is stable, radix sort layers it digit by digit, and bucket sort averages $\\Theta(n)$ on uniform data. We see exactly when each applies.",{"module":72,"moduleNumber":73,"slug":74,"lessons":75},"Data Structures",4,"data-structures",[76,82,88,93,99,105,113],{"title":77,"path":78,"lessonNumber":6,"topics":79,"summary":81},"Elementary Data Structures","\u002Falgorithms\u002Fdata-structures\u002Felementary-structures",[80],"Linear Structures","Every container is built one of two ways: **contiguous** in an array, or **linked** through pointers. We trade cache-friendly random access against $O(1)$ splicing, derive the **amortized $O(1)$** append of a doubling dynamic array, and assemble the two ordered access disciplines — the LIFO **stack** and the FIFO **queue** (with its generalization, the **deque**) — on top of both.",{"title":83,"path":84,"lessonNumber":18,"topics":85,"summary":87},"Hash Tables","\u002Falgorithms\u002Fdata-structures\u002Fhash-tables",[86],"Hashing","A hash table implements the dictionary — insert, search, delete — in expected $O(1)$ time by scattering keys across an array with a hash function. We build up from direct addressing, handle collisions by chaining and by open addressing, analyze the load factor $\\alpha$, and see how universal hashing earns its expected-time guarantee against every input.",{"title":89,"path":90,"lessonNumber":24,"topics":91,"summary":92},"Binary Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees",[89],"A binary search tree keeps keys ordered so that every operation follows a single root-to-leaf path. We state the BST property, give search and insert, find minimum, maximum, and successor, see that an inorder walk emits the keys in sorted order, and confront the catch — every operation costs $O(h)$, and a carelessly built tree degrades to height $h = \\Theta(n)$, motivating balance.",{"title":94,"path":95,"lessonNumber":73,"topics":96,"summary":98},"AVL Trees","\u002Falgorithms\u002Fdata-structures\u002Favl-trees",[97],"Balanced Trees","An AVL tree is the first balanced BST: at every node the two subtrees' heights differ by at most $1$. A Fibonacci-style minimal-node argument forces height $h \\le 1.44\\log_2 n = O(\\log n)$, so search, insert, and delete are all $O(\\log n)$. Insertion rebalances with at most one of four rotation cases (LL, RR, LR, RL); deletion may rotate all the way to the root.",{"title":100,"path":101,"lessonNumber":102,"topics":103,"summary":104},"Balanced Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees",5,[97],"An ordinary BST can degrade to height $\\Theta(n)$; balanced search trees guarantee $h = O(\\log n)$ by maintaining invariants and repairing them after every update. We meet rotations, the local restructuring primitive, then red-black trees, whose color invariants force logarithmic height, and finally B-trees, which trade tall-and-thin for short-and-wide to win on disk.",{"title":106,"path":107,"lessonNumber":108,"topics":109,"summary":112},"Disjoint Sets (Union-Find)","\u002Falgorithms\u002Fdata-structures\u002Funion-find",6,[110,111],"Disjoint Sets","Amortized Analysis","The disjoint-set data structure tracks a partition of elements into groups, answering \"are these two in the same group?\" and merging groups on demand. A forest of parent pointers, sped up by union by rank and path compression, drives every operation to near-constant $O(\\alpha(n))$ amortized time — the engine behind connectivity queries and Kruskal's minimum spanning tree.",{"title":114,"path":115,"lessonNumber":116,"topics":117,"summary":119},"Fenwick & Segment Trees","\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees",7,[118],"Range Queries","A prefix-sum array answers a range sum in $O(1)$ but pays $O(n)$ per update; a plain array updates in $O(1)$ but pays $O(n)$ per range sum. Fenwick and segment trees give us _both_ in $O(\\log n)$. The Fenwick (binary indexed) tree is a tiny array keyed by the low bit; the segment tree is a general balanced tree over canonical ranges that handles any associative aggregate and, with lazy propagation, range updates too.",{"module":121,"moduleNumber":102,"slug":122,"lessons":123},"Sequences & Strings","sequences",[124,130,135,141,147],{"title":125,"path":126,"lessonNumber":6,"topics":127,"summary":129},"Two Pointers, Sliding Windows & Prefix Sums","\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows",[128],"Array Techniques","A family of array idioms that collapse an obvious $O(n^2)$ scan into a single $O(n)$ pass by maintaining an invariant as indices move. We meet two pointers (converging on a sorted array, and a fast\u002Fslow pair for in-place rewriting), the sliding window (fixed and variable size, amortized $O(n)$), and prefix sums, which answer any range-sum in $O(1)$ and count subarrays summing to $k$.",{"title":131,"path":132,"lessonNumber":18,"topics":133,"summary":134},"Monotonic Stacks & Queues","\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks",[128],"A **monotonic stack** keeps its contents sorted by popping every element that would break the order before each push — turning a family of \"previous\u002Fnext greater (or smaller) element\" questions into a single $O(n)$ scan. We derive the next-greater-element routine and its amortized analysis, fuse two such scans to measure the **largest rectangle in a histogram** in linear time, and extend the idea to a **monotonic deque** that streams the **sliding-window maximum** in $O(n)$.",{"title":136,"path":137,"lessonNumber":24,"topics":138,"summary":140},"Binary Search on the Answer","\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer",[139],"Searching","Binary search is not really about arrays — it is about locating the boundary of a **monotone predicate** $p(x)$ in $O(\\log(\\text{range}))$ probes. We first pin down the half-open `while (lo \u003C hi)` template for $\\textsc{lower\\_bound}$ and $\\textsc{upper\\_bound}$, then generalize to \"binary search on the answer\": whenever feasibility is monotone in a numeric parameter, we binary search the parameter itself, calling a feasibility check at each step.",{"title":142,"path":143,"lessonNumber":73,"topics":144,"summary":146},"String Matching: Rabin–Karp, KMP & Z","\u002Falgorithms\u002Fsequences\u002Fstring-matching",[145],"Strings","Given a text $T$ of length $n$ and a pattern $P$ of length $m$, find every occurrence of $P$ in $T$. The naive scan costs $O(nm)$; we beat it three ways. Rabin–Karp uses a **rolling hash** to test alignments in $O(1)$ amortised each, with expected $O(n+m)$. KMP precomputes a **failure function** so the scan never re-reads a text character, for worst-case $O(n+m)$. The **Z-function** gives the same bound from a different angle and converts freely to KMP's table.",{"title":148,"path":149,"lessonNumber":102,"topics":150,"summary":151},"Tries & Prefix Trees","\u002Falgorithms\u002Fsequences\u002Ftries",[145],"A **trie** stores a set of strings in a tree keyed by _characters_, so that insert, search, and prefix-test all run in $O(L)$ time — the length of the key, _independent of how many keys are stored_. Shared prefixes are stored once, which makes tries the natural structure for autocomplete, wildcard dictionaries, board word-search, and — over the alphabet $\\{0,1\\}$ — the maximum-XOR-pair problem.",{"module":153,"moduleNumber":108,"slug":154,"lessons":155},"Graphs","graphs",[156,163,168,173,178,183,188,193,199],{"title":157,"path":158,"lessonNumber":6,"topics":159,"summary":162},"Graph Representations and Traversal","\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal",[160,161],"Graph Representations","Graph Traversal","A graph captures _relationships_ — who connects to whom. We fix the vocabulary, weigh the two standard representations (adjacency list versus matrix), then meet the two explorations you'll use constantly: breadth-first search, which finds shortest paths by number of edges, and depth-first search, whose discovery and finish times reveal a graph's hidden structure. Both run in $O(V + E)$.",{"title":164,"path":165,"lessonNumber":18,"topics":166,"summary":167},"Topological Sort and Strong Connectivity","\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc",[161],"Directed acyclic graphs model dependencies: tasks that must precede other tasks. A _topological order_ lays such a graph out in a line so every edge points forward, and depth-first finish times hand it to us almost for free. We then ask the harder question for graphs _with_ cycles: which vertices can reach each other? The answer is the strongly connected components, found by a two-pass DFS.",{"title":169,"path":170,"lessonNumber":24,"topics":171,"summary":172},"Minimum Spanning Trees","\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees",[169],"Given a weighted network, how do we connect everything as cheaply as possible? The answer is a minimum spanning tree. One lemma, the cut property, justifies _every_ correct MST algorithm, and from it two famous greedy methods fall out: Kruskal's, which grows a forest edge by edge with a union-find structure, and Prim's, which grows a single tree using a priority queue.",{"title":174,"path":175,"lessonNumber":73,"topics":176,"summary":177},"Shortest Paths","\u002Falgorithms\u002Fgraphs\u002Fshortest-paths",[174],"Finding the cheapest route through a weighted network is one of the most-used algorithms in computing. A single operation — _relaxation_ — underlies them all. Dijkstra's algorithm solves the non-negative case greedily; Bellman-Ford handles negative edges and detects negative cycles; and Floyd-Warshall finds the shortest path between _every_ pair of vertices.",{"title":179,"path":180,"lessonNumber":102,"topics":181,"summary":182},"Network Flow","\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow",[179],"How much can flow through a network from source to sink? Max-flow is a surprisingly general model — once you see a problem as flow, a whole toolbox opens up. We build flow networks, find maximum flows by repeatedly pushing along augmenting paths in the residual graph, prove the max-flow min-cut theorem, and watch bipartite matching fall out as a special case.",{"title":184,"path":185,"lessonNumber":108,"topics":186,"summary":187},"Bridges & Articulation Points","\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points",[153],"A **bridge** is an edge whose removal disconnects the graph; an **articulation point** is a vertex whose removal does. Both are single points of failure in a network. A single depth-first search computes discovery times and **low-links**, and two local criteria — $low[v] > disc[u]$ for bridges, $low[v] \\ge disc[u]$ for cut vertices — find them all in $O(V+E)$.",{"title":189,"path":190,"lessonNumber":116,"topics":191,"summary":192},"Lowest Common Ancestor & Binary Lifting","\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor",[153],"Given a rooted tree, the lowest common ancestor of $u$ and $v$ is the deepest node that is an ancestor of both. A naive walk answers one query in $O(h)$; **binary lifting** precomputes the $2^k$-th ancestor of every node in $O(n\\log n)$, then answers $k$-th-ancestor and LCA queries in $O(\\log n)$ each. We derive both jumps, apply them to tree distance, and compare against the Euler-tour + RMQ and Tarjan offline alternatives.",{"title":194,"path":195,"lessonNumber":196,"topics":197,"summary":198},"2-SAT via Implication Graphs","\u002Falgorithms\u002Fgraphs\u002Ftwo-sat",8,[153],"A boolean formula whose every clause has exactly two literals can be solved in _linear_ time — even though its three-literal cousin is NP-complete. The trick is to read each clause as a pair of implications, build a directed graph on the $2n$ literals, and ask a question we already know how to answer: which literals share a strongly connected component? The formula is satisfiable iff no variable lands in the same SCC as its own negation, and the SCCs' topological order hands us a satisfying assignment for free.",{"title":200,"path":201,"lessonNumber":202,"topics":203,"summary":204},"Eulerian Tours","\u002Falgorithms\u002Fgraphs\u002Feulerian-tours",9,[153],"An **Eulerian tour** uses every _edge_ of a graph exactly once. We give the exact parity and balance conditions under which one exists (even degree for undirected graphs, in-degree equal to out-degree for directed) and Hierholzer's $O(E)$ algorithm that constructs one by splicing closed sub-tours. We contrast this sharply with the **Hamiltonian** problem (visit every _vertex_ once), which is NP-complete: visiting edges is easy, visiting vertices is hard.",{"module":206,"moduleNumber":116,"slug":207,"lessons":208},"Greedy Algorithms","greedy",[209,214,220,225],{"title":210,"path":211,"lessonNumber":6,"topics":212,"summary":213},"The Greedy Method","\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method",[206],"A greedy algorithm builds a solution one locally-best choice at a time and never looks back. We pin down the two properties that make this work — the greedy-choice property and optimal substructure — prove the canonical activity-selection algorithm correct with an exchange argument, watch greedy fail spectacularly on the 0\u002F1 knapsack, and glimpse matroids as the theory that says exactly when greed is good.",{"title":215,"path":216,"lessonNumber":18,"topics":217,"summary":219},"Scheduling & Interval Partitioning","\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals",[218],"Greedy","Three classic scheduling problems all yield to greedy algorithms — and all three turn on a single design decision: which key to sort by. Interval scheduling sorts by **finish** time to pack the most compatible jobs; interval partitioning sorts by **start** time and proves the rooms needed equal the maximum overlap **depth**; minimizing maximum lateness sorts by **deadline** and is justified by an adjacent-swap exchange argument.",{"title":221,"path":222,"lessonNumber":24,"topics":223,"summary":224},"Huffman Codes","\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes",[206],"Huffman coding is the greedy method's most beautiful application: it builds a provably optimal prefix-free binary code by repeatedly merging the two least frequent symbols. We develop prefix-free codes as binary trees, give the algorithm with a priority queue, build a Huffman tree from example frequencies, prove optimality with the same greedy-choice-plus-substructure argument, and pin the running time at $O(n\\log n)$.",{"title":226,"path":227,"lessonNumber":73,"topics":228,"summary":229},"Matroids & Exchange Arguments","\u002Falgorithms\u002Fgreedy\u002Fmatroids",[218],"The capstone of the greedy module: _why_ and _when_ a greedy algorithm is provably optimal. We recap the two correctness templates — **greedy-stays-ahead** and the **exchange argument** — then meet the **matroid** $M=(S,\\mathcal{I})$, an abstraction whose **exchange property** is exactly the structure greedy needs. The matroid–greedy theorem says sorting by weight and taking what stays independent yields a maximum-weight basis _if and only if_ the structure is a matroid. Kruskal's MST is the canonical instance; 0\u002F1 knapsack and TSP are the canonical failures.",{"module":231,"moduleNumber":196,"slug":232,"lessons":233},"Dynamic Programming","dynamic-programming",[234,239,245,250,255,260,265,270,275,280],{"title":235,"path":236,"lessonNumber":6,"topics":237,"summary":238},"Principles of Dynamic Programming","\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples",[231,26],"Dynamic programming is recursion with memory: when a recursive solution re-solves the same subproblems again and again, we solve each one once and store the answer. We pin down the two structural conditions that make this work — overlapping subproblems and optimal substructure — contrast top-down memoization with bottom-up tabulation, and distil the whole method into a five-step recipe.",{"title":240,"path":241,"lessonNumber":18,"topics":242,"summary":244},"Sequence Alignment & LCS","\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp",[231,243],"String Structures","Two strings can be compared by asking how much of one survives inside the other. The longest common subsequence (LCS) and edit distance are the two classic answers, and they are the _same_ dynamic program wearing different costs. We derive the LCS recurrence by examining the last characters, fill a worked DP table, reconstruct the subsequence, and then show edit distance as the identical $\\Theta(mn)$ pattern.",{"title":246,"path":247,"lessonNumber":24,"topics":248,"summary":249},"Longest Increasing Subsequence","\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence",[231],"Given a sequence of numbers, how long is its longest strictly increasing subsequence? A first dynamic program indexes subproblems by the element each subsequence _ends at_, giving an $O(n^2)$ solution with parent-pointer reconstruction. A sharper idea, the patience-sorting _tails_ array searched by binary search, drops the time to $O(n\\log n)$. We then fold in the variants: non-decreasing, counting, Russian-doll envelopes, and bitonic.",{"title":251,"path":252,"lessonNumber":73,"topics":253,"summary":254},"Knapsack & Subset Problems","\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack",[231],"We start from $\\textsc{Subset-sum}$ — does some sublist hit a target $t$? — and its include\u002Fexclude recurrence over a boolean table $A(i, u)$, then bolt on values to get 0\u002F1 knapsack as the same machine with $\\lor$ promoted to $\\max$. We fill both tables, recover the chosen items, and confront the surprise that the $\\Theta(nt)$ running time is only _pseudo-polynomial_ — exponential in the bit length $b$, and unimprovable unless $\\mathrm{P}=\\mathrm{NP}$ since subset-sum is $\\textsc{NP-complete}$. The fractional variant reveals the sharp line between greedy and dynamic programming.",{"title":256,"path":257,"lessonNumber":102,"topics":258,"summary":259},"Coin Change & Unbounded Knapsack","\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded",[231],"The previous lesson let each item be taken at most once. Drop that cap — items may be reused _any number of times_ — and the 0\u002F1 knapsack collapses from a two-dimensional table to a one-dimensional one, because there is no longer a prefix of \"already-used\" items to track. We meet **unbounded knapsack**, then its most famous instance, **coin change**: the minimum-coins recurrence $C[a] = 1 + \\min_c C[a-c]$, and the counting variant where the _order of the loops_ decides whether you count unordered combinations or ordered sequences — the classic bug. Greed fails in general but works for canonical coin systems.",{"title":261,"path":262,"lessonNumber":108,"topics":263,"summary":264},"Interval DP","\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp",[231],"Many problems ask for the best way to combine a contiguous range of items, and the answer is a dynamic program over subintervals $[i,j]$ that chooses a split point $k$. We derive the pattern from matrix-chain multiplication — parenthesising a product to minimize scalar multiplications in $O(n^3)$ — distil it into a reusable template filled by increasing interval length, and then meet its sharpest variant: the \"last operation\" trick behind Burst Balloons and cutting a stick, where fixing the _last_ move (not the first) makes the two sides independent.",{"title":266,"path":267,"lessonNumber":116,"topics":268,"summary":269},"Dynamic Programming on Trees","\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp",[231],"When the subproblems of a dynamic program are _rooted subtrees_, a single post-order DFS solves the whole thing in $O(n)$: each node combines the already-computed answers of its children. We meet the archetype — maximum-weight independent set on a tree — then the \"path through a node\" pattern behind tree diameter and maximum path sum, and finally **rerooting**, which computes a per-node answer for _every_ node as root in $O(n)$ with two passes.",{"title":271,"path":272,"lessonNumber":196,"topics":273,"summary":274},"Bitmask DP","\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp",[231],"When a subproblem depends not on an index or a prefix but on _which subset_ of a small ground set has been used, we can encode that subset as the bits of an integer and index a DP table by it. With $n \\le \\sim 20$ the $2^n$ subsets fit in a table, turning $\\Theta(n!)$ brute force into $O(2^n \\cdot \\text{poly}(n))$. We meet the bit tricks, the Held–Karp TSP archetype, assignment by mask, subset-sum partitioning, and submask enumeration with its $3^n$ bound.",{"title":276,"path":277,"lessonNumber":202,"topics":278,"summary":279},"DP Optimizations","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations",[231],"A correct DP recurrence is only half the battle; its naive evaluation is often a factor of $n$ slower than necessary. This capstone surveys five techniques, monotonic-queue, the convex hull trick, divide-and-conquer optimization, Knuth's optimization, and SOS DP, that each exploit _structure in the transition_ (a sliding window, linear costs, monotone optimal splits, the quadrangle inequality, or subset lattices) to shave an $O(n)$, $O(\\log n)$, or worse factor off the running time.",{"title":281,"path":282,"lessonNumber":283,"topics":284,"summary":285},"Dynamic Programming on Graphs","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs",10,[231],"Many graph algorithms are dynamic programs in disguise: the subproblem is the _best value reachable under a restricted resource_ — intermediate vertices allowed, edges allowed, or a topological prefix — and edge _relaxation_ is the DP transition. We frame Floyd–Warshall as the archetype ($O(V^3)$ all-pairs shortest paths), Bellman–Ford as a DP over path length (the at-most-$K$-stops variant), DAG-DP in topological order ($O(V+E)$), and Warshall's transitive closure as the boolean analog.",{"module":287,"moduleNumber":202,"slug":288,"lessons":289},"Backtracking & Search","backtracking",[290,296,301],{"title":291,"path":292,"lessonNumber":6,"topics":293,"summary":295},"Backtracking: Subsets, Permutations & Combinations","\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals",[294],"Backtracking","Backtracking builds a solution one choice at a time and abandons a partial solution the moment it cannot be completed, exploring a state-space tree by depth-first search. We meet the universal choose\u002Fexplore\u002Fun-choose template, derive the canonical enumerations — subsets ($2^n$), permutations ($n!$), and combinations ($\\binom{n}{k}$) — handle duplicate elements by skipping equal siblings, and see how pruning turns an exponential search into a tractable one.",{"title":297,"path":298,"lessonNumber":18,"topics":299,"summary":300},"Constraint Search: N-Queens & Sudoku","\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search",[294],"Many hard puzzles are **constraint satisfaction problems**: assign each variable a value from its domain so that every constraint holds. Backtracking solves them by assigning variables one at a time and rejecting a partial assignment the instant a constraint breaks. We make the rejection cheap — $O(1)$ conflict checks for N-Queens via column and diagonal sets — and prune harder with **forward checking**, **MRV** ordering, and **constraint propagation**, which is what lets an exponential search actually finish.",{"title":302,"path":303,"lessonNumber":24,"topics":304,"summary":305},"Branch & Bound and Meet in the Middle","\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound",[294],"Plain backtracking prunes a search tree by _feasibility_; for _optimization_ problems we can prune far more aggressively by _value_. **Branch and bound** keeps the best complete solution found so far and discards any partial solution whose optimistic bound cannot beat it. **Meet in the middle** splits the instance in two, enumerates each half, and recombines by binary search — turning $2^n$ into $O(2^{n\u002F2}\\,n)$ and pushing exact search out to $n \\approx 40$.",{"module":307,"moduleNumber":283,"slug":308,"lessons":309},"Mathematical Algorithms","mathematical-algorithms",[310,316,321,326],{"title":311,"path":312,"lessonNumber":6,"topics":313,"summary":315},"Number Theory: GCD & Modular Arithmetic","\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics",[314],"Number Theory","This lesson opens the mathematical-algorithms module with the bedrock of computational number theory. We prove Euclid's recurrence $\\gcd(a,b)=\\gcd(b,\\,a\\bmod b)$ and its $O(\\log\\min(a,b))$ running time, extend it to recover Bézout coefficients $x,y$ with $ax+by=\\gcd(a,b)$, and build modular arithmetic on residue classes — including when a modular inverse $a^{-1}\\bmod m$ exists and how to compute it.",{"title":317,"path":318,"lessonNumber":18,"topics":319,"summary":320},"Modular Exponentiation & Primality","\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality",[314],"Computing $a^n \\bmod m$ naively costs $n$ multiplications; **repeated squaring** does it in $O(\\log n)$ by reading the bits of the exponent. We use this routine to state **Fermat's little theorem** (and the modular inverse it gives), then to test primality — trial division, the probabilistic **Fermat** and **Miller–Rabin** tests, and the deterministic witness set that settles primality for every 64-bit number.",{"title":322,"path":323,"lessonNumber":24,"topics":324,"summary":325},"Sieves & Factorization","\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization",[314],"The previous lesson tested one number for primality; here we ask for _all_ primes up to $n$ at once. The **sieve of Eratosthenes** cross-cuts composites in $O(n\\log\\log n)$, and a **linear sieve** does it in $O(n)$ while recording each number's **smallest prime factor**, which then factors any $x \\le n$ in $O(\\log x)$. From a factorization $x = \\prod p_i^{e_i}$ the multiplicative functions $\\tau$, $\\sigma$, and Euler's totient $\\varphi$ fall out immediately.",{"title":327,"path":328,"lessonNumber":73,"topics":329,"summary":330},"Combinatorics & Counting","\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics",[314],"Counting is the arithmetic of finite sets. We build up from permutations $n!$ and combinations $\\binom{n}{k}$, prove Pascal's rule by a bijection, and count multisets with stars and bars. The practical core is computing $\\binom{n}{k}\\bmod p$ in $O(1)$ from precomputed factorials and inverse factorials. We close with inclusion–exclusion and the Chinese Remainder Theorem, both of which lean on the modular inverse from the previous lesson.",{"module":332,"moduleNumber":333,"slug":334,"lessons":335},"Computational Geometry",11,"computational-geometry",[336,342,347],{"title":337,"path":338,"lessonNumber":6,"topics":339,"summary":341},"Geometric Primitives & Orientation","\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives",[340],"Geometry","Computational geometry is built on a single reliable primitive — the **orientation test**, a sign of a cross product that tells whether three points turn left, right, or lie collinear. From points-as-vectors and the dot and cross products we derive orientation, segment intersection, the shoelace area formula, and point-in-polygon tests, keeping all arithmetic **exact and integer** so that no floating-point rounding can corrupt a sign.",{"title":343,"path":344,"lessonNumber":18,"topics":345,"summary":346},"Convex Hull","\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull",[340],"The convex hull is the smallest convex polygon enclosing a point set — the rubber band snapped around the nails. We build it with Andrew's monotone chain, sorting by $(x,y)$ and sweeping a lower and upper hull while popping any non-left turn via the orientation primitive, in $O(n\\log n)$. A reduction from sorting shows that bound is optimal, and the hull unlocks diameter, smallest enclosing rectangle, and more through rotating calipers.",{"title":348,"path":349,"lessonNumber":24,"topics":350,"summary":351},"Sweep-Line Algorithms","\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line",[340],"The plane-sweep paradigm turns a static $2$-D geometry problem into a dynamic $1$-D ordered-set problem: a vertical line sweeps left to right, stopping at an $x$-sorted **event queue** while a balanced-BST **status structure** tracks the objects it currently crosses, ordered by $y$. We derive Bentley–Ottmann segment intersection in $O((n+k)\\log n)$, recover closest-pair in $O(n\\log n)$, and reduce skyline, rectangle-area, and overlap problems to $\\pm1$ event sweeps.",{"module":353,"moduleNumber":354,"slug":355,"lessons":356},"Intractability",12,"intractability",[357,363,367],{"title":358,"path":359,"lessonNumber":6,"topics":360,"summary":362},"P, NP, and Reductions","\u002Falgorithms\u002Fintractability\u002Fp-np-reductions",[361],"NP-Completeness","Most problems we have met so far have fast algorithms. A vast and important family seemingly does not. This lesson builds the vocabulary for that divide: decision problems, the class $\\mathsf{P}$ of problems we can solve quickly, the class $\\mathsf{NP}$ of problems whose solutions we can _check_ quickly, and polynomial-time reductions, the tool that lets us compare the difficulty of two problems without solving either.",{"title":361,"path":364,"lessonNumber":18,"topics":365,"summary":366},"\u002Falgorithms\u002Fintractability\u002Fnp-completeness",[361],"Some problems in $\\mathsf{NP}$ are universally hardest: every other problem in $\\mathsf{NP}$ reduces to them. This lesson defines $\\mathsf{NP}$-hard and $\\mathsf{NP}$-complete, states the Cook–Levin theorem that anchors the whole edifice on **SAT**, walks the web of reductions that grows from it, and gives the four-step recipe for proving a brand-new problem $\\mathsf{NP}$-complete.",{"title":368,"path":369,"lessonNumber":24,"topics":370,"summary":373},"Coping with NP-Hardness","\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness",[371,372],"Approximation","Heuristics","Proving a problem $\\mathsf{NP}$-hard is the beginning, not the end. The world still needs answers. This lesson surveys the four honest responses to hardness: approximation algorithms with a provable ratio (worked through a 2-approximation for vertex cover), heuristics and local search, exact exponential methods like branch and bound, and exploiting special structure in the instances you actually face.",{"id":375,"title":100,"blurb":376,"body":377,"description":6020,"extension":6021,"meta":6022,"module":72,"navigation":6024,"path":101,"practice":6025,"rawbody":6044,"readingTime":6045,"seo":6050,"sources":6051,"status":6058,"stem":6059,"summary":104,"topics":6060,"__hash__":6061},"course\u002F01.algorithms\u002F04.data-structures\u002F05.balanced-trees.md","",{"type":378,"value":379,"toc":6010},"minimark",[380,611,622,627,837,1045,1263,1345,1407,1411,1429,1480,1487,1525,1606,1711,2228,2283,2612,2750,2818,3059,3167,3239,3651,3711,3715,3845,4024,4246,4463,4501,4798,4938,5310,5317,5321,5715,6006],[381,382,383,384,388,389,429,430,471,472,496,497,501,502,505,506,561,562,565,566,576,577,610],"p",{},"The previous lesson left us with a sharp problem. A ",[385,386,387],"a",{"href":90},"binary search tree"," does\neverything in ",[390,391,394],"span",{"className":392},[393],"katex",[390,395,399],{"className":396,"ariaHidden":398},[397],"katex-html","true",[390,400,403,408,415,420,424],{"className":401},[402],"base",[390,404],{"className":405,"style":407},[406],"strut","height:1em;vertical-align:-0.25em;",[390,409,414],{"className":410,"style":413},[411,412],"mord","mathnormal","margin-right:0.0278em;","O",[390,416,419],{"className":417},[418],"mopen","(",[390,421,423],{"className":422},[411,412],"h",[390,425,428],{"className":426},[427],"mclose",")"," time, which is glorious ",[390,431,433],{"className":432},[393],[390,434,436],{"className":435,"ariaHidden":398},[397],[390,437,439,442,446,449,459,464,468],{"className":438},[402],[390,440],{"className":441,"style":407},[406],[390,443,445],{"className":444},[411],"Θ",[390,447,419],{"className":448},[418],[390,450,453],{"className":451},[452],"mop",[390,454,458],{"className":455,"style":457},[411,456],"mathrm","margin-right:0.0139em;","log",[390,460],{"className":461,"style":463},[462],"mspace","margin-right:0.1667em;",[390,465,467],{"className":466},[411,412],"n",[390,469,428],{"className":470},[427]," when the tree is\nbalanced and catastrophic ",[390,473,475],{"className":474},[393],[390,476,478],{"className":477,"ariaHidden":398},[397],[390,479,481,484,487,490,493],{"className":480},[402],[390,482],{"className":483,"style":407},[406],[390,485,445],{"className":486},[411],[390,488,419],{"className":489},[418],[390,491,467],{"className":492},[411,412],[390,494,428],{"className":495},[427]," when it is not, and we cannot control the\norder in which keys arrive. A ",[498,499,500],"strong",{},"balanced search tree"," removes the dependence on\nluck. It maintains a structural ",[498,503,504],{},"invariant"," strong enough to force\n",[390,507,509],{"className":508},[393],[390,510,512,534],{"className":511,"ariaHidden":398},[397],[390,513,515,519,522,526,531],{"className":514},[402],[390,516],{"className":517,"style":518},[406],"height:0.6944em;",[390,520,423],{"className":521},[411,412],[390,523],{"className":524,"style":525},[462],"margin-right:0.2778em;",[390,527,530],{"className":528},[529],"mrel","=",[390,532],{"className":533,"style":525},[462],[390,535,537,540,543,546,552,555,558],{"className":536},[402],[390,538],{"className":539,"style":407},[406],[390,541,414],{"className":542,"style":413},[411,412],[390,544,419],{"className":545},[418],[390,547,549],{"className":548},[452],[390,550,458],{"className":551,"style":457},[411,456],[390,553],{"className":554,"style":463},[462],[390,556,467],{"className":557},[411,412],[390,559,428],{"className":560},[427],", and after every insertion or deletion it does a small amount of\n",[498,563,564],{},"rebalancing"," to restore that invariant.",[567,568,569],"sup",{},[385,570,575],{"href":571,"ariaDescribedBy":572,"dataFootnoteRef":376,"id":574},"#user-content-fn-erickson-balanced",[573],"footnote-label","user-content-fnref-erickson-balanced","1"," The guarantee becomes worst-case, not\nbest-case: ",[390,578,580],{"className":579},[393],[390,581,583],{"className":582,"ariaHidden":398},[397],[390,584,586,589,592,595,601,604,607],{"className":585},[402],[390,587],{"className":588,"style":407},[406],[390,590,414],{"className":591,"style":413},[411,412],[390,593,419],{"className":594},[418],[390,596,598],{"className":597},[452],[390,599,458],{"className":600,"style":457},[411,456],[390,602],{"className":603,"style":463},[462],[390,605,467],{"className":606},[411,412],[390,608,428],{"className":609},[427]," per operation, on every input, forever.",[381,612,613,614,617,618,621],{},"Different balanced trees enforce different invariants. ",[385,615,616],{"href":95},"AVL trees"," bound the\nheight difference of sibling subtrees, red-black trees color the nodes, and B-trees\npack many keys per node, but they all share one mechanical primitive for\nreshaping the tree without disturbing its sorted order: the ",[498,619,620],{},"rotation",".",[623,624,626],"h2",{"id":625},"rotations-local-surgery-that-preserves-order","Rotations: local surgery that preserves order",[381,628,629,630,632,633,637,638,656,657,672,673,690,691,706,707,722,723,726,727,731,732,804,805,820,821,836],{},"A ",[498,631,620],{}," rearranges three pointers to change a tree's shape, and hence its\nheight, while keeping the BST property intact. A ",[634,635,636],"em",{},"right rotation"," at a node ",[390,639,641],{"className":640},[393],[390,642,644],{"className":643,"ariaHidden":398},[397],[390,645,647,651],{"className":646},[402],[390,648],{"className":649,"style":650},[406],"height:0.625em;vertical-align:-0.1944em;",[390,652,655],{"className":653,"style":654},[411,412],"margin-right:0.0359em;","y","\nmakes ",[390,658,660],{"className":659},[393],[390,661,663],{"className":662,"ariaHidden":398},[397],[390,664,666,669],{"className":665},[402],[390,667],{"className":668,"style":650},[406],[390,670,655],{"className":671,"style":654},[411,412],"'s left child ",[390,674,676],{"className":675},[393],[390,677,679],{"className":678,"ariaHidden":398},[397],[390,680,682,686],{"className":681},[402],[390,683],{"className":684,"style":685},[406],"height:0.4306em;",[390,687,689],{"className":688},[411,412],"x"," the new subtree root, with ",[390,692,694],{"className":693},[393],[390,695,697],{"className":696,"ariaHidden":398},[397],[390,698,700,703],{"className":699},[402],[390,701],{"className":702,"style":650},[406],[390,704,655],{"className":705,"style":654},[411,412]," becoming ",[390,708,710],{"className":709},[393],[390,711,713],{"className":712,"ariaHidden":398},[397],[390,714,716,719],{"className":715},[402],[390,717],{"className":718,"style":685},[406],[390,720,689],{"className":721},[411,412],"'s right\nchild; a ",[634,724,725],{},"left rotation"," is the exact inverse. The subtree that was ",[728,729,730],"q",{},"in the middle"," (call it ",[390,733,735],{"className":734},[393],[390,736,738],{"className":737,"ariaHidden":398},[397],[390,739,741,745],{"className":740},[402],[390,742],{"className":743,"style":744},[406],"height:0.8333em;vertical-align:-0.15em;",[390,746,748,753],{"className":747},[411],[390,749,752],{"className":750,"style":751},[411,412],"margin-right:0.1389em;","T",[390,754,757],{"className":755},[756],"msupsub",[390,758,762,795],{"className":759},[760,761],"vlist-t","vlist-t2",[390,763,766,790],{"className":764},[765],"vlist-r",[390,767,771],{"className":768,"style":770},[769],"vlist","height:0.3011em;",[390,772,774,779],{"style":773},"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;",[390,775],{"className":776,"style":778},[777],"pstrut","height:2.7em;",[390,780,786],{"className":781},[782,783,784,785],"sizing","reset-size6","size3","mtight",[390,787,789],{"className":788},[411,785],"2",[390,791,794],{"className":792},[793],"vlist-s","​",[390,796,798],{"className":797},[765],[390,799,802],{"className":800,"style":801},[769],"height:0.15em;",[390,803],{},") switches parents but stays between ",[390,806,808],{"className":807},[393],[390,809,811],{"className":810,"ariaHidden":398},[397],[390,812,814,817],{"className":813},[402],[390,815],{"className":816,"style":685},[406],[390,818,689],{"className":819},[411,412]," and ",[390,822,824],{"className":823},[393],[390,825,827],{"className":826,"ariaHidden":398},[397],[390,828,830,833],{"className":829},[402],[390,831],{"className":832,"style":650},[406],[390,834,655],{"className":835,"style":654},[411,412]," in key\norder.",[838,839,843,1039],"figure",{"className":840},[841,842],"tikz-figure","tikz-diagram-rendered",[844,845,850],"svg",{"xmlns":846,"width":847,"height":848,"viewBox":849},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","401.933","112.161","-75 -75 301.450 84.121",[851,852,855,860,869,872,879,882,898,901,915,918,932,935,970,973,979,982,995,998,1004,1007,1020,1023,1036],"g",{"stroke":853,"style":854},"currentColor","stroke-miterlimit:10;stroke-width:.4",[856,857],"path",{"fill":858,"d":859},"none","M-3.969-62.112c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[851,861,863],{"transform":862},"translate(-2.63 1.18)",[856,864],{"d":865,"fill":853,"stroke":853,"className":866,"style":868},"M-13.087-60.681Q-12.877-60.320-12.355-60.320Q-11.881-60.320-11.534-60.652Q-11.188-60.984-10.975-61.455Q-10.763-61.926-10.646-62.420Q-11.090-62-11.608-62Q-12.003-62-12.281-62.136Q-12.560-62.273-12.714-62.544Q-12.867-62.815-12.867-63.201Q-12.867-63.528-12.780-63.872Q-12.692-64.216-12.533-64.639Q-12.374-65.061-12.257-65.374Q-12.125-65.740-12.125-65.974Q-12.125-66.272-12.345-66.272Q-12.740-66.272-12.997-65.864Q-13.253-65.457-13.375-64.954Q-13.395-64.890-13.458-64.890L-13.575-64.890Q-13.658-64.890-13.658-64.983L-13.658-65.012Q-13.497-65.608-13.165-66.070Q-12.833-66.531-12.325-66.531Q-11.969-66.531-11.722-66.297Q-11.476-66.062-11.476-65.701Q-11.476-65.515-11.559-65.310Q-11.603-65.188-11.759-64.778Q-11.915-64.368-11.998-64.099Q-12.081-63.831-12.135-63.572Q-12.189-63.313-12.189-63.054Q-12.189-62.722-12.047-62.493Q-11.906-62.263-11.598-62.263Q-10.978-62.263-10.485-63.020L-9.728-66.101Q-9.694-66.233-9.572-66.328Q-9.449-66.424-9.308-66.424Q-9.186-66.424-9.095-66.345Q-9.005-66.267-9.005-66.140Q-9.005-66.082-9.015-66.062L-10.006-62.083Q-10.138-61.570-10.489-61.101Q-10.841-60.633-11.337-60.347Q-11.832-60.061-12.369-60.061Q-12.628-60.061-12.882-60.161Q-13.136-60.261-13.292-60.462Q-13.448-60.662-13.448-60.930Q-13.448-61.204-13.287-61.404Q-13.126-61.604-12.858-61.604Q-12.697-61.604-12.587-61.504Q-12.477-61.404-12.477-61.243Q-12.477-61.013-12.648-60.842Q-12.819-60.672-13.048-60.672Q-13.058-60.676-13.068-60.679Q-13.077-60.681-13.087-60.681",[867],"tikz-text","stroke-width:0.300",[856,870],{"fill":858,"d":871},"M-25.308-30.814c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,873,875],{"transform":874},"translate(-24.197 33.45)",[856,876],{"d":877,"fill":853,"stroke":853,"className":878,"style":868},"M-13.146-62.400Q-12.970-62.263-12.648-62.263Q-12.335-62.263-12.096-62.564Q-11.857-62.864-11.769-63.220L-11.315-64.993Q-11.207-65.476-11.207-65.652Q-11.207-65.901-11.346-66.087Q-11.486-66.272-11.735-66.272Q-12.052-66.272-12.330-66.074Q-12.609-65.877-12.799-65.571Q-12.989-65.266-13.068-64.954Q-13.087-64.890-13.146-64.890L-13.268-64.890Q-13.346-64.890-13.346-64.983L-13.346-65.012Q-13.248-65.383-13.014-65.737Q-12.780-66.091-12.440-66.311Q-12.101-66.531-11.715-66.531Q-11.349-66.531-11.053-66.336Q-10.758-66.140-10.636-65.803Q-10.465-66.111-10.199-66.321Q-9.933-66.531-9.615-66.531Q-9.401-66.531-9.176-66.455Q-8.951-66.380-8.810-66.223Q-8.668-66.067-8.668-65.833Q-8.668-65.579-8.832-65.396Q-8.995-65.213-9.249-65.213Q-9.410-65.213-9.518-65.315Q-9.625-65.418-9.625-65.574Q-9.625-65.784-9.481-65.943Q-9.337-66.101-9.137-66.131Q-9.318-66.272-9.635-66.272Q-9.957-66.272-10.194-65.974Q-10.431-65.676-10.529-65.310L-10.968-63.543Q-11.075-63.142-11.075-62.883Q-11.075-62.630-10.931-62.446Q-10.787-62.263-10.548-62.263Q-10.079-62.263-9.711-62.676Q-9.342-63.089-9.225-63.582Q-9.205-63.640-9.147-63.640L-9.025-63.640Q-8.986-63.640-8.961-63.613Q-8.937-63.587-8.937-63.552Q-8.937-63.543-8.947-63.523Q-9.088-62.927-9.542-62.464Q-9.996-62-10.568-62Q-10.934-62-11.229-62.197Q-11.525-62.395-11.647-62.732Q-11.803-62.439-12.079-62.219Q-12.355-62-12.667-62Q-12.882-62-13.109-62.075Q-13.336-62.151-13.478-62.307Q-13.619-62.464-13.619-62.703Q-13.619-62.937-13.456-63.130Q-13.292-63.323-13.048-63.323Q-12.882-63.323-12.770-63.223Q-12.657-63.123-12.657-62.962Q-12.657-62.752-12.797-62.595Q-12.936-62.439-13.146-62.400",[867],[856,880],{"fill":858,"d":881},"m-19.65-53.719-9.894 14.513M-56.606-15.36-68.736 5.65h24.26Z",[851,883,884,891],{"stroke":858},[851,885,887],{"transform":886},"translate(-47.844 65.263)",[856,888],{"d":889,"fill":853,"stroke":853,"className":890,"style":868},"M-13.468-62.244Q-13.463-62.268-13.446-62.332Q-13.429-62.395-13.402-62.429Q-13.375-62.464-13.326-62.464Q-12.467-62.464-12.189-62.512Q-11.920-62.581-11.866-62.800L-10.499-68.294Q-10.455-68.416-10.455-68.513Q-10.455-68.591-10.807-68.591L-11.388-68.591Q-12.057-68.591-12.421-68.386Q-12.784-68.181-12.955-67.844Q-13.126-67.508-13.395-66.741Q-13.429-66.653-13.497-66.653L-13.585-66.653Q-13.688-66.653-13.688-66.780L-12.975-68.850Q-12.955-68.943-12.877-68.943L-6.969-68.943Q-6.866-68.943-6.866-68.811L-7.198-66.741Q-7.198-66.712-7.233-66.682Q-7.267-66.653-7.296-66.653L-7.389-66.653Q-7.487-66.653-7.487-66.780Q-7.379-67.488-7.379-67.781Q-7.379-68.133-7.526-68.313Q-7.672-68.494-7.906-68.543Q-8.141-68.591-8.517-68.591L-9.108-68.591Q-9.376-68.591-9.469-68.543Q-9.562-68.494-9.625-68.250L-10.997-62.761Q-11.002-62.742-11.005-62.722Q-11.007-62.703-11.017-62.674Q-11.017-62.547-10.865-62.512Q-10.607-62.464-9.757-62.464Q-9.659-62.464-9.659-62.332Q-9.694-62.190-9.713-62.151Q-9.733-62.112-9.825-62.112L-13.365-62.112Q-13.468-62.112-13.468-62.244",[867],[851,892,893],{"transform":886},[856,894],{"d":895,"fill":853,"stroke":853,"className":896,"style":897},"M-4.757-60.612L-7.287-60.612L-7.287-60.892Q-6.319-60.892-6.319-61.101L-6.319-64.720Q-6.712-64.532-7.334-64.532L-7.334-64.813Q-6.917-64.813-6.553-64.914Q-6.189-65.014-5.933-65.260L-5.807-65.260Q-5.742-65.243-5.725-65.175L-5.725-61.101Q-5.725-60.892-4.757-60.892",[867],"stroke-width:0.210",[856,899],{"fill":858,"d":900},"M-40.989-22.42-51.528-6.965M-13.927-15.36-26.057 5.65h24.26Z",[851,902,903,909],{"stroke":858},[851,904,906],{"transform":905},"translate(-5.165 65.263)",[856,907],{"d":889,"fill":853,"stroke":853,"className":908,"style":868},[867],[851,910,911],{"transform":905},[856,912],{"d":913,"fill":853,"stroke":853,"className":914,"style":897},"M-4.757-60.612L-7.642-60.612L-7.642-60.814Q-7.642-60.844-7.615-60.872L-6.367-62.089Q-6.295-62.164-6.253-62.206Q-6.210-62.249-6.131-62.328Q-5.718-62.741-5.487-63.099Q-5.256-63.456-5.256-63.880Q-5.256-64.112-5.335-64.315Q-5.414-64.519-5.555-64.669Q-5.697-64.820-5.892-64.900Q-6.087-64.980-6.319-64.980Q-6.630-64.980-6.888-64.821Q-7.146-64.662-7.276-64.385L-7.256-64.385Q-7.088-64.385-6.981-64.274Q-6.873-64.163-6.873-63.999Q-6.873-63.842-6.982-63.729Q-7.092-63.616-7.256-63.616Q-7.416-63.616-7.529-63.729Q-7.642-63.842-7.642-63.999Q-7.642-64.375-7.434-64.662Q-7.225-64.949-6.890-65.105Q-6.555-65.260-6.200-65.260Q-5.776-65.260-5.396-65.102Q-5.017-64.943-4.783-64.626Q-4.549-64.310-4.549-63.880Q-4.549-63.569-4.689-63.300Q-4.829-63.032-5.034-62.827Q-5.239-62.622-5.602-62.340Q-5.964-62.058-6.073-61.962L-6.928-61.234L-6.285-61.234Q-6.022-61.234-5.733-61.236Q-5.444-61.237-5.226-61.246Q-5.007-61.255-4.990-61.272Q-4.928-61.337-4.891-61.504Q-4.853-61.672-4.815-61.914L-4.549-61.914",[867],[856,916],{"fill":858,"d":917},"m-29.544-22.42 10.539 15.456M7.412-46.658l-12.13 21.011h24.261Z",[851,919,920,926],{"stroke":858},[851,921,923],{"transform":922},"translate(16.175 33.965)",[856,924],{"d":889,"fill":853,"stroke":853,"className":925,"style":868},[867],[851,927,928],{"transform":922},[856,929],{"d":930,"fill":853,"stroke":853,"className":931,"style":897},"M-7.287-61.159Q-7.167-61.002-6.976-60.903Q-6.784-60.803-6.569-60.764Q-6.354-60.725-6.131-60.725Q-5.834-60.725-5.639-60.880Q-5.444-61.036-5.354-61.290Q-5.263-61.545-5.263-61.829Q-5.263-62.123-5.355-62.374Q-5.448-62.625-5.646-62.781Q-5.844-62.936-6.138-62.936L-6.654-62.936Q-6.682-62.936-6.707-62.962Q-6.733-62.987-6.733-63.011L-6.733-63.083Q-6.733-63.114-6.707-63.136Q-6.682-63.158-6.654-63.158L-6.213-63.189Q-5.851-63.189-5.631-63.546Q-5.410-63.904-5.410-64.293Q-5.410-64.621-5.605-64.825Q-5.800-65.028-6.131-65.028Q-6.418-65.028-6.671-64.944Q-6.924-64.861-7.088-64.673Q-6.941-64.673-6.841-64.558Q-6.740-64.444-6.740-64.293Q-6.740-64.143-6.846-64.033Q-6.952-63.924-7.109-63.924Q-7.270-63.924-7.379-64.033Q-7.488-64.143-7.488-64.293Q-7.488-64.618-7.280-64.837Q-7.071-65.055-6.755-65.158Q-6.439-65.260-6.131-65.260Q-5.813-65.260-5.485-65.156Q-5.157-65.052-4.930-64.830Q-4.703-64.608-4.703-64.293Q-4.703-63.859-4.990-63.534Q-5.277-63.210-5.711-63.063Q-5.400-62.998-5.120-62.832Q-4.839-62.666-4.662-62.408Q-4.484-62.150-4.484-61.829Q-4.484-61.419-4.728-61.109Q-4.973-60.800-5.354-60.636Q-5.735-60.472-6.131-60.472Q-6.500-60.472-6.858-60.585Q-7.215-60.697-7.459-60.947Q-7.704-61.196-7.704-61.566Q-7.704-61.737-7.587-61.849Q-7.471-61.962-7.300-61.962Q-7.191-61.962-7.100-61.911Q-7.010-61.860-6.955-61.767Q-6.900-61.675-6.900-61.566Q-6.900-61.398-7.013-61.279Q-7.126-61.159-7.287-61.159",[867],[856,933],{"fill":858,"d":934},"m-8.205-53.719 10.54 15.457M81.39-25.123c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,936,938,941,945,953],{"style":937},"stroke-width:.8",[856,939],{"fill":858,"d":940},"M42.978-25.123h61.796",[856,942],{"fill":858,"d":943,"style":944},"M102.614-28.245c.468 1.873 1.51 2.758 2.56 3.122-1.05.364-2.092 1.25-2.56 3.123","stroke-linecap:round;stroke-linejoin:round",[851,946,948],{"transform":947},"translate(82.183 29.408)",[856,949],{"d":950,"fill":853,"stroke":853,"className":951,"style":952},"M-11.775-62.112L-13.607-62.112L-13.607-62.409Q-13.333-62.409-13.165-62.456Q-12.997-62.503-12.997-62.671L-12.997-66.831Q-12.997-67.046-13.060-67.141Q-13.122-67.237-13.241-67.258Q-13.361-67.280-13.607-67.280L-13.607-67.577L-12.384-67.663L-12.384-62.671Q-12.384-62.503-12.216-62.456Q-12.048-62.409-11.775-62.409L-11.775-62.112M-11.329-63.866Q-11.329-64.346-11.097-64.762Q-10.864-65.178-10.454-65.428Q-10.044-65.678-9.568-65.678Q-8.837-65.678-8.439-65.237Q-8.040-64.796-8.040-64.065Q-8.040-63.960-8.134-63.936L-10.583-63.936L-10.583-63.866Q-10.583-63.456-10.462-63.100Q-10.341-62.745-10.070-62.528Q-9.798-62.311-9.368-62.311Q-9.005-62.311-8.708-62.540Q-8.411-62.768-8.310-63.120Q-8.302-63.167-8.216-63.182L-8.134-63.182Q-8.040-63.155-8.040-63.073Q-8.040-63.065-8.048-63.034Q-8.111-62.807-8.249-62.624Q-8.388-62.440-8.579-62.307Q-8.771-62.175-8.989-62.104Q-9.208-62.034-9.447-62.034Q-9.818-62.034-10.156-62.171Q-10.493-62.307-10.761-62.559Q-11.029-62.811-11.179-63.151Q-11.329-63.491-11.329-63.866M-10.575-64.174L-8.614-64.174Q-8.614-64.479-8.716-64.770Q-8.818-65.061-9.034-65.243Q-9.251-65.424-9.568-65.424Q-9.868-65.424-10.099-65.237Q-10.329-65.049-10.452-64.758Q-10.575-64.467-10.575-64.174M-5.486-62.112L-7.470-62.112L-7.470-62.409Q-7.197-62.409-7.029-62.456Q-6.861-62.503-6.861-62.671L-6.861-65.264L-7.501-65.264L-7.501-65.561L-6.861-65.561L-6.861-66.495Q-6.861-66.760-6.743-66.997Q-6.626-67.233-6.433-67.397Q-6.239-67.561-5.991-67.653Q-5.743-67.745-5.478-67.745Q-5.193-67.745-4.968-67.587Q-4.743-67.428-4.743-67.151Q-4.743-66.995-4.849-66.885Q-4.954-66.776-5.118-66.776Q-5.275-66.776-5.384-66.885Q-5.493-66.995-5.493-67.151Q-5.493-67.358-5.333-67.464Q-5.431-67.487-5.525-67.487Q-5.755-67.487-5.927-67.331Q-6.099-67.174-6.185-66.938Q-6.271-66.702-6.271-66.479L-6.271-65.561L-5.302-65.561L-5.302-65.264L-6.247-65.264L-6.247-62.671Q-6.247-62.503-6.021-62.456Q-5.794-62.409-5.486-62.409L-5.486-62.112M-4.333-63.073L-4.333-65.264L-5.036-65.264L-5.036-65.518Q-4.681-65.518-4.439-65.751Q-4.197-65.983-4.085-66.331Q-3.974-66.678-3.974-67.034L-3.693-67.034L-3.693-65.561L-2.517-65.561L-2.517-65.264L-3.693-65.264L-3.693-63.089Q-3.693-62.768-3.573-62.540Q-3.454-62.311-3.173-62.311Q-2.993-62.311-2.876-62.434Q-2.759-62.557-2.706-62.737Q-2.654-62.917-2.654-63.089L-2.654-63.561L-2.372-63.561L-2.372-63.073Q-2.372-62.819-2.478-62.579Q-2.583-62.339-2.781-62.186Q-2.978-62.034-3.236-62.034Q-3.552-62.034-3.804-62.157Q-4.056-62.280-4.195-62.514Q-4.333-62.749-4.333-63.073",[867],"stroke-width:0.240",[851,954,957,964],{"stroke":858,"fontFamily":955,"fontSize":956},"cmr8","8",[851,958,960],{"transform":959},"translate(79.346 49.347)",[856,961],{"d":962,"fill":853,"stroke":853,"className":963,"style":952},"M-11.681-62.112L-13.661-62.112L-13.661-62.409Q-13.392-62.409-13.224-62.454Q-13.056-62.499-13.056-62.671L-13.056-64.807Q-13.056-65.022-13.118-65.118Q-13.181-65.214-13.298-65.235Q-13.415-65.257-13.661-65.257L-13.661-65.553L-12.493-65.639L-12.493-64.854Q-12.415-65.065-12.263-65.251Q-12.111-65.436-11.911-65.538Q-11.712-65.639-11.486-65.639Q-11.239-65.639-11.048-65.495Q-10.857-65.350-10.857-65.120Q-10.857-64.964-10.962-64.854Q-11.068-64.745-11.224-64.745Q-11.380-64.745-11.489-64.854Q-11.599-64.964-11.599-65.120Q-11.599-65.280-11.493-65.385Q-11.818-65.385-12.032-65.157Q-12.247-64.928-12.343-64.589Q-12.439-64.249-12.439-63.944L-12.439-62.671Q-12.439-62.503-12.212-62.456Q-11.986-62.409-11.681-62.409L-11.681-62.112M-8.517-62.112L-10.294-62.112L-10.294-62.409Q-10.021-62.409-9.853-62.456Q-9.685-62.503-9.685-62.671L-9.685-64.807Q-9.685-65.022-9.741-65.118Q-9.798-65.214-9.911-65.235Q-10.025-65.257-10.271-65.257L-10.271-65.553L-9.072-65.639L-9.072-62.671Q-9.072-62.503-8.925-62.456Q-8.779-62.409-8.517-62.409L-8.517-62.112M-9.958-67.034Q-9.958-67.225-9.823-67.356Q-9.689-67.487-9.493-67.487Q-9.372-67.487-9.269-67.424Q-9.165-67.362-9.103-67.258Q-9.040-67.155-9.040-67.034Q-9.040-66.839-9.171-66.704Q-9.302-66.569-9.493-66.569Q-9.693-66.569-9.825-66.702Q-9.958-66.835-9.958-67.034M-8.017-61.503Q-8.017-61.784-7.806-61.995Q-7.595-62.206-7.310-62.296Q-7.466-62.421-7.544-62.610Q-7.622-62.800-7.622-62.999Q-7.622-63.354-7.392-63.647Q-7.759-63.987-7.759-64.456Q-7.759-64.807-7.556-65.077Q-7.353-65.346-7.032-65.493Q-6.712-65.639-6.368-65.639Q-5.849-65.639-5.478-65.358Q-5.114-65.729-4.568-65.729Q-4.388-65.729-4.261-65.602Q-4.134-65.475-4.134-65.296Q-4.134-65.190-4.212-65.112Q-4.290-65.034-4.400-65.034Q-4.509-65.034-4.585-65.110Q-4.661-65.186-4.661-65.296Q-4.661-65.397-4.622-65.448Q-4.614-65.456-4.611-65.462Q-4.607-65.467-4.607-65.471Q-4.982-65.471-5.302-65.217Q-4.982-64.878-4.982-64.456Q-4.982-64.186-5.099-63.969Q-5.216-63.753-5.421-63.594Q-5.626-63.436-5.868-63.354Q-6.111-63.272-6.368-63.272Q-6.587-63.272-6.800-63.331Q-7.013-63.389-7.208-63.510Q-7.302-63.370-7.302-63.190Q-7.302-62.983-7.165-62.831Q-7.029-62.678-6.822-62.678L-6.126-62.678Q-5.638-62.678-5.226-62.594Q-4.814-62.510-4.534-62.253Q-4.255-61.995-4.255-61.503Q-4.255-61.139-4.575-60.907Q-4.896-60.675-5.337-60.573Q-5.779-60.471-6.134-60.471Q-6.489-60.471-6.933-60.573Q-7.376-60.675-7.697-60.907Q-8.017-61.139-8.017-61.503M-7.513-61.503Q-7.513-61.307-7.368-61.159Q-7.224-61.010-7.011-60.921Q-6.798-60.831-6.558-60.784Q-6.318-60.737-6.134-60.737Q-5.892-60.737-5.562-60.815Q-5.232-60.893-4.995-61.067Q-4.759-61.241-4.759-61.503Q-4.759-61.909-5.169-62.018Q-5.579-62.128-6.142-62.128L-6.822-62.128Q-7.091-62.128-7.302-61.950Q-7.513-61.772-7.513-61.503M-6.368-63.538Q-5.646-63.538-5.646-64.456Q-5.646-65.378-6.368-65.378Q-7.095-65.378-7.095-64.456Q-7.095-63.538-6.368-63.538M-1.841-62.112L-3.697-62.112L-3.697-62.409Q-3.423-62.409-3.255-62.456Q-3.087-62.503-3.087-62.671L-3.087-66.831Q-3.087-67.046-3.150-67.141Q-3.212-67.237-3.331-67.258Q-3.450-67.280-3.697-67.280L-3.697-67.577L-2.474-67.663L-2.474-64.960Q-2.349-65.171-2.161-65.321Q-1.974-65.471-1.747-65.555Q-1.521-65.639-1.275-65.639Q-0.107-65.639-0.107-64.561L-0.107-62.671Q-0.107-62.503 0.063-62.456Q0.233-62.409 0.503-62.409L0.503-62.112L-1.353-62.112L-1.353-62.409Q-1.079-62.409-0.911-62.456Q-0.743-62.503-0.743-62.671L-0.743-64.546Q-0.743-64.928-0.864-65.157Q-0.986-65.385-1.337-65.385Q-1.650-65.385-1.904-65.223Q-2.157-65.061-2.304-64.792Q-2.450-64.522-2.450-64.225L-2.450-62.671Q-2.450-62.503-2.281-62.456Q-2.111-62.409-1.841-62.409",[867],[851,965,966],{"transform":959},[856,967],{"d":968,"fill":853,"stroke":853,"className":969,"style":952},"M1.346-63.073L1.346-65.264L0.643-65.264L0.643-65.518Q0.999-65.518 1.241-65.751Q1.483-65.983 1.594-66.331Q1.706-66.678 1.706-67.034L1.987-67.034L1.987-65.561L3.163-65.561L3.163-65.264L1.987-65.264L1.987-63.089Q1.987-62.768 2.106-62.540Q2.225-62.311 2.506-62.311Q2.686-62.311 2.803-62.434Q2.921-62.557 2.973-62.737Q3.026-62.917 3.026-63.089L3.026-63.561L3.307-63.561L3.307-63.073Q3.307-62.819 3.202-62.579Q3.096-62.339 2.899-62.186Q2.702-62.034 2.444-62.034Q2.128-62.034 1.876-62.157Q1.624-62.280 1.485-62.514Q1.346-62.749 1.346-63.073",[867],[856,971],{"fill":858,"d":972},"M178.129-62.112c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,974,976],{"transform":975},"translate(179.24 2.153)",[856,977],{"d":877,"fill":853,"stroke":853,"className":978,"style":868},[867],[856,980],{"fill":858,"d":981},"M146.83-46.658 134.7-25.647h24.261Z",[851,983,984,990],{"stroke":858},[851,985,987],{"transform":986},"translate(155.593 33.965)",[856,988],{"d":889,"fill":853,"stroke":853,"className":989,"style":868},[867],[851,991,992],{"transform":986},[856,993],{"d":895,"fill":853,"stroke":853,"className":994,"style":897},[867],[856,996],{"fill":858,"d":997},"M162.448-53.719 151.91-38.262M199.468-30.814c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[851,999,1001],{"transform":1000},"translate(200.806 32.479)",[856,1002],{"d":865,"fill":853,"stroke":853,"className":1003,"style":868},[867],[856,1005],{"fill":858,"d":1006},"m173.893-53.719 9.895 14.513M168.17-15.36 156.04 5.65h24.26Z",[851,1008,1009,1015],{"stroke":858},[851,1010,1012],{"transform":1011},"translate(176.933 65.263)",[856,1013],{"d":889,"fill":853,"stroke":853,"className":1014,"style":868},[867],[851,1016,1017],{"transform":1011},[856,1018],{"d":913,"fill":853,"stroke":853,"className":1019,"style":897},[867],[856,1021],{"fill":858,"d":1022},"M183.788-22.42 173.249-6.965M210.85-15.36 198.719 5.65h24.261Z",[851,1024,1025,1031],{"stroke":858},[851,1026,1028],{"transform":1027},"translate(219.612 65.263)",[856,1029],{"d":889,"fill":853,"stroke":853,"className":1030,"style":868},[867],[851,1032,1033],{"transform":1027},[856,1034],{"d":930,"fill":853,"stroke":853,"className":1035,"style":897},[867],[856,1037],{"fill":858,"d":1038},"m195.232-22.42 10.54 15.456",[1040,1041,1044],"figcaption",{"className":1042},[1043],"tikz-cap","Left and right rotations reshape a BST while preserving sorted order",[381,1046,1047,1048,1250,1251,1258,1259,1262],{},"In both trees the sorted order is ",[390,1049,1051],{"className":1050},[393],[390,1052,1054,1110,1129,1184,1203],{"className":1053,"ariaHidden":398},[397],[390,1055,1057,1060,1100,1103,1107],{"className":1056},[402],[390,1058],{"className":1059,"style":744},[406],[390,1061,1063,1066],{"className":1062},[411],[390,1064,752],{"className":1065,"style":751},[411,412],[390,1067,1069],{"className":1068},[756],[390,1070,1072,1092],{"className":1071},[760,761],[390,1073,1075,1089],{"className":1074},[765],[390,1076,1078],{"className":1077,"style":770},[769],[390,1079,1080,1083],{"style":773},[390,1081],{"className":1082,"style":778},[777],[390,1084,1086],{"className":1085},[782,783,784,785],[390,1087,575],{"className":1088},[411,785],[390,1090,794],{"className":1091},[793],[390,1093,1095],{"className":1094},[765],[390,1096,1098],{"className":1097,"style":801},[769],[390,1099],{},[390,1101],{"className":1102,"style":525},[462],[390,1104,1106],{"className":1105},[529],"\u003C",[390,1108],{"className":1109,"style":525},[462],[390,1111,1113,1117,1120,1123,1126],{"className":1112},[402],[390,1114],{"className":1115,"style":1116},[406],"height:0.5782em;vertical-align:-0.0391em;",[390,1118,689],{"className":1119},[411,412],[390,1121],{"className":1122,"style":525},[462],[390,1124,1106],{"className":1125},[529],[390,1127],{"className":1128,"style":525},[462],[390,1130,1132,1135,1175,1178,1181],{"className":1131},[402],[390,1133],{"className":1134,"style":744},[406],[390,1136,1138,1141],{"className":1137},[411],[390,1139,752],{"className":1140,"style":751},[411,412],[390,1142,1144],{"className":1143},[756],[390,1145,1147,1167],{"className":1146},[760,761],[390,1148,1150,1164],{"className":1149},[765],[390,1151,1153],{"className":1152,"style":770},[769],[390,1154,1155,1158],{"style":773},[390,1156],{"className":1157,"style":778},[777],[390,1159,1161],{"className":1160},[782,783,784,785],[390,1162,789],{"className":1163},[411,785],[390,1165,794],{"className":1166},[793],[390,1168,1170],{"className":1169},[765],[390,1171,1173],{"className":1172,"style":801},[769],[390,1174],{},[390,1176],{"className":1177,"style":525},[462],[390,1179,1106],{"className":1180},[529],[390,1182],{"className":1183,"style":525},[462],[390,1185,1187,1191,1194,1197,1200],{"className":1186},[402],[390,1188],{"className":1189,"style":1190},[406],"height:0.7335em;vertical-align:-0.1944em;",[390,1192,655],{"className":1193,"style":654},[411,412],[390,1195],{"className":1196,"style":525},[462],[390,1198,1106],{"className":1199},[529],[390,1201],{"className":1202,"style":525},[462],[390,1204,1206,1209],{"className":1205},[402],[390,1207],{"className":1208,"style":744},[406],[390,1210,1212,1215],{"className":1211},[411],[390,1213,752],{"className":1214,"style":751},[411,412],[390,1216,1218],{"className":1217},[756],[390,1219,1221,1242],{"className":1220},[760,761],[390,1222,1224,1239],{"className":1223},[765],[390,1225,1227],{"className":1226,"style":770},[769],[390,1228,1229,1232],{"style":773},[390,1230],{"className":1231,"style":778},[777],[390,1233,1235],{"className":1234},[782,783,784,785],[390,1236,1238],{"className":1237},[411,785],"3",[390,1240,794],{"className":1241},[793],[390,1243,1245],{"className":1244},[765],[390,1246,1248],{"className":1247,"style":801},[769],[390,1249],{}," — a rotation\nnever violates the BST property.",[567,1252,1253],{},[385,1254,789],{"href":1255,"ariaDescribedBy":1256,"dataFootnoteRef":376,"id":1257},"#user-content-fn-clrs-rotate",[573],"user-content-fnref-clrs-rotate"," What it ",[634,1260,1261],{},"does"," change is height: rotating can\npull a deep subtree up a level and push a shallow one down, which is precisely\nthe lever a balanced tree pulls to repair itself.",[1264,1265,1269],"pre",{"className":1266,"code":1267,"language":1268,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Left-Rotate}(T, x)$ — pivot $x$ down-left, its right child $y$ up\n$y \\gets right(x)$\n$right(x) \\gets left(y)$ \u002F\u002F $T_2$ becomes x's right child\nif $left(y) \\ne \\text{nil}$ then\n  $parent(left(y)) \\gets x$\n$parent(y) \\gets parent(x)$ \u002F\u002F splice y where x was\nif $parent(x) = \\text{nil}$ then\n  $root(T) \\gets y$\nelse if $x = left(parent(x))$ then\n  $left(parent(x)) \\gets y$\nelse\n  $right(parent(x)) \\gets y$\n$left(y) \\gets x$ \u002F\u002F x hangs under y\n$parent(x) \\gets y$\n","algorithm",[1270,1271,1272,1278,1283,1288,1293,1298,1303,1308,1313,1318,1323,1328,1333,1339],"code",{"__ignoreMap":376},[390,1273,1275],{"class":1274,"line":6},"line",[390,1276,1277],{},"caption: $\\textsc{Left-Rotate}(T, x)$ — pivot $x$ down-left, its right child $y$ up\n",[390,1279,1280],{"class":1274,"line":18},[390,1281,1282],{},"$y \\gets right(x)$\n",[390,1284,1285],{"class":1274,"line":24},[390,1286,1287],{},"$right(x) \\gets left(y)$ \u002F\u002F $T_2$ becomes x's right child\n",[390,1289,1290],{"class":1274,"line":73},[390,1291,1292],{},"if $left(y) \\ne \\text{nil}$ then\n",[390,1294,1295],{"class":1274,"line":102},[390,1296,1297],{},"  $parent(left(y)) \\gets x$\n",[390,1299,1300],{"class":1274,"line":108},[390,1301,1302],{},"$parent(y) \\gets parent(x)$ \u002F\u002F splice y where x was\n",[390,1304,1305],{"class":1274,"line":116},[390,1306,1307],{},"if $parent(x) = \\text{nil}$ then\n",[390,1309,1310],{"class":1274,"line":196},[390,1311,1312],{},"  $root(T) \\gets y$\n",[390,1314,1315],{"class":1274,"line":202},[390,1316,1317],{},"else if $x = left(parent(x))$ then\n",[390,1319,1320],{"class":1274,"line":283},[390,1321,1322],{},"  $left(parent(x)) \\gets y$\n",[390,1324,1325],{"class":1274,"line":333},[390,1326,1327],{},"else\n",[390,1329,1330],{"class":1274,"line":354},[390,1331,1332],{},"  $right(parent(x)) \\gets y$\n",[390,1334,1336],{"class":1274,"line":1335},13,[390,1337,1338],{},"$left(y) \\gets x$ \u002F\u002F x hangs under y\n",[390,1340,1342],{"class":1274,"line":1341},14,[390,1343,1344],{},"$parent(x) \\gets y$\n",[381,1346,1347,1348,1372,1373,1406],{},"A rotation touches only a constant number of pointers, so it runs in ",[390,1349,1351],{"className":1350},[393],[390,1352,1354],{"className":1353,"ariaHidden":398},[397],[390,1355,1357,1360,1363,1366,1369],{"className":1356},[402],[390,1358],{"className":1359,"style":407},[406],[390,1361,414],{"className":1362,"style":413},[411,412],[390,1364,419],{"className":1365},[418],[390,1367,575],{"className":1368},[411],[390,1370,428],{"className":1371},[427],"\ntime. Every balanced-tree rebalancing operation is built from a handful of\nrotations (plus, for red-black trees, recolorings) along a single root-to-leaf\npath, hence ",[390,1374,1376],{"className":1375},[393],[390,1377,1379],{"className":1378,"ariaHidden":398},[397],[390,1380,1382,1385,1388,1391,1397,1400,1403],{"className":1381},[402],[390,1383],{"className":1384,"style":407},[406],[390,1386,414],{"className":1387,"style":413},[411,412],[390,1389,419],{"className":1390},[418],[390,1392,1394],{"className":1393},[452],[390,1395,458],{"className":1396,"style":457},[411,456],[390,1398],{"className":1399,"style":463},[462],[390,1401,467],{"className":1402},[411,412],[390,1404,428],{"className":1405},[427]," work to repair the tree after an update.",[623,1408,1410],{"id":1409},"red-black-trees-balance-by-color","Red-black trees: balance by color",[381,1412,629,1413,1416,1417,1420,1421,1428],{},[498,1414,1415],{},"red-black tree"," is a BST in which every node carries one extra bit, its\n",[498,1418,1419],{},"color"," — red or black.",[567,1422,1423],{},[385,1424,1238],{"href":1425,"ariaDescribedBy":1426,"dataFootnoteRef":376,"id":1427},"#user-content-fn-clrs-rb",[573],"user-content-fnref-clrs-rb"," Five invariants on those colors squeeze the tree into\nlogarithmic height:",[1430,1431,1432,1443,1450,1461,1470],"ol",{},[1433,1434,1435,1436,1439,1440,621],"li",{},"Every node is either ",[498,1437,1438],{},"red"," or ",[498,1441,1442],{},"black",[1433,1444,1445,1446,1449],{},"The ",[498,1447,1448],{},"root"," is black.",[1433,1451,1452,1453,1456,1457,1460],{},"Every ",[498,1454,1455],{},"leaf"," (the ",[1270,1458,1459],{},"nil"," sentinel) is black.",[1433,1462,1463,1464,1466,1467,1469],{},"If a node is ",[498,1465,1438],{},", then both its children are ",[498,1468,1442],{}," (no two reds in a\nrow).",[1433,1471,1472,1473,1476,1477,621],{},"For each node, every path from it down to a descendant leaf contains the\n",[634,1474,1475],{},"same number of black nodes"," — its ",[498,1478,1479],{},"black-height",[381,1481,1482,1483,1486],{},"Properties 4 and 5 are the engine. Property 5 says all root-to-leaf paths have\nthe same number of black nodes; property 4 says reds cannot cluster, so reds can\nat most ",[634,1484,1485],{},"double"," a path's length by interleaving. Together they bound how\nlopsided the tree can get.",[1488,1489,1491,1492],"h3",{"id":1490},"why-the-height-is-ologn","Why the height is ",[390,1493,1495],{"className":1494},[393],[390,1496,1498],{"className":1497,"ariaHidden":398},[397],[390,1499,1501,1504,1507,1510,1516,1519,1522],{"className":1500},[402],[390,1502],{"className":1503,"style":407},[406],[390,1505,414],{"className":1506,"style":413},[411,412],[390,1508,419],{"className":1509},[418],[390,1511,1513],{"className":1512},[452],[390,1514,458],{"className":1515,"style":457},[411,456],[390,1517],{"className":1518,"style":463},[462],[390,1520,467],{"className":1521},[411,412],[390,1523,428],{"className":1524},[427],[381,1526,1527,1528,1531,1532,1557,1558,1573,1574,1589,1590,1605],{},"The argument is short and worth seeing, because it explains ",[634,1529,1530],{},"why"," the color rules\ntake exactly this form. Let ",[390,1533,1535],{"className":1534},[393],[390,1536,1538],{"className":1537,"ariaHidden":398},[397],[390,1539,1541,1544,1548,1551,1554],{"className":1540},[402],[390,1542],{"className":1543,"style":407},[406],[390,1545,1547],{"className":1546},[411,412],"bh",[390,1549,419],{"className":1550},[418],[390,1552,689],{"className":1553},[411,412],[390,1555,428],{"className":1556},[427]," be the black-height of node ",[390,1559,1561],{"className":1560},[393],[390,1562,1564],{"className":1563,"ariaHidden":398},[397],[390,1565,1567,1570],{"className":1566},[402],[390,1568],{"className":1569,"style":685},[406],[390,1571,689],{"className":1572},[411,412]," (the number of\nblack nodes on any path from ",[390,1575,1577],{"className":1576},[393],[390,1578,1580],{"className":1579,"ariaHidden":398},[397],[390,1581,1583,1586],{"className":1582},[402],[390,1584],{"className":1585,"style":685},[406],[390,1587,689],{"className":1588},[411,412]," down to a leaf, not counting ",[390,1591,1593],{"className":1592},[393],[390,1594,1596],{"className":1595,"ariaHidden":398},[397],[390,1597,1599,1602],{"className":1598},[402],[390,1600],{"className":1601,"style":685},[406],[390,1603,689],{"className":1604},[411,412],").",[1607,1608,1610],"callout",{"type":1609},"lemma",[381,1611,1612,1615,1616,1631,1632,1710],{},[498,1613,1614],{},"Lemma."," The subtree rooted at ",[390,1617,1619],{"className":1618},[393],[390,1620,1622],{"className":1621,"ariaHidden":398},[397],[390,1623,1625,1628],{"className":1624},[402],[390,1626],{"className":1627,"style":685},[406],[390,1629,689],{"className":1630},[411,412]," contains at least ",[390,1633,1635],{"className":1634},[393],[390,1636,1638,1700],{"className":1637,"ariaHidden":398},[397],[390,1639,1641,1645,1688,1692,1697],{"className":1640},[402],[390,1642],{"className":1643,"style":1644},[406],"height:0.9713em;vertical-align:-0.0833em;",[390,1646,1648,1651],{"className":1647},[411],[390,1649,789],{"className":1650},[411],[390,1652,1654],{"className":1653},[756],[390,1655,1657],{"className":1656},[760],[390,1658,1660],{"className":1659},[765],[390,1661,1664],{"className":1662,"style":1663},[769],"height:0.888em;",[390,1665,1667,1670],{"style":1666},"top:-3.063em;margin-right:0.05em;",[390,1668],{"className":1669,"style":778},[777],[390,1671,1673],{"className":1672},[782,783,784,785],[390,1674,1676,1679,1682,1685],{"className":1675},[411,785],[390,1677,1547],{"className":1678},[411,412,785],[390,1680,419],{"className":1681},[418,785],[390,1683,689],{"className":1684},[411,412,785],[390,1686,428],{"className":1687},[427,785],[390,1689],{"className":1690,"style":1691},[462],"margin-right:0.2222em;",[390,1693,1696],{"className":1694},[1695],"mbin","−",[390,1698],{"className":1699,"style":1691},[462],[390,1701,1703,1707],{"className":1702},[402],[390,1704],{"className":1705,"style":1706},[406],"height:0.6444em;",[390,1708,575],{"className":1709},[411]," internal\nnodes.",[1607,1712,1714,2021],{"type":1713},"proof",[381,1715,1716,1719,1720,1735,1736,1779,1780,1859,1860,1875,1876,1439,1900,1942,1943,2020],{},[498,1717,1718],{},"Proof by induction on height."," If ",[390,1721,1723],{"className":1722},[393],[390,1724,1726],{"className":1725,"ariaHidden":398},[397],[390,1727,1729,1732],{"className":1728},[402],[390,1730],{"className":1731,"style":685},[406],[390,1733,689],{"className":1734},[411,412]," is a leaf, ",[390,1737,1739],{"className":1738},[393],[390,1740,1742,1769],{"className":1741,"ariaHidden":398},[397],[390,1743,1745,1748,1751,1754,1757,1760,1763,1766],{"className":1744},[402],[390,1746],{"className":1747,"style":407},[406],[390,1749,1547],{"className":1750},[411,412],[390,1752,419],{"className":1753},[418],[390,1755,689],{"className":1756},[411,412],[390,1758,428],{"className":1759},[427],[390,1761],{"className":1762,"style":525},[462],[390,1764,530],{"className":1765},[529],[390,1767],{"className":1768,"style":525},[462],[390,1770,1772,1775],{"className":1771},[402],[390,1773],{"className":1774,"style":1706},[406],[390,1776,1778],{"className":1777},[411],"0"," and the subtree\nhas ",[390,1781,1783],{"className":1782},[393],[390,1784,1786,1832,1850],{"className":1785,"ariaHidden":398},[397],[390,1787,1789,1793,1823,1826,1829],{"className":1788},[402],[390,1790],{"className":1791,"style":1792},[406],"height:0.8974em;vertical-align:-0.0833em;",[390,1794,1796,1799],{"className":1795},[411],[390,1797,789],{"className":1798},[411],[390,1800,1802],{"className":1801},[756],[390,1803,1805],{"className":1804},[760],[390,1806,1808],{"className":1807},[765],[390,1809,1812],{"className":1810,"style":1811},[769],"height:0.8141em;",[390,1813,1814,1817],{"style":1666},[390,1815],{"className":1816,"style":778},[777],[390,1818,1820],{"className":1819},[782,783,784,785],[390,1821,1778],{"className":1822},[411,785],[390,1824],{"className":1825,"style":1691},[462],[390,1827,1696],{"className":1828},[1695],[390,1830],{"className":1831,"style":1691},[462],[390,1833,1835,1838,1841,1844,1847],{"className":1834},[402],[390,1836],{"className":1837,"style":1706},[406],[390,1839,575],{"className":1840},[411],[390,1842],{"className":1843,"style":525},[462],[390,1845,530],{"className":1846},[529],[390,1848],{"className":1849,"style":525},[462],[390,1851,1853,1856],{"className":1852},[402],[390,1854],{"className":1855,"style":1706},[406],[390,1857,1778],{"className":1858},[411]," internal nodes. Otherwise each child of ",[390,1861,1863],{"className":1862},[393],[390,1864,1866],{"className":1865,"ariaHidden":398},[397],[390,1867,1869,1872],{"className":1868},[402],[390,1870],{"className":1871,"style":685},[406],[390,1873,689],{"className":1874},[411,412]," has black-height\n",[390,1877,1879],{"className":1878},[393],[390,1880,1882],{"className":1881,"ariaHidden":398},[397],[390,1883,1885,1888,1891,1894,1897],{"className":1884},[402],[390,1886],{"className":1887,"style":407},[406],[390,1889,1547],{"className":1890},[411,412],[390,1892,419],{"className":1893},[418],[390,1895,689],{"className":1896},[411,412],[390,1898,428],{"className":1899},[427],[390,1901,1903],{"className":1902},[393],[390,1904,1906,1933],{"className":1905,"ariaHidden":398},[397],[390,1907,1909,1912,1915,1918,1921,1924,1927,1930],{"className":1908},[402],[390,1910],{"className":1911,"style":407},[406],[390,1913,1547],{"className":1914},[411,412],[390,1916,419],{"className":1917},[418],[390,1919,689],{"className":1920},[411,412],[390,1922,428],{"className":1923},[427],[390,1925],{"className":1926,"style":1691},[462],[390,1928,1696],{"className":1929},[1695],[390,1931],{"className":1932,"style":1691},[462],[390,1934,1936,1939],{"className":1935},[402],[390,1937],{"className":1938,"style":1706},[406],[390,1940,575],{"className":1941},[411]," (it drops by one only across a black child), so by induction\neach child's subtree has at least ",[390,1944,1946],{"className":1945},[393],[390,1947,1949,2011],{"className":1948,"ariaHidden":398},[397],[390,1950,1952,1955,2002,2005,2008],{"className":1951},[402],[390,1953],{"className":1954,"style":1644},[406],[390,1956,1958,1961],{"className":1957},[411],[390,1959,789],{"className":1960},[411],[390,1962,1964],{"className":1963},[756],[390,1965,1967],{"className":1966},[760],[390,1968,1970],{"className":1969},[765],[390,1971,1973],{"className":1972,"style":1663},[769],[390,1974,1975,1978],{"style":1666},[390,1976],{"className":1977,"style":778},[777],[390,1979,1981],{"className":1980},[782,783,784,785],[390,1982,1984,1987,1990,1993,1996,1999],{"className":1983},[411,785],[390,1985,1547],{"className":1986},[411,412,785],[390,1988,419],{"className":1989},[418,785],[390,1991,689],{"className":1992},[411,412,785],[390,1994,428],{"className":1995},[427,785],[390,1997,1696],{"className":1998},[1695,785],[390,2000,575],{"className":2001},[411,785],[390,2003],{"className":2004,"style":1691},[462],[390,2006,1696],{"className":2007},[1695],[390,2009],{"className":2010,"style":1691},[462],[390,2012,2014,2017],{"className":2013},[402],[390,2015],{"className":2016,"style":1706},[406],[390,2018,575],{"className":2019},[411]," internal nodes, and",[390,2022,2025],{"className":2023},[2024],"katex-display",[390,2026,2028],{"className":2027},[393],[390,2029,2031,2107,2133,2151,2208],{"className":2030,"ariaHidden":398},[397],[390,2032,2034,2038,2041,2049,2098,2101,2104],{"className":2033},[402],[390,2035],{"className":2036,"style":2037},[406],"height:1.288em;vertical-align:-0.35em;",[390,2039,789],{"className":2040},[411],[390,2042,2044],{"className":2043},[418],[390,2045,419],{"className":2046},[2047,2048],"delimsizing","size1",[390,2050,2052,2055],{"className":2051},[411],[390,2053,789],{"className":2054},[411],[390,2056,2058],{"className":2057},[756],[390,2059,2061],{"className":2060},[760],[390,2062,2064],{"className":2063},[765],[390,2065,2068],{"className":2066,"style":2067},[769],"height:0.938em;",[390,2069,2071,2074],{"style":2070},"top:-3.113em;margin-right:0.05em;",[390,2072],{"className":2073,"style":778},[777],[390,2075,2077],{"className":2076},[782,783,784,785],[390,2078,2080,2083,2086,2089,2092,2095],{"className":2079},[411,785],[390,2081,1547],{"className":2082},[411,412,785],[390,2084,419],{"className":2085},[418,785],[390,2087,689],{"className":2088},[411,412,785],[390,2090,428],{"className":2091},[427,785],[390,2093,1696],{"className":2094},[1695,785],[390,2096,575],{"className":2097},[411,785],[390,2099],{"className":2100,"style":1691},[462],[390,2102,1696],{"className":2103},[1695],[390,2105],{"className":2106,"style":1691},[462],[390,2108,2110,2114,2117,2123,2126,2130],{"className":2109},[402],[390,2111],{"className":2112,"style":2113},[406],"height:1.2em;vertical-align:-0.35em;",[390,2115,575],{"className":2116},[411],[390,2118,2120],{"className":2119},[427],[390,2121,428],{"className":2122},[2047,2048],[390,2124],{"className":2125,"style":1691},[462],[390,2127,2129],{"className":2128},[1695],"+",[390,2131],{"className":2132,"style":1691},[462],[390,2134,2136,2139,2142,2145,2148],{"className":2135},[402],[390,2137],{"className":2138,"style":1706},[406],[390,2140,575],{"className":2141},[411],[390,2143],{"className":2144,"style":525},[462],[390,2146,530],{"className":2147},[529],[390,2149],{"className":2150,"style":525},[462],[390,2152,2154,2158,2199,2202,2205],{"className":2153},[402],[390,2155],{"className":2156,"style":2157},[406],"height:1.0213em;vertical-align:-0.0833em;",[390,2159,2161,2164],{"className":2160},[411],[390,2162,789],{"className":2163},[411],[390,2165,2167],{"className":2166},[756],[390,2168,2170],{"className":2169},[760],[390,2171,2173],{"className":2172},[765],[390,2174,2176],{"className":2175,"style":2067},[769],[390,2177,2178,2181],{"style":2070},[390,2179],{"className":2180,"style":778},[777],[390,2182,2184],{"className":2183},[782,783,784,785],[390,2185,2187,2190,2193,2196],{"className":2186},[411,785],[390,2188,1547],{"className":2189},[411,412,785],[390,2191,419],{"className":2192},[418,785],[390,2194,689],{"className":2195},[411,412,785],[390,2197,428],{"className":2198},[427,785],[390,2200],{"className":2201,"style":1691},[462],[390,2203,1696],{"className":2204},[1695],[390,2206],{"className":2207,"style":1691},[462],[390,2209,2211,2215,2219,2223],{"className":2210},[402],[390,2212],{"className":2213,"style":2214},[406],"height:0.675em;",[390,2216,2218],{"className":2217},[411],"1.",[390,2220],{"className":2221,"style":2222},[462],"margin-right:2em;",[390,2224,2227],{"className":2225},[411,2226],"amsrm","□",[381,2229,2230,2231,2246,2247,2266,2267,2282],{},"Now let ",[390,2232,2234],{"className":2233},[393],[390,2235,2237],{"className":2236,"ariaHidden":398},[397],[390,2238,2240,2243],{"className":2239},[402],[390,2241],{"className":2242,"style":518},[406],[390,2244,423],{"className":2245},[411,412]," be the tree's height. By property 4 at least half the nodes on any\nroot-to-leaf path are black, so the root's black-height is at least ",[390,2248,2250],{"className":2249},[393],[390,2251,2253],{"className":2252,"ariaHidden":398},[397],[390,2254,2256,2259,2262],{"className":2255},[402],[390,2257],{"className":2258,"style":407},[406],[390,2260,423],{"className":2261},[411,412],[390,2263,2265],{"className":2264},[411],"\u002F2",".\nApplying the lemma at the root with ",[390,2268,2270],{"className":2269},[393],[390,2271,2273],{"className":2272,"ariaHidden":398},[397],[390,2274,2276,2279],{"className":2275},[402],[390,2277],{"className":2278,"style":685},[406],[390,2280,467],{"className":2281},[411,412]," internal nodes,",[390,2284,2286],{"className":2285},[2024],[390,2287,2289],{"className":2288},[393],[390,2290,2292,2312,2372,2391,2441,2468,2488,2561,2582],{"className":2291,"ariaHidden":398},[397],[390,2293,2295,2299,2302,2305,2309],{"className":2294},[402],[390,2296],{"className":2297,"style":2298},[406],"height:0.7719em;vertical-align:-0.136em;",[390,2300,467],{"className":2301},[411,412],[390,2303],{"className":2304,"style":525},[462],[390,2306,2308],{"className":2307},[529],"≥",[390,2310],{"className":2311,"style":525},[462],[390,2313,2315,2318,2363,2366,2369],{"className":2314},[402],[390,2316],{"className":2317,"style":2157},[406],[390,2319,2321,2324],{"className":2320},[411],[390,2322,789],{"className":2323},[411],[390,2325,2327],{"className":2326},[756],[390,2328,2330],{"className":2329},[760],[390,2331,2333],{"className":2332},[765],[390,2334,2336],{"className":2335,"style":2067},[769],[390,2337,2338,2341],{"style":2070},[390,2339],{"className":2340,"style":778},[777],[390,2342,2344],{"className":2343},[782,783,784,785],[390,2345,2347,2350,2353,2360],{"className":2346},[411,785],[390,2348,1547],{"className":2349},[411,412,785],[390,2351,419],{"className":2352},[418,785],[390,2354,2357],{"className":2355},[411,2356,785],"text",[390,2358,1448],{"className":2359},[411,785],[390,2361,428],{"className":2362},[427,785],[390,2364],{"className":2365,"style":1691},[462],[390,2367,1696],{"className":2368},[1695],[390,2370],{"className":2371,"style":1691},[462],[390,2373,2375,2379,2382,2385,2388],{"className":2374},[402],[390,2376],{"className":2377,"style":2378},[406],"height:0.7804em;vertical-align:-0.136em;",[390,2380,575],{"className":2381},[411],[390,2383],{"className":2384,"style":525},[462],[390,2386,2308],{"className":2387},[529],[390,2389],{"className":2390,"style":525},[462],[390,2392,2394,2397,2432,2435,2438],{"className":2393},[402],[390,2395],{"className":2396,"style":2157},[406],[390,2398,2400,2403],{"className":2399},[411],[390,2401,789],{"className":2402},[411],[390,2404,2406],{"className":2405},[756],[390,2407,2409],{"className":2408},[760],[390,2410,2412],{"className":2411},[765],[390,2413,2415],{"className":2414,"style":2067},[769],[390,2416,2417,2420],{"style":2070},[390,2418],{"className":2419,"style":778},[777],[390,2421,2423],{"className":2422},[782,783,784,785],[390,2424,2426,2429],{"className":2425},[411,785],[390,2427,423],{"className":2428},[411,412,785],[390,2430,2265],{"className":2431},[411,785],[390,2433],{"className":2434,"style":1691},[462],[390,2436,1696],{"className":2437},[1695],[390,2439],{"className":2440,"style":1691},[462],[390,2442,2444,2448,2451,2455,2458,2462,2465],{"className":2443},[402],[390,2445],{"className":2446,"style":2447},[406],"height:0.6684em;vertical-align:-0.024em;",[390,2449,575],{"className":2450},[411],[390,2452],{"className":2453,"style":2454},[462],"margin-right:1em;",[390,2456],{"className":2457,"style":525},[462],[390,2459,2461],{"className":2460},[529],"⟹",[390,2463],{"className":2464,"style":2454},[462],[390,2466],{"className":2467,"style":525},[462],[390,2469,2471,2475,2478,2481,2485],{"className":2470},[402],[390,2472],{"className":2473,"style":2474},[406],"height:0.8304em;vertical-align:-0.136em;",[390,2476,423],{"className":2477},[411,412],[390,2479],{"className":2480,"style":525},[462],[390,2482,2484],{"className":2483},[529],"≤",[390,2486],{"className":2487,"style":525},[462],[390,2489,2491,2494,2497,2500,2546,2549,2552,2555,2558],{"className":2490},[402],[390,2492],{"className":2493,"style":407},[406],[390,2495,789],{"className":2496},[411],[390,2498],{"className":2499,"style":463},[462],[390,2501,2503,2509],{"className":2502},[452],[390,2504,2506],{"className":2505},[452],[390,2507,458],{"className":2508,"style":457},[411,456],[390,2510,2512],{"className":2511},[756],[390,2513,2515,2537],{"className":2514},[760,761],[390,2516,2518,2534],{"className":2517},[765],[390,2519,2522],{"className":2520,"style":2521},[769],"height:0.207em;",[390,2523,2525,2528],{"style":2524},"top:-2.4559em;margin-right:0.05em;",[390,2526],{"className":2527,"style":778},[777],[390,2529,2531],{"className":2530},[782,783,784,785],[390,2532,789],{"className":2533},[411,785],[390,2535,794],{"className":2536},[793],[390,2538,2540],{"className":2539},[765],[390,2541,2544],{"className":2542,"style":2543},[769],"height:0.2441em;",[390,2545],{},[390,2547,419],{"className":2548},[418],[390,2550,467],{"className":2551},[411,412],[390,2553],{"className":2554,"style":1691},[462],[390,2556,2129],{"className":2557},[1695],[390,2559],{"className":2560,"style":1691},[462],[390,2562,2564,2567,2570,2573,2576,2579],{"className":2563},[402],[390,2565],{"className":2566,"style":407},[406],[390,2568,575],{"className":2569},[411],[390,2571,428],{"className":2572},[427],[390,2574],{"className":2575,"style":525},[462],[390,2577,530],{"className":2578},[529],[390,2580],{"className":2581,"style":525},[462],[390,2583,2585,2588,2591,2594,2600,2603,2606,2609],{"className":2584},[402],[390,2586],{"className":2587,"style":407},[406],[390,2589,414],{"className":2590,"style":413},[411,412],[390,2592,419],{"className":2593},[418],[390,2595,2597],{"className":2596},[452],[390,2598,458],{"className":2599,"style":457},[411,456],[390,2601],{"className":2602,"style":463},[462],[390,2604,467],{"className":2605},[411,412],[390,2607,428],{"className":2608},[427],[390,2610,621],{"className":2611},[411],[381,2613,2614,2615,2618,2619,2652,2653,2677,2678,2711,2712,2715,2716,2749],{},"So ",[634,2616,2617],{},"every"," operation that walks the tree (search, insert, delete, successor)\nruns in ",[390,2620,2622],{"className":2621},[393],[390,2623,2625],{"className":2624,"ariaHidden":398},[397],[390,2626,2628,2631,2634,2637,2643,2646,2649],{"className":2627},[402],[390,2629],{"className":2630,"style":407},[406],[390,2632,414],{"className":2633,"style":413},[411,412],[390,2635,419],{"className":2636},[418],[390,2638,2640],{"className":2639},[452],[390,2641,458],{"className":2642,"style":457},[411,456],[390,2644],{"className":2645,"style":463},[462],[390,2647,467],{"className":2648},[411,412],[390,2650,428],{"className":2651},[427]," worst-case time. After an insertion or deletion, the new node\nmay violate property 4 (a red child of a red parent) or property 2\u002F5; the tree\nrepairs itself by recoloring and rotating up the path from the change toward the\nroot. Each fix-up is ",[390,2654,2656],{"className":2655},[393],[390,2657,2659],{"className":2658,"ariaHidden":398},[397],[390,2660,2662,2665,2668,2671,2674],{"className":2661},[402],[390,2663],{"className":2664,"style":407},[406],[390,2666,414],{"className":2667,"style":413},[411,412],[390,2669,419],{"className":2670},[418],[390,2672,575],{"className":2673},[411],[390,2675,428],{"className":2676},[427]," work, the path has length ",[390,2679,2681],{"className":2680},[393],[390,2682,2684],{"className":2683,"ariaHidden":398},[397],[390,2685,2687,2690,2693,2696,2702,2705,2708],{"className":2686},[402],[390,2688],{"className":2689,"style":407},[406],[390,2691,414],{"className":2692,"style":413},[411,412],[390,2694,419],{"className":2695},[418],[390,2697,2699],{"className":2698},[452],[390,2700,458],{"className":2701,"style":457},[411,456],[390,2703],{"className":2704,"style":463},[462],[390,2706,467],{"className":2707},[411,412],[390,2709,428],{"className":2710},[427],", and the loop\nterminates either by pushing the violation upward until it vanishes or by a final\nrotation. We will not work through every case of insert-fixup here; the point\nis the ",[634,2713,2714],{},"shape"," of the guarantee: bounded-height invariant plus ",[390,2717,2719],{"className":2718},[393],[390,2720,2722],{"className":2721,"ariaHidden":398},[397],[390,2723,2725,2728,2731,2734,2740,2743,2746],{"className":2724},[402],[390,2726],{"className":2727,"style":407},[406],[390,2729,414],{"className":2730,"style":413},[411,412],[390,2732,419],{"className":2733},[418],[390,2735,2737],{"className":2736},[452],[390,2738,458],{"className":2739,"style":457},[411,456],[390,2741],{"className":2742,"style":463},[462],[390,2744,467],{"className":2745},[411,412],[390,2747,428],{"className":2748},[427],"\nrotation-and-recolor repair equals worst-case logarithmic operations.",[381,2751,2752,2753,2770,2771,2774,2775,2778,2779,2794,2795,2798,2799,2814,2815,2817],{},"The most common fix-up is the easy one: when the newly inserted red node ",[390,2754,2756],{"className":2755},[393],[390,2757,2759],{"className":2758,"ariaHidden":398},[397],[390,2760,2762,2765],{"className":2761},[402],[390,2763],{"className":2764,"style":685},[406],[390,2766,2769],{"className":2767,"style":2768},[411,412],"margin-right:0.044em;","z","\nhas a red parent ",[634,2772,2773],{},"and"," a red ",[498,2776,2777],{},"uncle"," ",[390,2780,2782],{"className":2781},[393],[390,2783,2785],{"className":2784,"ariaHidden":398},[397],[390,2786,2788,2791],{"className":2787},[402],[390,2789],{"className":2790,"style":650},[406],[390,2792,655],{"className":2793,"style":654},[411,412],", we simply recolor — paint the parent\nand uncle black and the grandparent red — with no rotation at all. That repaints\nthe local subtree to restore ",[728,2796,2797],{},"no two reds"," while preserving every path's\nblack-height, but the grandparent is now red, so the violation may reappear one\nlevel up; we move ",[390,2800,2802],{"className":2801},[393],[390,2803,2805],{"className":2804,"ariaHidden":398},[397],[390,2806,2808,2811],{"className":2807},[402],[390,2809],{"className":2810,"style":685},[406],[390,2812,2769],{"className":2813,"style":2768},[411,412]," to the grandparent and continue. Only when the uncle is\n",[634,2816,1442],{}," do we resort to one or two rotations, after which the loop ends.",[838,2819,2821,3012],{"className":2820},[841,842],[844,2822,2826],{"xmlns":846,"width":2823,"height":2824,"viewBox":2825},"409.148","176.420","-75 -75 306.861 132.315",[851,2827,2828,2831,2839,2852,2855,2867,2870,2877,2880,2892,2895,2910,2917,2924,2933,2944,2947,2953,2956,2967,2970,2976,2979,2985,2988,3004],{"stroke":853,"style":854},[856,2829],{"fill":858,"d":2830},"M14.995-18.81c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958S-.463-8.85 5.037-8.85s9.958-4.459 9.958-9.959Zm-9.958 0",[851,2832,2834],{"transform":2833},"translate(-3.621 3.075)",[856,2835],{"d":2836,"fill":853,"stroke":853,"className":2837,"style":2838},"M6.377-20.801Q6.377-20.243 6.601-19.816Q6.826-19.390 7.250-19.159Q7.674-18.929 8.232-18.929Q8.816-18.929 9.295-19.175Q9.774-19.421 9.941-19.926L10.130-20.717Q10.139-20.735 10.139-20.792Q10.139-20.884 10.078-20.906Q9.814-20.959 9.177-20.959Q9.128-20.959 9.100-20.996Q9.071-21.034 9.071-21.078Q9.071-21.275 9.238-21.275L11.607-21.275Q11.651-21.275 11.679-21.238Q11.708-21.201 11.708-21.170Q11.708-21.100 11.673-21.029Q11.638-20.959 11.580-20.959Q11.264-20.959 11.132-20.906Q11-20.853 10.930-20.629L10.741-19.882L10.499-18.889Q10.469-18.810 10.403-18.810Q10.315-18.810 10.183-19.001Q10.051-19.192 9.976-19.351Q9.766-19.100 9.438-18.931Q9.111-18.762 8.750-18.687Q8.390-18.612 8.034-18.612Q7.305-18.612 6.729-18.929Q6.153-19.245 5.824-19.810Q5.494-20.374 5.494-21.104Q5.494-21.869 5.843-22.605Q6.193-23.341 6.775-23.910Q7.357-24.479 8.109-24.817Q8.860-25.156 9.616-25.156Q10.086-25.156 10.484-24.951Q10.882-24.747 11.128-24.365L11.840-25.138Q11.857-25.156 11.897-25.156L11.950-25.156Q12.037-25.156 12.037-25.037L11.435-22.642Q11.418-22.563 11.348-22.563L11.211-22.563Q11.119-22.563 11.119-22.682Q11.159-22.862 11.159-23.112Q11.159-23.574 10.994-23.969Q10.829-24.365 10.499-24.602Q10.170-24.839 9.700-24.839Q8.961-24.839 8.348-24.483Q7.735-24.127 7.294-23.528Q6.852-22.928 6.615-22.214Q6.377-21.499 6.377-20.801",[867],"stroke-width:0.270",[851,2840,2842,2845],{"stroke":1438,"style":2841},"stroke-width:.6",[856,2843],{"fill":858,"d":2844},"M-21.993 12.488c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,2846,2848],{"transform":2847},"translate(-40.584 34.373)",[856,2849],{"d":2850,"fill":1438,"stroke":1438,"className":2851,"style":2838},"M7.924-18.810L5.525-18.810Q5.485-18.810 5.454-18.850Q5.424-18.889 5.424-18.929Q5.424-18.990 5.457-19.058Q5.490-19.126 5.551-19.126Q6.052-19.126 6.281-19.179Q6.399-19.223 6.478-19.456L7.700-24.373Q7.718-24.461 7.718-24.505Q7.718-24.571 7.691-24.589Q7.520-24.642 6.988-24.642Q6.883-24.642 6.883-24.760Q6.883-24.822 6.916-24.890Q6.949-24.958 7.010-24.958L10.165-24.958Q10.596-24.958 11.011-24.806Q11.427-24.655 11.693-24.343Q11.958-24.031 11.958-23.578Q11.958-23.002 11.543-22.550Q11.128-22.097 10.506-21.849Q9.884-21.601 9.322-21.601L7.828-21.601L7.278-19.394Q7.261-19.351 7.261-19.258Q7.261-19.197 7.287-19.179Q7.458-19.126 7.990-19.126Q8.034-19.126 8.060-19.093Q8.087-19.060 8.087-19.017Q8.087-18.810 7.924-18.810M8.474-24.308L7.871-21.886L9.168-21.886Q9.568-21.886 9.937-22Q10.306-22.115 10.543-22.365Q10.781-22.594 10.928-23.016Q11.075-23.437 11.075-23.807Q11.075-24.268 10.719-24.455Q10.363-24.642 9.853-24.642L8.944-24.642Q8.684-24.642 8.610-24.595Q8.535-24.549 8.474-24.308",[867],[856,2853],{"fill":858,"d":2854},"M-2.718-12.248-24.12 5.862",[851,2856,2857,2860],{"stroke":1438,"style":2841},[856,2858],{"fill":858,"d":2859},"M-40.488 43.786c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[851,2861,2863],{"transform":2862},"translate(-57.828 64.534)",[856,2864],{"d":2865,"fill":1438,"stroke":1438,"className":2866,"style":2838},"M5.604-18.709L5.494-18.709Q5.454-18.709 5.430-18.740Q5.406-18.770 5.406-18.810Q5.406-18.845 5.424-18.863Q5.679-19.293 6.024-19.667Q6.369-20.040 6.804-20.421Q7.239-20.801 7.680-21.187Q8.122-21.574 8.403-21.877Q8.276-21.877 8.080-21.924Q7.885-21.970 7.733-22.014Q7.581-22.058 7.450-22.086Q7.318-22.115 7.168-22.115Q6.927-22.115 6.703-22.020Q6.478-21.926 6.421-21.719Q6.404-21.636 6.333-21.636L6.224-21.636Q6.136-21.636 6.136-21.754Q6.197-21.996 6.371-22.242Q6.544-22.488 6.784-22.638Q7.023-22.787 7.296-22.787Q7.476-22.787 7.617-22.695Q7.757-22.602 7.907-22.446Q8.056-22.290 8.162-22.216Q8.267-22.141 8.412-22.141Q8.579-22.141 8.695-22.258Q8.812-22.374 8.948-22.576Q9.084-22.778 9.141-22.787L9.247-22.787Q9.282-22.787 9.311-22.758Q9.339-22.730 9.339-22.690Q9.339-22.660 9.322-22.642Q8.996-22.097 8.559-21.662Q8.122-21.227 7.410-20.618Q6.698-20.010 6.325-19.601L6.342-19.601Q6.448-19.619 6.496-19.619Q6.672-19.619 6.889-19.561Q7.107-19.504 7.322-19.445Q7.537-19.386 7.718-19.386Q8.078-19.386 8.403-19.597Q8.728-19.808 8.808-20.133Q8.816-20.164 8.840-20.188Q8.865-20.212 8.900-20.212L9.005-20.212Q9.054-20.212 9.076-20.179Q9.098-20.146 9.098-20.098Q9.018-19.755 8.803-19.434Q8.588-19.113 8.271-18.911Q7.955-18.709 7.603-18.709Q7.423-18.709 7.296-18.790Q7.168-18.872 7.019-19.030Q6.870-19.188 6.753-19.274Q6.637-19.359 6.487-19.359Q6.267-19.359 6.098-19.227Q5.929-19.096 5.780-18.904Q5.630-18.713 5.604-18.709",[867],[856,2868],{"fill":858,"d":2869},"m-37.17 21.32-8.058 13.635M-3.5 43.786c0-5.5-4.458-9.958-9.958-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.958 0",[851,2871,2873],{"transform":2872},"translate(-20.89 65.721)",[856,2874],{"d":2875,"fill":853,"stroke":853,"className":2876,"style":2838},"M6.659-18.709Q6.263-18.709 5.977-18.913Q5.692-19.118 5.545-19.452Q5.397-19.786 5.397-20.177Q5.397-20.612 5.571-21.073Q5.745-21.535 6.057-21.926Q6.369-22.317 6.779-22.552Q7.190-22.787 7.630-22.787Q7.898-22.787 8.115-22.649Q8.333-22.510 8.465-22.264L8.970-24.281Q9.005-24.431 9.005-24.505Q9.005-24.642 8.438-24.642Q8.342-24.642 8.342-24.760Q8.342-24.817 8.372-24.888Q8.403-24.958 8.465-24.958L9.691-25.055Q9.744-25.055 9.774-25.026Q9.805-24.997 9.805-24.949L9.805-24.914L8.522-19.764Q8.522-19.706 8.493-19.575Q8.465-19.443 8.465-19.368Q8.465-18.973 8.728-18.973Q9.014-18.973 9.148-19.296Q9.282-19.619 9.401-20.124Q9.410-20.155 9.434-20.179Q9.458-20.203 9.493-20.203L9.599-20.203Q9.647-20.203 9.669-20.170Q9.691-20.137 9.691-20.089Q9.577-19.658 9.486-19.405Q9.396-19.153 9.203-18.931Q9.010-18.709 8.711-18.709Q8.403-18.709 8.155-18.880Q7.907-19.052 7.836-19.342Q7.581-19.056 7.285-18.883Q6.988-18.709 6.659-18.709M6.676-18.973Q7.006-18.973 7.316-19.214Q7.625-19.456 7.836-19.772Q7.845-19.781 7.845-19.808L8.342-21.763Q8.285-22.080 8.093-22.304Q7.902-22.528 7.612-22.528Q7.243-22.528 6.944-22.209Q6.645-21.891 6.478-21.482Q6.342-21.135 6.217-20.625Q6.092-20.115 6.092-19.790Q6.092-19.465 6.230-19.219Q6.369-18.973 6.676-18.973",[867],[856,2878],{"fill":858,"d":2879},"m-26.733 21.32 8.108 13.721",[851,2881,2882,2885],{"stroke":1438,"style":2841},[856,2883],{"fill":858,"d":2884},"M51.984 12.488c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,2886,2888],{"transform":2887},"translate(34.55 32.36)",[856,2889],{"d":2890,"fill":1438,"stroke":1438,"className":2891,"style":2838},"M5.894-17.514Q5.982-17.360 6.155-17.294Q6.329-17.228 6.531-17.228Q6.856-17.228 7.120-17.404Q7.384-17.580 7.566-17.850Q7.748-18.120 7.880-18.450Q8.012-18.779 8.087-19.078Q7.687-18.709 7.217-18.709Q6.852-18.709 6.588-18.836Q6.325-18.964 6.180-19.210Q6.035-19.456 6.035-19.808Q6.035-20.093 6.111-20.412Q6.188-20.730 6.303-21.031Q6.417-21.332 6.575-21.737Q6.694-22.022 6.694-22.255Q6.694-22.374 6.648-22.451Q6.601-22.528 6.496-22.528Q6.144-22.528 5.909-22.167Q5.674-21.807 5.569-21.376Q5.551-21.293 5.476-21.293L5.371-21.293Q5.323-21.293 5.301-21.332Q5.279-21.372 5.279-21.412Q5.367-21.754 5.527-22.060Q5.687-22.365 5.938-22.576Q6.188-22.787 6.514-22.787Q6.852-22.787 7.083-22.581Q7.313-22.374 7.313-22.031Q7.313-21.851 7.252-21.697Q7.221-21.609 7.069-21.214Q6.918-20.818 6.848-20.588Q6.777-20.357 6.731-20.133Q6.685-19.909 6.685-19.685Q6.685-19.386 6.815-19.179Q6.944-18.973 7.225-18.973Q7.801-18.973 8.232-19.667L8.909-22.374Q8.944-22.515 9.058-22.602Q9.172-22.690 9.313-22.690Q9.427-22.690 9.508-22.613Q9.590-22.537 9.590-22.418Q9.590-22.365 9.581-22.339L8.702-18.792Q8.575-18.305 8.249-17.887Q7.924-17.470 7.467-17.217Q7.010-16.964 6.522-16.964Q6.272-16.964 6.041-17.054Q5.810-17.144 5.668-17.325Q5.525-17.505 5.525-17.755Q5.525-18.006 5.672-18.184Q5.819-18.362 6.052-18.362Q6.197-18.362 6.300-18.269Q6.404-18.177 6.404-18.028Q6.404-17.826 6.252-17.670Q6.100-17.514 5.894-17.514",[867],[856,2893],{"fill":858,"d":2894},"m12.79-12.248 21.405 18.11",[851,2896,2897,2904],{"stroke":858,"fontFamily":955,"fontSize":956},[851,2898,2900],{"transform":2899},"translate(-70.255 32.98)",[856,2901],{"d":2902,"fill":853,"stroke":853,"className":2903,"style":952},"M7.158-17.259L5.303-17.259L5.303-17.552Q5.572-17.552 5.740-17.597Q5.908-17.642 5.908-17.818L5.908-21.642Q5.908-21.849 5.752-21.902Q5.596-21.955 5.303-21.955L5.303-22.251L6.525-22.337L6.525-21.872Q6.756-22.095 7.070-22.216Q7.385-22.337 7.724-22.337Q8.197-22.337 8.601-22.091Q9.006-21.845 9.238-21.429Q9.471-21.013 9.471-20.537Q9.471-20.162 9.322-19.833Q9.174-19.505 8.904-19.253Q8.635-19.001 8.291-18.867Q7.947-18.732 7.588-18.732Q7.299-18.732 7.027-18.853Q6.756-18.974 6.549-19.185L6.549-17.818Q6.549-17.642 6.717-17.597Q6.885-17.552 7.158-17.552L7.158-17.259M6.549-21.474L6.549-19.634Q6.701-19.345 6.963-19.165Q7.224-18.986 7.533-18.986Q7.818-18.986 8.041-19.124Q8.264-19.263 8.416-19.494Q8.568-19.724 8.646-19.996Q8.724-20.267 8.724-20.537Q8.724-20.869 8.599-21.226Q8.474-21.583 8.226-21.820Q7.978-22.056 7.631-22.056Q7.307-22.056 7.012-21.900Q6.717-21.744 6.549-21.474M10.092-19.642Q10.092-20.126 10.494-20.421Q10.896-20.716 11.447-20.835Q11.998-20.955 12.490-20.955L12.490-21.244Q12.490-21.470 12.375-21.677Q12.260-21.884 12.062-22.003Q11.865-22.122 11.635-22.122Q11.209-22.122 10.924-22.017Q10.994-21.990 11.041-21.935Q11.088-21.880 11.113-21.810Q11.139-21.740 11.139-21.665Q11.139-21.560 11.088-21.468Q11.037-21.376 10.945-21.326Q10.853-21.275 10.748-21.275Q10.642-21.275 10.551-21.326Q10.459-21.376 10.408-21.468Q10.357-21.560 10.357-21.665Q10.357-22.083 10.746-22.230Q11.135-22.376 11.635-22.376Q11.967-22.376 12.320-22.246Q12.674-22.115 12.902-21.861Q13.131-21.607 13.131-21.259L13.131-19.458Q13.131-19.326 13.203-19.216Q13.275-19.107 13.404-19.107Q13.529-19.107 13.598-19.212Q13.666-19.318 13.666-19.458L13.666-19.970L13.947-19.970L13.947-19.458Q13.947-19.255 13.830-19.097Q13.713-18.939 13.531-18.855Q13.349-18.771 13.146-18.771Q12.916-18.771 12.764-18.943Q12.611-19.115 12.580-19.345Q12.420-19.064 12.111-18.898Q11.803-18.732 11.451-18.732Q10.939-18.732 10.516-18.955Q10.092-19.177 10.092-19.642M10.779-19.642Q10.779-19.357 11.006-19.171Q11.232-18.986 11.525-18.986Q11.771-18.986 11.996-19.103Q12.221-19.220 12.355-19.423Q12.490-19.626 12.490-19.880L12.490-20.712Q12.224-20.712 11.939-20.658Q11.654-20.603 11.383-20.474Q11.111-20.345 10.945-20.138Q10.779-19.931 10.779-19.642M16.248-18.810L14.267-18.810L14.267-19.107Q14.537-19.107 14.705-19.152Q14.873-19.197 14.873-19.369L14.873-21.505Q14.873-21.720 14.810-21.816Q14.748-21.912 14.631-21.933Q14.514-21.955 14.267-21.955L14.267-22.251L15.435-22.337L15.435-21.552Q15.514-21.763 15.666-21.949Q15.818-22.134 16.017-22.236Q16.217-22.337 16.443-22.337Q16.689-22.337 16.881-22.193Q17.072-22.048 17.072-21.818Q17.072-21.662 16.967-21.552Q16.861-21.443 16.705-21.443Q16.549-21.443 16.439-21.552Q16.330-21.662 16.330-21.818Q16.330-21.978 16.435-22.083Q16.111-22.083 15.896-21.855Q15.682-21.626 15.586-21.287Q15.490-20.947 15.490-20.642L15.490-19.369Q15.490-19.201 15.717-19.154Q15.943-19.107 16.248-19.107L16.248-18.810M17.553-20.564Q17.553-21.044 17.785-21.460Q18.017-21.876 18.428-22.126Q18.838-22.376 19.314-22.376Q20.045-22.376 20.443-21.935Q20.842-21.494 20.842-20.763Q20.842-20.658 20.748-20.634L18.299-20.634L18.299-20.564Q18.299-20.154 18.420-19.798Q18.541-19.443 18.812-19.226Q19.084-19.009 19.514-19.009Q19.877-19.009 20.174-19.238Q20.471-19.466 20.572-19.818Q20.580-19.865 20.666-19.880L20.748-19.880Q20.842-19.853 20.842-19.771Q20.842-19.763 20.834-19.732Q20.771-19.505 20.633-19.322Q20.494-19.138 20.303-19.005Q20.111-18.872 19.892-18.802Q19.674-18.732 19.435-18.732Q19.064-18.732 18.726-18.869Q18.389-19.005 18.121-19.257Q17.853-19.509 17.703-19.849Q17.553-20.189 17.553-20.564M18.307-20.872L20.267-20.872Q20.267-21.177 20.166-21.468Q20.064-21.759 19.848-21.941Q19.631-22.122 19.314-22.122Q19.014-22.122 18.783-21.935Q18.553-21.747 18.430-21.456Q18.307-21.165 18.307-20.872M23.260-18.810L21.404-18.810L21.404-19.107Q21.678-19.107 21.846-19.154Q22.014-19.201 22.014-19.369L22.014-21.505Q22.014-21.720 21.951-21.816Q21.889-21.912 21.769-21.933Q21.650-21.955 21.404-21.955L21.404-22.251L22.596-22.337L22.596-21.603Q22.709-21.818 22.902-21.986Q23.096-22.154 23.334-22.246Q23.572-22.337 23.826-22.337Q24.994-22.337 24.994-21.259L24.994-19.369Q24.994-19.201 25.164-19.154Q25.334-19.107 25.603-19.107L25.603-18.810L23.748-18.810L23.748-19.107Q24.021-19.107 24.189-19.154Q24.357-19.201 24.357-19.369L24.357-21.244Q24.357-21.626 24.236-21.855Q24.115-22.083 23.764-22.083Q23.451-22.083 23.197-21.921Q22.943-21.759 22.797-21.490Q22.650-21.220 22.650-20.923L22.650-19.369Q22.650-19.201 22.820-19.154Q22.990-19.107 23.260-19.107",[867],[851,2905,2906],{"transform":2899},[856,2907],{"d":2908,"fill":853,"stroke":853,"className":2909,"style":952},"M26.449-19.771L26.449-21.962L25.746-21.962L25.746-22.216Q26.102-22.216 26.344-22.449Q26.586-22.681 26.697-23.029Q26.809-23.376 26.809-23.732L27.090-23.732L27.090-22.259L28.266-22.259L28.266-21.962L27.090-21.962L27.090-19.787Q27.090-19.466 27.209-19.238Q27.328-19.009 27.609-19.009Q27.789-19.009 27.906-19.132Q28.023-19.255 28.076-19.435Q28.129-19.615 28.129-19.787L28.129-20.259L28.410-20.259L28.410-19.771Q28.410-19.517 28.305-19.277Q28.199-19.037 28.002-18.884Q27.805-18.732 27.547-18.732Q27.231-18.732 26.979-18.855Q26.727-18.978 26.588-19.212Q26.449-19.447 26.449-19.771",[867],[851,2911,2913],{"transform":2912},"translate(27.308 59.683)",[856,2914],{"d":2915,"fill":853,"stroke":853,"className":2916,"style":952},"M5.959-19.763L5.959-21.505Q5.959-21.720 5.896-21.816Q5.834-21.912 5.715-21.933Q5.596-21.955 5.349-21.955L5.349-22.251L6.596-22.337L6.596-19.787L6.596-19.763Q6.596-19.451 6.650-19.289Q6.705-19.126 6.855-19.056Q7.006-18.986 7.326-18.986Q7.756-18.986 8.029-19.324Q8.303-19.662 8.303-20.107L8.303-21.505Q8.303-21.720 8.240-21.816Q8.178-21.912 8.058-21.933Q7.939-21.955 7.693-21.955L7.693-22.251L8.939-22.337L8.939-19.552Q8.939-19.341 9.002-19.246Q9.064-19.150 9.183-19.128Q9.303-19.107 9.549-19.107L9.549-18.810L8.326-18.732L8.326-19.353Q8.158-19.064 7.877-18.898Q7.596-18.732 7.275-18.732Q5.959-18.732 5.959-19.763M11.924-18.810L10.068-18.810L10.068-19.107Q10.342-19.107 10.510-19.154Q10.678-19.201 10.678-19.369L10.678-21.505Q10.678-21.720 10.615-21.816Q10.553-21.912 10.433-21.933Q10.314-21.955 10.068-21.955L10.068-22.251L11.260-22.337L11.260-21.603Q11.373-21.818 11.566-21.986Q11.760-22.154 11.998-22.246Q12.236-22.337 12.490-22.337Q13.658-22.337 13.658-21.259L13.658-19.369Q13.658-19.201 13.828-19.154Q13.998-19.107 14.267-19.107L14.267-18.810L12.412-18.810L12.412-19.107Q12.685-19.107 12.853-19.154Q13.021-19.201 13.021-19.369L13.021-21.244Q13.021-21.626 12.900-21.855Q12.779-22.083 12.428-22.083Q12.115-22.083 11.861-21.921Q11.607-21.759 11.461-21.490Q11.314-21.220 11.314-20.923L11.314-19.369Q11.314-19.201 11.484-19.154Q11.654-19.107 11.924-19.107L11.924-18.810M14.756-20.537Q14.756-21.033 15.006-21.458Q15.256-21.884 15.676-22.130Q16.096-22.376 16.596-22.376Q17.135-22.376 17.525-22.251Q17.916-22.126 17.916-21.712Q17.916-21.607 17.865-21.515Q17.814-21.423 17.723-21.372Q17.631-21.322 17.521-21.322Q17.416-21.322 17.324-21.372Q17.232-21.423 17.182-21.515Q17.131-21.607 17.131-21.712Q17.131-21.935 17.299-22.040Q17.076-22.099 16.603-22.099Q16.307-22.099 16.092-21.960Q15.877-21.822 15.746-21.591Q15.615-21.361 15.557-21.091Q15.498-20.822 15.498-20.537Q15.498-20.142 15.631-19.792Q15.764-19.443 16.035-19.226Q16.307-19.009 16.705-19.009Q17.080-19.009 17.355-19.226Q17.631-19.443 17.732-19.802Q17.748-19.865 17.810-19.865L17.916-19.865Q17.951-19.865 17.976-19.837Q18.002-19.810 18.002-19.771L18.002-19.747Q17.869-19.267 17.484-18.999Q17.099-18.732 16.596-18.732Q16.232-18.732 15.898-18.869Q15.564-19.005 15.305-19.255Q15.045-19.505 14.900-19.841Q14.756-20.177 14.756-20.537M20.404-18.810L18.572-18.810L18.572-19.107Q18.846-19.107 19.014-19.154Q19.182-19.201 19.182-19.369L19.182-23.529Q19.182-23.744 19.119-23.839Q19.057-23.935 18.937-23.956Q18.818-23.978 18.572-23.978L18.572-24.275L19.795-24.361L19.795-19.369Q19.795-19.201 19.963-19.154Q20.131-19.107 20.404-19.107L20.404-18.810M20.849-20.564Q20.849-21.044 21.082-21.460Q21.314-21.876 21.724-22.126Q22.135-22.376 22.611-22.376Q23.342-22.376 23.740-21.935Q24.139-21.494 24.139-20.763Q24.139-20.658 24.045-20.634L21.596-20.634L21.596-20.564Q21.596-20.154 21.717-19.798Q21.838-19.443 22.109-19.226Q22.381-19.009 22.810-19.009Q23.174-19.009 23.471-19.238Q23.767-19.466 23.869-19.818Q23.877-19.865 23.963-19.880L24.045-19.880Q24.139-19.853 24.139-19.771Q24.139-19.763 24.131-19.732Q24.068-19.505 23.930-19.322Q23.791-19.138 23.599-19.005Q23.408-18.872 23.189-18.802Q22.971-18.732 22.732-18.732Q22.361-18.732 22.023-18.869Q21.685-19.005 21.418-19.257Q21.150-19.509 21-19.849Q20.849-20.189 20.849-20.564M21.603-20.872L23.564-20.872Q23.564-21.177 23.463-21.468Q23.361-21.759 23.144-21.941Q22.928-22.122 22.611-22.122Q22.310-22.122 22.080-21.935Q21.849-21.747 21.726-21.456Q21.603-21.165 21.603-20.872",[867],[851,2918,2920],{"transform":2919},"translate(91.635 31.578)",[856,2921],{"d":2922,"fill":853,"stroke":853,"className":2923,"style":2838},"M7.520-18.810L5.287-18.810L5.287-19.126Q5.599-19.126 5.791-19.179Q5.982-19.232 5.982-19.421L5.982-21.869Q5.982-22.110 5.912-22.218Q5.841-22.326 5.707-22.350Q5.573-22.374 5.287-22.374L5.287-22.690L6.601-22.787L6.601-21.926Q6.764-22.317 7.032-22.552Q7.300-22.787 7.691-22.787Q7.964-22.787 8.179-22.624Q8.394-22.462 8.394-22.203Q8.394-22.027 8.276-21.908Q8.157-21.789 7.981-21.789Q7.801-21.789 7.683-21.908Q7.564-22.027 7.564-22.203Q7.564-22.418 7.718-22.528L7.700-22.528Q7.322-22.528 7.089-22.266Q6.856-22.005 6.757-21.618Q6.659-21.231 6.659-20.871L6.659-19.421Q6.659-19.232 6.916-19.179Q7.173-19.126 7.520-19.126L7.520-18.810M10.965-18.709Q10.407-18.709 9.935-18.992Q9.462-19.276 9.188-19.753Q8.913-20.229 8.913-20.783Q8.913-21.179 9.056-21.554Q9.199-21.930 9.456-22.218Q9.713-22.506 10.071-22.675Q10.429-22.844 10.833-22.844Q11.378-22.844 11.750-22.607Q12.121-22.370 12.308-21.952Q12.495-21.535 12.495-20.998Q12.495-20.946 12.470-20.908Q12.446-20.871 12.398-20.871L9.726-20.871L9.726-20.792Q9.726-20.045 10.038-19.522Q10.350-18.999 11.049-18.999Q11.453-18.999 11.774-19.256Q12.095-19.513 12.218-19.917Q12.235-19.997 12.319-19.997L12.398-19.997Q12.437-19.997 12.466-19.966Q12.495-19.935 12.495-19.891L12.495-19.856Q12.389-19.513 12.167-19.254Q11.945-18.995 11.631-18.852Q11.317-18.709 10.965-18.709M9.735-21.122L11.849-21.122Q11.849-21.390 11.796-21.636Q11.743-21.882 11.622-22.104Q11.501-22.326 11.304-22.453Q11.106-22.581 10.833-22.581Q10.491-22.581 10.238-22.356Q9.985-22.132 9.860-21.794Q9.735-21.456 9.735-21.122M15.079-18.709Q14.529-18.709 14.070-18.988Q13.611-19.267 13.343-19.737Q13.075-20.207 13.075-20.752Q13.075-21.165 13.224-21.543Q13.373-21.921 13.648-22.216Q13.923-22.510 14.292-22.677Q14.661-22.844 15.079-22.844Q15.412-22.844 15.733-22.778Q16.054-22.712 16.283-22.526Q16.511-22.339 16.511-22.014Q16.511-21.838 16.384-21.710Q16.256-21.583 16.080-21.583Q15.896-21.583 15.766-21.708Q15.637-21.833 15.637-22.014Q15.637-22.150 15.711-22.262Q15.786-22.374 15.918-22.427Q15.610-22.554 15.079-22.554Q14.643-22.554 14.375-22.277Q14.107-22 13.995-21.585Q13.883-21.170 13.883-20.752Q13.883-20.322 14.022-19.920Q14.160-19.518 14.454-19.258Q14.749-18.999 15.188-18.999Q15.610-18.999 15.913-19.249Q16.217-19.500 16.322-19.909Q16.331-19.939 16.355-19.964Q16.379-19.988 16.410-19.988L16.520-19.988Q16.608-19.988 16.608-19.873Q16.463-19.337 16.050-19.023Q15.637-18.709 15.079-18.709M17.131-20.717Q17.131-21.284 17.403-21.772Q17.676-22.260 18.146-22.552Q18.616-22.844 19.183-22.844Q19.605-22.844 19.981-22.675Q20.356-22.506 20.633-22.214Q20.910-21.921 21.068-21.526Q21.226-21.130 21.226-20.717Q21.226-20.168 20.947-19.706Q20.668-19.245 20.200-18.977Q19.732-18.709 19.183-18.709Q18.629-18.709 18.159-18.977Q17.689-19.245 17.410-19.706Q17.131-20.168 17.131-20.717M19.183-18.999Q19.680-18.999 19.956-19.260Q20.233-19.522 20.326-19.926Q20.418-20.331 20.418-20.827Q20.418-21.302 20.319-21.691Q20.220-22.080 19.948-22.330Q19.675-22.581 19.183-22.581Q18.471-22.581 18.207-22.086Q17.944-21.592 17.944-20.827Q17.944-20.027 18.199-19.513Q18.454-18.999 19.183-18.999M23.859-18.810L21.798-18.810L21.798-19.126Q22.105-19.126 22.297-19.179Q22.488-19.232 22.488-19.421L22.488-24.136Q22.488-24.378 22.417-24.486Q22.347-24.593 22.213-24.617Q22.079-24.642 21.798-24.642L21.798-24.958L23.164-25.055L23.164-19.421Q23.164-19.232 23.358-19.179Q23.551-19.126 23.859-19.126L23.859-18.810M24.316-20.717Q24.316-21.284 24.588-21.772Q24.861-22.260 25.331-22.552Q25.801-22.844 26.368-22.844Q26.790-22.844 27.166-22.675Q27.541-22.506 27.818-22.214Q28.095-21.921 28.253-21.526Q28.412-21.130 28.412-20.717Q28.412-20.168 28.132-19.706Q27.853-19.245 27.385-18.977Q26.917-18.709 26.368-18.709Q25.814-18.709 25.344-18.977Q24.874-19.245 24.595-19.706Q24.316-20.168 24.316-20.717M26.368-18.999Q26.865-18.999 27.141-19.260Q27.418-19.522 27.511-19.926Q27.603-20.331 27.603-20.827Q27.603-21.302 27.504-21.691Q27.405-22.080 27.133-22.330Q26.860-22.581 26.368-22.581Q25.656-22.581 25.392-22.086Q25.129-21.592 25.129-20.827Q25.129-20.027 25.384-19.513Q25.639-18.999 26.368-18.999M31.158-18.810L28.926-18.810L28.926-19.126Q29.238-19.126 29.429-19.179Q29.620-19.232 29.620-19.421L29.620-21.869Q29.620-22.110 29.550-22.218Q29.479-22.326 29.345-22.350Q29.211-22.374 28.926-22.374L28.926-22.690L30.240-22.787L30.240-21.926Q30.402-22.317 30.670-22.552Q30.938-22.787 31.329-22.787Q31.602-22.787 31.817-22.624Q32.033-22.462 32.033-22.203Q32.033-22.027 31.914-21.908Q31.795-21.789 31.620-21.789Q31.439-21.789 31.321-21.908Q31.202-22.027 31.202-22.203Q31.202-22.418 31.356-22.528L31.338-22.528Q30.960-22.528 30.727-22.266Q30.495-22.005 30.396-21.618Q30.297-21.231 30.297-20.871L30.297-19.421Q30.297-19.232 30.554-19.179Q30.811-19.126 31.158-19.126",[867],[851,2925,2927,2930],{"style":2926},"stroke-width:1.2",[856,2928],{"fill":858,"d":2929},"M90.395 26.715h38.634",[856,2931],{"fill":858,"d":2932,"style":944},"M126.589 22.87c.555 2.307 1.793 3.396 3.04 3.845-1.247.448-2.485 1.538-3.04 3.845",[851,2934,2935,2938],{"stroke":1438,"style":2841},[856,2936],{"fill":858,"d":2937},"M191.402-18.81c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.958 0",[851,2939,2941],{"transform":2940},"translate(172.786 3.075)",[856,2942],{"d":2836,"fill":1438,"stroke":1438,"className":2943,"style":2838},[867],[856,2945],{"fill":858,"d":2946},"M154.414 12.488c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,2948,2950],{"transform":2949},"translate(135.823 34.373)",[856,2951],{"d":2850,"fill":853,"stroke":853,"className":2952,"style":2838},[867],[856,2954],{"fill":858,"d":2955},"M173.613-12.184 152.21 5.926",[851,2957,2958,2961],{"stroke":1438,"style":2841},[856,2959],{"fill":858,"d":2960},"M135.92 43.786c0-5.5-4.46-9.958-9.96-9.958s-9.958 4.458-9.958 9.958 4.459 9.959 9.959 9.959 9.958-4.459 9.958-9.959Zm-9.96 0",[851,2962,2964],{"transform":2963},"translate(118.579 64.534)",[856,2965],{"d":2865,"fill":1438,"stroke":1438,"className":2966,"style":2838},[867],[856,2968],{"fill":858,"d":2969},"m139.288 21.234-8.109 13.721M172.908 43.786c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[851,2971,2973],{"transform":2972},"translate(155.517 65.721)",[856,2974],{"d":2875,"fill":853,"stroke":853,"className":2975,"style":2838},[867],[856,2977],{"fill":858,"d":2978},"m149.623 21.234 8.159 13.807M228.39 12.488c0-5.5-4.458-9.958-9.958-9.958s-9.958 4.458-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.958 0",[851,2980,2982],{"transform":2981},"translate(210.956 32.36)",[856,2983],{"d":2890,"fill":853,"stroke":853,"className":2984,"style":2838},[867],[856,2986],{"fill":858,"d":2987},"m189.274-12.184 21.404 18.11",[851,2989,2991,2998],{"fill":2990,"stroke":858,"fontFamily":955,"fontSize":956},"var(--tk-accent)",[851,2992,2994],{"transform":2993},"translate(151.497 -25.675)",[856,2995],{"d":2996,"fill":2990,"stroke":2990,"className":2997,"style":952},"M7.205-18.810L5.349-18.810L5.349-19.107Q5.623-19.107 5.791-19.154Q5.959-19.201 5.959-19.369L5.959-21.505Q5.959-21.720 5.896-21.816Q5.834-21.912 5.715-21.933Q5.596-21.955 5.349-21.955L5.349-22.251L6.541-22.337L6.541-21.603Q6.654-21.818 6.848-21.986Q7.041-22.154 7.279-22.246Q7.517-22.337 7.771-22.337Q8.939-22.337 8.939-21.259L8.939-19.369Q8.939-19.201 9.109-19.154Q9.279-19.107 9.549-19.107L9.549-18.810L7.693-18.810L7.693-19.107Q7.967-19.107 8.135-19.154Q8.303-19.201 8.303-19.369L8.303-21.244Q8.303-21.626 8.182-21.855Q8.060-22.083 7.709-22.083Q7.396-22.083 7.142-21.921Q6.889-21.759 6.742-21.490Q6.596-21.220 6.596-20.923L6.596-19.369Q6.596-19.201 6.766-19.154Q6.935-19.107 7.205-19.107L7.205-18.810M9.994-20.564Q9.994-21.044 10.226-21.460Q10.459-21.876 10.869-22.126Q11.279-22.376 11.756-22.376Q12.486-22.376 12.885-21.935Q13.283-21.494 13.283-20.763Q13.283-20.658 13.189-20.634L10.740-20.634L10.740-20.564Q10.740-20.154 10.861-19.798Q10.982-19.443 11.254-19.226Q11.525-19.009 11.955-19.009Q12.318-19.009 12.615-19.238Q12.912-19.466 13.014-19.818Q13.021-19.865 13.107-19.880L13.189-19.880Q13.283-19.853 13.283-19.771Q13.283-19.763 13.275-19.732Q13.213-19.505 13.074-19.322Q12.935-19.138 12.744-19.005Q12.553-18.872 12.334-18.802Q12.115-18.732 11.877-18.732Q11.506-18.732 11.168-18.869Q10.830-19.005 10.562-19.257Q10.295-19.509 10.144-19.849Q9.994-20.189 9.994-20.564M10.748-20.872L12.709-20.872Q12.709-21.177 12.607-21.468Q12.506-21.759 12.289-21.941Q12.072-22.122 11.756-22.122Q11.455-22.122 11.224-21.935Q10.994-21.747 10.871-21.456Q10.748-21.165 10.748-20.872M15.357-18.841L14.287-21.697Q14.221-21.876 14.090-21.919Q13.959-21.962 13.701-21.962L13.701-22.259L15.381-22.259L15.381-21.962Q14.932-21.962 14.932-21.763Q14.935-21.747 14.937-21.730Q14.939-21.712 14.939-21.697L15.732-19.603L16.443-21.513Q16.408-21.607 16.408-21.652Q16.408-21.697 16.373-21.697Q16.307-21.876 16.176-21.919Q16.045-21.962 15.791-21.962L15.791-22.259L17.381-22.259L17.381-21.962Q16.932-21.962 16.932-21.763Q16.935-21.744 16.937-21.726Q16.939-21.708 16.939-21.697L17.771-19.482L18.525-21.482Q18.549-21.540 18.549-21.611Q18.549-21.771 18.412-21.867Q18.275-21.962 18.107-21.962L18.107-22.259L19.494-22.259L19.494-21.962Q19.260-21.962 19.082-21.835Q18.904-21.708 18.822-21.482L17.838-18.841Q17.783-18.732 17.670-18.732L17.611-18.732Q17.498-18.732 17.455-18.841L16.596-21.115L15.740-18.841Q15.701-18.732 15.580-18.732L15.525-18.732Q15.412-18.732 15.357-18.841",[867],[851,2999,3000],{"transform":2993},[856,3001],{"d":3002,"fill":2990,"stroke":2990,"className":3003,"style":952},"M24.548-18.841L23.325-21.697Q23.243-21.872 23.099-21.917Q22.954-21.962 22.685-21.962L22.685-22.259L24.396-22.259L24.396-21.962Q23.974-21.962 23.974-21.779Q23.974-21.744 23.989-21.697L24.935-19.505L25.775-21.482Q25.814-21.560 25.814-21.650Q25.814-21.790 25.708-21.876Q25.603-21.962 25.462-21.962L25.462-22.259L26.814-22.259L26.814-21.962Q26.290-21.962 26.075-21.482L24.950-18.841Q24.888-18.732 24.782-18.732L24.716-18.732Q24.603-18.732 24.548-18.841M29.087-18.810L27.310-18.810L27.310-19.107Q27.583-19.107 27.751-19.154Q27.919-19.201 27.919-19.369L27.919-21.505Q27.919-21.720 27.863-21.816Q27.806-21.912 27.693-21.933Q27.579-21.955 27.333-21.955L27.333-22.251L28.532-22.337L28.532-19.369Q28.532-19.201 28.679-19.154Q28.825-19.107 29.087-19.107L29.087-18.810M27.646-23.732Q27.646-23.923 27.780-24.054Q27.915-24.185 28.111-24.185Q28.232-24.185 28.335-24.122Q28.439-24.060 28.501-23.956Q28.564-23.853 28.564-23.732Q28.564-23.537 28.433-23.402Q28.302-23.267 28.111-23.267Q27.911-23.267 27.779-23.400Q27.646-23.533 27.646-23.732M29.587-20.505Q29.587-21.009 29.843-21.441Q30.099-21.872 30.534-22.124Q30.970-22.376 31.470-22.376Q31.857-22.376 32.198-22.232Q32.540-22.087 32.802-21.826Q33.064-21.564 33.206-21.228Q33.349-20.892 33.349-20.505Q33.349-20.013 33.085-19.603Q32.822-19.193 32.392-18.962Q31.962-18.732 31.470-18.732Q30.978-18.732 30.544-18.964Q30.111-19.197 29.849-19.605Q29.587-20.013 29.587-20.505M31.470-19.009Q31.927-19.009 32.179-19.232Q32.431-19.455 32.519-19.806Q32.607-20.158 32.607-20.603Q32.607-21.033 32.513-21.371Q32.419-21.708 32.165-21.915Q31.911-22.122 31.470-22.122Q30.822-22.122 30.577-21.706Q30.333-21.290 30.333-20.603Q30.333-20.158 30.421-19.806Q30.509-19.455 30.761-19.232Q31.013-19.009 31.470-19.009M35.747-18.810L33.915-18.810L33.915-19.107Q34.189-19.107 34.357-19.154Q34.525-19.201 34.525-19.369L34.525-23.529Q34.525-23.744 34.462-23.839Q34.400-23.935 34.280-23.956Q34.161-23.978 33.915-23.978L33.915-24.275L35.138-24.361L35.138-19.369Q35.138-19.201 35.306-19.154Q35.474-19.107 35.747-19.107L35.747-18.810M36.290-19.642Q36.290-20.126 36.693-20.421Q37.095-20.716 37.646-20.835Q38.197-20.955 38.689-20.955L38.689-21.244Q38.689-21.470 38.573-21.677Q38.458-21.884 38.261-22.003Q38.064-22.122 37.833-22.122Q37.407-22.122 37.122-22.017Q37.193-21.990 37.239-21.935Q37.286-21.880 37.312-21.810Q37.337-21.740 37.337-21.665Q37.337-21.560 37.286-21.468Q37.236-21.376 37.144-21.326Q37.052-21.275 36.947-21.275Q36.841-21.275 36.749-21.326Q36.657-21.376 36.607-21.468Q36.556-21.560 36.556-21.665Q36.556-22.083 36.945-22.230Q37.333-22.376 37.833-22.376Q38.165-22.376 38.519-22.246Q38.872-22.115 39.101-21.861Q39.329-21.607 39.329-21.259L39.329-19.458Q39.329-19.326 39.402-19.216Q39.474-19.107 39.603-19.107Q39.728-19.107 39.796-19.212Q39.864-19.318 39.864-19.458L39.864-19.970L40.146-19.970L40.146-19.458Q40.146-19.255 40.029-19.097Q39.911-18.939 39.730-18.855Q39.548-18.771 39.345-18.771Q39.114-18.771 38.962-18.943Q38.810-19.115 38.779-19.345Q38.618-19.064 38.310-18.898Q38.001-18.732 37.650-18.732Q37.138-18.732 36.714-18.955Q36.290-19.177 36.290-19.642M36.978-19.642Q36.978-19.357 37.204-19.171Q37.431-18.986 37.724-18.986Q37.970-18.986 38.195-19.103Q38.419-19.220 38.554-19.423Q38.689-19.626 38.689-19.880L38.689-20.712Q38.423-20.712 38.138-20.658Q37.853-20.603 37.581-20.474Q37.310-20.345 37.144-20.138Q36.978-19.931 36.978-19.642M41.064-19.771L41.064-21.962L40.361-21.962L40.361-22.216Q40.716-22.216 40.958-22.449Q41.200-22.681 41.312-23.029Q41.423-23.376 41.423-23.732L41.704-23.732L41.704-22.259L42.880-22.259L42.880-21.962L41.704-21.962L41.704-19.787Q41.704-19.466 41.823-19.238Q41.943-19.009 42.224-19.009Q42.404-19.009 42.521-19.132Q42.638-19.255 42.691-19.435Q42.743-19.615 42.743-19.787L42.743-20.259L43.025-20.259L43.025-19.771Q43.025-19.517 42.919-19.277Q42.814-19.037 42.616-18.884Q42.419-18.732 42.161-18.732Q41.845-18.732 41.593-18.855Q41.341-18.978 41.202-19.212Q41.064-19.447 41.064-19.771M45.603-18.810L43.825-18.810L43.825-19.107Q44.099-19.107 44.267-19.154Q44.435-19.201 44.435-19.369L44.435-21.505Q44.435-21.720 44.378-21.816Q44.322-21.912 44.208-21.933Q44.095-21.955 43.849-21.955L43.849-22.251L45.048-22.337L45.048-19.369Q45.048-19.201 45.195-19.154Q45.341-19.107 45.603-19.107L45.603-18.810M44.161-23.732Q44.161-23.923 44.296-24.054Q44.431-24.185 44.626-24.185Q44.747-24.185 44.851-24.122Q44.954-24.060 45.017-23.956Q45.079-23.853 45.079-23.732Q45.079-23.537 44.948-23.402Q44.818-23.267 44.626-23.267Q44.427-23.267 44.294-23.400Q44.161-23.533 44.161-23.732M46.103-20.505Q46.103-21.009 46.359-21.441Q46.614-21.872 47.050-22.124Q47.486-22.376 47.986-22.376Q48.372-22.376 48.714-22.232Q49.056-22.087 49.318-21.826Q49.579-21.564 49.722-21.228Q49.864-20.892 49.864-20.505Q49.864-20.013 49.601-19.603Q49.337-19.193 48.907-18.962Q48.478-18.732 47.986-18.732Q47.493-18.732 47.060-18.964Q46.626-19.197 46.364-19.605Q46.103-20.013 46.103-20.505M47.986-19.009Q48.443-19.009 48.695-19.232Q48.947-19.455 49.034-19.806Q49.122-20.158 49.122-20.603Q49.122-21.033 49.029-21.371Q48.935-21.708 48.681-21.915Q48.427-22.122 47.986-22.122Q47.337-22.122 47.093-21.706Q46.849-21.290 46.849-20.603Q46.849-20.158 46.937-19.806Q47.025-19.455 47.277-19.232Q47.529-19.009 47.986-19.009M52.279-18.810L50.423-18.810L50.423-19.107Q50.697-19.107 50.864-19.154Q51.032-19.201 51.032-19.369L51.032-21.505Q51.032-21.720 50.970-21.816Q50.907-21.912 50.788-21.933Q50.669-21.955 50.423-21.955L50.423-22.251L51.614-22.337L51.614-21.603Q51.728-21.818 51.921-21.986Q52.114-22.154 52.353-22.246Q52.591-22.337 52.845-22.337Q54.013-22.337 54.013-21.259L54.013-19.369Q54.013-19.201 54.183-19.154Q54.353-19.107 54.622-19.107L54.622-18.810L52.767-18.810L52.767-19.107Q53.040-19.107 53.208-19.154Q53.376-19.201 53.376-19.369L53.376-21.244Q53.376-21.626 53.255-21.855Q53.134-22.083 52.782-22.083Q52.470-22.083 52.216-21.921Q51.962-21.759 51.816-21.490Q51.669-21.220 51.669-20.923L51.669-19.369Q51.669-19.201 51.839-19.154Q52.009-19.107 52.279-19.107",[867],[851,3005,3006,3009],{"fill":2990,"stroke":2990,"style":937},[856,3007],{"fill":858,"d":3008},"M181.444-38.727v8.859",[856,3010],{"fill":858,"d":3011,"style":944},"M184.566-32.028c-1.873.468-2.758 1.51-3.122 2.56-.365-1.05-1.25-2.092-3.123-2.56",[1040,3013,3015,3016,3031,3032],{"className":3014},[1043],"Insert-fixup Case 1 — a red uncle ",[390,3017,3019],{"className":3018},[393],[390,3020,3022],{"className":3021,"ariaHidden":398},[397],[390,3023,3025,3028],{"className":3024},[402],[390,3026],{"className":3027,"style":650},[406],[390,3029,655],{"className":3030,"style":654},[411,412]," lets us recolor instead of rotate, pushing the violation up to grandparent ",[390,3033,3035],{"className":3034},[393],[390,3036,3038],{"className":3037,"ariaHidden":398},[397],[390,3039,3041,3044,3047,3050,3053,3056],{"className":3040},[402],[390,3042],{"className":3043,"style":650},[406],[390,3045,2769],{"className":3046,"style":2768},[411,412],[390,3048,621],{"className":3049},[411],[390,3051,381],{"className":3052},[411,412],[390,3054,621],{"className":3055},[411],[390,3057,381],{"className":3058},[411,412],[1607,3060,3062],{"type":3061},"note",[381,3063,3064,3067,3068,3071,3072,3166],{},[498,3065,3066],{},"Intuition."," Red nodes are ",[728,3069,3070],{},"free riders"," inserted between black levels; the\nno-two-reds rule keeps them from stacking, and the equal-black-height rule\nkeeps the black skeleton perfectly balanced. The black skeleton has height\n",[390,3073,3075],{"className":3074},[393],[390,3076,3078,3090,3154],{"className":3077,"ariaHidden":398},[397],[390,3079,3081,3084,3087],{"className":3080},[402],[390,3082],{"className":3083,"style":2298},[406],[390,3085,2484],{"className":3086},[529],[390,3088],{"className":3089,"style":525},[462],[390,3091,3093,3096,3139,3142,3145,3148,3151],{"className":3092},[402],[390,3094],{"className":3095,"style":407},[406],[390,3097,3099,3105],{"className":3098},[452],[390,3100,3102],{"className":3101},[452],[390,3103,458],{"className":3104,"style":457},[411,456],[390,3106,3108],{"className":3107},[756],[390,3109,3111,3131],{"className":3110},[760,761],[390,3112,3114,3128],{"className":3113},[765],[390,3115,3117],{"className":3116,"style":2521},[769],[390,3118,3119,3122],{"style":2524},[390,3120],{"className":3121,"style":778},[777],[390,3123,3125],{"className":3124},[782,783,784,785],[390,3126,789],{"className":3127},[411,785],[390,3129,794],{"className":3130},[793],[390,3132,3134],{"className":3133},[765],[390,3135,3137],{"className":3136,"style":2543},[769],[390,3138],{},[390,3140,419],{"className":3141},[418],[390,3143,467],{"className":3144},[411,412],[390,3146],{"className":3147,"style":1691},[462],[390,3149,2129],{"className":3150},[1695],[390,3152],{"className":3153,"style":1691},[462],[390,3155,3157,3160,3163],{"className":3156},[402],[390,3158],{"className":3159,"style":407},[406],[390,3161,575],{"className":3162},[411],[390,3164,428],{"className":3165},[427],", and reds at most double it.",[381,3168,3169,3170,3204,3205,3238],{},"The payoff is starkest on the worst possible input for a plain BST: keys\narriving already sorted. A naive tree threads them into a single descending path\nof height ",[390,3171,3173],{"className":3172},[393],[390,3174,3176,3195],{"className":3175,"ariaHidden":398},[397],[390,3177,3179,3183,3186,3189,3192],{"className":3178},[402],[390,3180],{"className":3181,"style":3182},[406],"height:0.6667em;vertical-align:-0.0833em;",[390,3184,467],{"className":3185},[411,412],[390,3187],{"className":3188,"style":1691},[462],[390,3190,1696],{"className":3191},[1695],[390,3193],{"className":3194,"style":1691},[462],[390,3196,3198,3201],{"className":3197},[402],[390,3199],{"className":3200,"style":1706},[406],[390,3202,575],{"className":3203},[411],"; the red-black invariants instead rebalance on the fly into a\nbushy tree of height ",[390,3206,3208],{"className":3207},[393],[390,3209,3211],{"className":3210,"ariaHidden":398},[397],[390,3212,3214,3217,3220,3223,3229,3232,3235],{"className":3213},[402],[390,3215],{"className":3216,"style":407},[406],[390,3218,414],{"className":3219,"style":413},[411,412],[390,3221,419],{"className":3222},[418],[390,3224,3226],{"className":3225},[452],[390,3227,458],{"className":3228,"style":457},[411,456],[390,3230],{"className":3231,"style":463},[462],[390,3233,467],{"className":3234},[411,412],[390,3236,428],{"className":3237},[427],", with every root-to-leaf path carrying the same\nblack-height.",[838,3240,3242,3531],{"className":3241},[841,842],[844,3243,3247],{"xmlns":846,"width":3244,"height":3245,"viewBox":3246},"298.289","285.601","-75 -75 223.717 214.201",[851,3248,3249,3252,3259,3262,3269,3272,3279,3282,3289,3292,3299,3302,3309,3312,3319,3322,3325,3328,3331,3334,3337,3340,3343,3346,3349,3352,3355,3388,3391,3397,3400,3406,3409,3420,3423,3434,3437,3443,3446,3457,3460,3471,3474],{"stroke":853,"style":854},[856,3250],{"fill":858,"d":3251},"M-46.91-6.675a9.247 9.247 0 0 0-9.246-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.246 0",[851,3253,3255],{"transform":3254},"translate(-2.312 2.9)",[856,3256],{"d":3257,"fill":853,"stroke":853,"className":3258,"style":2838},"M-52.249-6.675L-55.281-6.675L-55.281-6.991Q-54.130-6.991-54.130-7.286L-54.130-12.010Q-54.618-11.777-55.339-11.777L-55.339-12.093Q-54.209-12.093-53.647-12.669L-53.502-12.669Q-53.467-12.669-53.434-12.636Q-53.401-12.603-53.401-12.568L-53.401-7.286Q-53.401-6.991-52.249-6.991",[867],[856,3260],{"fill":858,"d":3261},"M-29.269 15.518a9.247 9.247 0 0 0-9.247-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3263,3265],{"transform":3264},"translate(15.328 25.093)",[856,3266],{"d":3267,"fill":853,"stroke":853,"className":3268,"style":2838},"M-52.249-6.675L-55.699-6.675L-55.699-6.908Q-55.699-6.921-55.668-6.952L-54.214-8.529Q-53.748-9.026-53.495-9.331Q-53.242-9.637-53.051-10.048Q-52.860-10.459-52.860-10.898Q-52.860-11.487-53.183-11.920Q-53.506-12.353-54.086-12.353Q-54.350-12.353-54.596-12.243Q-54.842-12.133-55.018-11.946Q-55.194-11.759-55.290-11.509L-55.211-11.509Q-55.009-11.509-54.866-11.373Q-54.723-11.237-54.723-11.021Q-54.723-10.815-54.866-10.676Q-55.009-10.538-55.211-10.538Q-55.413-10.538-55.556-10.681Q-55.699-10.823-55.699-11.021Q-55.699-11.483-55.462-11.856Q-55.224-12.230-54.824-12.449Q-54.425-12.669-53.976-12.669Q-53.453-12.669-52.999-12.454Q-52.544-12.238-52.271-11.839Q-51.999-11.439-51.999-10.898Q-51.999-10.503-52.170-10.149Q-52.342-9.795-52.607-9.516Q-52.873-9.237-53.324-8.852Q-53.774-8.468-53.853-8.393L-54.877-7.431L-54.060-7.431Q-53.409-7.431-52.972-7.442Q-52.535-7.453-52.504-7.475Q-52.434-7.558-52.379-7.798Q-52.324-8.037-52.284-8.305L-51.999-8.305",[867],[856,3270],{"fill":858,"d":3271},"M-11.628 37.711a9.247 9.247 0 0 0-9.247-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.248 9.247 9.247 0 0 0 9.247-9.248Zm-9.247 0",[851,3273,3275],{"transform":3274},"translate(32.969 47.286)",[856,3276],{"d":3277,"fill":853,"stroke":853,"className":3278,"style":2838},"M-55.255-7.396L-55.299-7.396Q-55.097-7.079-54.710-6.921Q-54.323-6.763-53.897-6.763Q-53.361-6.763-53.122-7.198Q-52.882-7.633-52.882-8.213Q-52.882-8.793-53.128-9.233Q-53.374-9.672-53.906-9.672L-54.526-9.672Q-54.552-9.672-54.585-9.701Q-54.618-9.729-54.618-9.751L-54.618-9.852Q-54.618-9.883-54.589-9.907Q-54.561-9.931-54.526-9.931L-54.007-9.971Q-53.541-9.971-53.295-10.443Q-53.049-10.916-53.049-11.434Q-53.049-11.861-53.262-12.135Q-53.475-12.410-53.897-12.410Q-54.240-12.410-54.565-12.280Q-54.890-12.151-55.075-11.896L-55.049-11.896Q-54.846-11.896-54.710-11.755Q-54.574-11.614-54.574-11.417Q-54.574-11.219-54.708-11.085Q-54.842-10.951-55.040-10.951Q-55.242-10.951-55.380-11.085Q-55.519-11.219-55.519-11.417Q-55.519-12.006-55.016-12.337Q-54.512-12.669-53.897-12.669Q-53.519-12.669-53.117-12.529Q-52.715-12.388-52.447-12.109Q-52.179-11.830-52.179-11.434Q-52.179-10.885-52.533-10.448Q-52.886-10.010-53.427-9.826Q-53.036-9.747-52.691-9.523Q-52.346-9.299-52.135-8.958Q-51.924-8.617-51.924-8.222Q-51.924-7.840-52.087-7.517Q-52.249-7.194-52.541-6.958Q-52.834-6.723-53.181-6.600Q-53.528-6.477-53.897-6.477Q-54.345-6.477-54.776-6.638Q-55.207-6.798-55.488-7.125Q-55.769-7.453-55.769-7.910Q-55.769-8.125-55.622-8.268Q-55.475-8.411-55.255-8.411Q-55.044-8.411-54.899-8.266Q-54.754-8.121-54.754-7.910Q-54.754-7.699-54.901-7.547Q-55.049-7.396-55.255-7.396",[867],[856,3280],{"fill":858,"d":3281},"M6.013 59.905a9.247 9.247 0 0 0-9.248-9.248 9.247 9.247 0 0 0-9.247 9.248 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.248-9.247Zm-9.248 0",[851,3283,3285],{"transform":3284},"translate(50.61 69.48)",[856,3286],{"d":3287,"fill":853,"stroke":853,"className":3288,"style":2838},"M-53.458-8.152L-55.897-8.152L-55.897-8.468L-53.071-12.616Q-53.027-12.669-52.961-12.669L-52.807-12.669Q-52.768-12.669-52.735-12.636Q-52.702-12.603-52.702-12.559L-52.702-8.468L-51.801-8.468L-51.801-8.152L-52.702-8.152L-52.702-7.286Q-52.702-6.991-51.801-6.991L-51.801-6.675L-54.354-6.675L-54.354-6.991Q-53.994-6.991-53.726-7.046Q-53.458-7.101-53.458-7.286L-53.458-8.152M-53.401-11.641L-55.563-8.468L-53.401-8.468",[867],[856,3290],{"fill":858,"d":3291},"M23.653 82.098a9.247 9.247 0 0 0-9.247-9.248 9.247 9.247 0 0 0-9.247 9.248 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3293,3295],{"transform":3294},"translate(68.25 91.672)",[856,3296],{"d":3297,"fill":853,"stroke":853,"className":3298,"style":2838},"M-55.330-7.681Q-55.189-7.268-54.829-7.016Q-54.468-6.763-54.033-6.763Q-53.581-6.763-53.315-7.016Q-53.049-7.268-52.946-7.653Q-52.843-8.037-52.843-8.494Q-52.843-10.195-53.752-10.195Q-54.073-10.195-54.302-10.101Q-54.530-10.006-54.660-9.887Q-54.789-9.769-54.901-9.630Q-55.013-9.492-55.049-9.483L-55.132-9.483Q-55.176-9.483-55.207-9.514Q-55.238-9.545-55.238-9.593L-55.238-12.590Q-55.238-12.621-55.202-12.645Q-55.167-12.669-55.141-12.669L-55.101-12.669Q-54.468-12.379-53.796-12.379Q-53.124-12.379-52.482-12.669L-52.456-12.669Q-52.425-12.669-52.392-12.647Q-52.359-12.625-52.359-12.590L-52.359-12.489Q-52.359-12.485-52.368-12.467Q-52.377-12.449-52.377-12.445Q-52.693-12.050-53.163-11.828Q-53.634-11.606-54.130-11.606Q-54.539-11.606-54.921-11.716L-54.921-9.997Q-54.464-10.454-53.752-10.454Q-53.242-10.454-52.843-10.173Q-52.443-9.892-52.221-9.437Q-51.999-8.982-51.999-8.477Q-51.999-7.927-52.278-7.468Q-52.557-7.009-53.023-6.743Q-53.489-6.477-54.033-6.477Q-54.473-6.477-54.857-6.704Q-55.242-6.930-55.470-7.310Q-55.699-7.690-55.699-8.134Q-55.699-8.327-55.567-8.459Q-55.435-8.591-55.238-8.591Q-55.106-8.591-55.002-8.532Q-54.899-8.472-54.840-8.369Q-54.781-8.266-54.781-8.134Q-54.781-7.936-54.908-7.804Q-55.035-7.673-55.238-7.673Q-55.299-7.673-55.330-7.681",[867],[856,3300],{"fill":858,"d":3301},"M41.294 104.29a9.247 9.247 0 1 0-18.495 0 9.247 9.247 0 0 0 9.248 9.248 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3303,3305],{"transform":3304},"translate(85.89 113.866)",[856,3306],{"d":3307,"fill":853,"stroke":853,"className":3308,"style":2838},"M-53.844-6.477Q-54.578-6.477-55.009-6.958Q-55.440-7.440-55.604-8.132Q-55.769-8.824-55.769-9.571Q-55.769-10.300-55.477-11.023Q-55.185-11.746-54.631-12.208Q-54.077-12.669-53.330-12.669Q-52.834-12.669-52.498-12.403Q-52.161-12.137-52.161-11.654Q-52.161-11.474-52.289-11.346Q-52.416-11.219-52.592-11.219Q-52.772-11.219-52.902-11.344Q-53.031-11.469-53.031-11.654Q-53.031-11.768-52.974-11.872Q-52.917-11.975-52.816-12.034Q-52.715-12.093-52.592-12.093Q-52.588-12.093-52.583-12.091Q-52.579-12.089-52.574-12.085Q-52.689-12.252-52.897-12.331Q-53.106-12.410-53.330-12.410Q-53.774-12.410-54.132-12.109Q-54.490-11.808-54.679-11.355Q-54.912-10.749-54.912-9.716Q-54.741-10.081-54.440-10.309Q-54.139-10.538-53.752-10.538Q-53.348-10.538-53.003-10.371Q-52.658-10.204-52.421-9.923Q-52.183-9.641-52.054-9.279Q-51.924-8.916-51.924-8.512Q-51.924-7.967-52.168-7.501Q-52.412-7.035-52.851-6.756Q-53.291-6.477-53.844-6.477M-53.844-6.763Q-53.383-6.763-53.148-7.020Q-52.913-7.277-52.847-7.651Q-52.781-8.024-52.781-8.494L-52.781-8.529Q-52.781-9.017-52.838-9.382Q-52.895-9.747-53.124-10.010Q-53.352-10.274-53.796-10.274Q-54.165-10.274-54.416-10.030Q-54.666-9.786-54.781-9.422Q-54.895-9.057-54.895-8.710Q-54.895-8.591-54.886-8.529Q-54.886-8.512-54.888-8.501Q-54.890-8.490-54.895-8.477Q-54.895-7.826-54.657-7.295Q-54.420-6.763-53.844-6.763",[867],[856,3310],{"fill":858,"d":3311},"M58.934 126.484a9.247 9.247 0 0 0-9.247-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3313,3315],{"transform":3314},"translate(103.53 136.059)",[856,3316],{"d":3317,"fill":853,"stroke":853,"className":3318,"style":2838},"M-54.534-6.917Q-54.534-7.554-54.378-8.200Q-54.222-8.846-53.930-9.452Q-53.638-10.059-53.229-10.608L-52.412-11.716L-53.440-11.716Q-55.084-11.716-55.132-11.672Q-55.238-11.544-55.356-10.841L-55.642-10.841L-55.347-12.757L-55.057-12.757L-55.057-12.731Q-55.057-12.568-54.493-12.520Q-53.928-12.471-53.383-12.471L-51.665-12.471L-51.665-12.265Q-51.665-12.247-51.667-12.238Q-51.669-12.230-51.674-12.221L-52.961-10.472Q-53.212-10.120-53.359-9.694Q-53.506-9.268-53.572-8.804Q-53.638-8.341-53.651-7.930Q-53.664-7.519-53.664-6.917Q-53.664-6.737-53.790-6.607Q-53.915-6.477-54.095-6.477Q-54.214-6.477-54.317-6.534Q-54.420-6.592-54.477-6.695Q-54.534-6.798-54.534-6.917",[867],[856,3320],{"fill":858,"d":3321},"m-50.278.72 4.64 5.838",[856,3323],{"stroke":858,"d":3324},"m-44.394 8.123-.738-3.5-.506 1.935-2 .056",[856,3326],{"fill":858,"d":3327},"m-32.638 22.913 4.64 5.838",[856,3329],{"stroke":858,"d":3330},"m-26.753 30.316-.739-3.5-.506 1.935-1.999.056",[856,3332],{"fill":858,"d":3333},"m-14.997 45.107 4.64 5.837",[856,3335],{"stroke":858,"d":3336},"m-9.113 52.51-.738-3.5-.506 1.934-2 .056",[856,3338],{"fill":858,"d":3339},"m2.644 67.3 4.64 5.837",[856,3341],{"stroke":858,"d":3342},"m8.528 74.703-.739-3.5-.505 1.934-2 .056",[856,3344],{"fill":858,"d":3345},"m20.284 89.493 4.64 5.837",[856,3347],{"stroke":858,"d":3348},"m26.169 96.896-.74-3.5-.505 1.934-1.999.056",[856,3350],{"fill":858,"d":3351},"m37.925 111.686 4.64 5.837",[856,3353],{"stroke":858,"d":3354},"m43.81 119.089-.74-3.5-.505 1.934-2 .057",[851,3356,3357,3364,3370,3376,3382],{"stroke":858,"fontSize":956},[851,3358,3360],{"transform":3359},"translate(22.158 -13.65)",[856,3361],{"d":3362,"fill":853,"stroke":853,"className":3363,"style":952},"M-54.035-5.124L-55.890-5.124L-55.890-5.417Q-55.621-5.417-55.453-5.462Q-55.285-5.507-55.285-5.683L-55.285-9.507Q-55.285-9.714-55.441-9.767Q-55.597-9.820-55.890-9.820L-55.890-10.116L-54.668-10.202L-54.668-9.738Q-54.437-9.960-54.123-10.081Q-53.808-10.202-53.468-10.202Q-52.996-10.202-52.592-9.956Q-52.187-9.710-51.955-9.294Q-51.722-8.878-51.722-8.402Q-51.722-8.027-51.871-7.698Q-52.019-7.370-52.289-7.118Q-52.558-6.866-52.902-6.732Q-53.246-6.597-53.605-6.597Q-53.894-6.597-54.166-6.718Q-54.437-6.839-54.644-7.050L-54.644-5.683Q-54.644-5.507-54.476-5.462Q-54.308-5.417-54.035-5.417L-54.035-5.124M-54.644-9.339L-54.644-7.499Q-54.492-7.210-54.230-7.030Q-53.968-6.851-53.660-6.851Q-53.375-6.851-53.152-6.989Q-52.929-7.128-52.777-7.359Q-52.625-7.589-52.547-7.861Q-52.468-8.132-52.468-8.402Q-52.468-8.734-52.593-9.091Q-52.718-9.448-52.967-9.685Q-53.215-9.921-53.562-9.921Q-53.886-9.921-54.181-9.765Q-54.476-9.609-54.644-9.339M-49.285-6.675L-51.117-6.675L-51.117-6.972Q-50.843-6.972-50.676-7.019Q-50.508-7.066-50.508-7.234L-50.508-11.394Q-50.508-11.609-50.570-11.704Q-50.633-11.800-50.752-11.821Q-50.871-11.843-51.117-11.843L-51.117-12.140L-49.894-12.226L-49.894-7.234Q-49.894-7.066-49.726-7.019Q-49.558-6.972-49.285-6.972L-49.285-6.675M-48.742-7.507Q-48.742-7.991-48.340-8.286Q-47.937-8.581-47.386-8.700Q-46.836-8.820-46.343-8.820L-46.343-9.109Q-46.343-9.335-46.459-9.542Q-46.574-9.749-46.771-9.868Q-46.968-9.988-47.199-9.988Q-47.625-9.988-47.910-9.882Q-47.840-9.855-47.793-9.800Q-47.746-9.745-47.720-9.675Q-47.695-9.605-47.695-9.530Q-47.695-9.425-47.746-9.333Q-47.797-9.241-47.888-9.191Q-47.980-9.140-48.086-9.140Q-48.191-9.140-48.283-9.191Q-48.375-9.241-48.426-9.333Q-48.476-9.425-48.476-9.530Q-48.476-9.948-48.088-10.095Q-47.699-10.241-47.199-10.241Q-46.867-10.241-46.513-10.111Q-46.160-9.980-45.931-9.726Q-45.703-9.472-45.703-9.124L-45.703-7.323Q-45.703-7.191-45.631-7.081Q-45.558-6.972-45.429-6.972Q-45.304-6.972-45.236-7.077Q-45.168-7.183-45.168-7.323L-45.168-7.835L-44.886-7.835L-44.886-7.323Q-44.886-7.120-45.004-6.962Q-45.121-6.804-45.302-6.720Q-45.484-6.636-45.687-6.636Q-45.918-6.636-46.070-6.808Q-46.222-6.980-46.254-7.210Q-46.414-6.929-46.722-6.763Q-47.031-6.597-47.383-6.597Q-47.894-6.597-48.318-6.820Q-48.742-7.042-48.742-7.507M-48.054-7.507Q-48.054-7.222-47.828-7.036Q-47.601-6.851-47.308-6.851Q-47.062-6.851-46.838-6.968Q-46.613-7.085-46.478-7.288Q-46.343-7.491-46.343-7.745L-46.343-8.577Q-46.609-8.577-46.894-8.523Q-47.179-8.468-47.451-8.339Q-47.722-8.210-47.888-8.003Q-48.054-7.796-48.054-7.507M-42.734-6.675L-44.511-6.675L-44.511-6.972Q-44.238-6.972-44.070-7.019Q-43.902-7.066-43.902-7.234L-43.902-9.370Q-43.902-9.585-43.959-9.681Q-44.015-9.777-44.129-9.798Q-44.242-9.820-44.488-9.820L-44.488-10.116L-43.289-10.202L-43.289-7.234Q-43.289-7.066-43.142-7.019Q-42.996-6.972-42.734-6.972L-42.734-6.675M-44.176-11.597Q-44.176-11.788-44.041-11.919Q-43.906-12.050-43.711-12.050Q-43.590-12.050-43.486-11.988Q-43.383-11.925-43.320-11.821Q-43.258-11.718-43.258-11.597Q-43.258-11.402-43.388-11.267Q-43.519-11.132-43.711-11.132Q-43.910-11.132-44.043-11.265Q-44.176-11.398-44.176-11.597M-40.304-6.675L-42.160-6.675L-42.160-6.972Q-41.886-6.972-41.718-7.019Q-41.551-7.066-41.551-7.234L-41.551-9.370Q-41.551-9.585-41.613-9.681Q-41.676-9.777-41.795-9.798Q-41.914-9.820-42.160-9.820L-42.160-10.116L-40.968-10.202L-40.968-9.468Q-40.855-9.683-40.662-9.851Q-40.468-10.019-40.230-10.111Q-39.992-10.202-39.738-10.202Q-38.570-10.202-38.570-9.124L-38.570-7.234Q-38.570-7.066-38.400-7.019Q-38.230-6.972-37.961-6.972L-37.961-6.675L-39.816-6.675L-39.816-6.972Q-39.543-6.972-39.375-7.019Q-39.207-7.066-39.207-7.234L-39.207-9.109Q-39.207-9.491-39.328-9.720Q-39.449-9.948-39.801-9.948Q-40.113-9.948-40.367-9.786Q-40.621-9.624-40.767-9.355Q-40.914-9.085-40.914-8.788L-40.914-7.234Q-40.914-7.066-40.744-7.019Q-40.574-6.972-40.304-6.972",[867],[851,3365,3366],{"transform":3359},[856,3367],{"d":3368,"fill":853,"stroke":853,"className":3369,"style":952},"M-31.258-6.675L-34.539-6.675L-34.539-6.972Q-34.215-6.972-33.972-7.019Q-33.730-7.066-33.730-7.234L-33.730-11.577Q-33.730-11.749-33.972-11.796Q-34.215-11.843-34.539-11.843L-34.539-12.140L-31.492-12.140Q-31.066-12.140-30.633-11.986Q-30.199-11.831-29.904-11.523Q-29.609-11.214-29.609-10.780Q-29.609-10.527-29.734-10.310Q-29.859-10.093-30.060-9.937Q-30.261-9.780-30.494-9.681Q-30.726-9.581-30.984-9.530Q-30.609-9.495-30.230-9.318Q-29.851-9.140-29.611-8.841Q-29.371-8.542-29.371-8.148Q-29.371-7.695-29.654-7.361Q-29.937-7.027-30.373-6.851Q-30.808-6.675-31.258-6.675M-33.019-9.386L-33.019-7.234Q-33.019-7.062-32.927-7.017Q-32.836-6.972-32.617-6.972L-31.492-6.972Q-31.254-6.972-31.019-7.060Q-30.785-7.148-30.599-7.308Q-30.414-7.468-30.312-7.681Q-30.211-7.894-30.211-8.148Q-30.211-8.468-30.363-8.753Q-30.515-9.038-30.785-9.212Q-31.054-9.386-31.371-9.386L-33.019-9.386M-33.019-11.577L-33.019-9.644L-31.730-9.644Q-31.488-9.644-31.250-9.726Q-31.011-9.808-30.828-9.954Q-30.644-10.101-30.531-10.318Q-30.418-10.534-30.418-10.780Q-30.418-10.991-30.504-11.193Q-30.590-11.394-30.736-11.536Q-30.883-11.679-31.078-11.761Q-31.273-11.843-31.492-11.843L-32.617-11.843Q-32.836-11.843-32.927-11.800Q-33.019-11.757-33.019-11.577M-28.418-6.597L-28.418-8.402Q-28.418-8.429-28.386-8.460Q-28.355-8.491-28.332-8.491L-28.226-8.491Q-28.195-8.491-28.166-8.462Q-28.136-8.433-28.136-8.402Q-28.136-7.620-27.621-7.212Q-27.105-6.804-26.297-6.804Q-26-6.804-25.744-6.954Q-25.488-7.105-25.338-7.361Q-25.187-7.616-25.187-7.913Q-25.187-8.312-25.433-8.616Q-25.679-8.921-26.051-9.003L-27.172-9.261Q-27.511-9.335-27.799-9.556Q-28.086-9.777-28.252-10.095Q-28.418-10.413-28.418-10.765Q-28.418-11.195-28.187-11.550Q-27.957-11.905-27.576-12.107Q-27.195-12.308-26.769-12.308Q-26.519-12.308-26.273-12.249Q-26.027-12.191-25.808-12.068Q-25.590-11.945-25.426-11.765L-25.097-12.261Q-25.066-12.308-25.027-12.308L-24.980-12.308Q-24.953-12.308-24.922-12.277Q-24.890-12.245-24.890-12.218L-24.890-10.409Q-24.890-10.386-24.922-10.355Q-24.953-10.323-24.980-10.323L-25.082-10.323Q-25.113-10.323-25.142-10.353Q-25.172-10.382-25.172-10.409Q-25.172-10.542-25.215-10.728Q-25.258-10.913-25.322-11.068Q-25.386-11.222-25.486-11.380Q-25.586-11.538-25.676-11.628Q-26.105-12.034-26.769-12.034Q-27.047-12.034-27.306-11.902Q-27.566-11.769-27.724-11.534Q-27.883-11.300-27.883-11.019Q-27.883-10.663-27.642-10.392Q-27.402-10.120-27.035-10.034L-25.922-9.780Q-25.644-9.714-25.412-9.560Q-25.179-9.405-25.010-9.187Q-24.840-8.968-24.746-8.710Q-24.652-8.452-24.652-8.163Q-24.652-7.835-24.777-7.532Q-24.902-7.230-25.136-6.993Q-25.371-6.757-25.664-6.632Q-25.957-6.507-26.297-6.507Q-27.312-6.507-27.883-7.050L-28.211-6.554Q-28.242-6.507-28.281-6.507L-28.332-6.507Q-28.355-6.507-28.386-6.538Q-28.418-6.570-28.418-6.597M-19.586-6.675L-22.629-6.675L-22.629-6.972Q-21.867-6.972-21.683-7.011Q-21.640-7.023-21.592-7.056Q-21.543-7.089-21.517-7.132Q-21.492-7.175-21.492-7.234L-21.492-11.577Q-21.492-11.753-21.584-11.798Q-21.676-11.843-21.890-11.843L-22.285-11.843Q-22.980-11.843-23.269-11.554Q-23.418-11.405-23.480-11.085Q-23.543-10.765-23.586-10.292L-23.867-10.292L-23.707-12.140L-18.508-12.140L-18.347-10.292L-18.629-10.292Q-18.672-10.800-18.734-11.103Q-18.797-11.405-18.949-11.554Q-19.234-11.843-19.933-11.843L-20.324-11.843Q-20.539-11.843-20.631-11.800Q-20.722-11.757-20.722-11.577L-20.722-7.234Q-20.722-7.159-20.668-7.095Q-20.613-7.030-20.531-7.011Q-20.347-6.972-19.586-6.972L-19.586-6.675M-17.316-7.140Q-17.316-7.323-17.179-7.460Q-17.043-7.597-16.851-7.597Q-16.660-7.597-16.527-7.464Q-16.394-7.331-16.394-7.140Q-16.394-6.941-16.527-6.808Q-16.660-6.675-16.851-6.675Q-17.043-6.675-17.179-6.812Q-17.316-6.948-17.316-7.140M-17.316-9.667Q-17.316-9.851-17.179-9.988Q-17.043-10.124-16.851-10.124Q-16.660-10.124-16.527-9.991Q-16.394-9.859-16.394-9.667Q-16.394-9.468-16.527-9.335Q-16.660-9.202-16.851-9.202Q-17.043-9.202-17.179-9.339Q-17.316-9.476-17.316-9.667",[867],[851,3371,3372],{"transform":3359},[856,3373],{"d":3374,"fill":853,"stroke":853,"className":3375,"style":952},"M-12.392-6.851Q-12.388-6.870-12.386-6.884Q-12.384-6.898-12.384-6.921L-11.231-11.523Q-11.192-11.710-11.192-11.738Q-11.192-11.843-11.688-11.843Q-11.786-11.874-11.786-11.972L-11.763-12.073Q-11.755-12.120-11.673-12.140L-10.567-12.226Q-10.517-12.226-10.483-12.196Q-10.450-12.167-10.450-12.109L-11.071-9.605Q-10.829-9.882-10.519-10.042Q-10.208-10.202-9.856-10.202Q-9.403-10.202-9.122-9.976Q-8.841-9.749-8.841-9.316Q-8.841-8.976-8.974-8.575Q-9.106-8.175-9.360-7.507Q-9.458-7.292-9.458-7.101Q-9.458-6.851-9.282-6.851Q-8.974-6.851-8.755-7.167Q-8.536-7.484-8.450-7.851Q-8.423-7.921-8.360-7.921L-8.259-7.921Q-8.220-7.921-8.194-7.892Q-8.169-7.862-8.169-7.827Q-8.169-7.812-8.177-7.796Q-8.251-7.507-8.401-7.236Q-8.552-6.964-8.782-6.780Q-9.013-6.597-9.298-6.597Q-9.603-6.597-9.821-6.784Q-10.040-6.972-10.040-7.277Q-10.040-7.441-9.985-7.562Q-9.743-8.206-9.601-8.648Q-9.458-9.089-9.458-9.417Q-9.458-9.652-9.554-9.800Q-9.649-9.948-9.872-9.948Q-10.700-9.948-11.259-8.874L-11.763-6.866Q-11.794-6.745-11.892-6.671Q-11.989-6.597-12.114-6.597Q-12.228-6.597-12.310-6.667Q-12.392-6.737-12.392-6.851",[867],[851,3377,3378],{"transform":3359},[856,3379],{"d":3380,"fill":853,"stroke":853,"className":3381,"style":952},"M0.387-7.652L-4.926-7.652Q-5.004-7.659-5.053-7.708Q-5.101-7.757-5.101-7.835Q-5.101-7.905-5.054-7.956Q-5.008-8.007-4.926-8.019L0.387-8.019Q0.461-8.007 0.508-7.956Q0.555-7.905 0.555-7.835Q0.555-7.757 0.506-7.708Q0.457-7.659 0.387-7.652M0.387-9.339L-4.926-9.339Q-5.004-9.347-5.053-9.396Q-5.101-9.445-5.101-9.523Q-5.101-9.593-5.054-9.644Q-5.008-9.695-4.926-9.706L0.387-9.706Q0.461-9.695 0.508-9.644Q0.555-9.593 0.555-9.523Q0.555-9.445 0.506-9.396Q0.457-9.347 0.387-9.339",[867],[851,3383,3384],{"transform":3359},[856,3385],{"d":3386,"fill":853,"stroke":853,"className":3387,"style":952},"M5.519-6.507Q4.847-6.507 4.451-6.931Q4.054-7.355 3.902-7.974Q3.750-8.593 3.750-9.261Q3.750-9.921 4.021-10.554Q4.293-11.187 4.806-11.591Q5.320-11.995 5.992-11.995Q6.281-11.995 6.529-11.896Q6.777-11.796 6.923-11.595Q7.070-11.394 7.070-11.089Q7.070-10.984 7.019-10.892Q6.968-10.800 6.877-10.749Q6.785-10.698 6.679-10.698Q6.511-10.698 6.398-10.812Q6.285-10.925 6.285-11.089Q6.285-11.249 6.394-11.366Q6.503-11.484 6.671-11.484Q6.472-11.753 5.992-11.753Q5.574-11.753 5.242-11.476Q4.910-11.198 4.734-10.780Q4.535-10.280 4.535-9.378Q4.699-9.702 4.978-9.902Q5.257-10.101 5.605-10.101Q6.089-10.101 6.474-9.855Q6.859-9.609 7.072-9.200Q7.285-8.792 7.285-8.308Q7.285-7.816 7.054-7.404Q6.824-6.991 6.414-6.749Q6.003-6.507 5.519-6.507M5.519-6.780Q5.945-6.780 6.162-7.001Q6.378-7.222 6.441-7.548Q6.503-7.874 6.503-8.308Q6.503-8.620 6.478-8.870Q6.453-9.120 6.363-9.345Q6.273-9.570 6.078-9.706Q5.882-9.843 5.566-9.843Q5.238-9.843 5.005-9.634Q4.773-9.425 4.662-9.107Q4.550-8.788 4.550-8.476Q4.554-8.437 4.556-8.404Q4.558-8.370 4.558-8.316Q4.558-8.300 4.556-8.292Q4.554-8.284 4.550-8.277Q4.550-7.702 4.777-7.241Q5.003-6.780 5.519-6.780",[867],[856,3389],{"fill":858,"d":3390},"M101.045-.984a9.247 9.247 0 1 0-18.494 0 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3392,3394],{"transform":3393},"translate(145.642 8.59)",[856,3395],{"d":3287,"fill":853,"stroke":853,"className":3396,"style":2838},[867],[856,3398],{"fill":858,"d":3399},"M72.593 30.314a9.247 9.247 0 0 0-9.248-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.248-9.247Zm-9.248 0",[851,3401,3403],{"transform":3402},"translate(117.19 39.889)",[856,3404],{"d":3267,"fill":853,"stroke":853,"className":3405,"style":2838},[867],[856,3407],{"fill":858,"d":3408},"M85.444 6.006 69.7 23.324",[851,3410,3411,3414],{"stroke":1438,"style":2841},[856,3412],{"fill":858,"d":3413},"M56.944 61.612a9.247 9.247 0 0 0-9.248-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.248-9.247Zm-9.248 0",[851,3415,3417],{"transform":3416},"translate(101.54 71.187)",[856,3418],{"d":3257,"fill":1438,"stroke":1438,"className":3419,"style":2838},[867],[856,3421],{"fill":858,"d":3422},"m59.12 38.763-7.154 14.31",[851,3424,3425,3428],{"stroke":1438,"style":2841},[856,3426],{"fill":858,"d":3427},"M88.242 61.612a9.247 9.247 0 0 0-9.248-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.248-9.247Zm-9.248 0",[851,3429,3431],{"transform":3430},"translate(132.838 71.187)",[856,3432],{"d":3277,"fill":1438,"stroke":1438,"className":3433,"style":2838},[867],[856,3435],{"fill":858,"d":3436},"m67.57 38.763 7.155 14.31M129.498 30.314a9.247 9.247 0 1 0-18.494 0 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3438,3440],{"transform":3439},"translate(174.095 39.889)",[856,3441],{"d":3307,"fill":853,"stroke":853,"className":3442,"style":2838},[867],[856,3444],{"fill":858,"d":3445},"m98.153 6.006 15.743 17.318",[851,3447,3448,3451],{"stroke":1438,"style":2841},[856,3449],{"fill":858,"d":3450},"M113.849 61.612a9.247 9.247 0 0 0-9.247-9.247 9.247 9.247 0 0 0-9.247 9.247 9.247 9.247 0 0 0 9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3452,3454],{"transform":3453},"translate(158.446 71.187)",[856,3455],{"d":3297,"fill":1438,"stroke":1438,"className":3456,"style":2838},[867],[856,3458],{"fill":858,"d":3459},"m116.026 38.763-7.155 14.31",[851,3461,3462,3465],{"stroke":1438,"style":2841},[856,3463],{"fill":858,"d":3464},"M145.147 61.612a9.247 9.247 0 1 0-9.247 9.247 9.247 9.247 0 0 0 9.247-9.247Zm-9.247 0",[851,3466,3468],{"transform":3467},"translate(189.744 71.187)",[856,3469],{"d":3317,"fill":1438,"stroke":1438,"className":3470,"style":2838},[867],[856,3472],{"fill":858,"d":3473},"m124.475 38.763 7.156 14.31",[851,3475,3476,3483,3489,3495,3501,3507,3513,3519,3525],{"stroke":858,"fontSize":956},[851,3477,3479],{"transform":3478},"translate(102.276 -17.917)",[856,3480],{"d":3481,"fill":853,"stroke":853,"className":3482,"style":952},"M-53.910-6.675L-55.890-6.675L-55.890-6.972Q-55.621-6.972-55.453-7.017Q-55.285-7.062-55.285-7.234L-55.285-9.370Q-55.285-9.585-55.347-9.681Q-55.410-9.777-55.527-9.798Q-55.644-9.820-55.890-9.820L-55.890-10.116L-54.722-10.202L-54.722-9.417Q-54.644-9.628-54.492-9.814Q-54.340-9.999-54.140-10.101Q-53.941-10.202-53.715-10.202Q-53.468-10.202-53.277-10.058Q-53.086-9.913-53.086-9.683Q-53.086-9.527-53.191-9.417Q-53.297-9.308-53.453-9.308Q-53.609-9.308-53.718-9.417Q-53.828-9.527-53.828-9.683Q-53.828-9.843-53.722-9.948Q-54.047-9.948-54.261-9.720Q-54.476-9.491-54.572-9.152Q-54.668-8.812-54.668-8.507L-54.668-7.234Q-54.668-7.066-54.441-7.019Q-54.215-6.972-53.910-6.972L-53.910-6.675M-52.605-8.429Q-52.605-8.909-52.373-9.325Q-52.140-9.741-51.730-9.991Q-51.320-10.241-50.843-10.241Q-50.113-10.241-49.715-9.800Q-49.316-9.359-49.316-8.628Q-49.316-8.523-49.410-8.499L-51.859-8.499L-51.859-8.429Q-51.859-8.019-51.738-7.663Q-51.617-7.308-51.345-7.091Q-51.074-6.874-50.644-6.874Q-50.281-6.874-49.984-7.103Q-49.687-7.331-49.586-7.683Q-49.578-7.730-49.492-7.745L-49.410-7.745Q-49.316-7.718-49.316-7.636Q-49.316-7.628-49.324-7.597Q-49.386-7.370-49.525-7.187Q-49.664-7.003-49.855-6.870Q-50.047-6.737-50.265-6.667Q-50.484-6.597-50.722-6.597Q-51.093-6.597-51.431-6.734Q-51.769-6.870-52.037-7.122Q-52.304-7.374-52.455-7.714Q-52.605-8.054-52.605-8.429M-51.851-8.738L-49.890-8.738Q-49.890-9.042-49.992-9.333Q-50.093-9.624-50.310-9.806Q-50.527-9.988-50.843-9.988Q-51.144-9.988-51.375-9.800Q-51.605-9.613-51.728-9.321Q-51.851-9.030-51.851-8.738M-47.011-6.597Q-47.492-6.597-47.900-6.841Q-48.308-7.085-48.547-7.499Q-48.785-7.913-48.785-8.402Q-48.785-8.894-48.527-9.310Q-48.269-9.726-47.838-9.964Q-47.406-10.202-46.914-10.202Q-46.293-10.202-45.843-9.765L-45.843-11.394Q-45.843-11.609-45.906-11.704Q-45.968-11.800-46.086-11.821Q-46.203-11.843-46.449-11.843L-46.449-12.140L-45.226-12.226L-45.226-7.417Q-45.226-7.206-45.164-7.111Q-45.101-7.015-44.984-6.993Q-44.867-6.972-44.617-6.972L-44.617-6.675L-45.867-6.597L-45.867-7.081Q-46.332-6.597-47.011-6.597M-46.945-6.851Q-46.605-6.851-46.312-7.042Q-46.019-7.234-45.867-7.530L-45.867-9.363Q-46.015-9.636-46.277-9.792Q-46.539-9.948-46.851-9.948Q-47.476-9.948-47.760-9.501Q-48.043-9.054-48.043-8.394Q-48.043-7.749-47.791-7.300Q-47.539-6.851-46.945-6.851M-41.996-8.124L-44.250-8.124L-44.250-8.675L-41.996-8.675L-41.996-8.124M-40.363-6.675L-40.644-6.675L-40.644-11.394Q-40.644-11.609-40.707-11.704Q-40.769-11.800-40.886-11.821Q-41.004-11.843-41.250-11.843L-41.250-12.140L-40.027-12.226L-40.027-9.738Q-39.551-10.202-38.851-10.202Q-38.371-10.202-37.963-9.958Q-37.554-9.714-37.318-9.300Q-37.082-8.886-37.082-8.402Q-37.082-8.027-37.230-7.698Q-37.379-7.370-37.648-7.118Q-37.918-6.866-38.261-6.732Q-38.605-6.597-38.965-6.597Q-39.285-6.597-39.584-6.745Q-39.883-6.894-40.090-7.155L-40.363-6.675M-40.004-9.347L-40.004-7.507Q-39.851-7.210-39.592-7.030Q-39.332-6.851-39.019-6.851Q-38.593-6.851-38.326-7.070Q-38.058-7.288-37.943-7.634Q-37.828-7.980-37.828-8.402Q-37.828-9.050-38.076-9.499Q-38.324-9.948-38.922-9.948Q-39.258-9.948-39.547-9.790Q-39.836-9.632-40.004-9.347M-34.644-6.675L-36.476-6.675L-36.476-6.972Q-36.203-6.972-36.035-7.019Q-35.867-7.066-35.867-7.234L-35.867-11.394Q-35.867-11.609-35.929-11.704Q-35.992-11.800-36.111-11.821Q-36.230-11.843-36.476-11.843L-36.476-12.140L-35.254-12.226L-35.254-7.234Q-35.254-7.066-35.086-7.019Q-34.918-6.972-34.644-6.972L-34.644-6.675M-34.101-7.507Q-34.101-7.991-33.699-8.286Q-33.297-8.581-32.746-8.700Q-32.195-8.820-31.703-8.820L-31.703-9.109Q-31.703-9.335-31.818-9.542Q-31.933-9.749-32.131-9.868Q-32.328-9.988-32.558-9.988Q-32.984-9.988-33.269-9.882Q-33.199-9.855-33.152-9.800Q-33.105-9.745-33.080-9.675Q-33.054-9.605-33.054-9.530Q-33.054-9.425-33.105-9.333Q-33.156-9.241-33.248-9.191Q-33.340-9.140-33.445-9.140Q-33.551-9.140-33.642-9.191Q-33.734-9.241-33.785-9.333Q-33.836-9.425-33.836-9.530Q-33.836-9.948-33.447-10.095Q-33.058-10.241-32.558-10.241Q-32.226-10.241-31.873-10.111Q-31.519-9.980-31.291-9.726Q-31.062-9.472-31.062-9.124L-31.062-7.323Q-31.062-7.191-30.990-7.081Q-30.918-6.972-30.789-6.972Q-30.664-6.972-30.595-7.077Q-30.527-7.183-30.527-7.323L-30.527-7.835L-30.246-7.835L-30.246-7.323Q-30.246-7.120-30.363-6.962Q-30.480-6.804-30.662-6.720Q-30.843-6.636-31.047-6.636Q-31.277-6.636-31.429-6.808Q-31.582-6.980-31.613-7.210Q-31.773-6.929-32.082-6.763Q-32.390-6.597-32.742-6.597Q-33.254-6.597-33.677-6.820Q-34.101-7.042-34.101-7.507M-33.414-7.507Q-33.414-7.222-33.187-7.036Q-32.961-6.851-32.668-6.851Q-32.422-6.851-32.197-6.968Q-31.972-7.085-31.838-7.288Q-31.703-7.491-31.703-7.745L-31.703-8.577Q-31.968-8.577-32.254-8.523Q-32.539-8.468-32.810-8.339Q-33.082-8.210-33.248-8.003Q-33.414-7.796-33.414-7.507M-29.910-8.402Q-29.910-8.898-29.660-9.323Q-29.410-9.749-28.990-9.995Q-28.570-10.241-28.070-10.241Q-27.531-10.241-27.140-10.116Q-26.750-9.991-26.750-9.577Q-26.750-9.472-26.801-9.380Q-26.851-9.288-26.943-9.238Q-27.035-9.187-27.144-9.187Q-27.250-9.187-27.342-9.238Q-27.433-9.288-27.484-9.380Q-27.535-9.472-27.535-9.577Q-27.535-9.800-27.367-9.905Q-27.590-9.964-28.062-9.964Q-28.359-9.964-28.574-9.825Q-28.789-9.687-28.920-9.456Q-29.051-9.226-29.109-8.956Q-29.168-8.687-29.168-8.402Q-29.168-8.007-29.035-7.657Q-28.902-7.308-28.631-7.091Q-28.359-6.874-27.961-6.874Q-27.586-6.874-27.310-7.091Q-27.035-7.308-26.933-7.667Q-26.918-7.730-26.855-7.730L-26.750-7.730Q-26.715-7.730-26.689-7.702Q-26.664-7.675-26.664-7.636L-26.664-7.612Q-26.797-7.132-27.181-6.864Q-27.566-6.597-28.070-6.597Q-28.433-6.597-28.767-6.734Q-29.101-6.870-29.361-7.120Q-29.621-7.370-29.765-7.706Q-29.910-8.042-29.910-8.402",[867],[851,3484,3485],{"transform":3478},[856,3486],{"d":3487,"fill":853,"stroke":853,"className":3488,"style":952},"M-24.573-6.675L-26.369-6.675L-26.369-6.972Q-26.100-6.972-25.932-7.017Q-25.764-7.062-25.764-7.234L-25.764-11.394Q-25.764-11.609-25.826-11.704Q-25.889-11.800-26.006-11.821Q-26.123-11.843-26.369-11.843L-26.369-12.140L-25.147-12.226L-25.147-8.460L-24.049-9.347Q-23.842-9.527-23.842-9.675Q-23.842-9.741-23.895-9.784Q-23.948-9.827-24.018-9.827L-24.018-10.124L-22.483-10.124L-22.483-9.827Q-23.014-9.827-23.612-9.347L-24.221-8.851L-23.147-7.452Q-23.010-7.277-22.903-7.169Q-22.795-7.062-22.660-7.017Q-22.526-6.972-22.299-6.972L-22.299-6.675L-23.924-6.675L-23.924-6.972Q-23.682-6.972-23.682-7.124Q-23.682-7.202-23.725-7.273Q-23.768-7.343-23.850-7.452L-24.651-8.499L-25.178-8.073L-25.178-7.234Q-25.178-7.066-25.010-7.019Q-24.842-6.972-24.573-6.972L-24.573-6.675M-21.436-7.140Q-21.436-7.323-21.299-7.460Q-21.162-7.597-20.971-7.597Q-20.780-7.597-20.647-7.464Q-20.514-7.331-20.514-7.140Q-20.514-6.941-20.647-6.808Q-20.780-6.675-20.971-6.675Q-21.162-6.675-21.299-6.812Q-21.436-6.948-21.436-7.140M-21.436-9.667Q-21.436-9.851-21.299-9.988Q-21.162-10.124-20.971-10.124Q-20.780-10.124-20.647-9.991Q-20.514-9.859-20.514-9.667Q-20.514-9.468-20.647-9.335Q-20.780-9.202-20.971-9.202Q-21.162-9.202-21.299-9.339Q-21.436-9.476-21.436-9.667",[867],[851,3490,3491],{"transform":3478},[856,3492],{"d":3493,"fill":853,"stroke":853,"className":3494,"style":952},"M-15.569-6.851Q-15.565-6.870-15.563-6.884Q-15.561-6.898-15.561-6.921L-14.408-11.523Q-14.369-11.710-14.369-11.738Q-14.369-11.843-14.865-11.843Q-14.963-11.874-14.963-11.972L-14.940-12.073Q-14.932-12.120-14.850-12.140L-13.744-12.226Q-13.694-12.226-13.660-12.196Q-13.627-12.167-13.627-12.109L-14.248-9.605Q-14.006-9.882-13.696-10.042Q-13.385-10.202-13.033-10.202Q-12.580-10.202-12.299-9.976Q-12.018-9.749-12.018-9.316Q-12.018-8.976-12.151-8.575Q-12.283-8.175-12.537-7.507Q-12.635-7.292-12.635-7.101Q-12.635-6.851-12.459-6.851Q-12.151-6.851-11.932-7.167Q-11.713-7.484-11.627-7.851Q-11.600-7.921-11.537-7.921L-11.436-7.921Q-11.397-7.921-11.371-7.892Q-11.346-7.862-11.346-7.827Q-11.346-7.812-11.354-7.796Q-11.428-7.507-11.578-7.236Q-11.729-6.964-11.959-6.780Q-12.190-6.597-12.475-6.597Q-12.780-6.597-12.998-6.784Q-13.217-6.972-13.217-7.277Q-13.217-7.441-13.162-7.562Q-12.920-8.206-12.778-8.648Q-12.635-9.089-12.635-9.417Q-12.635-9.652-12.731-9.800Q-12.826-9.948-13.049-9.948Q-13.877-9.948-14.436-8.874L-14.940-6.866Q-14.971-6.745-15.069-6.671Q-15.166-6.597-15.291-6.597Q-15.405-6.597-15.487-6.667Q-15.569-6.737-15.569-6.851",[867],[851,3496,3497],{"transform":3478},[856,3498],{"d":3499,"fill":853,"stroke":853,"className":3500,"style":952},"M-2.789-7.652L-8.102-7.652Q-8.180-7.659-8.229-7.708Q-8.277-7.757-8.277-7.835Q-8.277-7.905-8.230-7.956Q-8.184-8.007-8.102-8.019L-2.789-8.019Q-2.715-8.007-2.668-7.956Q-2.621-7.905-2.621-7.835Q-2.621-7.757-2.670-7.708Q-2.719-7.659-2.789-7.652M-2.789-9.339L-8.102-9.339Q-8.180-9.347-8.229-9.396Q-8.277-9.445-8.277-9.523Q-8.277-9.593-8.230-9.644Q-8.184-9.695-8.102-9.706L-2.789-9.706Q-2.715-9.695-2.668-9.644Q-2.621-9.593-2.621-9.523Q-2.621-9.445-2.670-9.396Q-2.719-9.347-2.789-9.339",[867],[851,3502,3503],{"transform":3478},[856,3504],{"d":3505,"fill":853,"stroke":853,"className":3506,"style":952},"M3.808-6.675L0.648-6.675L0.648-6.882Q0.648-6.909 0.671-6.941L2.023-8.339Q2.402-8.726 2.650-9.015Q2.898-9.304 3.072-9.661Q3.245-10.019 3.245-10.409Q3.245-10.757 3.113-11.050Q2.980-11.343 2.726-11.521Q2.472-11.698 2.117-11.698Q1.757-11.698 1.466-11.503Q1.175-11.308 1.031-10.980L1.085-10.980Q1.269-10.980 1.394-10.859Q1.519-10.738 1.519-10.546Q1.519-10.366 1.394-10.238Q1.269-10.109 1.085-10.109Q0.906-10.109 0.777-10.238Q0.648-10.366 0.648-10.546Q0.648-10.948 0.868-11.284Q1.089-11.620 1.454-11.808Q1.820-11.995 2.222-11.995Q2.702-11.995 3.118-11.808Q3.535-11.620 3.786-11.259Q4.038-10.898 4.038-10.409Q4.038-10.050 3.884-9.747Q3.730-9.445 3.478-9.185Q3.226-8.925 2.876-8.640Q2.527-8.355 2.359-8.202L1.429-7.362L2.144-7.362Q3.519-7.362 3.558-7.402Q3.628-7.480 3.671-7.665Q3.714-7.851 3.757-8.140L4.038-8.140",[867],[851,3508,3509],{"transform":3478},[856,3510],{"d":3511,"fill":853,"stroke":853,"className":3512,"style":952},"M5.296-5.269Q5.296-5.292 5.327-5.339Q5.620-5.601 5.786-5.968Q5.952-6.335 5.952-6.722L5.952-6.780Q5.824-6.675 5.656-6.675Q5.464-6.675 5.327-6.808Q5.191-6.941 5.191-7.140Q5.191-7.331 5.327-7.464Q5.464-7.597 5.656-7.597Q5.956-7.597 6.081-7.327Q6.206-7.058 6.206-6.722Q6.206-6.273 6.025-5.859Q5.843-5.445 5.503-5.148Q5.480-5.124 5.441-5.124Q5.394-5.124 5.345-5.169Q5.296-5.214 5.296-5.269",[867],[851,3514,3515],{"transform":3478},[856,3516],{"d":3517,"fill":853,"stroke":853,"className":3518,"style":952},"M12.587-6.597Q12.247-6.597 11.987-6.775Q11.728-6.952 11.593-7.247Q11.458-7.542 11.458-7.890Q11.458-8.152 11.524-8.409L12.274-11.437Q12.286-11.484 12.313-11.585Q12.341-11.687 12.341-11.738Q12.341-11.843 11.845-11.843Q11.747-11.874 11.747-11.972L11.771-12.073Q11.778-12.120 11.860-12.140L12.962-12.226Q13.005-12.226 13.044-12.195Q13.083-12.163 13.083-12.109L12.509-9.788Q12.966-10.202 13.442-10.202Q13.806-10.202 14.071-10.023Q14.337-9.843 14.478-9.542Q14.618-9.241 14.618-8.890Q14.618-8.366 14.337-7.827Q14.056-7.288 13.589-6.943Q13.122-6.597 12.587-6.597M12.603-6.851Q12.938-6.851 13.218-7.142Q13.497-7.433 13.634-7.788Q13.759-8.081 13.860-8.515Q13.962-8.948 13.962-9.226Q13.962-9.511 13.829-9.730Q13.696-9.948 13.427-9.948Q13.216-9.948 13.021-9.847Q12.825-9.745 12.665-9.589Q12.505-9.433 12.372-9.241L12.146-8.370Q12.095-8.136 12.065-7.954Q12.036-7.773 12.036-7.620Q12.036-7.320 12.177-7.085Q12.317-6.851 12.603-6.851M15.157-6.851Q15.161-6.870 15.163-6.884Q15.165-6.898 15.165-6.921L16.317-11.523Q16.356-11.710 16.356-11.738Q16.356-11.843 15.860-11.843Q15.763-11.874 15.763-11.972L15.786-12.073Q15.794-12.120 15.876-12.140L16.981-12.226Q17.032-12.226 17.065-12.196Q17.099-12.167 17.099-12.109L16.478-9.605Q16.720-9.882 17.030-10.042Q17.341-10.202 17.692-10.202Q18.145-10.202 18.427-9.976Q18.708-9.749 18.708-9.316Q18.708-8.976 18.575-8.575Q18.442-8.175 18.188-7.507Q18.091-7.292 18.091-7.101Q18.091-6.851 18.267-6.851Q18.575-6.851 18.794-7.167Q19.013-7.484 19.099-7.851Q19.126-7.921 19.188-7.921L19.290-7.921Q19.329-7.921 19.354-7.892Q19.380-7.862 19.380-7.827Q19.380-7.812 19.372-7.796Q19.298-7.507 19.147-7.236Q18.997-6.964 18.767-6.780Q18.536-6.597 18.251-6.597Q17.946-6.597 17.728-6.784Q17.509-6.972 17.509-7.277Q17.509-7.441 17.563-7.562Q17.806-8.206 17.948-8.648Q18.091-9.089 18.091-9.417Q18.091-9.652 17.995-9.800Q17.899-9.948 17.677-9.948Q16.849-9.948 16.290-8.874L15.786-6.866Q15.755-6.745 15.657-6.671Q15.560-6.597 15.435-6.597Q15.321-6.597 15.239-6.667Q15.157-6.737 15.157-6.851",[867],[851,3520,3521],{"transform":3478},[856,3522],{"d":3523,"fill":853,"stroke":853,"className":3524,"style":952},"M27.940-7.652L22.627-7.652Q22.549-7.659 22.500-7.708Q22.452-7.757 22.452-7.835Q22.452-7.905 22.499-7.956Q22.545-8.007 22.627-8.019L27.940-8.019Q28.014-8.007 28.061-7.956Q28.108-7.905 28.108-7.835Q28.108-7.757 28.059-7.708Q28.010-7.659 27.940-7.652M27.940-9.339L22.627-9.339Q22.549-9.347 22.500-9.396Q22.452-9.445 22.452-9.523Q22.452-9.593 22.499-9.644Q22.545-9.695 22.627-9.706L27.940-9.706Q28.014-9.695 28.061-9.644Q28.108-9.593 28.108-9.523Q28.108-9.445 28.059-9.396Q28.010-9.347 27.940-9.339",[867],[851,3526,3527],{"transform":3478},[856,3528],{"d":3529,"fill":853,"stroke":853,"className":3530,"style":952},"M34.545-6.675L31.752-6.675L31.752-6.972Q32.814-6.972 32.814-7.234L32.814-11.402Q32.385-11.187 31.705-11.187L31.705-11.484Q32.724-11.484 33.240-11.995L33.385-11.995Q33.459-11.976 33.478-11.898L33.478-7.234Q33.478-6.972 34.545-6.972",[867],[1040,3532,3534,3535,3618,3619,3634,3635,3650],{"className":3533},[1043],"The same keys ",[390,3536,3538],{"className":3537},[393],[390,3539,3541],{"className":3540,"ariaHidden":398},[397],[390,3542,3544,3547,3551,3554,3559,3562,3565,3568,3571,3574,3577,3580,3584,3587,3590,3594,3597,3600,3604,3607,3610,3614],{"className":3543},[402],[390,3545],{"className":3546,"style":407},[406],[390,3548,3550],{"className":3549},[418],"⟨",[390,3552,575],{"className":3553},[411],[390,3555,3558],{"className":3556},[3557],"mpunct",",",[390,3560],{"className":3561,"style":463},[462],[390,3563,789],{"className":3564},[411],[390,3566,3558],{"className":3567},[3557],[390,3569],{"className":3570,"style":463},[462],[390,3572,1238],{"className":3573},[411],[390,3575,3558],{"className":3576},[3557],[390,3578],{"className":3579,"style":463},[462],[390,3581,3583],{"className":3582},[411],"4",[390,3585,3558],{"className":3586},[3557],[390,3588],{"className":3589,"style":463},[462],[390,3591,3593],{"className":3592},[411],"5",[390,3595,3558],{"className":3596},[3557],[390,3598],{"className":3599,"style":463},[462],[390,3601,3603],{"className":3602},[411],"6",[390,3605,3558],{"className":3606},[3557],[390,3608],{"className":3609,"style":463},[462],[390,3611,3613],{"className":3612},[411],"7",[390,3615,3617],{"className":3616},[427],"⟩"," inserted in order: a plain BST degenerates to height ",[390,3620,3622],{"className":3621},[393],[390,3623,3625],{"className":3624,"ariaHidden":398},[397],[390,3626,3628,3631],{"className":3627},[402],[390,3629],{"className":3630,"style":1706},[406],[390,3632,3603],{"className":3633},[411],", a red-black tree stays at height ",[390,3636,3638],{"className":3637},[393],[390,3639,3641],{"className":3640,"ariaHidden":398},[397],[390,3642,3644,3647],{"className":3643},[402],[390,3645],{"className":3646,"style":1706},[406],[390,3648,789],{"className":3649},[411]," with equal black-heights",[381,3652,3653,3654,3687,3688,3703,3704],{},"AVL trees reach the same ",[390,3655,3657],{"className":3656},[393],[390,3658,3660],{"className":3659,"ariaHidden":398},[397],[390,3661,3663,3666,3669,3672,3678,3681,3684],{"className":3662},[402],[390,3664],{"className":3665,"style":407},[406],[390,3667,414],{"className":3668,"style":413},[411,412],[390,3670,419],{"className":3671},[418],[390,3673,3675],{"className":3674},[452],[390,3676,458],{"className":3677,"style":457},[411,456],[390,3679],{"className":3680,"style":463},[462],[390,3682,467],{"className":3683},[411,412],[390,3685,428],{"className":3686},[427]," guarantee with a different invariant, namely\nthat the heights of any node's two subtrees differ by at most ",[390,3689,3691],{"className":3690},[393],[390,3692,3694],{"className":3693,"ariaHidden":398},[397],[390,3695,3697,3700],{"className":3696},[402],[390,3698],{"className":3699,"style":1706},[406],[390,3701,575],{"className":3702},[411],", enforced by rotations.\nAVL trees are more rigidly balanced (shorter, faster lookups) but do more\nrotations on updates; red-black trees are looser and rebalance more cheaply,\nwhich is why they back many standard-library ordered maps.",[567,3705,3706],{},[385,3707,3583],{"href":3708,"ariaDescribedBy":3709,"dataFootnoteRef":376,"id":3710},"#user-content-fn-skiena-balanced",[573],"user-content-fnref-skiena-balanced",[623,3712,3714],{"id":3713},"b-trees-balance-for-the-disk","B-trees: balance for the disk",[381,3716,3717,3718,3721,3722,3725,3726,3771,3772,3802,3803,3818,3819,3844],{},"Red-black and AVL trees minimize the ",[634,3719,3720],{},"number of nodes"," on a root-to-leaf path.\nBut when the data lives on a disk or SSD, the cost that dominates is not\ncomparisons but ",[498,3723,3724],{},"block transfers",": reading one page from disk is millions\nof times slower than a memory comparison. A binary tree of ",[390,3727,3729],{"className":3728},[393],[390,3730,3732],{"className":3731,"ariaHidden":398},[397],[390,3733,3735,3738,3741],{"className":3734},[402],[390,3736],{"className":3737,"style":1811},[406],[390,3739,575],{"className":3740},[411],[390,3742,3744,3747],{"className":3743},[411],[390,3745,1778],{"className":3746},[411],[390,3748,3750],{"className":3749},[756],[390,3751,3753],{"className":3752},[760],[390,3754,3756],{"className":3755},[765],[390,3757,3759],{"className":3758,"style":1811},[769],[390,3760,3761,3764],{"style":1666},[390,3762],{"className":3763,"style":778},[777],[390,3765,3767],{"className":3766},[782,783,784,785],[390,3768,3770],{"className":3769},[411,785],"9"," keys has height\n",[390,3773,3775],{"className":3774},[393],[390,3776,3778,3792],{"className":3777,"ariaHidden":398},[397],[390,3779,3781,3785,3789],{"className":3780},[402],[390,3782],{"className":3783,"style":3784},[406],"height:0.4831em;",[390,3786,3788],{"className":3787},[529],"≈",[390,3790],{"className":3791,"style":525},[462],[390,3793,3795,3798],{"className":3794},[402],[390,3796],{"className":3797,"style":1706},[406],[390,3799,3801],{"className":3800},[411],"30",", meaning up to ",[390,3804,3806],{"className":3805},[393],[390,3807,3809],{"className":3808,"ariaHidden":398},[397],[390,3810,3812,3815],{"className":3811},[402],[390,3813],{"className":3814,"style":1706},[406],[390,3816,3801],{"className":3817},[411]," disk reads per search. That is the problem\n",[390,3820,3822],{"className":3821},[393],[390,3823,3825],{"className":3824,"ariaHidden":398},[397],[390,3826,3828,3832],{"className":3827},[402],[390,3829],{"className":3830,"style":3831},[406],"height:0.6833em;",[390,3833,3837],{"className":3834},[3835,3836],"enclosing","textsc",[390,3838,3840],{"className":3839},[411,2356],[390,3841,3843],{"className":3842},[411],"B-trees"," solve.",[381,3846,629,3847,3869,3870,3904,3905,3908,3909,820,3943,3980,3981,820,3997,4015,4016,4023],{},[390,3848,3850],{"className":3849},[393],[390,3851,3853],{"className":3852,"ariaHidden":398},[397],[390,3854,3856,3859],{"className":3855},[402],[390,3857],{"className":3858,"style":3831},[406],[390,3860,3862],{"className":3861},[3835,3836],[390,3863,3865],{"className":3864},[411,2356],[390,3866,3868],{"className":3867},[411],"B-tree"," of minimum degree ",[390,3871,3873],{"className":3872},[393],[390,3874,3876,3895],{"className":3875,"ariaHidden":398},[397],[390,3877,3879,3882,3886,3889,3892],{"className":3878},[402],[390,3880],{"className":3881,"style":2298},[406],[390,3883,3885],{"className":3884},[411,412],"t",[390,3887],{"className":3888,"style":525},[462],[390,3890,2308],{"className":3891},[529],[390,3893],{"className":3894,"style":525},[462],[390,3896,3898,3901],{"className":3897},[402],[390,3899],{"className":3900,"style":1706},[406],[390,3902,789],{"className":3903},[411]," is a balanced search tree that is\n",[634,3906,3907],{},"short and wide",": each internal node holds between ",[390,3910,3912],{"className":3911},[393],[390,3913,3915,3934],{"className":3914,"ariaHidden":398},[397],[390,3916,3918,3922,3925,3928,3931],{"className":3917},[402],[390,3919],{"className":3920,"style":3921},[406],"height:0.6984em;vertical-align:-0.0833em;",[390,3923,3885],{"className":3924},[411,412],[390,3926],{"className":3927,"style":1691},[462],[390,3929,1696],{"className":3930},[1695],[390,3932],{"className":3933,"style":1691},[462],[390,3935,3937,3940],{"className":3936},[402],[390,3938],{"className":3939,"style":1706},[406],[390,3941,575],{"className":3942},[411],[390,3944,3946],{"className":3945},[393],[390,3947,3949,3971],{"className":3948,"ariaHidden":398},[397],[390,3950,3952,3956,3959,3962,3965,3968],{"className":3951},[402],[390,3953],{"className":3954,"style":3955},[406],"height:0.7278em;vertical-align:-0.0833em;",[390,3957,789],{"className":3958},[411],[390,3960,3885],{"className":3961},[411,412],[390,3963],{"className":3964,"style":1691},[462],[390,3966,1696],{"className":3967},[1695],[390,3969],{"className":3970,"style":1691},[462],[390,3972,3974,3977],{"className":3973},[402],[390,3975],{"className":3976,"style":1706},[406],[390,3978,575],{"className":3979},[411]," keys (kept\nsorted within the node) and correspondingly between ",[390,3982,3984],{"className":3983},[393],[390,3985,3987],{"className":3986,"ariaHidden":398},[397],[390,3988,3990,3994],{"className":3989},[402],[390,3991],{"className":3992,"style":3993},[406],"height:0.6151em;",[390,3995,3885],{"className":3996},[411,412],[390,3998,4000],{"className":3999},[393],[390,4001,4003],{"className":4002,"ariaHidden":398},[397],[390,4004,4006,4009,4012],{"className":4005},[402],[390,4007],{"className":4008,"style":1706},[406],[390,4010,789],{"className":4011},[411],[390,4013,3885],{"className":4014},[411,412]," children.",[567,4017,4018],{},[385,4019,3593],{"href":4020,"ariaDescribedBy":4021,"dataFootnoteRef":376,"id":4022},"#user-content-fn-clrs-btree",[573],"user-content-fnref-clrs-btree"," Its\ndefining structural rules:",[4025,4026,4027,4168,4240],"ul",{},[1433,4028,4029,4030,820,4063,4099,4100,4115,4116,4133,4134,4015],{},"Every node holds between ",[390,4031,4033],{"className":4032},[393],[390,4034,4036,4054],{"className":4035,"ariaHidden":398},[397],[390,4037,4039,4042,4045,4048,4051],{"className":4038},[402],[390,4040],{"className":4041,"style":3921},[406],[390,4043,3885],{"className":4044},[411,412],[390,4046],{"className":4047,"style":1691},[462],[390,4049,1696],{"className":4050},[1695],[390,4052],{"className":4053,"style":1691},[462],[390,4055,4057,4060],{"className":4056},[402],[390,4058],{"className":4059,"style":1706},[406],[390,4061,575],{"className":4062},[411],[390,4064,4066],{"className":4065},[393],[390,4067,4069,4090],{"className":4068,"ariaHidden":398},[397],[390,4070,4072,4075,4078,4081,4084,4087],{"className":4071},[402],[390,4073],{"className":4074,"style":3955},[406],[390,4076,789],{"className":4077},[411],[390,4079,3885],{"className":4080},[411,412],[390,4082],{"className":4083,"style":1691},[462],[390,4085,1696],{"className":4086},[1695],[390,4088],{"className":4089,"style":1691},[462],[390,4091,4093,4096],{"className":4092},[402],[390,4094],{"className":4095,"style":1706},[406],[390,4097,575],{"className":4098},[411]," keys (the root may hold as few as\n",[390,4101,4103],{"className":4102},[393],[390,4104,4106],{"className":4105,"ariaHidden":398},[397],[390,4107,4109,4112],{"className":4108},[402],[390,4110],{"className":4111,"style":1706},[406],[390,4113,575],{"className":4114},[411],"); a node with ",[390,4117,4119],{"className":4118},[393],[390,4120,4122],{"className":4121,"ariaHidden":398},[397],[390,4123,4125,4128],{"className":4124},[402],[390,4126],{"className":4127,"style":518},[406],[390,4129,4132],{"className":4130,"style":4131},[411,412],"margin-right:0.0315em;","k"," keys has exactly ",[390,4135,4137],{"className":4136},[393],[390,4138,4140,4159],{"className":4139,"ariaHidden":398},[397],[390,4141,4143,4147,4150,4153,4156],{"className":4142},[402],[390,4144],{"className":4145,"style":4146},[406],"height:0.7778em;vertical-align:-0.0833em;",[390,4148,4132],{"className":4149,"style":4131},[411,412],[390,4151],{"className":4152,"style":1691},[462],[390,4154,2129],{"className":4155},[1695],[390,4157],{"className":4158,"style":1691},[462],[390,4160,4162,4165],{"className":4161},[402],[390,4163],{"className":4164,"style":1706},[406],[390,4166,575],{"className":4167},[411],[1433,4169,4170,4171,4188,4189,4223,4224,4239],{},"The keys in a node partition the key space, just as in a BST: child ",[390,4172,4174],{"className":4173},[393],[390,4175,4177],{"className":4176,"ariaHidden":398},[397],[390,4178,4180,4184],{"className":4179},[402],[390,4181],{"className":4182,"style":4183},[406],"height:0.6595em;",[390,4185,4187],{"className":4186},[411,412],"i"," holds\nall keys between key ",[390,4190,4192],{"className":4191},[393],[390,4193,4195,4214],{"className":4194,"ariaHidden":398},[397],[390,4196,4198,4202,4205,4208,4211],{"className":4197},[402],[390,4199],{"className":4200,"style":4201},[406],"height:0.7429em;vertical-align:-0.0833em;",[390,4203,4187],{"className":4204},[411,412],[390,4206],{"className":4207,"style":1691},[462],[390,4209,1696],{"className":4210},[1695],[390,4212],{"className":4213,"style":1691},[462],[390,4215,4217,4220],{"className":4216},[402],[390,4218],{"className":4219,"style":1706},[406],[390,4221,575],{"className":4222},[411]," and key ",[390,4225,4227],{"className":4226},[393],[390,4228,4230],{"className":4229,"ariaHidden":398},[397],[390,4231,4233,4236],{"className":4232},[402],[390,4234],{"className":4235,"style":4183},[406],[390,4237,4187],{"className":4238},[411,412]," of the node.",[1433,4241,4242,4245],{},[498,4243,4244],{},"All leaves are at the same depth",", so the tree is perfectly height-balanced\nby construction.",[838,4247,4249,4459],{"className":4248},[841,842],[844,4250,4254],{"xmlns":846,"width":4251,"height":4252,"viewBox":4253},"406.414","153.760","-75 -75 304.810 115.320",[851,4255,4256,4259,4266,4269,4285,4288,4303,4306,4309,4312,4315,4318,4333,4336,4351,4354,4369,4372,4375,4378,4381,4384,4387,4390,4405,4408,4423,4426,4441,4444,4447,4450,4453,4456],{"stroke":853,"style":854},[856,4257],{"fill":858,"d":4258},"M64.597-54.998H86.07V-72.07H64.597Z",[851,4260,4262],{"transform":4261},"translate(-8.736 2.9)",[856,4263],{"d":4264,"fill":853,"stroke":853,"className":4265,"style":2838},"M83.352-63.534L80.320-63.534L80.320-63.850Q81.471-63.850 81.471-64.145L81.471-68.869Q80.983-68.636 80.262-68.636L80.262-68.952Q81.392-68.952 81.954-69.528L82.099-69.528Q82.134-69.528 82.167-69.495Q82.200-69.462 82.200-69.427L82.200-64.145Q82.200-63.850 83.352-63.850L83.352-63.534M85.685-63.776Q85.685-64.413 85.841-65.059Q85.997-65.705 86.289-66.311Q86.582-66.918 86.990-67.467L87.808-68.575L86.779-68.575Q85.136-68.575 85.088-68.531Q84.982-68.403 84.863-67.700L84.578-67.700L84.872-69.616L85.162-69.616L85.162-69.590Q85.162-69.427 85.727-69.379Q86.292-69.330 86.837-69.330L88.555-69.330L88.555-69.124Q88.555-69.106 88.553-69.097Q88.550-69.089 88.546-69.080L87.258-67.331Q87.008-66.979 86.861-66.553Q86.714-66.127 86.648-65.663Q86.582-65.200 86.569-64.789Q86.555-64.378 86.555-63.776Q86.555-63.596 86.430-63.466Q86.305-63.336 86.125-63.336Q86.006-63.336 85.903-63.393Q85.799-63.451 85.742-63.554Q85.685-63.657 85.685-63.776",[867],[856,4267],{"fill":858,"d":4268},"M-36.906-3.383H-9.78v-17.072h-27.126Z",[851,4270,4272,4279],{"stroke":858,"fontFamily":4271,"fontSize":3770},"cmr9",[851,4273,4275],{"transform":4274},"translate(-110.239 54.515)",[856,4276],{"d":4277,"fill":853,"stroke":853,"className":4278,"style":2838},"M77.701-64.540Q77.842-64.127 78.202-63.875Q78.563-63.622 78.998-63.622Q79.450-63.622 79.716-63.875Q79.982-64.127 80.085-64.512Q80.188-64.896 80.188-65.353Q80.188-67.054 79.279-67.054Q78.958-67.054 78.729-66.960Q78.501-66.865 78.371-66.746Q78.242-66.628 78.130-66.489Q78.018-66.351 77.982-66.342L77.899-66.342Q77.855-66.342 77.824-66.373Q77.793-66.404 77.793-66.452L77.793-69.449Q77.793-69.480 77.829-69.504Q77.864-69.528 77.890-69.528L77.930-69.528Q78.563-69.238 79.235-69.238Q79.907-69.238 80.549-69.528L80.575-69.528Q80.606-69.528 80.639-69.506Q80.672-69.484 80.672-69.449L80.672-69.348Q80.672-69.344 80.663-69.326Q80.654-69.308 80.654-69.304Q80.338-68.909 79.868-68.687Q79.397-68.465 78.901-68.465Q78.492-68.465 78.110-68.575L78.110-66.856Q78.567-67.313 79.279-67.313Q79.789-67.313 80.188-67.032Q80.588-66.751 80.810-66.296Q81.032-65.841 81.032-65.336Q81.032-64.786 80.753-64.327Q80.474-63.868 80.008-63.602Q79.542-63.336 78.998-63.336Q78.558-63.336 78.174-63.563Q77.789-63.789 77.561-64.169Q77.332-64.549 77.332-64.993Q77.332-65.186 77.464-65.318Q77.596-65.450 77.793-65.450Q77.925-65.450 78.029-65.391Q78.132-65.331 78.191-65.228Q78.250-65.125 78.250-64.993Q78.250-64.795 78.123-64.663Q77.996-64.532 77.793-64.532Q77.732-64.532 77.701-64.540",[867],[851,4280,4281],{"transform":4274},[856,4282],{"d":4283,"fill":853,"stroke":853,"className":4284,"style":2838},"M91.574-63.534L88.542-63.534L88.542-63.850Q89.693-63.850 89.693-64.145L89.693-68.869Q89.205-68.636 88.484-68.636L88.484-68.952Q89.614-68.952 90.176-69.528L90.321-69.528Q90.356-69.528 90.389-69.495Q90.422-69.462 90.422-69.427L90.422-64.145Q90.422-63.850 91.574-63.850L91.574-63.534M96.192-63.534L93.160-63.534L93.160-63.850Q94.312-63.850 94.312-64.145L94.312-68.869Q93.824-68.636 93.103-68.636L93.103-68.952Q94.232-68.952 94.795-69.528L94.940-69.528Q94.975-69.528 95.008-69.495Q95.041-69.462 95.041-69.427L95.041-64.145Q95.041-63.850 96.192-63.850",[867],[856,4286],{"fill":858,"d":4287},"M160.447-3.383h31.75v-17.072h-31.75Z",[851,4289,4290,4297],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4291,4293],{"transform":4292},"translate(87.114 54.515)",[856,4294],{"d":4295,"fill":853,"stroke":853,"className":4296,"style":2838},"M80.782-63.534L77.332-63.534L77.332-63.767Q77.332-63.780 77.363-63.811L78.817-65.388Q79.283-65.885 79.536-66.190Q79.789-66.496 79.980-66.907Q80.171-67.318 80.171-67.757Q80.171-68.346 79.848-68.779Q79.525-69.212 78.945-69.212Q78.681-69.212 78.435-69.102Q78.189-68.992 78.013-68.805Q77.837-68.618 77.741-68.368L77.820-68.368Q78.022-68.368 78.165-68.232Q78.308-68.096 78.308-67.880Q78.308-67.674 78.165-67.535Q78.022-67.397 77.820-67.397Q77.618-67.397 77.475-67.540Q77.332-67.682 77.332-67.880Q77.332-68.342 77.569-68.715Q77.807-69.089 78.207-69.308Q78.606-69.528 79.055-69.528Q79.578-69.528 80.032-69.313Q80.487-69.097 80.760-68.698Q81.032-68.298 81.032-67.757Q81.032-67.362 80.861-67.008Q80.689-66.654 80.424-66.375Q80.158-66.096 79.707-65.711Q79.257-65.327 79.178-65.252L78.154-64.290L78.971-64.290Q79.622-64.290 80.059-64.301Q80.496-64.312 80.527-64.334Q80.597-64.417 80.652-64.657Q80.707-64.896 80.747-65.164L81.032-65.164L80.782-63.534M82.395-64.255L82.351-64.255Q82.553-63.938 82.939-63.780Q83.326-63.622 83.752-63.622Q84.289-63.622 84.528-64.057Q84.768-64.492 84.768-65.072Q84.768-65.652 84.521-66.092Q84.275-66.531 83.744-66.531L83.124-66.531Q83.098-66.531 83.065-66.560Q83.032-66.588 83.032-66.610L83.032-66.711Q83.032-66.742 83.060-66.766Q83.089-66.790 83.124-66.790L83.643-66.830Q84.108-66.830 84.354-67.302Q84.601-67.775 84.601-68.293Q84.601-68.720 84.387-68.994Q84.174-69.269 83.752-69.269Q83.410-69.269 83.084-69.139Q82.759-69.010 82.575-68.755L82.601-68.755Q82.803-68.755 82.939-68.614Q83.076-68.473 83.076-68.276Q83.076-68.078 82.942-67.944Q82.808-67.810 82.610-67.810Q82.408-67.810 82.269-67.944Q82.131-68.078 82.131-68.276Q82.131-68.865 82.634-69.196Q83.137-69.528 83.752-69.528Q84.130-69.528 84.532-69.388Q84.935-69.247 85.203-68.968Q85.471-68.689 85.471-68.293Q85.471-67.744 85.117-67.307Q84.763-66.869 84.223-66.685Q84.614-66.606 84.959-66.382Q85.304-66.158 85.515-65.817Q85.726-65.476 85.726-65.081Q85.726-64.699 85.563-64.376Q85.400-64.053 85.108-63.817Q84.816-63.582 84.469-63.459Q84.122-63.336 83.752-63.336Q83.304-63.336 82.874-63.497Q82.443-63.657 82.162-63.984Q81.880-64.312 81.880-64.769Q81.880-64.984 82.028-65.127Q82.175-65.270 82.395-65.270Q82.605-65.270 82.750-65.125Q82.896-64.980 82.896-64.769Q82.896-64.558 82.748-64.406Q82.601-64.255 82.395-64.255",[867],[851,4298,4299],{"transform":4292},[856,4300],{"d":4301,"fill":853,"stroke":853,"className":4302,"style":2838},"M93.193-64.255L93.149-64.255Q93.351-63.938 93.738-63.780Q94.125-63.622 94.551-63.622Q95.087-63.622 95.326-64.057Q95.566-64.492 95.566-65.072Q95.566-65.652 95.320-66.092Q95.074-66.531 94.542-66.531L93.922-66.531Q93.896-66.531 93.863-66.560Q93.830-66.588 93.830-66.610L93.830-66.711Q93.830-66.742 93.859-66.766Q93.887-66.790 93.922-66.790L94.441-66.830Q94.907-66.830 95.153-67.302Q95.399-67.775 95.399-68.293Q95.399-68.720 95.186-68.994Q94.973-69.269 94.551-69.269Q94.208-69.269 93.883-69.139Q93.558-69.010 93.373-68.755L93.399-68.755Q93.602-68.755 93.738-68.614Q93.874-68.473 93.874-68.276Q93.874-68.078 93.740-67.944Q93.606-67.810 93.408-67.810Q93.206-67.810 93.068-67.944Q92.929-68.078 92.929-68.276Q92.929-68.865 93.432-69.196Q93.936-69.528 94.551-69.528Q94.929-69.528 95.331-69.388Q95.733-69.247 96.001-68.968Q96.269-68.689 96.269-68.293Q96.269-67.744 95.915-67.307Q95.562-66.869 95.021-66.685Q95.412-66.606 95.757-66.382Q96.102-66.158 96.313-65.817Q96.524-65.476 96.524-65.081Q96.524-64.699 96.361-64.376Q96.199-64.053 95.907-63.817Q95.614-63.582 95.267-63.459Q94.920-63.336 94.551-63.336Q94.103-63.336 93.672-63.497Q93.241-63.657 92.960-63.984Q92.679-64.312 92.679-64.769Q92.679-64.984 92.826-65.127Q92.973-65.270 93.193-65.270Q93.404-65.270 93.549-65.125Q93.694-64.980 93.694-64.769Q93.694-64.558 93.547-64.406Q93.399-64.255 93.193-64.255M100.817-63.534L97.785-63.534L97.785-63.850Q98.937-63.850 98.937-64.145L98.937-68.869Q98.449-68.636 97.728-68.636L97.728-68.952Q98.857-68.952 99.420-69.528L99.565-69.528Q99.600-69.528 99.633-69.495Q99.666-69.462 99.666-69.427L99.666-64.145Q99.666-63.850 100.817-63.850",[867],[856,4304],{"fill":858,"d":4305},"M75.333-54.798-21.453-21.31",[856,4307],{"stroke":858,"d":4308},"m-23.343-20.655 3.547.466-1.657-1.12.61-1.904",[856,4310],{"fill":858,"d":4311},"m75.333-54.798 99.094 33.502",[856,4313],{"stroke":858,"d":4314},"m176.322-20.655-2.519-2.54.624 1.9-1.649 1.13",[856,4316],{"fill":858,"d":4317},"M-68.737 36.85h22.5V19.78h-22.5Z",[851,4319,4320,4327],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4321,4323],{"transform":4322},"translate(-142.07 94.749)",[856,4324],{"d":4325,"fill":853,"stroke":853,"className":4326,"style":2838},"M80.782-63.534L77.332-63.534L77.332-63.767Q77.332-63.780 77.363-63.811L78.817-65.388Q79.283-65.885 79.536-66.190Q79.789-66.496 79.980-66.907Q80.171-67.318 80.171-67.757Q80.171-68.346 79.848-68.779Q79.525-69.212 78.945-69.212Q78.681-69.212 78.435-69.102Q78.189-68.992 78.013-68.805Q77.837-68.618 77.741-68.368L77.820-68.368Q78.022-68.368 78.165-68.232Q78.308-68.096 78.308-67.880Q78.308-67.674 78.165-67.535Q78.022-67.397 77.820-67.397Q77.618-67.397 77.475-67.540Q77.332-67.682 77.332-67.880Q77.332-68.342 77.569-68.715Q77.807-69.089 78.207-69.308Q78.606-69.528 79.055-69.528Q79.578-69.528 80.032-69.313Q80.487-69.097 80.760-68.698Q81.032-68.298 81.032-67.757Q81.032-67.362 80.861-67.008Q80.689-66.654 80.424-66.375Q80.158-66.096 79.707-65.711Q79.257-65.327 79.178-65.252L78.154-64.290L78.971-64.290Q79.622-64.290 80.059-64.301Q80.496-64.312 80.527-64.334Q80.597-64.417 80.652-64.657Q80.707-64.896 80.747-65.164L81.032-65.164",[867],[851,4328,4329],{"transform":4322},[856,4330],{"d":4331,"fill":853,"stroke":853,"className":4332,"style":2838},"M88.568-64.255L88.524-64.255Q88.726-63.938 89.113-63.780Q89.500-63.622 89.926-63.622Q90.462-63.622 90.701-64.057Q90.941-64.492 90.941-65.072Q90.941-65.652 90.695-66.092Q90.449-66.531 89.917-66.531L89.297-66.531Q89.271-66.531 89.238-66.560Q89.205-66.588 89.205-66.610L89.205-66.711Q89.205-66.742 89.234-66.766Q89.262-66.790 89.297-66.790L89.816-66.830Q90.282-66.830 90.528-67.302Q90.774-67.775 90.774-68.293Q90.774-68.720 90.561-68.994Q90.348-69.269 89.926-69.269Q89.583-69.269 89.258-69.139Q88.933-69.010 88.748-68.755L88.774-68.755Q88.977-68.755 89.113-68.614Q89.249-68.473 89.249-68.276Q89.249-68.078 89.115-67.944Q88.981-67.810 88.783-67.810Q88.581-67.810 88.443-67.944Q88.304-68.078 88.304-68.276Q88.304-68.865 88.807-69.196Q89.311-69.528 89.926-69.528Q90.304-69.528 90.706-69.388Q91.108-69.247 91.376-68.968Q91.644-68.689 91.644-68.293Q91.644-67.744 91.290-67.307Q90.937-66.869 90.396-66.685Q90.787-66.606 91.132-66.382Q91.477-66.158 91.688-65.817Q91.899-65.476 91.899-65.081Q91.899-64.699 91.736-64.376Q91.574-64.053 91.282-63.817Q90.989-63.582 90.642-63.459Q90.295-63.336 89.926-63.336Q89.478-63.336 89.047-63.497Q88.616-63.657 88.335-63.984Q88.054-64.312 88.054-64.769Q88.054-64.984 88.201-65.127Q88.348-65.270 88.568-65.270Q88.779-65.270 88.924-65.125Q89.069-64.980 89.069-64.769Q89.069-64.558 88.922-64.406Q88.774-64.255 88.568-64.255",[867],[856,4334],{"fill":858,"d":4335},"M-34.593 36.85h22.5V19.78h-22.5Z",[851,4337,4338,4345],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4339,4341],{"transform":4340},"translate(-107.927 94.749)",[856,4342],{"d":4343,"fill":853,"stroke":853,"className":4344,"style":2838},"M78.497-63.776Q78.497-64.413 78.653-65.059Q78.809-65.705 79.101-66.311Q79.393-66.918 79.802-67.467L80.619-68.575L79.591-68.575Q77.947-68.575 77.899-68.531Q77.793-68.403 77.675-67.700L77.389-67.700L77.684-69.616L77.974-69.616L77.974-69.590Q77.974-69.427 78.538-69.379Q79.103-69.330 79.648-69.330L81.366-69.330L81.366-69.124Q81.366-69.106 81.364-69.097Q81.362-69.089 81.357-69.080L80.070-67.331Q79.819-66.979 79.672-66.553Q79.525-66.127 79.459-65.663Q79.393-65.200 79.380-64.789Q79.367-64.378 79.367-63.776Q79.367-63.596 79.241-63.466Q79.116-63.336 78.936-63.336Q78.817-63.336 78.714-63.393Q78.611-63.451 78.554-63.554Q78.497-63.657 78.497-63.776",[867],[851,4346,4347],{"transform":4340},[856,4348],{"d":4349,"fill":853,"stroke":853,"className":4350,"style":2838},"M88.730-63.921Q88.977-63.622 89.583-63.622Q89.864-63.622 90.104-63.760Q90.343-63.899 90.521-64.121Q90.699-64.343 90.809-64.606Q91.042-65.182 91.042-66.298Q90.875-65.933 90.570-65.709Q90.264-65.485 89.882-65.485Q89.346-65.485 88.930-65.764Q88.515-66.043 88.284-66.509Q88.054-66.975 88.054-67.502Q88.054-67.915 88.201-68.284Q88.348-68.654 88.612-68.930Q88.875-69.207 89.245-69.368Q89.614-69.528 90.027-69.528Q90.585-69.528 90.959-69.236Q91.332-68.944 91.536-68.480Q91.741-68.016 91.820-67.500Q91.899-66.984 91.899-66.452Q91.899-65.736 91.631-65.013Q91.363-64.290 90.840-63.813Q90.317-63.336 89.592-63.336Q89.042-63.336 88.665-63.585Q88.287-63.833 88.287-64.351Q88.287-64.470 88.344-64.573Q88.401-64.677 88.502-64.736Q88.603-64.795 88.730-64.795Q88.915-64.795 89.038-64.663Q89.161-64.532 89.161-64.351Q89.161-64.176 89.034-64.048Q88.906-63.921 88.730-63.921M89.926-65.749Q90.295-65.749 90.543-65.991Q90.792-66.232 90.908-66.590Q91.024-66.949 91.024-67.322Q91.024-67.432 91.016-67.485Q91.020-67.498 91.022-67.509Q91.024-67.520 91.024-67.537Q91.024-68.192 90.809-68.731Q90.594-69.269 90.027-69.269Q89.667-69.269 89.438-69.119Q89.209-68.970 89.093-68.713Q88.977-68.456 88.944-68.175Q88.911-67.893 88.911-67.520L88.911-67.485Q88.911-67.159 88.937-66.872Q88.963-66.584 89.062-66.325Q89.161-66.065 89.372-65.907Q89.583-65.749 89.926-65.749",[867],[856,4352],{"fill":858,"d":4353},"M-5.075 36.85h31.75V19.78h-31.75Z",[851,4355,4356,4363],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4357,4359],{"transform":4358},"translate(-78.408 94.749)",[856,4360],{"d":4361,"fill":853,"stroke":853,"className":4362,"style":2838},"M80.782-63.534L77.750-63.534L77.750-63.850Q78.901-63.850 78.901-64.145L78.901-68.869Q78.413-68.636 77.692-68.636L77.692-68.952Q78.822-68.952 79.384-69.528L79.529-69.528Q79.564-69.528 79.597-69.495Q79.630-69.462 79.630-69.427L79.630-64.145Q79.630-63.850 80.782-63.850L80.782-63.534M82.395-64.255L82.351-64.255Q82.553-63.938 82.939-63.780Q83.326-63.622 83.752-63.622Q84.289-63.622 84.528-64.057Q84.768-64.492 84.768-65.072Q84.768-65.652 84.521-66.092Q84.275-66.531 83.744-66.531L83.124-66.531Q83.098-66.531 83.065-66.560Q83.032-66.588 83.032-66.610L83.032-66.711Q83.032-66.742 83.060-66.766Q83.089-66.790 83.124-66.790L83.643-66.830Q84.108-66.830 84.354-67.302Q84.601-67.775 84.601-68.293Q84.601-68.720 84.387-68.994Q84.174-69.269 83.752-69.269Q83.410-69.269 83.084-69.139Q82.759-69.010 82.575-68.755L82.601-68.755Q82.803-68.755 82.939-68.614Q83.076-68.473 83.076-68.276Q83.076-68.078 82.942-67.944Q82.808-67.810 82.610-67.810Q82.408-67.810 82.269-67.944Q82.131-68.078 82.131-68.276Q82.131-68.865 82.634-69.196Q83.137-69.528 83.752-69.528Q84.130-69.528 84.532-69.388Q84.935-69.247 85.203-68.968Q85.471-68.689 85.471-68.293Q85.471-67.744 85.117-67.307Q84.763-66.869 84.223-66.685Q84.614-66.606 84.959-66.382Q85.304-66.158 85.515-65.817Q85.726-65.476 85.726-65.081Q85.726-64.699 85.563-64.376Q85.400-64.053 85.108-63.817Q84.816-63.582 84.469-63.459Q84.122-63.336 83.752-63.336Q83.304-63.336 82.874-63.497Q82.443-63.657 82.162-63.984Q81.880-64.312 81.880-64.769Q81.880-64.984 82.028-65.127Q82.175-65.270 82.395-65.270Q82.605-65.270 82.750-65.125Q82.896-64.980 82.896-64.769Q82.896-64.558 82.748-64.406Q82.601-64.255 82.395-64.255",[867],[851,4364,4365],{"transform":4358},[856,4366],{"d":4367,"fill":853,"stroke":853,"className":4368,"style":2838},"M96.199-63.534L93.167-63.534L93.167-63.850Q94.318-63.850 94.318-64.145L94.318-68.869Q93.830-68.636 93.109-68.636L93.109-68.952Q94.239-68.952 94.801-69.528L94.946-69.528Q94.981-69.528 95.014-69.495Q95.047-69.462 95.047-69.427L95.047-64.145Q95.047-63.850 96.199-63.850L96.199-63.534M97.737-64.540Q97.877-64.127 98.238-63.875Q98.598-63.622 99.033-63.622Q99.486-63.622 99.752-63.875Q100.018-64.127 100.121-64.512Q100.224-64.896 100.224-65.353Q100.224-67.054 99.314-67.054Q98.994-67.054 98.765-66.960Q98.537-66.865 98.407-66.746Q98.277-66.628 98.165-66.489Q98.053-66.351 98.018-66.342L97.935-66.342Q97.891-66.342 97.860-66.373Q97.829-66.404 97.829-66.452L97.829-69.449Q97.829-69.480 97.864-69.504Q97.899-69.528 97.926-69.528L97.965-69.528Q98.598-69.238 99.271-69.238Q99.943-69.238 100.584-69.528L100.611-69.528Q100.642-69.528 100.675-69.506Q100.708-69.484 100.708-69.449L100.708-69.348Q100.708-69.344 100.699-69.326Q100.690-69.308 100.690-69.304Q100.374-68.909 99.903-68.687Q99.433-68.465 98.937-68.465Q98.528-68.465 98.146-68.575L98.146-66.856Q98.603-67.313 99.314-67.313Q99.824-67.313 100.224-67.032Q100.624-66.751 100.846-66.296Q101.068-65.841 101.068-65.336Q101.068-64.786 100.789-64.327Q100.510-63.868 100.044-63.602Q99.578-63.336 99.033-63.336Q98.594-63.336 98.209-63.563Q97.825-63.789 97.596-64.169Q97.368-64.549 97.368-64.993Q97.368-65.186 97.500-65.318Q97.631-65.450 97.829-65.450Q97.961-65.450 98.064-65.391Q98.167-65.331 98.227-65.228Q98.286-65.125 98.286-64.993Q98.286-64.795 98.159-64.663Q98.031-64.532 97.829-64.532Q97.768-64.532 97.737-64.540",[867],[856,4370],{"fill":858,"d":4371},"m-23.343-3.183-32.48 21.652",[856,4373],{"stroke":858,"d":4374},"m-57.486 19.579 3.55-.444-1.886-.666.11-1.996",[856,4376],{"fill":858,"d":4377},"M-23.343-3.183v20.762",[856,4379],{"stroke":858,"d":4380},"m-23.343 19.579 1.6-3.2-1.6 1.2-1.6-1.2",[856,4382],{"fill":858,"d":4383},"m-23.343-3.183 32.48 21.652",[856,4385],{"stroke":858,"d":4386},"m10.8 19.579-1.775-3.106.111 1.996-1.886.666",[856,4388],{"fill":858,"d":4389},"M126.303 36.85h31.75V19.78h-31.75Z",[851,4391,4392,4399],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4393,4395],{"transform":4394},"translate(52.97 94.749)",[856,4396],{"d":4397,"fill":853,"stroke":853,"className":4398,"style":2838},"M80.782-63.534L77.750-63.534L77.750-63.850Q78.901-63.850 78.901-64.145L78.901-68.869Q78.413-68.636 77.692-68.636L77.692-68.952Q78.822-68.952 79.384-69.528L79.529-69.528Q79.564-69.528 79.597-69.495Q79.630-69.462 79.630-69.427L79.630-64.145Q79.630-63.850 80.782-63.850L80.782-63.534M82.557-63.921Q82.803-63.622 83.410-63.622Q83.691-63.622 83.930-63.760Q84.170-63.899 84.348-64.121Q84.526-64.343 84.636-64.606Q84.869-65.182 84.869-66.298Q84.702-65.933 84.396-65.709Q84.091-65.485 83.708-65.485Q83.172-65.485 82.757-65.764Q82.342-66.043 82.111-66.509Q81.880-66.975 81.880-67.502Q81.880-67.915 82.028-68.284Q82.175-68.654 82.438-68.930Q82.702-69.207 83.071-69.368Q83.440-69.528 83.854-69.528Q84.412-69.528 84.785-69.236Q85.159-68.944 85.363-68.480Q85.567-68.016 85.646-67.500Q85.726-66.984 85.726-66.452Q85.726-65.736 85.458-65.013Q85.189-64.290 84.667-63.813Q84.144-63.336 83.418-63.336Q82.869-63.336 82.491-63.585Q82.113-63.833 82.113-64.351Q82.113-64.470 82.170-64.573Q82.228-64.677 82.329-64.736Q82.430-64.795 82.557-64.795Q82.742-64.795 82.865-64.663Q82.988-64.532 82.988-64.351Q82.988-64.176 82.860-64.048Q82.733-63.921 82.557-63.921M83.752-65.749Q84.122-65.749 84.370-65.991Q84.618-66.232 84.735-66.590Q84.851-66.949 84.851-67.322Q84.851-67.432 84.842-67.485Q84.847-67.498 84.849-67.509Q84.851-67.520 84.851-67.537Q84.851-68.192 84.636-68.731Q84.420-69.269 83.854-69.269Q83.493-69.269 83.265-69.119Q83.036-68.970 82.920-68.713Q82.803-68.456 82.770-68.175Q82.737-67.893 82.737-67.520L82.737-67.485Q82.737-67.159 82.764-66.872Q82.790-66.584 82.889-66.325Q82.988-66.065 83.199-65.907Q83.410-65.749 83.752-65.749",[867],[851,4400,4401],{"transform":4394},[856,4402],{"d":4403,"fill":853,"stroke":853,"className":4404,"style":2838},"M96.199-63.534L92.749-63.534L92.749-63.767Q92.749-63.780 92.780-63.811L94.234-65.388Q94.700-65.885 94.953-66.190Q95.206-66.496 95.397-66.907Q95.588-67.318 95.588-67.757Q95.588-68.346 95.265-68.779Q94.942-69.212 94.362-69.212Q94.098-69.212 93.852-69.102Q93.606-68.992 93.430-68.805Q93.254-68.618 93.158-68.368L93.237-68.368Q93.439-68.368 93.582-68.232Q93.725-68.096 93.725-67.880Q93.725-67.674 93.582-67.535Q93.439-67.397 93.237-67.397Q93.035-67.397 92.892-67.540Q92.749-67.682 92.749-67.880Q92.749-68.342 92.986-68.715Q93.224-69.089 93.624-69.308Q94.023-69.528 94.472-69.528Q94.995-69.528 95.449-69.313Q95.904-69.097 96.177-68.698Q96.449-68.298 96.449-67.757Q96.449-67.362 96.278-67.008Q96.106-66.654 95.841-66.375Q95.575-66.096 95.124-65.711Q94.674-65.327 94.595-65.252L93.571-64.290L94.388-64.290Q95.039-64.290 95.476-64.301Q95.913-64.312 95.944-64.334Q96.014-64.417 96.069-64.657Q96.124-64.896 96.164-65.164L96.449-65.164L96.199-63.534M100.817-63.534L97.785-63.534L97.785-63.850Q98.937-63.850 98.937-64.145L98.937-68.869Q98.449-68.636 97.728-68.636L97.728-68.952Q98.857-68.952 99.420-69.528L99.565-69.528Q99.600-69.528 99.633-69.495Q99.666-69.462 99.666-69.427L99.666-64.145Q99.666-63.850 100.817-63.850",[867],[856,4406],{"fill":858,"d":4407},"M160.447 36.85h31.75V19.78h-31.75Z",[851,4409,4410,4417],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4411,4413],{"transform":4412},"translate(87.114 94.749)",[856,4414],{"d":4415,"fill":853,"stroke":853,"className":4416,"style":2838},"M80.782-63.534L77.332-63.534L77.332-63.767Q77.332-63.780 77.363-63.811L78.817-65.388Q79.283-65.885 79.536-66.190Q79.789-66.496 79.980-66.907Q80.171-67.318 80.171-67.757Q80.171-68.346 79.848-68.779Q79.525-69.212 78.945-69.212Q78.681-69.212 78.435-69.102Q78.189-68.992 78.013-68.805Q77.837-68.618 77.741-68.368L77.820-68.368Q78.022-68.368 78.165-68.232Q78.308-68.096 78.308-67.880Q78.308-67.674 78.165-67.535Q78.022-67.397 77.820-67.397Q77.618-67.397 77.475-67.540Q77.332-67.682 77.332-67.880Q77.332-68.342 77.569-68.715Q77.807-69.089 78.207-69.308Q78.606-69.528 79.055-69.528Q79.578-69.528 80.032-69.313Q80.487-69.097 80.760-68.698Q81.032-68.298 81.032-67.757Q81.032-67.362 80.861-67.008Q80.689-66.654 80.424-66.375Q80.158-66.096 79.707-65.711Q79.257-65.327 79.178-65.252L78.154-64.290L78.971-64.290Q79.622-64.290 80.059-64.301Q80.496-64.312 80.527-64.334Q80.597-64.417 80.652-64.657Q80.707-64.896 80.747-65.164L81.032-65.164L80.782-63.534M83.115-63.776Q83.115-64.413 83.271-65.059Q83.427-65.705 83.719-66.311Q84.012-66.918 84.420-67.467L85.238-68.575L84.209-68.575Q82.566-68.575 82.518-68.531Q82.412-68.403 82.293-67.700L82.008-67.700L82.302-69.616L82.592-69.616L82.592-69.590Q82.592-69.427 83.157-69.379Q83.722-69.330 84.267-69.330L85.985-69.330L85.985-69.124Q85.985-69.106 85.983-69.097Q85.980-69.089 85.976-69.080L84.688-67.331Q84.438-66.979 84.291-66.553Q84.144-66.127 84.078-65.663Q84.012-65.200 83.999-64.789Q83.985-64.378 83.985-63.776Q83.985-63.596 83.860-63.466Q83.735-63.336 83.555-63.336Q83.436-63.336 83.333-63.393Q83.229-63.451 83.172-63.554Q83.115-63.657 83.115-63.776",[867],[851,4418,4419],{"transform":4412},[856,4420],{"d":4421,"fill":853,"stroke":853,"className":4422,"style":2838},"M96.199-63.534L92.749-63.534L92.749-63.767Q92.749-63.780 92.780-63.811L94.234-65.388Q94.700-65.885 94.953-66.190Q95.206-66.496 95.397-66.907Q95.588-67.318 95.588-67.757Q95.588-68.346 95.265-68.779Q94.942-69.212 94.362-69.212Q94.098-69.212 93.852-69.102Q93.606-68.992 93.430-68.805Q93.254-68.618 93.158-68.368L93.237-68.368Q93.439-68.368 93.582-68.232Q93.725-68.096 93.725-67.880Q93.725-67.674 93.582-67.535Q93.439-67.397 93.237-67.397Q93.035-67.397 92.892-67.540Q92.749-67.682 92.749-67.880Q92.749-68.342 92.986-68.715Q93.224-69.089 93.624-69.308Q94.023-69.528 94.472-69.528Q94.995-69.528 95.449-69.313Q95.904-69.097 96.177-68.698Q96.449-68.298 96.449-67.757Q96.449-67.362 96.278-67.008Q96.106-66.654 95.841-66.375Q95.575-66.096 95.124-65.711Q94.674-65.327 94.595-65.252L93.571-64.290L94.388-64.290Q95.039-64.290 95.476-64.301Q95.913-64.312 95.944-64.334Q96.014-64.417 96.069-64.657Q96.124-64.896 96.164-65.164L96.449-65.164L96.199-63.534M97.974-63.921Q98.220-63.622 98.827-63.622Q99.108-63.622 99.347-63.760Q99.587-63.899 99.765-64.121Q99.943-64.343 100.053-64.606Q100.286-65.182 100.286-66.298Q100.119-65.933 99.813-65.709Q99.508-65.485 99.125-65.485Q98.589-65.485 98.174-65.764Q97.759-66.043 97.528-66.509Q97.297-66.975 97.297-67.502Q97.297-67.915 97.445-68.284Q97.592-68.654 97.855-68.930Q98.119-69.207 98.488-69.368Q98.857-69.528 99.271-69.528Q99.829-69.528 100.202-69.236Q100.576-68.944 100.780-68.480Q100.984-68.016 101.063-67.500Q101.143-66.984 101.143-66.452Q101.143-65.736 100.875-65.013Q100.606-64.290 100.084-63.813Q99.561-63.336 98.835-63.336Q98.286-63.336 97.908-63.585Q97.530-63.833 97.530-64.351Q97.530-64.470 97.587-64.573Q97.645-64.677 97.746-64.736Q97.847-64.795 97.974-64.795Q98.159-64.795 98.282-64.663Q98.405-64.532 98.405-64.351Q98.405-64.176 98.277-64.048Q98.150-63.921 97.974-63.921M99.169-65.749Q99.539-65.749 99.787-65.991Q100.035-66.232 100.152-66.590Q100.268-66.949 100.268-67.322Q100.268-67.432 100.259-67.485Q100.264-67.498 100.266-67.509Q100.268-67.520 100.268-67.537Q100.268-68.192 100.053-68.731Q99.837-69.269 99.271-69.269Q98.910-69.269 98.682-69.119Q98.453-68.970 98.337-68.713Q98.220-68.456 98.187-68.175Q98.154-67.893 98.154-67.520L98.154-67.485Q98.154-67.159 98.181-66.872Q98.207-66.584 98.306-66.325Q98.405-66.065 98.616-65.907Q98.827-65.749 99.169-65.749",[867],[856,4424],{"fill":858,"d":4425},"M194.59 36.85h31.75V19.78h-31.75Z",[851,4427,4428,4435],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4429,4431],{"transform":4430},"translate(121.257 94.749)",[856,4432],{"d":4433,"fill":853,"stroke":853,"className":4434,"style":2838},"M77.776-64.255L77.732-64.255Q77.934-63.938 78.321-63.780Q78.708-63.622 79.134-63.622Q79.670-63.622 79.909-64.057Q80.149-64.492 80.149-65.072Q80.149-65.652 79.903-66.092Q79.657-66.531 79.125-66.531L78.505-66.531Q78.479-66.531 78.446-66.560Q78.413-66.588 78.413-66.610L78.413-66.711Q78.413-66.742 78.442-66.766Q78.470-66.790 78.505-66.790L79.024-66.830Q79.490-66.830 79.736-67.302Q79.982-67.775 79.982-68.293Q79.982-68.720 79.769-68.994Q79.556-69.269 79.134-69.269Q78.791-69.269 78.466-69.139Q78.141-69.010 77.956-68.755L77.982-68.755Q78.185-68.755 78.321-68.614Q78.457-68.473 78.457-68.276Q78.457-68.078 78.323-67.944Q78.189-67.810 77.991-67.810Q77.789-67.810 77.651-67.944Q77.512-68.078 77.512-68.276Q77.512-68.865 78.015-69.196Q78.519-69.528 79.134-69.528Q79.512-69.528 79.914-69.388Q80.316-69.247 80.584-68.968Q80.852-68.689 80.852-68.293Q80.852-67.744 80.498-67.307Q80.145-66.869 79.604-66.685Q79.995-66.606 80.340-66.382Q80.685-66.158 80.896-65.817Q81.107-65.476 81.107-65.081Q81.107-64.699 80.944-64.376Q80.782-64.053 80.490-63.817Q80.197-63.582 79.850-63.459Q79.503-63.336 79.134-63.336Q78.686-63.336 78.255-63.497Q77.824-63.657 77.543-63.984Q77.262-64.312 77.262-64.769Q77.262-64.984 77.409-65.127Q77.556-65.270 77.776-65.270Q77.987-65.270 78.132-65.125Q78.277-64.980 78.277-64.769Q78.277-64.558 78.130-64.406Q77.982-64.255 77.776-64.255M83.115-63.776Q83.115-64.413 83.271-65.059Q83.427-65.705 83.719-66.311Q84.012-66.918 84.420-67.467L85.238-68.575L84.209-68.575Q82.566-68.575 82.518-68.531Q82.412-68.403 82.293-67.700L82.008-67.700L82.302-69.616L82.592-69.616L82.592-69.590Q82.592-69.427 83.157-69.379Q83.722-69.330 84.267-69.330L85.985-69.330L85.985-69.124Q85.985-69.106 85.983-69.097Q85.980-69.089 85.976-69.080L84.688-67.331Q84.438-66.979 84.291-66.553Q84.144-66.127 84.078-65.663Q84.012-65.200 83.999-64.789Q83.985-64.378 83.985-63.776Q83.985-63.596 83.860-63.466Q83.735-63.336 83.555-63.336Q83.436-63.336 83.333-63.393Q83.229-63.451 83.172-63.554Q83.115-63.657 83.115-63.776",[867],[851,4436,4437],{"transform":4430},[856,4438],{"d":4439,"fill":853,"stroke":853,"className":4440,"style":2838},"M94.990-65.011L92.551-65.011L92.551-65.327L95.377-69.475Q95.421-69.528 95.487-69.528L95.641-69.528Q95.680-69.528 95.713-69.495Q95.746-69.462 95.746-69.418L95.746-65.327L96.647-65.327L96.647-65.011L95.746-65.011L95.746-64.145Q95.746-63.850 96.647-63.850L96.647-63.534L94.094-63.534L94.094-63.850Q94.454-63.850 94.722-63.905Q94.990-63.960 94.990-64.145L94.990-65.011M95.047-68.500L92.885-65.327L95.047-65.327L95.047-68.500M100.817-63.534L97.785-63.534L97.785-63.850Q98.937-63.850 98.937-64.145L98.937-68.869Q98.449-68.636 97.728-68.636L97.728-68.952Q98.857-68.952 99.420-69.528L99.565-69.528Q99.600-69.528 99.633-69.495Q99.666-69.462 99.666-69.427L99.666-64.145Q99.666-63.850 100.817-63.850",[867],[856,4442],{"fill":858,"d":4443},"m176.322-3.183-32.48 21.652",[856,4445],{"stroke":858,"d":4446},"m142.179 19.579 3.55-.444-1.886-.666.11-1.996",[856,4448],{"fill":858,"d":4449},"M176.322-3.183v20.762",[856,4451],{"stroke":858,"d":4452},"m176.322 19.579 1.6-3.2-1.6 1.2-1.6-1.2",[856,4454],{"fill":858,"d":4455},"m176.322-3.183 32.48 21.652",[856,4457],{"stroke":858,"d":4458},"m210.465 19.579-1.775-3.106.111 1.996-1.886.666",[1040,4460,4462],{"className":4461},[1043],"A B-tree packing several sorted keys per node with all leaves at equal depth",[381,4464,4465,4466,4484,4485,4500],{},"Each node is sized to fill one disk block, so a single read brings in a whole\nfan-out's worth of keys. Because every node has up to ",[390,4467,4469],{"className":4468},[393],[390,4470,4472],{"className":4471,"ariaHidden":398},[397],[390,4473,4475,4478,4481],{"className":4474},[402],[390,4476],{"className":4477,"style":1706},[406],[390,4479,789],{"className":4480},[411],[390,4482,3885],{"className":4483},[411,412]," children, a B-tree\nholding ",[390,4486,4488],{"className":4487},[393],[390,4489,4491],{"className":4490,"ariaHidden":398},[397],[390,4492,4494,4497],{"className":4493},[402],[390,4495],{"className":4496,"style":685},[406],[390,4498,467],{"className":4499},[411,412]," keys has height",[390,4502,4504],{"className":4503},[2024],[390,4505,4507],{"className":4506},[393],[390,4508,4510,4528,4675],{"className":4509,"ariaHidden":398},[397],[390,4511,4513,4516,4519,4522,4525],{"className":4512},[402],[390,4514],{"className":4515,"style":2474},[406],[390,4517,423],{"className":4518},[411,412],[390,4520],{"className":4521,"style":525},[462],[390,4523,2484],{"className":4524},[529],[390,4526],{"className":4527,"style":525},[462],[390,4529,4531,4535,4579,4582,4666,4669,4672],{"className":4530},[402],[390,4532],{"className":4533,"style":4534},[406],"height:2.0074em;vertical-align:-0.686em;",[390,4536,4538,4544],{"className":4537},[452],[390,4539,4541],{"className":4540},[452],[390,4542,458],{"className":4543,"style":457},[411,456],[390,4545,4547],{"className":4546},[756],[390,4548,4550,4571],{"className":4549},[760,761],[390,4551,4553,4568],{"className":4552},[765],[390,4554,4557],{"className":4555,"style":4556},[769],"height:0.1864em;",[390,4558,4559,4562],{"style":2524},[390,4560],{"className":4561,"style":778},[777],[390,4563,4565],{"className":4564},[782,783,784,785],[390,4566,3885],{"className":4567},[411,412,785],[390,4569,794],{"className":4570},[793],[390,4572,4574],{"className":4573},[765],[390,4575,4577],{"className":4576,"style":2543},[769],[390,4578],{},[390,4580],{"className":4581,"style":463},[462],[390,4583,4585,4589,4663],{"className":4584},[411],[390,4586],{"className":4587},[418,4588],"nulldelimiter",[390,4590,4593],{"className":4591},[4592],"mfrac",[390,4594,4596,4654],{"className":4595},[760,761],[390,4597,4599,4651],{"className":4598},[765],[390,4600,4603,4616,4627],{"className":4601,"style":4602},[769],"height:1.3214em;",[390,4604,4606,4610],{"style":4605},"top:-2.314em;",[390,4607],{"className":4608,"style":4609},[777],"height:3em;",[390,4611,4613],{"className":4612},[411],[390,4614,789],{"className":4615},[411],[390,4617,4619,4622],{"style":4618},"top:-3.23em;",[390,4620],{"className":4621,"style":4609},[777],[390,4623],{"className":4624,"style":4626},[4625],"frac-line","border-bottom-width:0.04em;",[390,4628,4630,4633],{"style":4629},"top:-3.677em;",[390,4631],{"className":4632,"style":4609},[777],[390,4634,4636,4639,4642,4645,4648],{"className":4635},[411],[390,4637,467],{"className":4638},[411,412],[390,4640],{"className":4641,"style":1691},[462],[390,4643,2129],{"className":4644},[1695],[390,4646],{"className":4647,"style":1691},[462],[390,4649,575],{"className":4650},[411],[390,4652,794],{"className":4653},[793],[390,4655,4657],{"className":4656},[765],[390,4658,4661],{"className":4659,"style":4660},[769],"height:0.686em;",[390,4662],{},[390,4664],{"className":4665},[427,4588],[390,4667],{"className":4668,"style":525},[462],[390,4670,530],{"className":4671},[529],[390,4673],{"className":4674,"style":525},[462],[390,4676,4678,4682,4685,4689,4692,4792,4795],{"className":4677},[402],[390,4679],{"className":4680,"style":4681},[406],"height:2.4em;vertical-align:-0.95em;",[390,4683,414],{"className":4684,"style":413},[411,412],[390,4686],{"className":4687,"style":4688},[462],"margin-right:-0.1667em;",[390,4690],{"className":4691,"style":463},[462],[390,4693,4696,4704,4786],{"className":4694},[4695],"minner",[390,4697,4701],{"className":4698,"style":4700},[418,4699],"delimcenter","top:0em;",[390,4702,419],{"className":4703},[2047,784],[390,4705,4707,4710,4783],{"className":4706},[411],[390,4708],{"className":4709},[418,4588],[390,4711,4713],{"className":4712},[4592],[390,4714,4716,4774],{"className":4715},[760,761],[390,4717,4719,4771],{"className":4718},[765],[390,4720,4723,4743,4751],{"className":4721,"style":4722},[769],"height:1.3714em;",[390,4724,4725,4728],{"style":4605},[390,4726],{"className":4727,"style":4609},[777],[390,4729,4731,4737,4740],{"className":4730},[411],[390,4732,4734],{"className":4733},[452],[390,4735,458],{"className":4736,"style":457},[411,456],[390,4738],{"className":4739,"style":463},[462],[390,4741,3885],{"className":4742},[411,412],[390,4744,4745,4748],{"style":4618},[390,4746],{"className":4747,"style":4609},[777],[390,4749],{"className":4750,"style":4626},[4625],[390,4752,4753,4756],{"style":4629},[390,4754],{"className":4755,"style":4609},[777],[390,4757,4759,4765,4768],{"className":4758},[411],[390,4760,4762],{"className":4761},[452],[390,4763,458],{"className":4764,"style":457},[411,456],[390,4766],{"className":4767,"style":463},[462],[390,4769,467],{"className":4770},[411,412],[390,4772,794],{"className":4773},[793],[390,4775,4777],{"className":4776},[765],[390,4778,4781],{"className":4779,"style":4780},[769],"height:0.8804em;",[390,4782],{},[390,4784],{"className":4785},[427,4588],[390,4787,4789],{"className":4788,"style":4700},[427,4699],[390,4790,428],{"className":4791},[2047,784],[390,4793],{"className":4794,"style":463},[462],[390,4796,621],{"className":4797},[411],[381,4799,4800,4801,4816,4817,4820,4821,4836,4837,1439,4852,4867,4868,4871,4872,4908,4909,4912,4913,4937],{},"The fan-out ",[390,4802,4804],{"className":4803},[393],[390,4805,4807],{"className":4806,"ariaHidden":398},[397],[390,4808,4810,4813],{"className":4809},[402],[390,4811],{"className":4812,"style":3993},[406],[390,4814,3885],{"className":4815},[411,412]," sits in the denominator: making nodes wide makes the tree\n",[634,4818,4819],{},"shallow",". With ",[390,4822,4824],{"className":4823},[393],[390,4825,4827],{"className":4826,"ariaHidden":398},[397],[390,4828,4830,4833],{"className":4829},[402],[390,4831],{"className":4832,"style":3993},[406],[390,4834,3885],{"className":4835},[411,412]," on the order of a thousand keys per block, a tree of a\nbillion keys has height ",[390,4838,4840],{"className":4839},[393],[390,4841,4843],{"className":4842,"ariaHidden":398},[397],[390,4844,4846,4849],{"className":4845},[402],[390,4847],{"className":4848,"style":1706},[406],[390,4850,789],{"className":4851},[411],[390,4853,4855],{"className":4854},[393],[390,4856,4858],{"className":4857,"ariaHidden":398},[397],[390,4859,4861,4864],{"className":4860},[402],[390,4862],{"className":4863,"style":1706},[406],[390,4865,1238],{"className":4866},[411],", meaning two or three disk reads per search\ninstead of thirty. Insertions and deletions keep all leaves at the same depth by\n",[498,4869,4870],{},"splitting"," a full node (one with ",[390,4873,4875],{"className":4874},[393],[390,4876,4878,4899],{"className":4877,"ariaHidden":398},[397],[390,4879,4881,4884,4887,4890,4893,4896],{"className":4880},[402],[390,4882],{"className":4883,"style":3955},[406],[390,4885,789],{"className":4886},[411],[390,4888,3885],{"className":4889},[411,412],[390,4891],{"className":4892,"style":1691},[462],[390,4894,1696],{"className":4895},[1695],[390,4897],{"className":4898,"style":1691},[462],[390,4900,4902,4905],{"className":4901},[402],[390,4903],{"className":4904,"style":1706},[406],[390,4906,575],{"className":4907},[411]," keys) into two and pushing its median\nkey up to the parent, or ",[498,4910,4911],{},"merging"," an underfull node with a sibling: local\n",[390,4914,4916],{"className":4915},[393],[390,4917,4919],{"className":4918,"ariaHidden":398},[397],[390,4920,4922,4925,4928,4931,4934],{"className":4921},[402],[390,4923],{"className":4924,"style":407},[406],[390,4926,414],{"className":4927,"style":413},[411,412],[390,4929,419],{"className":4930},[418],[390,4932,3885],{"className":4933},[411,412],[390,4935,428],{"className":4936},[427]," restructuring that ripples at most up one root-to-leaf path.",[838,4939,4941,5148],{"className":4940},[841,842],[844,4942,4946],{"xmlns":846,"width":4943,"height":4944,"viewBox":4945},"422.062","135.834","-75 -75 316.546 101.875",[851,4947,4948,4951,4958,4997,5000,5003,5046,5061,5064,5079,5102,5105,5118,5121,5136,5139,5142,5145],{"stroke":853,"style":854},[856,4949],{"fill":858,"d":4950},"M-2.207-37.373h16.334v-17.072H-2.207Z",[851,4952,4954],{"transform":4953},"translate(-6.167 2.9)",[856,4955],{"d":4956,"fill":853,"stroke":853,"className":4957,"style":2838},"M11.409-45.909L7.959-45.909L7.959-46.142Q7.959-46.155 7.990-46.186L9.444-47.763Q9.910-48.260 10.163-48.565Q10.416-48.871 10.607-49.282Q10.798-49.693 10.798-50.132Q10.798-50.721 10.475-51.154Q10.152-51.587 9.572-51.587Q9.308-51.587 9.062-51.477Q8.816-51.367 8.640-51.180Q8.464-50.993 8.368-50.743L8.447-50.743Q8.649-50.743 8.792-50.607Q8.935-50.471 8.935-50.255Q8.935-50.049 8.792-49.910Q8.649-49.772 8.447-49.772Q8.245-49.772 8.102-49.915Q7.959-50.057 7.959-50.255Q7.959-50.717 8.196-51.090Q8.434-51.464 8.834-51.683Q9.233-51.903 9.682-51.903Q10.205-51.903 10.659-51.688Q11.114-51.472 11.387-51.073Q11.659-50.673 11.659-50.132Q11.659-49.737 11.488-49.383Q11.316-49.029 11.051-48.750Q10.785-48.471 10.334-48.086Q9.884-47.702 9.805-47.627L8.781-46.665L9.598-46.665Q10.249-46.665 10.686-46.676Q11.123-46.687 11.154-46.709Q11.224-46.792 11.279-47.032Q11.334-47.271 11.374-47.539L11.659-47.539L11.409-45.909M14.432-45.711Q13.307-45.711 12.894-46.608Q12.481-47.504 12.481-48.779Q12.481-49.552 12.630-50.251Q12.780-50.950 13.215-51.426Q13.650-51.903 14.432-51.903Q15.210-51.903 15.645-51.424Q16.080-50.945 16.230-50.249Q16.379-49.552 16.379-48.779Q16.379-47.500 15.966-46.606Q15.553-45.711 14.432-45.711M14.432-45.971Q14.951-45.971 15.201-46.482Q15.452-46.994 15.509-47.605Q15.566-48.216 15.566-48.924Q15.566-49.609 15.509-50.169Q15.452-50.730 15.199-51.187Q14.946-51.644 14.432-51.644Q14.028-51.644 13.791-51.367Q13.553-51.090 13.446-50.649Q13.338-50.207 13.314-49.814Q13.290-49.420 13.290-48.924Q13.290-48.418 13.314-47.990Q13.338-47.561 13.446-47.078Q13.553-46.595 13.793-46.283Q14.032-45.971 14.432-45.971",[867],[851,4959,4961,4964],{"fill":4960},"var(--tk-soft-accent)",[856,4962],{"d":4963},"M-65.403-.385h68.75v-17.071h-68.75Z",[851,4965,4966,4973,4979,4985,4991],{"fill":853,"stroke":858,"fontFamily":4271,"fontSize":3770},[851,4967,4969],{"transform":4968},"translate(-69.364 39.889)",[856,4970],{"d":4971,"fill":853,"stroke":853,"className":4972,"style":2838},"M9.124-46.151Q9.124-46.788 9.280-47.434Q9.436-48.080 9.728-48.686Q10.020-49.293 10.429-49.842L11.246-50.950L10.218-50.950Q8.574-50.950 8.526-50.906Q8.420-50.778 8.302-50.075L8.016-50.075L8.311-51.991L8.601-51.991L8.601-51.965Q8.601-51.802 9.165-51.754Q9.730-51.705 10.275-51.705L11.993-51.705L11.993-51.499Q11.993-51.481 11.991-51.472Q11.989-51.464 11.984-51.455L10.697-49.706Q10.446-49.354 10.299-48.928Q10.152-48.502 10.086-48.038Q10.020-47.575 10.007-47.164Q9.994-46.753 9.994-46.151Q9.994-45.971 9.868-45.841Q9.743-45.711 9.563-45.711Q9.444-45.711 9.341-45.768Q9.238-45.826 9.181-45.929Q9.124-46.032 9.124-46.151",[867],[851,4974,4975],{"transform":4968},[856,4976],{"d":4977,"fill":853,"stroke":853,"className":4978,"style":2838},"M19.357-46.296Q19.604-45.997 20.210-45.997Q20.491-45.997 20.731-46.135Q20.970-46.274 21.148-46.496Q21.326-46.718 21.436-46.981Q21.669-47.557 21.669-48.673Q21.502-48.308 21.197-48.084Q20.891-47.860 20.509-47.860Q19.973-47.860 19.557-48.139Q19.142-48.418 18.911-48.884Q18.681-49.350 18.681-49.877Q18.681-50.290 18.828-50.659Q18.975-51.029 19.239-51.305Q19.502-51.582 19.872-51.743Q20.241-51.903 20.654-51.903Q21.212-51.903 21.586-51.611Q21.959-51.319 22.163-50.855Q22.368-50.391 22.447-49.875Q22.526-49.359 22.526-48.827Q22.526-48.111 22.258-47.388Q21.990-46.665 21.467-46.188Q20.944-45.711 20.219-45.711Q19.669-45.711 19.292-45.960Q18.914-46.208 18.914-46.726Q18.914-46.845 18.971-46.948Q19.028-47.052 19.129-47.111Q19.230-47.170 19.357-47.170Q19.542-47.170 19.665-47.038Q19.788-46.907 19.788-46.726Q19.788-46.551 19.661-46.423Q19.533-46.296 19.357-46.296M20.553-48.124Q20.922-48.124 21.170-48.366Q21.419-48.607 21.535-48.965Q21.651-49.324 21.651-49.697Q21.651-49.807 21.643-49.860Q21.647-49.873 21.649-49.884Q21.651-49.895 21.651-49.912Q21.651-50.567 21.436-51.106Q21.221-51.644 20.654-51.644Q20.294-51.644 20.065-51.494Q19.836-51.345 19.720-51.088Q19.604-50.831 19.571-50.550Q19.538-50.268 19.538-49.895L19.538-49.860Q19.538-49.534 19.564-49.247Q19.590-48.959 19.689-48.700Q19.788-48.440 19.999-48.282Q20.210-48.124 20.553-48.124",[867],[851,4980,4981],{"transform":4968},[856,4982],{"d":4983,"fill":853,"stroke":853,"className":4984,"style":2838},"M32.993-45.909L29.961-45.909L29.961-46.225Q31.112-46.225 31.112-46.520L31.112-51.244Q30.624-51.011 29.903-51.011L29.903-51.327Q31.033-51.327 31.595-51.903L31.740-51.903Q31.775-51.903 31.808-51.870Q31.841-51.837 31.841-51.802L31.841-46.520Q31.841-46.225 32.993-46.225L32.993-45.909M37.611-45.909L34.579-45.909L34.579-46.225Q35.731-46.225 35.731-46.520L35.731-51.244Q35.243-51.011 34.522-51.011L34.522-51.327Q35.651-51.327 36.214-51.903L36.359-51.903Q36.394-51.903 36.427-51.870Q36.460-51.837 36.460-51.802L36.460-46.520Q36.460-46.225 37.611-46.225",[867],[851,4986,4987],{"transform":4968},[856,4988],{"d":4989,"fill":853,"stroke":853,"className":4990,"style":2838},"M48.409-45.909L45.377-45.909L45.377-46.225Q46.528-46.225 46.528-46.520L46.528-51.244Q46.040-51.011 45.319-51.011L45.319-51.327Q46.449-51.327 47.011-51.903L47.156-51.903Q47.191-51.903 47.224-51.870Q47.257-51.837 47.257-51.802L47.257-46.520Q47.257-46.225 48.409-46.225L48.409-45.909M51.819-47.386L49.380-47.386L49.380-47.702L52.206-51.850Q52.250-51.903 52.315-51.903L52.469-51.903Q52.509-51.903 52.542-51.870Q52.575-51.837 52.575-51.793L52.575-47.702L53.476-47.702L53.476-47.386L52.575-47.386L52.575-46.520Q52.575-46.225 53.476-46.225L53.476-45.909L50.922-45.909L50.922-46.225Q51.283-46.225 51.551-46.280Q51.819-46.335 51.819-46.520L51.819-47.386M51.876-50.875L49.714-47.702L51.876-47.702",[867],[851,4992,4993],{"transform":4968},[856,4994],{"d":4995,"fill":853,"stroke":853,"className":4996,"style":2838},"M63.826-45.909L60.794-45.909L60.794-46.225Q61.945-46.225 61.945-46.520L61.945-51.244Q61.457-51.011 60.736-51.011L60.736-51.327Q61.866-51.327 62.428-51.903L62.573-51.903Q62.608-51.903 62.641-51.870Q62.674-51.837 62.674-51.802L62.674-46.520Q62.674-46.225 63.826-46.225L63.826-45.909M66.849-45.711Q66.115-45.711 65.685-46.192Q65.254-46.674 65.089-47.366Q64.924-48.058 64.924-48.805Q64.924-49.534 65.217-50.257Q65.509-50.980 66.063-51.442Q66.616-51.903 67.363-51.903Q67.860-51.903 68.196-51.637Q68.532-51.371 68.532-50.888Q68.532-50.708 68.405-50.580Q68.277-50.453 68.102-50.453Q67.921-50.453 67.792-50.578Q67.662-50.703 67.662-50.888Q67.662-51.002 67.719-51.106Q67.776-51.209 67.877-51.268Q67.979-51.327 68.102-51.327Q68.106-51.327 68.110-51.325Q68.115-51.323 68.119-51.319Q68.005-51.486 67.796-51.565Q67.587-51.644 67.363-51.644Q66.919-51.644 66.561-51.343Q66.203-51.042 66.014-50.589Q65.781-49.983 65.781-48.950Q65.953-49.315 66.254-49.543Q66.555-49.772 66.941-49.772Q67.346-49.772 67.691-49.605Q68.036-49.438 68.273-49.157Q68.510-48.875 68.640-48.513Q68.770-48.150 68.770-47.746Q68.770-47.201 68.526-46.735Q68.282-46.269 67.842-45.990Q67.403-45.711 66.849-45.711M66.849-45.997Q67.311-45.997 67.546-46.254Q67.781-46.511 67.847-46.885Q67.913-47.258 67.913-47.728L67.913-47.763Q67.913-48.251 67.856-48.616Q67.798-48.981 67.570-49.244Q67.341-49.508 66.898-49.508Q66.528-49.508 66.278-49.264Q66.027-49.020 65.913-48.656Q65.799-48.291 65.799-47.944Q65.799-47.825 65.808-47.763Q65.808-47.746 65.805-47.735Q65.803-47.724 65.799-47.711Q65.799-47.060 66.036-46.529Q66.273-45.997 66.849-45.997",[867],[856,4998],{"fill":858,"d":4999},"M5.96-37.173 3.792-19.641",[856,5001],{"stroke":858,"d":5002},"m3.547-17.656 1.98-2.98-1.735.995-1.44-1.387",[851,5004,5006],{"fill":5005,"stroke":5005},"var(--tk-warn)",[851,5007,5009,5016,5022,5028,5034,5040],{"fill":5005,"stroke":858,"fontFamily":5008,"fontSize":3613},"cmr7",[851,5010,5012],{"transform":5011},"translate(-57.538 66.181)",[856,5013],{"d":5014,"fill":5005,"stroke":5005,"className":5015,"style":897},"M8.072-53.909L6.339-53.909L6.339-54.189Q6.565-54.189 6.714-54.223Q6.862-54.258 6.862-54.398L6.862-56.647L6.274-56.647L6.274-56.927L6.862-56.927L6.862-57.744Q6.862-58.062 7.040-58.310Q7.218-58.557 7.508-58.698Q7.799-58.838 8.110-58.838Q8.366-58.838 8.570-58.696Q8.773-58.554 8.773-58.311Q8.773-58.175 8.674-58.076Q8.575-57.976 8.438-57.976Q8.301-57.976 8.202-58.076Q8.103-58.175 8.103-58.311Q8.103-58.492 8.243-58.585Q8.165-58.612 8.065-58.612Q7.857-58.612 7.703-58.479Q7.549-58.346 7.469-58.142Q7.389-57.939 7.389-57.730L7.389-56.927L8.277-56.927L8.277-56.647L7.416-56.647L7.416-54.398Q7.416-54.189 8.072-54.189L8.072-53.909M9.327-54.743L9.327-56.247Q9.327-56.517 9.219-56.578Q9.111-56.640 8.800-56.640L8.800-56.920L9.908-56.995L9.908-54.763L9.908-54.743Q9.908-54.463 9.959-54.319Q10.010-54.176 10.152-54.119Q10.294-54.063 10.581-54.063Q10.834-54.063 11.039-54.203Q11.244-54.343 11.360-54.569Q11.477-54.794 11.477-55.044L11.477-56.247Q11.477-56.517 11.369-56.578Q11.261-56.640 10.950-56.640L10.950-56.920L12.058-56.995L12.058-54.582Q12.058-54.391 12.111-54.309Q12.164-54.227 12.264-54.208Q12.365-54.189 12.581-54.189L12.581-53.909L11.504-53.841L11.504-54.405Q11.395-54.223 11.249-54.100Q11.104-53.977 10.918-53.909Q10.731-53.841 10.530-53.841Q9.327-53.841 9.327-54.743M14.836-53.909L13.233-53.909L13.233-54.189Q13.459-54.189 13.608-54.223Q13.756-54.258 13.756-54.398L13.756-58.017Q13.756-58.287 13.649-58.349Q13.541-58.410 13.233-58.410L13.233-58.691L14.310-58.766L14.310-54.398Q14.310-54.261 14.460-54.225Q14.611-54.189 14.836-54.189L14.836-53.909M17.099-53.909L15.496-53.909L15.496-54.189Q15.722-54.189 15.870-54.223Q16.019-54.258 16.019-54.398L16.019-58.017Q16.019-58.287 15.911-58.349Q15.804-58.410 15.496-58.410L15.496-58.691L16.573-58.766L16.573-54.398Q16.573-54.261 16.723-54.225Q16.874-54.189 17.099-54.189L17.099-53.909M18.094-54.329Q18.094-54.497 18.217-54.620Q18.340-54.743 18.514-54.743Q18.682-54.743 18.805-54.620Q18.928-54.497 18.928-54.329Q18.928-54.155 18.805-54.032Q18.682-53.909 18.514-53.909Q18.340-53.909 18.217-54.032Q18.094-54.155 18.094-54.329M18.094-56.513Q18.094-56.681 18.217-56.804Q18.340-56.927 18.514-56.927Q18.682-56.927 18.805-56.804Q18.928-56.681 18.928-56.513Q18.928-56.339 18.805-56.216Q18.682-56.093 18.514-56.093Q18.340-56.093 18.217-56.216Q18.094-56.339 18.094-56.513",[867],[851,5017,5018],{"transform":5011},[856,5019],{"d":5020,"fill":5005,"stroke":5005,"className":5021,"style":897},"M24.011-54.671L23.980-54.671Q24.117-54.374 24.414-54.198Q24.711-54.022 25.039-54.022Q25.402-54.022 25.629-54.200Q25.856-54.377 25.950-54.666Q26.044-54.955 26.044-55.317Q26.044-55.632 25.990-55.917Q25.935-56.202 25.762-56.408Q25.590-56.613 25.275-56.613Q25.002-56.613 24.819-56.546Q24.636-56.479 24.532-56.390Q24.428-56.302 24.332-56.192Q24.236-56.083 24.192-56.073L24.113-56.073Q24.041-56.090 24.024-56.161L24.024-58.479Q24.024-58.513 24.048-58.535Q24.072-58.557 24.106-58.557L24.134-58.557Q24.421-58.441 24.689-58.387Q24.957-58.332 25.234-58.332Q25.511-58.332 25.781-58.387Q26.051-58.441 26.331-58.557L26.355-58.557Q26.390-58.557 26.413-58.534Q26.437-58.510 26.437-58.479L26.437-58.410Q26.437-58.383 26.417-58.363Q26.143-58.048 25.759-57.872Q25.374-57.696 24.961-57.696Q24.622-57.696 24.305-57.782L24.305-56.500Q24.701-56.835 25.275-56.835Q25.679-56.835 26.015-56.625Q26.352-56.414 26.545-56.062Q26.738-55.710 26.738-55.310Q26.738-54.979 26.598-54.693Q26.458-54.408 26.214-54.198Q25.969-53.988 25.667-53.878Q25.364-53.769 25.046-53.769Q24.687-53.769 24.361-53.933Q24.035-54.097 23.840-54.389Q23.645-54.681 23.645-55.044Q23.645-55.194 23.751-55.300Q23.857-55.406 24.011-55.406Q24.164-55.406 24.269-55.302Q24.373-55.198 24.373-55.044Q24.373-54.887 24.269-54.779Q24.164-54.671 24.011-54.671",[867],[851,5023,5024],{"transform":5011},[856,5025],{"d":5026,"fill":5005,"stroke":5005,"className":5027,"style":897},"M31.795-53.909L30.212-53.909L30.212-54.189Q30.441-54.189 30.590-54.223Q30.738-54.258 30.738-54.398L30.738-58.017Q30.738-58.287 30.631-58.349Q30.523-58.410 30.212-58.410L30.212-58.691L31.292-58.766L31.292-55.478L32.277-56.247Q32.482-56.384 32.482-56.534Q32.482-56.578 32.441-56.613Q32.400-56.647 32.355-56.647L32.355-56.927L33.719-56.927L33.719-56.647Q33.230-56.647 32.711-56.247L32.154-55.813L33.131-54.589Q33.333-54.343 33.466-54.266Q33.599-54.189 33.886-54.189L33.886-53.909L32.454-53.909L32.454-54.189Q32.642-54.189 32.642-54.302Q32.642-54.398 32.488-54.589L31.754-55.498L31.272-55.119L31.272-54.398Q31.272-54.261 31.420-54.225Q31.569-54.189 31.795-54.189",[867],[851,5029,5030],{"transform":5011},[856,5031],{"d":5032,"fill":5005,"stroke":5005,"className":5033,"style":897},"M34.143-55.444Q34.143-55.765 34.268-56.054Q34.393-56.343 34.619-56.566Q34.844-56.790 35.140-56.910Q35.435-57.030 35.753-57.030Q36.081-57.030 36.343-56.930Q36.604-56.831 36.780-56.649Q36.956-56.466 37.050-56.208Q37.144-55.950 37.144-55.618Q37.144-55.526 37.062-55.505L34.807-55.505L34.807-55.444Q34.807-54.856 35.090-54.473Q35.374-54.090 35.941-54.090Q36.263-54.090 36.531-54.283Q36.799-54.476 36.888-54.791Q36.895-54.832 36.970-54.846L37.062-54.846Q37.144-54.822 37.144-54.750Q37.144-54.743 37.138-54.716Q37.025-54.319 36.654-54.080Q36.283-53.841 35.859-53.841Q35.422-53.841 35.022-54.049Q34.622-54.258 34.383-54.625Q34.143-54.992 34.143-55.444M34.813-55.714L36.628-55.714Q36.628-55.991 36.531-56.243Q36.433-56.496 36.235-56.652Q36.037-56.807 35.753-56.807Q35.476-56.807 35.263-56.649Q35.049-56.490 34.931-56.235Q34.813-55.980 34.813-55.714M38.067-52.774Q38.197-52.706 38.334-52.706Q38.505-52.706 38.655-52.795Q38.806-52.884 38.917-53.029Q39.028-53.174 39.106-53.342L39.370-53.909L38.201-56.435Q38.125-56.582 37.995-56.614Q37.866-56.647 37.633-56.647L37.633-56.927L39.154-56.927L39.154-56.647Q38.806-56.647 38.806-56.500Q38.809-56.479 38.811-56.462Q38.812-56.445 38.812-56.435L39.670-54.576L40.443-56.247Q40.477-56.315 40.477-56.394Q40.477-56.507 40.393-56.577Q40.309-56.647 40.197-56.647L40.197-56.927L41.393-56.927L41.393-56.647Q41.174-56.647 41.002-56.543Q40.829-56.438 40.737-56.247L39.400-53.342Q39.229-52.972 38.959-52.726Q38.689-52.480 38.334-52.480Q38.064-52.480 37.845-52.646Q37.626-52.812 37.626-53.075Q37.626-53.212 37.719-53.301Q37.811-53.389 37.951-53.389Q38.088-53.389 38.177-53.301Q38.266-53.212 38.266-53.075Q38.266-52.972 38.213-52.894Q38.160-52.815 38.067-52.774M41.933-53.916L41.933-54.979Q41.933-55.003 41.960-55.030Q41.988-55.057 42.012-55.057L42.121-55.057Q42.186-55.057 42.200-54.999Q42.295-54.565 42.541-54.314Q42.787-54.063 43.201-54.063Q43.543-54.063 43.796-54.196Q44.049-54.329 44.049-54.637Q44.049-54.794 43.955-54.909Q43.861-55.023 43.722-55.092Q43.584-55.160 43.416-55.198L42.835-55.297Q42.480-55.365 42.206-55.586Q41.933-55.806 41.933-56.148Q41.933-56.397 42.044-56.572Q42.155-56.746 42.341-56.845Q42.528-56.944 42.743-56.987Q42.958-57.030 43.201-57.030Q43.615-57.030 43.895-56.848L44.110-57.023Q44.120-57.026 44.127-57.028Q44.134-57.030 44.144-57.030L44.196-57.030Q44.223-57.030 44.247-57.006Q44.271-56.982 44.271-56.954L44.271-56.107Q44.271-56.086 44.247-56.059Q44.223-56.032 44.196-56.032L44.083-56.032Q44.056-56.032 44.030-56.057Q44.004-56.083 44.004-56.107Q44.004-56.343 43.898-56.507Q43.792-56.671 43.610-56.753Q43.427-56.835 43.194-56.835Q42.866-56.835 42.610-56.732Q42.353-56.630 42.353-56.353Q42.353-56.158 42.536-56.049Q42.719-55.939 42.948-55.898L43.522-55.792Q43.768-55.744 43.982-55.616Q44.196-55.488 44.332-55.285Q44.469-55.081 44.469-54.832Q44.469-54.319 44.103-54.080Q43.738-53.841 43.201-53.841Q42.705-53.841 42.374-54.135L42.107-53.861Q42.087-53.841 42.059-53.841L42.012-53.841Q41.988-53.841 41.960-53.868Q41.933-53.895 41.933-53.916M45.597-52.679Q45.597-52.713 45.624-52.740Q45.894-52.969 46.043-53.292Q46.192-53.615 46.192-53.971L46.192-54.008Q46.082-53.909 45.918-53.909Q45.737-53.909 45.618-54.029Q45.498-54.148 45.498-54.329Q45.498-54.504 45.618-54.623Q45.737-54.743 45.918-54.743Q46.175-54.743 46.294-54.504Q46.414-54.264 46.414-53.971Q46.414-53.571 46.245-53.200Q46.076-52.829 45.778-52.573Q45.747-52.552 45.720-52.552Q45.679-52.552 45.638-52.593Q45.597-52.634 45.597-52.679",[867],[851,5035,5036],{"transform":5011},[856,5037],{"d":5038,"fill":5005,"stroke":5005,"className":5039,"style":897},"M10.568-45.909L8.934-45.909L8.934-46.189Q9.163-46.189 9.312-46.223Q9.461-46.258 9.461-46.398L9.461-48.247Q9.461-48.517 9.353-48.578Q9.245-48.640 8.934-48.640L8.934-48.920L9.994-48.995L9.994-48.346Q10.165-48.654 10.469-48.825Q10.773-48.995 11.118-48.995Q11.518-48.995 11.795-48.855Q12.072-48.715 12.157-48.367Q12.325-48.660 12.624-48.828Q12.923-48.995 13.268-48.995Q13.774-48.995 14.058-48.772Q14.342-48.548 14.342-48.052L14.342-46.398Q14.342-46.261 14.490-46.225Q14.639-46.189 14.864-46.189L14.864-45.909L13.234-45.909L13.234-46.189Q13.460-46.189 13.610-46.225Q13.760-46.261 13.760-46.398L13.760-48.038Q13.760-48.373 13.641-48.573Q13.521-48.773 13.207-48.773Q12.937-48.773 12.703-48.637Q12.468-48.500 12.330-48.266Q12.192-48.032 12.192-47.758L12.192-46.398Q12.192-46.261 12.340-46.225Q12.489-46.189 12.715-46.189L12.715-45.909L11.084-45.909L11.084-46.189Q11.313-46.189 11.462-46.223Q11.611-46.258 11.611-46.398L11.611-48.038Q11.611-48.373 11.491-48.573Q11.371-48.773 11.057-48.773Q10.787-48.773 10.553-48.637Q10.319-48.500 10.180-48.266Q10.042-48.032 10.042-47.758L10.042-46.398Q10.042-46.261 10.192-46.225Q10.343-46.189 10.568-46.189L10.568-45.909M15.411-47.444Q15.411-47.765 15.536-48.054Q15.661-48.343 15.886-48.566Q16.112-48.790 16.408-48.910Q16.703-49.030 17.021-49.030Q17.349-49.030 17.611-48.930Q17.872-48.831 18.048-48.649Q18.224-48.466 18.318-48.208Q18.412-47.950 18.412-47.618Q18.412-47.526 18.330-47.505L16.074-47.505L16.074-47.444Q16.074-46.856 16.358-46.473Q16.642-46.090 17.209-46.090Q17.530-46.090 17.799-46.283Q18.067-46.476 18.156-46.791Q18.163-46.832 18.238-46.846L18.330-46.846Q18.412-46.822 18.412-46.750Q18.412-46.743 18.405-46.716Q18.293-46.319 17.922-46.080Q17.551-45.841 17.127-45.841Q16.690-45.841 16.290-46.049Q15.890-46.258 15.651-46.625Q15.411-46.992 15.411-47.444M16.081-47.714L17.896-47.714Q17.896-47.991 17.799-48.243Q17.701-48.496 17.503-48.652Q17.305-48.807 17.021-48.807Q16.744-48.807 16.531-48.649Q16.317-48.490 16.199-48.235Q16.081-47.980 16.081-47.714M19-47.420Q19-47.758 19.140-48.049Q19.280-48.339 19.525-48.553Q19.769-48.766 20.073-48.881Q20.378-48.995 20.702-48.995Q20.972-48.995 21.236-48.896Q21.499-48.797 21.690-48.619L21.690-50.017Q21.690-50.287 21.582-50.349Q21.475-50.410 21.164-50.410L21.164-50.691L22.240-50.766L22.240-46.582Q22.240-46.394 22.295-46.311Q22.350-46.227 22.451-46.208Q22.551-46.189 22.767-46.189L22.767-45.909L21.659-45.841L21.659-46.258Q21.242-45.841 20.617-45.841Q20.186-45.841 19.814-46.053Q19.441-46.264 19.221-46.625Q19-46.986 19-47.420M20.675-46.063Q20.884-46.063 21.070-46.135Q21.256-46.206 21.410-46.343Q21.564-46.480 21.659-46.658L21.659-48.267Q21.574-48.414 21.429-48.534Q21.283-48.654 21.114-48.713Q20.945-48.773 20.764-48.773Q20.203-48.773 19.935-48.384Q19.667-47.994 19.667-47.413Q19.667-46.842 19.901-46.452Q20.135-46.063 20.675-46.063M25.033-45.909L23.481-45.909L23.481-46.189Q23.707-46.189 23.855-46.223Q24.004-46.258 24.004-46.398L24.004-48.247Q24.004-48.435 23.956-48.519Q23.908-48.602 23.811-48.621Q23.714-48.640 23.502-48.640L23.502-48.920L24.558-48.995L24.558-46.398Q24.558-46.258 24.689-46.223Q24.821-46.189 25.033-46.189L25.033-45.909M23.761-50.216Q23.761-50.387 23.884-50.506Q24.008-50.626 24.178-50.626Q24.346-50.626 24.469-50.506Q24.592-50.387 24.592-50.216Q24.592-50.041 24.469-49.918Q24.346-49.795 24.178-49.795Q24.008-49.795 23.884-49.918Q23.761-50.041 23.761-50.216M25.737-46.637Q25.737-46.969 25.961-47.196Q26.185-47.423 26.528-47.551Q26.872-47.680 27.244-47.732Q27.617-47.785 27.921-47.785L27.921-48.038Q27.921-48.243 27.813-48.423Q27.706-48.602 27.525-48.705Q27.343-48.807 27.135-48.807Q26.728-48.807 26.492-48.715Q26.581-48.678 26.627-48.594Q26.674-48.510 26.674-48.408Q26.674-48.312 26.627-48.233Q26.581-48.155 26.501-48.110Q26.421-48.066 26.332-48.066Q26.181-48.066 26.081-48.163Q25.980-48.261 25.980-48.408Q25.980-49.030 27.135-49.030Q27.347-49.030 27.596-48.966Q27.846-48.903 28.048-48.784Q28.249-48.664 28.376-48.479Q28.502-48.295 28.502-48.052L28.502-46.476Q28.502-46.360 28.564-46.264Q28.625-46.169 28.738-46.169Q28.847-46.169 28.912-46.263Q28.977-46.357 28.977-46.476L28.977-46.924L29.244-46.924L29.244-46.476Q29.244-46.206 29.017-46.041Q28.789-45.875 28.509-45.875Q28.301-45.875 28.164-46.029Q28.027-46.182 28.003-46.398Q27.856-46.131 27.574-45.986Q27.292-45.841 26.968-45.841Q26.691-45.841 26.407-45.916Q26.123-45.991 25.930-46.170Q25.737-46.350 25.737-46.637M26.352-46.637Q26.352-46.463 26.453-46.333Q26.554-46.203 26.709-46.133Q26.865-46.063 27.029-46.063Q27.248-46.063 27.456-46.160Q27.665-46.258 27.793-46.439Q27.921-46.620 27.921-46.846L27.921-47.574Q27.596-47.574 27.231-47.483Q26.865-47.392 26.609-47.180Q26.352-46.969 26.352-46.637M31.343-45.909L29.709-45.909L29.709-46.189Q29.938-46.189 30.086-46.223Q30.235-46.258 30.235-46.398L30.235-48.247Q30.235-48.517 30.127-48.578Q30.020-48.640 29.709-48.640L29.709-48.920L30.768-48.995L30.768-48.346Q30.939-48.654 31.243-48.825Q31.548-48.995 31.893-48.995Q32.399-48.995 32.682-48.772Q32.966-48.548 32.966-48.052L32.966-46.398Q32.966-46.261 33.115-46.225Q33.263-46.189 33.489-46.189L33.489-45.909L31.859-45.909L31.859-46.189Q32.088-46.189 32.236-46.223Q32.385-46.258 32.385-46.398L32.385-48.038Q32.385-48.373 32.265-48.573Q32.146-48.773 31.831-48.773Q31.561-48.773 31.327-48.637Q31.093-48.500 30.955-48.266Q30.816-48.032 30.816-47.758L30.816-46.398Q30.816-46.261 30.967-46.225Q31.117-46.189 31.343-46.189",[867],[851,5041,5042],{"transform":5011},[856,5043],{"d":5044,"fill":5005,"stroke":5005,"className":5045,"style":897},"M39.801-45.909L37.271-45.909L37.271-46.189Q38.239-46.189 38.239-46.398L38.239-50.017Q37.846-49.829 37.224-49.829L37.224-50.110Q37.641-50.110 38.005-50.211Q38.369-50.311 38.625-50.557L38.751-50.557Q38.816-50.540 38.833-50.472L38.833-46.398Q38.833-46.189 39.801-46.189L39.801-45.909M43.783-45.909L41.253-45.909L41.253-46.189Q42.221-46.189 42.221-46.398L42.221-50.017Q41.828-49.829 41.205-49.829L41.205-50.110Q41.622-50.110 41.986-50.211Q42.350-50.311 42.607-50.557L42.733-50.557Q42.798-50.540 42.815-50.472L42.815-46.398Q42.815-46.189 43.783-46.189",[867],[851,5047,5048,5051,5054],{"style":2926},[856,5049],{"fill":858,"d":5050},"M71.402-25.992h36.633",[856,5052],{"stroke":858,"d":5053},"m111.235-25.992-5.12-2.56 1.92 2.56-1.92 2.56",[851,5055,5057],{"transform":5056},"translate(77.307 14.428)",[856,5058],{"d":5059,"fill":853,"stroke":853,"className":5060,"style":952},"M6.241-45.917L6.241-47.139Q6.241-47.167 6.272-47.198Q6.304-47.229 6.327-47.229L6.433-47.229Q6.503-47.229 6.519-47.167Q6.581-46.846 6.720-46.606Q6.858-46.366 7.091-46.225Q7.323-46.085 7.632-46.085Q7.870-46.085 8.079-46.145Q8.288-46.206 8.425-46.354Q8.562-46.503 8.562-46.749Q8.562-47.003 8.351-47.169Q8.140-47.335 7.870-47.389L7.249-47.503Q6.843-47.581 6.542-47.837Q6.241-48.093 6.241-48.468Q6.241-48.835 6.442-49.057Q6.644-49.280 6.968-49.378Q7.292-49.475 7.632-49.475Q8.097-49.475 8.394-49.268L8.616-49.452Q8.640-49.475 8.671-49.475L8.722-49.475Q8.753-49.475 8.780-49.448Q8.808-49.421 8.808-49.389L8.808-48.405Q8.808-48.374 8.782-48.345Q8.757-48.315 8.722-48.315L8.616-48.315Q8.581-48.315 8.554-48.343Q8.526-48.370 8.526-48.405Q8.526-48.804 8.274-49.024Q8.023-49.245 7.624-49.245Q7.269-49.245 6.985-49.122Q6.702-48.999 6.702-48.694Q6.702-48.475 6.903-48.343Q7.105-48.210 7.351-48.167L7.976-48.054Q8.405-47.964 8.714-47.667Q9.023-47.370 9.023-46.956Q9.023-46.386 8.624-46.108Q8.226-45.831 7.632-45.831Q7.081-45.831 6.730-46.167L6.433-45.854Q6.409-45.831 6.374-45.831L6.327-45.831Q6.304-45.831 6.272-45.862Q6.241-45.893 6.241-45.917M11.433-44.358L9.577-44.358L9.577-44.651Q9.847-44.651 10.015-44.696Q10.183-44.741 10.183-44.917L10.183-48.741Q10.183-48.948 10.026-49.001Q9.870-49.054 9.577-49.054L9.577-49.350L10.800-49.436L10.800-48.971Q11.030-49.194 11.345-49.315Q11.659-49.436 11.999-49.436Q12.472-49.436 12.876-49.190Q13.280-48.944 13.513-48.528Q13.745-48.112 13.745-47.636Q13.745-47.261 13.597-46.932Q13.448-46.604 13.179-46.352Q12.909-46.100 12.565-45.966Q12.222-45.831 11.862-45.831Q11.573-45.831 11.302-45.952Q11.030-46.073 10.823-46.284L10.823-44.917Q10.823-44.741 10.991-44.696Q11.159-44.651 11.433-44.651L11.433-44.358M10.823-48.573L10.823-46.733Q10.976-46.444 11.237-46.264Q11.499-46.085 11.808-46.085Q12.093-46.085 12.315-46.223Q12.538-46.362 12.690-46.593Q12.843-46.823 12.921-47.095Q12.999-47.366 12.999-47.636Q12.999-47.968 12.874-48.325Q12.749-48.682 12.501-48.919Q12.253-49.155 11.905-49.155Q11.581-49.155 11.286-48.999Q10.991-48.843 10.823-48.573M16.183-45.909L14.351-45.909L14.351-46.206Q14.624-46.206 14.792-46.253Q14.960-46.300 14.960-46.468L14.960-50.628Q14.960-50.843 14.898-50.938Q14.835-51.034 14.716-51.055Q14.597-51.077 14.351-51.077L14.351-51.374L15.573-51.460L15.573-46.468Q15.573-46.300 15.741-46.253Q15.909-46.206 16.183-46.206L16.183-45.909M18.487-45.909L16.710-45.909L16.710-46.206Q16.983-46.206 17.151-46.253Q17.319-46.300 17.319-46.468L17.319-48.604Q17.319-48.819 17.263-48.915Q17.206-49.011 17.093-49.032Q16.980-49.054 16.733-49.054L16.733-49.350L17.933-49.436L17.933-46.468Q17.933-46.300 18.079-46.253Q18.226-46.206 18.487-46.206L18.487-45.909M17.046-50.831Q17.046-51.022 17.181-51.153Q17.315-51.284 17.511-51.284Q17.632-51.284 17.735-51.221Q17.839-51.159 17.901-51.055Q17.964-50.952 17.964-50.831Q17.964-50.636 17.833-50.501Q17.702-50.366 17.511-50.366Q17.312-50.366 17.179-50.499Q17.046-50.632 17.046-50.831M19.612-46.870L19.612-49.061L18.909-49.061L18.909-49.315Q19.265-49.315 19.507-49.548Q19.749-49.780 19.860-50.128Q19.972-50.475 19.972-50.831L20.253-50.831L20.253-49.358L21.429-49.358L21.429-49.061L20.253-49.061L20.253-46.886Q20.253-46.565 20.372-46.337Q20.491-46.108 20.773-46.108Q20.952-46.108 21.069-46.231Q21.187-46.354 21.239-46.534Q21.292-46.714 21.292-46.886L21.292-47.358L21.573-47.358L21.573-46.870Q21.573-46.616 21.468-46.376Q21.362-46.136 21.165-45.983Q20.968-45.831 20.710-45.831Q20.394-45.831 20.142-45.954Q19.890-46.077 19.751-46.311Q19.612-46.546 19.612-46.870",[867],[856,5062],{"fill":858,"d":5063},"M166.492-37.373h31.75v-17.072h-31.75Z",[851,5065,5066,5073],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,5067,5069],{"transform":5068},"translate(162.532 2.9)",[856,5070],{"d":5071,"fill":853,"stroke":853,"className":5072,"style":2838},"M11.409-45.909L8.377-45.909L8.377-46.225Q9.528-46.225 9.528-46.520L9.528-51.244Q9.040-51.011 8.319-51.011L8.319-51.327Q9.449-51.327 10.011-51.903L10.156-51.903Q10.191-51.903 10.224-51.870Q10.257-51.837 10.257-51.802L10.257-46.520Q10.257-46.225 11.409-46.225L11.409-45.909M16.027-45.909L12.995-45.909L12.995-46.225Q14.147-46.225 14.147-46.520L14.147-51.244Q13.659-51.011 12.938-51.011L12.938-51.327Q14.067-51.327 14.630-51.903L14.775-51.903Q14.810-51.903 14.843-51.870Q14.876-51.837 14.876-51.802L14.876-46.520Q14.876-46.225 16.027-46.225",[867],[851,5074,5075],{"transform":5068},[856,5076],{"d":5077,"fill":853,"stroke":853,"className":5078,"style":2838},"M26.826-45.909L23.376-45.909L23.376-46.142Q23.376-46.155 23.407-46.186L24.861-47.763Q25.327-48.260 25.580-48.565Q25.833-48.871 26.024-49.282Q26.215-49.693 26.215-50.132Q26.215-50.721 25.892-51.154Q25.569-51.587 24.989-51.587Q24.725-51.587 24.479-51.477Q24.233-51.367 24.057-51.180Q23.881-50.993 23.785-50.743L23.864-50.743Q24.066-50.743 24.209-50.607Q24.352-50.471 24.352-50.255Q24.352-50.049 24.209-49.910Q24.066-49.772 23.864-49.772Q23.662-49.772 23.519-49.915Q23.376-50.057 23.376-50.255Q23.376-50.717 23.613-51.090Q23.851-51.464 24.251-51.683Q24.650-51.903 25.099-51.903Q25.622-51.903 26.076-51.688Q26.531-51.472 26.804-51.073Q27.076-50.673 27.076-50.132Q27.076-49.737 26.905-49.383Q26.733-49.029 26.468-48.750Q26.202-48.471 25.751-48.086Q25.301-47.702 25.222-47.627L24.198-46.665L25.015-46.665Q25.666-46.665 26.103-46.676Q26.540-46.687 26.571-46.709Q26.641-46.792 26.696-47.032Q26.751-47.271 26.791-47.539L27.076-47.539L26.826-45.909M29.849-45.711Q28.724-45.711 28.311-46.608Q27.898-47.504 27.898-48.779Q27.898-49.552 28.047-50.251Q28.197-50.950 28.632-51.426Q29.067-51.903 29.849-51.903Q30.627-51.903 31.062-51.424Q31.497-50.945 31.647-50.249Q31.796-49.552 31.796-48.779Q31.796-47.500 31.383-46.606Q30.970-45.711 29.849-45.711M29.849-45.971Q30.368-45.971 30.618-46.482Q30.869-46.994 30.926-47.605Q30.983-48.216 30.983-48.924Q30.983-49.609 30.926-50.169Q30.869-50.730 30.616-51.187Q30.363-51.644 29.849-51.644Q29.445-51.644 29.208-51.367Q28.970-51.090 28.863-50.649Q28.755-50.207 28.731-49.814Q28.707-49.420 28.707-48.924Q28.707-48.418 28.731-47.990Q28.755-47.561 28.863-47.078Q28.970-46.595 29.210-46.283Q29.449-45.971 29.849-45.971",[867],[851,5080,5081],{"fill":2990,"stroke":2990},[851,5082,5083,5090,5096],{"fill":2990,"stroke":858,"fontFamily":5008,"fontSize":3613},[851,5084,5086],{"transform":5085},"translate(153.115 -18.167)",[856,5087],{"d":5088,"fill":2990,"stroke":2990,"className":5089,"style":897},"M9.286-45.909L6.756-45.909L6.756-46.189Q7.724-46.189 7.724-46.398L7.724-50.017Q7.331-49.829 6.709-49.829L6.709-50.110Q7.126-50.110 7.490-50.211Q7.854-50.311 8.110-50.557L8.236-50.557Q8.301-50.540 8.318-50.472L8.318-46.398Q8.318-46.189 9.286-46.189L9.286-45.909M13.268-45.909L10.738-45.909L10.738-46.189Q11.706-46.189 11.706-46.398L11.706-50.017Q11.313-49.829 10.690-49.829L10.690-50.110Q11.107-50.110 11.471-50.211Q11.835-50.311 12.092-50.557L12.218-50.557Q12.283-50.540 12.300-50.472L12.300-46.398Q12.300-46.189 13.268-46.189",[867],[851,5091,5092],{"transform":5085},[856,5093],{"d":5094,"fill":2990,"stroke":2990,"className":5095,"style":897},"M18.585-44.552L16.955-44.552L16.955-44.832Q17.184-44.832 17.333-44.867Q17.481-44.901 17.481-45.041L17.481-48.387Q17.481-48.558 17.345-48.599Q17.208-48.640 16.955-48.640L16.955-48.920L18.035-48.995L18.035-48.589Q18.257-48.790 18.544-48.893Q18.832-48.995 19.139-48.995Q19.566-48.995 19.930-48.782Q20.294-48.568 20.508-48.204Q20.722-47.840 20.722-47.420Q20.722-46.975 20.482-46.611Q20.243-46.247 19.850-46.044Q19.457-45.841 19.013-45.841Q18.746-45.841 18.498-45.941Q18.251-46.042 18.063-46.223L18.063-45.041Q18.063-44.904 18.211-44.868Q18.360-44.832 18.585-44.832L18.585-44.552M18.063-48.240L18.063-46.630Q18.196-46.377 18.439-46.220Q18.681-46.063 18.958-46.063Q19.286-46.063 19.539-46.264Q19.792-46.466 19.925-46.784Q20.059-47.102 20.059-47.420Q20.059-47.649 19.994-47.878Q19.929-48.107 19.801-48.305Q19.672-48.503 19.478-48.623Q19.283-48.742 19.050-48.742Q18.756-48.742 18.488-48.613Q18.220-48.483 18.063-48.240M21.932-46.743L21.932-48.247Q21.932-48.517 21.824-48.578Q21.716-48.640 21.405-48.640L21.405-48.920L22.513-48.995L22.513-46.763L22.513-46.743Q22.513-46.463 22.564-46.319Q22.615-46.176 22.757-46.119Q22.899-46.063 23.186-46.063Q23.439-46.063 23.644-46.203Q23.849-46.343 23.965-46.569Q24.082-46.794 24.082-47.044L24.082-48.247Q24.082-48.517 23.974-48.578Q23.866-48.640 23.555-48.640L23.555-48.920L24.663-48.995L24.663-46.582Q24.663-46.391 24.716-46.309Q24.769-46.227 24.869-46.208Q24.970-46.189 25.186-46.189L25.186-45.909L24.109-45.841L24.109-46.405Q24-46.223 23.854-46.100Q23.709-45.977 23.523-45.909Q23.336-45.841 23.135-45.841Q21.932-45.841 21.932-46.743M25.773-45.916L25.773-46.979Q25.773-47.003 25.801-47.030Q25.828-47.057 25.852-47.057L25.961-47.057Q26.026-47.057 26.040-46.999Q26.136-46.565 26.382-46.314Q26.628-46.063 27.042-46.063Q27.383-46.063 27.636-46.196Q27.889-46.329 27.889-46.637Q27.889-46.794 27.795-46.909Q27.701-47.023 27.563-47.092Q27.424-47.160 27.257-47.198L26.676-47.297Q26.320-47.365 26.047-47.586Q25.773-47.806 25.773-48.148Q25.773-48.397 25.885-48.572Q25.996-48.746 26.182-48.845Q26.368-48.944 26.584-48.987Q26.799-49.030 27.042-49.030Q27.455-49.030 27.735-48.848L27.951-49.023Q27.961-49.026 27.968-49.028Q27.975-49.030 27.985-49.030L28.036-49.030Q28.064-49.030 28.087-49.006Q28.111-48.982 28.111-48.954L28.111-48.107Q28.111-48.086 28.087-48.059Q28.064-48.032 28.036-48.032L27.923-48.032Q27.896-48.032 27.870-48.057Q27.845-48.083 27.845-48.107Q27.845-48.343 27.739-48.507Q27.633-48.671 27.450-48.753Q27.267-48.835 27.035-48.835Q26.707-48.835 26.450-48.732Q26.194-48.630 26.194-48.353Q26.194-48.158 26.377-48.049Q26.560-47.939 26.789-47.898L27.363-47.792Q27.609-47.744 27.823-47.616Q28.036-47.488 28.173-47.285Q28.310-47.081 28.310-46.832Q28.310-46.319 27.944-46.080Q27.578-45.841 27.042-45.841Q26.546-45.841 26.214-46.135L25.948-45.861Q25.927-45.841 25.900-45.841L25.852-45.841Q25.828-45.841 25.801-45.868Q25.773-45.895 25.773-45.916M30.620-45.909L28.986-45.909L28.986-46.189Q29.215-46.189 29.364-46.223Q29.513-46.258 29.513-46.398L29.513-50.017Q29.513-50.287 29.405-50.349Q29.297-50.410 28.986-50.410L28.986-50.691L30.066-50.766L30.066-48.380Q30.172-48.565 30.350-48.707Q30.528-48.848 30.736-48.922Q30.945-48.995 31.170-48.995Q31.676-48.995 31.960-48.772Q32.244-48.548 32.244-48.052L32.244-46.398Q32.244-46.261 32.392-46.225Q32.541-46.189 32.767-46.189L32.767-45.909L31.136-45.909L31.136-46.189Q31.365-46.189 31.514-46.223Q31.663-46.258 31.663-46.398L31.663-48.038Q31.663-48.373 31.543-48.573Q31.423-48.773 31.109-48.773Q30.839-48.773 30.605-48.637Q30.371-48.500 30.232-48.266Q30.094-48.032 30.094-47.758L30.094-46.398Q30.094-46.261 30.244-46.225Q30.395-46.189 30.620-46.189L30.620-45.909M33.314-47.444Q33.314-47.765 33.438-48.054Q33.563-48.343 33.789-48.566Q34.014-48.790 34.310-48.910Q34.606-49.030 34.923-49.030Q35.252-49.030 35.513-48.930Q35.774-48.831 35.950-48.649Q36.127-48.466 36.221-48.208Q36.314-47.950 36.314-47.618Q36.314-47.526 36.232-47.505L33.977-47.505L33.977-47.444Q33.977-46.856 34.260-46.473Q34.544-46.090 35.111-46.090Q35.433-46.090 35.701-46.283Q35.969-46.476 36.058-46.791Q36.065-46.832 36.140-46.846L36.232-46.846Q36.314-46.822 36.314-46.750Q36.314-46.743 36.308-46.716Q36.195-46.319 35.824-46.080Q35.453-45.841 35.029-45.841Q34.592-45.841 34.192-46.049Q33.792-46.258 33.553-46.625Q33.314-46.992 33.314-47.444M33.983-47.714L35.798-47.714Q35.798-47.991 35.701-48.243Q35.604-48.496 35.405-48.652Q35.207-48.807 34.923-48.807Q34.647-48.807 34.433-48.649Q34.219-48.490 34.101-48.235Q33.983-47.980 33.983-47.714M36.902-47.420Q36.902-47.758 37.043-48.049Q37.183-48.339 37.427-48.553Q37.671-48.766 37.976-48.881Q38.280-48.995 38.605-48.995Q38.875-48.995 39.138-48.896Q39.401-48.797 39.592-48.619L39.592-50.017Q39.592-50.287 39.485-50.349Q39.377-50.410 39.066-50.410L39.066-50.691L40.143-50.766L40.143-46.582Q40.143-46.394 40.197-46.311Q40.252-46.227 40.353-46.208Q40.454-46.189 40.669-46.189L40.669-45.909L39.562-45.841L39.562-46.258Q39.145-45.841 38.519-45.841Q38.088-45.841 37.716-46.053Q37.343-46.264 37.123-46.625Q36.902-46.986 36.902-47.420M38.577-46.063Q38.786-46.063 38.972-46.135Q39.158-46.206 39.312-46.343Q39.466-46.480 39.562-46.658L39.562-48.267Q39.476-48.414 39.331-48.534Q39.186-48.654 39.016-48.713Q38.847-48.773 38.666-48.773Q38.106-48.773 37.837-48.384Q37.569-47.994 37.569-47.413Q37.569-46.842 37.803-46.452Q38.037-46.063 38.577-46.063",[867],[851,5097,5098],{"transform":5085},[856,5099],{"d":5100,"fill":2990,"stroke":2990,"className":5101,"style":897},"M44.601-46.743L44.601-48.247Q44.601-48.517 44.493-48.578Q44.385-48.640 44.074-48.640L44.074-48.920L45.182-48.995L45.182-46.763L45.182-46.743Q45.182-46.463 45.233-46.319Q45.284-46.176 45.426-46.119Q45.568-46.063 45.855-46.063Q46.108-46.063 46.313-46.203Q46.518-46.343 46.634-46.569Q46.751-46.794 46.751-47.044L46.751-48.247Q46.751-48.517 46.643-48.578Q46.535-48.640 46.224-48.640L46.224-48.920L47.332-48.995L47.332-46.582Q47.332-46.391 47.385-46.309Q47.438-46.227 47.538-46.208Q47.639-46.189 47.855-46.189L47.855-45.909L46.778-45.841L46.778-46.405Q46.669-46.223 46.523-46.100Q46.378-45.977 46.192-45.909Q46.005-45.841 45.804-45.841Q44.601-45.841 44.601-46.743M50.087-44.552L48.456-44.552L48.456-44.832Q48.685-44.832 48.834-44.867Q48.983-44.901 48.983-45.041L48.983-48.387Q48.983-48.558 48.846-48.599Q48.709-48.640 48.456-48.640L48.456-48.920L49.536-48.995L49.536-48.589Q49.758-48.790 50.045-48.893Q50.333-48.995 50.640-48.995Q51.067-48.995 51.431-48.782Q51.795-48.568 52.009-48.204Q52.223-47.840 52.223-47.420Q52.223-46.975 51.983-46.611Q51.744-46.247 51.351-46.044Q50.958-45.841 50.514-45.841Q50.247-45.841 49.999-45.941Q49.752-46.042 49.564-46.223L49.564-45.041Q49.564-44.904 49.712-44.868Q49.861-44.832 50.087-44.832L50.087-44.552M49.564-48.240L49.564-46.630Q49.697-46.377 49.940-46.220Q50.182-46.063 50.459-46.063Q50.787-46.063 51.040-46.264Q51.293-46.466 51.426-46.784Q51.560-47.102 51.560-47.420Q51.560-47.649 51.495-47.878Q51.430-48.107 51.302-48.305Q51.173-48.503 50.979-48.623Q50.784-48.742 50.551-48.742Q50.257-48.742 49.989-48.613Q49.721-48.483 49.564-48.240",[867],[856,5103],{"fill":858,"d":5104},"M131.284-.385h22.5v-17.071h-22.5Z",[851,5106,5107,5113],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,5108,5110],{"transform":5109},"translate(127.323 39.889)",[856,5111],{"d":4971,"fill":853,"stroke":853,"className":5112,"style":2838},[867],[851,5114,5115],{"transform":5109},[856,5116],{"d":4977,"fill":853,"stroke":853,"className":5117,"style":2838},[867],[856,5119],{"fill":858,"d":5120},"M206.326-.385h31.75v-17.071h-31.75Z",[851,5122,5123,5130],{"stroke":858,"fontFamily":4271,"fontSize":3770},[851,5124,5126],{"transform":5125},"translate(202.366 39.889)",[856,5127],{"d":5128,"fill":853,"stroke":853,"className":5129,"style":2838},"M11.409-45.909L8.377-45.909L8.377-46.225Q9.528-46.225 9.528-46.520L9.528-51.244Q9.040-51.011 8.319-51.011L8.319-51.327Q9.449-51.327 10.011-51.903L10.156-51.903Q10.191-51.903 10.224-51.870Q10.257-51.837 10.257-51.802L10.257-46.520Q10.257-46.225 11.409-46.225L11.409-45.909M14.819-47.386L12.380-47.386L12.380-47.702L15.206-51.850Q15.250-51.903 15.315-51.903L15.469-51.903Q15.509-51.903 15.542-51.870Q15.575-51.837 15.575-51.793L15.575-47.702L16.476-47.702L16.476-47.386L15.575-47.386L15.575-46.520Q15.575-46.225 16.476-46.225L16.476-45.909L13.922-45.909L13.922-46.225Q14.283-46.225 14.551-46.280Q14.819-46.335 14.819-46.520L14.819-47.386M14.876-50.875L12.714-47.702L14.876-47.702",[867],[851,5131,5132],{"transform":5125},[856,5133],{"d":5134,"fill":853,"stroke":853,"className":5135,"style":2838},"M26.826-45.909L23.794-45.909L23.794-46.225Q24.945-46.225 24.945-46.520L24.945-51.244Q24.457-51.011 23.736-51.011L23.736-51.327Q24.866-51.327 25.428-51.903L25.573-51.903Q25.608-51.903 25.641-51.870Q25.674-51.837 25.674-51.802L25.674-46.520Q25.674-46.225 26.826-46.225L26.826-45.909M29.849-45.711Q29.115-45.711 28.685-46.192Q28.254-46.674 28.089-47.366Q27.924-48.058 27.924-48.805Q27.924-49.534 28.217-50.257Q28.509-50.980 29.063-51.442Q29.616-51.903 30.363-51.903Q30.860-51.903 31.196-51.637Q31.532-51.371 31.532-50.888Q31.532-50.708 31.405-50.580Q31.277-50.453 31.102-50.453Q30.921-50.453 30.792-50.578Q30.662-50.703 30.662-50.888Q30.662-51.002 30.719-51.106Q30.776-51.209 30.877-51.268Q30.979-51.327 31.102-51.327Q31.106-51.327 31.110-51.325Q31.115-51.323 31.119-51.319Q31.005-51.486 30.796-51.565Q30.587-51.644 30.363-51.644Q29.919-51.644 29.561-51.343Q29.203-51.042 29.014-50.589Q28.781-49.983 28.781-48.950Q28.953-49.315 29.254-49.543Q29.555-49.772 29.941-49.772Q30.346-49.772 30.691-49.605Q31.036-49.438 31.273-49.157Q31.510-48.875 31.640-48.513Q31.770-48.150 31.770-47.746Q31.770-47.201 31.526-46.735Q31.282-46.269 30.842-45.990Q30.403-45.711 29.849-45.711M29.849-45.997Q30.311-45.997 30.546-46.254Q30.781-46.511 30.847-46.885Q30.913-47.258 30.913-47.728L30.913-47.763Q30.913-48.251 30.856-48.616Q30.798-48.981 30.570-49.244Q30.341-49.508 29.898-49.508Q29.528-49.508 29.278-49.264Q29.027-49.020 28.913-48.656Q28.799-48.291 28.799-47.944Q28.799-47.825 28.808-47.763Q28.808-47.746 28.805-47.735Q28.803-47.724 28.799-47.711Q28.799-47.060 29.036-46.529Q29.273-45.997 29.849-45.997",[867],[856,5137],{"fill":858,"d":5138},"M182.367-37.173 144.33-18.536",[856,5140],{"stroke":858,"d":5141},"m142.534-17.656 3.577.029-1.781-.91.373-1.964",[856,5143],{"fill":858,"d":5144},"m182.367-37.173 38.038 18.637",[856,5146],{"stroke":858,"d":5147},"m222.201-17.656-2.17-2.845.374 1.965-1.781.909",[1040,5149,5151,5152,5185,5186,5240,5241,5257,5258,5309],{"className":5150},[1043],"Splitting a full node (",[390,5153,5155],{"className":5154},[393],[390,5156,5158,5176],{"className":5157,"ariaHidden":398},[397],[390,5159,5161,5164,5167,5170,5173],{"className":5160},[402],[390,5162],{"className":5163,"style":3993},[406],[390,5165,3885],{"className":5166},[411,412],[390,5168],{"className":5169,"style":525},[462],[390,5171,530],{"className":5172},[529],[390,5174],{"className":5175,"style":525},[462],[390,5177,5179,5182],{"className":5178},[402],[390,5180],{"className":5181,"style":1706},[406],[390,5183,1238],{"className":5184},[411],", so ",[390,5187,5189],{"className":5188},[393],[390,5190,5192,5213,5231],{"className":5191,"ariaHidden":398},[397],[390,5193,5195,5198,5201,5204,5207,5210],{"className":5194},[402],[390,5196],{"className":5197,"style":3955},[406],[390,5199,789],{"className":5200},[411],[390,5202,3885],{"className":5203},[411,412],[390,5205],{"className":5206,"style":1691},[462],[390,5208,1696],{"className":5209},[1695],[390,5211],{"className":5212,"style":1691},[462],[390,5214,5216,5219,5222,5225,5228],{"className":5215},[402],[390,5217],{"className":5218,"style":1706},[406],[390,5220,575],{"className":5221},[411],[390,5223],{"className":5224,"style":525},[462],[390,5226,530],{"className":5227},[529],[390,5229],{"className":5230,"style":525},[462],[390,5232,5234,5237],{"className":5233},[402],[390,5235],{"className":5236,"style":1706},[406],[390,5238,3593],{"className":5239},[411]," keys). The full child overflows, so its median key ",[390,5242,5244],{"className":5243},[393],[390,5245,5247],{"className":5246,"ariaHidden":398},[397],[390,5248,5250,5253],{"className":5249},[402],[390,5251],{"className":5252,"style":1706},[406],[390,5254,5256],{"className":5255},[411],"11"," moves up into the parent and the remaining keys split into two nodes of ",[390,5259,5261],{"className":5260},[393],[390,5262,5264,5282,5300],{"className":5263,"ariaHidden":398},[397],[390,5265,5267,5270,5273,5276,5279],{"className":5266},[402],[390,5268],{"className":5269,"style":3921},[406],[390,5271,3885],{"className":5272},[411,412],[390,5274],{"className":5275,"style":1691},[462],[390,5277,1696],{"className":5278},[1695],[390,5280],{"className":5281,"style":1691},[462],[390,5283,5285,5288,5291,5294,5297],{"className":5284},[402],[390,5286],{"className":5287,"style":1706},[406],[390,5289,575],{"className":5290},[411],[390,5292],{"className":5293,"style":525},[462],[390,5295,530],{"className":5296},[529],[390,5298],{"className":5299,"style":525},[462],[390,5301,5303,5306],{"className":5302},[402],[390,5304],{"className":5305,"style":1706},[406],[390,5307,789],{"className":5308},[411]," keys each. The tree grows wider, never taller (unless the root itself splits), keeping all leaves at equal depth.",[381,5311,5312,5313,5316],{},"B-trees (and\ntheir variant the ",[498,5314,5315],{},"B+-tree",", which keeps all data in the leaves and links them\nfor range scans) are the index structure databases and filesystems rely on for\nexactly this reason.",[623,5318,5320],{"id":5319},"takeaways","Takeaways",[4025,5322,5323,5417,5448,5586,5591],{},[1433,5324,629,5325,5327,5328,5330,5331,5382,5383,5416],{},[498,5326,500],{}," maintains a structural ",[498,5329,504],{}," that forces\nheight ",[390,5332,5334],{"className":5333},[393],[390,5335,5337,5355],{"className":5336,"ariaHidden":398},[397],[390,5338,5340,5343,5346,5349,5352],{"className":5339},[402],[390,5341],{"className":5342,"style":518},[406],[390,5344,423],{"className":5345},[411,412],[390,5347],{"className":5348,"style":525},[462],[390,5350,530],{"className":5351},[529],[390,5353],{"className":5354,"style":525},[462],[390,5356,5358,5361,5364,5367,5373,5376,5379],{"className":5357},[402],[390,5359],{"className":5360,"style":407},[406],[390,5362,414],{"className":5363,"style":413},[411,412],[390,5365,419],{"className":5366},[418],[390,5368,5370],{"className":5369},[452],[390,5371,458],{"className":5372,"style":457},[411,456],[390,5374],{"className":5375,"style":463},[462],[390,5377,467],{"className":5378},[411,412],[390,5380,428],{"className":5381},[427],", repairing it after each update so every operation is\nworst-case ",[390,5384,5386],{"className":5385},[393],[390,5387,5389],{"className":5388,"ariaHidden":398},[397],[390,5390,5392,5395,5398,5401,5407,5410,5413],{"className":5391},[402],[390,5393],{"className":5394,"style":407},[406],[390,5396,414],{"className":5397,"style":413},[411,412],[390,5399,419],{"className":5400},[418],[390,5402,5404],{"className":5403},[452],[390,5405,458],{"className":5406,"style":457},[411,456],[390,5408],{"className":5409,"style":463},[462],[390,5411,467],{"className":5412},[411,412],[390,5414,428],{"className":5415},[427],", not merely best-case.",[1433,5418,5419,5422,5423,5447],{},[498,5420,5421],{},"Rotations"," are the ",[390,5424,5426],{"className":5425},[393],[390,5427,5429],{"className":5428,"ariaHidden":398},[397],[390,5430,5432,5435,5438,5441,5444],{"className":5431},[402],[390,5433],{"className":5434,"style":407},[406],[390,5436,414],{"className":5437,"style":413},[411,412],[390,5439,419],{"className":5440},[418],[390,5442,575],{"className":5443},[411],[390,5445,428],{"className":5446},[427]," primitive that reshapes a tree to change its\nheight while preserving the BST property and sorted order.",[1433,5449,5450,5453,5454,5560,5561,5585],{},[498,5451,5452],{},"Red-black trees"," color nodes and enforce no-two-reds plus equal\nblack-height; a counting argument shows ",[390,5455,5457],{"className":5456},[393],[390,5458,5460,5478,5548],{"className":5459,"ariaHidden":398},[397],[390,5461,5463,5466,5469,5472,5475],{"className":5462},[402],[390,5464],{"className":5465,"style":2474},[406],[390,5467,423],{"className":5468},[411,412],[390,5470],{"className":5471,"style":525},[462],[390,5473,2484],{"className":5474},[529],[390,5476],{"className":5477,"style":525},[462],[390,5479,5481,5484,5487,5490,5533,5536,5539,5542,5545],{"className":5480},[402],[390,5482],{"className":5483,"style":407},[406],[390,5485,789],{"className":5486},[411],[390,5488],{"className":5489,"style":463},[462],[390,5491,5493,5499],{"className":5492},[452],[390,5494,5496],{"className":5495},[452],[390,5497,458],{"className":5498,"style":457},[411,456],[390,5500,5502],{"className":5501},[756],[390,5503,5505,5525],{"className":5504},[760,761],[390,5506,5508,5522],{"className":5507},[765],[390,5509,5511],{"className":5510,"style":2521},[769],[390,5512,5513,5516],{"style":2524},[390,5514],{"className":5515,"style":778},[777],[390,5517,5519],{"className":5518},[782,783,784,785],[390,5520,789],{"className":5521},[411,785],[390,5523,794],{"className":5524},[793],[390,5526,5528],{"className":5527},[765],[390,5529,5531],{"className":5530,"style":2543},[769],[390,5532],{},[390,5534,419],{"className":5535},[418],[390,5537,467],{"className":5538},[411,412],[390,5540],{"className":5541,"style":1691},[462],[390,5543,2129],{"className":5544},[1695],[390,5546],{"className":5547,"style":1691},[462],[390,5549,5551,5554,5557],{"className":5550},[402],[390,5552],{"className":5553,"style":407},[406],[390,5555,575],{"className":5556},[411],[390,5558,428],{"className":5559},[427],", and fix-ups are\n",[390,5562,5564],{"className":5563},[393],[390,5565,5567],{"className":5566,"ariaHidden":398},[397],[390,5568,5570,5573,5576,5579,5582],{"className":5569},[402],[390,5571],{"className":5572,"style":407},[406],[390,5574,414],{"className":5575,"style":413},[411,412],[390,5577,419],{"className":5578},[418],[390,5580,575],{"className":5581},[411],[390,5583,428],{"className":5584},[427]," rotations\u002Frecolorings along one path.",[1433,5587,5588,5590],{},[498,5589,616],{}," reach the same bound with a stricter height-difference invariant:\nshorter trees, more rotations.",[1433,5592,5593,5614,5615,5639,5640,5710,5711,5714],{},[390,5594,5596],{"className":5595},[393],[390,5597,5599],{"className":5598,"ariaHidden":398},[397],[390,5600,5602,5605],{"className":5601},[402],[390,5603],{"className":5604,"style":3831},[406],[390,5606,5608],{"className":5607},[3835,3836],[390,5609,5611],{"className":5610},[411,2356],[390,5612,3843],{"className":5613},[411]," trade tall-and-thin for short-and-wide, packing ",[390,5616,5618],{"className":5617},[393],[390,5619,5621],{"className":5620,"ariaHidden":398},[397],[390,5622,5624,5627,5630,5633,5636],{"className":5623},[402],[390,5625],{"className":5626,"style":407},[406],[390,5628,445],{"className":5629},[411],[390,5631,419],{"className":5632},[418],[390,5634,3885],{"className":5635},[411,412],[390,5637,428],{"className":5638},[427]," keys\nper node so height is ",[390,5641,5643],{"className":5642},[393],[390,5644,5646],{"className":5645,"ariaHidden":398},[397],[390,5647,5649,5652,5655,5658,5701,5704,5707],{"className":5648},[402],[390,5650],{"className":5651,"style":407},[406],[390,5653,414],{"className":5654,"style":413},[411,412],[390,5656,419],{"className":5657},[418],[390,5659,5661,5667],{"className":5660},[452],[390,5662,5664],{"className":5663},[452],[390,5665,458],{"className":5666,"style":457},[411,456],[390,5668,5670],{"className":5669},[756],[390,5671,5673,5693],{"className":5672},[760,761],[390,5674,5676,5690],{"className":5675},[765],[390,5677,5679],{"className":5678,"style":4556},[769],[390,5680,5681,5684],{"style":2524},[390,5682],{"className":5683,"style":778},[777],[390,5685,5687],{"className":5686},[782,783,784,785],[390,5688,3885],{"className":5689},[411,412,785],[390,5691,794],{"className":5692},[793],[390,5694,5696],{"className":5695},[765],[390,5697,5699],{"className":5698,"style":2543},[769],[390,5700],{},[390,5702],{"className":5703,"style":463},[462],[390,5705,467],{"className":5706},[411,412],[390,5708,428],{"className":5709},[427],", minimizing ",[498,5712,5713],{},"disk block transfers",", the\ndominant cost for on-disk data.",[5716,5717,5720,5725],"section",{"className":5718,"dataFootnotes":376},[5719],"footnotes",[623,5721,5724],{"className":5722,"id":573},[5723],"sr-only","Footnotes",[1430,5726,5727,5775,5812,5912,5924],{},[1433,5728,5730,5733,5734,5767,5768],{"id":5729},"user-content-fn-erickson-balanced",[498,5731,5732],{},"Erickson",", Ch. — Balanced Binary Search Trees: invariant-plus-rebalancing forces worst-case ",[390,5735,5737],{"className":5736},[393],[390,5738,5740],{"className":5739,"ariaHidden":398},[397],[390,5741,5743,5746,5749,5752,5758,5761,5764],{"className":5742},[402],[390,5744],{"className":5745,"style":407},[406],[390,5747,414],{"className":5748,"style":413},[411,412],[390,5750,419],{"className":5751},[418],[390,5753,5755],{"className":5754},[452],[390,5756,458],{"className":5757,"style":457},[411,456],[390,5759],{"className":5760,"style":463},[462],[390,5762,467],{"className":5763},[411,412],[390,5765,428],{"className":5766},[427]," height. ",[385,5769,5774],{"href":5770,"ariaLabel":5771,"className":5772,"dataFootnoteBackref":376},"#user-content-fnref-erickson-balanced","Back to reference 1",[5773],"data-footnote-backref","↩",[1433,5776,5778,5781,5782,5806,5807],{"id":5777},"user-content-fn-clrs-rotate",[498,5779,5780],{},"CLRS",", Ch. 13 — Red-Black Trees (§13.2): rotations as the ",[390,5783,5785],{"className":5784},[393],[390,5786,5788],{"className":5787,"ariaHidden":398},[397],[390,5789,5791,5794,5797,5800,5803],{"className":5790},[402],[390,5792],{"className":5793,"style":407},[406],[390,5795,414],{"className":5796,"style":413},[411,412],[390,5798,419],{"className":5799},[418],[390,5801,575],{"className":5802},[411],[390,5804,428],{"className":5805},[427]," restructuring primitive that preserves the BST property. ",[385,5808,5774],{"href":5809,"ariaLabel":5810,"className":5811,"dataFootnoteBackref":376},"#user-content-fnref-clrs-rotate","Back to reference 2",[5773],[1433,5813,5815,5817,5818,5906,5907],{"id":5814},"user-content-fn-clrs-rb",[498,5816,5780],{},", Ch. 13 — Red-Black Trees (§13.1): the color invariants that bound height to ",[390,5819,5821],{"className":5820},[393],[390,5822,5824,5894],{"className":5823,"ariaHidden":398},[397],[390,5825,5827,5830,5833,5836,5879,5882,5885,5888,5891],{"className":5826},[402],[390,5828],{"className":5829,"style":407},[406],[390,5831,789],{"className":5832},[411],[390,5834],{"className":5835,"style":463},[462],[390,5837,5839,5845],{"className":5838},[452],[390,5840,5842],{"className":5841},[452],[390,5843,458],{"className":5844,"style":457},[411,456],[390,5846,5848],{"className":5847},[756],[390,5849,5851,5871],{"className":5850},[760,761],[390,5852,5854,5868],{"className":5853},[765],[390,5855,5857],{"className":5856,"style":2521},[769],[390,5858,5859,5862],{"style":2524},[390,5860],{"className":5861,"style":778},[777],[390,5863,5865],{"className":5864},[782,783,784,785],[390,5866,789],{"className":5867},[411,785],[390,5869,794],{"className":5870},[793],[390,5872,5874],{"className":5873},[765],[390,5875,5877],{"className":5876,"style":2543},[769],[390,5878],{},[390,5880,419],{"className":5881},[418],[390,5883,467],{"className":5884},[411,412],[390,5886],{"className":5887,"style":1691},[462],[390,5889,2129],{"className":5890},[1695],[390,5892],{"className":5893,"style":1691},[462],[390,5895,5897,5900,5903],{"className":5896},[402],[390,5898],{"className":5899,"style":407},[406],[390,5901,575],{"className":5902},[411],[390,5904,428],{"className":5905},[427],". ",[385,5908,5774],{"href":5909,"ariaLabel":5910,"className":5911,"dataFootnoteBackref":376},"#user-content-fnref-clrs-rb","Back to reference 3",[5773],[1433,5913,5915,5918,5919],{"id":5914},"user-content-fn-skiena-balanced",[498,5916,5917],{},"Skiena",", §3.4 — Balanced Search Trees: red-black trees as the practical balanced BST behind library ordered maps. ",[385,5920,5774],{"href":5921,"ariaLabel":5922,"className":5923,"dataFootnoteBackref":376},"#user-content-fnref-skiena-balanced","Back to reference 4",[5773],[1433,5925,5927,5929,5930,5963,5964,6000,6001],{"id":5926},"user-content-fn-clrs-btree",[498,5928,5780],{},", Ch. 18 — B-Trees (§18.1): the minimum-degree structure with ",[390,5931,5933],{"className":5932},[393],[390,5934,5936,5954],{"className":5935,"ariaHidden":398},[397],[390,5937,5939,5942,5945,5948,5951],{"className":5938},[402],[390,5940],{"className":5941,"style":3921},[406],[390,5943,3885],{"className":5944},[411,412],[390,5946],{"className":5947,"style":1691},[462],[390,5949,1696],{"className":5950},[1695],[390,5952],{"className":5953,"style":1691},[462],[390,5955,5957,5960],{"className":5956},[402],[390,5958],{"className":5959,"style":1706},[406],[390,5961,575],{"className":5962},[411]," to ",[390,5965,5967],{"className":5966},[393],[390,5968,5970,5991],{"className":5969,"ariaHidden":398},[397],[390,5971,5973,5976,5979,5982,5985,5988],{"className":5972},[402],[390,5974],{"className":5975,"style":3955},[406],[390,5977,789],{"className":5978},[411],[390,5980,3885],{"className":5981},[411,412],[390,5983],{"className":5984,"style":1691},[462],[390,5986,1696],{"className":5987},[1695],[390,5989],{"className":5990,"style":1691},[462],[390,5992,5994,5997],{"className":5993},[402],[390,5995],{"className":5996,"style":1706},[406],[390,5998,575],{"className":5999},[411]," keys per node, minimizing disk transfers. ",[385,6002,5774],{"href":6003,"ariaLabel":6004,"className":6005,"dataFootnoteBackref":376},"#user-content-fnref-clrs-btree","Back to reference 5",[5773],[6007,6008,6009],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}html.dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}",{"title":376,"searchDepth":18,"depth":18,"links":6011},[6012,6013,6017,6018,6019],{"id":625,"depth":18,"text":626},{"id":1409,"depth":18,"text":1410,"children":6014},[6015],{"id":1490,"depth":24,"text":6016},"Why the height is O(logn)",{"id":3713,"depth":18,"text":3714},{"id":5319,"depth":18,"text":5320},{"id":573,"depth":18,"text":5724},"The previous lesson left us with a sharp problem. A binary search tree does\neverything in O(h) time, which is glorious Θ(logn) when the tree is\nbalanced and catastrophic Θ(n) when it is not, and we cannot control the\norder in which keys arrive. A balanced search tree removes the dependence on\nluck. It maintains a structural invariant strong enough to force\nh=O(logn), and after every insertion or deletion it does a small amount of\nrebalancing to restore that invariant.1 The guarantee becomes worst-case, not\nbest-case: O(logn) per operation, on every input, forever.","md",{"moduleNumber":73,"lessonNumber":24,"order":6023},403,true,[6026,6030,6033,6037,6041],{"title":6027,"slug":6028,"difficulty":6029},"Balanced Binary Tree","balanced-binary-tree","Easy",{"title":6031,"slug":6032,"difficulty":6029},"Convert Sorted Array to BST","convert-sorted-array-to-binary-search-tree",{"title":6034,"slug":6035,"difficulty":6036},"My Calendar I","my-calendar-i","Medium",{"title":6038,"slug":6039,"difficulty":6040},"Count of Smaller Numbers After Self","count-of-smaller-numbers-after-self","Hard",{"title":6042,"slug":6043,"difficulty":6040},"Count of Range Sum","count-of-range-sum","---\ntitle: Balanced Search Trees\nmodule: Data Structures\nmoduleNumber: 4\nlessonNumber: 3\norder: 403\nsummary: >-\n  An ordinary BST can degrade to height $\\Theta(n)$; balanced search trees\n  guarantee $h = O(\\log n)$ by maintaining invariants and repairing them after\n  every update. We meet rotations, the local restructuring primitive, then\n  red-black trees, whose color invariants force logarithmic height, and finally\n  B-trees, which trade tall-and-thin for short-and-wide to win on disk.\ntopics: [Balanced Trees]\nsources:\n  - book: CLRS\n    ref: \"Ch. 13 & 18 — Red-Black Trees, B-Trees\"\n  - book: Skiena\n    ref: \"§3.4 — Balanced Search Trees\"\n  - book: Erickson\n    ref: \"Ch. — Balanced Binary Search Trees\"\npractice:\n  - title: 'Balanced Binary Tree'\n    slug: balanced-binary-tree\n    difficulty: Easy\n  - title: 'Convert Sorted Array to BST'\n    slug: convert-sorted-array-to-binary-search-tree\n    difficulty: Easy\n  - title: 'My Calendar I'\n    slug: my-calendar-i\n    difficulty: Medium\n  - title: 'Count of Smaller Numbers After Self'\n    slug: count-of-smaller-numbers-after-self\n    difficulty: Hard\n  - title: 'Count of Range Sum'\n    slug: count-of-range-sum\n    difficulty: Hard\n---\n\nThe previous lesson left us with a sharp problem. A [binary search tree](\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees) does\neverything in $O(h)$ time, which is glorious $\\Theta(\\log n)$ when the tree is\nbalanced and catastrophic $\\Theta(n)$ when it is not, and we cannot control the\norder in which keys arrive. A **balanced search tree** removes the dependence on\nluck. It maintains a structural **invariant** strong enough to force\n$h = O(\\log n)$, and after every insertion or deletion it does a small amount of\n**rebalancing** to restore that invariant.[^erickson-balanced] The guarantee becomes worst-case, not\nbest-case: $O(\\log n)$ per operation, on every input, forever.\n\nDifferent balanced trees enforce different invariants. [AVL trees](\u002Falgorithms\u002Fdata-structures\u002Favl-trees) bound the\nheight difference of sibling subtrees, red-black trees color the nodes, and B-trees\npack many keys per node, but they all share one mechanical primitive for\nreshaping the tree without disturbing its sorted order: the **rotation**.\n\n## Rotations: local surgery that preserves order\n\nA **rotation** rearranges three pointers to change a tree's shape, and hence its\nheight, while keeping the BST property intact. A _right rotation_ at a node $y$\nmakes $y$'s left child $x$ the new subtree root, with $y$ becoming $x$'s right\nchild; a _left rotation_ is the exact inverse. The subtree that was \"in the\nmiddle\" (call it $T_2$) switches parents but stays between $x$ and $y$ in key\norder.\n\n$$\n% caption: Left and right rotations reshape a BST while preserving sorted order\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=7mm, inner sep=0},\n  tri\u002F.style={draw, isosceles triangle, isosceles triangle apex angle=60,\n    shape border rotate=90, minimum size=5mm, inner sep=1pt},\n  level distance=11mm]\n  % left tree (rooted at y)\n  \\begin{scope}\n    \\node (y) {$y$}\n      child {node (x) {$x$}\n        child {node[tri] {$T_1$}}\n        child {node[tri] {$T_2$}}\n      }\n      child {node[tri] {$T_3$}};\n  \\end{scope}\n  % arrows\n  \\node (la) at (3.0,-1.3) {};\n  \\draw[->, thick, draw] (2.0,-1.3) -- node[draw=none, above, font=\\footnotesize] {left} node[draw=none, below, font=\\footnotesize] {right} (4.2,-1.3);\n  % right tree (rooted at x)\n  \\begin{scope}[xshift=6.4cm]\n    \\node (x2) {$x$}\n      child {node[tri] {$T_1$}}\n      child {node (y2) {$y$}\n        child {node[tri] {$T_2$}}\n        child {node[tri] {$T_3$}}\n      };\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nIn both trees the sorted order is $T_1 \u003C x \u003C T_2 \u003C y \u003C T_3$ — a rotation\nnever violates the BST property.[^clrs-rotate] What it _does_ change is height: rotating can\npull a deep subtree up a level and push a shallow one down, which is precisely\nthe lever a balanced tree pulls to repair itself.\n\n```algorithm\ncaption: $\\textsc{Left-Rotate}(T, x)$ — pivot $x$ down-left, its right child $y$ up\n$y \\gets right(x)$\n$right(x) \\gets left(y)$ \u002F\u002F $T_2$ becomes x's right child\nif $left(y) \\ne \\text{nil}$ then\n  $parent(left(y)) \\gets x$\n$parent(y) \\gets parent(x)$ \u002F\u002F splice y where x was\nif $parent(x) = \\text{nil}$ then\n  $root(T) \\gets y$\nelse if $x = left(parent(x))$ then\n  $left(parent(x)) \\gets y$\nelse\n  $right(parent(x)) \\gets y$\n$left(y) \\gets x$ \u002F\u002F x hangs under y\n$parent(x) \\gets y$\n```\n\nA rotation touches only a constant number of pointers, so it runs in $O(1)$\ntime. Every balanced-tree rebalancing operation is built from a handful of\nrotations (plus, for red-black trees, recolorings) along a single root-to-leaf\npath, hence $O(\\log n)$ work to repair the tree after an update.\n\n## Red-black trees: balance by color\n\nA **red-black tree** is a BST in which every node carries one extra bit, its\n**color** — red or black.[^clrs-rb] Five invariants on those colors squeeze the tree into\nlogarithmic height:\n\n1. Every node is either **red** or **black**.\n2. The **root** is black.\n3. Every **leaf** (the `nil` sentinel) is black.\n4. If a node is **red**, then both its children are **black** (no two reds in a\n   row).\n5. For each node, every path from it down to a descendant leaf contains the\n   _same number of black nodes_ — its **black-height**.\n\nProperties 4 and 5 are the engine. Property 5 says all root-to-leaf paths have\nthe same number of black nodes; property 4 says reds cannot cluster, so reds can\nat most _double_ a path's length by interleaving. Together they bound how\nlopsided the tree can get.\n\n### Why the height is $O(\\log n)$\n\nThe argument is short and worth seeing, because it explains _why_ the color rules\ntake exactly this form. Let $bh(x)$ be the black-height of node $x$ (the number of\nblack nodes on any path from $x$ down to a leaf, not counting $x$).\n\n> **Lemma.** The subtree rooted at $x$ contains at least $2^{bh(x)} - 1$ internal\n> nodes.\n\n> **Proof by induction on height.** If $x$ is a leaf, $bh(x) = 0$ and the subtree\n> has $2^0 - 1 = 0$ internal nodes. Otherwise each child of $x$ has black-height\n> $bh(x)$ or $bh(x)-1$ (it drops by one only across a black child), so by induction\n> each child's subtree has at least $2^{bh(x)-1} - 1$ internal nodes, and\n>\n> $$\n> 2\\bigl(2^{bh(x)-1} - 1\\bigr) + 1 = 2^{bh(x)} - 1. \\qquad\\square\n> $$\n\nNow let $h$ be the tree's height. By property 4 at least half the nodes on any\nroot-to-leaf path are black, so the root's black-height is at least $h\u002F2$.\nApplying the lemma at the root with $n$ internal nodes,\n\n$$\nn \\ge 2^{bh(\\text{root})} - 1 \\ge 2^{h\u002F2} - 1\n\\quad\\Longrightarrow\\quad\nh \\le 2\\log_2(n + 1) = O(\\log n).\n$$\n\nSo _every_ operation that walks the tree (search, insert, delete, successor)\nruns in $O(\\log n)$ worst-case time. After an insertion or deletion, the new node\nmay violate property 4 (a red child of a red parent) or property 2\u002F5; the tree\nrepairs itself by recoloring and rotating up the path from the change toward the\nroot. Each fix-up is $O(1)$ work, the path has length $O(\\log n)$, and the loop\nterminates either by pushing the violation upward until it vanishes or by a final\nrotation. We will not work through every case of insert-fixup here; the point\nis the _shape_ of the guarantee: bounded-height invariant plus $O(\\log n)$\nrotation-and-recolor repair equals worst-case logarithmic operations.\n\nThe most common fix-up is the easy one: when the newly inserted red node $z$\nhas a red parent _and_ a red **uncle** $y$, we simply recolor — paint the parent\nand uncle black and the grandparent red — with no rotation at all. That repaints\nthe local subtree to restore \"no two reds\" while preserving every path's\nblack-height, but the grandparent is now red, so the violation may reappear one\nlevel up; we move $z$ to the grandparent and continue. Only when the uncle is\n_black_ do we resort to one or two rotations, after which the loop ends.\n\n$$\n% caption: Insert-fixup Case 1 — a red uncle $y$ lets us recolor instead of rotate, pushing the violation up to grandparent $z.p.p$\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=7mm, inner sep=0, font=\\small},\n  red\u002F.style={draw=red, text=red, line width=0.6pt},\n  blk\u002F.style={draw=black, text=black},\n  level distance=11mm,\n  level 1\u002F.style={sibling distance=26mm},\n  level 2\u002F.style={sibling distance=13mm}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % --- before ---\n  \\begin{scope}\n    \\node[blk] (g) {$G$}\n      child {node[red] (p) {$P$}\n        child {node[red] (z) {$z$}}\n        child {node[blk] {$d$}}\n      }\n      child {node[red] (y) {$y$}};\n    \\node[draw=none, font=\\footnotesize] at (-2.05,-1.1) {parent};\n    \\node[draw=none, font=\\footnotesize] at (1.3,-2.0) {uncle};\n  \\end{scope}\n  \\draw[->, thick, draw=none] (3.0,-1.3) -- (4.4,-1.3);\n  \\node[draw=none] at (3.7,-1.0) {recolor};\n  \\draw[->, very thick] (3.0,-1.6) -- (4.4,-1.6);\n  % --- after ---\n  \\begin{scope}[xshift=62mm]\n    \\node[red] (g2) {$G$}\n      child {node[blk] (p2) {$P$}\n        child {node[red] (z2) {$z$}}\n        child {node[blk] {$d$}}\n      }\n      child {node[blk] (y2) {$y$}};\n    \\node[draw=none, font=\\footnotesize, text=acc] at (0,1.0) {new violation};\n    \\draw[->, acc, thick] (0,0.7) -- (g2);\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\n> **Intuition.** Red nodes are \"free riders\" inserted between black levels; the\n> no-two-reds rule keeps them from stacking, and the equal-black-height rule\n> keeps the black skeleton perfectly balanced. The black skeleton has height\n> $\\le \\log_2(n+1)$, and reds at most double it.\n\nThe payoff is starkest on the worst possible input for a plain BST: keys\narriving already sorted. A naive tree threads them into a single descending path\nof height $n-1$; the red-black invariants instead rebalance on the fly into a\nbushy tree of height $O(\\log n)$, with every root-to-leaf path carrying the same\nblack-height.\n\n$$\n% caption: The same keys $\\langle 1,2,3,4,5,6,7\\rangle$ inserted in order: a plain BST degenerates to height $6$, a red-black tree stays at height $2$ with equal black-heights\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=6.5mm, inner sep=0, font=\\small},\n  red\u002F.style={draw=red, text=red, line width=0.6pt},\n  blk\u002F.style={draw=black, text=black},\n  level distance=11mm,\n  level 1\u002F.style={sibling distance=20mm},\n  level 2\u002F.style={sibling distance=11mm},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % --- degenerate BST: a right-leaning path ---\n  \\foreach \\k [count=\\i from 0] in {1,2,3,4,5,6,7} {\n    \\node[blk] (d\\k) at (\\i*0.62, -\\i*0.78) {$\\k$};\n  }\n  \\foreach \\a\u002F\\b in {1\u002F2,2\u002F3,3\u002F4,4\u002F5,5\u002F6,6\u002F7} {\n    \\draw[->] (d\\a) -- (d\\b);\n  }\n  \\node[draw=none, font=\\footnotesize] at (1.9,0.55) {plain BST: $h=6$};\n  % --- balanced red-black tree (perfect, all blacks) ---\n  \\begin{scope}[xshift=52mm, yshift=-2mm]\n    \\node[blk] (r4) {$4$}\n      child {node[blk] (r2) {$2$}\n        child {node[red] {$1$}}\n        child {node[red] {$3$}}\n      }\n      child {node[blk] (r6) {$6$}\n        child {node[red] {$5$}}\n        child {node[red] {$7$}}\n      };\n    \\node[draw=none, font=\\footnotesize] at (0,0.9) {red-black: $h=2,\\ bh=1$};\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nAVL trees reach the same $O(\\log n)$ guarantee with a different invariant, namely\nthat the heights of any node's two subtrees differ by at most $1$, enforced by rotations.\nAVL trees are more rigidly balanced (shorter, faster lookups) but do more\nrotations on updates; red-black trees are looser and rebalance more cheaply,\nwhich is why they back many standard-library ordered maps.[^skiena-balanced]\n\n## B-trees: balance for the disk\n\nRed-black and AVL trees minimize the _number of nodes_ on a root-to-leaf path.\nBut when the data lives on a disk or SSD, the cost that dominates is not\ncomparisons but **block transfers**: reading one page from disk is millions\nof times slower than a memory comparison. A binary tree of $10^9$ keys has height\n$\\approx 30$, meaning up to $30$ disk reads per search. That is the problem\n$\\textsc{B-trees}$ solve.\n\nA $\\textsc{B-tree}$ of minimum degree $t \\ge 2$ is a balanced search tree that is\n_short and wide_: each internal node holds between $t-1$ and $2t-1$ keys (kept\nsorted within the node) and correspondingly between $t$ and $2t$ children.[^clrs-btree] Its\ndefining structural rules:\n\n- Every node holds between $t-1$ and $2t-1$ keys (the root may hold as few as\n  $1$); a node with $k$ keys has exactly $k+1$ children.\n- The keys in a node partition the key space, just as in a BST: child $i$ holds\n  all keys between key $i-1$ and key $i$ of the node.\n- **All leaves are at the same depth**, so the tree is perfectly height-balanced\n  by construction.\n\n$$\n% caption: A B-tree packing several sorted keys per node with all leaves at equal depth\n\\begin{tikzpicture}[\n  node distance=4mm,\n  keynode\u002F.style={draw, minimum height=6mm, inner sep=2pt, font=\\small},\n  >=stealth]\n  \\node[keynode] (root) {\\,$\\;17\\;$\\,};\n  \\node[keynode] (l) [below left=12mm and 26mm of root] {\\,$5\\ \\ 11$\\,};\n  \\node[keynode] (r) [below right=12mm and 26mm of root] {\\,$23\\ \\ 31$\\,};\n  \\draw[->] (root.south) -- (l.north);\n  \\draw[->] (root.south) -- (r.north);\n  \\node[keynode] (l0) [below=8mm of l, xshift=-12mm] {\\,$2\\ \\ 3$\\,};\n  \\node[keynode] (l1) [below=8mm of l] {\\,$7\\ \\ 9$\\,};\n  \\node[keynode] (l2) [below=8mm of l, xshift=12mm] {\\,$13\\ \\ 15$\\,};\n  \\draw[->] (l.south) -- (l0.north);\n  \\draw[->] (l.south) -- (l1.north);\n  \\draw[->] (l.south) -- (l2.north);\n  \\node[keynode] (r0) [below=8mm of r, xshift=-12mm] {\\,$19\\ \\ 21$\\,};\n  \\node[keynode] (r1) [below=8mm of r] {\\,$27\\ \\ 29$\\,};\n  \\node[keynode] (r2) [below=8mm of r, xshift=12mm] {\\,$37\\ \\ 41$\\,};\n  \\draw[->] (r.south) -- (r0.north);\n  \\draw[->] (r.south) -- (r1.north);\n  \\draw[->] (r.south) -- (r2.north);\n\\end{tikzpicture}\n$$\n\nEach node is sized to fill one disk block, so a single read brings in a whole\nfan-out's worth of keys. Because every node has up to $2t$ children, a B-tree\nholding $n$ keys has height\n\n$$\nh \\le \\log_t \\frac{n+1}{2} = O\\!\\left(\\frac{\\log n}{\\log t}\\right).\n$$\n\nThe fan-out $t$ sits in the denominator: making nodes wide makes the tree\n_shallow_. With $t$ on the order of a thousand keys per block, a tree of a\nbillion keys has height $2$ or $3$, meaning two or three disk reads per search\ninstead of thirty. Insertions and deletions keep all leaves at the same depth by\n**splitting** a full node (one with $2t-1$ keys) into two and pushing its median\nkey up to the parent, or **merging** an underfull node with a sibling: local\n$O(t)$ restructuring that ripples at most up one root-to-leaf path.\n\n$$\n% caption: Splitting a full node ($t=3$, so $2t-1=5$ keys). The full child overflows, so its median key $11$ moves up into the parent and the remaining keys split into two nodes of $t-1=2$ keys each. The tree grows wider, never taller (unless the root itself splits), keeping all leaves at equal depth.\n\\begin{tikzpicture}[\n  keynode\u002F.style={draw, minimum height=6mm, inner sep=2pt, font=\\small},\n  full\u002F.style={draw, minimum height=6mm, inner sep=2pt, font=\\small, fill=acc!15},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % before: parent with key 20, full child with 5 keys\n  \\node[keynode] (p) at (0,0) {\\,$20$\\,};\n  \\node[full] (c) at (-1.3,-1.3) {\\,$7\\ \\ 9\\ \\ 11\\ \\ 14\\ \\ 16$\\,};\n  \\draw[->] (p.south) -- (c.north east);\n  \\node[draw=none, font=\\scriptsize, red!75!black, align=center] at (-1.3,-2.1) {full: $5$ keys,\\\\median $11$};\n  % arrow\n  \\draw[->, very thick] (2.3,-0.7) -- node[above, font=\\footnotesize] {split} (3.7,-0.7);\n  % after: parent gains 11, two children of 2 keys\n  \\begin{scope}[xshift=62mm]\n    \\node[keynode] (p2) at (0,0) {\\,$11\\ \\ 20$\\,};\n    \\node[draw=none, font=\\scriptsize, acc] at (0,0.7) {$11$ pushed up};\n    \\node[keynode] (cl) at (-1.4,-1.3) {\\,$7\\ \\ 9$\\,};\n    \\node[keynode] (cr) at (1.4,-1.3) {\\,$14\\ \\ 16$\\,};\n    \\draw[->] (p2.south) -- (cl.north);\n    \\draw[->] (p2.south) -- (cr.north);\n  \\end{scope}\n\\end{tikzpicture}\n$$ B-trees (and\ntheir variant the **B+-tree**, which keeps all data in the leaves and links them\nfor range scans) are the index structure databases and filesystems rely on for\nexactly this reason.\n\n## Takeaways\n\n- A **balanced search tree** maintains a structural **invariant** that forces\n  height $h = O(\\log n)$, repairing it after each update so every operation is\n  worst-case $O(\\log n)$, not merely best-case.\n- **Rotations** are the $O(1)$ primitive that reshapes a tree to change its\n  height while preserving the BST property and sorted order.\n- **Red-black trees** color nodes and enforce no-two-reds plus equal\n  black-height; a counting argument shows $h \\le 2\\log_2(n+1)$, and fix-ups are\n  $O(1)$ rotations\u002Frecolorings along one path.\n- **AVL trees** reach the same bound with a stricter height-difference invariant:\n  shorter trees, more rotations.\n- $\\textsc{B-trees}$ trade tall-and-thin for short-and-wide, packing $\\Theta(t)$ keys\n  per node so height is $O(\\log_t n)$, minimizing **disk block transfers**, the\n  dominant cost for on-disk data.\n\n[^erickson-balanced]: **Erickson**, Ch. — Balanced Binary Search Trees: invariant-plus-rebalancing forces worst-case $O(\\log n)$ height.\n[^clrs-rotate]: **CLRS**, Ch. 13 — Red-Black Trees (§13.2): rotations as the $O(1)$ restructuring primitive that preserves the BST property.\n[^clrs-rb]: **CLRS**, Ch. 13 — Red-Black Trees (§13.1): the color invariants that bound height to $2\\log_2(n+1)$.\n[^skiena-balanced]: **Skiena**, §3.4 — Balanced Search Trees: red-black trees as the practical balanced BST behind library ordered maps.\n[^clrs-btree]: **CLRS**, Ch. 18 — B-Trees (§18.1): the minimum-degree structure with $t-1$ to $2t-1$ keys per node, minimizing disk transfers.\n",{"text":6046,"minutes":6047,"time":6048,"words":6049},"8 min read",7.325,439500,1465,{"title":100,"description":6020},[6052,6054,6056],{"book":5780,"ref":6053},"Ch. 13 & 18 — Red-Black Trees, B-Trees",{"book":5917,"ref":6055},"§3.4 — Balanced Search Trees",{"book":5732,"ref":6057},"Ch. — Balanced Binary Search Trees","available","01.algorithms\u002F04.data-structures\u002F05.balanced-trees",[97],"W1QM7xWZMSRIpDCChpjbtbv8RrxeN3NdkVBqpZnwjN4",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":6063,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":6064,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":6065,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":6066,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":6067,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":6068,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":6069,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":6070,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":6071,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":6072,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":6073,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":6074,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":6075,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":6049,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":6076,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":6077,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":6078,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":6079,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":6080,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":6081,"\u002Falgorithms\u002Fsequences\u002Ftries":6082,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":6083,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":6084,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":6085,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":6086,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":6087,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":6088,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":6089,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":6090,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":6091,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":6092,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":6093,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":6094,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":6095,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":6096,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":6097,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":6098,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":6099,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":6100,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":6101,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":6102,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":6103,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":6104,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":6105,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":6106,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":6107,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":6108,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":6078,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":6109,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":6110,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":6111,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":6112,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":6094,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":6113,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":6114,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":6075,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":6115,"\u002Falgorithms":6116,"\u002Ftheory-of-computation":6117,"\u002Fcomputer-architecture":6117,"\u002Fphysical-computing":6117,"\u002Fdatabases":6117,"\u002Fdeep-learning":6117},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1568,1451,1291,1543,1883,1443,1599,2038,2241,1744,1678,2288,1929,1657,1412,1554,1418,1713,1798,1694,1762,1534,1595,1262,1495,1630,2306,2142,107,0,{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":6119,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":6120,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":6121,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":6122,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":6123,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":6124,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":6125,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":6126,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":6127,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":6128,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":6129,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":6130,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":6131,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":6132,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":6133,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":6134,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":6135,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":6136,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":6137,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":6138,"\u002Falgorithms\u002Fsequences\u002Ftries":6139,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":6140,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":6141,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":6142,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":6143,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":6144,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":6145,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":6146,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":6147,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":6148,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":6149,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":6150,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":6151,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":6152,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":6153,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":6154,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":6155,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":6156,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":6157,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":6158,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":6159,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":6160,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":6161,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":6162,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":6163,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":6164,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":6165,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":6166,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":6167,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":6168,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":6169,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":6170,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":6171,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":6172,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":6173,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":6174,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":6175,"\u002Falgorithms":6176,"\u002Ftheory-of-computation":6179,"\u002Fcomputer-architecture":6182,"\u002Fphysical-computing":6185,"\u002Fdatabases":6188,"\u002Fdeep-learning":6191},{"path":11,"title":10,"module":5,"summary":14},{"path":17,"title":16,"module":5,"summary":20},{"path":23,"title":22,"module":5,"summary":27},{"path":34,"title":33,"module":29,"summary":37},{"path":40,"title":39,"module":29,"summary":43},{"path":46,"title":45,"module":29,"summary":49},{"path":56,"title":55,"module":51,"summary":59},{"path":62,"title":61,"module":51,"summary":64},{"path":67,"title":66,"module":51,"summary":70},{"path":78,"title":77,"module":72,"summary":81},{"path":84,"title":83,"module":72,"summary":87},{"path":90,"title":89,"module":72,"summary":92},{"path":95,"title":94,"module":72,"summary":98},{"path":101,"title":100,"module":72,"summary":104},{"path":107,"title":106,"module":72,"summary":112},{"path":115,"title":114,"module":72,"summary":119},{"path":126,"title":125,"module":121,"summary":129},{"path":132,"title":131,"module":121,"summary":134},{"path":137,"title":136,"module":121,"summary":140},{"path":143,"title":142,"module":121,"summary":146},{"path":149,"title":148,"module":121,"summary":151},{"path":158,"title":157,"module":153,"summary":162},{"path":165,"title":164,"module":153,"summary":167},{"path":170,"title":169,"module":153,"summary":172},{"path":175,"title":174,"module":153,"summary":177},{"path":180,"title":179,"module":153,"summary":182},{"path":185,"title":184,"module":153,"summary":187},{"path":190,"title":189,"module":153,"summary":192},{"path":195,"title":194,"module":153,"summary":198},{"path":201,"title":200,"module":153,"summary":204},{"path":211,"title":210,"module":206,"summary":213},{"path":216,"title":215,"module":206,"summary":219},{"path":222,"title":221,"module":206,"summary":224},{"path":227,"title":226,"module":206,"summary":229},{"path":236,"title":235,"module":231,"summary":238},{"path":241,"title":240,"module":231,"summary":244},{"path":247,"title":246,"module":231,"summary":249},{"path":252,"title":251,"module":231,"summary":254},{"path":257,"title":256,"module":231,"summary":259},{"path":262,"title":261,"module":231,"summary":264},{"path":267,"title":266,"module":231,"summary":269},{"path":272,"title":271,"module":231,"summary":274},{"path":277,"title":276,"module":231,"summary":279},{"path":282,"title":281,"module":231,"summary":285},{"path":292,"title":291,"module":287,"summary":295},{"path":298,"title":297,"module":287,"summary":300},{"path":303,"title":302,"module":287,"summary":305},{"path":312,"title":311,"module":307,"summary":315},{"path":318,"title":317,"module":307,"summary":320},{"path":323,"title":322,"module":307,"summary":325},{"path":328,"title":327,"module":307,"summary":330},{"path":338,"title":337,"module":332,"summary":341},{"path":344,"title":343,"module":332,"summary":346},{"path":349,"title":348,"module":332,"summary":351},{"path":359,"title":358,"module":353,"summary":362},{"path":364,"title":361,"module":353,"summary":366},{"path":369,"title":368,"module":353,"summary":373},{"path":6177,"title":6178,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":6180,"title":6181,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":6183,"title":6184,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":6186,"title":6187,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":6189,"title":6190,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":6192,"title":6193,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781526654956]