[{"data":1,"prerenderedAt":7928},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fdata-structures\u002Favl-trees":374,"course-wordcounts":7796,"ref-card-index":7852},[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":94,"blurb":376,"body":377,"description":7758,"extension":7759,"meta":7760,"module":72,"navigation":7762,"path":95,"practice":7763,"rawbody":7778,"readingTime":7779,"seo":7784,"sources":7785,"status":7792,"stem":7793,"summary":98,"topics":7794,"__hash__":7795},"course\u002F01.algorithms\u002F04.data-structures\u002F04.avl-trees.md","",{"type":378,"value":379,"toc":7749},"minimark",[380,516,630,635,678,770,886,1023,1115,1119,1126,1572,3246,3670,4014,4018,4111,4213,4411,4682,4864,5253,5256,5734,5741,5810,5943,6048,6052,6213,6576,6580,6811,6815,7428,7745],[381,382,383,384,388,389,429,430,456,457,461,462,501,502,505,506],"p",{},"The previous lesson left us with a ",[385,386,387],"a",{"href":90},"binary search tree"," that does everything in\n",[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: magnificent when the tree is bushy, ruinous when a run of sorted\ninsertions stretches it into a height-",[390,431,433],{"className":432},[393],[390,434,436],{"className":435,"ariaHidden":398},[397],[390,437,439,442,446,449,453],{"className":438},[402],[390,440],{"className":441,"style":407},[406],[390,443,445],{"className":444},[411],"Θ",[390,447,419],{"className":448},[418],[390,450,452],{"className":451},[411,412],"n",[390,454,428],{"className":455},[427]," path. The fix is to refuse to\nlet the tree get tall: pick a structural ",[458,459,460],"strong",{},"invariant"," that pins height to\n",[390,463,465],{"className":464},[393],[390,466,468],{"className":467,"ariaHidden":398},[397],[390,469,471,474,477,480,490,495,498],{"className":470},[402],[390,472],{"className":473,"style":407},[406],[390,475,414],{"className":476,"style":413},[411,412],[390,478,419],{"className":479},[418],[390,481,484],{"className":482},[483],"mop",[390,485,489],{"className":486,"style":488},[411,487],"mathrm","margin-right:0.0139em;","log",[390,491],{"className":492,"style":494},[493],"mspace","margin-right:0.1667em;",[390,496,452],{"className":497},[411,412],[390,499,428],{"className":500},[427],", and restore it after every update. The ",[458,503,504],{},"AVL tree",", named for\nAdelson-Velsky and Landis (1962), is the oldest such scheme and the easiest to\nreason about, balancing by a direct height constraint at every node.",[507,508,509],"sup",{},[385,510,515],{"href":511,"ariaDescribedBy":512,"dataFootnoteRef":376,"id":514},"#user-content-fn-erickson-avl",[513],"footnote-label","user-content-fnref-erickson-avl","1",[381,517,518,519,522,523,526,527,551,552,556,557,575,576,593,594,609,610,625,626,629],{},"To talk about rebalancing we need one primitive, which the next lesson on\n",[385,520,521],{"href":101},"balanced search trees"," treats in full: the ",[458,524,525],{},"rotation",". A rotation rearranges\nthree pointers to change a subtree's shape, and so its height, while preserving\nthe BST ordering and running in ",[390,528,530],{"className":529},[393],[390,531,533],{"className":532,"ariaHidden":398},[397],[390,534,536,539,542,545,548],{"className":535},[402],[390,537],{"className":538,"style":407},[406],[390,540,414],{"className":541,"style":413},[411,412],[390,543,419],{"className":544},[418],[390,546,515],{"className":547},[411],[390,549,428],{"className":550},[427]," time. A ",[553,554,555],"em",{},"right rotation"," at ",[390,558,560],{"className":559},[393],[390,561,563],{"className":562,"ariaHidden":398},[397],[390,564,566,570],{"className":565},[402],[390,567],{"className":568,"style":569},[406],"height:0.625em;vertical-align:-0.1944em;",[390,571,574],{"className":572,"style":573},[411,412],"margin-right:0.0359em;","y"," lifts its\nleft child ",[390,577,579],{"className":578},[393],[390,580,582],{"className":581,"ariaHidden":398},[397],[390,583,585,589],{"className":584},[402],[390,586],{"className":587,"style":588},[406],"height:0.4306em;",[390,590,592],{"className":591},[411,412],"x"," to the root and makes ",[390,595,597],{"className":596},[393],[390,598,600],{"className":599,"ariaHidden":398},[397],[390,601,603,606],{"className":602},[402],[390,604],{"className":605,"style":569},[406],[390,607,574],{"className":608,"style":573},[411,412]," the right child of ",[390,611,613],{"className":612},[393],[390,614,616],{"className":615,"ariaHidden":398},[397],[390,617,619,622],{"className":618},[402],[390,620],{"className":621,"style":588},[406],[390,623,592],{"className":624},[411,412],"; a ",[553,627,628],{},"left\nrotation"," is the inverse. That is all we need here: a cheap, order-preserving\nlever for trading height between siblings.",[631,632,634],"h2",{"id":633},"the-avl-invariant","The AVL invariant",[636,637,639],"callout",{"type":638},"lemma",[381,640,641,644,645,660,661,677],{},[458,642,643],{},"Invariant (AVL)."," At every node ",[390,646,648],{"className":647},[393],[390,649,651],{"className":650,"ariaHidden":398},[397],[390,652,654,657],{"className":653},[402],[390,655],{"className":656,"style":588},[406],[390,658,592],{"className":659},[411,412],", the heights of its left and right\nsubtrees differ by at most ",[390,662,664],{"className":663},[393],[390,665,667],{"className":666,"ariaHidden":398},[397],[390,668,670,674],{"className":669},[402],[390,671],{"className":672,"style":673},[406],"height:0.6444em;",[390,675,515],{"className":676},[411],".",[381,679,680,681,684,685,709,710,765,766,769],{},"Define the ",[458,682,683],{},"height"," ",[390,686,688],{"className":687},[393],[390,689,691],{"className":690,"ariaHidden":398},[397],[390,692,694,697,700,703,706],{"className":693},[402],[390,695],{"className":696,"style":407},[406],[390,698,423],{"className":699},[411,412],[390,701,419],{"className":702},[418],[390,704,592],{"className":705},[411,412],[390,707,428],{"className":708},[427]," of a node as the number of edges on the longest\ndownward path to a leaf, with ",[390,711,713],{"className":712},[393],[390,714,716,751],{"className":715,"ariaHidden":398},[397],[390,717,719,722,725,728,736,739,743,748],{"className":718},[402],[390,720],{"className":721,"style":407},[406],[390,723,423],{"className":724},[411,412],[390,726,419],{"className":727},[418],[390,729,732],{"className":730},[411,731],"text",[390,733,735],{"className":734},[411],"nil",[390,737,428],{"className":738},[427],[390,740],{"className":741,"style":742},[493],"margin-right:0.2778em;",[390,744,747],{"className":745},[746],"mrel","=",[390,749],{"className":750,"style":742},[493],[390,752,754,758,762],{"className":753},[402],[390,755],{"className":756,"style":757},[406],"height:0.7278em;vertical-align:-0.0833em;",[390,759,761],{"className":760},[411],"−",[390,763,515],{"className":764},[411],". The ",[458,767,768],{},"balance factor"," is",[390,771,774],{"className":772},[773],"katex-display",[390,775,777],{"className":776},[393],[390,778,780,813,853],{"className":779,"ariaHidden":398},[397],[390,781,783,786,790,795,798,801,804,807,810],{"className":782},[402],[390,784],{"className":785,"style":407},[406],[390,787,789],{"className":788},[411,412],"b",[390,791,794],{"className":792,"style":793},[411,412],"margin-right:0.1076em;","f",[390,796,419],{"className":797},[418],[390,799,592],{"className":800},[411,412],[390,802,428],{"className":803},[427],[390,805],{"className":806,"style":742},[493],[390,808,747],{"className":809},[746],[390,811],{"className":812,"style":742},[493],[390,814,816,819,822,825,832,835,838,842,846,850],{"className":815},[402],[390,817],{"className":818,"style":407},[406],[390,820,423],{"className":821},[411,412],[390,823,419],{"className":824},[418],[390,826,828],{"className":827},[411,731],[390,829,831],{"className":830},[411],"right",[390,833,419],{"className":834},[418],[390,836,592],{"className":837},[411,412],[390,839,841],{"className":840},[427],"))",[390,843],{"className":844,"style":845},[493],"margin-right:0.2222em;",[390,847,761],{"className":848},[849],"mbin",[390,851],{"className":852,"style":845},[493],[390,854,856,859,862,865,872,875,878,881],{"className":855},[402],[390,857],{"className":858,"style":407},[406],[390,860,423],{"className":861},[411,412],[390,863,419],{"className":864},[418],[390,866,868],{"className":867},[411,731],[390,869,871],{"className":870},[411],"left",[390,873,419],{"className":874},[418],[390,876,592],{"className":877},[411,412],[390,879,841],{"className":880},[427],[390,882,885],{"className":883},[884],"mpunct",",",[381,887,888,889,969,970,994,995,1022],{},"and the invariant says exactly ",[390,890,892],{"className":891},[393],[390,893,895,926],{"className":894,"ariaHidden":398},[397],[390,896,898,901,904,907,910,913,916,919,923],{"className":897},[402],[390,899],{"className":900,"style":407},[406],[390,902,789],{"className":903},[411,412],[390,905,794],{"className":906,"style":793},[411,412],[390,908,419],{"className":909},[418],[390,911,592],{"className":912},[411,412],[390,914,428],{"className":915},[427],[390,917],{"className":918,"style":742},[493],[390,920,922],{"className":921},[746],"∈",[390,924],{"className":925,"style":742},[493],[390,927,929,932,936,939,942,945,948,952,955,958,962,965],{"className":928},[402],[390,930],{"className":931,"style":407},[406],[390,933,935],{"className":934},[418],"{",[390,937,761],{"className":938},[411],[390,940,515],{"className":941},[411],[390,943,885],{"className":944},[884],[390,946],{"className":947,"style":494},[493],[390,949,951],{"className":950},[411],"0",[390,953,885],{"className":954},[884],[390,956],{"className":957,"style":494},[493],[390,959,961],{"className":960},[411],"+",[390,963,515],{"className":964},[411],[390,966,968],{"className":967},[427],"}"," for every node. We store\n",[390,971,973],{"className":972},[393],[390,974,976],{"className":975,"ariaHidden":398},[397],[390,977,979,982,985,988,991],{"className":978},[402],[390,980],{"className":981,"style":407},[406],[390,983,423],{"className":984},[411,412],[390,986,419],{"className":987},[418],[390,989,592],{"className":990},[411,412],[390,992,428],{"className":993},[427]," (or, equivalently, ",[390,996,998],{"className":997},[393],[390,999,1001],{"className":1000,"ariaHidden":398},[397],[390,1002,1004,1007,1010,1013,1016,1019],{"className":1003},[402],[390,1005],{"className":1006,"style":407},[406],[390,1008,789],{"className":1009},[411,412],[390,1011,794],{"className":1012,"style":793},[411,412],[390,1014,419],{"className":1015},[418],[390,1017,592],{"className":1018},[411,412],[390,1020,428],{"className":1021},[427],") in each node and keep it current as the tree\nchanges; both a search and an in-order walk ignore the field entirely, so a\nread-only operation on an AVL tree is just a BST operation.",[381,1024,1025,1026,1067,1068,1071,1072,1111,1114],{},"A node with ",[390,1027,1029],{"className":1028},[393],[390,1030,1032,1054],{"className":1031,"ariaHidden":398},[397],[390,1033,1035,1039,1042,1045,1048,1051],{"className":1034},[402],[390,1036],{"className":1037,"style":1038},[406],"height:0.8889em;vertical-align:-0.1944em;",[390,1040,789],{"className":1041},[411,412],[390,1043,794],{"className":1044,"style":793},[411,412],[390,1046],{"className":1047,"style":742},[493],[390,1049,747],{"className":1050},[746],[390,1052],{"className":1053,"style":742},[493],[390,1055,1057,1060,1063],{"className":1056},[402],[390,1058],{"className":1059,"style":757},[406],[390,1061,761],{"className":1062},[411],[390,1064,1066],{"className":1065},[411],"2"," is ",[458,1069,1070],{},"left-heavy"," past tolerance, ",[390,1073,1075],{"className":1074},[393],[390,1076,1078,1099],{"className":1077,"ariaHidden":398},[397],[390,1079,1081,1084,1087,1090,1093,1096],{"className":1080},[402],[390,1082],{"className":1083,"style":1038},[406],[390,1085,789],{"className":1086},[411,412],[390,1088,794],{"className":1089,"style":793},[411,412],[390,1091],{"className":1092,"style":742},[493],[390,1094,747],{"className":1095},[746],[390,1097],{"className":1098,"style":742},[493],[390,1100,1102,1105,1108],{"className":1101},[402],[390,1103],{"className":1104,"style":757},[406],[390,1106,961],{"className":1107},[411],[390,1109,1066],{"className":1110},[411],[458,1112,1113],{},"right-heavy","; these are the two illegal states an update can create, and the\ntwo we must repair.",[631,1116,1118],{"id":1117},"height-is-logarithmic","Height is logarithmic",[381,1120,1121,1122,1125],{},"The invariant is worth what it buys, and what it buys is a logarithmic height\nbound. The cleanest argument is ",[553,1123,1124],{},"extremal",": ask how few nodes an AVL tree of a\ngiven height can possibly contain. A sparse tree is the dangerous case, so if\neven the sparsest legal tree is bushy, all of them are.",[636,1127,1128],{"type":638},[381,1129,1130,1133,1134,1160,1161,1177,1178,1394,1395,1410,1411,677],{},[458,1131,1132],{},"Lemma (minimal-node \u002F Fibonacci-tree bound)."," Let ",[390,1135,1137],{"className":1136},[393],[390,1138,1140],{"className":1139,"ariaHidden":398},[397],[390,1141,1143,1146,1151,1154,1157],{"className":1142},[402],[390,1144],{"className":1145,"style":407},[406],[390,1147,1150],{"className":1148,"style":1149},[411,412],"margin-right:0.109em;","N",[390,1152,419],{"className":1153},[418],[390,1155,423],{"className":1156},[411,412],[390,1158,428],{"className":1159},[427]," be the minimum\nnumber of nodes in an AVL tree of height ",[390,1162,1164],{"className":1163},[393],[390,1165,1167],{"className":1166,"ariaHidden":398},[397],[390,1168,1170,1174],{"className":1169},[402],[390,1171],{"className":1172,"style":1173},[406],"height:0.6944em;",[390,1175,423],{"className":1176},[411,412],". Then\n",[390,1179,1181],{"className":1180},[393],[390,1182,1184,1211,1235,1256,1280,1301,1341,1381],{"className":1183,"ariaHidden":398},[397],[390,1185,1187,1190,1193,1196,1199,1202,1205,1208],{"className":1186},[402],[390,1188],{"className":1189,"style":407},[406],[390,1191,1150],{"className":1192,"style":1149},[411,412],[390,1194,419],{"className":1195},[418],[390,1197,423],{"className":1198},[411,412],[390,1200,428],{"className":1201},[427],[390,1203],{"className":1204,"style":742},[493],[390,1206,747],{"className":1207},[746],[390,1209],{"className":1210,"style":742},[493],[390,1212,1214,1217,1220,1223,1226,1229,1232],{"className":1213},[402],[390,1215],{"className":1216,"style":407},[406],[390,1218,1150],{"className":1219,"style":1149},[411,412],[390,1221,419],{"className":1222},[418],[390,1224,423],{"className":1225},[411,412],[390,1227],{"className":1228,"style":845},[493],[390,1230,761],{"className":1231},[849],[390,1233],{"className":1234,"style":845},[493],[390,1236,1238,1241,1244,1247,1250,1253],{"className":1237},[402],[390,1239],{"className":1240,"style":407},[406],[390,1242,515],{"className":1243},[411],[390,1245,428],{"className":1246},[427],[390,1248],{"className":1249,"style":845},[493],[390,1251,961],{"className":1252},[849],[390,1254],{"className":1255,"style":845},[493],[390,1257,1259,1262,1265,1268,1271,1274,1277],{"className":1258},[402],[390,1260],{"className":1261,"style":407},[406],[390,1263,1150],{"className":1264,"style":1149},[411,412],[390,1266,419],{"className":1267},[418],[390,1269,423],{"className":1270},[411,412],[390,1272],{"className":1273,"style":845},[493],[390,1275,761],{"className":1276},[849],[390,1278],{"className":1279,"style":845},[493],[390,1281,1283,1286,1289,1292,1295,1298],{"className":1282},[402],[390,1284],{"className":1285,"style":407},[406],[390,1287,1066],{"className":1288},[411],[390,1290,428],{"className":1291},[427],[390,1293],{"className":1294,"style":845},[493],[390,1296,961],{"className":1297},[849],[390,1299],{"className":1300,"style":845},[493],[390,1302,1304,1307,1310,1313,1317,1320,1323,1326,1329,1332,1335,1338],{"className":1303},[402],[390,1305],{"className":1306,"style":407},[406],[390,1308,515],{"className":1309},[411],[390,1311,885],{"className":1312},[884],[390,1314],{"className":1315,"style":1316},[493],"margin-right:2em;",[390,1318],{"className":1319,"style":494},[493],[390,1321,1150],{"className":1322,"style":1149},[411,412],[390,1324,419],{"className":1325},[418],[390,1327,951],{"className":1328},[411],[390,1330,428],{"className":1331},[427],[390,1333],{"className":1334,"style":742},[493],[390,1336,747],{"className":1337},[746],[390,1339],{"className":1340,"style":742},[493],[390,1342,1344,1347,1350,1353,1357,1360,1363,1366,1369,1372,1375,1378],{"className":1343},[402],[390,1345],{"className":1346,"style":407},[406],[390,1348,515],{"className":1349},[411],[390,1351,885],{"className":1352},[884],[390,1354,1356],{"className":1355},[493]," ",[390,1358],{"className":1359,"style":494},[493],[390,1361,1150],{"className":1362,"style":1149},[411,412],[390,1364,419],{"className":1365},[418],[390,1367,515],{"className":1368},[411],[390,1370,428],{"className":1371},[427],[390,1373],{"className":1374,"style":742},[493],[390,1376,747],{"className":1377},[746],[390,1379],{"className":1380,"style":742},[493],[390,1382,1384,1388,1391],{"className":1383},[402],[390,1385],{"className":1386,"style":1387},[406],"height:0.8389em;vertical-align:-0.1944em;",[390,1389,1066],{"className":1390},[411],[390,1392,885],{"className":1393},[884],"\nand consequently an AVL tree on ",[390,1396,1398],{"className":1397},[393],[390,1399,1401],{"className":1400,"ariaHidden":398},[397],[390,1402,1404,1407],{"className":1403},[402],[390,1405],{"className":1406,"style":588},[406],[390,1408,452],{"className":1409},[411,412]," nodes has height\n",[390,1412,1414],{"className":1413},[393],[390,1415,1417,1437,1524,1545],{"className":1416,"ariaHidden":398},[397],[390,1418,1420,1424,1427,1430,1434],{"className":1419},[402],[390,1421],{"className":1422,"style":1423},[406],"height:0.8304em;vertical-align:-0.136em;",[390,1425,423],{"className":1426},[411,412],[390,1428],{"className":1429,"style":742},[493],[390,1431,1433],{"className":1432},[746],"≤",[390,1435],{"className":1436,"style":742},[493],[390,1438,1440,1443,1447,1450,1509,1512,1515,1518,1521],{"className":1439},[402],[390,1441],{"className":1442,"style":407},[406],[390,1444,1446],{"className":1445},[411],"1.4404",[390,1448],{"className":1449,"style":494},[493],[390,1451,1453,1459],{"className":1452},[483],[390,1454,1456],{"className":1455},[483],[390,1457,489],{"className":1458,"style":488},[411,487],[390,1460,1463],{"className":1461},[1462],"msupsub",[390,1464,1468,1500],{"className":1465},[1466,1467],"vlist-t","vlist-t2",[390,1469,1472,1495],{"className":1470},[1471],"vlist-r",[390,1473,1477],{"className":1474,"style":1476},[1475],"vlist","height:0.207em;",[390,1478,1480,1485],{"style":1479},"top:-2.4559em;margin-right:0.05em;",[390,1481],{"className":1482,"style":1484},[1483],"pstrut","height:2.7em;",[390,1486,1492],{"className":1487},[1488,1489,1490,1491],"sizing","reset-size6","size3","mtight",[390,1493,1066],{"className":1494},[411,1491],[390,1496,1499],{"className":1497},[1498],"vlist-s","​",[390,1501,1503],{"className":1502},[1471],[390,1504,1507],{"className":1505,"style":1506},[1475],"height:0.2441em;",[390,1508],{},[390,1510,419],{"className":1511},[418],[390,1513,452],{"className":1514},[411,412],[390,1516],{"className":1517,"style":845},[493],[390,1519,961],{"className":1520},[849],[390,1522],{"className":1523,"style":845},[493],[390,1525,1527,1530,1533,1536,1539,1542],{"className":1526},[402],[390,1528],{"className":1529,"style":407},[406],[390,1531,515],{"className":1532},[411],[390,1534,428],{"className":1535},[427],[390,1537],{"className":1538,"style":742},[493],[390,1540,747],{"className":1541},[746],[390,1543],{"className":1544,"style":742},[493],[390,1546,1548,1551,1554,1557,1563,1566,1569],{"className":1547},[402],[390,1549],{"className":1550,"style":407},[406],[390,1552,414],{"className":1553,"style":413},[411,412],[390,1555,419],{"className":1556},[418],[390,1558,1560],{"className":1559},[483],[390,1561,489],{"className":1562,"style":488},[411,487],[390,1564],{"className":1565,"style":494},[493],[390,1567,452],{"className":1568},[411,412],[390,1570,428],{"className":1571},[427],[636,1573,1575,2768],{"type":1574},"proof",[381,1576,1577,1580,1581,1596,1597,1631,1632,1665,1666,1798,1799,1841,1842,1884,1885,1900,1901,2081,2082,2195,2196,677,2386,2393,2394,1798,2511,2685,2686,2701,2702,2767],{},[458,1578,1579],{},"Proof."," A height-",[390,1582,1584],{"className":1583},[393],[390,1585,1587],{"className":1586,"ariaHidden":398},[397],[390,1588,1590,1593],{"className":1589},[402],[390,1591],{"className":1592,"style":1173},[406],[390,1594,423],{"className":1595},[411,412]," AVL tree has a root, plus two subtrees, the taller of\nwhich has height ",[390,1598,1600],{"className":1599},[393],[390,1601,1603,1622],{"className":1602,"ariaHidden":398},[397],[390,1604,1606,1610,1613,1616,1619],{"className":1605},[402],[390,1607],{"className":1608,"style":1609},[406],"height:0.7778em;vertical-align:-0.0833em;",[390,1611,423],{"className":1612},[411,412],[390,1614],{"className":1615,"style":845},[493],[390,1617,761],{"className":1618},[849],[390,1620],{"className":1621,"style":845},[493],[390,1623,1625,1628],{"className":1624},[402],[390,1626],{"className":1627,"style":673},[406],[390,1629,515],{"className":1630},[411],". To make the tree as sparse as possible we make the other\nsubtree as short as the invariant allows, namely ",[390,1633,1635],{"className":1634},[393],[390,1636,1638,1656],{"className":1637,"ariaHidden":398},[397],[390,1639,1641,1644,1647,1650,1653],{"className":1640},[402],[390,1642],{"className":1643,"style":1609},[406],[390,1645,423],{"className":1646},[411,412],[390,1648],{"className":1649,"style":845},[493],[390,1651,761],{"className":1652},[849],[390,1654],{"className":1655,"style":845},[493],[390,1657,1659,1662],{"className":1658},[402],[390,1660],{"className":1661,"style":673},[406],[390,1663,1066],{"className":1664},[411],", and recursively make\nboth subtrees minimal. Hence ",[390,1667,1669],{"className":1668},[393],[390,1670,1672,1699,1717,1741,1762,1786],{"className":1671,"ariaHidden":398},[397],[390,1673,1675,1678,1681,1684,1687,1690,1693,1696],{"className":1674},[402],[390,1676],{"className":1677,"style":407},[406],[390,1679,1150],{"className":1680,"style":1149},[411,412],[390,1682,419],{"className":1683},[418],[390,1685,423],{"className":1686},[411,412],[390,1688,428],{"className":1689},[427],[390,1691],{"className":1692,"style":742},[493],[390,1694,747],{"className":1695},[746],[390,1697],{"className":1698,"style":742},[493],[390,1700,1702,1705,1708,1711,1714],{"className":1701},[402],[390,1703],{"className":1704,"style":757},[406],[390,1706,515],{"className":1707},[411],[390,1709],{"className":1710,"style":845},[493],[390,1712,961],{"className":1713},[849],[390,1715],{"className":1716,"style":845},[493],[390,1718,1720,1723,1726,1729,1732,1735,1738],{"className":1719},[402],[390,1721],{"className":1722,"style":407},[406],[390,1724,1150],{"className":1725,"style":1149},[411,412],[390,1727,419],{"className":1728},[418],[390,1730,423],{"className":1731},[411,412],[390,1733],{"className":1734,"style":845},[493],[390,1736,761],{"className":1737},[849],[390,1739],{"className":1740,"style":845},[493],[390,1742,1744,1747,1750,1753,1756,1759],{"className":1743},[402],[390,1745],{"className":1746,"style":407},[406],[390,1748,515],{"className":1749},[411],[390,1751,428],{"className":1752},[427],[390,1754],{"className":1755,"style":845},[493],[390,1757,961],{"className":1758},[849],[390,1760],{"className":1761,"style":845},[493],[390,1763,1765,1768,1771,1774,1777,1780,1783],{"className":1764},[402],[390,1766],{"className":1767,"style":407},[406],[390,1769,1150],{"className":1770,"style":1149},[411,412],[390,1772,419],{"className":1773},[418],[390,1775,423],{"className":1776},[411,412],[390,1778],{"className":1779,"style":845},[493],[390,1781,761],{"className":1782},[849],[390,1784],{"className":1785,"style":845},[493],[390,1787,1789,1792,1795],{"className":1788},[402],[390,1790],{"className":1791,"style":407},[406],[390,1793,1066],{"className":1794},[411],[390,1796,428],{"className":1797},[427]," with ",[390,1800,1802],{"className":1801},[393],[390,1803,1805,1832],{"className":1804,"ariaHidden":398},[397],[390,1806,1808,1811,1814,1817,1820,1823,1826,1829],{"className":1807},[402],[390,1809],{"className":1810,"style":407},[406],[390,1812,1150],{"className":1813,"style":1149},[411,412],[390,1815,419],{"className":1816},[418],[390,1818,951],{"className":1819},[411],[390,1821,428],{"className":1822},[427],[390,1824],{"className":1825,"style":742},[493],[390,1827,747],{"className":1828},[746],[390,1830],{"className":1831,"style":742},[493],[390,1833,1835,1838],{"className":1834},[402],[390,1836],{"className":1837,"style":673},[406],[390,1839,515],{"className":1840},[411],"\n(a single node) and ",[390,1843,1845],{"className":1844},[393],[390,1846,1848,1875],{"className":1847,"ariaHidden":398},[397],[390,1849,1851,1854,1857,1860,1863,1866,1869,1872],{"className":1850},[402],[390,1852],{"className":1853,"style":407},[406],[390,1855,1150],{"className":1856,"style":1149},[411,412],[390,1858,419],{"className":1859},[418],[390,1861,515],{"className":1862},[411],[390,1864,428],{"className":1865},[427],[390,1867],{"className":1868,"style":742},[493],[390,1870,747],{"className":1871},[746],[390,1873],{"className":1874,"style":742},[493],[390,1876,1878,1881],{"className":1877},[402],[390,1879],{"className":1880,"style":673},[406],[390,1882,1066],{"className":1883},[411],". This is the Fibonacci recurrence shifted by a\nconstant: adding ",[390,1886,1888],{"className":1887},[393],[390,1889,1891],{"className":1890,"ariaHidden":398},[397],[390,1892,1894,1897],{"className":1893},[402],[390,1895],{"className":1896,"style":673},[406],[390,1898,515],{"className":1899},[411]," to both sides gives ",[390,1902,1904],{"className":1903},[393],[390,1905,1907,1934,1952,1979,2000,2021,2048,2069],{"className":1906,"ariaHidden":398},[397],[390,1908,1910,1913,1916,1919,1922,1925,1928,1931],{"className":1909},[402],[390,1911],{"className":1912,"style":407},[406],[390,1914,1150],{"className":1915,"style":1149},[411,412],[390,1917,419],{"className":1918},[418],[390,1920,423],{"className":1921},[411,412],[390,1923,428],{"className":1924},[427],[390,1926],{"className":1927,"style":845},[493],[390,1929,961],{"className":1930},[849],[390,1932],{"className":1933,"style":845},[493],[390,1935,1937,1940,1943,1946,1949],{"className":1936},[402],[390,1938],{"className":1939,"style":673},[406],[390,1941,515],{"className":1942},[411],[390,1944],{"className":1945,"style":742},[493],[390,1947,747],{"className":1948},[746],[390,1950],{"className":1951,"style":742},[493],[390,1953,1955,1958,1961,1964,1967,1970,1973,1976],{"className":1954},[402],[390,1956],{"className":1957,"style":407},[406],[390,1959,419],{"className":1960},[418],[390,1962,1150],{"className":1963,"style":1149},[411,412],[390,1965,419],{"className":1966},[418],[390,1968,423],{"className":1969},[411,412],[390,1971],{"className":1972,"style":845},[493],[390,1974,761],{"className":1975},[849],[390,1977],{"className":1978,"style":845},[493],[390,1980,1982,1985,1988,1991,1994,1997],{"className":1981},[402],[390,1983],{"className":1984,"style":407},[406],[390,1986,515],{"className":1987},[411],[390,1989,428],{"className":1990},[427],[390,1992],{"className":1993,"style":845},[493],[390,1995,961],{"className":1996},[849],[390,1998],{"className":1999,"style":845},[493],[390,2001,2003,2006,2009,2012,2015,2018],{"className":2002},[402],[390,2004],{"className":2005,"style":407},[406],[390,2007,515],{"className":2008},[411],[390,2010,428],{"className":2011},[427],[390,2013],{"className":2014,"style":845},[493],[390,2016,961],{"className":2017},[849],[390,2019],{"className":2020,"style":845},[493],[390,2022,2024,2027,2030,2033,2036,2039,2042,2045],{"className":2023},[402],[390,2025],{"className":2026,"style":407},[406],[390,2028,419],{"className":2029},[418],[390,2031,1150],{"className":2032,"style":1149},[411,412],[390,2034,419],{"className":2035},[418],[390,2037,423],{"className":2038},[411,412],[390,2040],{"className":2041,"style":845},[493],[390,2043,761],{"className":2044},[849],[390,2046],{"className":2047,"style":845},[493],[390,2049,2051,2054,2057,2060,2063,2066],{"className":2050},[402],[390,2052],{"className":2053,"style":407},[406],[390,2055,1066],{"className":2056},[411],[390,2058,428],{"className":2059},[427],[390,2061],{"className":2062,"style":845},[493],[390,2064,961],{"className":2065},[849],[390,2067],{"className":2068,"style":845},[493],[390,2070,2072,2075,2078],{"className":2071},[402],[390,2073],{"className":2074,"style":407},[406],[390,2076,515],{"className":2077},[411],[390,2079,428],{"className":2080},[427],", so\n",[390,2083,2085],{"className":2084},[393],[390,2086,2088,2115,2133],{"className":2087,"ariaHidden":398},[397],[390,2089,2091,2094,2097,2100,2103,2106,2109,2112],{"className":2090},[402],[390,2092],{"className":2093,"style":407},[406],[390,2095,1150],{"className":2096,"style":1149},[411,412],[390,2098,419],{"className":2099},[418],[390,2101,423],{"className":2102},[411,412],[390,2104,428],{"className":2105},[427],[390,2107],{"className":2108,"style":845},[493],[390,2110,961],{"className":2111},[849],[390,2113],{"className":2114,"style":845},[493],[390,2116,2118,2121,2124,2127,2130],{"className":2117},[402],[390,2119],{"className":2120,"style":673},[406],[390,2122,515],{"className":2123},[411],[390,2125],{"className":2126,"style":742},[493],[390,2128,747],{"className":2129},[746],[390,2131],{"className":2132,"style":742},[493],[390,2134,2136,2140],{"className":2135},[402],[390,2137],{"className":2138,"style":2139},[406],"height:0.8917em;vertical-align:-0.2083em;",[390,2141,2143,2148],{"className":2142},[411],[390,2144,2147],{"className":2145,"style":2146},[411,412],"margin-right:0.1389em;","F",[390,2149,2151],{"className":2150},[1462],[390,2152,2154,2186],{"className":2153},[1466,1467],[390,2155,2157,2183],{"className":2156},[1471],[390,2158,2161],{"className":2159,"style":2160},[1475],"height:0.3361em;",[390,2162,2164,2167],{"style":2163},"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;",[390,2165],{"className":2166,"style":1484},[1483],[390,2168,2170],{"className":2169},[1488,1489,1490,1491],[390,2171,2173,2176,2179],{"className":2172},[411,1491],[390,2174,423],{"className":2175},[411,412,1491],[390,2177,961],{"className":2178},[849,1491],[390,2180,2182],{"className":2181},[411,1491],"3",[390,2184,1499],{"className":2185},[1498],[390,2187,2189],{"className":2188},[1471],[390,2190,2193],{"className":2191,"style":2192},[1475],"height:0.2083em;",[390,2194],{}," and therefore ",[390,2197,2199],{"className":2198},[393],[390,2200,2202,2229,2293,2313,2377],{"className":2201,"ariaHidden":398},[397],[390,2203,2205,2208,2211,2214,2217,2220,2223,2226],{"className":2204},[402],[390,2206],{"className":2207,"style":407},[406],[390,2209,1150],{"className":2210,"style":1149},[411,412],[390,2212,419],{"className":2213},[418],[390,2215,423],{"className":2216},[411,412],[390,2218,428],{"className":2219},[427],[390,2221],{"className":2222,"style":742},[493],[390,2224,747],{"className":2225},[746],[390,2227],{"className":2228,"style":742},[493],[390,2230,2232,2235,2284,2287,2290],{"className":2231},[402],[390,2233],{"className":2234,"style":2139},[406],[390,2236,2238,2241],{"className":2237},[411],[390,2239,2147],{"className":2240,"style":2146},[411,412],[390,2242,2244],{"className":2243},[1462],[390,2245,2247,2276],{"className":2246},[1466,1467],[390,2248,2250,2273],{"className":2249},[1471],[390,2251,2253],{"className":2252,"style":2160},[1475],[390,2254,2255,2258],{"style":2163},[390,2256],{"className":2257,"style":1484},[1483],[390,2259,2261],{"className":2260},[1488,1489,1490,1491],[390,2262,2264,2267,2270],{"className":2263},[411,1491],[390,2265,423],{"className":2266},[411,412,1491],[390,2268,961],{"className":2269},[849,1491],[390,2271,2182],{"className":2272},[411,1491],[390,2274,1499],{"className":2275},[1498],[390,2277,2279],{"className":2278},[1471],[390,2280,2282],{"className":2281,"style":2192},[1475],[390,2283],{},[390,2285],{"className":2286,"style":845},[493],[390,2288,761],{"className":2289},[849],[390,2291],{"className":2292,"style":845},[493],[390,2294,2296,2300,2303,2306,2310],{"className":2295},[402],[390,2297],{"className":2298,"style":2299},[406],"height:0.7804em;vertical-align:-0.136em;",[390,2301,515],{"className":2302},[411],[390,2304],{"className":2305,"style":742},[493],[390,2307,2309],{"className":2308},[746],"≥",[390,2311],{"className":2312,"style":742},[493],[390,2314,2316,2319,2368,2371,2374],{"className":2315},[402],[390,2317],{"className":2318,"style":2139},[406],[390,2320,2322,2325],{"className":2321},[411],[390,2323,2147],{"className":2324,"style":2146},[411,412],[390,2326,2328],{"className":2327},[1462],[390,2329,2331,2360],{"className":2330},[1466,1467],[390,2332,2334,2357],{"className":2333},[1471],[390,2335,2337],{"className":2336,"style":2160},[1475],[390,2338,2339,2342],{"style":2163},[390,2340],{"className":2341,"style":1484},[1483],[390,2343,2345],{"className":2344},[1488,1489,1490,1491],[390,2346,2348,2351,2354],{"className":2347},[411,1491],[390,2349,423],{"className":2350},[411,412,1491],[390,2352,961],{"className":2353},[849,1491],[390,2355,1066],{"className":2356},[411,1491],[390,2358,1499],{"className":2359},[1498],[390,2361,2363],{"className":2362},[1471],[390,2364,2366],{"className":2365,"style":2192},[1475],[390,2367],{},[390,2369],{"className":2370,"style":845},[493],[390,2372,761],{"className":2373},[849],[390,2375],{"className":2376,"style":845},[493],[390,2378,2380,2383],{"className":2379},[402],[390,2381],{"className":2382,"style":673},[406],[390,2384,515],{"className":2385},[411],[507,2387,2388],{},[385,2389,1066],{"href":2390,"ariaDescribedBy":2391,"dataFootnoteRef":376,"id":2392},"#user-content-fn-clrs-avl",[513],"user-content-fnref-clrs-avl","\nSince ",[390,2395,2397],{"className":2396},[393],[390,2398,2400,2459],{"className":2399,"ariaHidden":398},[397],[390,2401,2403,2407,2450,2453,2456],{"className":2402},[402],[390,2404],{"className":2405,"style":2406},[406],"height:0.8333em;vertical-align:-0.15em;",[390,2408,2410,2413],{"className":2409},[411],[390,2411,2147],{"className":2412,"style":2146},[411,412],[390,2414,2416],{"className":2415},[1462],[390,2417,2419,2441],{"className":2418},[1466,1467],[390,2420,2422,2438],{"className":2421},[1471],[390,2423,2425],{"className":2424,"style":2160},[1475],[390,2426,2427,2430],{"style":2163},[390,2428],{"className":2429,"style":1484},[1483],[390,2431,2433],{"className":2432},[1488,1489,1490,1491],[390,2434,2437],{"className":2435,"style":2436},[411,412,1491],"margin-right:0.0315em;","k",[390,2439,1499],{"className":2440},[1498],[390,2442,2444],{"className":2443},[1471],[390,2445,2448],{"className":2446,"style":2447},[1475],"height:0.15em;",[390,2449],{},[390,2451],{"className":2452,"style":742},[493],[390,2454,2309],{"className":2455},[746],[390,2457],{"className":2458,"style":742},[493],[390,2460,2462,2466],{"className":2461},[402],[390,2463],{"className":2464,"style":2465},[406],"height:1.0435em;vertical-align:-0.1944em;",[390,2467,2469,2473],{"className":2468},[411],[390,2470,2472],{"className":2471},[411,412],"ϕ",[390,2474,2476],{"className":2475},[1462],[390,2477,2479],{"className":2478},[1466],[390,2480,2482],{"className":2481},[1471],[390,2483,2486],{"className":2484,"style":2485},[1475],"height:0.8491em;",[390,2487,2489,2492],{"style":2488},"top:-3.063em;margin-right:0.05em;",[390,2490],{"className":2491,"style":1484},[1483],[390,2493,2495],{"className":2494},[1488,1489,1490,1491],[390,2496,2498,2502,2505,2508],{"className":2497},[411,1491],[390,2499],{"className":2500,"style":2501},[493,1491],"margin-right:0.1952em;",[390,2503,2437],{"className":2504,"style":2436},[411,412,1491],[390,2506,761],{"className":2507},[849,1491],[390,2509,1066],{"className":2510},[411,1491],[390,2512,2514],{"className":2513},[393],[390,2515,2517,2535],{"className":2516,"ariaHidden":398},[397],[390,2518,2520,2523,2526,2529,2532],{"className":2519},[402],[390,2521],{"className":2522,"style":1038},[406],[390,2524,2472],{"className":2525},[411,412],[390,2527],{"className":2528,"style":742},[493],[390,2530,747],{"className":2531},[746],[390,2533],{"className":2534,"style":742},[493],[390,2536,2538,2542],{"className":2537},[402],[390,2539],{"className":2540,"style":2541},[406],"height:1.383em;vertical-align:-0.345em;",[390,2543,2545,2549,2682],{"className":2544},[411],[390,2546],{"className":2547},[418,2548],"nulldelimiter",[390,2550,2553],{"className":2551},[2552],"mfrac",[390,2554,2556,2673],{"className":2555},[1466,1467],[390,2557,2559,2670],{"className":2558},[1471],[390,2560,2563,2579,2590],{"className":2561,"style":2562},[1475],"height:1.038em;",[390,2564,2566,2570],{"style":2565},"top:-2.655em;",[390,2567],{"className":2568,"style":2569},[1483],"height:3em;",[390,2571,2573],{"className":2572},[1488,1489,1490,1491],[390,2574,2576],{"className":2575},[411,1491],[390,2577,1066],{"className":2578},[411,1491],[390,2580,2582,2585],{"style":2581},"top:-3.23em;",[390,2583],{"className":2584,"style":2569},[1483],[390,2586],{"className":2587,"style":2589},[2588],"frac-line","border-bottom-width:0.04em;",[390,2591,2593,2596],{"style":2592},"top:-3.399em;",[390,2594],{"className":2595,"style":2569},[1483],[390,2597,2599],{"className":2598},[1488,1489,1490,1491],[390,2600,2602,2605,2608],{"className":2601},[411,1491],[390,2603,515],{"className":2604},[411,1491],[390,2606,961],{"className":2607},[849,1491],[390,2609,2612],{"className":2610},[411,2611,1491],"sqrt",[390,2613,2615,2661],{"className":2614},[1466,1467],[390,2616,2618,2658],{"className":2617},[1471],[390,2619,2622,2635],{"className":2620,"style":2621},[1475],"height:0.9128em;",[390,2623,2627,2630],{"className":2624,"style":2626},[2625],"svg-align","top:-3em;",[390,2628],{"className":2629,"style":2569},[1483],[390,2631,2634],{"className":2632,"style":2633},[411,1491],"padding-left:0.833em;","5",[390,2636,2638,2641],{"style":2637},"top:-2.8728em;",[390,2639],{"className":2640,"style":2569},[1483],[390,2642,2646],{"className":2643,"style":2645},[2644,1491],"hide-tail","min-width:0.853em;height:1.08em;",[2647,2648,2654],"svg",{"xmlns":2649,"width":2650,"height":2651,"viewBox":2652,"preserveAspectRatio":2653},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","400em","1.08em","0 0 400000 1080","xMinYMin slice",[2655,2656],"path",{"d":2657},"M95,702\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl0 -0\nc5.3,-9.3,12,-14,20,-14\nH400000v40H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM834 80h400000v40h-400000z",[390,2659,1499],{"className":2660},[1498],[390,2662,2664],{"className":2663},[1471],[390,2665,2668],{"className":2666,"style":2667},[1475],"height:0.1272em;",[390,2669],{},[390,2671,1499],{"className":2672},[1498],[390,2674,2676],{"className":2675},[1471],[390,2677,2680],{"className":2678,"style":2679},[1475],"height:0.345em;",[390,2681],{},[390,2683],{"className":2684},[427,2548],", a tree of height\n",[390,2687,2689],{"className":2688},[393],[390,2690,2692],{"className":2691,"ariaHidden":398},[397],[390,2693,2695,2698],{"className":2694},[402],[390,2696],{"className":2697,"style":1173},[406],[390,2699,423],{"className":2700},[411,412]," has at least ",[390,2703,2705],{"className":2704},[393],[390,2706,2708,2758],{"className":2707,"ariaHidden":398},[397],[390,2709,2711,2714,2749,2752,2755],{"className":2710},[402],[390,2712],{"className":2713,"style":2465},[406],[390,2715,2717,2720],{"className":2716},[411],[390,2718,2472],{"className":2719},[411,412],[390,2721,2723],{"className":2722},[1462],[390,2724,2726],{"className":2725},[1466],[390,2727,2729],{"className":2728},[1471],[390,2730,2732],{"className":2731,"style":2485},[1475],[390,2733,2734,2737],{"style":2488},[390,2735],{"className":2736,"style":1484},[1483],[390,2738,2740],{"className":2739},[1488,1489,1490,1491],[390,2741,2743,2746],{"className":2742},[411,1491],[390,2744],{"className":2745,"style":2501},[493,1491],[390,2747,423],{"className":2748},[411,412,1491],[390,2750],{"className":2751,"style":845},[493],[390,2753,761],{"className":2754},[849],[390,2756],{"className":2757,"style":845},[493],[390,2759,2761,2764],{"className":2760},[402],[390,2762],{"className":2763,"style":673},[406],[390,2765,515],{"className":2766},[411]," nodes, so",[390,2769,2771],{"className":2770},[773],[390,2772,2774],{"className":2773},[393],[390,2775,2777,2796,2849,2876,2894,2961,2982,3172],{"className":2776,"ariaHidden":398},[397],[390,2778,2780,2784,2787,2790,2793],{"className":2779},[402],[390,2781],{"className":2782,"style":2783},[406],"height:0.7719em;vertical-align:-0.136em;",[390,2785,452],{"className":2786},[411,412],[390,2788],{"className":2789,"style":742},[493],[390,2791,2309],{"className":2792},[746],[390,2794],{"className":2795,"style":742},[493],[390,2797,2799,2803,2840,2843,2846],{"className":2798},[402],[390,2800],{"className":2801,"style":2802},[406],"height:1.0935em;vertical-align:-0.1944em;",[390,2804,2806,2809],{"className":2805},[411],[390,2807,2472],{"className":2808},[411,412],[390,2810,2812],{"className":2811},[1462],[390,2813,2815],{"className":2814},[1466],[390,2816,2818],{"className":2817},[1471],[390,2819,2822],{"className":2820,"style":2821},[1475],"height:0.8991em;",[390,2823,2825,2828],{"style":2824},"top:-3.113em;margin-right:0.05em;",[390,2826],{"className":2827,"style":1484},[1483],[390,2829,2831],{"className":2830},[1488,1489,1490,1491],[390,2832,2834,2837],{"className":2833},[411,1491],[390,2835],{"className":2836,"style":2501},[493,1491],[390,2838,423],{"className":2839},[411,412,1491],[390,2841],{"className":2842,"style":845},[493],[390,2844,761],{"className":2845},[849],[390,2847],{"className":2848,"style":845},[493],[390,2850,2852,2856,2859,2863,2866,2870,2873],{"className":2851},[402],[390,2853],{"className":2854,"style":2855},[406],"height:0.6684em;vertical-align:-0.024em;",[390,2857,515],{"className":2858},[411],[390,2860],{"className":2861,"style":2862},[493],"margin-right:1em;",[390,2864],{"className":2865,"style":742},[493],[390,2867,2869],{"className":2868},[746],"⟹",[390,2871],{"className":2872,"style":2862},[493],[390,2874],{"className":2875,"style":742},[493],[390,2877,2879,2882,2885,2888,2891],{"className":2878},[402],[390,2880],{"className":2881,"style":1423},[406],[390,2883,423],{"className":2884},[411,412],[390,2886],{"className":2887,"style":742},[493],[390,2889,1433],{"className":2890},[746],[390,2892],{"className":2893,"style":742},[493],[390,2895,2897,2901,2946,2949,2952,2955,2958],{"className":2896},[402],[390,2898],{"className":2899,"style":2900},[406],"height:1.1302em;vertical-align:-0.3802em;",[390,2902,2904,2910],{"className":2903},[483],[390,2905,2907],{"className":2906},[483],[390,2908,489],{"className":2909,"style":488},[411,487],[390,2911,2913],{"className":2912},[1462],[390,2914,2916,2937],{"className":2915},[1466,1467],[390,2917,2919,2934],{"className":2918},[1471],[390,2920,2923],{"className":2921,"style":2922},[1475],"height:0.242em;",[390,2924,2925,2928],{"style":1479},[390,2926],{"className":2927,"style":1484},[1483],[390,2929,2931],{"className":2930},[1488,1489,1490,1491],[390,2932,2472],{"className":2933},[411,412,1491],[390,2935,1499],{"className":2936},[1498],[390,2938,2940],{"className":2939},[1471],[390,2941,2944],{"className":2942,"style":2943},[1475],"height:0.3802em;",[390,2945],{},[390,2947,419],{"className":2948},[418],[390,2950,452],{"className":2951},[411,412],[390,2953],{"className":2954,"style":845},[493],[390,2956,961],{"className":2957},[849],[390,2959],{"className":2960,"style":845},[493],[390,2962,2964,2967,2970,2973,2976,2979],{"className":2963},[402],[390,2965],{"className":2966,"style":407},[406],[390,2968,515],{"className":2969},[411],[390,2971,428],{"className":2972},[427],[390,2974],{"className":2975,"style":742},[493],[390,2977,747],{"className":2978},[746],[390,2980],{"className":2981,"style":742},[493],[390,2983,2985,2989,3162,3165,3169],{"className":2984},[402],[390,2986],{"className":2987,"style":2988},[406],"height:2.3571em;vertical-align:-0.9301em;",[390,2990,2992,2995,3159],{"className":2991},[411],[390,2993],{"className":2994},[418,2548],[390,2996,2998],{"className":2997},[2552],[390,2999,3001,3150],{"className":3000},[1466,1467],[390,3002,3004,3147],{"className":3003},[1471],[390,3005,3008,3066,3074],{"className":3006,"style":3007},[1475],"height:1.427em;",[390,3009,3011,3014],{"style":3010},"top:-2.314em;",[390,3012],{"className":3013,"style":2569},[1483],[390,3015,3017,3060,3063],{"className":3016},[411],[390,3018,3020,3026],{"className":3019},[483],[390,3021,3023],{"className":3022},[483],[390,3024,489],{"className":3025,"style":488},[411,487],[390,3027,3029],{"className":3028},[1462],[390,3030,3032,3052],{"className":3031},[1466,1467],[390,3033,3035,3049],{"className":3034},[1471],[390,3036,3038],{"className":3037,"style":1476},[1475],[390,3039,3040,3043],{"style":1479},[390,3041],{"className":3042,"style":1484},[1483],[390,3044,3046],{"className":3045},[1488,1489,1490,1491],[390,3047,1066],{"className":3048},[411,1491],[390,3050,1499],{"className":3051},[1498],[390,3053,3055],{"className":3054},[1471],[390,3056,3058],{"className":3057,"style":1506},[1475],[390,3059],{},[390,3061],{"className":3062,"style":494},[493],[390,3064,2472],{"className":3065},[411,412],[390,3067,3068,3071],{"style":2581},[390,3069],{"className":3070,"style":2569},[1483],[390,3072],{"className":3073,"style":2589},[2588],[390,3075,3077,3080],{"style":3076},"top:-3.677em;",[390,3078],{"className":3079,"style":2569},[1483],[390,3081,3083,3126,3129,3132,3135,3138,3141,3144],{"className":3082},[411],[390,3084,3086,3092],{"className":3085},[483],[390,3087,3089],{"className":3088},[483],[390,3090,489],{"className":3091,"style":488},[411,487],[390,3093,3095],{"className":3094},[1462],[390,3096,3098,3118],{"className":3097},[1466,1467],[390,3099,3101,3115],{"className":3100},[1471],[390,3102,3104],{"className":3103,"style":1476},[1475],[390,3105,3106,3109],{"style":1479},[390,3107],{"className":3108,"style":1484},[1483],[390,3110,3112],{"className":3111},[1488,1489,1490,1491],[390,3113,1066],{"className":3114},[411,1491],[390,3116,1499],{"className":3117},[1498],[390,3119,3121],{"className":3120},[1471],[390,3122,3124],{"className":3123,"style":1506},[1475],[390,3125],{},[390,3127,419],{"className":3128},[418],[390,3130,452],{"className":3131},[411,412],[390,3133],{"className":3134,"style":845},[493],[390,3136,961],{"className":3137},[849],[390,3139],{"className":3140,"style":845},[493],[390,3142,515],{"className":3143},[411],[390,3145,428],{"className":3146},[427],[390,3148,1499],{"className":3149},[1498],[390,3151,3153],{"className":3152},[1471],[390,3154,3157],{"className":3155,"style":3156},[1475],"height:0.9301em;",[390,3158],{},[390,3160],{"className":3161},[427,2548],[390,3163],{"className":3164,"style":742},[493],[390,3166,3168],{"className":3167},[746],"≈",[390,3170],{"className":3171,"style":742},[493],[390,3173,3175,3179,3183,3186,3229,3232,3235,3238,3241],{"className":3174},[402],[390,3176],{"className":3177,"style":3178},[406],"height:0.9386em;vertical-align:-0.2441em;",[390,3180,3182],{"className":3181},[411],"1.44",[390,3184],{"className":3185,"style":494},[493],[390,3187,3189,3195],{"className":3188},[483],[390,3190,3192],{"className":3191},[483],[390,3193,489],{"className":3194,"style":488},[411,487],[390,3196,3198],{"className":3197},[1462],[390,3199,3201,3221],{"className":3200},[1466,1467],[390,3202,3204,3218],{"className":3203},[1471],[390,3205,3207],{"className":3206,"style":1476},[1475],[390,3208,3209,3212],{"style":1479},[390,3210],{"className":3211,"style":1484},[1483],[390,3213,3215],{"className":3214},[1488,1489,1490,1491],[390,3216,1066],{"className":3217},[411,1491],[390,3219,1499],{"className":3220},[1498],[390,3222,3224],{"className":3223},[1471],[390,3225,3227],{"className":3226,"style":1506},[1475],[390,3228],{},[390,3230],{"className":3231,"style":494},[493],[390,3233,452],{"className":3234},[411,412],[390,3236,677],{"className":3237},[411],[390,3239],{"className":3240,"style":1316},[493],[390,3242,3245],{"className":3243},[411,3244],"amsrm","□",[381,3247,3248,3249,3252,3253,3268,3269,3272,3273,3306,3307,3340,3341,3500,3501,3504,3505,3556,3557,3582,3583,3605,3606,3628,3629,3662,3663],{},"The minimal-node trees are exactly the ",[458,3250,3251],{},"Fibonacci trees",": the sparsest height-",[390,3254,3256],{"className":3255},[393],[390,3257,3259],{"className":3258,"ariaHidden":398},[397],[390,3260,3262,3265],{"className":3261},[402],[390,3263],{"className":3264,"style":1173},[406],[390,3266,423],{"className":3267},[411,412],"\nAVL tree is a root over a ",[385,3270,3271],{"href":17},"Fibonacci"," tree of height ",[390,3274,3276],{"className":3275},[393],[390,3277,3279,3297],{"className":3278,"ariaHidden":398},[397],[390,3280,3282,3285,3288,3291,3294],{"className":3281},[402],[390,3283],{"className":3284,"style":1609},[406],[390,3286,423],{"className":3287},[411,412],[390,3289],{"className":3290,"style":845},[493],[390,3292,761],{"className":3293},[849],[390,3295],{"className":3296,"style":845},[493],[390,3298,3300,3303],{"className":3299},[402],[390,3301],{"className":3302,"style":673},[406],[390,3304,515],{"className":3305},[411]," and one of height ",[390,3308,3310],{"className":3309},[393],[390,3311,3313,3331],{"className":3312,"ariaHidden":398},[397],[390,3314,3316,3319,3322,3325,3328],{"className":3315},[402],[390,3317],{"className":3318,"style":1609},[406],[390,3320,423],{"className":3321},[411,412],[390,3323],{"className":3324,"style":845},[493],[390,3326,761],{"className":3327},[849],[390,3329],{"className":3330,"style":845},[493],[390,3332,3334,3337],{"className":3333},[402],[390,3335],{"className":3336,"style":673},[406],[390,3338,1066],{"className":3339},[411],".\nBecause ",[390,3342,3344],{"className":3343},[393],[390,3345,3347,3418,3488],{"className":3346,"ariaHidden":398},[397],[390,3348,3350,3353,3356,3359,3402,3405,3408,3411,3415],{"className":3349},[402],[390,3351],{"className":3352,"style":3178},[406],[390,3354,3182],{"className":3355},[411],[390,3357],{"className":3358,"style":494},[493],[390,3360,3362,3368],{"className":3361},[483],[390,3363,3365],{"className":3364},[483],[390,3366,489],{"className":3367,"style":488},[411,487],[390,3369,3371],{"className":3370},[1462],[390,3372,3374,3394],{"className":3373},[1466,1467],[390,3375,3377,3391],{"className":3376},[1471],[390,3378,3380],{"className":3379,"style":1476},[1475],[390,3381,3382,3385],{"style":1479},[390,3383],{"className":3384,"style":1484},[1483],[390,3386,3388],{"className":3387},[1488,1489,1490,1491],[390,3389,1066],{"className":3390},[411,1491],[390,3392,1499],{"className":3393},[1498],[390,3395,3397],{"className":3396},[1471],[390,3398,3400],{"className":3399,"style":1506},[1475],[390,3401],{},[390,3403],{"className":3404,"style":494},[493],[390,3406,452],{"className":3407},[411,412],[390,3409],{"className":3410,"style":742},[493],[390,3412,3414],{"className":3413},[746],"\u003C",[390,3416],{"className":3417,"style":742},[493],[390,3419,3421,3424,3427,3430,3473,3476,3479,3482,3485],{"className":3420},[402],[390,3422],{"className":3423,"style":407},[406],[390,3425,1066],{"className":3426},[411],[390,3428],{"className":3429,"style":494},[493],[390,3431,3433,3439],{"className":3432},[483],[390,3434,3436],{"className":3435},[483],[390,3437,489],{"className":3438,"style":488},[411,487],[390,3440,3442],{"className":3441},[1462],[390,3443,3445,3465],{"className":3444},[1466,1467],[390,3446,3448,3462],{"className":3447},[1471],[390,3449,3451],{"className":3450,"style":1476},[1475],[390,3452,3453,3456],{"style":1479},[390,3454],{"className":3455,"style":1484},[1483],[390,3457,3459],{"className":3458},[1488,1489,1490,1491],[390,3460,1066],{"className":3461},[411,1491],[390,3463,1499],{"className":3464},[1498],[390,3466,3468],{"className":3467},[1471],[390,3469,3471],{"className":3470,"style":1506},[1475],[390,3472],{},[390,3474,419],{"className":3475},[418],[390,3477,452],{"className":3478},[411,412],[390,3480],{"className":3481,"style":845},[493],[390,3483,961],{"className":3484},[849],[390,3486],{"className":3487,"style":845},[493],[390,3489,3491,3494,3497],{"className":3490},[402],[390,3492],{"className":3493,"style":407},[406],[390,3495,515],{"className":3496},[411],[390,3498,428],{"className":3499},[427],", an AVL tree is provably ",[553,3502,3503],{},"shorter"," than the\nworst-case red-black tree of the same size, so its lookups touch fewer nodes. With\n",[390,3506,3508],{"className":3507},[393],[390,3509,3511,3529],{"className":3510,"ariaHidden":398},[397],[390,3512,3514,3517,3520,3523,3526],{"className":3513},[402],[390,3515],{"className":3516,"style":1173},[406],[390,3518,423],{"className":3519},[411,412],[390,3521],{"className":3522,"style":742},[493],[390,3524,747],{"className":3525},[746],[390,3527],{"className":3528,"style":742},[493],[390,3530,3532,3535,3538,3541,3547,3550,3553],{"className":3531},[402],[390,3533],{"className":3534,"style":407},[406],[390,3536,414],{"className":3537,"style":413},[411,412],[390,3539,419],{"className":3540},[418],[390,3542,3544],{"className":3543},[483],[390,3545,489],{"className":3546,"style":488},[411,487],[390,3548],{"className":3549,"style":494},[493],[390,3551,452],{"className":3552},[411,412],[390,3554,428],{"className":3555},[427]," guaranteed, search, ",[390,3558,3560],{"className":3559},[393],[390,3561,3563],{"className":3562,"ariaHidden":398},[397],[390,3564,3566,3570],{"className":3565},[402],[390,3567],{"className":3568,"style":3569},[406],"height:0.6833em;",[390,3571,3575],{"className":3572},[3573,3574],"enclosing","textsc",[390,3576,3578],{"className":3577},[411,731],[390,3579,3581],{"className":3580},[411],"Insert",", ",[390,3584,3586],{"className":3585},[393],[390,3587,3589],{"className":3588,"ariaHidden":398},[397],[390,3590,3592,3595],{"className":3591},[402],[390,3593],{"className":3594,"style":1173},[406],[390,3596,3598],{"className":3597},[3573,3574],[390,3599,3601],{"className":3600},[411,731],[390,3602,3604],{"className":3603},[411],"Delete",",\n",[390,3607,3609],{"className":3608},[393],[390,3610,3612],{"className":3611,"ariaHidden":398},[397],[390,3613,3615,3618],{"className":3614},[402],[390,3616],{"className":3617,"style":3569},[406],[390,3619,3621],{"className":3620},[3573,3574],[390,3622,3624],{"className":3623},[411,731],[390,3625,3627],{"className":3626},[411],"Min",", and successor all run in ",[390,3630,3632],{"className":3631},[393],[390,3633,3635],{"className":3634,"ariaHidden":398},[397],[390,3636,3638,3641,3644,3647,3653,3656,3659],{"className":3637},[402],[390,3639],{"className":3640,"style":407},[406],[390,3642,414],{"className":3643,"style":413},[411,412],[390,3645,419],{"className":3646},[418],[390,3648,3650],{"className":3649},[483],[390,3651,489],{"className":3652,"style":488},[411,487],[390,3654],{"className":3655,"style":494},[493],[390,3657,452],{"className":3658},[411,412],[390,3660,428],{"className":3661},[427]," worst-case time.",[507,3664,3665],{},[385,3666,2182],{"href":3667,"ariaDescribedBy":3668,"dataFootnoteRef":376,"id":3669},"#user-content-fn-skiena-avl",[513],"user-content-fnref-skiena-avl",[3671,3672,3676,3825],"figure",{"className":3673},[3674,3675],"tikz-figure","tikz-diagram-rendered",[2647,3677,3681],{"xmlns":2649,"width":3678,"height":3679,"viewBox":3680},"385.411","198.751","-75 -75 289.058 149.064",[3682,3683,3686,3719,3722,3729,3732,3739,3742,3749,3752,3758,3761,3768,3771,3777,3780,3786,3789,3795,3798,3804,3807,3813,3816,3822],"g",{"stroke":3684,"style":3685},"currentColor","stroke-miterlimit:10;stroke-width:.4",[3682,3687,3691,3694],{"fill":3688,"stroke":3689,"style":3690},"var(--tk-soft-accent)","var(--tk-accent)","stroke-width:1.2",[2655,3692],{"d":3693},"M111.004-63.134a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3695,3698,3707,3713],{"fill":3684,"stroke":3696,"fontSize":3697},"none","7",[3682,3699,3701],{"transform":3700},"translate(-7.403 2.43)",[2655,3702],{"d":3703,"fill":3684,"stroke":3684,"className":3704,"style":3706},"M102.994-63.295Q102.994-63.336 103.001-63.360L103.992-67.355Q104.030-67.451 104.030-67.543Q104.030-67.635 103.596-67.635Q103.510-67.663 103.510-67.748L103.538-67.858Q103.545-67.899 103.616-67.916L104.597-67.991Q104.642-67.991 104.671-67.965Q104.700-67.940 104.700-67.888L104.150-65.660Q104.375-65.923 104.659-66.072Q104.943-66.220 105.260-66.220Q105.677-66.220 105.930-66.024Q106.183-65.827 106.183-65.431Q106.183-64.980 105.729-63.862Q105.654-63.667 105.654-63.520Q105.654-63.288 105.821-63.288Q106.098-63.288 106.291-63.565Q106.484-63.842 106.563-64.163Q106.587-64.224 106.641-64.224L106.751-64.224Q106.785-64.224 106.807-64.199Q106.829-64.173 106.829-64.142Q106.829-64.129 106.822-64.115Q106.761-63.865 106.621-63.624Q106.481-63.384 106.270-63.225Q106.060-63.066 105.807-63.066Q105.524-63.066 105.322-63.228Q105.120-63.390 105.120-63.660Q105.120-63.783 105.172-63.910Q105.377-64.429 105.508-64.834Q105.640-65.239 105.640-65.527Q105.640-65.735 105.544-65.867Q105.448-65.998 105.247-65.998Q104.826-65.998 104.512-65.711Q104.197-65.424 103.979-64.990L103.558-63.308Q103.528-63.206 103.434-63.136Q103.340-63.066 103.237-63.066Q103.138-63.066 103.066-63.129Q102.994-63.192 102.994-63.295",[3705],"tikz-text","stroke-width:0.210",[3682,3708,3709],{"transform":3700},[2655,3710],{"d":3711,"fill":3684,"stroke":3684,"className":3712,"style":3706},"M112.632-63.941L107.799-63.941Q107.731-63.951 107.685-63.997Q107.639-64.043 107.639-64.115Q107.639-64.180 107.685-64.226Q107.731-64.272 107.799-64.282L112.632-64.282Q112.701-64.272 112.747-64.226Q112.793-64.180 112.793-64.115Q112.793-64.043 112.747-63.997Q112.701-63.951 112.632-63.941M112.632-65.479L107.799-65.479Q107.731-65.489 107.685-65.535Q107.639-65.581 107.639-65.653Q107.639-65.797 107.799-65.821L112.632-65.821Q112.793-65.797 112.793-65.653Q112.793-65.581 112.747-65.535Q112.701-65.489 112.632-65.479",[3705],[3682,3714,3715],{"transform":3700},[2655,3716],{"d":3717,"fill":3684,"stroke":3684,"className":3718,"style":3706},"M115.606-64.282L113.562-64.282L113.562-64.563L115.893-67.735Q115.928-67.782 115.993-67.782L116.129-67.782Q116.174-67.782 116.201-67.755Q116.228-67.728 116.228-67.683L116.228-64.563L116.991-64.563L116.991-64.282L116.228-64.282L116.228-63.623Q116.228-63.414 116.984-63.414L116.984-63.134L114.851-63.134L114.851-63.414Q115.606-63.414 115.606-63.623L115.606-64.282M115.654-67.007L113.863-64.563L115.654-64.563",[3705],[2655,3720],{"fill":3696,"d":3721},"M25.646-31.836a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3723,3725],{"transform":3724},"translate(-87.351 33.554)",[2655,3726],{"d":3727,"fill":3684,"stroke":3684,"className":3728,"style":3706},"M103.264-63.681Q103.384-63.524 103.575-63.425Q103.767-63.325 103.982-63.286Q104.197-63.247 104.420-63.247Q104.717-63.247 104.912-63.402Q105.107-63.558 105.197-63.812Q105.288-64.067 105.288-64.351Q105.288-64.645 105.196-64.896Q105.103-65.147 104.905-65.303Q104.707-65.458 104.413-65.458L103.897-65.458Q103.869-65.458 103.844-65.484Q103.818-65.509 103.818-65.533L103.818-65.605Q103.818-65.636 103.844-65.658Q103.869-65.680 103.897-65.680L104.338-65.711Q104.700-65.711 104.920-66.068Q105.141-66.426 105.141-66.815Q105.141-67.143 104.946-67.347Q104.751-67.550 104.420-67.550Q104.133-67.550 103.880-67.466Q103.627-67.383 103.463-67.195Q103.610-67.195 103.710-67.080Q103.811-66.966 103.811-66.815Q103.811-66.665 103.705-66.555Q103.599-66.446 103.442-66.446Q103.281-66.446 103.172-66.555Q103.063-66.665 103.063-66.815Q103.063-67.140 103.271-67.359Q103.480-67.577 103.796-67.680Q104.112-67.782 104.420-67.782Q104.738-67.782 105.066-67.678Q105.394-67.574 105.621-67.352Q105.848-67.130 105.848-66.815Q105.848-66.381 105.561-66.056Q105.274-65.732 104.840-65.585Q105.151-65.520 105.431-65.354Q105.712-65.188 105.889-64.930Q106.067-64.672 106.067-64.351Q106.067-63.941 105.823-63.631Q105.578-63.322 105.197-63.158Q104.816-62.994 104.420-62.994Q104.051-62.994 103.693-63.107Q103.336-63.219 103.092-63.469Q102.847-63.718 102.847-64.088Q102.847-64.259 102.964-64.371Q103.080-64.484 103.251-64.484Q103.360-64.484 103.451-64.433Q103.541-64.382 103.596-64.289Q103.651-64.197 103.651-64.088Q103.651-63.920 103.538-63.801Q103.425-63.681 103.264-63.681",[3705],[2655,3730],{"fill":3696,"d":3731},"M-14.188-.538a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3733,3735],{"transform":3734},"translate(-127.185 64.852)",[2655,3736],{"d":3737,"fill":3684,"stroke":3684,"className":3738,"style":3706},"M105.794-63.134L102.909-63.134L102.909-63.336Q102.909-63.366 102.936-63.394L104.184-64.611Q104.256-64.686 104.298-64.728Q104.341-64.771 104.420-64.850Q104.833-65.263 105.064-65.621Q105.295-65.978 105.295-66.402Q105.295-66.634 105.216-66.837Q105.137-67.041 104.996-67.191Q104.854-67.342 104.659-67.422Q104.464-67.502 104.232-67.502Q103.921-67.502 103.663-67.343Q103.405-67.184 103.275-66.907L103.295-66.907Q103.463-66.907 103.570-66.796Q103.678-66.685 103.678-66.521Q103.678-66.364 103.569-66.251Q103.459-66.138 103.295-66.138Q103.135-66.138 103.022-66.251Q102.909-66.364 102.909-66.521Q102.909-66.897 103.117-67.184Q103.326-67.471 103.661-67.627Q103.996-67.782 104.351-67.782Q104.775-67.782 105.155-67.624Q105.534-67.465 105.768-67.148Q106.002-66.832 106.002-66.402Q106.002-66.091 105.862-65.822Q105.722-65.554 105.517-65.349Q105.312-65.144 104.949-64.862Q104.587-64.580 104.478-64.484L103.623-63.756L104.266-63.756Q104.529-63.756 104.818-63.758Q105.107-63.759 105.325-63.768Q105.544-63.777 105.561-63.794Q105.623-63.859 105.660-64.026Q105.698-64.194 105.736-64.436L106.002-64.436",[3705],[2655,3740],{"fill":3696,"d":3741},"M56.944-.538a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3743,3745],{"transform":3744},"translate(-56.053 64.852)",[2655,3746],{"d":3747,"fill":3684,"stroke":3684,"className":3748,"style":3706},"M105.794-63.134L103.264-63.134L103.264-63.414Q104.232-63.414 104.232-63.623L104.232-67.242Q103.839-67.054 103.217-67.054L103.217-67.335Q103.634-67.335 103.998-67.436Q104.362-67.536 104.618-67.782L104.744-67.782Q104.809-67.765 104.826-67.697L104.826-63.623Q104.826-63.414 105.794-63.414",[3705],[2655,3750],{"fill":3696,"d":3751},"M-34.105 30.76a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3753,3755],{"transform":3754},"translate(-147.102 96.15)",[2655,3756],{"d":3747,"fill":3684,"stroke":3684,"className":3757,"style":3706},[3705],[2655,3759],{"fill":3696,"d":3760},"M2.883 30.76a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.536 0",[3682,3762,3764],{"transform":3763},"translate(-110.114 96.15)",[2655,3765],{"d":3766,"fill":3684,"stroke":3684,"className":3767,"style":3706},"M104.457-62.994Q103.822-62.994 103.458-63.339Q103.093-63.684 102.958-64.209Q102.823-64.734 102.823-65.359Q102.823-66.384 103.179-67.083Q103.534-67.782 104.457-67.782Q105.384-67.782 105.736-67.083Q106.088-66.384 106.088-65.359Q106.088-64.734 105.953-64.209Q105.818-63.684 105.455-63.339Q105.093-62.994 104.457-62.994M104.457-63.219Q104.895-63.219 105.108-63.594Q105.322-63.968 105.372-64.435Q105.421-64.901 105.421-65.479Q105.421-66.032 105.372-66.460Q105.322-66.887 105.110-67.222Q104.898-67.557 104.457-67.557Q104.115-67.557 103.912-67.350Q103.709-67.143 103.622-66.831Q103.534-66.518 103.512-66.202Q103.490-65.885 103.490-65.479Q103.490-65.062 103.512-64.720Q103.534-64.378 103.623-64.030Q103.712-63.681 103.917-63.450Q104.122-63.219 104.457-63.219",[3705],[2655,3769],{"fill":3696,"d":3770},"M-48.332 62.058a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.536 0",[3682,3772,3774],{"transform":3773},"translate(-161.329 127.447)",[2655,3775],{"d":3766,"fill":3684,"stroke":3684,"className":3776,"style":3706},[3705],[2655,3778],{"fill":3696,"d":3779},"M45.562 30.76a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[3682,3781,3783],{"transform":3782},"translate(-67.434 96.15)",[2655,3784],{"d":3766,"fill":3684,"stroke":3684,"className":3785,"style":3706},[3705],[2655,3787],{"fill":3696,"d":3788},"M184.981-31.836a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.536 0",[3682,3790,3792],{"transform":3791},"translate(71.984 33.554)",[2655,3793],{"d":3737,"fill":3684,"stroke":3684,"className":3794,"style":3706},[3705],[2655,3796],{"fill":3696,"d":3797},"M159.373-.538a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[3682,3799,3801],{"transform":3800},"translate(46.377 64.852)",[2655,3802],{"d":3747,"fill":3684,"stroke":3684,"className":3803,"style":3706},[3705],[2655,3805],{"fill":3696,"d":3806},"M210.588-.538a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[3682,3808,3810],{"transform":3809},"translate(97.592 64.852)",[2655,3811],{"d":3766,"fill":3684,"stroke":3684,"className":3812,"style":3706},[3705],[2655,3814],{"fill":3696,"d":3815},"M145.147 30.76a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[3682,3817,3819],{"transform":3818},"translate(32.15 96.15)",[2655,3820],{"d":3766,"fill":3684,"stroke":3684,"className":3821,"style":3706},[3705],[2655,3823],{"fill":3696,"d":3824},"M93.89-59.99 25.312-34.842M110.882-59.575 168.4-35.24M10.24-26.44-15.854-5.934M23.287-25.659 42.23-6.715M-27.414 6.831l-10.537 16.56M-18.541 7.13l8.706 15.961M-46.256 38.712l-6.997 15.393M45.422 7.672l-5.41 14.878M170.914-25.075 156.369-7.3M181.977-25.075 196.52-7.3M147.223 7.414l-6.997 15.394",[3826,3827,3830,3831,3847,3848,3965,3966,3981,3982,3997,3998,4013],"figcaption",{"className":3828},[3829],"tikz-cap","The sparsest AVL tree of height ",[390,3832,3834],{"className":3833},[393],[390,3835,3837],{"className":3836,"ariaHidden":398},[397],[390,3838,3840,3843],{"className":3839},[402],[390,3841],{"className":3842,"style":673},[406],[390,3844,3846],{"className":3845},[411],"4"," — a Fibonacci tree with the minimum ",[390,3849,3851],{"className":3850},[393],[390,3852,3854,3881,3937,3955],{"className":3853,"ariaHidden":398},[397],[390,3855,3857,3860,3863,3866,3869,3872,3875,3878],{"className":3856},[402],[390,3858],{"className":3859,"style":407},[406],[390,3861,1150],{"className":3862,"style":1149},[411,412],[390,3864,419],{"className":3865},[418],[390,3867,3846],{"className":3868},[411],[390,3870,428],{"className":3871},[427],[390,3873],{"className":3874,"style":742},[493],[390,3876,747],{"className":3877},[746],[390,3879],{"className":3880,"style":742},[493],[390,3882,3884,3887,3928,3931,3934],{"className":3883},[402],[390,3885],{"className":3886,"style":2406},[406],[390,3888,3890,3893],{"className":3889},[411],[390,3891,2147],{"className":3892,"style":2146},[411,412],[390,3894,3896],{"className":3895},[1462],[390,3897,3899,3920],{"className":3898},[1466,1467],[390,3900,3902,3917],{"className":3901},[1471],[390,3903,3906],{"className":3904,"style":3905},[1475],"height:0.3011em;",[390,3907,3908,3911],{"style":2163},[390,3909],{"className":3910,"style":1484},[1483],[390,3912,3914],{"className":3913},[1488,1489,1490,1491],[390,3915,3697],{"className":3916},[411,1491],[390,3918,1499],{"className":3919},[1498],[390,3921,3923],{"className":3922},[1471],[390,3924,3926],{"className":3925,"style":2447},[1475],[390,3927],{},[390,3929],{"className":3930,"style":845},[493],[390,3932,761],{"className":3933},[849],[390,3935],{"className":3936,"style":845},[493],[390,3938,3940,3943,3946,3949,3952],{"className":3939},[402],[390,3941],{"className":3942,"style":673},[406],[390,3944,515],{"className":3945},[411],[390,3947],{"className":3948,"style":742},[493],[390,3950,747],{"className":3951},[746],[390,3953],{"className":3954,"style":742},[493],[390,3956,3958,3961],{"className":3957},[402],[390,3959],{"className":3960,"style":673},[406],[390,3962,3964],{"className":3963},[411],"12"," nodes. Each node's two subtrees differ in height by exactly ",[390,3967,3969],{"className":3968},[393],[390,3970,3972],{"className":3971,"ariaHidden":398},[397],[390,3973,3975,3978],{"className":3974},[402],[390,3976],{"className":3977,"style":673},[406],[390,3979,515],{"className":3980},[411]," (the extreme the invariant allows): the root sits over a minimal height-",[390,3983,3985],{"className":3984},[393],[390,3986,3988],{"className":3987,"ariaHidden":398},[397],[390,3989,3991,3994],{"className":3990},[402],[390,3992],{"className":3993,"style":673},[406],[390,3995,2182],{"className":3996},[411]," tree and a minimal height-",[390,3999,4001],{"className":4000},[393],[390,4002,4004],{"className":4003,"ariaHidden":398},[397],[390,4005,4007,4010],{"className":4006},[402],[390,4008],{"className":4009,"style":673},[406],[390,4011,1066],{"className":4012},[411]," tree, recursively. Subtree heights are labeled.",[631,4015,4017],{"id":4016},"insertion-rebalancing-on-the-way-up","Insertion: rebalancing on the way up",[381,4019,4020,4021,4036,4037,4054,4055,4058,4059,4078,4079,4094,4095,4110],{},"We insert a key exactly as in a plain BST: descend to a leaf position and attach\nthe new node. That can only push heights up along the single root-to-leaf path we\njust walked, so we retrace it upward, recomputing ",[390,4022,4024],{"className":4023},[393],[390,4025,4027],{"className":4026,"ariaHidden":398},[397],[390,4028,4030,4033],{"className":4029},[402],[390,4031],{"className":4032,"style":1173},[406],[390,4034,423],{"className":4035},[411,412]," at each node. Let ",[390,4038,4040],{"className":4039},[393],[390,4041,4043],{"className":4042,"ariaHidden":398},[397],[390,4044,4046,4049],{"className":4045},[402],[390,4047],{"className":4048,"style":588},[406],[390,4050,4053],{"className":4051,"style":4052},[411,412],"margin-right:0.044em;","z"," be the\n",[458,4056,4057],{},"lowest"," node whose balance factor has become ",[390,4060,4062],{"className":4061},[393],[390,4063,4065],{"className":4064,"ariaHidden":398},[397],[390,4066,4068,4071,4075],{"className":4067},[402],[390,4069],{"className":4070,"style":757},[406],[390,4072,4074],{"className":4073},[411],"±",[390,4076,1066],{"className":4077},[411],". Its imbalance was caused\nby the new node landing in one of four positions relative to ",[390,4080,4082],{"className":4081},[393],[390,4083,4085],{"className":4084,"ariaHidden":398},[397],[390,4086,4088,4091],{"className":4087},[402],[390,4089],{"className":4090,"style":588},[406],[390,4092,4053],{"className":4093,"style":4052},[411,412],", named by the two\nsteps down the heavy path from ",[390,4096,4098],{"className":4097},[393],[390,4099,4101],{"className":4100,"ariaHidden":398},[397],[390,4102,4104,4107],{"className":4103},[402],[390,4105],{"className":4106,"style":588},[406],[390,4108,4053],{"className":4109,"style":4052},[411,412]," toward the insertion:",[4112,4113,4114,4139,4162,4188],"ul",{},[4115,4116,4117,4120,4121,4123,4124,677],"li",{},[458,4118,4119],{},"LL",": left child left-heavy, a single ",[458,4122,831],{}," rotation at ",[390,4125,4127],{"className":4126},[393],[390,4128,4130],{"className":4129,"ariaHidden":398},[397],[390,4131,4133,4136],{"className":4132},[402],[390,4134],{"className":4135,"style":588},[406],[390,4137,4053],{"className":4138,"style":4052},[411,412],[4115,4140,4141,4144,4145,4123,4147,677],{},[458,4142,4143],{},"RR",": right child right-heavy, a single ",[458,4146,871],{},[390,4148,4150],{"className":4149},[393],[390,4151,4153],{"className":4152,"ariaHidden":398},[397],[390,4154,4156,4159],{"className":4155},[402],[390,4157],{"className":4158,"style":588},[406],[390,4160,4053],{"className":4161,"style":4052},[411,412],[4115,4163,4164,4167,4168,4170,4171,4123,4173,677],{},[458,4165,4166],{},"LR",": left child right-heavy, a ",[458,4169,871],{}," rotation at the child, then a\n",[458,4172,831],{},[390,4174,4176],{"className":4175},[393],[390,4177,4179],{"className":4178,"ariaHidden":398},[397],[390,4180,4182,4185],{"className":4181},[402],[390,4183],{"className":4184,"style":588},[406],[390,4186,4053],{"className":4187,"style":4052},[411,412],[4115,4189,4190,4193,4194,4170,4196,4123,4198,677],{},[458,4191,4192],{},"RL",": right child left-heavy, a ",[458,4195,831],{},[458,4197,871],{},[390,4199,4201],{"className":4200},[393],[390,4202,4204],{"className":4203,"ariaHidden":398},[397],[390,4205,4207,4210],{"className":4206},[402],[390,4208],{"className":4209,"style":588},[406],[390,4211,4053],{"className":4212,"style":4052},[411,412],[381,4214,4215,4216,4231,4232,4250,4251,4266,4267,4282,4283,4298,4299,4314,4315,4330,4331,4346,4347,4362,4363,4378,4379,4394,4395,4410],{},"Consider the LL case. Node ",[390,4217,4219],{"className":4218},[393],[390,4220,4222],{"className":4221,"ariaHidden":398},[397],[390,4223,4225,4228],{"className":4224},[402],[390,4226],{"className":4227,"style":588},[406],[390,4229,4053],{"className":4230,"style":4052},[411,412]," has balance ",[390,4233,4235],{"className":4234},[393],[390,4236,4238],{"className":4237,"ariaHidden":398},[397],[390,4239,4241,4244,4247],{"className":4240},[402],[390,4242],{"className":4243,"style":757},[406],[390,4245,761],{"className":4246},[411],[390,4248,1066],{"className":4249},[411],", its left child ",[390,4252,4254],{"className":4253},[393],[390,4255,4257],{"className":4256,"ariaHidden":398},[397],[390,4258,4260,4263],{"className":4259},[402],[390,4261],{"className":4262,"style":569},[406],[390,4264,574],{"className":4265,"style":573},[411,412]," leans left,\nand the new node sits under ",[390,4268,4270],{"className":4269},[393],[390,4271,4273],{"className":4272,"ariaHidden":398},[397],[390,4274,4276,4279],{"className":4275},[402],[390,4277],{"className":4278,"style":569},[406],[390,4280,574],{"className":4281,"style":573},[411,412],"'s left child ",[390,4284,4286],{"className":4285},[393],[390,4287,4289],{"className":4288,"ariaHidden":398},[397],[390,4290,4292,4295],{"className":4291},[402],[390,4293],{"className":4294,"style":588},[406],[390,4296,592],{"className":4297},[411,412],". A single right rotation at ",[390,4300,4302],{"className":4301},[393],[390,4303,4305],{"className":4304,"ariaHidden":398},[397],[390,4306,4308,4311],{"className":4307},[402],[390,4309],{"className":4310,"style":588},[406],[390,4312,4053],{"className":4313,"style":4052},[411,412],"\nlifts ",[390,4316,4318],{"className":4317},[393],[390,4319,4321],{"className":4320,"ariaHidden":398},[397],[390,4322,4324,4327],{"className":4323},[402],[390,4325],{"className":4326,"style":569},[406],[390,4328,574],{"className":4329,"style":573},[411,412]," into ",[390,4332,4334],{"className":4333},[393],[390,4335,4337],{"className":4336,"ariaHidden":398},[397],[390,4338,4340,4343],{"className":4339},[402],[390,4341],{"className":4342,"style":588},[406],[390,4344,4053],{"className":4345,"style":4052},[411,412],"'s place, hangs ",[390,4348,4350],{"className":4349},[393],[390,4351,4353],{"className":4352,"ariaHidden":398},[397],[390,4354,4356,4359],{"className":4355},[402],[390,4357],{"className":4358,"style":588},[406],[390,4360,4053],{"className":4361,"style":4052},[411,412]," as ",[390,4364,4366],{"className":4365},[393],[390,4367,4369],{"className":4368,"ariaHidden":398},[397],[390,4370,4372,4375],{"className":4371},[402],[390,4373],{"className":4374,"style":569},[406],[390,4376,574],{"className":4377,"style":573},[411,412],"'s right child, and rehomes ",[390,4380,4382],{"className":4381},[393],[390,4383,4385],{"className":4384,"ariaHidden":398},[397],[390,4386,4388,4391],{"className":4387},[402],[390,4389],{"className":4390,"style":569},[406],[390,4392,574],{"className":4393,"style":573},[411,412],"'s old\nright subtree as ",[390,4396,4398],{"className":4397},[393],[390,4399,4401],{"className":4400,"ariaHidden":398},[397],[390,4402,4404,4407],{"className":4403},[402],[390,4405],{"className":4406,"style":588},[406],[390,4408,4053],{"className":4409,"style":4052},[411,412],"'s new left subtree.",[3671,4412,4414,4663],{"className":4413},[3674,3675],[2647,4415,4419],{"xmlns":2649,"width":4416,"height":4417,"viewBox":4418},"508.808","165.806","-75 -75 381.606 124.355",[3682,4420,4421,4424,4432,4435,4442,4445,4452,4455,4470,4473,4487,4490,4504,4507,4521,4524,4567,4578,4581,4587,4590,4603,4606,4619,4622,4628,4631,4644,4647,4660],{"stroke":3684,"style":3685},[2655,4422],{"fill":3696,"d":4423},"M36.353-61.712c0-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",[3682,4425,4427],{"transform":4426},"translate(-2.545 2.153)",[2655,4428],{"d":4429,"fill":3684,"stroke":3684,"className":4430,"style":4431},"M27.005-61.600L26.883-61.600Q26.805-61.600 26.805-61.692Q26.805-61.741 26.825-61.761Q27.093-62.225 27.472-62.647Q27.850-63.069 28.331-63.502Q28.812-63.934 29.298-64.368Q29.784-64.803 30.086-65.140L30.047-65.140Q29.828-65.140 29.403-65.281Q28.978-65.423 28.734-65.423Q28.470-65.423 28.221-65.308Q27.972-65.193 27.904-64.954Q27.889-64.881 27.826-64.881L27.704-64.881Q27.625-64.881 27.625-64.983L27.625-65.013Q27.704-65.306 27.882-65.560Q28.060-65.814 28.321-65.972Q28.582-66.131 28.866-66.131Q29.066-66.131 29.198-66.041Q29.330-65.950 29.505-65.760Q29.681-65.569 29.791-65.486Q29.901-65.403 30.067-65.403Q30.287-65.403 30.460-65.604Q30.633-65.804 30.804-66.102Q30.833-66.131 30.877-66.131L30.995-66.131Q31.029-66.131 31.051-66.107Q31.073-66.082 31.073-66.043Q31.073-66.009 31.053-65.980Q30.785-65.516 30.426-65.113Q30.067-64.710 29.488-64.190Q28.910-63.670 28.512-63.311Q28.114-62.952 27.767-62.571Q27.845-62.591 27.977-62.591Q28.221-62.591 28.644-62.452Q29.066-62.313 29.295-62.313Q29.544-62.313 29.798-62.420Q30.052-62.527 30.238-62.723Q30.423-62.918 30.487-63.172Q30.511-63.240 30.565-63.240L30.687-63.240Q30.726-63.240 30.750-63.209Q30.775-63.177 30.775-63.143Q30.775-63.133 30.765-63.113Q30.672-62.733 30.443-62.388Q30.213-62.044 29.879-61.822Q29.544-61.600 29.164-61.600Q28.973-61.600 28.841-61.688Q28.709-61.775 28.531-61.968Q28.353-62.161 28.241-62.247Q28.128-62.332 27.967-62.332Q27.469-62.332 27.074-61.634Q27.040-61.600 27.005-61.600",[3705],"stroke-width:0.300",[2655,4433],{"fill":3696,"d":4434},"M-3.48-27.568c0-5.5-4.46-9.959-9.96-9.959-5.499 0-9.958 4.459-9.958 9.959s4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.96 0",[3682,4436,4438],{"transform":4437},"translate(-42.465 35.324)",[2655,4439],{"d":4440,"fill":3684,"stroke":3684,"className":4441,"style":4431},"M27.235-60.281Q27.445-59.920 27.967-59.920Q28.441-59.920 28.788-60.252Q29.134-60.584 29.347-61.055Q29.559-61.526 29.676-62.020Q29.232-61.600 28.714-61.600Q28.319-61.600 28.041-61.736Q27.762-61.873 27.608-62.144Q27.455-62.415 27.455-62.801Q27.455-63.128 27.542-63.472Q27.630-63.816 27.789-64.239Q27.948-64.661 28.065-64.974Q28.197-65.340 28.197-65.574Q28.197-65.872 27.977-65.872Q27.582-65.872 27.325-65.464Q27.069-65.057 26.947-64.554Q26.927-64.490 26.864-64.490L26.747-64.490Q26.664-64.490 26.664-64.583L26.664-64.612Q26.825-65.208 27.157-65.670Q27.489-66.131 27.997-66.131Q28.353-66.131 28.600-65.897Q28.846-65.662 28.846-65.301Q28.846-65.115 28.763-64.910Q28.719-64.788 28.563-64.378Q28.407-63.968 28.324-63.699Q28.241-63.431 28.187-63.172Q28.133-62.913 28.133-62.654Q28.133-62.322 28.275-62.093Q28.416-61.863 28.724-61.863Q29.344-61.863 29.837-62.620L30.594-65.701Q30.628-65.833 30.750-65.928Q30.873-66.024 31.014-66.024Q31.136-66.024 31.227-65.945Q31.317-65.867 31.317-65.740Q31.317-65.682 31.307-65.662L30.316-61.683Q30.184-61.170 29.832-60.701Q29.481-60.233 28.985-59.947Q28.490-59.661 27.953-59.661Q27.694-59.661 27.440-59.761Q27.186-59.861 27.030-60.062Q26.874-60.262 26.874-60.530Q26.874-60.804 27.035-61.004Q27.196-61.204 27.464-61.204Q27.625-61.204 27.735-61.104Q27.845-61.004 27.845-60.843Q27.845-60.613 27.674-60.442Q27.503-60.272 27.274-60.272Q27.264-60.276 27.254-60.279Q27.245-60.281 27.235-60.281",[3705],[2655,4443],{"fill":3696,"d":4444},"M18.682-55.1-5.727-34.18M-23.398 6.575c0-5.5-4.458-9.958-9.958-9.958s-9.958 4.458-9.958 9.958 4.458 9.958 9.958 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[3682,4446,4448],{"transform":4447},"translate(-62.608 70.44)",[2655,4449],{"d":4450,"fill":3684,"stroke":3684,"className":4451,"style":4431},"M27.176-62Q27.352-61.863 27.674-61.863Q27.987-61.863 28.226-62.164Q28.465-62.464 28.553-62.820L29.007-64.593Q29.115-65.076 29.115-65.252Q29.115-65.501 28.976-65.687Q28.836-65.872 28.587-65.872Q28.270-65.872 27.992-65.674Q27.713-65.477 27.523-65.171Q27.332-64.866 27.254-64.554Q27.235-64.490 27.176-64.490L27.054-64.490Q26.976-64.490 26.976-64.583L26.976-64.612Q27.074-64.983 27.308-65.337Q27.542-65.691 27.882-65.911Q28.221-66.131 28.607-66.131Q28.973-66.131 29.269-65.936Q29.564-65.740 29.686-65.403Q29.857-65.711 30.123-65.921Q30.389-66.131 30.707-66.131Q30.921-66.131 31.146-66.055Q31.371-65.980 31.512-65.823Q31.654-65.667 31.654-65.433Q31.654-65.179 31.490-64.996Q31.327-64.813 31.073-64.813Q30.912-64.813 30.804-64.915Q30.697-65.018 30.697-65.174Q30.697-65.384 30.841-65.543Q30.985-65.701 31.185-65.731Q31.004-65.872 30.687-65.872Q30.365-65.872 30.128-65.574Q29.891-65.276 29.793-64.910L29.354-63.143Q29.247-62.742 29.247-62.483Q29.247-62.230 29.391-62.046Q29.535-61.863 29.774-61.863Q30.243-61.863 30.611-62.276Q30.980-62.689 31.097-63.182Q31.117-63.240 31.175-63.240L31.297-63.240Q31.336-63.240 31.361-63.213Q31.385-63.187 31.385-63.152Q31.385-63.143 31.375-63.123Q31.234-62.527 30.780-62.064Q30.326-61.600 29.754-61.600Q29.388-61.600 29.093-61.797Q28.797-61.995 28.675-62.332Q28.519-62.039 28.243-61.819Q27.967-61.600 27.655-61.600Q27.440-61.600 27.213-61.675Q26.986-61.751 26.844-61.907Q26.703-62.064 26.703-62.303Q26.703-62.537 26.866-62.730Q27.030-62.923 27.274-62.923Q27.440-62.923 27.552-62.823Q27.665-62.723 27.665-62.562Q27.665-62.352 27.525-62.195Q27.386-62.039 27.176-62",[3705],[2655,4453],{"fill":3696,"d":4454},"m-18.557-18.794-9.68 16.595M-53.273 24.874l-12.13 21.01h24.26Z",[3682,4456,4457,4464],{"stroke":3696},[3682,4458,4460],{"transform":4459},"translate(-84.833 105.097)",[2655,4461],{"d":4462,"fill":3684,"stroke":3684,"className":4463,"style":4431},"M26.854-61.844Q26.859-61.868 26.876-61.932Q26.893-61.995 26.920-62.029Q26.947-62.064 26.996-62.064Q27.855-62.064 28.133-62.112Q28.402-62.181 28.456-62.400L29.823-67.894Q29.867-68.016 29.867-68.113Q29.867-68.191 29.515-68.191L28.934-68.191Q28.265-68.191 27.901-67.986Q27.538-67.781 27.367-67.444Q27.196-67.108 26.927-66.341Q26.893-66.253 26.825-66.253L26.737-66.253Q26.634-66.253 26.634-66.380L27.347-68.450Q27.367-68.543 27.445-68.543L33.353-68.543Q33.456-68.543 33.456-68.411L33.124-66.341Q33.124-66.312 33.089-66.282Q33.055-66.253 33.026-66.253L32.933-66.253Q32.835-66.253 32.835-66.380Q32.943-67.088 32.943-67.381Q32.943-67.733 32.796-67.913Q32.650-68.094 32.416-68.143Q32.181-68.191 31.805-68.191L31.214-68.191Q30.946-68.191 30.853-68.143Q30.760-68.094 30.697-67.850L29.325-62.361Q29.320-62.342 29.317-62.322Q29.315-62.303 29.305-62.274Q29.305-62.147 29.457-62.112Q29.715-62.064 30.565-62.064Q30.663-62.064 30.663-61.932Q30.628-61.790 30.609-61.751Q30.589-61.712 30.497-61.712L26.957-61.712Q26.854-61.712 26.854-61.844",[3705],[3682,4465,4466],{"transform":4459},[2655,4467],{"d":4468,"fill":3684,"stroke":3684,"className":4469,"style":3706},"M35.565-60.212L33.035-60.212L33.035-60.492Q34.003-60.492 34.003-60.701L34.003-64.320Q33.610-64.132 32.988-64.132L32.988-64.413Q33.405-64.413 33.769-64.514Q34.133-64.614 34.389-64.860L34.515-64.860Q34.580-64.843 34.597-64.775L34.597-60.701Q34.597-60.492 35.565-60.492",[3705],[2655,4471],{"fill":3696,"d":4472},"M-38.474 15.35-48.56 32.636M-13.439 24.874l-12.13 21.01h24.26Z",[3682,4474,4475,4481],{"stroke":3696},[3682,4476,4478],{"transform":4477},"translate(-44.999 105.097)",[2655,4479],{"d":4462,"fill":3684,"stroke":3684,"className":4480,"style":4431},[3705],[3682,4482,4483],{"transform":4477},[2655,4484],{"d":4485,"fill":3684,"stroke":3684,"className":4486,"style":3706},"M35.565-60.212L32.680-60.212L32.680-60.414Q32.680-60.444 32.707-60.472L33.955-61.689Q34.027-61.764 34.069-61.806Q34.112-61.849 34.191-61.928Q34.604-62.341 34.835-62.699Q35.066-63.056 35.066-63.480Q35.066-63.712 34.987-63.915Q34.908-64.119 34.767-64.269Q34.625-64.420 34.430-64.500Q34.235-64.580 34.003-64.580Q33.692-64.580 33.434-64.421Q33.176-64.262 33.046-63.985L33.066-63.985Q33.234-63.985 33.341-63.874Q33.449-63.763 33.449-63.599Q33.449-63.442 33.340-63.329Q33.230-63.216 33.066-63.216Q32.906-63.216 32.793-63.329Q32.680-63.442 32.680-63.599Q32.680-63.975 32.888-64.262Q33.097-64.549 33.432-64.705Q33.767-64.860 34.122-64.860Q34.546-64.860 34.926-64.702Q35.305-64.543 35.539-64.226Q35.773-63.910 35.773-63.480Q35.773-63.169 35.633-62.900Q35.493-62.632 35.288-62.427Q35.083-62.222 34.720-61.940Q34.358-61.658 34.249-61.562L33.394-60.834L34.037-60.834Q34.300-60.834 34.589-60.836Q34.878-60.837 35.096-60.846Q35.315-60.855 35.332-60.872Q35.394-60.937 35.431-61.104Q35.469-61.272 35.507-61.514L35.773-61.514",[3705],[2655,4488],{"fill":3696,"d":4489},"m-28.238 15.35 10.086 17.288M6.478-9.27l-12.13 21.012h24.26Z",[3682,4491,4492,4498],{"stroke":3696},[3682,4493,4495],{"transform":4494},"translate(-25.082 70.953)",[2655,4496],{"d":4462,"fill":3684,"stroke":3684,"className":4497,"style":4431},[3705],[3682,4499,4500],{"transform":4494},[2655,4501],{"d":4502,"fill":3684,"stroke":3684,"className":4503,"style":3706},"M33.035-60.759Q33.155-60.602 33.346-60.503Q33.538-60.403 33.753-60.364Q33.968-60.325 34.191-60.325Q34.488-60.325 34.683-60.480Q34.878-60.636 34.968-60.890Q35.059-61.145 35.059-61.429Q35.059-61.723 34.967-61.974Q34.874-62.225 34.676-62.381Q34.478-62.536 34.184-62.536L33.668-62.536Q33.640-62.536 33.615-62.562Q33.589-62.587 33.589-62.611L33.589-62.683Q33.589-62.714 33.615-62.736Q33.640-62.758 33.668-62.758L34.109-62.789Q34.471-62.789 34.691-63.146Q34.912-63.504 34.912-63.893Q34.912-64.221 34.717-64.425Q34.522-64.628 34.191-64.628Q33.904-64.628 33.651-64.544Q33.398-64.461 33.234-64.273Q33.381-64.273 33.481-64.158Q33.582-64.044 33.582-63.893Q33.582-63.743 33.476-63.633Q33.370-63.524 33.213-63.524Q33.052-63.524 32.943-63.633Q32.834-63.743 32.834-63.893Q32.834-64.218 33.042-64.437Q33.251-64.655 33.567-64.758Q33.883-64.860 34.191-64.860Q34.509-64.860 34.837-64.756Q35.165-64.652 35.392-64.430Q35.619-64.208 35.619-63.893Q35.619-63.459 35.332-63.134Q35.045-62.810 34.611-62.663Q34.922-62.598 35.202-62.432Q35.483-62.266 35.660-62.008Q35.838-61.750 35.838-61.429Q35.838-61.019 35.594-60.709Q35.349-60.400 34.968-60.236Q34.587-60.072 34.191-60.072Q33.822-60.072 33.464-60.185Q33.107-60.297 32.863-60.547Q32.618-60.796 32.618-61.166Q32.618-61.337 32.735-61.449Q32.851-61.562 33.022-61.562Q33.131-61.562 33.222-61.511Q33.312-61.460 33.367-61.367Q33.422-61.275 33.422-61.166Q33.422-60.998 33.309-60.879Q33.196-60.759 33.035-60.759",[3705],[2655,4505],{"fill":3696,"d":4506},"M-8.32-18.794 1.763-1.506M66.229-43.413l-12.13 21.011h24.26Z",[3682,4508,4509,4515],{"stroke":3696},[3682,4510,4512],{"transform":4511},"translate(34.669 36.81)",[2655,4513],{"d":4462,"fill":3684,"stroke":3684,"className":4514,"style":4431},[3705],[3682,4516,4517],{"transform":4511},[2655,4518],{"d":4519,"fill":3684,"stroke":3684,"className":4520,"style":3706},"M34.556-61.360L32.512-61.360L32.512-61.641L34.843-64.813Q34.878-64.860 34.943-64.860L35.079-64.860Q35.124-64.860 35.151-64.833Q35.178-64.806 35.178-64.761L35.178-61.641L35.941-61.641L35.941-61.360L35.178-61.360L35.178-60.701Q35.178-60.492 35.934-60.492L35.934-60.212L33.801-60.212L33.801-60.492Q34.556-60.492 34.556-60.701L34.556-61.360M34.604-64.085L32.813-61.641L34.604-61.641",[3705],[2655,4522],{"fill":3696,"d":4523},"m34.107-55.1 25.848 22.154",[3682,4525,4527,4530,4534,4552],{"style":4526},"stroke-width:.8",[2655,4528],{"fill":3696,"d":4529},"M100.372-13.342h56.106",[2655,4531],{"fill":3696,"d":4532,"style":4533},"M154.318-16.465c.467 1.874 1.51 2.759 2.56 3.123-1.05.364-2.093 1.249-2.56 3.123","stroke-linecap:round;stroke-linejoin:round",[3682,4535,4538,4546],{"stroke":3696,"fontFamily":4536,"fontSize":4537},"cmr8","8",[3682,4539,4541],{"transform":4540},"translate(93.572 40.011)",[2655,4542],{"d":4543,"fill":3684,"stroke":3684,"className":4544,"style":4545},"M28.641-61.712L26.661-61.712L26.661-62.009Q26.930-62.009 27.098-62.054Q27.266-62.099 27.266-62.271L27.266-64.407Q27.266-64.622 27.204-64.718Q27.141-64.814 27.024-64.835Q26.907-64.857 26.661-64.857L26.661-65.153L27.829-65.239L27.829-64.454Q27.907-64.665 28.059-64.851Q28.211-65.036 28.411-65.138Q28.610-65.239 28.836-65.239Q29.082-65.239 29.274-65.095Q29.465-64.950 29.465-64.720Q29.465-64.564 29.360-64.454Q29.254-64.345 29.098-64.345Q28.942-64.345 28.832-64.454Q28.723-64.564 28.723-64.720Q28.723-64.880 28.829-64.985Q28.504-64.985 28.290-64.757Q28.075-64.528 27.979-64.189Q27.883-63.849 27.883-63.544L27.883-62.271Q27.883-62.103 28.110-62.056Q28.336-62.009 28.641-62.009L28.641-61.712M31.805-61.712L30.028-61.712L30.028-62.009Q30.301-62.009 30.469-62.056Q30.637-62.103 30.637-62.271L30.637-64.407Q30.637-64.622 30.581-64.718Q30.524-64.814 30.411-64.835Q30.297-64.857 30.051-64.857L30.051-65.153L31.250-65.239L31.250-62.271Q31.250-62.103 31.397-62.056Q31.543-62.009 31.805-62.009L31.805-61.712M30.364-66.634Q30.364-66.825 30.499-66.956Q30.633-67.087 30.829-67.087Q30.950-67.087 31.053-67.025Q31.157-66.962 31.219-66.858Q31.282-66.755 31.282-66.634Q31.282-66.439 31.151-66.304Q31.020-66.169 30.829-66.169Q30.629-66.169 30.497-66.302Q30.364-66.435 30.364-66.634M32.305-61.103Q32.305-61.384 32.516-61.595Q32.727-61.806 33.012-61.896Q32.856-62.021 32.778-62.210Q32.700-62.400 32.700-62.599Q32.700-62.954 32.930-63.247Q32.563-63.587 32.563-64.056Q32.563-64.407 32.766-64.677Q32.969-64.946 33.290-65.093Q33.610-65.239 33.954-65.239Q34.473-65.239 34.844-64.958Q35.207-65.329 35.754-65.329Q35.934-65.329 36.061-65.202Q36.188-65.075 36.188-64.896Q36.188-64.790 36.110-64.712Q36.032-64.634 35.922-64.634Q35.813-64.634 35.737-64.710Q35.661-64.786 35.661-64.896Q35.661-64.997 35.700-65.048Q35.707-65.056 35.711-65.062Q35.715-65.067 35.715-65.071Q35.340-65.071 35.020-64.817Q35.340-64.478 35.340-64.056Q35.340-63.786 35.223-63.569Q35.106-63.353 34.901-63.194Q34.696-63.036 34.454-62.954Q34.211-62.872 33.954-62.872Q33.735-62.872 33.522-62.931Q33.309-62.989 33.114-63.110Q33.020-62.970 33.020-62.790Q33.020-62.583 33.157-62.431Q33.293-62.278 33.500-62.278L34.196-62.278Q34.684-62.278 35.096-62.194Q35.508-62.110 35.788-61.853Q36.067-61.595 36.067-61.103Q36.067-60.739 35.747-60.507Q35.426-60.275 34.985-60.173Q34.543-60.071 34.188-60.071Q33.832-60.071 33.389-60.173Q32.946-60.275 32.625-60.507Q32.305-60.739 32.305-61.103M32.809-61.103Q32.809-60.907 32.954-60.759Q33.098-60.610 33.311-60.521Q33.524-60.431 33.764-60.384Q34.004-60.337 34.188-60.337Q34.430-60.337 34.760-60.415Q35.090-60.493 35.327-60.667Q35.563-60.841 35.563-61.103Q35.563-61.509 35.153-61.618Q34.743-61.728 34.180-61.728L33.500-61.728Q33.231-61.728 33.020-61.550Q32.809-61.372 32.809-61.103M33.954-63.138Q34.676-63.138 34.676-64.056Q34.676-64.978 33.954-64.978Q33.227-64.978 33.227-64.056Q33.227-63.138 33.954-63.138M38.481-61.712L36.625-61.712L36.625-62.009Q36.899-62.009 37.067-62.056Q37.235-62.103 37.235-62.271L37.235-66.431Q37.235-66.646 37.172-66.741Q37.110-66.837 36.991-66.858Q36.872-66.880 36.625-66.880L36.625-67.177L37.848-67.263L37.848-64.560Q37.973-64.771 38.161-64.921Q38.348-65.071 38.575-65.155Q38.801-65.239 39.047-65.239Q40.215-65.239 40.215-64.161L40.215-62.271Q40.215-62.103 40.385-62.056Q40.555-62.009 40.825-62.009L40.825-61.712L38.969-61.712L38.969-62.009Q39.243-62.009 39.411-62.056Q39.579-62.103 39.579-62.271L39.579-64.146Q39.579-64.528 39.457-64.757Q39.336-64.985 38.985-64.985Q38.672-64.985 38.418-64.823Q38.165-64.661 38.018-64.392Q37.872-64.122 37.872-63.825L37.872-62.271Q37.872-62.103 38.041-62.056Q38.211-62.009 38.481-62.009",[3705],"stroke-width:0.240",[3682,4547,4548],{"transform":4540},[2655,4549],{"d":4550,"fill":3684,"stroke":3684,"className":4551,"style":4545},"M41.668-62.673L41.668-64.864L40.965-64.864L40.965-65.118Q41.321-65.118 41.563-65.351Q41.805-65.583 41.916-65.931Q42.028-66.278 42.028-66.634L42.309-66.634L42.309-65.161L43.485-65.161L43.485-64.864L42.309-64.864L42.309-62.689Q42.309-62.368 42.428-62.140Q42.547-61.911 42.828-61.911Q43.008-61.911 43.125-62.034Q43.242-62.157 43.295-62.337Q43.348-62.517 43.348-62.689L43.348-63.161L43.629-63.161L43.629-62.673Q43.629-62.419 43.524-62.179Q43.418-61.939 43.221-61.786Q43.024-61.634 42.766-61.634Q42.450-61.634 42.198-61.757Q41.946-61.880 41.807-62.114Q41.668-62.349 41.668-62.673",[3705],[3682,4553,4554,4561],{"stroke":3696,"fontSize":4537},[3682,4555,4557],{"transform":4556},"translate(87.767 66.067)",[2655,4558],{"d":4559,"fill":3684,"stroke":3684,"className":4560,"style":4545},"M28.641-61.712L26.661-61.712L26.661-62.009Q26.930-62.009 27.098-62.054Q27.266-62.099 27.266-62.271L27.266-64.407Q27.266-64.622 27.204-64.718Q27.141-64.814 27.024-64.835Q26.907-64.857 26.661-64.857L26.661-65.153L27.829-65.239L27.829-64.454Q27.907-64.665 28.059-64.851Q28.211-65.036 28.411-65.138Q28.610-65.239 28.836-65.239Q29.082-65.239 29.274-65.095Q29.465-64.950 29.465-64.720Q29.465-64.564 29.360-64.454Q29.254-64.345 29.098-64.345Q28.942-64.345 28.832-64.454Q28.723-64.564 28.723-64.720Q28.723-64.880 28.829-64.985Q28.504-64.985 28.290-64.757Q28.075-64.528 27.979-64.189Q27.883-63.849 27.883-63.544L27.883-62.271Q27.883-62.103 28.110-62.056Q28.336-62.009 28.641-62.009L28.641-61.712M29.946-63.407Q29.946-63.911 30.202-64.343Q30.457-64.775 30.893-65.026Q31.329-65.278 31.829-65.278Q32.215-65.278 32.557-65.134Q32.899-64.989 33.161-64.728Q33.422-64.466 33.565-64.130Q33.707-63.794 33.707-63.407Q33.707-62.915 33.444-62.505Q33.180-62.095 32.750-61.864Q32.321-61.634 31.829-61.634Q31.336-61.634 30.903-61.866Q30.469-62.099 30.207-62.507Q29.946-62.915 29.946-63.407M31.829-61.911Q32.286-61.911 32.538-62.134Q32.790-62.357 32.877-62.708Q32.965-63.060 32.965-63.505Q32.965-63.935 32.872-64.273Q32.778-64.610 32.524-64.817Q32.270-65.025 31.829-65.025Q31.180-65.025 30.936-64.608Q30.692-64.192 30.692-63.505Q30.692-63.060 30.780-62.708Q30.868-62.357 31.120-62.134Q31.372-61.911 31.829-61.911M34.817-62.673L34.817-64.864L34.114-64.864L34.114-65.118Q34.469-65.118 34.711-65.351Q34.954-65.583 35.065-65.931Q35.176-66.278 35.176-66.634L35.457-66.634L35.457-65.161L36.633-65.161L36.633-64.864L35.457-64.864L35.457-62.689Q35.457-62.368 35.577-62.140Q35.696-61.911 35.977-61.911Q36.157-61.911 36.274-62.034Q36.391-62.157 36.444-62.337Q36.497-62.517 36.497-62.689L36.497-63.161L36.778-63.161L36.778-62.673Q36.778-62.419 36.672-62.179Q36.567-61.939 36.370-61.786Q36.172-61.634 35.915-61.634Q35.598-61.634 35.346-61.757Q35.094-61.880 34.956-62.114Q34.817-62.349 34.817-62.673M37.594-62.544Q37.594-63.028 37.997-63.323Q38.399-63.618 38.950-63.737Q39.500-63.857 39.993-63.857L39.993-64.146Q39.993-64.372 39.877-64.579Q39.762-64.786 39.565-64.905Q39.368-65.025 39.137-65.025Q38.711-65.025 38.426-64.919Q38.497-64.892 38.543-64.837Q38.590-64.782 38.616-64.712Q38.641-64.642 38.641-64.567Q38.641-64.462 38.590-64.370Q38.540-64.278 38.448-64.228Q38.356-64.177 38.250-64.177Q38.145-64.177 38.053-64.228Q37.961-64.278 37.911-64.370Q37.860-64.462 37.860-64.567Q37.860-64.985 38.249-65.132Q38.637-65.278 39.137-65.278Q39.469-65.278 39.823-65.148Q40.176-65.017 40.405-64.763Q40.633-64.509 40.633-64.161L40.633-62.360Q40.633-62.228 40.706-62.118Q40.778-62.009 40.907-62.009Q41.032-62.009 41.100-62.114Q41.168-62.220 41.168-62.360L41.168-62.872L41.450-62.872L41.450-62.360Q41.450-62.157 41.332-61.999Q41.215-61.841 41.034-61.757Q40.852-61.673 40.649-61.673Q40.418-61.673 40.266-61.845Q40.114-62.017 40.082-62.247Q39.922-61.966 39.614-61.800Q39.305-61.634 38.954-61.634Q38.442-61.634 38.018-61.857Q37.594-62.079 37.594-62.544M38.282-62.544Q38.282-62.259 38.508-62.073Q38.735-61.888 39.028-61.888Q39.274-61.888 39.499-62.005Q39.723-62.122 39.858-62.325Q39.993-62.528 39.993-62.782L39.993-63.614Q39.727-63.614 39.442-63.560Q39.157-63.505 38.885-63.376Q38.614-63.247 38.448-63.040Q38.282-62.833 38.282-62.544M42.368-62.673L42.368-64.864L41.665-64.864L41.665-65.118Q42.020-65.118 42.262-65.351Q42.504-65.583 42.616-65.931Q42.727-66.278 42.727-66.634L43.008-66.634L43.008-65.161L44.184-65.161L44.184-64.864L43.008-64.864L43.008-62.689Q43.008-62.368 43.127-62.140Q43.247-61.911 43.528-61.911Q43.707-61.911 43.825-62.034Q43.942-62.157 43.995-62.337Q44.047-62.517 44.047-62.689L44.047-63.161L44.329-63.161L44.329-62.673Q44.329-62.419 44.223-62.179Q44.118-61.939 43.920-61.786Q43.723-61.634 43.465-61.634Q43.149-61.634 42.897-61.757Q42.645-61.880 42.506-62.114Q42.368-62.349 42.368-62.673M45.047-63.466Q45.047-63.946 45.280-64.362Q45.512-64.778 45.922-65.028Q46.332-65.278 46.809-65.278Q47.540-65.278 47.938-64.837Q48.336-64.396 48.336-63.665Q48.336-63.560 48.243-63.536L45.793-63.536L45.793-63.466Q45.793-63.056 45.915-62.700Q46.036-62.345 46.307-62.128Q46.579-61.911 47.008-61.911Q47.372-61.911 47.668-62.140Q47.965-62.368 48.067-62.720Q48.075-62.767 48.161-62.782L48.243-62.782Q48.336-62.755 48.336-62.673Q48.336-62.665 48.329-62.634Q48.266-62.407 48.127-62.224Q47.989-62.040 47.797-61.907Q47.606-61.775 47.387-61.704Q47.168-61.634 46.930-61.634Q46.559-61.634 46.221-61.771Q45.883-61.907 45.616-62.159Q45.348-62.411 45.198-62.751Q45.047-63.091 45.047-63.466M45.801-63.775L47.762-63.775Q47.762-64.079 47.661-64.370Q47.559-64.661 47.342-64.843Q47.125-65.025 46.809-65.025Q46.508-65.025 46.278-64.837Q46.047-64.650 45.924-64.358Q45.801-64.067 45.801-63.775",[3705],[3682,4562,4563],{"transform":4556},[2655,4564],{"d":4565,"fill":3684,"stroke":3684,"className":4566,"style":4545},"M51.965-61.634L51.864-61.634Q51.774-61.634 51.774-61.728Q51.774-61.759 51.782-61.775Q52.067-62.251 52.450-62.624Q52.832-62.997 53.498-63.554Q54.164-64.110 54.477-64.431Q54.317-64.431 54.117-64.476Q53.918-64.521 53.719-64.564Q53.520-64.607 53.360-64.607Q53.137-64.607 52.938-64.530Q52.739-64.454 52.696-64.278Q52.660-64.208 52.606-64.208L52.500-64.208Q52.465-64.208 52.440-64.237Q52.414-64.267 52.414-64.306Q52.414-64.314 52.422-64.337Q52.512-64.704 52.809-64.972Q53.106-65.239 53.469-65.239Q53.633-65.239 53.750-65.171Q53.867-65.103 54.030-64.954Q54.192-64.806 54.282-64.747Q54.371-64.689 54.500-64.689Q54.653-64.689 54.764-64.794Q54.875-64.900 54.989-65.064Q55.102-65.228 55.149-65.239L55.254-65.239Q55.297-65.239 55.319-65.212Q55.340-65.185 55.340-65.146Q55.340-65.110 55.332-65.095Q55.098-64.716 54.774-64.374Q54.450-64.032 54.051-63.694Q53.653-63.357 53.260-63.021Q52.867-62.685 52.629-62.431Q52.668-62.439 52.766-62.439Q52.926-62.439 53.127-62.396Q53.328-62.353 53.530-62.308Q53.731-62.263 53.895-62.263Q54.211-62.263 54.510-62.437Q54.809-62.610 54.879-62.903Q54.895-62.978 54.957-62.978L55.063-62.978Q55.086-62.978 55.106-62.962Q55.125-62.946 55.137-62.923Q55.149-62.900 55.149-62.880L55.149-62.849Q55.071-62.540 54.871-62.261Q54.672-61.982 54.387-61.808Q54.102-61.634 53.782-61.634Q53.625-61.634 53.506-61.702Q53.387-61.771 53.233-61.913Q53.078-62.056 52.979-62.120Q52.879-62.185 52.750-62.185Q52.551-62.185 52.403-62.073Q52.254-61.962 52.123-61.802Q51.992-61.642 51.965-61.634",[3705],[3682,4568,4569,4572],{"fill":3688,"stroke":3689,"style":3690},[2655,4570],{"d":4571},"M241.213-61.712c0-5.5-4.459-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",[3682,4573,4575],{"transform":4574},"translate(202.229 1.18)",[2655,4576],{"d":4440,"fill":3684,"stroke":3684,"className":4577,"style":4431},[3705],[2655,4579],{"fill":3696,"d":4580},"M201.38-27.568c0-5.5-4.46-9.959-9.96-9.959s-9.958 4.459-9.958 9.959 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.96 0",[3682,4582,4584],{"transform":4583},"translate(162.168 36.296)",[2655,4585],{"d":4450,"fill":3684,"stroke":3684,"className":4586,"style":4431},[3705],[2655,4588],{"fill":3696,"d":4589},"M223.238-54.84 199.133-34.18M171.504-9.27l-12.13 21.012h24.26Z",[3682,4591,4592,4598],{"stroke":3696},[3682,4593,4595],{"transform":4594},"translate(139.944 70.953)",[2655,4596],{"d":4462,"fill":3684,"stroke":3684,"className":4597,"style":4431},[3705],[3682,4599,4600],{"transform":4594},[2655,4601],{"d":4468,"fill":3684,"stroke":3684,"className":4602,"style":3706},[3705],[2655,4604],{"fill":3696,"d":4605},"M186.302-18.794 176.218-1.506M211.338-9.27l-12.13 21.012h24.26Z",[3682,4607,4608,4614],{"stroke":3696},[3682,4609,4611],{"transform":4610},"translate(179.778 70.953)",[2655,4612],{"d":4462,"fill":3684,"stroke":3684,"className":4613,"style":4431},[3705],[3682,4615,4616],{"transform":4610},[2655,4617],{"d":4485,"fill":3684,"stroke":3684,"className":4618,"style":3706},[3705],[2655,4620],{"fill":3696,"d":4621},"m196.54-18.794 10.084 17.288M281.047-27.568c0-5.5-4.459-9.959-9.959-9.959s-9.958 4.459-9.958 9.959 4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[3682,4623,4625],{"transform":4624},"translate(242.148 36.296)",[2655,4626],{"d":4429,"fill":3684,"stroke":3684,"className":4627,"style":4431},[3705],[2655,4629],{"fill":3696,"d":4630},"m239.27-54.84 24.106 20.661M251.171-9.27l-12.13 21.012h24.261Z",[3682,4632,4633,4639],{"stroke":3696},[3682,4634,4636],{"transform":4635},"translate(219.612 70.953)",[2655,4637],{"d":4462,"fill":3684,"stroke":3684,"className":4638,"style":4431},[3705],[3682,4640,4641],{"transform":4635},[2655,4642],{"d":4502,"fill":3684,"stroke":3684,"className":4643,"style":3706},[3705],[2655,4645],{"fill":3696,"d":4646},"M265.97-18.794 255.885-1.506M291.005-9.27l-12.13 21.012h24.26Z",[3682,4648,4649,4655],{"stroke":3696},[3682,4650,4652],{"transform":4651},"translate(259.446 70.953)",[2655,4653],{"d":4462,"fill":3684,"stroke":3684,"className":4654,"style":4431},[3705],[3682,4656,4657],{"transform":4651},[2655,4658],{"d":4519,"fill":3684,"stroke":3684,"className":4659,"style":3706},[3705],[2655,4661],{"fill":3696,"d":4662},"m276.207-18.794 10.085 17.288",[3826,4664,4666,4667],{"className":4665},[3829],"The LL case — a left-left-heavy subtree fixed by one right rotation at ",[390,4668,4670],{"className":4669},[393],[390,4671,4673],{"className":4672,"ariaHidden":398},[397],[390,4674,4676,4679],{"className":4675},[402],[390,4677],{"className":4678,"style":588},[406],[390,4680,4053],{"className":4681,"style":4052},[411,412],[381,4683,4684,4685,4700,4701,4231,4716,4250,4734,4749,4750,4752,4753,1067,4768,4783,4784,4799,4800,4815,4816,4831,4832,4847,4848,4863],{},"The LR case cannot be fixed by a single rotation: the heavy path zig-zags, so we\nfirst rotate the child to straighten it into an LL shape, then finish with the\nright rotation at ",[390,4686,4688],{"className":4687},[393],[390,4689,4691],{"className":4690,"ariaHidden":398},[397],[390,4692,4694,4697],{"className":4693},[402],[390,4695],{"className":4696,"style":588},[406],[390,4698,4053],{"className":4699,"style":4052},[411,412],". Here ",[390,4702,4704],{"className":4703},[393],[390,4705,4707],{"className":4706,"ariaHidden":398},[397],[390,4708,4710,4713],{"className":4709},[402],[390,4711],{"className":4712,"style":588},[406],[390,4714,4053],{"className":4715,"style":4052},[411,412],[390,4717,4719],{"className":4718},[393],[390,4720,4722],{"className":4721,"ariaHidden":398},[397],[390,4723,4725,4728,4731],{"className":4724},[402],[390,4726],{"className":4727,"style":757},[406],[390,4729,761],{"className":4730},[411],[390,4732,1066],{"className":4733},[411],[390,4735,4737],{"className":4736},[393],[390,4738,4740],{"className":4739,"ariaHidden":398},[397],[390,4741,4743,4746],{"className":4742},[402],[390,4744],{"className":4745,"style":569},[406],[390,4747,574],{"className":4748,"style":573},[411,412]," leans\n",[553,4751,831],{},", and the offending grandchild ",[390,4754,4756],{"className":4755},[393],[390,4757,4759],{"className":4758,"ariaHidden":398},[397],[390,4760,4762,4765],{"className":4761},[402],[390,4763],{"className":4764,"style":588},[406],[390,4766,592],{"className":4767},[411,412],[390,4769,4771],{"className":4770},[393],[390,4772,4774],{"className":4773,"ariaHidden":398},[397],[390,4775,4777,4780],{"className":4776},[402],[390,4778],{"className":4779,"style":569},[406],[390,4781,574],{"className":4782,"style":573},[411,412],"'s right child. A left rotation\nat ",[390,4785,4787],{"className":4786},[393],[390,4788,4790],{"className":4789,"ariaHidden":398},[397],[390,4791,4793,4796],{"className":4792},[402],[390,4794],{"className":4795,"style":569},[406],[390,4797,574],{"className":4798,"style":573},[411,412]," lifts ",[390,4801,4803],{"className":4802},[393],[390,4804,4806],{"className":4805,"ariaHidden":398},[397],[390,4807,4809,4812],{"className":4808},[402],[390,4810],{"className":4811,"style":588},[406],[390,4813,592],{"className":4814},[411,412]," above ",[390,4817,4819],{"className":4818},[393],[390,4820,4822],{"className":4821,"ariaHidden":398},[397],[390,4823,4825,4828],{"className":4824},[402],[390,4826],{"className":4827,"style":569},[406],[390,4829,574],{"className":4830,"style":573},[411,412],"; the subtree is now left-left-heavy, and a right\nrotation at ",[390,4833,4835],{"className":4834},[393],[390,4836,4838],{"className":4837,"ariaHidden":398},[397],[390,4839,4841,4844],{"className":4840},[402],[390,4842],{"className":4843,"style":588},[406],[390,4845,4053],{"className":4846,"style":4052},[411,412]," completes the repair, leaving ",[390,4849,4851],{"className":4850},[393],[390,4852,4854],{"className":4853,"ariaHidden":398},[397],[390,4855,4857,4860],{"className":4856},[402],[390,4858],{"className":4859,"style":588},[406],[390,4861,592],{"className":4862},[411,412]," as the new root.",[3671,4865,4867,5217],{"className":4866},[3674,3675],[2647,4868,4872],{"xmlns":2649,"width":4869,"height":4870,"viewBox":4871},"569.507","154.425","-75 -75 427.130 115.819",[3682,4873,4874,4877,4883,4886,4893,4896,4911,4914,4921,4924,4938,4941,4955,4958,4972,4975,4998,5001,5007,5010,5016,5019,5025,5028,5041,5044,5057,5060,5073,5076,5089,5092,5121,5132,5135,5141,5144,5157,5160,5173,5176,5182,5185,5198,5201,5214],{"stroke":3684,"style":3685},[2655,4875],{"fill":3696,"d":4876},"M3.633-61.712c0-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",[3682,4878,4879],{"transform":4426},[2655,4880],{"d":4881,"fill":3684,"stroke":3684,"className":4882,"style":4431},"M-5.716-61.600L-5.838-61.600Q-5.916-61.600-5.916-61.692Q-5.916-61.741-5.896-61.761Q-5.628-62.225-5.249-62.647Q-4.871-63.069-4.390-63.502Q-3.909-63.934-3.423-64.368Q-2.937-64.803-2.635-65.140L-2.674-65.140Q-2.893-65.140-3.318-65.281Q-3.743-65.423-3.987-65.423Q-4.251-65.423-4.500-65.308Q-4.749-65.193-4.817-64.954Q-4.832-64.881-4.895-64.881L-5.017-64.881Q-5.096-64.881-5.096-64.983L-5.096-65.013Q-5.017-65.306-4.839-65.560Q-4.661-65.814-4.400-65.972Q-4.138-66.131-3.855-66.131Q-3.655-66.131-3.523-66.041Q-3.391-65.950-3.216-65.760Q-3.040-65.569-2.930-65.486Q-2.820-65.403-2.654-65.403Q-2.434-65.403-2.261-65.604Q-2.088-65.804-1.917-66.102Q-1.888-66.131-1.844-66.131L-1.726-66.131Q-1.692-66.131-1.670-66.107Q-1.648-66.082-1.648-66.043Q-1.648-66.009-1.668-65.980Q-1.936-65.516-2.295-65.113Q-2.654-64.710-3.233-64.190Q-3.811-63.670-4.209-63.311Q-4.607-62.952-4.954-62.571Q-4.876-62.591-4.744-62.591Q-4.500-62.591-4.077-62.452Q-3.655-62.313-3.426-62.313Q-3.177-62.313-2.923-62.420Q-2.669-62.527-2.483-62.723Q-2.298-62.918-2.234-63.172Q-2.210-63.240-2.156-63.240L-2.034-63.240Q-1.995-63.240-1.971-63.209Q-1.946-63.177-1.946-63.143Q-1.946-63.133-1.956-63.113Q-2.049-62.733-2.278-62.388Q-2.508-62.044-2.842-61.822Q-3.177-61.600-3.557-61.600Q-3.748-61.600-3.880-61.688Q-4.012-61.775-4.190-61.968Q-4.368-62.161-4.480-62.247Q-4.593-62.332-4.754-62.332Q-5.252-62.332-5.647-61.634Q-5.681-61.600-5.716-61.600",[3705],[2655,4884],{"fill":3696,"d":4885},"M-27.665-30.414c0-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",[3682,4887,4889],{"transform":4888},"translate(-33.929 32.479)",[2655,4890],{"d":4891,"fill":3684,"stroke":3684,"className":4892,"style":4431},"M-5.486-60.281Q-5.276-59.920-4.754-59.920Q-4.280-59.920-3.933-60.252Q-3.587-60.584-3.374-61.055Q-3.162-61.526-3.045-62.020Q-3.489-61.600-4.007-61.600Q-4.402-61.600-4.680-61.736Q-4.959-61.873-5.113-62.144Q-5.266-62.415-5.266-62.801Q-5.266-63.128-5.179-63.472Q-5.091-63.816-4.932-64.239Q-4.773-64.661-4.656-64.974Q-4.524-65.340-4.524-65.574Q-4.524-65.872-4.744-65.872Q-5.139-65.872-5.396-65.464Q-5.652-65.057-5.774-64.554Q-5.794-64.490-5.857-64.490L-5.974-64.490Q-6.057-64.490-6.057-64.583L-6.057-64.612Q-5.896-65.208-5.564-65.670Q-5.232-66.131-4.724-66.131Q-4.368-66.131-4.121-65.897Q-3.875-65.662-3.875-65.301Q-3.875-65.115-3.958-64.910Q-4.002-64.788-4.158-64.378Q-4.314-63.968-4.397-63.699Q-4.480-63.431-4.534-63.172Q-4.588-62.913-4.588-62.654Q-4.588-62.322-4.446-62.093Q-4.305-61.863-3.997-61.863Q-3.377-61.863-2.884-62.620L-2.127-65.701Q-2.093-65.833-1.971-65.928Q-1.848-66.024-1.707-66.024Q-1.585-66.024-1.494-65.945Q-1.404-65.867-1.404-65.740Q-1.404-65.682-1.414-65.662L-2.405-61.683Q-2.537-61.170-2.888-60.701Q-3.240-60.233-3.736-59.947Q-4.231-59.661-4.768-59.661Q-5.027-59.661-5.281-59.761Q-5.535-59.861-5.691-60.062Q-5.847-60.262-5.847-60.530Q-5.847-60.804-5.686-61.004Q-5.525-61.204-5.257-61.204Q-5.096-61.204-4.986-61.104Q-4.876-61.004-4.876-60.843Q-4.876-60.613-5.047-60.442Q-5.218-60.272-5.447-60.272Q-5.457-60.276-5.467-60.279Q-5.476-60.281-5.486-60.281",[3705],[2655,4894],{"fill":3696,"d":4895},"m-13.509-54.528-16.932 16.931M-53.273-14.96-65.403 6.05h24.26Z",[3682,4897,4898,4905],{"stroke":3696},[3682,4899,4901],{"transform":4900},"translate(-52.112 65.263)",[2655,4902],{"d":4903,"fill":3684,"stroke":3684,"className":4904,"style":4431},"M-5.867-61.844Q-5.862-61.868-5.845-61.932Q-5.828-61.995-5.801-62.029Q-5.774-62.064-5.725-62.064Q-4.866-62.064-4.588-62.112Q-4.319-62.181-4.265-62.400L-2.898-67.894Q-2.854-68.016-2.854-68.113Q-2.854-68.191-3.206-68.191L-3.787-68.191Q-4.456-68.191-4.820-67.986Q-5.183-67.781-5.354-67.444Q-5.525-67.108-5.794-66.341Q-5.828-66.253-5.896-66.253L-5.984-66.253Q-6.087-66.253-6.087-66.380L-5.374-68.450Q-5.354-68.543-5.276-68.543L0.632-68.543Q0.735-68.543 0.735-68.411L0.403-66.341Q0.403-66.312 0.368-66.282Q0.334-66.253 0.305-66.253L0.212-66.253Q0.114-66.253 0.114-66.380Q0.222-67.088 0.222-67.381Q0.222-67.733 0.075-67.913Q-0.071-68.094-0.305-68.143Q-0.540-68.191-0.916-68.191L-1.507-68.191Q-1.775-68.191-1.868-68.143Q-1.961-68.094-2.024-67.850L-3.396-62.361Q-3.401-62.342-3.404-62.322Q-3.406-62.303-3.416-62.274Q-3.416-62.147-3.264-62.112Q-3.006-62.064-2.156-62.064Q-2.058-62.064-2.058-61.932Q-2.093-61.790-2.112-61.751Q-2.132-61.712-2.224-61.712L-5.764-61.712Q-5.867-61.712-5.867-61.844",[3705],[3682,4906,4907],{"transform":4900},[2655,4908],{"d":4909,"fill":3684,"stroke":3684,"className":4910,"style":3706},"M2.844-60.212L0.314-60.212L0.314-60.492Q1.282-60.492 1.282-60.701L1.282-64.320Q0.889-64.132 0.267-64.132L0.267-64.413Q0.684-64.413 1.048-64.514Q1.412-64.614 1.668-64.860L1.794-64.860Q1.859-64.843 1.876-64.775L1.876-60.701Q1.876-60.492 2.844-60.492",[3705],[2655,4912],{"fill":3696,"d":4913},"M-42.166-21.328-48.92-7.821M-12.016.884c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.459-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[3682,4915,4917],{"transform":4916},"translate(-18.507 64.749)",[2655,4918],{"d":4919,"fill":3684,"stroke":3684,"className":4920,"style":4431},"M-5.545-62Q-5.369-61.863-5.047-61.863Q-4.734-61.863-4.495-62.164Q-4.256-62.464-4.168-62.820L-3.714-64.593Q-3.606-65.076-3.606-65.252Q-3.606-65.501-3.745-65.687Q-3.885-65.872-4.134-65.872Q-4.451-65.872-4.729-65.674Q-5.008-65.477-5.198-65.171Q-5.388-64.866-5.467-64.554Q-5.486-64.490-5.545-64.490L-5.667-64.490Q-5.745-64.490-5.745-64.583L-5.745-64.612Q-5.647-64.983-5.413-65.337Q-5.179-65.691-4.839-65.911Q-4.500-66.131-4.114-66.131Q-3.748-66.131-3.452-65.936Q-3.157-65.740-3.035-65.403Q-2.864-65.711-2.598-65.921Q-2.332-66.131-2.014-66.131Q-1.800-66.131-1.575-66.055Q-1.350-65.980-1.209-65.823Q-1.067-65.667-1.067-65.433Q-1.067-65.179-1.231-64.996Q-1.394-64.813-1.648-64.813Q-1.809-64.813-1.917-64.915Q-2.024-65.018-2.024-65.174Q-2.024-65.384-1.880-65.543Q-1.736-65.701-1.536-65.731Q-1.717-65.872-2.034-65.872Q-2.356-65.872-2.593-65.574Q-2.830-65.276-2.928-64.910L-3.367-63.143Q-3.474-62.742-3.474-62.483Q-3.474-62.230-3.330-62.046Q-3.186-61.863-2.947-61.863Q-2.478-61.863-2.110-62.276Q-1.741-62.689-1.624-63.182Q-1.604-63.240-1.546-63.240L-1.424-63.240Q-1.385-63.240-1.360-63.213Q-1.336-63.187-1.336-63.152Q-1.336-63.143-1.346-63.123Q-1.487-62.527-1.941-62.064Q-2.395-61.600-2.967-61.600Q-3.333-61.600-3.628-61.797Q-3.924-61.995-4.046-62.332Q-4.202-62.039-4.478-61.819Q-4.754-61.600-5.066-61.600Q-5.281-61.600-5.508-61.675Q-5.735-61.751-5.877-61.907Q-6.018-62.064-6.018-62.303Q-6.018-62.537-5.855-62.730Q-5.691-62.923-5.447-62.923Q-5.281-62.923-5.169-62.823Q-5.056-62.723-5.056-62.562Q-5.056-62.352-5.196-62.195Q-5.335-62.039-5.545-62",[3705],[2655,4922],{"fill":3696,"d":4923},"m-33.081-21.328 6.564 13.127M-37.624 16.338l-12.13 21.011h24.26Z",[3682,4925,4926,4932],{"stroke":3696},[3682,4927,4929],{"transform":4928},"translate(-36.463 96.56)",[2655,4930],{"d":4903,"fill":3684,"stroke":3684,"className":4931,"style":4431},[3705],[3682,4933,4934],{"transform":4928},[2655,4935],{"d":4936,"fill":3684,"stroke":3684,"className":4937,"style":3706},"M2.844-60.212L-0.041-60.212L-0.041-60.414Q-0.041-60.444-0.014-60.472L1.234-61.689Q1.306-61.764 1.348-61.806Q1.391-61.849 1.470-61.928Q1.883-62.341 2.114-62.699Q2.345-63.056 2.345-63.480Q2.345-63.712 2.266-63.915Q2.187-64.119 2.046-64.269Q1.904-64.420 1.709-64.500Q1.514-64.580 1.282-64.580Q0.971-64.580 0.713-64.421Q0.455-64.262 0.325-63.985L0.345-63.985Q0.513-63.985 0.620-63.874Q0.728-63.763 0.728-63.599Q0.728-63.442 0.619-63.329Q0.509-63.216 0.345-63.216Q0.185-63.216 0.072-63.329Q-0.041-63.442-0.041-63.599Q-0.041-63.975 0.167-64.262Q0.376-64.549 0.711-64.705Q1.046-64.860 1.401-64.860Q1.825-64.860 2.205-64.702Q2.584-64.543 2.818-64.226Q3.052-63.910 3.052-63.480Q3.052-63.169 2.912-62.900Q2.772-62.632 2.567-62.427Q2.362-62.222 1.999-61.940Q1.637-61.658 1.528-61.562L0.673-60.834L1.316-60.834Q1.579-60.834 1.868-60.836Q2.157-60.837 2.375-60.846Q2.594-60.855 2.611-60.872Q2.673-60.937 2.710-61.104Q2.748-61.272 2.786-61.514L3.052-61.514",[3705],[2655,4939],{"fill":3696,"d":4940},"m-26.517 9.97-6.754 13.507M-6.326 16.338l-12.13 21.011h24.26Z",[3682,4942,4943,4949],{"stroke":3696},[3682,4944,4946],{"transform":4945},"translate(-5.165 96.56)",[2655,4947],{"d":4903,"fill":3684,"stroke":3684,"className":4948,"style":4431},[3705],[3682,4950,4951],{"transform":4945},[2655,4952],{"d":4953,"fill":3684,"stroke":3684,"className":4954,"style":3706},"M0.314-60.759Q0.434-60.602 0.625-60.503Q0.817-60.403 1.032-60.364Q1.247-60.325 1.470-60.325Q1.767-60.325 1.962-60.480Q2.157-60.636 2.247-60.890Q2.338-61.145 2.338-61.429Q2.338-61.723 2.246-61.974Q2.153-62.225 1.955-62.381Q1.757-62.536 1.463-62.536L0.947-62.536Q0.919-62.536 0.894-62.562Q0.868-62.587 0.868-62.611L0.868-62.683Q0.868-62.714 0.894-62.736Q0.919-62.758 0.947-62.758L1.388-62.789Q1.750-62.789 1.970-63.146Q2.191-63.504 2.191-63.893Q2.191-64.221 1.996-64.425Q1.801-64.628 1.470-64.628Q1.183-64.628 0.930-64.544Q0.677-64.461 0.513-64.273Q0.660-64.273 0.760-64.158Q0.861-64.044 0.861-63.893Q0.861-63.743 0.755-63.633Q0.649-63.524 0.492-63.524Q0.331-63.524 0.222-63.633Q0.113-63.743 0.113-63.893Q0.113-64.218 0.321-64.437Q0.530-64.655 0.846-64.758Q1.162-64.860 1.470-64.860Q1.788-64.860 2.116-64.756Q2.444-64.652 2.671-64.430Q2.898-64.208 2.898-63.893Q2.898-63.459 2.611-63.134Q2.324-62.810 1.890-62.663Q2.201-62.598 2.481-62.432Q2.762-62.266 2.939-62.008Q3.117-61.750 3.117-61.429Q3.117-61.019 2.873-60.709Q2.628-60.400 2.247-60.236Q1.866-60.072 1.470-60.072Q1.101-60.072 0.743-60.185Q0.386-60.297 0.142-60.547Q-0.103-60.796-0.103-61.166Q-0.103-61.337 0.014-61.449Q0.130-61.562 0.301-61.562Q0.410-61.562 0.501-61.511Q0.591-61.460 0.646-61.367Q0.701-61.275 0.701-61.166Q0.701-60.998 0.588-60.879Q0.475-60.759 0.314-60.759",[3705],[2655,4956],{"fill":3696,"d":4957},"m-17.432 9.97 6.754 13.507M24.972-46.258l-12.13 21.011h24.26Z",[3682,4959,4960,4966],{"stroke":3696},[3682,4961,4963],{"transform":4962},"translate(26.133 33.965)",[2655,4964],{"d":4903,"fill":3684,"stroke":3684,"className":4965,"style":4431},[3705],[3682,4967,4968],{"transform":4962},[2655,4969],{"d":4970,"fill":3684,"stroke":3684,"className":4971,"style":3706},"M1.835-61.360L-0.209-61.360L-0.209-61.641L2.122-64.813Q2.157-64.860 2.222-64.860L2.358-64.860Q2.403-64.860 2.430-64.833Q2.457-64.806 2.457-64.761L2.457-61.641L3.220-61.641L3.220-61.360L2.457-61.360L2.457-60.701Q2.457-60.492 3.213-60.492L3.213-60.212L1.080-60.212L1.080-60.492Q1.835-60.492 1.835-60.701L1.835-61.360M1.883-64.085L0.092-61.641L1.883-61.641",[3705],[2655,4973],{"fill":3696,"d":4974},"m.857-54.529 18.17 18.169",[3682,4976,4977,4980,4983],{"style":4526},[2655,4978],{"fill":3696,"d":4979},"M59.116-16.187h39.033",[2655,4981],{"fill":3696,"d":4982,"style":4533},"M95.99-19.31c.467 1.874 1.51 2.759 2.56 3.123-1.05.364-2.093 1.249-2.56 3.123",[3682,4984,4985,4992],{"stroke":3696,"fontSize":4537},[3682,4986,4988],{"transform":4987},"translate(75.676 36.84)",[2655,4989],{"d":4990,"fill":3684,"stroke":3684,"className":4991,"style":4545},"M-4.174-61.712L-6.006-61.712L-6.006-62.009Q-5.732-62.009-5.564-62.056Q-5.396-62.103-5.396-62.271L-5.396-66.431Q-5.396-66.646-5.459-66.741Q-5.521-66.837-5.640-66.858Q-5.760-66.880-6.006-66.880L-6.006-67.177L-4.783-67.263L-4.783-62.271Q-4.783-62.103-4.615-62.056Q-4.447-62.009-4.174-62.009L-4.174-61.712M-3.728-63.466Q-3.728-63.946-3.496-64.362Q-3.263-64.778-2.853-65.028Q-2.443-65.278-1.967-65.278Q-1.236-65.278-0.838-64.837Q-0.439-64.396-0.439-63.665Q-0.439-63.560-0.533-63.536L-2.982-63.536L-2.982-63.466Q-2.982-63.056-2.861-62.700Q-2.740-62.345-2.469-62.128Q-2.197-61.911-1.767-61.911Q-1.404-61.911-1.107-62.140Q-0.810-62.368-0.709-62.720Q-0.701-62.767-0.615-62.782L-0.533-62.782Q-0.439-62.755-0.439-62.673Q-0.439-62.665-0.447-62.634Q-0.510-62.407-0.648-62.224Q-0.787-62.040-0.978-61.907Q-1.170-61.775-1.388-61.704Q-1.607-61.634-1.846-61.634Q-2.217-61.634-2.555-61.771Q-2.892-61.907-3.160-62.159Q-3.428-62.411-3.578-62.751Q-3.728-63.091-3.728-63.466M-2.974-63.775L-1.013-63.775Q-1.013-64.079-1.115-64.370Q-1.217-64.661-1.433-64.843Q-1.650-65.025-1.967-65.025Q-2.267-65.025-2.498-64.837Q-2.728-64.650-2.851-64.358Q-2.974-64.067-2.974-63.775M2.115-61.712L0.131-61.712L0.131-62.009Q0.404-62.009 0.572-62.056Q0.740-62.103 0.740-62.271L0.740-64.864L0.100-64.864L0.100-65.161L0.740-65.161L0.740-66.095Q0.740-66.360 0.858-66.597Q0.975-66.833 1.168-66.997Q1.362-67.161 1.610-67.253Q1.858-67.345 2.123-67.345Q2.408-67.345 2.633-67.187Q2.858-67.028 2.858-66.751Q2.858-66.595 2.752-66.485Q2.647-66.376 2.483-66.376Q2.326-66.376 2.217-66.485Q2.108-66.595 2.108-66.751Q2.108-66.958 2.268-67.064Q2.170-67.087 2.076-67.087Q1.846-67.087 1.674-66.931Q1.502-66.775 1.416-66.538Q1.330-66.302 1.330-66.079L1.330-65.161L2.299-65.161L2.299-64.864L1.354-64.864L1.354-62.271Q1.354-62.103 1.580-62.056Q1.807-62.009 2.115-62.009L2.115-61.712M3.268-62.673L3.268-64.864L2.565-64.864L2.565-65.118Q2.920-65.118 3.162-65.351Q3.404-65.583 3.516-65.931Q3.627-66.278 3.627-66.634L3.908-66.634L3.908-65.161L5.084-65.161L5.084-64.864L3.908-64.864L3.908-62.689Q3.908-62.368 4.028-62.140Q4.147-61.911 4.428-61.911Q4.608-61.911 4.725-62.034Q4.842-62.157 4.895-62.337Q4.947-62.517 4.947-62.689L4.947-63.161L5.229-63.161L5.229-62.673Q5.229-62.419 5.123-62.179Q5.018-61.939 4.820-61.786Q4.623-61.634 4.365-61.634Q4.049-61.634 3.797-61.757Q3.545-61.880 3.406-62.114Q3.268-62.349 3.268-62.673",[3705],[3682,4993,4994],{"transform":4987},[2655,4995],{"d":4996,"fill":3684,"stroke":3684,"className":4997,"style":4545},"M9.029-60.775Q9.029-60.993 9.162-61.157Q9.295-61.321 9.510-61.321Q9.643-61.321 9.736-61.237Q9.830-61.153 9.830-61.017Q9.830-60.837 9.703-60.694Q9.576-60.552 9.397-60.552Q9.580-60.337 9.963-60.337Q10.514-60.337 10.865-60.829Q11.217-61.321 11.373-61.958Q11.022-61.634 10.580-61.634Q10.256-61.634 10.006-61.743Q9.756-61.853 9.617-62.077Q9.479-62.302 9.479-62.634Q9.479-62.884 9.553-63.171Q9.627-63.458 9.764-63.810Q9.901-64.161 9.963-64.329Q10.053-64.552 10.053-64.735Q10.053-64.985 9.885-64.985Q9.569-64.985 9.360-64.679Q9.151-64.372 9.045-63.985Q9.033-63.911 8.963-63.911L8.861-63.911Q8.826-63.911 8.799-63.946Q8.772-63.982 8.772-64.009L8.772-64.040Q8.897-64.501 9.194-64.870Q9.490-65.239 9.901-65.239Q10.096-65.239 10.270-65.155Q10.444-65.071 10.545-64.919Q10.647-64.767 10.647-64.560Q10.647-64.407 10.588-64.271Q10.498-64.040 10.397-63.775Q10.295-63.509 10.238-63.327Q10.182-63.146 10.137-62.931Q10.092-62.716 10.092-62.521Q10.092-62.247 10.215-62.067Q10.338-61.888 10.596-61.888Q11.115-61.888 11.518-62.528L12.100-64.872Q12.139-64.997 12.242-65.079Q12.346-65.161 12.471-65.161Q12.580-65.161 12.660-65.087Q12.740-65.013 12.740-64.903Q12.740-64.857 12.733-64.833L11.947-61.681Q11.838-61.259 11.537-60.888Q11.236-60.517 10.817-60.298Q10.397-60.079 9.955-60.079Q9.596-60.079 9.313-60.257Q9.029-60.435 9.029-60.775",[3705],[2655,4999],{"fill":3696,"d":5000},"M151.587-61.712c0-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",[3682,5002,5004],{"transform":5003},"translate(145.41 2.153)",[2655,5005],{"d":4881,"fill":3684,"stroke":3684,"className":5006,"style":4431},[3705],[2655,5008],{"fill":3696,"d":5009},"M120.289-30.414c0-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",[3682,5011,5013],{"transform":5012},"translate(113.799 33.45)",[2655,5014],{"d":4919,"fill":3684,"stroke":3684,"className":5015,"style":4431},[3705],[2655,5017],{"fill":3696,"d":5018},"m134.445-54.528-16.932 16.931M104.64.884c0-5.5-4.459-9.958-9.959-9.958S84.723-4.615 84.723.884s4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[3682,5020,5022],{"transform":5021},"translate(98.376 63.777)",[2655,5023],{"d":4891,"fill":3684,"stroke":3684,"className":5024,"style":4431},[3705],[2655,5026],{"fill":3696,"d":5027},"M105.788-21.328 99.224-8.201M79.032 16.338l-12.13 21.011h24.26Z",[3682,5029,5030,5036],{"stroke":3696},[3682,5031,5033],{"transform":5032},"translate(80.193 96.56)",[2655,5034],{"d":4903,"fill":3684,"stroke":3684,"className":5035,"style":4431},[3705],[3682,5037,5038],{"transform":5032},[2655,5039],{"d":4909,"fill":3684,"stroke":3684,"className":5040,"style":3706},[3705],[2655,5042],{"fill":3696,"d":5043},"m90.139 9.97-6.754 13.507M110.33 16.338 98.2 37.349h24.26Z",[3682,5045,5046,5052],{"stroke":3696},[3682,5047,5049],{"transform":5048},"translate(111.491 96.56)",[2655,5050],{"d":4903,"fill":3684,"stroke":3684,"className":5051,"style":4431},[3705],[3682,5053,5054],{"transform":5048},[2655,5055],{"d":4936,"fill":3684,"stroke":3684,"className":5056,"style":3706},[3705],[2655,5058],{"fill":3696,"d":5059},"m99.224 9.97 6.754 13.507M125.98-14.96 113.848 6.05h24.26Z",[3682,5061,5062,5068],{"stroke":3696},[3682,5063,5065],{"transform":5064},"translate(127.14 65.263)",[2655,5066],{"d":4903,"fill":3684,"stroke":3684,"className":5067,"style":4431},[3705],[3682,5069,5070],{"transform":5064},[2655,5071],{"d":4953,"fill":3684,"stroke":3684,"className":5072,"style":3706},[3705],[2655,5074],{"fill":3696,"d":5075},"m114.873-21.328 6.754 13.507M172.926-46.258l-12.13 21.011h24.26Z",[3682,5077,5078,5084],{"stroke":3696},[3682,5079,5081],{"transform":5080},"translate(174.087 33.965)",[2655,5082],{"d":4903,"fill":3684,"stroke":3684,"className":5083,"style":4431},[3705],[3682,5085,5086],{"transform":5080},[2655,5087],{"d":4970,"fill":3684,"stroke":3684,"className":5088,"style":3706},[3705],[2655,5090],{"fill":3696,"d":5091},"m148.811-54.529 18.17 18.169",[3682,5093,5094,5097,5100],{"style":4526},[2655,5095],{"fill":3696,"d":5096},"M207.07-16.187h39.033",[2655,5098],{"fill":3696,"d":5099,"style":4533},"M243.943-19.31c.468 1.874 1.51 2.759 2.56 3.123-1.05.364-2.092 1.249-2.56 3.123",[3682,5101,5102,5109,5115],{"stroke":3696,"fontSize":4537},[3682,5103,5105],{"transform":5104},"translate(220.892 34.252)",[2655,5106],{"d":5107,"fill":3684,"stroke":3684,"className":5108,"style":4545},"M-4.080-61.712L-6.060-61.712L-6.060-62.009Q-5.791-62.009-5.623-62.054Q-5.455-62.099-5.455-62.271L-5.455-64.407Q-5.455-64.622-5.517-64.718Q-5.580-64.814-5.697-64.835Q-5.814-64.857-6.060-64.857L-6.060-65.153L-4.892-65.239L-4.892-64.454Q-4.814-64.665-4.662-64.851Q-4.510-65.036-4.310-65.138Q-4.111-65.239-3.885-65.239Q-3.638-65.239-3.447-65.095Q-3.256-64.950-3.256-64.720Q-3.256-64.564-3.361-64.454Q-3.467-64.345-3.623-64.345Q-3.779-64.345-3.888-64.454Q-3.998-64.564-3.998-64.720Q-3.998-64.880-3.892-64.985Q-4.217-64.985-4.431-64.757Q-4.646-64.528-4.742-64.189Q-4.838-63.849-4.838-63.544L-4.838-62.271Q-4.838-62.103-4.611-62.056Q-4.385-62.009-4.080-62.009L-4.080-61.712M-0.916-61.712L-2.693-61.712L-2.693-62.009Q-2.420-62.009-2.252-62.056Q-2.084-62.103-2.084-62.271L-2.084-64.407Q-2.084-64.622-2.140-64.718Q-2.197-64.814-2.310-64.835Q-2.424-64.857-2.670-64.857L-2.670-65.153L-1.471-65.239L-1.471-62.271Q-1.471-62.103-1.324-62.056Q-1.178-62.009-0.916-62.009L-0.916-61.712M-2.357-66.634Q-2.357-66.825-2.222-66.956Q-2.088-67.087-1.892-67.087Q-1.771-67.087-1.668-67.025Q-1.564-66.962-1.502-66.858Q-1.439-66.755-1.439-66.634Q-1.439-66.439-1.570-66.304Q-1.701-66.169-1.892-66.169Q-2.092-66.169-2.224-66.302Q-2.357-66.435-2.357-66.634M-0.416-61.103Q-0.416-61.384-0.205-61.595Q0.006-61.806 0.291-61.896Q0.135-62.021 0.057-62.210Q-0.021-62.400-0.021-62.599Q-0.021-62.954 0.209-63.247Q-0.158-63.587-0.158-64.056Q-0.158-64.407 0.045-64.677Q0.248-64.946 0.569-65.093Q0.889-65.239 1.233-65.239Q1.752-65.239 2.123-64.958Q2.487-65.329 3.033-65.329Q3.213-65.329 3.340-65.202Q3.467-65.075 3.467-64.896Q3.467-64.790 3.389-64.712Q3.311-64.634 3.201-64.634Q3.092-64.634 3.016-64.710Q2.940-64.786 2.940-64.896Q2.940-64.997 2.979-65.048Q2.987-65.056 2.990-65.062Q2.994-65.067 2.994-65.071Q2.619-65.071 2.299-64.817Q2.619-64.478 2.619-64.056Q2.619-63.786 2.502-63.569Q2.385-63.353 2.180-63.194Q1.975-63.036 1.733-62.954Q1.490-62.872 1.233-62.872Q1.014-62.872 0.801-62.931Q0.588-62.989 0.393-63.110Q0.299-62.970 0.299-62.790Q0.299-62.583 0.436-62.431Q0.572-62.278 0.779-62.278L1.475-62.278Q1.963-62.278 2.375-62.194Q2.787-62.110 3.067-61.853Q3.346-61.595 3.346-61.103Q3.346-60.739 3.026-60.507Q2.705-60.275 2.264-60.173Q1.822-60.071 1.467-60.071Q1.112-60.071 0.668-60.173Q0.225-60.275-0.096-60.507Q-0.416-60.739-0.416-61.103M0.088-61.103Q0.088-60.907 0.233-60.759Q0.377-60.610 0.590-60.521Q0.803-60.431 1.043-60.384Q1.283-60.337 1.467-60.337Q1.709-60.337 2.039-60.415Q2.369-60.493 2.606-60.667Q2.842-60.841 2.842-61.103Q2.842-61.509 2.432-61.618Q2.022-61.728 1.459-61.728L0.779-61.728Q0.510-61.728 0.299-61.550Q0.088-61.372 0.088-61.103M1.233-63.138Q1.955-63.138 1.955-64.056Q1.955-64.978 1.233-64.978Q0.506-64.978 0.506-64.056Q0.506-63.138 1.233-63.138M5.760-61.712L3.904-61.712L3.904-62.009Q4.178-62.009 4.346-62.056Q4.514-62.103 4.514-62.271L4.514-66.431Q4.514-66.646 4.451-66.741Q4.389-66.837 4.270-66.858Q4.151-66.880 3.904-66.880L3.904-67.177L5.127-67.263L5.127-64.560Q5.252-64.771 5.440-64.921Q5.627-65.071 5.854-65.155Q6.080-65.239 6.326-65.239Q7.494-65.239 7.494-64.161L7.494-62.271Q7.494-62.103 7.664-62.056Q7.834-62.009 8.104-62.009L8.104-61.712L6.248-61.712L6.248-62.009Q6.522-62.009 6.690-62.056Q6.858-62.103 6.858-62.271L6.858-64.146Q6.858-64.528 6.737-64.757Q6.615-64.985 6.264-64.985Q5.951-64.985 5.697-64.823Q5.444-64.661 5.297-64.392Q5.151-64.122 5.151-63.825L5.151-62.271Q5.151-62.103 5.320-62.056Q5.490-62.009 5.760-62.009",[3705],[3682,5110,5111],{"transform":5104},[2655,5112],{"d":5113,"fill":3684,"stroke":3684,"className":5114,"style":4545},"M8.947-62.673L8.947-64.864L8.244-64.864L8.244-65.118Q8.600-65.118 8.842-65.351Q9.084-65.583 9.195-65.931Q9.307-66.278 9.307-66.634L9.588-66.634L9.588-65.161L10.764-65.161L10.764-64.864L9.588-64.864L9.588-62.689Q9.588-62.368 9.707-62.140Q9.826-61.911 10.107-61.911Q10.287-61.911 10.404-62.034Q10.521-62.157 10.574-62.337Q10.627-62.517 10.627-62.689L10.627-63.161L10.908-63.161L10.908-62.673Q10.908-62.419 10.803-62.179Q10.697-61.939 10.500-61.786Q10.303-61.634 10.045-61.634Q9.729-61.634 9.477-61.757Q9.225-61.880 9.086-62.114Q8.947-62.349 8.947-62.673",[3705],[3682,5116,5117],{"transform":5104},[2655,5118],{"d":5119,"fill":3684,"stroke":3684,"className":5120,"style":4545},"M14.758-61.634L14.657-61.634Q14.567-61.634 14.567-61.728Q14.567-61.759 14.575-61.775Q14.860-62.251 15.243-62.624Q15.625-62.997 16.291-63.554Q16.957-64.110 17.270-64.431Q17.110-64.431 16.910-64.476Q16.711-64.521 16.512-64.564Q16.313-64.607 16.153-64.607Q15.930-64.607 15.731-64.530Q15.532-64.454 15.489-64.278Q15.453-64.208 15.399-64.208L15.293-64.208Q15.258-64.208 15.233-64.237Q15.207-64.267 15.207-64.306Q15.207-64.314 15.215-64.337Q15.305-64.704 15.602-64.972Q15.899-65.239 16.262-65.239Q16.426-65.239 16.543-65.171Q16.660-65.103 16.823-64.954Q16.985-64.806 17.075-64.747Q17.164-64.689 17.293-64.689Q17.446-64.689 17.557-64.794Q17.668-64.900 17.782-65.064Q17.895-65.228 17.942-65.239L18.047-65.239Q18.090-65.239 18.112-65.212Q18.133-65.185 18.133-65.146Q18.133-65.110 18.125-65.095Q17.891-64.716 17.567-64.374Q17.243-64.032 16.844-63.694Q16.446-63.357 16.053-63.021Q15.661-62.685 15.422-62.431Q15.461-62.439 15.559-62.439Q15.719-62.439 15.920-62.396Q16.121-62.353 16.323-62.308Q16.524-62.263 16.688-62.263Q17.004-62.263 17.303-62.437Q17.602-62.610 17.672-62.903Q17.688-62.978 17.750-62.978L17.856-62.978Q17.879-62.978 17.899-62.962Q17.918-62.946 17.930-62.923Q17.942-62.900 17.942-62.880L17.942-62.849Q17.864-62.540 17.664-62.261Q17.465-61.982 17.180-61.808Q16.895-61.634 16.575-61.634Q16.418-61.634 16.299-61.702Q16.180-61.771 16.026-61.913Q15.871-62.056 15.772-62.120Q15.672-62.185 15.543-62.185Q15.344-62.185 15.196-62.073Q15.047-61.962 14.916-61.802Q14.786-61.642 14.758-61.634",[3705],[3682,5122,5123,5126],{"fill":3688,"stroke":3689,"style":3690},[2655,5124],{"d":5125},"M299.541-61.712c0-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",[3682,5127,5129],{"transform":5128},"translate(293.05 2.153)",[2655,5130],{"d":4919,"fill":3684,"stroke":3684,"className":5131,"style":4431},[3705],[2655,5133],{"fill":3696,"d":5134},"M268.243-30.414c0-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",[3682,5136,5138],{"transform":5137},"translate(261.98 32.479)",[2655,5139],{"d":4891,"fill":3684,"stroke":3684,"className":5140,"style":4431},[3705],[2655,5142],{"fill":3696,"d":5143},"m282.117-54.246-16.65 16.65M242.636-14.96 230.506 6.05h24.26Z",[3682,5145,5146,5152],{"stroke":3696},[3682,5147,5149],{"transform":5148},"translate(243.797 65.263)",[2655,5150],{"d":4903,"fill":3684,"stroke":3684,"className":5151,"style":4431},[3705],[3682,5153,5154],{"transform":5148},[2655,5155],{"d":4909,"fill":3684,"stroke":3684,"className":5156,"style":3706},[3705],[2655,5158],{"fill":3696,"d":5159},"m253.742-21.328-6.754 13.507M273.934-14.96 261.804 6.05h24.26Z",[3682,5161,5162,5168],{"stroke":3696},[3682,5163,5165],{"transform":5164},"translate(275.095 65.263)",[2655,5166],{"d":4903,"fill":3684,"stroke":3684,"className":5167,"style":4431},[3705],[3682,5169,5170],{"transform":5164},[2655,5171],{"d":4936,"fill":3684,"stroke":3684,"className":5172,"style":3706},[3705],[2655,5174],{"fill":3696,"d":5175},"m262.827-21.328 6.754 13.507M330.84-30.414c0-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",[3682,5177,5179],{"transform":5178},"translate(324.661 33.45)",[2655,5180],{"d":4881,"fill":3684,"stroke":3684,"className":5181,"style":4431},[3705],[2655,5183],{"fill":3696,"d":5184},"m297.049-54.246 16.649 16.65M305.232-14.96 293.102 6.05h24.26Z",[3682,5186,5187,5193],{"stroke":3696},[3682,5188,5190],{"transform":5189},"translate(306.393 65.263)",[2655,5191],{"d":4903,"fill":3684,"stroke":3684,"className":5192,"style":4431},[3705],[3682,5194,5195],{"transform":5189},[2655,5196],{"d":4953,"fill":3684,"stroke":3684,"className":5197,"style":3706},[3705],[2655,5199],{"fill":3696,"d":5200},"m316.338-21.328-6.754 13.507M336.53-14.96 324.4 6.05h24.26Z",[3682,5202,5203,5209],{"stroke":3696},[3682,5204,5206],{"transform":5205},"translate(337.69 65.263)",[2655,5207],{"d":4903,"fill":3684,"stroke":3684,"className":5208,"style":4431},[3705],[3682,5210,5211],{"transform":5205},[2655,5212],{"d":4970,"fill":3684,"stroke":3684,"className":5213,"style":3706},[3705],[2655,5215],{"fill":3696,"d":5216},"m325.423-21.328 6.754 13.507",[3826,5218,5220,5221,5236,5237,5252],{"className":5219},[3829],"The LR case — left rotation at ",[390,5222,5224],{"className":5223},[393],[390,5225,5227],{"className":5226,"ariaHidden":398},[397],[390,5228,5230,5233],{"className":5229},[402],[390,5231],{"className":5232,"style":569},[406],[390,5234,574],{"className":5235,"style":573},[411,412],", then right rotation at ",[390,5238,5240],{"className":5239},[393],[390,5241,5243],{"className":5242,"ariaHidden":398},[397],[390,5244,5246,5249],{"className":5245},[402],[390,5247],{"className":5248,"style":588},[406],[390,5250,4053],{"className":5251,"style":4052},[411,412]," (a double rotation)",[381,5254,5255],{},"The RR and RL cases are the left-right mirrors of LL and LR. For completeness,\nhere is the RL double rotation, the mirror of the LR case just shown:",[3671,5257,5259,5601],{"className":5258},[3674,3675],[2647,5260,5263],{"xmlns":2649,"width":5261,"height":4870,"viewBox":5262},"548.642","-75 -75 411.481 115.819",[3682,5264,5265,5268,5274,5277,5292,5295,5302,5305,5312,5315,5328,5331,5345,5348,5362,5365,5394,5397,5402,5405,5418,5421,5427,5430,5443,5446,5452,5455,5468,5471,5484,5487,5510,5520,5523,5529,5532,5544,5547,5559,5562,5568,5571,5583,5586,5598],{"stroke":3684,"style":3685},[2655,5266],{"fill":3696,"d":5267},"M-12.016-61.712c0-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",[3682,5269,5270],{"transform":4426},[2655,5271],{"d":5272,"fill":3684,"stroke":3684,"className":5273,"style":4431},"M-21.365-61.600L-21.487-61.600Q-21.565-61.600-21.565-61.692Q-21.565-61.741-21.545-61.761Q-21.277-62.225-20.898-62.647Q-20.520-63.069-20.039-63.502Q-19.558-63.934-19.072-64.368Q-18.586-64.803-18.284-65.140L-18.323-65.140Q-18.542-65.140-18.967-65.281Q-19.392-65.423-19.636-65.423Q-19.900-65.423-20.149-65.308Q-20.398-65.193-20.466-64.954Q-20.481-64.881-20.544-64.881L-20.666-64.881Q-20.745-64.881-20.745-64.983L-20.745-65.013Q-20.666-65.306-20.488-65.560Q-20.310-65.814-20.049-65.972Q-19.788-66.131-19.504-66.131Q-19.304-66.131-19.172-66.041Q-19.040-65.950-18.865-65.760Q-18.689-65.569-18.579-65.486Q-18.469-65.403-18.303-65.403Q-18.083-65.403-17.910-65.604Q-17.737-65.804-17.566-66.102Q-17.537-66.131-17.493-66.131L-17.375-66.131Q-17.341-66.131-17.319-66.107Q-17.297-66.082-17.297-66.043Q-17.297-66.009-17.317-65.980Q-17.585-65.516-17.944-65.113Q-18.303-64.710-18.882-64.190Q-19.460-63.670-19.858-63.311Q-20.256-62.952-20.603-62.571Q-20.525-62.591-20.393-62.591Q-20.149-62.591-19.726-62.452Q-19.304-62.313-19.075-62.313Q-18.826-62.313-18.572-62.420Q-18.318-62.527-18.132-62.723Q-17.947-62.918-17.883-63.172Q-17.859-63.240-17.805-63.240L-17.683-63.240Q-17.644-63.240-17.620-63.209Q-17.595-63.177-17.595-63.143Q-17.595-63.133-17.605-63.113Q-17.698-62.733-17.927-62.388Q-18.157-62.044-18.491-61.822Q-18.826-61.600-19.206-61.600Q-19.397-61.600-19.529-61.688Q-19.661-61.775-19.839-61.968Q-20.017-62.161-20.129-62.247Q-20.242-62.332-20.403-62.332Q-20.901-62.332-21.296-61.634Q-21.330-61.600-21.365-61.600",[3705],[2655,5275],{"fill":3696,"d":5276},"m-53.273-46.258-12.13 21.011h24.26Z",[3682,5278,5279,5286],{"stroke":3696},[3682,5280,5282],{"transform":5281},"translate(-36.463 33.965)",[2655,5283],{"d":5284,"fill":3684,"stroke":3684,"className":5285,"style":4431},"M-21.516-61.844Q-21.511-61.868-21.494-61.932Q-21.477-61.995-21.450-62.029Q-21.423-62.064-21.374-62.064Q-20.515-62.064-20.237-62.112Q-19.968-62.181-19.914-62.400L-18.547-67.894Q-18.503-68.016-18.503-68.113Q-18.503-68.191-18.855-68.191L-19.436-68.191Q-20.105-68.191-20.469-67.986Q-20.832-67.781-21.003-67.444Q-21.174-67.108-21.443-66.341Q-21.477-66.253-21.545-66.253L-21.633-66.253Q-21.736-66.253-21.736-66.380L-21.023-68.450Q-21.003-68.543-20.925-68.543L-15.017-68.543Q-14.914-68.543-14.914-68.411L-15.246-66.341Q-15.246-66.312-15.281-66.282Q-15.315-66.253-15.344-66.253L-15.437-66.253Q-15.535-66.253-15.535-66.380Q-15.427-67.088-15.427-67.381Q-15.427-67.733-15.574-67.913Q-15.720-68.094-15.954-68.143Q-16.189-68.191-16.565-68.191L-17.156-68.191Q-17.424-68.191-17.517-68.143Q-17.610-68.094-17.673-67.850L-19.045-62.361Q-19.050-62.342-19.053-62.322Q-19.055-62.303-19.065-62.274Q-19.065-62.147-18.913-62.112Q-18.655-62.064-17.805-62.064Q-17.707-62.064-17.707-61.932Q-17.742-61.790-17.761-61.751Q-17.781-61.712-17.873-61.712L-21.413-61.712Q-21.516-61.712-21.516-61.844",[3705],[3682,5287,5288],{"transform":5281},[2655,5289],{"d":5290,"fill":3684,"stroke":3684,"className":5291,"style":3706},"M-12.805-60.212L-15.335-60.212L-15.335-60.492Q-14.367-60.492-14.367-60.701L-14.367-64.320Q-14.760-64.132-15.382-64.132L-15.382-64.413Q-14.965-64.413-14.601-64.514Q-14.237-64.614-13.981-64.860L-13.855-64.860Q-13.790-64.843-13.773-64.775L-13.773-60.701Q-13.773-60.492-12.805-60.492",[3705],[2655,5293],{"fill":3696,"d":5294},"M-29.158-54.528-47.326-36.36M19.282-30.414c0-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",[3682,5296,5298],{"transform":5297},"translate(28.667 32.479)",[2655,5299],{"d":5300,"fill":3684,"stroke":3684,"className":5301,"style":4431},"M-21.135-60.281Q-20.925-59.920-20.403-59.920Q-19.929-59.920-19.582-60.252Q-19.236-60.584-19.023-61.055Q-18.811-61.526-18.694-62.020Q-19.138-61.600-19.656-61.600Q-20.051-61.600-20.329-61.736Q-20.608-61.873-20.762-62.144Q-20.915-62.415-20.915-62.801Q-20.915-63.128-20.828-63.472Q-20.740-63.816-20.581-64.239Q-20.422-64.661-20.305-64.974Q-20.173-65.340-20.173-65.574Q-20.173-65.872-20.393-65.872Q-20.788-65.872-21.045-65.464Q-21.301-65.057-21.423-64.554Q-21.443-64.490-21.506-64.490L-21.623-64.490Q-21.706-64.490-21.706-64.583L-21.706-64.612Q-21.545-65.208-21.213-65.670Q-20.881-66.131-20.373-66.131Q-20.017-66.131-19.770-65.897Q-19.524-65.662-19.524-65.301Q-19.524-65.115-19.607-64.910Q-19.651-64.788-19.807-64.378Q-19.963-63.968-20.046-63.699Q-20.129-63.431-20.183-63.172Q-20.237-62.913-20.237-62.654Q-20.237-62.322-20.095-62.093Q-19.954-61.863-19.646-61.863Q-19.026-61.863-18.533-62.620L-17.776-65.701Q-17.742-65.833-17.620-65.928Q-17.497-66.024-17.356-66.024Q-17.234-66.024-17.143-65.945Q-17.053-65.867-17.053-65.740Q-17.053-65.682-17.063-65.662L-18.054-61.683Q-18.186-61.170-18.538-60.701Q-18.889-60.233-19.385-59.947Q-19.880-59.661-20.417-59.661Q-20.676-59.661-20.930-59.761Q-21.184-59.861-21.340-60.062Q-21.496-60.262-21.496-60.530Q-21.496-60.804-21.335-61.004Q-21.174-61.204-20.906-61.204Q-20.745-61.204-20.635-61.104Q-20.525-61.004-20.525-60.843Q-20.525-60.613-20.696-60.442Q-20.867-60.272-21.096-60.272Q-21.106-60.276-21.116-60.279Q-21.125-60.281-21.135-60.281",[3705],[2655,5303],{"fill":3696,"d":5304},"M-14.792-54.528 2.14-37.597M3.633.884c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.459-9.958 9.958 4.458 9.959 9.958 9.959S3.633 6.384 3.633.884Zm-9.959 0",[3682,5306,5308],{"transform":5307},"translate(12.791 64.749)",[2655,5309],{"d":5310,"fill":3684,"stroke":3684,"className":5311,"style":4431},"M-21.194-62Q-21.018-61.863-20.696-61.863Q-20.383-61.863-20.144-62.164Q-19.905-62.464-19.817-62.820L-19.363-64.593Q-19.255-65.076-19.255-65.252Q-19.255-65.501-19.394-65.687Q-19.534-65.872-19.783-65.872Q-20.100-65.872-20.378-65.674Q-20.657-65.477-20.847-65.171Q-21.038-64.866-21.116-64.554Q-21.135-64.490-21.194-64.490L-21.316-64.490Q-21.394-64.490-21.394-64.583L-21.394-64.612Q-21.296-64.983-21.062-65.337Q-20.828-65.691-20.488-65.911Q-20.149-66.131-19.763-66.131Q-19.397-66.131-19.101-65.936Q-18.806-65.740-18.684-65.403Q-18.513-65.711-18.247-65.921Q-17.981-66.131-17.663-66.131Q-17.449-66.131-17.224-66.055Q-16.999-65.980-16.858-65.823Q-16.716-65.667-16.716-65.433Q-16.716-65.179-16.880-64.996Q-17.043-64.813-17.297-64.813Q-17.458-64.813-17.566-64.915Q-17.673-65.018-17.673-65.174Q-17.673-65.384-17.529-65.543Q-17.385-65.701-17.185-65.731Q-17.366-65.872-17.683-65.872Q-18.005-65.872-18.242-65.574Q-18.479-65.276-18.577-64.910L-19.016-63.143Q-19.123-62.742-19.123-62.483Q-19.123-62.230-18.979-62.046Q-18.835-61.863-18.596-61.863Q-18.127-61.863-17.759-62.276Q-17.390-62.689-17.273-63.182Q-17.253-63.240-17.195-63.240L-17.073-63.240Q-17.034-63.240-17.009-63.213Q-16.985-63.187-16.985-63.152Q-16.985-63.143-16.995-63.123Q-17.136-62.527-17.590-62.064Q-18.044-61.600-18.616-61.600Q-18.982-61.600-19.277-61.797Q-19.573-61.995-19.695-62.332Q-19.851-62.039-20.127-61.819Q-20.403-61.600-20.715-61.600Q-20.930-61.600-21.157-61.675Q-21.384-61.751-21.526-61.907Q-21.667-62.064-21.667-62.303Q-21.667-62.537-21.504-62.730Q-21.340-62.923-21.096-62.923Q-20.930-62.923-20.818-62.823Q-20.705-62.723-20.705-62.562Q-20.705-62.352-20.845-62.195Q-20.984-62.039-21.194-62",[3705],[2655,5313],{"fill":3696,"d":5314},"M4.78-21.328-1.782-8.201M-21.975 16.338l-12.13 21.011h24.26Z",[3682,5316,5317,5322],{"stroke":3696},[3682,5318,5319],{"transform":4945},[2655,5320],{"d":5284,"fill":3684,"stroke":3684,"className":5321,"style":4431},[3705],[3682,5323,5324],{"transform":4945},[2655,5325],{"d":5326,"fill":3684,"stroke":3684,"className":5327,"style":3706},"M-12.805-60.212L-15.690-60.212L-15.690-60.414Q-15.690-60.444-15.663-60.472L-14.415-61.689Q-14.343-61.764-14.301-61.806Q-14.258-61.849-14.179-61.928Q-13.766-62.341-13.535-62.699Q-13.304-63.056-13.304-63.480Q-13.304-63.712-13.383-63.915Q-13.462-64.119-13.603-64.269Q-13.745-64.420-13.940-64.500Q-14.135-64.580-14.367-64.580Q-14.678-64.580-14.936-64.421Q-15.194-64.262-15.324-63.985L-15.304-63.985Q-15.136-63.985-15.029-63.874Q-14.921-63.763-14.921-63.599Q-14.921-63.442-15.030-63.329Q-15.140-63.216-15.304-63.216Q-15.464-63.216-15.577-63.329Q-15.690-63.442-15.690-63.599Q-15.690-63.975-15.482-64.262Q-15.273-64.549-14.938-64.705Q-14.603-64.860-14.248-64.860Q-13.824-64.860-13.444-64.702Q-13.065-64.543-12.831-64.226Q-12.597-63.910-12.597-63.480Q-12.597-63.169-12.737-62.900Q-12.877-62.632-13.082-62.427Q-13.287-62.222-13.650-61.940Q-14.012-61.658-14.121-61.562L-14.976-60.834L-14.333-60.834Q-14.070-60.834-13.781-60.836Q-13.492-60.837-13.274-60.846Q-13.055-60.855-13.038-60.872Q-12.976-60.937-12.939-61.104Q-12.901-61.272-12.863-61.514L-12.597-61.514",[3705],[2655,5329],{"fill":3696,"d":5330},"m-10.868 9.97-6.754 13.507M9.323 16.338l-12.13 21.011h24.26Z",[3682,5332,5333,5339],{"stroke":3696},[3682,5334,5336],{"transform":5335},"translate(26.133 96.56)",[2655,5337],{"d":5284,"fill":3684,"stroke":3684,"className":5338,"style":4431},[3705],[3682,5340,5341],{"transform":5335},[2655,5342],{"d":5343,"fill":3684,"stroke":3684,"className":5344,"style":3706},"M-15.335-60.759Q-15.215-60.602-15.024-60.503Q-14.832-60.403-14.617-60.364Q-14.402-60.325-14.179-60.325Q-13.882-60.325-13.687-60.480Q-13.492-60.636-13.402-60.890Q-13.311-61.145-13.311-61.429Q-13.311-61.723-13.403-61.974Q-13.496-62.225-13.694-62.381Q-13.892-62.536-14.186-62.536L-14.702-62.536Q-14.730-62.536-14.755-62.562Q-14.781-62.587-14.781-62.611L-14.781-62.683Q-14.781-62.714-14.755-62.736Q-14.730-62.758-14.702-62.758L-14.261-62.789Q-13.899-62.789-13.679-63.146Q-13.458-63.504-13.458-63.893Q-13.458-64.221-13.653-64.425Q-13.848-64.628-14.179-64.628Q-14.466-64.628-14.719-64.544Q-14.972-64.461-15.136-64.273Q-14.989-64.273-14.889-64.158Q-14.788-64.044-14.788-63.893Q-14.788-63.743-14.894-63.633Q-15-63.524-15.157-63.524Q-15.318-63.524-15.427-63.633Q-15.536-63.743-15.536-63.893Q-15.536-64.218-15.328-64.437Q-15.119-64.655-14.803-64.758Q-14.487-64.860-14.179-64.860Q-13.861-64.860-13.533-64.756Q-13.205-64.652-12.978-64.430Q-12.751-64.208-12.751-63.893Q-12.751-63.459-13.038-63.134Q-13.325-62.810-13.759-62.663Q-13.448-62.598-13.168-62.432Q-12.887-62.266-12.710-62.008Q-12.532-61.750-12.532-61.429Q-12.532-61.019-12.776-60.709Q-13.021-60.400-13.402-60.236Q-13.783-60.072-14.179-60.072Q-14.548-60.072-14.906-60.185Q-15.263-60.297-15.507-60.547Q-15.752-60.796-15.752-61.166Q-15.752-61.337-15.635-61.449Q-15.519-61.562-15.348-61.562Q-15.239-61.562-15.148-61.511Q-15.058-61.460-15.003-61.367Q-14.948-61.275-14.948-61.166Q-14.948-60.998-15.061-60.879Q-15.174-60.759-15.335-60.759",[3705],[2655,5346],{"fill":3696,"d":5347},"M-1.783 9.97 4.97 23.477M24.972-14.96 12.842 6.05h24.26Z",[3682,5349,5350,5356],{"stroke":3696},[3682,5351,5353],{"transform":5352},"translate(41.782 65.263)",[2655,5354],{"d":5284,"fill":3684,"stroke":3684,"className":5355,"style":4431},[3705],[3682,5357,5358],{"transform":5352},[2655,5359],{"d":5360,"fill":3684,"stroke":3684,"className":5361,"style":3706},"M-13.814-61.360L-15.858-61.360L-15.858-61.641L-13.527-64.813Q-13.492-64.860-13.427-64.860L-13.291-64.860Q-13.246-64.860-13.219-64.833Q-13.192-64.806-13.192-64.761L-13.192-61.641L-12.429-61.641L-12.429-61.360L-13.192-61.360L-13.192-60.701Q-13.192-60.492-12.436-60.492L-12.436-60.212L-14.569-60.212L-14.569-60.492Q-13.814-60.492-13.814-60.701L-13.814-61.360M-13.766-64.085L-15.557-61.641L-13.766-61.641",[3705],[2655,5363],{"fill":3696,"d":5364},"M13.866-21.328 20.62-7.821",[3682,5366,5367,5370,5373],{"style":4526},[2655,5368],{"fill":3696,"d":5369},"M43.467-16.187H82.5",[2655,5371],{"fill":3696,"d":5372,"style":4533},"M80.34-19.31c.468 1.874 1.51 2.759 2.56 3.123-1.05.364-2.092 1.249-2.56 3.123",[3682,5374,5375,5382,5388],{"stroke":3696,"fontSize":4537},[3682,5376,5378],{"transform":5377},"translate(72.84 34.15)",[2655,5379],{"d":5380,"fill":3684,"stroke":3684,"className":5381,"style":4545},"M-19.729-61.712L-21.709-61.712L-21.709-62.009Q-21.440-62.009-21.272-62.054Q-21.104-62.099-21.104-62.271L-21.104-64.407Q-21.104-64.622-21.166-64.718Q-21.229-64.814-21.346-64.835Q-21.463-64.857-21.709-64.857L-21.709-65.153L-20.541-65.239L-20.541-64.454Q-20.463-64.665-20.311-64.851Q-20.159-65.036-19.959-65.138Q-19.760-65.239-19.534-65.239Q-19.288-65.239-19.096-65.095Q-18.905-64.950-18.905-64.720Q-18.905-64.564-19.010-64.454Q-19.116-64.345-19.272-64.345Q-19.428-64.345-19.538-64.454Q-19.647-64.564-19.647-64.720Q-19.647-64.880-19.541-64.985Q-19.866-64.985-20.080-64.757Q-20.295-64.528-20.391-64.189Q-20.487-63.849-20.487-63.544L-20.487-62.271Q-20.487-62.103-20.260-62.056Q-20.034-62.009-19.729-62.009L-19.729-61.712M-16.565-61.712L-18.342-61.712L-18.342-62.009Q-18.069-62.009-17.901-62.056Q-17.733-62.103-17.733-62.271L-17.733-64.407Q-17.733-64.622-17.789-64.718Q-17.846-64.814-17.959-64.835Q-18.073-64.857-18.319-64.857L-18.319-65.153L-17.120-65.239L-17.120-62.271Q-17.120-62.103-16.973-62.056Q-16.827-62.009-16.565-62.009L-16.565-61.712M-18.006-66.634Q-18.006-66.825-17.871-66.956Q-17.737-67.087-17.541-67.087Q-17.420-67.087-17.317-67.025Q-17.213-66.962-17.151-66.858Q-17.088-66.755-17.088-66.634Q-17.088-66.439-17.219-66.304Q-17.350-66.169-17.541-66.169Q-17.741-66.169-17.873-66.302Q-18.006-66.435-18.006-66.634M-16.065-61.103Q-16.065-61.384-15.854-61.595Q-15.643-61.806-15.358-61.896Q-15.514-62.021-15.592-62.210Q-15.670-62.400-15.670-62.599Q-15.670-62.954-15.440-63.247Q-15.807-63.587-15.807-64.056Q-15.807-64.407-15.604-64.677Q-15.401-64.946-15.080-65.093Q-14.760-65.239-14.416-65.239Q-13.897-65.239-13.526-64.958Q-13.163-65.329-12.616-65.329Q-12.436-65.329-12.309-65.202Q-12.182-65.075-12.182-64.896Q-12.182-64.790-12.260-64.712Q-12.338-64.634-12.448-64.634Q-12.557-64.634-12.633-64.710Q-12.709-64.786-12.709-64.896Q-12.709-64.997-12.670-65.048Q-12.663-65.056-12.659-65.062Q-12.655-65.067-12.655-65.071Q-13.030-65.071-13.350-64.817Q-13.030-64.478-13.030-64.056Q-13.030-63.786-13.147-63.569Q-13.264-63.353-13.469-63.194Q-13.674-63.036-13.916-62.954Q-14.159-62.872-14.416-62.872Q-14.635-62.872-14.848-62.931Q-15.061-62.989-15.256-63.110Q-15.350-62.970-15.350-62.790Q-15.350-62.583-15.213-62.431Q-15.077-62.278-14.870-62.278L-14.174-62.278Q-13.686-62.278-13.274-62.194Q-12.862-62.110-12.582-61.853Q-12.303-61.595-12.303-61.103Q-12.303-60.739-12.623-60.507Q-12.944-60.275-13.385-60.173Q-13.827-60.071-14.182-60.071Q-14.538-60.071-14.981-60.173Q-15.424-60.275-15.745-60.507Q-16.065-60.739-16.065-61.103M-15.561-61.103Q-15.561-60.907-15.416-60.759Q-15.272-60.610-15.059-60.521Q-14.846-60.431-14.606-60.384Q-14.366-60.337-14.182-60.337Q-13.940-60.337-13.610-60.415Q-13.280-60.493-13.043-60.667Q-12.807-60.841-12.807-61.103Q-12.807-61.509-13.217-61.618Q-13.627-61.728-14.190-61.728L-14.870-61.728Q-15.139-61.728-15.350-61.550Q-15.561-61.372-15.561-61.103M-14.416-63.138Q-13.694-63.138-13.694-64.056Q-13.694-64.978-14.416-64.978Q-15.143-64.978-15.143-64.056Q-15.143-63.138-14.416-63.138M-9.889-61.712L-11.745-61.712L-11.745-62.009Q-11.471-62.009-11.303-62.056Q-11.135-62.103-11.135-62.271L-11.135-66.431Q-11.135-66.646-11.198-66.741Q-11.260-66.837-11.379-66.858Q-11.498-66.880-11.745-66.880L-11.745-67.177L-10.522-67.263L-10.522-64.560Q-10.397-64.771-10.209-64.921Q-10.022-65.071-9.795-65.155Q-9.569-65.239-9.323-65.239Q-8.155-65.239-8.155-64.161L-8.155-62.271Q-8.155-62.103-7.985-62.056Q-7.815-62.009-7.545-62.009L-7.545-61.712L-9.401-61.712L-9.401-62.009Q-9.127-62.009-8.959-62.056Q-8.791-62.103-8.791-62.271L-8.791-64.146Q-8.791-64.528-8.913-64.757Q-9.034-64.985-9.385-64.985Q-9.698-64.985-9.952-64.823Q-10.205-64.661-10.352-64.392Q-10.498-64.122-10.498-63.825L-10.498-62.271Q-10.498-62.103-10.329-62.056Q-10.159-62.009-9.889-62.009",[3705],[3682,5383,5384],{"transform":5377},[2655,5385],{"d":5386,"fill":3684,"stroke":3684,"className":5387,"style":4545},"M-6.702-62.673L-6.702-64.864L-7.405-64.864L-7.405-65.118Q-7.049-65.118-6.807-65.351Q-6.565-65.583-6.454-65.931Q-6.342-66.278-6.342-66.634L-6.061-66.634L-6.061-65.161L-4.885-65.161L-4.885-64.864L-6.061-64.864L-6.061-62.689Q-6.061-62.368-5.942-62.140Q-5.823-61.911-5.542-61.911Q-5.362-61.911-5.245-62.034Q-5.128-62.157-5.075-62.337Q-5.022-62.517-5.022-62.689L-5.022-63.161L-4.741-63.161L-4.741-62.673Q-4.741-62.419-4.846-62.179Q-4.952-61.939-5.149-61.786Q-5.346-61.634-5.604-61.634Q-5.920-61.634-6.172-61.757Q-6.424-61.880-6.563-62.114Q-6.702-62.349-6.702-62.673",[3705],[3682,5389,5390],{"transform":5377},[2655,5391],{"d":5392,"fill":3684,"stroke":3684,"className":5393,"style":4545},"M-0.946-60.775Q-0.946-60.993-0.813-61.157Q-0.680-61.321-0.465-61.321Q-0.332-61.321-0.238-61.237Q-0.145-61.153-0.145-61.017Q-0.145-60.837-0.272-60.694Q-0.399-60.552-0.578-60.552Q-0.395-60.337-0.012-60.337Q0.539-60.337 0.890-60.829Q1.242-61.321 1.398-61.958Q1.047-61.634 0.605-61.634Q0.281-61.634 0.031-61.743Q-0.219-61.853-0.358-62.077Q-0.496-62.302-0.496-62.634Q-0.496-62.884-0.422-63.171Q-0.348-63.458-0.211-63.810Q-0.074-64.161-0.012-64.329Q0.078-64.552 0.078-64.735Q0.078-64.985-0.090-64.985Q-0.406-64.985-0.615-64.679Q-0.824-64.372-0.930-63.985Q-0.942-63.911-1.012-63.911L-1.113-63.911Q-1.149-63.911-1.176-63.946Q-1.203-63.982-1.203-64.009L-1.203-64.040Q-1.078-64.501-0.781-64.870Q-0.485-65.239-0.074-65.239Q0.121-65.239 0.295-65.155Q0.469-65.071 0.570-64.919Q0.672-64.767 0.672-64.560Q0.672-64.407 0.613-64.271Q0.523-64.040 0.422-63.775Q0.320-63.509 0.263-63.327Q0.207-63.146 0.162-62.931Q0.117-62.716 0.117-62.521Q0.117-62.247 0.240-62.067Q0.363-61.888 0.621-61.888Q1.140-61.888 1.543-62.528L2.125-64.872Q2.164-64.997 2.267-65.079Q2.371-65.161 2.496-65.161Q2.605-65.161 2.685-65.087Q2.765-65.013 2.765-64.903Q2.765-64.857 2.758-64.833L1.972-61.681Q1.863-61.259 1.562-60.888Q1.262-60.517 0.842-60.298Q0.422-60.079-0.020-60.079Q-0.379-60.079-0.662-60.257Q-0.946-60.435-0.946-60.775",[3705],[2655,5395],{"fill":3696,"d":5396},"M135.938-61.712c0-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",[3682,5398,5399],{"transform":5003},[2655,5400],{"d":5272,"fill":3684,"stroke":3684,"className":5401,"style":4431},[3705],[2655,5403],{"fill":3696,"d":5404},"m94.681-46.258-12.13 21.011h24.26Z",[3682,5406,5407,5413],{"stroke":3696},[3682,5408,5410],{"transform":5409},"translate(111.491 33.965)",[2655,5411],{"d":5284,"fill":3684,"stroke":3684,"className":5412,"style":4431},[3705],[3682,5414,5415],{"transform":5409},[2655,5416],{"d":5290,"fill":3684,"stroke":3684,"className":5417,"style":3706},[3705],[2655,5419],{"fill":3696,"d":5420},"M118.796-54.528 100.628-36.36M167.236-30.414c0-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",[3682,5422,5424],{"transform":5423},"translate(176.395 33.45)",[2655,5425],{"d":5310,"fill":3684,"stroke":3684,"className":5426,"style":4431},[3705],[2655,5428],{"fill":3696,"d":5429},"m133.162-54.528 16.932 16.931M141.628-14.96 129.498 6.05h24.26Z",[3682,5431,5432,5438],{"stroke":3696},[3682,5433,5435],{"transform":5434},"translate(158.438 65.263)",[2655,5436],{"d":5284,"fill":3684,"stroke":3684,"className":5437,"style":4431},[3705],[3682,5439,5440],{"transform":5434},[2655,5441],{"d":5326,"fill":3684,"stroke":3684,"className":5442,"style":3706},[3705],[2655,5444],{"fill":3696,"d":5445},"M152.735-21.328 145.98-7.821M182.885.884c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.459-9.958 9.958 4.458 9.959 9.958 9.959 9.959-4.459 9.959-9.959Zm-9.959 0",[3682,5447,5449],{"transform":5448},"translate(192.27 63.777)",[2655,5450],{"d":5300,"fill":3684,"stroke":3684,"className":5451,"style":4431},[3705],[2655,5453],{"fill":3696,"d":5454},"m161.82-21.328 6.564 13.127M157.277 16.338l-12.13 21.011h24.261Z",[3682,5456,5457,5463],{"stroke":3696},[3682,5458,5460],{"transform":5459},"translate(174.087 96.56)",[2655,5461],{"d":5284,"fill":3684,"stroke":3684,"className":5462,"style":4431},[3705],[3682,5464,5465],{"transform":5459},[2655,5466],{"d":5343,"fill":3684,"stroke":3684,"className":5467,"style":3706},[3705],[2655,5469],{"fill":3696,"d":5470},"m168.384 9.97-6.754 13.507M188.575 16.338l-12.13 21.011h24.261Z",[3682,5472,5473,5479],{"stroke":3696},[3682,5474,5476],{"transform":5475},"translate(205.385 96.56)",[2655,5477],{"d":5284,"fill":3684,"stroke":3684,"className":5478,"style":4431},[3705],[3682,5480,5481],{"transform":5475},[2655,5482],{"d":5360,"fill":3684,"stroke":3684,"className":5483,"style":3706},[3705],[2655,5485],{"fill":3696,"d":5486},"m177.47 9.97 6.753 13.507",[3682,5488,5489,5492,5495],{"style":4526},[2655,5490],{"fill":3696,"d":5491},"M191.42-16.187h39.034",[2655,5493],{"fill":3696,"d":5494,"style":4533},"M228.294-19.31c.468 1.874 1.51 2.759 2.56 3.123-1.05.364-2.092 1.249-2.56 3.123",[3682,5496,5497,5504],{"stroke":3696,"fontSize":4537},[3682,5498,5500],{"transform":5499},"translate(223.729 37.93)",[2655,5501],{"d":5502,"fill":3684,"stroke":3684,"className":5503,"style":4545},"M-19.823-61.712L-21.655-61.712L-21.655-62.009Q-21.381-62.009-21.213-62.056Q-21.045-62.103-21.045-62.271L-21.045-66.431Q-21.045-66.646-21.108-66.741Q-21.170-66.837-21.289-66.858Q-21.409-66.880-21.655-66.880L-21.655-67.177L-20.432-67.263L-20.432-62.271Q-20.432-62.103-20.264-62.056Q-20.096-62.009-19.823-62.009L-19.823-61.712M-19.377-63.466Q-19.377-63.946-19.145-64.362Q-18.913-64.778-18.502-65.028Q-18.092-65.278-17.616-65.278Q-16.885-65.278-16.487-64.837Q-16.088-64.396-16.088-63.665Q-16.088-63.560-16.182-63.536L-18.631-63.536L-18.631-63.466Q-18.631-63.056-18.510-62.700Q-18.389-62.345-18.118-62.128Q-17.846-61.911-17.416-61.911Q-17.053-61.911-16.756-62.140Q-16.459-62.368-16.358-62.720Q-16.350-62.767-16.264-62.782L-16.182-62.782Q-16.088-62.755-16.088-62.673Q-16.088-62.665-16.096-62.634Q-16.159-62.407-16.297-62.224Q-16.436-62.040-16.627-61.907Q-16.819-61.775-17.038-61.704Q-17.256-61.634-17.495-61.634Q-17.866-61.634-18.204-61.771Q-18.541-61.907-18.809-62.159Q-19.077-62.411-19.227-62.751Q-19.377-63.091-19.377-63.466M-18.623-63.775L-16.663-63.775Q-16.663-64.079-16.764-64.370Q-16.866-64.661-17.082-64.843Q-17.299-65.025-17.616-65.025Q-17.916-65.025-18.147-64.837Q-18.377-64.650-18.500-64.358Q-18.623-64.067-18.623-63.775M-13.534-61.712L-15.518-61.712L-15.518-62.009Q-15.245-62.009-15.077-62.056Q-14.909-62.103-14.909-62.271L-14.909-64.864L-15.549-64.864L-15.549-65.161L-14.909-65.161L-14.909-66.095Q-14.909-66.360-14.791-66.597Q-14.674-66.833-14.481-66.997Q-14.288-67.161-14.039-67.253Q-13.791-67.345-13.526-67.345Q-13.241-67.345-13.016-67.187Q-12.791-67.028-12.791-66.751Q-12.791-66.595-12.897-66.485Q-13.002-66.376-13.166-66.376Q-13.323-66.376-13.432-66.485Q-13.541-66.595-13.541-66.751Q-13.541-66.958-13.381-67.064Q-13.479-67.087-13.573-67.087Q-13.803-67.087-13.975-66.931Q-14.147-66.775-14.233-66.538Q-14.319-66.302-14.319-66.079L-14.319-65.161L-13.350-65.161L-13.350-64.864L-14.295-64.864L-14.295-62.271Q-14.295-62.103-14.069-62.056Q-13.842-62.009-13.534-62.009L-13.534-61.712M-12.381-62.673L-12.381-64.864L-13.084-64.864L-13.084-65.118Q-12.729-65.118-12.487-65.351Q-12.245-65.583-12.133-65.931Q-12.022-66.278-12.022-66.634L-11.741-66.634L-11.741-65.161L-10.565-65.161L-10.565-64.864L-11.741-64.864L-11.741-62.689Q-11.741-62.368-11.621-62.140Q-11.502-61.911-11.221-61.911Q-11.041-61.911-10.924-62.034Q-10.807-62.157-10.754-62.337Q-10.702-62.517-10.702-62.689L-10.702-63.161L-10.420-63.161L-10.420-62.673Q-10.420-62.419-10.526-62.179Q-10.631-61.939-10.829-61.786Q-11.026-61.634-11.284-61.634Q-11.600-61.634-11.852-61.757Q-12.104-61.880-12.243-62.114Q-12.381-62.349-12.381-62.673",[3705],[3682,5505,5506],{"transform":5499},[2655,5507],{"d":5508,"fill":3684,"stroke":3684,"className":5509,"style":4545},"M-6.565-61.634L-6.666-61.634Q-6.756-61.634-6.756-61.728Q-6.756-61.759-6.748-61.775Q-6.463-62.251-6.080-62.624Q-5.698-62.997-5.032-63.554Q-4.366-64.110-4.053-64.431Q-4.213-64.431-4.412-64.476Q-4.612-64.521-4.811-64.564Q-5.010-64.607-5.170-64.607Q-5.393-64.607-5.592-64.530Q-5.791-64.454-5.834-64.278Q-5.870-64.208-5.924-64.208L-6.030-64.208Q-6.065-64.208-6.090-64.237Q-6.116-64.267-6.116-64.306Q-6.116-64.314-6.108-64.337Q-6.018-64.704-5.721-64.972Q-5.424-65.239-5.061-65.239Q-4.897-65.239-4.780-65.171Q-4.662-65.103-4.500-64.954Q-4.338-64.806-4.248-64.747Q-4.159-64.689-4.030-64.689Q-3.877-64.689-3.766-64.794Q-3.655-64.900-3.541-65.064Q-3.428-65.228-3.381-65.239L-3.276-65.239Q-3.233-65.239-3.211-65.212Q-3.190-65.185-3.190-65.146Q-3.190-65.110-3.198-65.095Q-3.432-64.716-3.756-64.374Q-4.080-64.032-4.479-63.694Q-4.877-63.357-5.270-63.021Q-5.662-62.685-5.901-62.431Q-5.862-62.439-5.764-62.439Q-5.604-62.439-5.403-62.396Q-5.202-62.353-5-62.308Q-4.799-62.263-4.635-62.263Q-4.319-62.263-4.020-62.437Q-3.721-62.610-3.651-62.903Q-3.635-62.978-3.573-62.978L-3.467-62.978Q-3.444-62.978-3.424-62.962Q-3.405-62.946-3.393-62.923Q-3.381-62.900-3.381-62.880L-3.381-62.849Q-3.459-62.540-3.659-62.261Q-3.858-61.982-4.143-61.808Q-4.428-61.634-4.748-61.634Q-4.905-61.634-5.024-61.702Q-5.143-61.771-5.297-61.913Q-5.452-62.056-5.551-62.120Q-5.651-62.185-5.780-62.185Q-5.979-62.185-6.127-62.073Q-6.276-61.962-6.407-61.802Q-6.537-61.642-6.565-61.634",[3705],[3682,5511,5512,5515],{"fill":3688,"stroke":3689,"style":3690},[2655,5513],{"d":5514},"M283.892-61.712c0-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",[3682,5516,5517],{"transform":5128},[2655,5518],{"d":5310,"fill":3684,"stroke":3684,"className":5519,"style":4431},[3705],[2655,5521],{"fill":3696,"d":5522},"M252.594-30.414c0-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",[3682,5524,5526],{"transform":5525},"translate(262.065 33.45)",[2655,5527],{"d":5272,"fill":3684,"stroke":3684,"className":5528,"style":4431},[3705],[2655,5530],{"fill":3696,"d":5531},"m266.468-54.246-16.65 16.65M226.987-14.96 214.857 6.05h24.26Z",[3682,5533,5534,5539],{"stroke":3696},[3682,5535,5536],{"transform":5148},[2655,5537],{"d":5284,"fill":3684,"stroke":3684,"className":5538,"style":4431},[3705],[3682,5540,5541],{"transform":5148},[2655,5542],{"d":5290,"fill":3684,"stroke":3684,"className":5543,"style":3706},[3705],[2655,5545],{"fill":3696,"d":5546},"m238.093-21.328-6.754 13.507M258.285-14.96 246.155 6.05h24.26Z",[3682,5548,5549,5554],{"stroke":3696},[3682,5550,5551],{"transform":5164},[2655,5552],{"d":5284,"fill":3684,"stroke":3684,"className":5553,"style":4431},[3705],[3682,5555,5556],{"transform":5164},[2655,5557],{"d":5326,"fill":3684,"stroke":3684,"className":5558,"style":3706},[3705],[2655,5560],{"fill":3696,"d":5561},"m247.178-21.328 6.754 13.507M315.19-30.414c0-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",[3682,5563,5565],{"transform":5564},"translate(324.576 32.479)",[2655,5566],{"d":5300,"fill":3684,"stroke":3684,"className":5567,"style":4431},[3705],[2655,5569],{"fill":3696,"d":5570},"m281.4-54.246 16.649 16.65M289.583-14.96 277.453 6.05h24.26Z",[3682,5572,5573,5578],{"stroke":3696},[3682,5574,5575],{"transform":5189},[2655,5576],{"d":5284,"fill":3684,"stroke":3684,"className":5577,"style":4431},[3705],[3682,5579,5580],{"transform":5189},[2655,5581],{"d":5343,"fill":3684,"stroke":3684,"className":5582,"style":3706},[3705],[2655,5584],{"fill":3696,"d":5585},"m300.69-21.328-6.755 13.507M320.88-14.96 308.75 6.05h24.261Z",[3682,5587,5588,5593],{"stroke":3696},[3682,5589,5590],{"transform":5205},[2655,5591],{"d":5284,"fill":3684,"stroke":3684,"className":5592,"style":4431},[3705],[3682,5594,5595],{"transform":5205},[2655,5596],{"d":5360,"fill":3684,"stroke":3684,"className":5597,"style":3706},[3705],[2655,5599],{"fill":3696,"d":5600},"m309.774-21.328 6.754 13.507",[3826,5602,5604,5605,5620,5621,5636,5637,4231,5652,5670,5671,5686,5687,1067,5702,5717,5718,5733],{"className":5603},[3829],"The RL case — right rotation at ",[390,5606,5608],{"className":5607},[393],[390,5609,5611],{"className":5610,"ariaHidden":398},[397],[390,5612,5614,5617],{"className":5613},[402],[390,5615],{"className":5616,"style":569},[406],[390,5618,574],{"className":5619,"style":573},[411,412],", then left rotation at ",[390,5622,5624],{"className":5623},[393],[390,5625,5627],{"className":5626,"ariaHidden":398},[397],[390,5628,5630,5633],{"className":5629},[402],[390,5631],{"className":5632,"style":588},[406],[390,5634,4053],{"className":5635,"style":4052},[411,412]," (the mirror of LR). Here ",[390,5638,5640],{"className":5639},[393],[390,5641,5643],{"className":5642,"ariaHidden":398},[397],[390,5644,5646,5649],{"className":5645},[402],[390,5647],{"className":5648,"style":588},[406],[390,5650,4053],{"className":5651,"style":4052},[411,412],[390,5653,5655],{"className":5654},[393],[390,5656,5658],{"className":5657,"ariaHidden":398},[397],[390,5659,5661,5664,5667],{"className":5660},[402],[390,5662],{"className":5663,"style":757},[406],[390,5665,961],{"className":5666},[411],[390,5668,1066],{"className":5669},[411],", its right child ",[390,5672,5674],{"className":5673},[393],[390,5675,5677],{"className":5676,"ariaHidden":398},[397],[390,5678,5680,5683],{"className":5679},[402],[390,5681],{"className":5682,"style":569},[406],[390,5684,574],{"className":5685,"style":573},[411,412]," leans left, and the offending grandchild ",[390,5688,5690],{"className":5689},[393],[390,5691,5693],{"className":5692,"ariaHidden":398},[397],[390,5694,5696,5699],{"className":5695},[402],[390,5697],{"className":5698,"style":588},[406],[390,5700,592],{"className":5701},[411,412],[390,5703,5705],{"className":5704},[393],[390,5706,5708],{"className":5707,"ariaHidden":398},[397],[390,5709,5711,5714],{"className":5710},[402],[390,5712],{"className":5713,"style":569},[406],[390,5715,574],{"className":5716,"style":573},[411,412],"'s left child; the double rotation lifts ",[390,5719,5721],{"className":5720},[393],[390,5722,5724],{"className":5723,"ariaHidden":398},[397],[390,5725,5727,5730],{"className":5726},[402],[390,5728],{"className":5729,"style":588},[406],[390,5731,592],{"className":5732},[411,412]," to the root.",[381,5735,5736,5737,5740],{},"In every case the\nrebalanced subtree ends up with the ",[553,5738,5739],{},"same height it had before the insertion",",\nwhich is the decisive fact:",[636,5742,5744],{"type":5743},"note",[381,5745,5746,5749,5750,5765,5766,5781,5782],{},[458,5747,5748],{},"Key fact."," After rebalancing the lowest unbalanced node ",[390,5751,5753],{"className":5752},[393],[390,5754,5756],{"className":5755,"ariaHidden":398},[397],[390,5757,5759,5762],{"className":5758},[402],[390,5760],{"className":5761,"style":588},[406],[390,5763,4053],{"className":5764,"style":4052},[411,412],", every ancestor\nof ",[390,5767,5769],{"className":5768},[393],[390,5770,5772],{"className":5771,"ariaHidden":398},[397],[390,5773,5775,5778],{"className":5774},[402],[390,5776],{"className":5777,"style":588},[406],[390,5779,4053],{"className":5780,"style":4052},[411,412]," regains the height it had before the insert, so no ancestor is\nunbalanced. ",[458,5783,5784,5785,5809],{},"Insertion fixes at most one node and uses ",[390,5786,5788],{"className":5787},[393],[390,5789,5791],{"className":5790,"ariaHidden":398},[397],[390,5792,5794,5797,5800,5803,5806],{"className":5793},[402],[390,5795],{"className":5796,"style":407},[406],[390,5798,414],{"className":5799,"style":413},[411,412],[390,5801,419],{"className":5802},[418],[390,5804,515],{"className":5805},[411],[390,5807,428],{"className":5808},[427]," rotations.",[381,5811,5812,5813,5846,5847,5880,5881,5908,5909,5942],{},"So insertion is ",[390,5814,5816],{"className":5815},[393],[390,5817,5819],{"className":5818,"ariaHidden":398},[397],[390,5820,5822,5825,5828,5831,5837,5840,5843],{"className":5821},[402],[390,5823],{"className":5824,"style":407},[406],[390,5826,414],{"className":5827,"style":413},[411,412],[390,5829,419],{"className":5830},[418],[390,5832,5834],{"className":5833},[483],[390,5835,489],{"className":5836,"style":488},[411,487],[390,5838],{"className":5839,"style":494},[493],[390,5841,452],{"className":5842},[411,412],[390,5844,428],{"className":5845},[427]," to descend, ",[390,5848,5850],{"className":5849},[393],[390,5851,5853],{"className":5852,"ariaHidden":398},[397],[390,5854,5856,5859,5862,5865,5871,5874,5877],{"className":5855},[402],[390,5857],{"className":5858,"style":407},[406],[390,5860,414],{"className":5861,"style":413},[411,412],[390,5863,419],{"className":5864},[418],[390,5866,5868],{"className":5867},[483],[390,5869,489],{"className":5870,"style":488},[411,487],[390,5872],{"className":5873,"style":494},[493],[390,5875,452],{"className":5876},[411,412],[390,5878,428],{"className":5879},[427]," to walk back up adjusting\nheights, and at most a double rotation (",[390,5882,5884],{"className":5883},[393],[390,5885,5887,5899],{"className":5886,"ariaHidden":398},[397],[390,5888,5890,5893,5896],{"className":5889},[402],[390,5891],{"className":5892,"style":2783},[406],[390,5894,1433],{"className":5895},[746],[390,5897],{"className":5898,"style":742},[493],[390,5900,5902,5905],{"className":5901},[402],[390,5903],{"className":5904,"style":673},[406],[390,5906,1066],{"className":5907},[411]," rotations) to repair: ",[390,5910,5912],{"className":5911},[393],[390,5913,5915],{"className":5914,"ariaHidden":398},[397],[390,5916,5918,5921,5924,5927,5933,5936,5939],{"className":5917},[402],[390,5919],{"className":5920,"style":407},[406],[390,5922,414],{"className":5923,"style":413},[411,412],[390,5925,419],{"className":5926},[418],[390,5928,5930],{"className":5929},[483],[390,5931,489],{"className":5932,"style":488},[411,487],[390,5934],{"className":5935,"style":494},[493],[390,5937,452],{"className":5938},[411,412],[390,5940,428],{"className":5941},[427],"\noverall. The dispatch is driven entirely by the stored heights:",[5944,5945,5949],"pre",{"className":5946,"code":5947,"language":5948,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Insert-Fixup}$ — retrace the insertion path, repairing the lowest violation\n$x \\gets \\text{parent of the new leaf}$\nwhile $x \\ne \\text{nil}$ do\n  $h(x) \\gets 1 + \\max\\bigl(h(left(x)),\\, h(right(x))\\bigr)$\n  $b \\gets h(right(x)) - h(left(x))$ \u002F\u002F balance factor of $x$\n  if $b = -2$ then \u002F\u002F left-heavy: LL or LR\n    if $h(left(left(x))) \\ge h(right(left(x)))$ then\n      $\\textsc{Right-Rotate}(x)$ \u002F\u002F LL\n    else\n      $\\textsc{Left-Rotate}(left(x))$ ; $\\textsc{Right-Rotate}(x)$ \u002F\u002F LR\n    break \u002F\u002F height restored, ancestors safe\n  else if $b = +2$ then \u002F\u002F right-heavy: RR or RL\n    if $h(right(right(x))) \\ge h(left(right(x)))$ then\n      $\\textsc{Left-Rotate}(x)$ \u002F\u002F RR\n    else\n      $\\textsc{Right-Rotate}(right(x))$ ; $\\textsc{Left-Rotate}(x)$ \u002F\u002F RL\n    break\n  $x \\gets parent(x)$\n","algorithm",[5950,5951,5952,5958,5963,5968,5973,5978,5983,5988,5993,5998,6003,6008,6013,6019,6025,6030,6036,6042],"code",{"__ignoreMap":376},[390,5953,5955],{"class":5954,"line":6},"line",[390,5956,5957],{},"caption: $\\textsc{Insert-Fixup}$ — retrace the insertion path, repairing the lowest violation\n",[390,5959,5960],{"class":5954,"line":18},[390,5961,5962],{},"$x \\gets \\text{parent of the new leaf}$\n",[390,5964,5965],{"class":5954,"line":24},[390,5966,5967],{},"while $x \\ne \\text{nil}$ do\n",[390,5969,5970],{"class":5954,"line":73},[390,5971,5972],{},"  $h(x) \\gets 1 + \\max\\bigl(h(left(x)),\\, h(right(x))\\bigr)$\n",[390,5974,5975],{"class":5954,"line":102},[390,5976,5977],{},"  $b \\gets h(right(x)) - h(left(x))$ \u002F\u002F balance factor of $x$\n",[390,5979,5980],{"class":5954,"line":108},[390,5981,5982],{},"  if $b = -2$ then \u002F\u002F left-heavy: LL or LR\n",[390,5984,5985],{"class":5954,"line":116},[390,5986,5987],{},"    if $h(left(left(x))) \\ge h(right(left(x)))$ then\n",[390,5989,5990],{"class":5954,"line":196},[390,5991,5992],{},"      $\\textsc{Right-Rotate}(x)$ \u002F\u002F LL\n",[390,5994,5995],{"class":5954,"line":202},[390,5996,5997],{},"    else\n",[390,5999,6000],{"class":5954,"line":283},[390,6001,6002],{},"      $\\textsc{Left-Rotate}(left(x))$ ; $\\textsc{Right-Rotate}(x)$ \u002F\u002F LR\n",[390,6004,6005],{"class":5954,"line":333},[390,6006,6007],{},"    break \u002F\u002F height restored, ancestors safe\n",[390,6009,6010],{"class":5954,"line":354},[390,6011,6012],{},"  else if $b = +2$ then \u002F\u002F right-heavy: RR or RL\n",[390,6014,6016],{"class":5954,"line":6015},13,[390,6017,6018],{},"    if $h(right(right(x))) \\ge h(left(right(x)))$ then\n",[390,6020,6022],{"class":5954,"line":6021},14,[390,6023,6024],{},"      $\\textsc{Left-Rotate}(x)$ \u002F\u002F RR\n",[390,6026,6028],{"class":5954,"line":6027},15,[390,6029,5997],{},[390,6031,6033],{"class":5954,"line":6032},16,[390,6034,6035],{},"      $\\textsc{Right-Rotate}(right(x))$ ; $\\textsc{Left-Rotate}(x)$ \u002F\u002F RL\n",[390,6037,6039],{"class":5954,"line":6038},17,[390,6040,6041],{},"    break\n",[390,6043,6045],{"class":5954,"line":6044},18,[390,6046,6047],{},"  $x \\gets parent(x)$\n",[631,6049,6051],{"id":6050},"deletion-the-same-cases-but-up-the-whole-path","Deletion: the same cases, but up the whole path",[381,6053,6054,6055,6098,6099,6102,6103,6106,6107,6110,6111,6114,6115,6148,6149,6173,6174,677,6207],{},"Deletion starts as in a BST, splicing out the node, or its in-order successor if it\nhas two children, then retraces the path to the root updating heights, applying\nexactly the same four rotation cases at any node that reaches ",[390,6056,6058],{"className":6057},[393],[390,6059,6061,6089],{"className":6060,"ariaHidden":398},[397],[390,6062,6064,6067,6071,6074,6077,6080,6083,6086],{"className":6063},[402],[390,6065],{"className":6066,"style":407},[406],[390,6068,6070],{"className":6069},[411],"∣",[390,6072,789],{"className":6073},[411,412],[390,6075,794],{"className":6076,"style":793},[411,412],[390,6078,6070],{"className":6079},[411],[390,6081],{"className":6082,"style":742},[493],[390,6084,747],{"className":6085},[746],[390,6087],{"className":6088,"style":742},[493],[390,6090,6092,6095],{"className":6091},[402],[390,6093],{"className":6094,"style":673},[406],[390,6096,1066],{"className":6097},[411],". The one\ndifference is consequential. A rotation that repairs an ",[553,6100,6101],{},"insertion"," preserves the\nsubtree's height, but a rotation that repairs a ",[553,6104,6105],{},"deletion"," can ",[458,6108,6109],{},"shrink"," the\nsubtree by one. That shorter subtree may unbalance the node's parent, which may\nunbalance ",[553,6112,6113],{},"its"," parent, and so on. Deletion can therefore trigger up to\n",[390,6116,6118],{"className":6117},[393],[390,6119,6121],{"className":6120,"ariaHidden":398},[397],[390,6122,6124,6127,6130,6133,6139,6142,6145],{"className":6123},[402],[390,6125],{"className":6126,"style":407},[406],[390,6128,414],{"className":6129,"style":413},[411,412],[390,6131,419],{"className":6132},[418],[390,6134,6136],{"className":6135},[483],[390,6137,489],{"className":6138,"style":488},[411,487],[390,6140],{"className":6141,"style":494},[493],[390,6143,452],{"className":6144},[411,412],[390,6146,428],{"className":6147},[427]," rotations cascading toward the root, though each is still ",[390,6150,6152],{"className":6151},[393],[390,6153,6155],{"className":6154,"ariaHidden":398},[397],[390,6156,6158,6161,6164,6167,6170],{"className":6157},[402],[390,6159],{"className":6160,"style":407},[406],[390,6162,414],{"className":6163,"style":413},[411,412],[390,6165,419],{"className":6166},[418],[390,6168,515],{"className":6169},[411],[390,6171,428],{"className":6172},[427],", so\nthe operation remains ",[390,6175,6177],{"className":6176},[393],[390,6178,6180],{"className":6179,"ariaHidden":398},[397],[390,6181,6183,6186,6189,6192,6198,6201,6204],{"className":6182},[402],[390,6184],{"className":6185,"style":407},[406],[390,6187,414],{"className":6188,"style":413},[411,412],[390,6190,419],{"className":6191},[418],[390,6193,6195],{"className":6194},[483],[390,6196,489],{"className":6197,"style":488},[411,487],[390,6199],{"className":6200,"style":494},[493],[390,6202,452],{"className":6203},[411,412],[390,6205,428],{"className":6206},[427],[507,6208,6209],{},[385,6210,2182],{"href":3667,"ariaDescribedBy":6211,"dataFootnoteRef":376,"id":6212},[513],"user-content-fnref-skiena-avl-2",[3671,6214,6216,6405],{"className":6215},[3674,3675],[2647,6217,6221],{"xmlns":2649,"width":6218,"height":6219,"viewBox":6220},"217.182","249.315","-75 -75 162.887 186.987",[3682,6222,6223,6226,6234,6246,6249,6256,6259,6300,6336,6344,6397],{"stroke":3684,"style":3685},[2655,6224],{"fill":3696,"d":6225},"M8.71-5.977c0-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.959S8.709-.477 8.709-5.977Zm-9.96 0",[3682,6227,6229],{"transform":6228},"translate(-2.322 1.062)",[2655,6230],{"d":6231,"fill":3684,"stroke":3684,"className":6232,"style":6233},"M0.307-4.232L-1.438-4.232Q-1.473-4.232-1.506-4.270Q-1.539-4.307-1.539-4.338Q-1.539-4.408-1.506-4.476Q-1.473-4.544-1.412-4.544Q-1.117-4.544-1.012-4.595Q-0.906-4.645-0.845-4.878L0.166-8.904Q0.166-8.943 0.192-9.084Q0.219-9.225 0.219-9.299Q0.219-9.695-0.045-9.695Q-0.331-9.695-0.465-9.372Q-0.599-9.049-0.717-8.543Q-0.735-8.460-0.810-8.460L-0.915-8.460Q-0.963-8.460-0.985-8.499Q-1.007-8.539-1.007-8.579Q-0.845-9.198-0.645-9.576Q-0.445-9.954-0.023-9.954Q0.289-9.954 0.529-9.787Q0.768-9.620 0.838-9.326Q1.418-9.954 2.025-9.954Q2.420-9.954 2.706-9.750Q2.992-9.545 3.139-9.211Q3.286-8.877 3.286-8.486Q3.286-8.060 3.113-7.596Q2.939-7.133 2.631-6.742Q2.324-6.351 1.911-6.113Q1.498-5.876 1.054-5.876Q0.786-5.876 0.570-6.017Q0.355-6.157 0.219-6.399L-0.177-4.817Q-0.186-4.764-0.194-4.722Q-0.203-4.681-0.203-4.654Q-0.203-4.544 0.373-4.544Q0.417-4.544 0.443-4.514Q0.469-4.483 0.469-4.430Q0.469-4.232 0.307-4.232M1.071-6.140Q1.440-6.140 1.744-6.463Q2.047-6.786 2.205-7.181Q2.350-7.537 2.471-8.045Q2.592-8.552 2.592-8.873Q2.592-9.203 2.449-9.449Q2.306-9.695 2.007-9.695Q1.410-9.695 0.838-8.895Q0.838-8.864 0.830-8.855L0.342-6.904Q0.408-6.583 0.590-6.362Q0.772-6.140 1.071-6.140",[3705],"stroke-width:0.270",[3682,6235,6236,6239],{"fill":3688,"stroke":3689,"style":3690},[2655,6237],{"d":6238},"M-25.434 31.012c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.458-9.959 9.958 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[3682,6240,6242],{"transform":6241},"translate(-36.489 38.926)",[2655,6243],{"d":6244,"fill":3684,"stroke":3684,"className":6245,"style":6233},"M-0.682-5.876L-0.792-5.876Q-0.832-5.876-0.856-5.907Q-0.880-5.937-0.880-5.977Q-0.880-6.012-0.862-6.030Q-0.607-6.460-0.262-6.834Q0.083-7.207 0.518-7.588Q0.953-7.968 1.394-8.354Q1.836-8.741 2.117-9.044Q1.990-9.044 1.794-9.091Q1.599-9.137 1.447-9.181Q1.295-9.225 1.164-9.253Q1.032-9.282 0.882-9.282Q0.641-9.282 0.417-9.187Q0.192-9.093 0.135-8.886Q0.118-8.803 0.047-8.803L-0.062-8.803Q-0.150-8.803-0.150-8.921Q-0.089-9.163 0.085-9.409Q0.258-9.655 0.498-9.805Q0.737-9.954 1.010-9.954Q1.190-9.954 1.331-9.862Q1.471-9.769 1.621-9.613Q1.770-9.457 1.876-9.383Q1.981-9.308 2.126-9.308Q2.293-9.308 2.409-9.425Q2.526-9.541 2.662-9.743Q2.798-9.945 2.855-9.954L2.961-9.954Q2.996-9.954 3.025-9.925Q3.053-9.897 3.053-9.857Q3.053-9.827 3.036-9.809Q2.710-9.264 2.273-8.829Q1.836-8.394 1.124-7.785Q0.412-7.177 0.039-6.768L0.056-6.768Q0.162-6.786 0.210-6.786Q0.386-6.786 0.603-6.728Q0.821-6.671 1.036-6.612Q1.251-6.553 1.432-6.553Q1.792-6.553 2.117-6.764Q2.442-6.975 2.522-7.300Q2.530-7.331 2.554-7.355Q2.579-7.379 2.614-7.379L2.719-7.379Q2.768-7.379 2.790-7.346Q2.812-7.313 2.812-7.265Q2.732-6.922 2.517-6.601Q2.302-6.280 1.985-6.078Q1.669-5.876 1.317-5.876Q1.137-5.876 1.010-5.957Q0.882-6.039 0.733-6.197Q0.584-6.355 0.467-6.441Q0.351-6.526 0.201-6.526Q-0.019-6.526-0.188-6.394Q-0.357-6.263-0.506-6.071Q-0.656-5.880-0.682-5.876",[3705],[2655,6247],{"fill":3696,"d":6248},"M32.894 14.598 21.296 37.36h23.196Z",[3682,6250,6252],{"transform":6251},"translate(31.802 39.42)",[2655,6253],{"d":6254,"fill":3684,"stroke":3684,"className":6255,"style":3706},"M-0.723-6.138Q-0.723-6.179-0.716-6.203L0.275-10.198Q0.313-10.294 0.313-10.386Q0.313-10.478-0.121-10.478Q-0.207-10.506-0.207-10.591L-0.179-10.701Q-0.172-10.742-0.101-10.759L0.880-10.834Q0.925-10.834 0.954-10.808Q0.983-10.783 0.983-10.731L0.433-8.503Q0.658-8.766 0.942-8.915Q1.226-9.063 1.543-9.063Q1.960-9.063 2.213-8.867Q2.466-8.670 2.466-8.274Q2.466-7.823 2.012-6.705Q1.937-6.510 1.937-6.363Q1.937-6.131 2.104-6.131Q2.381-6.131 2.574-6.408Q2.767-6.685 2.846-7.006Q2.870-7.067 2.924-7.067L3.034-7.067Q3.068-7.067 3.090-7.042Q3.112-7.016 3.112-6.985Q3.112-6.972 3.105-6.958Q3.044-6.708 2.904-6.467Q2.764-6.227 2.553-6.068Q2.343-5.909 2.090-5.909Q1.807-5.909 1.605-6.071Q1.403-6.233 1.403-6.503Q1.403-6.626 1.455-6.753Q1.660-7.272 1.791-7.677Q1.923-8.082 1.923-8.370Q1.923-8.578 1.827-8.710Q1.731-8.841 1.530-8.841Q1.109-8.841 0.795-8.554Q0.480-8.267 0.262-7.833L-0.159-6.151Q-0.189-6.049-0.283-5.979Q-0.377-5.909-0.480-5.909Q-0.579-5.909-0.651-5.972Q-0.723-6.035-0.723-6.138",[3705],[2655,6257],{"fill":3696,"d":6258},"m-58.155 55.133-7.248 14.227h14.497ZM-12.63 55.133-19.88 69.36h14.497ZM-8.14 1.487-28.23 23.254M5.64 1.487l21.72 23.53M-41.249 39.797l-13.884 20.826M-29.536 39.797l13.884 20.826",[3682,6260,6261],{"fill":3689,"stroke":3689},[3682,6262,6263,6270,6276,6282,6288,6294],{"fill":3689,"stroke":3696,"fontSize":3697},[3682,6264,6266],{"transform":6265},"translate(-53.724 99.644)",[2655,6267],{"d":6268,"fill":3689,"stroke":3689,"className":6269,"style":3706},"M6.604-13.977L4.868-13.977L4.868-14.257Q5.097-14.257 5.246-14.291Q5.394-14.326 5.394-14.466L5.394-16.315Q5.394-16.585 5.287-16.646Q5.179-16.708 4.868-16.708L4.868-16.988L5.897-17.063L5.897-16.356Q6.027-16.664 6.269-16.863Q6.512-17.063 6.830-17.063Q7.049-17.063 7.220-16.939Q7.391-16.814 7.391-16.602Q7.391-16.465 7.291-16.366Q7.192-16.267 7.059-16.267Q6.922-16.267 6.823-16.366Q6.724-16.465 6.724-16.602Q6.724-16.742 6.823-16.841Q6.533-16.841 6.333-16.645Q6.133-16.448 6.040-16.154Q5.948-15.860 5.948-15.580L5.948-14.466Q5.948-14.257 6.604-14.257L6.604-13.977M7.934-15.460Q7.934-15.802 8.069-16.101Q8.204-16.400 8.443-16.624Q8.683-16.848 9-16.973Q9.318-17.098 9.650-17.098Q10.094-17.098 10.494-16.882Q10.894-16.667 11.128-16.289Q11.362-15.912 11.362-15.460Q11.362-15.119 11.220-14.835Q11.079-14.551 10.834-14.344Q10.590-14.138 10.280-14.023Q9.971-13.909 9.650-13.909Q9.219-13.909 8.818-14.110Q8.416-14.312 8.175-14.664Q7.934-15.016 7.934-15.460M9.650-14.158Q10.251-14.158 10.475-14.536Q10.699-14.914 10.699-15.546Q10.699-16.158 10.465-16.517Q10.231-16.875 9.650-16.875Q8.597-16.875 8.597-15.546Q8.597-14.914 8.823-14.536Q9.048-14.158 9.650-14.158M12.483-14.818L12.483-16.715L11.844-16.715L11.844-16.937Q12.162-16.937 12.379-17.147Q12.596-17.357 12.697-17.667Q12.798-17.976 12.798-18.284L13.064-18.284L13.064-16.995L14.141-16.995L14.141-16.715L13.064-16.715L13.064-14.831Q13.064-14.555 13.169-14.356Q13.273-14.158 13.533-14.158Q13.690-14.158 13.796-14.262Q13.902-14.367 13.951-14.520Q14.001-14.674 14.001-14.831L14.001-15.245L14.268-15.245L14.268-14.818Q14.268-14.592 14.168-14.382Q14.069-14.172 13.885-14.040Q13.700-13.909 13.471-13.909Q13.034-13.909 12.759-14.146Q12.483-14.384 12.483-14.818M15.136-14.705Q15.136-15.037 15.360-15.264Q15.583-15.491 15.927-15.619Q16.270-15.748 16.643-15.800Q17.016-15.853 17.320-15.853L17.320-16.106Q17.320-16.311 17.212-16.491Q17.104-16.670 16.923-16.773Q16.742-16.875 16.534-16.875Q16.127-16.875 15.891-16.783Q15.980-16.746 16.026-16.662Q16.072-16.578 16.072-16.476Q16.072-16.380 16.026-16.301Q15.980-16.223 15.900-16.178Q15.819-16.134 15.730-16.134Q15.580-16.134 15.479-16.231Q15.378-16.329 15.378-16.476Q15.378-17.098 16.534-17.098Q16.746-17.098 16.995-17.034Q17.245-16.971 17.446-16.852Q17.648-16.732 17.774-16.547Q17.901-16.363 17.901-16.120L17.901-14.544Q17.901-14.428 17.962-14.332Q18.024-14.237 18.137-14.237Q18.246-14.237 18.311-14.331Q18.376-14.425 18.376-14.544L18.376-14.992L18.643-14.992L18.643-14.544Q18.643-14.274 18.415-14.109Q18.188-13.943 17.908-13.943Q17.699-13.943 17.562-14.097Q17.426-14.250 17.402-14.466Q17.255-14.199 16.973-14.054Q16.691-13.909 16.366-13.909Q16.089-13.909 15.806-13.984Q15.522-14.059 15.329-14.238Q15.136-14.418 15.136-14.705M15.751-14.705Q15.751-14.531 15.852-14.401Q15.953-14.271 16.108-14.201Q16.264-14.131 16.428-14.131Q16.646-14.131 16.855-14.228Q17.063-14.326 17.192-14.507Q17.320-14.688 17.320-14.914L17.320-15.642Q16.995-15.642 16.629-15.551Q16.264-15.460 16.007-15.248Q15.751-15.037 15.751-14.705M19.586-14.818L19.586-16.715L18.947-16.715L18.947-16.937Q19.265-16.937 19.482-17.147Q19.699-17.357 19.800-17.667Q19.900-17.976 19.900-18.284L20.167-18.284L20.167-16.995L21.244-16.995L21.244-16.715L20.167-16.715L20.167-14.831Q20.167-14.555 20.271-14.356Q20.375-14.158 20.635-14.158Q20.792-14.158 20.898-14.262Q21.004-14.367 21.054-14.520Q21.103-14.674 21.103-14.831L21.103-15.245L21.370-15.245L21.370-14.818Q21.370-14.592 21.271-14.382Q21.172-14.172 20.987-14.040Q20.803-13.909 20.574-13.909Q20.136-13.909 19.861-14.146Q19.586-14.384 19.586-14.818M22.139-15.512Q22.139-15.833 22.264-16.122Q22.389-16.411 22.614-16.634Q22.840-16.858 23.135-16.978Q23.431-17.098 23.749-17.098Q24.077-17.098 24.339-16.998Q24.600-16.899 24.776-16.717Q24.952-16.534 25.046-16.276Q25.140-16.018 25.140-15.686Q25.140-15.594 25.058-15.573L22.802-15.573L22.802-15.512Q22.802-14.924 23.086-14.541Q23.370-14.158 23.937-14.158Q24.258-14.158 24.527-14.351Q24.795-14.544 24.884-14.859Q24.891-14.900 24.966-14.914L25.058-14.914Q25.140-14.890 25.140-14.818Q25.140-14.811 25.133-14.784Q25.020-14.387 24.650-14.148Q24.279-13.909 23.855-13.909Q23.417-13.909 23.018-14.117Q22.618-14.326 22.378-14.693Q22.139-15.060 22.139-15.512M22.809-15.782L24.624-15.782Q24.624-16.059 24.527-16.311Q24.429-16.564 24.231-16.720Q24.033-16.875 23.749-16.875Q23.472-16.875 23.259-16.717Q23.045-16.558 22.927-16.303Q22.809-16.048 22.809-15.782M25.728-15.488Q25.728-15.826 25.868-16.117Q26.008-16.407 26.253-16.621Q26.497-16.834 26.801-16.949Q27.105-17.063 27.430-17.063Q27.700-17.063 27.963-16.964Q28.227-16.865 28.418-16.687L28.418-18.085Q28.418-18.355 28.310-18.417Q28.203-18.478 27.892-18.478L27.892-18.759L28.968-18.834L28.968-14.650Q28.968-14.462 29.023-14.379Q29.078-14.295 29.178-14.276Q29.279-14.257 29.495-14.257L29.495-13.977L28.387-13.909L28.387-14.326Q27.970-13.909 27.345-13.909Q26.914-13.909 26.541-14.121Q26.169-14.332 25.948-14.693Q25.728-15.054 25.728-15.488M27.403-14.131Q27.611-14.131 27.798-14.203Q27.984-14.274 28.138-14.411Q28.291-14.548 28.387-14.726L28.387-16.335Q28.302-16.482 28.156-16.602Q28.011-16.722 27.842-16.781Q27.673-16.841 27.492-16.841Q26.931-16.841 26.663-16.452Q26.394-16.062 26.394-15.481Q26.394-14.910 26.629-14.520Q26.863-14.131 27.403-14.131M30.544-14.397Q30.544-14.565 30.667-14.688Q30.790-14.811 30.964-14.811Q31.132-14.811 31.255-14.688Q31.378-14.565 31.378-14.397Q31.378-14.223 31.255-14.100Q31.132-13.977 30.964-13.977Q30.790-13.977 30.667-14.100Q30.544-14.223 30.544-14.397M30.544-16.581Q30.544-16.749 30.667-16.872Q30.790-16.995 30.964-16.995Q31.132-16.995 31.255-16.872Q31.378-16.749 31.378-16.581Q31.378-16.407 31.255-16.284Q31.132-16.161 30.964-16.161Q30.790-16.161 30.667-16.284Q30.544-16.407 30.544-16.581",[3705],[3682,6271,6272],{"transform":6265},[2655,6273],{"d":6274,"fill":3689,"stroke":3689,"className":6275,"style":3706},"M0.747-5.977L-0.887-5.977L-0.887-6.257Q-0.658-6.257-0.509-6.291Q-0.360-6.326-0.360-6.466L-0.360-10.085Q-0.360-10.355-0.468-10.417Q-0.576-10.478-0.887-10.478L-0.887-10.759L0.193-10.834L0.193-8.448Q0.299-8.633 0.477-8.775Q0.655-8.916 0.863-8.990Q1.072-9.063 1.297-9.063Q1.803-9.063 2.087-8.840Q2.371-8.616 2.371-8.120L2.371-6.466Q2.371-6.329 2.519-6.293Q2.668-6.257 2.894-6.257L2.894-5.977L1.263-5.977L1.263-6.257Q1.492-6.257 1.641-6.291Q1.790-6.326 1.790-6.466L1.790-8.106Q1.790-8.441 1.670-8.641Q1.550-8.841 1.236-8.841Q0.966-8.841 0.732-8.705Q0.498-8.568 0.359-8.334Q0.221-8.100 0.221-7.826L0.221-6.466Q0.221-6.329 0.371-6.293Q0.522-6.257 0.747-6.257L0.747-5.977M3.440-7.512Q3.440-7.833 3.565-8.122Q3.690-8.411 3.916-8.634Q4.141-8.858 4.437-8.978Q4.732-9.098 5.050-9.098Q5.378-9.098 5.640-8.998Q5.901-8.899 6.077-8.717Q6.253-8.534 6.347-8.276Q6.441-8.018 6.441-7.686Q6.441-7.594 6.359-7.573L4.104-7.573L4.104-7.512Q4.104-6.924 4.387-6.541Q4.671-6.158 5.238-6.158Q5.560-6.158 5.828-6.351Q6.096-6.544 6.185-6.859Q6.192-6.900 6.267-6.914L6.359-6.914Q6.441-6.890 6.441-6.818Q6.441-6.811 6.435-6.784Q6.322-6.387 5.951-6.148Q5.580-5.909 5.156-5.909Q4.719-5.909 4.319-6.117Q3.919-6.326 3.680-6.693Q3.440-7.060 3.440-7.512M4.110-7.782L5.925-7.782Q5.925-8.059 5.828-8.311Q5.730-8.564 5.532-8.720Q5.334-8.875 5.050-8.875Q4.773-8.875 4.560-8.717Q4.346-8.558 4.228-8.303Q4.110-8.048 4.110-7.782M8.646-5.977L7.094-5.977L7.094-6.257Q7.320-6.257 7.469-6.291Q7.617-6.326 7.617-6.466L7.617-8.315Q7.617-8.503 7.569-8.587Q7.522-8.670 7.424-8.689Q7.327-8.708 7.115-8.708L7.115-8.988L8.171-9.063L8.171-6.466Q8.171-6.326 8.303-6.291Q8.434-6.257 8.646-6.257L8.646-5.977M7.375-10.284Q7.375-10.455 7.498-10.574Q7.621-10.694 7.792-10.694Q7.959-10.694 8.082-10.574Q8.205-10.455 8.205-10.284Q8.205-10.109 8.082-9.986Q7.959-9.863 7.792-9.863Q7.621-9.863 7.498-9.986Q7.375-10.109 7.375-10.284M9.251-5.444Q9.251-5.690 9.448-5.874Q9.644-6.059 9.900-6.138Q9.764-6.250 9.692-6.411Q9.620-6.572 9.620-6.753Q9.620-7.074 9.832-7.320Q9.497-7.618 9.497-8.028Q9.497-8.489 9.887-8.776Q10.276-9.063 10.755-9.063Q11.227-9.063 11.562-8.817Q11.736-8.971 11.946-9.053Q12.156-9.135 12.385-9.135Q12.549-9.135 12.671-9.028Q12.792-8.920 12.792-8.756Q12.792-8.660 12.720-8.588Q12.648-8.517 12.556-8.517Q12.457-8.517 12.387-8.590Q12.317-8.664 12.317-8.763Q12.317-8.817 12.331-8.848L12.337-8.862Q12.344-8.882 12.353-8.893Q12.361-8.903 12.365-8.910Q12.009-8.910 11.722-8.687Q12.009-8.394 12.009-8.028Q12.009-7.713 11.825-7.481Q11.640-7.248 11.351-7.120Q11.063-6.992 10.755-6.992Q10.553-6.992 10.362-7.042Q10.170-7.091 9.993-7.201Q9.900-7.074 9.900-6.931Q9.900-6.749 10.029-6.614Q10.157-6.479 10.341-6.479L10.974-6.479Q11.421-6.479 11.791-6.408Q12.160-6.336 12.419-6.107Q12.679-5.878 12.679-5.444Q12.679-5.123 12.384-4.921Q12.088-4.719 11.685-4.630Q11.281-4.541 10.967-4.541Q10.649-4.541 10.246-4.630Q9.842-4.719 9.547-4.921Q9.251-5.123 9.251-5.444M9.706-5.444Q9.706-5.215 9.924-5.066Q10.143-4.917 10.435-4.849Q10.728-4.781 10.967-4.781Q11.131-4.781 11.339-4.817Q11.548-4.852 11.755-4.933Q11.961-5.013 12.093-5.141Q12.225-5.269 12.225-5.444Q12.225-5.796 11.844-5.890Q11.462-5.984 10.960-5.984L10.341-5.984Q10.102-5.984 9.904-5.833Q9.706-5.683 9.706-5.444M10.755-7.231Q11.421-7.231 11.421-8.028Q11.421-8.828 10.755-8.828Q10.085-8.828 10.085-8.028Q10.085-7.231 10.755-7.231M14.956-5.977L13.322-5.977L13.322-6.257Q13.551-6.257 13.699-6.291Q13.848-6.326 13.848-6.466L13.848-10.085Q13.848-10.355 13.741-10.417Q13.633-10.478 13.322-10.478L13.322-10.759L14.402-10.834L14.402-8.448Q14.508-8.633 14.686-8.775Q14.863-8.916 15.072-8.990Q15.280-9.063 15.506-9.063Q16.012-9.063 16.295-8.840Q16.579-8.616 16.579-8.120L16.579-6.466Q16.579-6.329 16.728-6.293Q16.876-6.257 17.102-6.257L17.102-5.977L15.472-5.977L15.472-6.257Q15.701-6.257 15.849-6.291Q15.998-6.326 15.998-6.466L15.998-8.106Q15.998-8.441 15.878-8.641Q15.759-8.841 15.444-8.841Q15.174-8.841 14.940-8.705Q14.706-8.568 14.568-8.334Q14.429-8.100 14.429-7.826L14.429-6.466Q14.429-6.329 14.580-6.293Q14.730-6.257 14.956-6.257",[3705],[3682,6277,6278],{"transform":6265},[2655,6279],{"d":6280,"fill":3689,"stroke":3689,"className":6281,"style":3706},"M18.015-6.818L18.015-8.715L17.376-8.715L17.376-8.937Q17.694-8.937 17.911-9.147Q18.128-9.357 18.228-9.667Q18.329-9.976 18.329-10.284L18.596-10.284L18.596-8.995L19.673-8.995L19.673-8.715L18.596-8.715L18.596-6.831Q18.596-6.555 18.700-6.356Q18.804-6.158 19.064-6.158Q19.221-6.158 19.327-6.262Q19.433-6.367 19.483-6.520Q19.532-6.674 19.532-6.831L19.532-7.245L19.799-7.245L19.799-6.818Q19.799-6.592 19.700-6.382Q19.601-6.172 19.416-6.040Q19.232-5.909 19.003-5.909Q18.565-5.909 18.290-6.146Q18.015-6.384 18.015-6.818",[3705],[3682,6283,6284],{"transform":6265},[2655,6285],{"d":6286,"fill":3689,"stroke":3689,"className":6287,"style":3706},"M23.520-6.138Q23.520-6.179 23.527-6.203L24.518-10.198Q24.556-10.294 24.556-10.386Q24.556-10.478 24.122-10.478Q24.036-10.506 24.036-10.591L24.064-10.701Q24.071-10.742 24.142-10.759L25.123-10.834Q25.168-10.834 25.197-10.808Q25.226-10.783 25.226-10.731L24.676-8.503Q24.901-8.766 25.185-8.915Q25.469-9.063 25.786-9.063Q26.203-9.063 26.456-8.867Q26.709-8.670 26.709-8.274Q26.709-7.823 26.255-6.705Q26.180-6.510 26.180-6.363Q26.180-6.131 26.347-6.131Q26.624-6.131 26.817-6.408Q27.010-6.685 27.089-7.006Q27.113-7.067 27.167-7.067L27.277-7.067Q27.311-7.067 27.333-7.042Q27.355-7.016 27.355-6.985Q27.355-6.972 27.348-6.958Q27.287-6.708 27.147-6.467Q27.007-6.227 26.796-6.068Q26.586-5.909 26.333-5.909Q26.050-5.909 25.848-6.071Q25.646-6.233 25.646-6.503Q25.646-6.626 25.698-6.753Q25.903-7.272 26.034-7.677Q26.166-8.082 26.166-8.370Q26.166-8.578 26.070-8.710Q25.974-8.841 25.773-8.841Q25.352-8.841 25.038-8.554Q24.723-8.267 24.505-7.833L24.084-6.151Q24.054-6.049 23.960-5.979Q23.866-5.909 23.763-5.909Q23.664-5.909 23.592-5.972Q23.520-6.035 23.520-6.138",[3705],[3682,6289,6290],{"transform":6265},[2655,6291],{"d":6292,"fill":3689,"stroke":3689,"className":6293,"style":3706},"M33.005-7.553L28.592-7.553Q28.524-7.563 28.478-7.609Q28.431-7.655 28.431-7.727Q28.431-7.871 28.592-7.894L33.005-7.894Q33.165-7.871 33.165-7.727Q33.165-7.655 33.119-7.609Q33.073-7.563 33.005-7.553",[3705],[3682,6295,6296],{"transform":6265},[2655,6297],{"d":6298,"fill":3689,"stroke":3689,"className":6299,"style":3706},"M37.252-5.977L34.722-5.977L34.722-6.257Q35.690-6.257 35.690-6.466L35.690-10.085Q35.297-9.897 34.675-9.897L34.675-10.178Q35.092-10.178 35.456-10.279Q35.820-10.379 36.076-10.625L36.202-10.625Q36.267-10.608 36.284-10.540L36.284-6.466Q36.284-6.257 37.252-6.257",[3705],[3682,6301,6303],{"fill":6302,"stroke":6302},"var(--tk-warn)",[3682,6304,6305,6312,6318,6324,6330],{"fill":6302,"stroke":3696,"fontSize":3697},[3682,6306,6308],{"transform":6307},"translate(63.621 2.245)",[2655,6309],{"d":6310,"fill":6302,"stroke":6302,"className":6311,"style":3706},"M0.234-12.620L-1.181-12.620Q-1.211-12.620-1.240-12.656Q-1.270-12.692-1.270-12.723L-1.235-12.835Q-1.208-12.894-1.157-12.900Q-0.931-12.900-0.851-12.938Q-0.770-12.976-0.723-13.143L0.053-16.267Q0.087-16.394 0.087-16.510Q0.087-16.650 0.034-16.746Q-0.019-16.841-0.142-16.841Q-0.364-16.841-0.465-16.614Q-0.565-16.387-0.675-15.966Q-0.685-15.901-0.747-15.901L-0.856-15.901Q-0.887-15.901-0.911-15.932Q-0.935-15.963-0.935-15.987L-0.935-16.014Q-0.822-16.448-0.641-16.756Q-0.459-17.063-0.128-17.063Q0.125-17.063 0.339-16.937Q0.552-16.810 0.614-16.588Q0.822-16.804 1.075-16.934Q1.328-17.063 1.591-17.063Q1.913-17.063 2.159-16.908Q2.405-16.752 2.535-16.486Q2.665-16.219 2.665-15.894Q2.665-15.542 2.519-15.190Q2.374-14.838 2.123-14.550Q1.872-14.261 1.537-14.085Q1.202-13.909 0.843-13.909Q0.392-13.909 0.139-14.298L-0.166-13.095Q-0.186-13.034-0.186-12.969Q-0.186-12.900 0.255-12.900Q0.340-12.873 0.340-12.788L0.313-12.675Q0.286-12.627 0.234-12.620M0.614-16.202L0.241-14.726Q0.303-14.476 0.460-14.303Q0.617-14.131 0.856-14.131Q1.065-14.131 1.255-14.257Q1.444-14.384 1.581-14.573Q1.718-14.763 1.803-14.965Q1.909-15.228 1.993-15.595Q2.077-15.963 2.077-16.195Q2.077-16.349 2.025-16.501Q1.974-16.653 1.861-16.747Q1.749-16.841 1.578-16.841Q1.297-16.841 1.053-16.658Q0.809-16.476 0.614-16.202",[3705],[3682,6313,6314],{"transform":6307},[2655,6315],{"d":6316,"fill":6302,"stroke":6302,"className":6317,"style":3706},"M7.564-13.977L5.930-13.977L5.930-14.257Q6.159-14.257 6.308-14.291Q6.457-14.326 6.457-14.466L6.457-16.315Q6.457-16.585 6.349-16.646Q6.241-16.708 5.930-16.708L5.930-16.988L6.990-17.063L6.990-16.414Q7.161-16.722 7.465-16.893Q7.769-17.063 8.114-17.063Q8.620-17.063 8.904-16.840Q9.188-16.616 9.188-16.120L9.188-14.466Q9.188-14.329 9.336-14.293Q9.485-14.257 9.711-14.257L9.711-13.977L8.080-13.977L8.080-14.257Q8.309-14.257 8.458-14.291Q8.607-14.326 8.607-14.466L8.607-16.106Q8.607-16.441 8.487-16.641Q8.367-16.841 8.053-16.841Q7.783-16.841 7.549-16.705Q7.315-16.568 7.176-16.334Q7.038-16.100 7.038-15.826L7.038-14.466Q7.038-14.329 7.188-14.293Q7.339-14.257 7.564-14.257L7.564-13.977M10.257-15.460Q10.257-15.802 10.392-16.101Q10.527-16.400 10.767-16.624Q11.006-16.848 11.324-16.973Q11.642-17.098 11.973-17.098Q12.418-17.098 12.818-16.882Q13.217-16.667 13.452-16.289Q13.686-15.912 13.686-15.460Q13.686-15.119 13.544-14.835Q13.402-14.551 13.158-14.344Q12.913-14.138 12.604-14.023Q12.295-13.909 11.973-13.909Q11.543-13.909 11.141-14.110Q10.739-14.312 10.498-14.664Q10.257-15.016 10.257-15.460M11.973-14.158Q12.575-14.158 12.799-14.536Q13.023-14.914 13.023-15.546Q13.023-16.158 12.788-16.517Q12.554-16.875 11.973-16.875Q10.921-16.875 10.921-15.546Q10.921-14.914 11.146-14.536Q11.372-14.158 11.973-14.158",[3705],[3682,6319,6320],{"transform":6307},[2655,6321],{"d":6322,"fill":6302,"stroke":6302,"className":6323,"style":3706},"M15.457-14.004L14.476-16.503Q14.415-16.646 14.297-16.681Q14.179-16.715 13.963-16.715L13.963-16.995L15.443-16.995L15.443-16.715Q15.064-16.715 15.064-16.554Q15.064-16.544 15.078-16.503L15.792-14.671L16.465-16.376Q16.435-16.448 16.435-16.476Q16.435-16.503 16.407-16.503Q16.346-16.650 16.228-16.682Q16.110-16.715 15.898-16.715L15.898-16.995L17.296-16.995L17.296-16.715Q16.920-16.715 16.920-16.554Q16.920-16.523 16.927-16.503L17.682-14.565L18.369-16.315Q18.390-16.366 18.390-16.421Q18.390-16.561 18.277-16.638Q18.164-16.715 18.024-16.715L18.024-16.995L19.244-16.995L19.244-16.715Q19.039-16.715 18.884-16.609Q18.728-16.503 18.656-16.315L17.751-14.004Q17.716-13.909 17.604-13.909L17.535-13.909Q17.426-13.909 17.388-14.004L16.606-16.007L15.819-14.004Q15.785-13.909 15.672-13.909L15.604-13.909Q15.495-13.909 15.457-14.004",[3705],[3682,6325,6326],{"transform":6307},[2655,6327],{"d":6328,"fill":6302,"stroke":6302,"className":6329,"style":3706},"M9.526-5.782L4.697-5.782Q4.536-5.806 4.536-5.950Q4.536-6.100 4.697-6.124L6.942-6.124L6.942-8.195L4.697-8.195Q4.632-8.206 4.584-8.253Q4.536-8.301 4.536-8.370Q4.536-8.510 4.697-8.540L6.942-8.540L6.942-10.793Q6.946-10.858 6.995-10.906Q7.045-10.954 7.110-10.954Q7.178-10.954 7.228-10.907Q7.277-10.861 7.287-10.793L7.287-8.540L9.526-8.540Q9.687-8.510 9.687-8.370Q9.687-8.301 9.639-8.253Q9.591-8.206 9.526-8.195L7.287-8.195L7.287-6.124L9.526-6.124Q9.687-6.100 9.687-5.950Q9.687-5.806 9.526-5.782",[3705],[3682,6331,6332],{"transform":6307},[2655,6333],{"d":6334,"fill":6302,"stroke":6302,"className":6335,"style":3706},"M13.565-5.977L10.680-5.977L10.680-6.179Q10.680-6.209 10.707-6.237L11.955-7.454Q12.027-7.529 12.069-7.571Q12.112-7.614 12.191-7.693Q12.604-8.106 12.835-8.464Q13.066-8.821 13.066-9.245Q13.066-9.477 12.987-9.680Q12.908-9.884 12.767-10.034Q12.625-10.185 12.430-10.265Q12.235-10.345 12.003-10.345Q11.692-10.345 11.434-10.186Q11.176-10.027 11.046-9.750L11.066-9.750Q11.234-9.750 11.341-9.639Q11.449-9.528 11.449-9.364Q11.449-9.207 11.340-9.094Q11.230-8.981 11.066-8.981Q10.906-8.981 10.793-9.094Q10.680-9.207 10.680-9.364Q10.680-9.740 10.888-10.027Q11.097-10.314 11.432-10.470Q11.767-10.625 12.122-10.625Q12.546-10.625 12.926-10.467Q13.305-10.308 13.539-9.991Q13.773-9.675 13.773-9.245Q13.773-8.934 13.633-8.665Q13.493-8.397 13.288-8.192Q13.083-7.987 12.720-7.705Q12.358-7.423 12.249-7.327L11.394-6.599L12.037-6.599Q12.300-6.599 12.589-6.601Q12.878-6.602 13.096-6.611Q13.315-6.620 13.332-6.637Q13.394-6.702 13.431-6.869Q13.469-7.037 13.507-7.279L13.773-7.279",[3705],[3682,6337,6338,6341],{"fill":6302,"stroke":6302},[2655,6339],{"fill":3696,"d":6340},"M52.81-5.977h-41.9",[2655,6342],{"stroke":3696,"d":6343},"m8.91-5.977 3.2 1.6-1.2-1.6 1.2-1.6",[3682,6345,6346],{"fill":6302,"stroke":6302},[3682,6347,6348,6355,6361,6367,6373,6379,6385,6391],{"fill":6302,"stroke":3696,"fontSize":3697},[3682,6349,6351],{"transform":6350},"translate(-29.19 -35.239)",[2655,6352],{"d":6353,"fill":6302,"stroke":6302,"className":6354,"style":3706},"M-0.408-6.818L-0.408-8.715L-1.047-8.715L-1.047-8.937Q-0.729-8.937-0.512-9.147Q-0.295-9.357-0.195-9.667Q-0.094-9.976-0.094-10.284L0.173-10.284L0.173-8.995L1.250-8.995L1.250-8.715L0.173-8.715L0.173-6.831Q0.173-6.555 0.277-6.356Q0.381-6.158 0.641-6.158Q0.798-6.158 0.904-6.262Q1.010-6.367 1.060-6.520Q1.109-6.674 1.109-6.831L1.109-7.245L1.376-7.245L1.376-6.818Q1.376-6.592 1.277-6.382Q1.178-6.172 0.993-6.040Q0.809-5.909 0.580-5.909Q0.142-5.909-0.133-6.146Q-0.408-6.384-0.408-6.818M2.145-7.460Q2.145-7.802 2.280-8.101Q2.415-8.400 2.654-8.624Q2.894-8.848 3.211-8.973Q3.529-9.098 3.861-9.098Q4.305-9.098 4.705-8.882Q5.105-8.667 5.339-8.289Q5.573-7.912 5.573-7.460Q5.573-7.119 5.431-6.835Q5.290-6.551 5.045-6.344Q4.801-6.138 4.491-6.023Q4.182-5.909 3.861-5.909Q3.430-5.909 3.029-6.110Q2.627-6.312 2.386-6.664Q2.145-7.016 2.145-7.460M3.861-6.158Q4.462-6.158 4.686-6.536Q4.910-6.914 4.910-7.546Q4.910-8.158 4.676-8.517Q4.442-8.875 3.861-8.875Q2.808-8.875 2.808-7.546Q2.808-6.914 3.034-6.536Q3.259-6.158 3.861-6.158",[3705],[3682,6356,6357],{"transform":6350},[2655,6358],{"d":6359,"fill":6302,"stroke":6302,"className":6360,"style":3706},"M10.039-4.620L8.624-4.620Q8.594-4.620 8.565-4.656Q8.535-4.692 8.535-4.723L8.570-4.835Q8.597-4.894 8.648-4.900Q8.874-4.900 8.954-4.938Q9.035-4.976 9.082-5.143L9.858-8.267Q9.892-8.394 9.892-8.510Q9.892-8.650 9.839-8.746Q9.786-8.841 9.663-8.841Q9.441-8.841 9.340-8.614Q9.240-8.387 9.130-7.966Q9.120-7.901 9.058-7.901L8.949-7.901Q8.918-7.901 8.894-7.932Q8.870-7.963 8.870-7.987L8.870-8.014Q8.983-8.448 9.164-8.756Q9.346-9.063 9.677-9.063Q9.930-9.063 10.144-8.937Q10.357-8.810 10.419-8.588Q10.627-8.804 10.880-8.934Q11.133-9.063 11.396-9.063Q11.718-9.063 11.964-8.908Q12.210-8.752 12.340-8.486Q12.470-8.219 12.470-7.894Q12.470-7.542 12.324-7.190Q12.179-6.838 11.928-6.550Q11.677-6.261 11.342-6.085Q11.007-5.909 10.648-5.909Q10.197-5.909 9.944-6.298L9.639-5.095Q9.619-5.034 9.619-4.969Q9.619-4.900 10.060-4.900Q10.145-4.873 10.145-4.788L10.118-4.675Q10.091-4.627 10.039-4.620M10.419-8.202L10.046-6.726Q10.108-6.476 10.265-6.303Q10.422-6.131 10.661-6.131Q10.870-6.131 11.060-6.257Q11.249-6.384 11.386-6.573Q11.523-6.763 11.608-6.965Q11.714-7.228 11.798-7.595Q11.882-7.963 11.882-8.195Q11.882-8.349 11.830-8.501Q11.779-8.653 11.666-8.747Q11.554-8.841 11.383-8.841Q11.102-8.841 10.858-8.658Q10.614-8.476 10.419-8.202",[3705],[3682,6362,6363],{"transform":6350},[2655,6364],{"d":6365,"fill":6302,"stroke":6302,"className":6366,"style":3706},"M13.058-6.914Q13.058-7.290 13.380-7.601L14.268-8.414Q13.974-9.115 13.974-9.819Q13.974-10.116 14.120-10.384Q14.265-10.653 14.523-10.813Q14.781-10.974 15.078-10.974Q15.311-10.974 15.473-10.831Q15.636-10.687 15.714-10.465Q15.793-10.243 15.793-10.017Q15.793-9.696 15.514-9.349Q15.236-9.002 14.815-8.609Q15-8.185 15.323-7.737Q15.646-7.290 16.046-6.845Q16.288-7.084 16.511-7.373Q16.733-7.662 16.992-8.055L17.167-8.315Q17.215-8.387 17.215-8.455Q17.215-8.599 17.080-8.657Q16.945-8.715 16.787-8.715L16.787-8.995L18.370-8.995L18.370-8.715Q17.734-8.715 17.474-8.315L17.208-7.922Q16.921-7.495 16.690-7.194Q16.459-6.893 16.220-6.664Q16.463-6.421 16.721-6.269Q16.979-6.117 17.249-6.117Q17.450-6.117 17.637-6.206Q17.823-6.295 17.939-6.457Q18.055-6.620 18.055-6.825L18.322-6.825Q18.322-6.544 18.172-6.319Q18.021-6.093 17.772-5.965Q17.522-5.837 17.242-5.837Q16.524-5.837 15.858-6.339Q15.195-5.837 14.456-5.837Q14.121-5.837 13.800-5.958Q13.479-6.080 13.269-6.326Q13.058-6.572 13.058-6.914M14.521-6.117Q15.102-6.117 15.653-6.510Q15.383-6.743 15.150-7.014Q14.918-7.286 14.713-7.595Q14.508-7.905 14.367-8.195L14.056-7.915Q13.721-7.601 13.721-7.112Q13.721-6.736 13.940-6.426Q14.159-6.117 14.521-6.117M14.723-8.834Q15.078-9.183 15.304-9.467Q15.530-9.750 15.530-10.017Q15.530-10.181 15.485-10.347Q15.441-10.513 15.336-10.632Q15.232-10.752 15.072-10.752Q14.890-10.752 14.764-10.639Q14.637-10.526 14.573-10.355Q14.508-10.185 14.508-10.010Q14.508-9.412 14.723-8.834M19.190-6.705Q19.190-7.037 19.414-7.264Q19.638-7.491 19.981-7.619Q20.325-7.748 20.698-7.800Q21.070-7.853 21.374-7.853L21.374-8.106Q21.374-8.311 21.267-8.491Q21.159-8.670 20.978-8.773Q20.797-8.875 20.588-8.875Q20.181-8.875 19.946-8.783Q20.034-8.746 20.081-8.662Q20.127-8.578 20.127-8.476Q20.127-8.380 20.081-8.301Q20.034-8.223 19.954-8.178Q19.874-8.134 19.785-8.134Q19.635-8.134 19.534-8.231Q19.433-8.329 19.433-8.476Q19.433-9.098 20.588-9.098Q20.800-9.098 21.050-9.034Q21.299-8.971 21.501-8.852Q21.702-8.732 21.829-8.547Q21.955-8.363 21.955-8.120L21.955-6.544Q21.955-6.428 22.017-6.332Q22.078-6.237 22.191-6.237Q22.301-6.237 22.366-6.331Q22.430-6.425 22.430-6.544L22.430-6.992L22.697-6.992L22.697-6.544Q22.697-6.274 22.470-6.109Q22.242-5.943 21.962-5.943Q21.754-5.943 21.617-6.097Q21.480-6.250 21.456-6.466Q21.309-6.199 21.027-6.054Q20.745-5.909 20.421-5.909Q20.144-5.909 19.860-5.984Q19.576-6.059 19.383-6.238Q19.190-6.418 19.190-6.705M19.805-6.705Q19.805-6.531 19.906-6.401Q20.007-6.271 20.163-6.201Q20.318-6.131 20.482-6.131Q20.701-6.131 20.909-6.228Q21.118-6.326 21.246-6.507Q21.374-6.688 21.374-6.914L21.374-7.642Q21.050-7.642 20.684-7.551Q20.318-7.460 20.062-7.248Q19.805-7.037 19.805-6.705M24.758-4.620L23.128-4.620L23.128-4.900Q23.357-4.900 23.505-4.935Q23.654-4.969 23.654-5.109L23.654-8.455Q23.654-8.626 23.517-8.667Q23.381-8.708 23.128-8.708L23.128-8.988L24.208-9.063L24.208-8.657Q24.430-8.858 24.717-8.961Q25.004-9.063 25.312-9.063Q25.739-9.063 26.103-8.850Q26.467-8.636 26.681-8.272Q26.894-7.908 26.894-7.488Q26.894-7.043 26.655-6.679Q26.416-6.315 26.023-6.112Q25.630-5.909 25.185-5.909Q24.919-5.909 24.671-6.009Q24.423-6.110 24.235-6.291L24.235-5.109Q24.235-4.972 24.384-4.936Q24.533-4.900 24.758-4.900L24.758-4.620M24.235-8.308L24.235-6.698Q24.368-6.445 24.611-6.288Q24.854-6.131 25.131-6.131Q25.459-6.131 25.712-6.332Q25.965-6.534 26.098-6.852Q26.231-7.170 26.231-7.488Q26.231-7.717 26.166-7.946Q26.101-8.175 25.973-8.373Q25.845-8.571 25.650-8.691Q25.455-8.810 25.223-8.810Q24.929-8.810 24.661-8.681Q24.392-8.551 24.235-8.308M27.489-7.460Q27.489-7.802 27.624-8.101Q27.759-8.400 27.998-8.624Q28.238-8.848 28.555-8.973Q28.873-9.098 29.205-9.098Q29.649-9.098 30.049-8.882Q30.449-8.667 30.683-8.289Q30.917-7.912 30.917-7.460Q30.917-7.119 30.775-6.835Q30.634-6.551 30.389-6.344Q30.145-6.138 29.835-6.023Q29.526-5.909 29.205-5.909Q28.774-5.909 28.373-6.110Q27.971-6.312 27.730-6.664Q27.489-7.016 27.489-7.460M29.205-6.158Q29.806-6.158 30.030-6.536Q30.254-6.914 30.254-7.546Q30.254-8.158 30.020-8.517Q29.786-8.875 29.205-8.875Q28.152-8.875 28.152-7.546Q28.152-6.914 28.378-6.536Q28.603-6.158 29.205-6.158M31.512-5.984L31.512-7.047Q31.512-7.071 31.539-7.098Q31.567-7.125 31.591-7.125L31.700-7.125Q31.765-7.125 31.779-7.067Q31.874-6.633 32.120-6.382Q32.367-6.131 32.780-6.131Q33.122-6.131 33.375-6.264Q33.628-6.397 33.628-6.705Q33.628-6.862 33.534-6.977Q33.440-7.091 33.301-7.160Q33.163-7.228 32.995-7.266L32.414-7.365Q32.059-7.433 31.785-7.654Q31.512-7.874 31.512-8.216Q31.512-8.465 31.623-8.640Q31.734-8.814 31.920-8.913Q32.107-9.012 32.322-9.055Q32.537-9.098 32.780-9.098Q33.194-9.098 33.474-8.916L33.689-9.091Q33.700-9.094 33.706-9.096Q33.713-9.098 33.723-9.098L33.775-9.098Q33.802-9.098 33.826-9.074Q33.850-9.050 33.850-9.022L33.850-8.175Q33.850-8.154 33.826-8.127Q33.802-8.100 33.775-8.100L33.662-8.100Q33.635-8.100 33.609-8.125Q33.583-8.151 33.583-8.175Q33.583-8.411 33.477-8.575Q33.371-8.739 33.189-8.821Q33.006-8.903 32.773-8.903Q32.445-8.903 32.189-8.800Q31.932-8.698 31.932-8.421Q31.932-8.226 32.115-8.117Q32.298-8.007 32.527-7.966L33.101-7.860Q33.347-7.812 33.561-7.684Q33.775-7.556 33.911-7.353Q34.048-7.149 34.048-6.900Q34.048-6.387 33.682-6.148Q33.317-5.909 32.780-5.909Q32.284-5.909 31.953-6.203L31.686-5.929Q31.666-5.909 31.638-5.909L31.591-5.909Q31.567-5.909 31.539-5.936Q31.512-5.963 31.512-5.984M35.176-4.747Q35.176-4.781 35.197-4.801Q35.436-5.040 35.571-5.367Q35.706-5.693 35.706-6.025Q35.620-5.977 35.497-5.977Q35.316-5.977 35.197-6.097Q35.077-6.216 35.077-6.397Q35.077-6.572 35.197-6.691Q35.316-6.811 35.497-6.811Q35.668-6.811 35.766-6.688Q35.863-6.565 35.897-6.389Q35.931-6.213 35.931-6.039Q35.931-5.656 35.784-5.292Q35.637-4.928 35.364-4.647Q35.337-4.620 35.299-4.620Q35.258-4.620 35.217-4.661Q35.176-4.702 35.176-4.747M35.077-8.581Q35.077-8.749 35.200-8.872Q35.323-8.995 35.497-8.995Q35.665-8.995 35.788-8.872Q35.911-8.749 35.911-8.581Q35.911-8.407 35.788-8.284Q35.665-8.161 35.497-8.161Q35.323-8.161 35.200-8.284Q35.077-8.407 35.077-8.581M36.940-5.984L36.940-7.047Q36.940-7.071 36.967-7.098Q36.994-7.125 37.018-7.125L37.128-7.125Q37.193-7.125 37.206-7.067Q37.302-6.633 37.548-6.382Q37.794-6.131 38.208-6.131Q38.550-6.131 38.803-6.264Q39.055-6.397 39.055-6.705Q39.055-6.862 38.961-6.977Q38.867-7.091 38.729-7.160Q38.591-7.228 38.423-7.266L37.842-7.365Q37.487-7.433 37.213-7.654Q36.940-7.874 36.940-8.216Q36.940-8.465 37.051-8.640Q37.162-8.814 37.348-8.913Q37.534-9.012 37.750-9.055Q37.965-9.098 38.208-9.098Q38.621-9.098 38.902-8.916L39.117-9.091Q39.127-9.094 39.134-9.096Q39.141-9.098 39.151-9.098L39.202-9.098Q39.230-9.098 39.254-9.074Q39.278-9.050 39.278-9.022L39.278-8.175Q39.278-8.154 39.254-8.127Q39.230-8.100 39.202-8.100L39.090-8.100Q39.062-8.100 39.037-8.125Q39.011-8.151 39.011-8.175Q39.011-8.411 38.905-8.575Q38.799-8.739 38.616-8.821Q38.433-8.903 38.201-8.903Q37.873-8.903 37.617-8.800Q37.360-8.698 37.360-8.421Q37.360-8.226 37.543-8.117Q37.726-8.007 37.955-7.966L38.529-7.860Q38.775-7.812 38.989-7.684Q39.202-7.556 39.339-7.353Q39.476-7.149 39.476-6.900Q39.476-6.387 39.110-6.148Q38.744-5.909 38.208-5.909Q37.712-5.909 37.381-6.203L37.114-5.929Q37.094-5.909 37.066-5.909L37.018-5.909Q36.994-5.909 36.967-5.936Q36.940-5.963 36.940-5.984",[3705],[3682,6368,6369],{"transform":6350},[2655,6370],{"d":6371,"fill":6302,"stroke":6302,"className":6372,"style":3706},"M22.763-4.620L21.133-4.620L21.133-4.900Q21.362-4.900 21.511-4.935Q21.659-4.969 21.659-5.109L21.659-8.455Q21.659-8.626 21.523-8.667Q21.386-8.708 21.133-8.708L21.133-8.988L22.213-9.063L22.213-8.657Q22.435-8.858 22.722-8.961Q23.010-9.063 23.317-9.063Q23.744-9.063 24.108-8.850Q24.472-8.636 24.686-8.272Q24.900-7.908 24.900-7.488Q24.900-7.043 24.660-6.679Q24.421-6.315 24.028-6.112Q23.635-5.909 23.191-5.909Q22.924-5.909 22.676-6.009Q22.429-6.110 22.241-6.291L22.241-5.109Q22.241-4.972 22.389-4.936Q22.538-4.900 22.763-4.900L22.763-4.620M22.241-8.308L22.241-6.698Q22.374-6.445 22.617-6.288Q22.859-6.131 23.136-6.131Q23.464-6.131 23.717-6.332Q23.970-6.534 24.103-6.852Q24.237-7.170 24.237-7.488Q24.237-7.717 24.172-7.946Q24.107-8.175 23.979-8.373Q23.850-8.571 23.656-8.691Q23.461-8.810 23.228-8.810Q22.934-8.810 22.666-8.681Q22.398-8.551 22.241-8.308M25.594-6.705Q25.594-7.037 25.817-7.264Q26.041-7.491 26.385-7.619Q26.728-7.748 27.101-7.800Q27.473-7.853 27.778-7.853L27.778-8.106Q27.778-8.311 27.670-8.491Q27.562-8.670 27.381-8.773Q27.200-8.875 26.992-8.875Q26.585-8.875 26.349-8.783Q26.438-8.746 26.484-8.662Q26.530-8.578 26.530-8.476Q26.530-8.380 26.484-8.301Q26.438-8.223 26.357-8.178Q26.277-8.134 26.188-8.134Q26.038-8.134 25.937-8.231Q25.836-8.329 25.836-8.476Q25.836-9.098 26.992-9.098Q27.203-9.098 27.453-9.034Q27.702-8.971 27.904-8.852Q28.106-8.732 28.232-8.547Q28.359-8.363 28.359-8.120L28.359-6.544Q28.359-6.428 28.420-6.332Q28.482-6.237 28.595-6.237Q28.704-6.237 28.769-6.331Q28.834-6.425 28.834-6.544L28.834-6.992L29.100-6.992L29.100-6.544Q29.100-6.274 28.873-6.109Q28.646-5.943 28.366-5.943Q28.157-5.943 28.020-6.097Q27.884-6.250 27.860-6.466Q27.713-6.199 27.431-6.054Q27.149-5.909 26.824-5.909Q26.547-5.909 26.263-5.984Q25.980-6.059 25.787-6.238Q25.594-6.418 25.594-6.705M26.209-6.705Q26.209-6.531 26.310-6.401Q26.410-6.271 26.566-6.201Q26.722-6.131 26.886-6.131Q27.104-6.131 27.313-6.228Q27.521-6.326 27.649-6.507Q27.778-6.688 27.778-6.914L27.778-7.642Q27.453-7.642 27.087-7.551Q26.722-7.460 26.465-7.248Q26.209-7.037 26.209-6.705M31.267-5.977L29.531-5.977L29.531-6.257Q29.760-6.257 29.909-6.291Q30.057-6.326 30.057-6.466L30.057-8.315Q30.057-8.585 29.950-8.646Q29.842-8.708 29.531-8.708L29.531-8.988L30.560-9.063L30.560-8.356Q30.690-8.664 30.932-8.863Q31.175-9.063 31.493-9.063Q31.712-9.063 31.883-8.939Q32.054-8.814 32.054-8.602Q32.054-8.465 31.954-8.366Q31.855-8.267 31.722-8.267Q31.585-8.267 31.486-8.366Q31.387-8.465 31.387-8.602Q31.387-8.742 31.486-8.841Q31.196-8.841 30.996-8.645Q30.796-8.448 30.703-8.154Q30.611-7.860 30.611-7.580L30.611-6.466Q30.611-6.257 31.267-6.257L31.267-5.977M32.597-7.512Q32.597-7.833 32.722-8.122Q32.847-8.411 33.072-8.634Q33.298-8.858 33.593-8.978Q33.889-9.098 34.207-9.098Q34.535-9.098 34.796-8.998Q35.058-8.899 35.234-8.717Q35.410-8.534 35.504-8.276Q35.598-8.018 35.598-7.686Q35.598-7.594 35.516-7.573L33.260-7.573L33.260-7.512Q33.260-6.924 33.544-6.541Q33.827-6.158 34.395-6.158Q34.716-6.158 34.984-6.351Q35.253-6.544 35.342-6.859Q35.348-6.900 35.424-6.914L35.516-6.914Q35.598-6.890 35.598-6.818Q35.598-6.811 35.591-6.784Q35.478-6.387 35.107-6.148Q34.737-5.909 34.313-5.909Q33.875-5.909 33.475-6.117Q33.076-6.326 32.836-6.693Q32.597-7.060 32.597-7.512M33.267-7.782L35.082-7.782Q35.082-8.059 34.984-8.311Q34.887-8.564 34.689-8.720Q34.491-8.875 34.207-8.875Q33.930-8.875 33.716-8.717Q33.503-8.558 33.385-8.303Q33.267-8.048 33.267-7.782M37.867-5.977L36.234-5.977L36.234-6.257Q36.463-6.257 36.611-6.291Q36.760-6.326 36.760-6.466L36.760-8.315Q36.760-8.585 36.652-8.646Q36.545-8.708 36.234-8.708L36.234-8.988L37.293-9.063L37.293-8.414Q37.464-8.722 37.768-8.893Q38.073-9.063 38.418-9.063Q38.924-9.063 39.207-8.840Q39.491-8.616 39.491-8.120L39.491-6.466Q39.491-6.329 39.640-6.293Q39.788-6.257 40.014-6.257L40.014-5.977L38.384-5.977L38.384-6.257Q38.613-6.257 38.761-6.291Q38.910-6.326 38.910-6.466L38.910-8.106Q38.910-8.441 38.790-8.641Q38.671-8.841 38.356-8.841Q38.086-8.841 37.852-8.705Q37.618-8.568 37.480-8.334Q37.341-8.100 37.341-7.826L37.341-6.466Q37.341-6.329 37.492-6.293Q37.642-6.257 37.867-6.257",[3705],[3682,6374,6375],{"transform":6350},[2655,6376],{"d":6377,"fill":6302,"stroke":6302,"className":6378,"style":3706},"M40.931-6.818L40.931-8.715L40.292-8.715L40.292-8.937Q40.610-8.937 40.827-9.147Q41.044-9.357 41.144-9.667Q41.245-9.976 41.245-10.284L41.512-10.284L41.512-8.995L42.589-8.995L42.589-8.715L41.512-8.715L41.512-6.831Q41.512-6.555 41.616-6.356Q41.720-6.158 41.980-6.158Q42.137-6.158 42.243-6.262Q42.349-6.367 42.399-6.520Q42.448-6.674 42.448-6.831L42.448-7.245L42.715-7.245L42.715-6.818Q42.715-6.592 42.616-6.382Q42.517-6.172 42.332-6.040Q42.148-5.909 41.919-5.909Q41.481-5.909 41.206-6.146Q40.931-6.384 40.931-6.818",[3705],[3682,6380,6381],{"transform":6350},[2655,6382],{"d":6383,"fill":6302,"stroke":6302,"className":6384,"style":3706},"M46.678-6.397Q46.678-6.565 46.805-6.688Q46.931-6.811 47.098-6.811Q47.266-6.811 47.389-6.688Q47.512-6.565 47.512-6.397Q47.512-6.223 47.389-6.100Q47.266-5.977 47.098-5.977Q46.931-5.977 46.805-6.100Q46.678-6.223 46.678-6.397",[3705],[3682,6386,6387],{"transform":6350},[2655,6388],{"d":6389,"fill":6302,"stroke":6302,"className":6390,"style":3706},"M50.419-6.397Q50.419-6.565 50.546-6.688Q50.672-6.811 50.839-6.811Q51.007-6.811 51.130-6.688Q51.253-6.565 51.253-6.397Q51.253-6.223 51.130-6.100Q51.007-5.977 50.839-5.977Q50.672-5.977 50.546-6.100Q50.419-6.223 50.419-6.397",[3705],[3682,6392,6393],{"transform":6350},[2655,6394],{"d":6395,"fill":6302,"stroke":6302,"className":6396,"style":3706},"M54.160-6.397Q54.160-6.565 54.287-6.688Q54.413-6.811 54.580-6.811Q54.748-6.811 54.871-6.688Q54.994-6.565 54.994-6.397Q54.994-6.223 54.871-6.100Q54.748-5.977 54.580-5.977Q54.413-5.977 54.287-6.100Q54.160-6.223 54.160-6.397",[3705],[3682,6398,6399,6402],{"fill":6302,"stroke":6302},[2655,6400],{"fill":3696,"d":6401},"M-1.25-16.135v.674",[2655,6403],{"stroke":3696,"d":6404},"m-1.25-13.46 1.6-3.2-1.6 1.2-1.6-1.2",[3826,6406,6408,6409,6424,6425,6477,6478,6493,6494,3582,6509,6524,6525,6543,6544,6559,6560,6575],{"className":6407},[3829],"Why deletion cascades. A rotation that repairs the subtree at ",[390,6410,6412],{"className":6411},[393],[390,6413,6415],{"className":6414,"ariaHidden":398},[397],[390,6416,6418,6421],{"className":6417},[402],[390,6419],{"className":6420,"style":588},[406],[390,6422,4053],{"className":6423,"style":4052},[411,412]," leaves it one shorter (height ",[390,6426,6428],{"className":6427},[393],[390,6429,6431,6450,6468],{"className":6430,"ariaHidden":398},[397],[390,6432,6434,6437,6440,6443,6447],{"className":6433},[402],[390,6435],{"className":6436,"style":1173},[406],[390,6438,423],{"className":6439},[411,412],[390,6441],{"className":6442,"style":742},[493],[390,6444,6446],{"className":6445},[746],"→",[390,6448],{"className":6449,"style":742},[493],[390,6451,6453,6456,6459,6462,6465],{"className":6452},[402],[390,6454],{"className":6455,"style":1609},[406],[390,6457,423],{"className":6458},[411,412],[390,6460],{"className":6461,"style":845},[493],[390,6463,761],{"className":6464},[849],[390,6466],{"className":6467,"style":845},[493],[390,6469,6471,6474],{"className":6470},[402],[390,6472],{"className":6473,"style":673},[406],[390,6475,515],{"className":6476},[411],"), so the height drop propagates to the parent ",[390,6479,6481],{"className":6480},[393],[390,6482,6484],{"className":6483,"ariaHidden":398},[397],[390,6485,6487,6490],{"className":6486},[402],[390,6488],{"className":6489,"style":569},[406],[390,6491,381],{"className":6492},[411,412],": with its other subtree still height ",[390,6495,6497],{"className":6496},[393],[390,6498,6500],{"className":6499,"ariaHidden":398},[397],[390,6501,6503,6506],{"className":6502},[402],[390,6504],{"className":6505,"style":1173},[406],[390,6507,423],{"className":6508},[411,412],[390,6510,6512],{"className":6511},[393],[390,6513,6515],{"className":6514,"ariaHidden":398},[397],[390,6516,6518,6521],{"className":6517},[402],[390,6519],{"className":6520,"style":569},[406],[390,6522,381],{"className":6523},[411,412],"'s balance becomes ",[390,6526,6528],{"className":6527},[393],[390,6529,6531],{"className":6530,"ariaHidden":398},[397],[390,6532,6534,6537,6540],{"className":6533},[402],[390,6535],{"className":6536,"style":757},[406],[390,6538,4074],{"className":6539},[411],[390,6541,1066],{"className":6542},[411]," and must itself be rotated — and that rotation can shorten ",[390,6545,6547],{"className":6546},[393],[390,6548,6550],{"className":6549,"ariaHidden":398},[397],[390,6551,6553,6556],{"className":6552},[402],[390,6554],{"className":6555,"style":569},[406],[390,6557,381],{"className":6558},[411,412],", unbalancing ",[390,6561,6563],{"className":6562},[393],[390,6564,6566],{"className":6565,"ariaHidden":398},[397],[390,6567,6569,6572],{"className":6568},[402],[390,6570],{"className":6571,"style":569},[406],[390,6573,381],{"className":6574},[411,412],"'s parent, all the way to the root. (Insertion never does this: its repair restores the original height.)",[631,6577,6579],{"id":6578},"avl-versus-red-black","AVL versus red-black",[381,6581,6582,6583,6616,6617,6620,6621,6706,6707,6795,6796,6799,6800,6803,6804],{},"AVL and red-black trees both guarantee ",[390,6584,6586],{"className":6585},[393],[390,6587,6589],{"className":6588,"ariaHidden":398},[397],[390,6590,6592,6595,6598,6601,6607,6610,6613],{"className":6591},[402],[390,6593],{"className":6594,"style":407},[406],[390,6596,414],{"className":6597,"style":413},[411,412],[390,6599,419],{"className":6600},[418],[390,6602,6604],{"className":6603},[483],[390,6605,489],{"className":6606,"style":488},[411,487],[390,6608],{"className":6609,"style":494},[493],[390,6611,452],{"className":6612},[411,412],[390,6614,428],{"className":6615},[427]," height, but they sit at\nopposite ends of a tradeoff. The AVL height-difference invariant is ",[553,6618,6619],{},"strict",":\n",[390,6622,6624],{"className":6623},[393],[390,6625,6627,6645],{"className":6626,"ariaHidden":398},[397],[390,6628,6630,6633,6636,6639,6642],{"className":6629},[402],[390,6631],{"className":6632,"style":1423},[406],[390,6634,423],{"className":6635},[411,412],[390,6637],{"className":6638,"style":742},[493],[390,6640,1433],{"className":6641},[746],[390,6643],{"className":6644,"style":742},[493],[390,6646,6648,6651,6654,6657,6700,6703],{"className":6647},[402],[390,6649],{"className":6650,"style":3178},[406],[390,6652,3182],{"className":6653},[411],[390,6655],{"className":6656,"style":494},[493],[390,6658,6660,6666],{"className":6659},[483],[390,6661,6663],{"className":6662},[483],[390,6664,489],{"className":6665,"style":488},[411,487],[390,6667,6669],{"className":6668},[1462],[390,6670,6672,6692],{"className":6671},[1466,1467],[390,6673,6675,6689],{"className":6674},[1471],[390,6676,6678],{"className":6677,"style":1476},[1475],[390,6679,6680,6683],{"style":1479},[390,6681],{"className":6682,"style":1484},[1483],[390,6684,6686],{"className":6685},[1488,1489,1490,1491],[390,6687,1066],{"className":6688},[411,1491],[390,6690,1499],{"className":6691},[1498],[390,6693,6695],{"className":6694},[1471],[390,6696,6698],{"className":6697,"style":1506},[1475],[390,6699],{},[390,6701],{"className":6702,"style":494},[493],[390,6704,452],{"className":6705},[411,412],", noticeably shorter than red-black's ",[390,6708,6710],{"className":6709},[393],[390,6711,6713,6783],{"className":6712,"ariaHidden":398},[397],[390,6714,6716,6719,6722,6725,6768,6771,6774,6777,6780],{"className":6715},[402],[390,6717],{"className":6718,"style":407},[406],[390,6720,1066],{"className":6721},[411],[390,6723],{"className":6724,"style":494},[493],[390,6726,6728,6734],{"className":6727},[483],[390,6729,6731],{"className":6730},[483],[390,6732,489],{"className":6733,"style":488},[411,487],[390,6735,6737],{"className":6736},[1462],[390,6738,6740,6760],{"className":6739},[1466,1467],[390,6741,6743,6757],{"className":6742},[1471],[390,6744,6746],{"className":6745,"style":1476},[1475],[390,6747,6748,6751],{"style":1479},[390,6749],{"className":6750,"style":1484},[1483],[390,6752,6754],{"className":6753},[1488,1489,1490,1491],[390,6755,1066],{"className":6756},[411,1491],[390,6758,1499],{"className":6759},[1498],[390,6761,6763],{"className":6762},[1471],[390,6764,6766],{"className":6765,"style":1506},[1475],[390,6767],{},[390,6769,419],{"className":6770},[418],[390,6772,452],{"className":6773},[411,412],[390,6775],{"className":6776,"style":845},[493],[390,6778,961],{"className":6779},[849],[390,6781],{"className":6782,"style":845},[493],[390,6784,6786,6789,6792],{"className":6785},[402],[390,6787],{"className":6788,"style":407},[406],[390,6790,515],{"className":6791},[411],[390,6793,428],{"className":6794},[427],", so AVL\n",[458,6797,6798],{},"lookups are faster",", the structure of choice for read-heavy workloads. The\nprice is paid on updates: AVL trees track exact heights and may rotate to repair\neven small imbalances, whereas red-black trees tolerate looser balance and lean on\ncheap recolorings, doing ",[458,6801,6802],{},"fewer rotations per update",". Roughly: AVL is more\nrigidly balanced and faster to search; red-black is cheaper to mutate, which is\nwhy it backs most standard-library ordered maps.",[507,6805,6806],{},[385,6807,3846],{"href":6808,"ariaDescribedBy":6809,"dataFootnoteRef":376,"id":6810},"#user-content-fn-skiena-balanced",[513],"user-content-fnref-skiena-balanced",[631,6812,6814],{"id":6813},"takeaways","Takeaways",[4112,6816,6817,6917,7322,7371,7414],{},[4115,6818,6819,6820,6822,6823,6838,6839,684,6841,6916],{},"An ",[458,6821,504],{}," is a BST with the invariant that every node's two subtrees\ndiffer in height by at most ",[390,6824,6826],{"className":6825},[393],[390,6827,6829],{"className":6828,"ariaHidden":398},[397],[390,6830,6832,6835],{"className":6831},[402],[390,6833],{"className":6834,"style":673},[406],[390,6836,515],{"className":6837},[411],", i.e. its ",[458,6840,768],{},[390,6842,6844],{"className":6843},[393],[390,6845,6847,6877],{"className":6846,"ariaHidden":398},[397],[390,6848,6850,6853,6856,6859,6862,6865,6868,6871,6874],{"className":6849},[402],[390,6851],{"className":6852,"style":407},[406],[390,6854,789],{"className":6855},[411,412],[390,6857,794],{"className":6858,"style":793},[411,412],[390,6860,419],{"className":6861},[418],[390,6863,592],{"className":6864},[411,412],[390,6866,428],{"className":6867},[427],[390,6869],{"className":6870,"style":742},[493],[390,6872,922],{"className":6873},[746],[390,6875],{"className":6876,"style":742},[493],[390,6878,6880,6883,6886,6889,6892,6895,6898,6901,6904,6907,6910,6913],{"className":6879},[402],[390,6881],{"className":6882,"style":407},[406],[390,6884,935],{"className":6885},[418],[390,6887,761],{"className":6888},[411],[390,6890,515],{"className":6891},[411],[390,6893,885],{"className":6894},[884],[390,6896],{"className":6897,"style":494},[493],[390,6899,951],{"className":6900},[411],[390,6902,885],{"className":6903},[884],[390,6905],{"className":6906,"style":494},[493],[390,6908,961],{"className":6909},[411],[390,6911,515],{"className":6912},[411],[390,6914,968],{"className":6915},[427],";\neach node stores its height (or balance).",[4115,6918,6919,6920,6923,6924,7056,7057,7163,7164,7285,7286,677],{},"A ",[458,6921,6922],{},"minimal-node \u002F Fibonacci-tree"," argument gives ",[390,6925,6927],{"className":6926},[393],[390,6928,6930,6957,6981,7002,7026,7047],{"className":6929,"ariaHidden":398},[397],[390,6931,6933,6936,6939,6942,6945,6948,6951,6954],{"className":6932},[402],[390,6934],{"className":6935,"style":407},[406],[390,6937,1150],{"className":6938,"style":1149},[411,412],[390,6940,419],{"className":6941},[418],[390,6943,423],{"className":6944},[411,412],[390,6946,428],{"className":6947},[427],[390,6949],{"className":6950,"style":742},[493],[390,6952,747],{"className":6953},[746],[390,6955],{"className":6956,"style":742},[493],[390,6958,6960,6963,6966,6969,6972,6975,6978],{"className":6959},[402],[390,6961],{"className":6962,"style":407},[406],[390,6964,1150],{"className":6965,"style":1149},[411,412],[390,6967,419],{"className":6968},[418],[390,6970,423],{"className":6971},[411,412],[390,6973],{"className":6974,"style":845},[493],[390,6976,761],{"className":6977},[849],[390,6979],{"className":6980,"style":845},[493],[390,6982,6984,6987,6990,6993,6996,6999],{"className":6983},[402],[390,6985],{"className":6986,"style":407},[406],[390,6988,515],{"className":6989},[411],[390,6991,428],{"className":6992},[427],[390,6994],{"className":6995,"style":845},[493],[390,6997,961],{"className":6998},[849],[390,7000],{"className":7001,"style":845},[493],[390,7003,7005,7008,7011,7014,7017,7020,7023],{"className":7004},[402],[390,7006],{"className":7007,"style":407},[406],[390,7009,1150],{"className":7010,"style":1149},[411,412],[390,7012,419],{"className":7013},[418],[390,7015,423],{"className":7016},[411,412],[390,7018],{"className":7019,"style":845},[493],[390,7021,761],{"className":7022},[849],[390,7024],{"className":7025,"style":845},[493],[390,7027,7029,7032,7035,7038,7041,7044],{"className":7028},[402],[390,7030],{"className":7031,"style":407},[406],[390,7033,1066],{"className":7034},[411],[390,7036,428],{"className":7037},[427],[390,7039],{"className":7040,"style":845},[493],[390,7042,961],{"className":7043},[849],[390,7045],{"className":7046,"style":845},[493],[390,7048,7050,7053],{"className":7049},[402],[390,7051],{"className":7052,"style":673},[406],[390,7054,515],{"className":7055},[411],",\nso ",[390,7058,7060],{"className":7059},[393],[390,7061,7063,7090,7154],{"className":7062,"ariaHidden":398},[397],[390,7064,7066,7069,7072,7075,7078,7081,7084,7087],{"className":7065},[402],[390,7067],{"className":7068,"style":407},[406],[390,7070,1150],{"className":7071,"style":1149},[411,412],[390,7073,419],{"className":7074},[418],[390,7076,423],{"className":7077},[411,412],[390,7079,428],{"className":7080},[427],[390,7082],{"className":7083,"style":742},[493],[390,7085,747],{"className":7086},[746],[390,7088],{"className":7089,"style":742},[493],[390,7091,7093,7096,7145,7148,7151],{"className":7092},[402],[390,7094],{"className":7095,"style":2139},[406],[390,7097,7099,7102],{"className":7098},[411],[390,7100,2147],{"className":7101,"style":2146},[411,412],[390,7103,7105],{"className":7104},[1462],[390,7106,7108,7137],{"className":7107},[1466,1467],[390,7109,7111,7134],{"className":7110},[1471],[390,7112,7114],{"className":7113,"style":2160},[1475],[390,7115,7116,7119],{"style":2163},[390,7117],{"className":7118,"style":1484},[1483],[390,7120,7122],{"className":7121},[1488,1489,1490,1491],[390,7123,7125,7128,7131],{"className":7124},[411,1491],[390,7126,423],{"className":7127},[411,412,1491],[390,7129,961],{"className":7130},[849,1491],[390,7132,2182],{"className":7133},[411,1491],[390,7135,1499],{"className":7136},[1498],[390,7138,7140],{"className":7139},[1471],[390,7141,7143],{"className":7142,"style":2192},[1475],[390,7144],{},[390,7146],{"className":7147,"style":845},[493],[390,7149,761],{"className":7150},[849],[390,7152],{"className":7153,"style":845},[493],[390,7155,7157,7160],{"className":7156},[402],[390,7158],{"className":7159,"style":673},[406],[390,7161,515],{"className":7162},[411]," and height ",[390,7165,7167],{"className":7166},[393],[390,7168,7170,7188,7258],{"className":7169,"ariaHidden":398},[397],[390,7171,7173,7176,7179,7182,7185],{"className":7172},[402],[390,7174],{"className":7175,"style":1423},[406],[390,7177,423],{"className":7178},[411,412],[390,7180],{"className":7181,"style":742},[493],[390,7183,1433],{"className":7184},[746],[390,7186],{"className":7187,"style":742},[493],[390,7189,7191,7194,7197,7200,7243,7246,7249,7252,7255],{"className":7190},[402],[390,7192],{"className":7193,"style":3178},[406],[390,7195,3182],{"className":7196},[411],[390,7198],{"className":7199,"style":494},[493],[390,7201,7203,7209],{"className":7202},[483],[390,7204,7206],{"className":7205},[483],[390,7207,489],{"className":7208,"style":488},[411,487],[390,7210,7212],{"className":7211},[1462],[390,7213,7215,7235],{"className":7214},[1466,1467],[390,7216,7218,7232],{"className":7217},[1471],[390,7219,7221],{"className":7220,"style":1476},[1475],[390,7222,7223,7226],{"style":1479},[390,7224],{"className":7225,"style":1484},[1483],[390,7227,7229],{"className":7228},[1488,1489,1490,1491],[390,7230,1066],{"className":7231},[411,1491],[390,7233,1499],{"className":7234},[1498],[390,7236,7238],{"className":7237},[1471],[390,7239,7241],{"className":7240,"style":1506},[1475],[390,7242],{},[390,7244],{"className":7245,"style":494},[493],[390,7247,452],{"className":7248},[411,412],[390,7250],{"className":7251,"style":742},[493],[390,7253,747],{"className":7254},[746],[390,7256],{"className":7257,"style":742},[493],[390,7259,7261,7264,7267,7270,7276,7279,7282],{"className":7260},[402],[390,7262],{"className":7263,"style":407},[406],[390,7265,414],{"className":7266,"style":413},[411,412],[390,7268,419],{"className":7269},[418],[390,7271,7273],{"className":7272},[483],[390,7274,489],{"className":7275,"style":488},[411,487],[390,7277],{"className":7278,"style":494},[493],[390,7280,452],{"className":7281},[411,412],[390,7283,428],{"className":7284},[427],", hence all\noperations are ",[458,7287,7288,7289],{},"worst-case ",[390,7290,7292],{"className":7291},[393],[390,7293,7295],{"className":7294,"ariaHidden":398},[397],[390,7296,7298,7301,7304,7307,7313,7316,7319],{"className":7297},[402],[390,7299],{"className":7300,"style":407},[406],[390,7302,414],{"className":7303,"style":413},[411,412],[390,7305,419],{"className":7306},[418],[390,7308,7310],{"className":7309},[483],[390,7311,489],{"className":7312,"style":488},[411,487],[390,7314],{"className":7315,"style":494},[493],[390,7317,452],{"className":7318},[411,412],[390,7320,428],{"className":7321},[427],[4115,7323,7324,7327,7328,7330,7331,7333,7334,7336,7337,7339,7340,7342,7343,7370],{},[458,7325,7326],{},"Insertion"," descends as a BST, retraces the path updating heights, and repairs\nthe ",[553,7329,4057],{}," unbalanced node with one of four cases, ",[458,7332,4119],{}," (right), ",[458,7335,4143],{},"\n(left), ",[458,7338,4166],{}," (left-then-right), ",[458,7341,4192],{}," (right-then-left), using ",[458,7344,7345,7369],{},[390,7346,7348],{"className":7347},[393],[390,7349,7351],{"className":7350,"ariaHidden":398},[397],[390,7352,7354,7357,7360,7363,7366],{"className":7353},[402],[390,7355],{"className":7356,"style":407},[406],[390,7358,414],{"className":7359,"style":413},[411,412],[390,7361,419],{"className":7362},[418],[390,7364,515],{"className":7365},[411],[390,7367,428],{"className":7368},[427],"\nrotations",", because the fix restores the subtree's prior height.",[4115,7372,7373,7376,7377,7380,7381,5809],{},[458,7374,7375],{},"Deletion"," uses the same four cases but its rotations can shrink a subtree, so\nthe rebalancing may ",[458,7378,7379],{},"cascade up to the root",", taking ",[390,7382,7384],{"className":7383},[393],[390,7385,7387],{"className":7386,"ariaHidden":398},[397],[390,7388,7390,7393,7396,7399,7405,7408,7411],{"className":7389},[402],[390,7391],{"className":7392,"style":407},[406],[390,7394,414],{"className":7395,"style":413},[411,412],[390,7397,419],{"className":7398},[418],[390,7400,7402],{"className":7401},[483],[390,7403,489],{"className":7404,"style":488},[411,487],[390,7406],{"className":7407,"style":494},[493],[390,7409,452],{"className":7410},[411,412],[390,7412,428],{"className":7413},[427],[4115,7415,7416,7417,7420,7421,7424,7425,677],{},"Versus ",[458,7418,7419],{},"red-black"," trees: AVL is more rigidly balanced (",[458,7422,7423],{},"shorter, faster\nlookups",") but does ",[458,7426,7427],{},"more rotations per update",[7429,7430,7433,7438],"section",{"className":7431,"dataFootnotes":376},[7432],"footnotes",[631,7434,7437],{"className":7435,"id":513},[7436],"sr-only","Footnotes",[7439,7440,7441,7455,7681,7734],"ol",{},[4115,7442,7444,7447,7448],{"id":7443},"user-content-fn-erickson-avl",[458,7445,7446],{},"Erickson",", Ch. — Balanced Binary Search Trees: the height-balance invariant and its restoration by rotation after each update. ",[385,7449,7454],{"href":7450,"ariaLabel":7451,"className":7452,"dataFootnoteBackref":376},"#user-content-fnref-erickson-avl","Back to reference 1",[7453],"data-footnote-backref","↩",[4115,7456,7458,7461,7462,7594,7595,7628,7629,1798,7651,7675,7676],{"id":7457},"user-content-fn-clrs-avl",[458,7459,7460],{},"CLRS",", Problem 13-3 — AVL Trees: the Fibonacci minimal-node recurrence ",[390,7463,7465],{"className":7464},[393],[390,7466,7468,7495,7519,7540,7564,7585],{"className":7467,"ariaHidden":398},[397],[390,7469,7471,7474,7477,7480,7483,7486,7489,7492],{"className":7470},[402],[390,7472],{"className":7473,"style":407},[406],[390,7475,1150],{"className":7476,"style":1149},[411,412],[390,7478,419],{"className":7479},[418],[390,7481,423],{"className":7482},[411,412],[390,7484,428],{"className":7485},[427],[390,7487],{"className":7488,"style":742},[493],[390,7490,747],{"className":7491},[746],[390,7493],{"className":7494,"style":742},[493],[390,7496,7498,7501,7504,7507,7510,7513,7516],{"className":7497},[402],[390,7499],{"className":7500,"style":407},[406],[390,7502,1150],{"className":7503,"style":1149},[411,412],[390,7505,419],{"className":7506},[418],[390,7508,423],{"className":7509},[411,412],[390,7511],{"className":7512,"style":845},[493],[390,7514,761],{"className":7515},[849],[390,7517],{"className":7518,"style":845},[493],[390,7520,7522,7525,7528,7531,7534,7537],{"className":7521},[402],[390,7523],{"className":7524,"style":407},[406],[390,7526,515],{"className":7527},[411],[390,7529,428],{"className":7530},[427],[390,7532],{"className":7533,"style":845},[493],[390,7535,961],{"className":7536},[849],[390,7538],{"className":7539,"style":845},[493],[390,7541,7543,7546,7549,7552,7555,7558,7561],{"className":7542},[402],[390,7544],{"className":7545,"style":407},[406],[390,7547,1150],{"className":7548,"style":1149},[411,412],[390,7550,419],{"className":7551},[418],[390,7553,423],{"className":7554},[411,412],[390,7556],{"className":7557,"style":845},[493],[390,7559,761],{"className":7560},[849],[390,7562],{"className":7563,"style":845},[493],[390,7565,7567,7570,7573,7576,7579,7582],{"className":7566},[402],[390,7568],{"className":7569,"style":407},[406],[390,7571,1066],{"className":7572},[411],[390,7574,428],{"className":7575},[427],[390,7577],{"className":7578,"style":845},[493],[390,7580,961],{"className":7581},[849],[390,7583],{"className":7584,"style":845},[493],[390,7586,7588,7591],{"className":7587},[402],[390,7589],{"className":7590,"style":673},[406],[390,7592,515],{"className":7593},[411]," and the ",[390,7596,7598],{"className":7597},[393],[390,7599,7601],{"className":7600,"ariaHidden":398},[397],[390,7602,7604,7607,7610,7613,7619,7622,7625],{"className":7603},[402],[390,7605],{"className":7606,"style":407},[406],[390,7608,414],{"className":7609,"style":413},[411,412],[390,7611,419],{"className":7612},[418],[390,7614,7616],{"className":7615},[483],[390,7617,489],{"className":7618,"style":488},[411,487],[390,7620],{"className":7621,"style":494},[493],[390,7623,452],{"className":7624},[411,412],[390,7626,428],{"className":7627},[427]," height bound; insertion via ",[390,7630,7632],{"className":7631},[393],[390,7633,7635],{"className":7634,"ariaHidden":398},[397],[390,7636,7638,7641],{"className":7637},[402],[390,7639],{"className":7640,"style":1173},[406],[390,7642,7644],{"className":7643},[3573,3574],[390,7645,7647],{"className":7646},[411,731],[390,7648,7650],{"className":7649},[411],"Balance",[390,7652,7654],{"className":7653},[393],[390,7655,7657],{"className":7656,"ariaHidden":398},[397],[390,7658,7660,7663,7666,7669,7672],{"className":7659},[402],[390,7661],{"className":7662,"style":407},[406],[390,7664,414],{"className":7665,"style":413},[411,412],[390,7667,419],{"className":7668},[418],[390,7670,515],{"className":7671},[411],[390,7673,428],{"className":7674},[427]," rotations. ",[385,7677,7454],{"href":7678,"ariaLabel":7679,"className":7680,"dataFootnoteBackref":376},"#user-content-fnref-clrs-avl","Back to reference 2",[7453],[4115,7682,7684,7687,7688,7721,7722,684,7727],{"id":7683},"user-content-fn-skiena-avl",[458,7685,7686],{},"Skiena",", §3.4 — Balanced Search Trees: AVL operations are ",[390,7689,7691],{"className":7690},[393],[390,7692,7694],{"className":7693,"ariaHidden":398},[397],[390,7695,7697,7700,7703,7706,7712,7715,7718],{"className":7696},[402],[390,7698],{"className":7699,"style":407},[406],[390,7701,414],{"className":7702,"style":413},[411,412],[390,7704,419],{"className":7705},[418],[390,7707,7709],{"className":7708},[483],[390,7710,489],{"className":7711,"style":488},[411,487],[390,7713],{"className":7714,"style":494},[493],[390,7716,452],{"className":7717},[411,412],[390,7719,428],{"className":7720},[427],"; deletion may rebalance along the full root path. ",[385,7723,7454],{"href":7724,"ariaLabel":7725,"className":7726,"dataFootnoteBackref":376},"#user-content-fnref-skiena-avl","Back to reference 3",[7453],[385,7728,7454,7732],{"href":7729,"ariaLabel":7730,"className":7731,"dataFootnoteBackref":376},"#user-content-fnref-skiena-avl-2","Back to reference 3-2",[7453],[507,7733,1066],{},[4115,7735,7737,7739,7740],{"id":7736},"user-content-fn-skiena-balanced",[458,7738,7686],{},", §3.4 — Balanced Search Trees: the AVL-vs-red-black tradeoff — tighter balance and faster search versus cheaper update. ",[385,7741,7454],{"href":7742,"ariaLabel":7743,"className":7744,"dataFootnoteBackref":376},"#user-content-fnref-skiena-balanced","Back to reference 4",[7453],[7746,7747,7748],"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":7750},[7751,7752,7753,7754,7755,7756,7757],{"id":633,"depth":18,"text":634},{"id":1117,"depth":18,"text":1118},{"id":4016,"depth":18,"text":4017},{"id":6050,"depth":18,"text":6051},{"id":6578,"depth":18,"text":6579},{"id":6813,"depth":18,"text":6814},{"id":513,"depth":18,"text":7437},"The previous lesson left us with a binary search tree that does everything in\nO(h) time: magnificent when the tree is bushy, ruinous when a run of sorted\ninsertions stretches it into a height-Θ(n) path. The fix is to refuse to\nlet the tree get tall: pick a structural invariant that pins height to\nO(logn), and restore it after every update. The AVL tree, named for\nAdelson-Velsky and Landis (1962), is the oldest such scheme and the easiest to\nreason about, balancing by a direct height constraint at every node.1","md",{"moduleNumber":73,"lessonNumber":73,"order":7761},404,true,[7764,7768,7772,7775],{"title":7765,"slug":7766,"difficulty":7767},"Balanced Binary Tree","balanced-binary-tree","Easy",{"title":7769,"slug":7770,"difficulty":7771},"Insert into a Binary Search Tree","insert-into-a-binary-search-tree","Medium",{"title":7773,"slug":7774,"difficulty":7771},"Delete Node in a BST","delete-node-in-a-bst",{"title":7776,"slug":7777,"difficulty":7771},"Convert Sorted List to Binary Search Tree","convert-sorted-list-to-binary-search-tree","---\ntitle: AVL Trees\nmodule: Data Structures\nmoduleNumber: 4\nlessonNumber: 4\norder: 404\nsummary: >-\n  An AVL tree is the first balanced BST: at every node the two subtrees' heights\n  differ by at most $1$. A Fibonacci-style minimal-node argument forces height\n  $h \\le 1.44\\log_2 n = O(\\log n)$, so search, insert, and delete are all\n  $O(\\log n)$. Insertion rebalances with at most one of four rotation cases\n  (LL, RR, LR, RL); deletion may rotate all the way to the root.\ntopics: [Balanced Trees]\nsources:\n  - book: CLRS\n    ref: \"Problem 13-3 — AVL 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: 'Insert into a Binary Search Tree'\n    slug: insert-into-a-binary-search-tree\n    difficulty: Medium\n  - title: 'Delete Node in a BST'\n    slug: delete-node-in-a-bst\n    difficulty: Medium\n  - title: 'Convert Sorted List to Binary Search Tree'\n    slug: convert-sorted-list-to-binary-search-tree\n    difficulty: Medium\n---\n\nThe previous lesson left us with a [binary search tree](\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees) that does everything in\n$O(h)$ time: magnificent when the tree is bushy, ruinous when a run of sorted\ninsertions stretches it into a height-$\\Theta(n)$ path. The fix is to refuse to\nlet the tree get tall: pick a structural **invariant** that pins height to\n$O(\\log n)$, and restore it after every update. The **AVL tree**, named for\nAdelson-Velsky and Landis (1962), is the oldest such scheme and the easiest to\nreason about, balancing by a direct height constraint at every node.[^erickson-avl]\n\nTo talk about rebalancing we need one primitive, which the next lesson on\n[balanced search trees](\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees) treats in full: the **rotation**. A rotation rearranges\nthree pointers to change a subtree's shape, and so its height, while preserving\nthe BST ordering and running in $O(1)$ time. A _right rotation_ at $y$ lifts its\nleft child $x$ to the root and makes $y$ the right child of $x$; a _left\nrotation_ is the inverse. That is all we need here: a cheap, order-preserving\nlever for trading height between siblings.\n\n## The AVL invariant\n\n> **Invariant (AVL).** At every node $x$, the heights of its left and right\n> subtrees differ by at most $1$.\n\nDefine the **height** $h(x)$ of a node as the number of edges on the longest\ndownward path to a leaf, with $h(\\text{nil}) = -1$. The **balance factor** is\n\n$$\nbf(x) = h(\\text{right}(x)) - h(\\text{left}(x)),\n$$\n\nand the invariant says exactly $bf(x) \\in \\{-1, 0, +1\\}$ for every node. We store\n$h(x)$ (or, equivalently, $bf(x)$) in each node and keep it current as the tree\nchanges; both a search and an in-order walk ignore the field entirely, so a\nread-only operation on an AVL tree is just a BST operation.\n\nA node with $bf = -2$ is **left-heavy** past tolerance, $bf = +2$\n**right-heavy**; these are the two illegal states an update can create, and the\ntwo we must repair.\n\n## Height is logarithmic\n\nThe invariant is worth what it buys, and what it buys is a logarithmic height\nbound. The cleanest argument is _extremal_: ask how few nodes an AVL tree of a\ngiven height can possibly contain. A sparse tree is the dangerous case, so if\neven the sparsest legal tree is bushy, all of them are.\n\n> **Lemma (minimal-node \u002F Fibonacci-tree bound).** Let $N(h)$ be the minimum\n> number of nodes in an AVL tree of height $h$. Then\n> $$N(h) = N(h-1) + N(h-2) + 1, \\qquad N(0)=1,\\ N(1)=2,$$\n> and consequently an AVL tree on $n$ nodes has height\n> $h \\le 1.4404\\log_2(n+1) = O(\\log n)$.\n\n> **Proof.** A height-$h$ AVL tree has a root, plus two subtrees, the taller of\n> which has height $h-1$. To make the tree as sparse as possible we make the other\n> subtree as short as the invariant allows, namely $h-2$, and recursively make\n> both subtrees minimal. Hence $N(h) = 1 + N(h-1) + N(h-2)$ with $N(0)=1$\n> (a single node) and $N(1)=2$. This is the Fibonacci recurrence shifted by a\n> constant: adding $1$ to both sides gives $N(h)+1 = (N(h-1)+1)+(N(h-2)+1)$, so\n> $N(h)+1 = F_{h+3}$ and therefore $N(h) = F_{h+3} - 1 \\ge F_{h+2} - 1$.[^clrs-avl]\n> Since $F_k \\ge \\phi^{\\,k-2}$ with $\\phi = \\tfrac{1+\\sqrt5}{2}$, a tree of height\n> $h$ has at least $\\phi^{\\,h} - 1$ nodes, so\n>\n> $$\n> n \\ge \\phi^{\\,h} - 1\n> \\quad\\Longrightarrow\\quad\n> h \\le \\log_\\phi(n+1) = \\frac{\\log_2(n+1)}{\\log_2 \\phi} \\approx 1.44\\log_2 n.\n> \\qquad\\square\n> $$\n\nThe minimal-node trees are exactly the **Fibonacci trees**: the sparsest height-$h$\nAVL tree is a root over a [Fibonacci](\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis) tree of height $h-1$ and one of height $h-2$.\nBecause $1.44\\log_2 n \u003C 2\\log_2(n+1)$, an AVL tree is provably _shorter_ than the\nworst-case red-black tree of the same size, so its lookups touch fewer nodes. With\n$h = O(\\log n)$ guaranteed, search, $\\textsc{Insert}$, $\\textsc{Delete}$,\n$\\textsc{Min}$, and successor all run in $O(\\log n)$ worst-case time.[^skiena-avl]\n\n$$\n% caption: The sparsest AVL tree of height $4$ — a Fibonacci tree with the minimum\n%          $N(4)=F_7-1=12$ nodes. Each node's two subtrees differ in height by exactly $1$\n%          (the extreme the invariant allows): the root sits over a minimal height-$3$\n%          tree and a minimal height-$2$ tree, recursively. Subtree heights are labeled.\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=6mm, inner sep=0, font=\\scriptsize},\n  >=stealth, x=1cm, y=1cm]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[draw=acc, very thick, fill=acc!15] (r) at (0,0) {$h{=}4$};\n  % --- T(3) subtree (left) ---\n  \\node (l) at (-3,-1.1) {$3$};\n  \\node (l2) at (-4.4,-2.2) {$2$};\n  \\node (l1) at (-1.9,-2.2) {$1$};\n  \\node (l2a) at (-5.1,-3.3) {$1$};\n  \\node (l2b) at (-3.8,-3.3) {$0$};\n  \\node (l2a0) at (-5.6,-4.4) {$0$};\n  \\node (l11) at (-2.3,-3.3) {$0$};\n  % --- T(2) subtree (right) ---\n  \\node (rr) at (2.6,-1.1) {$2$};\n  \\node (rr1) at (1.7,-2.2) {$1$};\n  \\node (rr0) at (3.5,-2.2) {$0$};\n  \\node (rr10) at (1.2,-3.3) {$0$};\n  % edges\n  \\draw (r)--(l); \\draw (r)--(rr);\n  \\draw (l)--(l2); \\draw (l)--(l1);\n  \\draw (l2)--(l2a); \\draw (l2)--(l2b); \\draw (l2a)--(l2a0);\n  \\draw (l1)--(l11);\n  \\draw (rr)--(rr1); \\draw (rr)--(rr0); \\draw (rr1)--(rr10);\n\\end{tikzpicture}\n$$\n\n## Insertion: rebalancing on the way up\n\nWe insert a key exactly as in a plain BST: descend to a leaf position and attach\nthe new node. That can only push heights up along the single root-to-leaf path we\njust walked, so we retrace it upward, recomputing $h$ at each node. Let $z$ be the\n**lowest** node whose balance factor has become $\\pm 2$. Its imbalance was caused\nby the new node landing in one of four positions relative to $z$, named by the two\nsteps down the heavy path from $z$ toward the insertion:\n\n- **LL**: left child left-heavy, a single **right** rotation at $z$.\n- **RR**: right child right-heavy, a single **left** rotation at $z$.\n- **LR**: left child right-heavy, a **left** rotation at the child, then a\n  **right** rotation at $z$.\n- **RL**: right child left-heavy, a **right** rotation at the child, then a\n  **left** rotation at $z$.\n\nConsider the LL case. Node $z$ has balance $-2$, its left child $y$ leans left,\nand the new node sits under $y$'s left child $x$. A single right rotation at $z$\nlifts $y$ into $z$'s place, hangs $z$ as $y$'s right child, and rehomes $y$'s old\nright subtree as $z$'s new left subtree.\n\n$$\n% caption: The LL case — a left-left-heavy subtree fixed by one right rotation at $z$\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=12mm,\n  level 1\u002F.style={sibling distance=28mm},\n  level 2\u002F.style={sibling distance=14mm}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % before: z (bf -2) over y over x\n  \\begin{scope}\n    \\node (z) {$z$}\n      child {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      }\n      child {node[tri] {$T_4$}};\n  \\end{scope}\n  % arrow\n  \\draw[->, thick, draw] (2.6,-1.7) -- node[draw=none, above, font=\\footnotesize] {right} node[draw=none, below, font=\\footnotesize] {rotate $z$} (4.6,-1.7);\n  % after: y at root, z to its right\n  \\begin{scope}[xshift=7.2cm]\n    \\node[draw=acc, very thick, fill=acc!15] (y2) {$y$}\n      child {node (x2) {$x$}\n        child {node[tri] {$T_1$}}\n        child {node[tri] {$T_2$}}\n      }\n      child {node (z2) {$z$}\n        child {node[tri] {$T_3$}}\n        child {node[tri] {$T_4$}}\n      };\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nThe LR case cannot be fixed by a single rotation: the heavy path zig-zags, so we\nfirst rotate the child to straighten it into an LL shape, then finish with the\nright rotation at $z$. Here $z$ has balance $-2$, its left child $y$ leans\n_right_, and the offending grandchild $x$ is $y$'s right child. A left rotation\nat $y$ lifts $x$ above $y$; the subtree is now left-left-heavy, and a right\nrotation at $z$ completes the repair, leaving $x$ as the new root.\n\n$$\n% caption: The LR case — left rotation at $y$, then right rotation at $z$ (a double\n%          rotation)\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=4.5mm, inner sep=1pt},\n  level distance=11mm,\n  level 1\u002F.style={sibling distance=22mm},\n  level 2\u002F.style={sibling distance=11mm}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % stage 0: z over y(left-heavy node) over x(=right child of y)\n  \\begin{scope}\n    \\node (z) {$z$}\n      child {node (y) {$y$}\n        child {node[tri] {$T_1$}}\n        child {node (x) {$x$}\n          child {node[tri] {$T_2$}}\n          child {node[tri] {$T_3$}}\n        }\n      }\n      child {node[tri] {$T_4$}};\n  \\end{scope}\n  \\draw[->, thick, draw] (2.3,-1.6) -- node[draw=none, above, font=\\footnotesize] {left $y$} (3.7,-1.6);\n  % stage 1: now LL-heavy: z over x over y\n  \\begin{scope}[xshift=5.2cm]\n    \\node (z1) {$z$}\n      child {node (x1) {$x$}\n        child {node (y1) {$y$}\n          child {node[tri] {$T_1$}}\n          child {node[tri] {$T_2$}}\n        }\n        child {node[tri] {$T_3$}}\n      }\n      child {node[tri] {$T_4$}};\n  \\end{scope}\n  \\draw[->, thick, draw] (7.5,-1.6) -- node[draw=none, above, font=\\footnotesize] {right $z$} (8.9,-1.6);\n  % stage 2: x at root, y left, z right\n  \\begin{scope}[xshift=10.4cm]\n    \\node[draw=acc, very thick, fill=acc!15] (x2) {$x$}\n      child {node (y2) {$y$}\n        child {node[tri] {$T_1$}}\n        child {node[tri] {$T_2$}}\n      }\n      child {node (z2) {$z$}\n        child {node[tri] {$T_3$}}\n        child {node[tri] {$T_4$}}\n      };\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nThe RR and RL cases are the left-right mirrors of LL and LR. For completeness,\nhere is the RL double rotation, the mirror of the LR case just shown:\n\n$$\n% caption: The RL case — right rotation at $y$, then left rotation at $z$ (the mirror of\n%          LR). Here $z$ has balance $+2$, its right child $y$ leans left, and the\n%          offending grandchild $x$ is $y$'s left child; the double rotation lifts $x$ to\n%          the root.\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=4.5mm, inner sep=1pt},\n  level distance=11mm,\n  level 1\u002F.style={sibling distance=22mm},\n  level 2\u002F.style={sibling distance=11mm}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % stage 0: z over T1, y(leans left) with x as left child\n  \\begin{scope}\n    \\node (z) {$z$}\n      child {node[tri] {$T_1$}}\n      child {node (y) {$y$}\n        child {node (x) {$x$}\n          child {node[tri] {$T_2$}}\n          child {node[tri] {$T_3$}}\n        }\n        child {node[tri] {$T_4$}}\n      };\n  \\end{scope}\n  \\draw[->, thick, draw] (2.3,-1.6) -- node[draw=none, above, font=\\footnotesize] {right $y$} (3.7,-1.6);\n  % stage 1: now RR-heavy: z over x over y\n  \\begin{scope}[xshift=5.2cm]\n    \\node (z1) {$z$}\n      child {node[tri] {$T_1$}}\n      child {node (x1) {$x$}\n        child {node[tri] {$T_2$}}\n        child {node (y1) {$y$}\n          child {node[tri] {$T_3$}}\n          child {node[tri] {$T_4$}}\n        }\n      };\n  \\end{scope}\n  \\draw[->, thick, draw] (7.5,-1.6) -- node[draw=none, above, font=\\footnotesize] {left $z$} (8.9,-1.6);\n  % stage 2: x at root, z left, y right\n  \\begin{scope}[xshift=10.4cm]\n    \\node[draw=acc, very thick, fill=acc!15] (x2) {$x$}\n      child {node (z2) {$z$}\n        child {node[tri] {$T_1$}}\n        child {node[tri] {$T_2$}}\n      }\n      child {node (y2) {$y$}\n        child {node[tri] {$T_3$}}\n        child {node[tri] {$T_4$}}\n      };\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nIn every case the\nrebalanced subtree ends up with the _same height it had before the insertion_,\nwhich is the decisive fact:\n\n> **Key fact.** After rebalancing the lowest unbalanced node $z$, every ancestor\n> of $z$ regains the height it had before the insert, so no ancestor is\n> unbalanced. **Insertion fixes at most one node and uses $O(1)$ rotations.**\n\nSo insertion is $O(\\log n)$ to descend, $O(\\log n)$ to walk back up adjusting\nheights, and at most a double rotation ($\\le 2$ rotations) to repair: $O(\\log n)$\noverall. The dispatch is driven entirely by the stored heights:\n\n```algorithm\ncaption: $\\textsc{Insert-Fixup}$ — retrace the insertion path, repairing the lowest violation\n$x \\gets \\text{parent of the new leaf}$\nwhile $x \\ne \\text{nil}$ do\n  $h(x) \\gets 1 + \\max\\bigl(h(left(x)),\\, h(right(x))\\bigr)$\n  $b \\gets h(right(x)) - h(left(x))$ \u002F\u002F balance factor of $x$\n  if $b = -2$ then \u002F\u002F left-heavy: LL or LR\n    if $h(left(left(x))) \\ge h(right(left(x)))$ then\n      $\\textsc{Right-Rotate}(x)$ \u002F\u002F LL\n    else\n      $\\textsc{Left-Rotate}(left(x))$ ; $\\textsc{Right-Rotate}(x)$ \u002F\u002F LR\n    break \u002F\u002F height restored, ancestors safe\n  else if $b = +2$ then \u002F\u002F right-heavy: RR or RL\n    if $h(right(right(x))) \\ge h(left(right(x)))$ then\n      $\\textsc{Left-Rotate}(x)$ \u002F\u002F RR\n    else\n      $\\textsc{Right-Rotate}(right(x))$ ; $\\textsc{Left-Rotate}(x)$ \u002F\u002F RL\n    break\n  $x \\gets parent(x)$\n```\n\n## Deletion: the same cases, but up the whole path\n\nDeletion starts as in a BST, splicing out the node, or its in-order successor if it\nhas two children, then retraces the path to the root updating heights, applying\nexactly the same four rotation cases at any node that reaches $|bf| = 2$. The one\ndifference is consequential. A rotation that repairs an _insertion_ preserves the\nsubtree's height, but a rotation that repairs a _deletion_ can **shrink** the\nsubtree by one. That shorter subtree may unbalance the node's parent, which may\nunbalance _its_ parent, and so on. Deletion can therefore trigger up to\n$O(\\log n)$ rotations cascading toward the root, though each is still $O(1)$, so\nthe operation remains $O(\\log n)$.[^skiena-avl]\n\n$$\n% caption: Why deletion cascades. A rotation that repairs the subtree at $z$ leaves it one\n%          shorter (height $h\\to h-1$), so the height drop propagates to the parent $p$:\n%          with its other subtree still height $h$, $p$'s balance becomes $\\pm 2$ and must\n%          itself be rotated — and that rotation can shorten $p$, unbalancing $p$'s\n%          parent, all the way to the root. (Insertion never does this: its repair\n%          restores the original height.)\n\\begin{tikzpicture}[\n  every node\u002F.style={circle, draw, minimum size=7mm, inner sep=0, font=\\small},\n  tri\u002F.style={draw, isosceles triangle, isosceles triangle apex angle=54,\n    shape border rotate=90, minimum size=5mm, inner sep=1pt, font=\\scriptsize},\n  >=stealth, x=1cm, y=1cm]\n  \\definecolor{acc}{HTML}{2348F2}\n  % before: p over z(rebalanced subtree, now h-1) and a sibling of height h\n  \\node (p) at (0,0) {$p$};\n  \\node[draw=acc, very thick, fill=acc!15] (z) at (-1.2,-1.3) {$z$};\n  \\node[tri, minimum size=8mm] (sib) at (1.2,-1.3) {$h$};\n  \\node[tri] (zl) at (-2.0,-2.5) {};\n  \\node[tri] (zr) at (-0.4,-2.5) {};\n  \\draw (p)--(z); \\draw (p)--(sib); \\draw (z)--(zl); \\draw (z)--(zr);\n  \\node[draw=none, font=\\scriptsize, acc, align=center] at (-1.2,-3.3) {rotated:\\\\height $h{-}1$};\n  \\node[draw=none, font=\\scriptsize, red!75!black, align=center] at (2.6,0.1) {$p$ now\\\\$\\pm 2$};\n  \\draw[->, red!75!black] (1.9,0.0) -- (p.east);\n  % propagation arrow up\n  \\node[draw=none, font=\\scriptsize, red!75!black] (up) at (0,1.3) {to $p$'s parent $\\dots$};\n  \\draw[->, red!75!black] (p.north) -- (up.south);\n\\end{tikzpicture}\n$$\n\n## AVL versus red-black\n\nAVL and red-black trees both guarantee $O(\\log n)$ height, but they sit at\nopposite ends of a tradeoff. The AVL height-difference invariant is _strict_:\n$h \\le 1.44\\log_2 n$, noticeably shorter than red-black's $2\\log_2(n+1)$, so AVL\n**lookups are faster**, the structure of choice for read-heavy workloads. The\nprice is paid on updates: AVL trees track exact heights and may rotate to repair\neven small imbalances, whereas red-black trees tolerate looser balance and lean on\ncheap recolorings, doing **fewer rotations per update**. Roughly: AVL is more\nrigidly balanced and faster to search; red-black is cheaper to mutate, which is\nwhy it backs most standard-library ordered maps.[^skiena-balanced]\n\n## Takeaways\n\n- An **AVL tree** is a BST with the invariant that every node's two subtrees\n  differ in height by at most $1$, i.e. its **balance factor** $bf(x)\\in\\{-1,0,+1\\}$;\n  each node stores its height (or balance).\n- A **minimal-node \u002F Fibonacci-tree** argument gives $N(h)=N(h-1)+N(h-2)+1$,\n  so $N(h)=F_{h+3}-1$ and height $h \\le 1.44\\log_2 n = O(\\log n)$, hence all\n  operations are **worst-case $O(\\log n)$**.\n- **Insertion** descends as a BST, retraces the path updating heights, and repairs\n  the _lowest_ unbalanced node with one of four cases, **LL** (right), **RR**\n  (left), **LR** (left-then-right), **RL** (right-then-left), using **$O(1)$\n  rotations**, because the fix restores the subtree's prior height.\n- **Deletion** uses the same four cases but its rotations can shrink a subtree, so\n  the rebalancing may **cascade up to the root**, taking $O(\\log n)$ rotations.\n- Versus **red-black** trees: AVL is more rigidly balanced (**shorter, faster\n  lookups**) but does **more rotations per update**.\n\n[^erickson-avl]: **Erickson**, Ch. — Balanced Binary Search Trees: the height-balance invariant and its restoration by rotation after each update.\n[^clrs-avl]: **CLRS**, Problem 13-3 — AVL Trees: the Fibonacci minimal-node recurrence $N(h)=N(h-1)+N(h-2)+1$ and the $O(\\log n)$ height bound; insertion via $\\textsc{Balance}$ with $O(1)$ rotations.\n[^skiena-avl]: **Skiena**, §3.4 — Balanced Search Trees: AVL operations are $O(\\log n)$; deletion may rebalance along the full root path.\n[^skiena-balanced]: **Skiena**, §3.4 — Balanced Search Trees: the AVL-vs-red-black tradeoff — tighter balance and faster search versus cheaper update.\n",{"text":7780,"minutes":7781,"time":7782,"words":7783},"7 min read",6.94,416400,1388,{"title":94,"description":7758},[7786,7788,7790],{"book":7460,"ref":7787},"Problem 13-3 — AVL Trees",{"book":7686,"ref":7789},"§3.4 — Balanced Search Trees",{"book":7446,"ref":7791},"Ch. — Balanced Binary Search Trees","available","01.algorithms\u002F04.data-structures\u002F04.avl-trees",[97],"n0P6HhcJqk7PIgyOFn_twOcNbTQJKPbVjO01o4SMs1s",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":7797,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":7798,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":7799,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":7800,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":7801,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":7802,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":7803,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":7804,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":7805,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":7806,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":7807,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":7808,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":7783,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":7809,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":7810,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":7811,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":7812,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":7813,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":7814,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":7815,"\u002Falgorithms\u002Fsequences\u002Ftries":7816,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":7817,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":7818,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":7819,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":7820,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":7821,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":7822,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":7823,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":7824,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":7825,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":7826,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":7827,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":7828,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":7829,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":7830,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":7831,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":7832,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":7833,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":7834,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":7835,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":7836,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":7837,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":7838,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":7839,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":7840,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":7841,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":7842,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":7812,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":7843,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":7844,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":7845,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":7846,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":7828,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":7847,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":7848,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":7783,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":7849,"\u002Falgorithms":7850,"\u002Ftheory-of-computation":7851,"\u002Fcomputer-architecture":7851,"\u002Fphysical-computing":7851,"\u002Fdatabases":7851,"\u002Fdeep-learning":7851},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1465,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":7853,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":7854,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":7855,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":7856,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":7857,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":7858,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":7859,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":7860,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":7861,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":7862,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":7863,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":7864,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":7865,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":7866,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":7867,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":7868,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":7869,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":7870,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":7871,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":7872,"\u002Falgorithms\u002Fsequences\u002Ftries":7873,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":7874,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":7875,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":7876,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":7877,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":7878,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":7879,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":7880,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":7881,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":7882,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":7883,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":7884,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":7885,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":7886,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":7887,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":7888,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":7889,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":7890,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":7891,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":7892,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":7893,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":7894,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":7895,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":7896,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":7897,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":7898,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":7899,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":7900,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":7901,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":7902,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":7903,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":7904,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":7905,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":7906,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":7907,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":7908,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":7909,"\u002Falgorithms":7910,"\u002Ftheory-of-computation":7913,"\u002Fcomputer-architecture":7916,"\u002Fphysical-computing":7919,"\u002Fdatabases":7922,"\u002Fdeep-learning":7925},{"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":7911,"title":7912,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":7914,"title":7915,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":7917,"title":7918,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":7920,"title":7921,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":7923,"title":7924,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":7926,"title":7927,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560522562]