[{"data":1,"prerenderedAt":8276},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":374,"course-wordcounts":8145,"ref-card-index":8201},[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":55,"blurb":376,"body":377,"description":8103,"extension":8104,"meta":8105,"module":51,"navigation":8107,"path":56,"practice":8108,"rawbody":8127,"readingTime":8128,"seo":8133,"sources":8134,"status":8141,"stem":8142,"summary":59,"topics":8143,"__hash__":8144},"course\u002F01.algorithms\u002F03.sorting\u002F01.heaps-and-heapsort.md","",{"type":378,"value":379,"toc":8091},"minimark",[380,554,559,576,605,633,710,903,906,1037,1040,1212,1332,1670,2010,2017,2021,2128,2204,2419,2582,2756,2760,2869,2899,3036,3430,3433,3528,3719,3788,3942,4099,4630,5058,5073,5485,5488,5516,5556,5665,5974,6153,6319,6470,6557,6561,6590,6822,6919,6959,7065,7360,7409,7413,7807,8087],[381,382,383,386,387,390,391,451,452,476,477,503,504,543,544,548,549,553],"p",{},[384,385,39],"a",{"href":40}," is fast but has a quadratic worst case; ",[384,388,389],{"href":34},"mergesort"," guarantees\n",[392,393,396],"span",{"className":394},[395],"katex",[392,397,401],{"className":398,"ariaHidden":400},[399],"katex-html","true",[392,402,405,410,415,420,425,430,440,443,446],{"className":403},[404],"base",[392,406],{"className":407,"style":409},[408],"strut","height:1em;vertical-align:-0.25em;",[392,411,414],{"className":412},[413],"mord","Θ",[392,416,419],{"className":417},[418],"mopen","(",[392,421,424],{"className":422},[413,423],"mathnormal","n",[392,426],{"className":427,"style":429},[428],"mspace","margin-right:0.1667em;",[392,431,434],{"className":432},[433],"mop",[392,435,439],{"className":436,"style":438},[413,437],"mathrm","margin-right:0.0139em;","log",[392,441],{"className":442,"style":429},[428],[392,444,424],{"className":445},[413,423],[392,447,450],{"className":448},[449],"mclose",")"," but needs ",[392,453,455],{"className":454},[395],[392,456,458],{"className":457,"ariaHidden":400},[399],[392,459,461,464,467,470,473],{"className":460},[404],[392,462],{"className":463,"style":409},[408],[392,465,414],{"className":466},[413],[392,468,419],{"className":469},[418],[392,471,424],{"className":472},[413,423],[392,474,450],{"className":475},[449]," scratch space. ",[392,478,480],{"className":479},[395],[392,481,483],{"className":482,"ariaHidden":400},[399],[392,484,486,490],{"className":485},[404],[392,487],{"className":488,"style":489},[408],"height:0.8778em;vertical-align:-0.1944em;",[392,491,495],{"className":492},[493,494],"enclosing","textsc",[392,496,499],{"className":497},[413,498],"text",[392,500,502],{"className":501},[413],"Heapsort"," captures the\nbest of both: a worst-case ",[392,505,507],{"className":506},[395],[392,508,510],{"className":509,"ariaHidden":400},[399],[392,511,513,516,519,522,525,528,534,537,540],{"className":512},[404],[392,514],{"className":515,"style":409},[408],[392,517,414],{"className":518},[413],[392,520,419],{"className":521},[418],[392,523,424],{"className":524},[413,423],[392,526],{"className":527,"style":429},[428],[392,529,531],{"className":530},[433],[392,532,439],{"className":533,"style":438},[413,437],[392,535],{"className":536,"style":429},[428],[392,538,424],{"className":539},[413,423],[392,541,450],{"className":542},[449]," bound ",[545,546,547],"em",{},"and"," sorting in place, using\nonly a constant amount of extra memory. The trick is a data structure, the\n",[550,551,552],"strong",{},"binary heap",", which doubles as an efficient priority queue and so is\nworth knowing for its own sake well beyond sorting.",[555,556,558],"h2",{"id":557},"the-heap-as-a-tree-we-never-build","The heap as a tree we never build",[381,560,561,562,565,566],{},"A ",[550,563,564],{},"(binary) max-heap"," is a complete binary tree that obeys one local rule.",[567,568,569],"sup",{},[384,570,575],{"href":571,"ariaDescribedBy":572,"dataFootnoteRef":376,"id":574},"#user-content-fn-clrs-heap",[573],"footnote-label","user-content-fnref-clrs-heap","1",[577,578,580],"callout",{"type":579},"lemma",[381,581,582,585,586,604],{},[550,583,584],{},"Property (Max-heap)."," Every node's key is at least the key of each of its\nchildren. Equivalently, the key of any node is ",[392,587,589],{"className":588},[395],[392,590,592],{"className":591,"ariaHidden":400},[399],[392,593,595,599],{"className":594},[404],[392,596],{"className":597,"style":598},[408],"height:0.7719em;vertical-align:-0.136em;",[392,600,603],{"className":601},[602],"mrel","≥"," the keys of all its\ndescendants.",[381,606,607,611,612,628,629,632],{},[608,609,610],"q",{},"Complete"," means the tree is filled level by level, top to bottom and left to\nright, with no gaps until possibly the last level. That rigidity is what lets us\ndiscard the tree entirely and store it as a flat array: there is exactly one\nshape for a complete tree on ",[392,613,615],{"className":614},[395],[392,616,618],{"className":617,"ariaHidden":400},[399],[392,619,621,625],{"className":620},[404],[392,622],{"className":623,"style":624},[408],"height:0.4306em;",[392,626,424],{"className":627},[413,423]," nodes, so position in the array ",[545,630,631],{},"is"," position\nin the tree.",[381,634,635,636,667,668,692,693,709],{},"We store the heap in an array ",[392,637,639],{"className":638},[395],[392,640,642],{"className":641,"ariaHidden":400},[399],[392,643,645,648,652,656,660,663],{"className":644},[404],[392,646],{"className":647,"style":409},[408],[392,649,651],{"className":650},[413,423],"A",[392,653,655],{"className":654},[418],"[",[392,657,659],{"className":658},[413],"1..",[392,661,424],{"className":662},[413,423],[392,664,666],{"className":665},[449],"]"," in level order: the root at ",[392,669,671],{"className":670},[395],[392,672,674],{"className":673,"ariaHidden":400},[399],[392,675,677,680,683,686,689],{"className":676},[404],[392,678],{"className":679,"style":409},[408],[392,681,651],{"className":682},[413,423],[392,684,655],{"className":685},[418],[392,687,575],{"className":688},[413],[392,690,666],{"className":691},[449],",\nthen its two children, then their four children, and so on. With ",[392,694,696],{"className":695},[395],[392,697,699],{"className":698,"ariaHidden":400},[399],[392,700,702,706],{"className":701},[404],[392,703],{"className":704,"style":705},[408],"height:0.6444em;",[392,707,575],{"className":708},[413],"-based\nindexing the navigation is pure arithmetic, no pointers required:",[392,711,714],{"className":712},[713],"katex-display",[392,715,717],{"className":716},[395],[392,718,720,754,821,868,893],{"className":719,"ariaHidden":400},[399],[392,721,723,726,733,736,740,743,747,751],{"className":722},[404],[392,724],{"className":725,"style":409},[408],[392,727,729],{"className":728},[433],[392,730,732],{"className":731},[413,437],"parent",[392,734,419],{"className":735},[418],[392,737,739],{"className":738},[413,423],"i",[392,741,450],{"className":742},[449],[392,744],{"className":745,"style":746},[428],"margin-right:0.2778em;",[392,748,750],{"className":749},[602],"=",[392,752],{"className":753,"style":746},[428],[392,755,757,760,781,784,789,793,796,803,806,809,812,815,818],{"className":756},[404],[392,758],{"className":759,"style":409},[408],[392,761,764,770,773,777],{"className":762},[763],"minner",[392,765,769],{"className":766,"style":768},[418,767],"delimcenter","top:0em;","⌊",[392,771,739],{"className":772},[413,423],[392,774,776],{"className":775},[413],"\u002F2",[392,778,780],{"className":779,"style":768},[449,767],"⌋",[392,782],{"className":783,"style":429},[428],[392,785,788],{"className":786},[787],"mpunct",",",[392,790],{"className":791,"style":792},[428],"margin-right:2em;",[392,794],{"className":795,"style":429},[428],[392,797,799],{"className":798},[433],[392,800,802],{"className":801},[413,437],"left",[392,804,419],{"className":805},[418],[392,807,739],{"className":808},[413,423],[392,810,450],{"className":811},[449],[392,813],{"className":814,"style":746},[428],[392,816,750],{"className":817},[602],[392,819],{"className":820,"style":746},[428],[392,822,824,827,831,834,837,840,843,850,853,856,859,862,865],{"className":823},[404],[392,825],{"className":826,"style":409},[408],[392,828,830],{"className":829},[413],"2",[392,832,739],{"className":833},[413,423],[392,835,788],{"className":836},[787],[392,838],{"className":839,"style":792},[428],[392,841],{"className":842,"style":429},[428],[392,844,846],{"className":845},[433],[392,847,849],{"className":848},[413,437],"right",[392,851,419],{"className":852},[418],[392,854,739],{"className":855},[413,423],[392,857,450],{"className":858},[449],[392,860],{"className":861,"style":746},[428],[392,863,750],{"className":864},[602],[392,866],{"className":867,"style":746},[428],[392,869,871,875,878,881,885,890],{"className":870},[404],[392,872],{"className":873,"style":874},[408],"height:0.7429em;vertical-align:-0.0833em;",[392,876,830],{"className":877},[413],[392,879,739],{"className":880},[413,423],[392,882],{"className":883,"style":884},[428],"margin-right:0.2222em;",[392,886,889],{"className":887},[888],"mbin","+",[392,891],{"className":892,"style":884},[428],[392,894,896,899],{"className":895},[404],[392,897],{"className":898,"style":705},[408],[392,900,902],{"className":901},[413],"1.",[381,904,905],{},"Doubling an index walks down to a left child; halving walks back up to a parent.\nOn a machine these are single shift operations, which is part of why heaps are\nfast in practice. Here is a small max-heap shown both as a tree and as the array\nthat actually lives in memory:",[907,908,912,1031],"figure",{"className":909},[910,911],"tikz-figure","tikz-diagram-rendered",[913,914,919],"svg",{"xmlns":915,"width":916,"height":917,"viewBox":918},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","269.052","175.456","-75 -75 201.789 131.592",[920,921,924,929,938,941,948,951,958,961,968,971,978,981,988,991,998,1001,1008,1011,1018,1021,1028],"g",{"stroke":922,"style":923},"currentColor","stroke-miterlimit:10;stroke-width:.4",[925,926],"path",{"fill":927,"d":928},"none","M50.765-60.689c0-6.286-5.096-11.381-11.381-11.381s-11.381 5.095-11.381 11.381 5.095 11.381 11.38 11.381 11.382-5.095 11.382-11.38Zm-11.381 0",[920,930,932],{"transform":931},"translate(-4.625 2.9)",[925,933],{"d":934,"fill":922,"stroke":922,"className":935,"style":937},"M43.291-60.689L40.259-60.689L40.259-61.005Q41.410-61.005 41.410-61.300L41.410-66.024Q40.922-65.791 40.201-65.791L40.201-66.107Q41.331-66.107 41.893-66.683L42.038-66.683Q42.073-66.683 42.106-66.650Q42.139-66.617 42.139-66.582L42.139-61.300Q42.139-61.005 43.291-61.005L43.291-60.689M46.314-60.491Q45.580-60.491 45.150-60.972Q44.719-61.454 44.554-62.146Q44.389-62.838 44.389-63.585Q44.389-64.314 44.682-65.037Q44.974-65.760 45.528-66.222Q46.081-66.683 46.828-66.683Q47.325-66.683 47.661-66.417Q47.997-66.151 47.997-65.668Q47.997-65.488 47.870-65.360Q47.742-65.233 47.567-65.233Q47.386-65.233 47.257-65.358Q47.127-65.483 47.127-65.668Q47.127-65.782 47.184-65.886Q47.241-65.989 47.342-66.048Q47.444-66.107 47.567-66.107Q47.571-66.107 47.575-66.105Q47.580-66.103 47.584-66.099Q47.470-66.266 47.261-66.345Q47.052-66.424 46.828-66.424Q46.384-66.424 46.026-66.123Q45.668-65.822 45.479-65.369Q45.246-64.763 45.246-63.730Q45.418-64.095 45.719-64.323Q46.020-64.552 46.406-64.552Q46.811-64.552 47.156-64.385Q47.501-64.218 47.738-63.937Q47.975-63.655 48.105-63.293Q48.235-62.930 48.235-62.526Q48.235-61.981 47.991-61.515Q47.747-61.049 47.307-60.770Q46.868-60.491 46.314-60.491M46.314-60.777Q46.776-60.777 47.011-61.034Q47.246-61.291 47.312-61.665Q47.378-62.038 47.378-62.508L47.378-62.543Q47.378-63.031 47.321-63.396Q47.263-63.761 47.035-64.024Q46.806-64.288 46.363-64.288Q45.993-64.288 45.743-64.044Q45.492-63.800 45.378-63.436Q45.264-63.071 45.264-62.724Q45.264-62.605 45.273-62.543Q45.273-62.526 45.270-62.515Q45.268-62.504 45.264-62.491Q45.264-61.840 45.501-61.309Q45.738-60.777 46.314-60.777",[936],"tikz-text","stroke-width:0.270",[925,939],{"fill":927,"d":940},"M2.395-26.546c0-6.285-5.095-11.38-11.381-11.38s-11.381 5.095-11.381 11.38 5.095 11.381 11.381 11.381S2.395-20.26 2.395-26.545Zm-11.381 0",[920,942,944],{"transform":943},"translate(-52.995 37.043)",[925,945],{"d":946,"fill":922,"stroke":922,"className":947,"style":937},"M43.291-60.689L40.259-60.689L40.259-61.005Q41.410-61.005 41.410-61.300L41.410-66.024Q40.922-65.791 40.201-65.791L40.201-66.107Q41.331-66.107 41.893-66.683L42.038-66.683Q42.073-66.683 42.106-66.650Q42.139-66.617 42.139-66.582L42.139-61.300Q42.139-61.005 43.291-61.005L43.291-60.689M46.701-62.166L44.262-62.166L44.262-62.482L47.088-66.630Q47.132-66.683 47.197-66.683L47.351-66.683Q47.391-66.683 47.424-66.650Q47.457-66.617 47.457-66.573L47.457-62.482L48.358-62.482L48.358-62.166L47.457-62.166L47.457-61.300Q47.457-61.005 48.358-61.005L48.358-60.689L45.804-60.689L45.804-61.005Q46.165-61.005 46.433-61.060Q46.701-61.115 46.701-61.300L46.701-62.166M46.758-65.655L44.596-62.482L46.758-62.482",[936],[925,949],{"fill":927,"d":950},"M29.923-54.01.475-33.225M-21.79 7.598c0-6.286-5.095-11.381-11.38-11.381s-11.382 5.095-11.382 11.38S-39.456 18.98-33.17 18.98-21.79 13.883-21.79 7.598Zm-11.38 0",[920,952,954],{"transform":953},"translate(-74.867 71.187)",[925,955],{"d":956,"fill":922,"stroke":922,"className":957,"style":937},"M39.771-62.056Q39.771-62.614 40.131-63.027Q40.491-63.440 41.067-63.712L40.698-63.945Q40.395-64.147 40.208-64.477Q40.021-64.807 40.021-65.163Q40.021-65.817 40.527-66.250Q41.032-66.683 41.696-66.683Q42.095-66.683 42.480-66.523Q42.864-66.362 43.113-66.057Q43.361-65.751 43.361-65.334Q43.361-64.503 42.293-63.945L42.847-63.598Q43.194-63.370 43.405-63.001Q43.616-62.631 43.616-62.218Q43.616-61.840 43.458-61.522Q43.300-61.203 43.023-60.970Q42.746-60.737 42.403-60.614Q42.060-60.491 41.696-60.491Q41.230-60.491 40.784-60.678Q40.338-60.865 40.054-61.219Q39.771-61.572 39.771-62.056M40.294-62.056Q40.294-61.511 40.713-61.144Q41.133-60.777 41.696-60.777Q42.025-60.777 42.350-60.909Q42.676-61.041 42.884-61.295Q43.093-61.550 43.093-61.893Q43.093-62.157 42.957-62.381Q42.821-62.605 42.588-62.759L41.344-63.541Q40.883-63.304 40.588-62.917Q40.294-62.530 40.294-62.056M40.905-64.811L42.021-64.108Q42.245-64.231 42.449-64.420Q42.654-64.609 42.774-64.842Q42.895-65.075 42.895-65.334Q42.895-65.642 42.724-65.892Q42.552-66.143 42.276-66.283Q41.999-66.424 41.687-66.424Q41.238-66.424 40.865-66.178Q40.491-65.932 40.491-65.505Q40.491-65.101 40.905-64.811",[936],[925,959],{"fill":927,"d":960},"M-15.68-17.096-26.477-1.852M-45.975 41.741c0-6.286-5.095-11.381-11.38-11.381s-11.382 5.095-11.382 11.381 5.096 11.381 11.381 11.381 11.381-5.095 11.381-11.381Zm-11.38 0",[920,962,964],{"transform":963},"translate(-99.052 105.33)",[925,965],{"d":966,"fill":922,"stroke":922,"className":967,"style":937},"M43.291-60.689L39.841-60.689L39.841-60.922Q39.841-60.935 39.872-60.966L41.326-62.543Q41.792-63.040 42.045-63.345Q42.298-63.651 42.489-64.062Q42.680-64.473 42.680-64.912Q42.680-65.501 42.357-65.934Q42.034-66.367 41.454-66.367Q41.190-66.367 40.944-66.257Q40.698-66.147 40.522-65.960Q40.346-65.773 40.250-65.523L40.329-65.523Q40.531-65.523 40.674-65.387Q40.817-65.251 40.817-65.035Q40.817-64.829 40.674-64.690Q40.531-64.552 40.329-64.552Q40.127-64.552 39.984-64.695Q39.841-64.837 39.841-65.035Q39.841-65.497 40.078-65.870Q40.316-66.244 40.716-66.463Q41.115-66.683 41.564-66.683Q42.087-66.683 42.541-66.468Q42.996-66.252 43.269-65.853Q43.541-65.453 43.541-64.912Q43.541-64.517 43.370-64.163Q43.198-63.809 42.933-63.530Q42.667-63.251 42.216-62.866Q41.766-62.482 41.687-62.407L40.663-61.445L41.480-61.445Q42.131-61.445 42.568-61.456Q43.005-61.467 43.036-61.489Q43.106-61.572 43.161-61.812Q43.216-62.051 43.256-62.319L43.541-62.319",[936],[925,969],{"fill":927,"d":970},"M-39.864 17.048-50.662 32.29M2.395 41.741c0-6.286-5.095-11.381-11.38-11.381-6.287 0-11.382 5.095-11.382 11.381s5.095 11.381 11.381 11.381S2.395 48.027 2.395 41.741Zm-11.38 0",[920,972,974],{"transform":973},"translate(-50.682 105.33)",[925,975],{"d":976,"fill":922,"stroke":922,"className":977,"style":937},"M42.082-62.166L39.643-62.166L39.643-62.482L42.469-66.630Q42.513-66.683 42.579-66.683L42.733-66.683Q42.772-66.683 42.805-66.650Q42.838-66.617 42.838-66.573L42.838-62.482L43.739-62.482L43.739-62.166L42.838-62.166L42.838-61.300Q42.838-61.005 43.739-61.005L43.739-60.689L41.186-60.689L41.186-61.005Q41.546-61.005 41.814-61.060Q42.082-61.115 42.082-61.300L42.082-62.166M42.139-65.655L39.977-62.482L42.139-62.482",[936],[925,979],{"fill":927,"d":980},"M-26.477 17.048-15.68 32.29M26.58 7.598c0-6.286-5.095-11.381-11.381-11.381S3.818 1.312 3.818 7.597 8.913 18.98 15.198 18.98c6.287 0 11.382-5.096 11.382-11.381Zm-11.381 0",[920,982,984],{"transform":983},"translate(-26.497 71.187)",[925,985],{"d":986,"fill":922,"stroke":922,"className":987,"style":937},"M41.006-60.931Q41.006-61.568 41.162-62.214Q41.318-62.860 41.610-63.466Q41.902-64.073 42.311-64.622L43.128-65.730L42.100-65.730Q40.456-65.730 40.408-65.686Q40.302-65.558 40.184-64.855L39.898-64.855L40.193-66.771L40.483-66.771L40.483-66.745Q40.483-66.582 41.047-66.534Q41.612-66.485 42.157-66.485L43.875-66.485L43.875-66.279Q43.875-66.261 43.873-66.252Q43.871-66.244 43.866-66.235L42.579-64.486Q42.328-64.134 42.181-63.708Q42.034-63.282 41.968-62.818Q41.902-62.355 41.889-61.944Q41.876-61.533 41.876-60.931Q41.876-60.751 41.750-60.621Q41.625-60.491 41.445-60.491Q41.326-60.491 41.223-60.548Q41.120-60.606 41.063-60.709Q41.006-60.812 41.006-60.931",[936],[925,989],{"fill":927,"d":990},"M-2.292-17.096 8.505-1.852M26.58 41.741c0-6.286-5.095-11.381-11.381-11.381S3.818 35.455 3.818 41.74s5.095 11.381 11.38 11.381c6.287 0 11.382-5.095 11.382-11.381Zm-11.381 0",[920,992,994],{"transform":993},"translate(-26.497 105.33)",[925,995],{"d":996,"fill":922,"stroke":922,"className":997,"style":937},"M43.291-60.689L40.259-60.689L40.259-61.005Q41.410-61.005 41.410-61.300L41.410-66.024Q40.922-65.791 40.201-65.791L40.201-66.107Q41.331-66.107 41.893-66.683L42.038-66.683Q42.073-66.683 42.106-66.650Q42.139-66.617 42.139-66.582L42.139-61.300Q42.139-61.005 43.291-61.005",[936],[925,999],{"fill":927,"d":1000},"M15.199 19.179v10.98M99.134-26.546c0-6.285-5.095-11.38-11.38-11.38s-11.382 5.095-11.382 11.38 5.096 11.381 11.381 11.381 11.381-5.095 11.381-11.38Zm-11.38 0",[920,1002,1004],{"transform":1003},"translate(43.745 37.043)",[925,1005],{"d":1006,"fill":922,"stroke":922,"className":1007,"style":937},"M43.291-60.689L40.259-60.689L40.259-61.005Q41.410-61.005 41.410-61.300L41.410-66.024Q40.922-65.791 40.201-65.791L40.201-66.107Q41.331-66.107 41.893-66.683L42.038-66.683Q42.073-66.683 42.106-66.650Q42.139-66.617 42.139-66.582L42.139-61.300Q42.139-61.005 43.291-61.005L43.291-60.689M46.314-60.491Q45.189-60.491 44.776-61.388Q44.363-62.284 44.363-63.559Q44.363-64.332 44.512-65.031Q44.662-65.730 45.097-66.206Q45.532-66.683 46.314-66.683Q47.092-66.683 47.527-66.204Q47.962-65.725 48.112-65.029Q48.261-64.332 48.261-63.559Q48.261-62.280 47.848-61.386Q47.435-60.491 46.314-60.491M46.314-60.751Q46.833-60.751 47.083-61.262Q47.334-61.774 47.391-62.385Q47.448-62.996 47.448-63.704Q47.448-64.389 47.391-64.949Q47.334-65.510 47.081-65.967Q46.828-66.424 46.314-66.424Q45.910-66.424 45.673-66.147Q45.435-65.870 45.328-65.429Q45.220-64.987 45.196-64.594Q45.172-64.200 45.172-63.704Q45.172-63.198 45.196-62.770Q45.220-62.341 45.328-61.858Q45.435-61.375 45.675-61.063Q45.914-60.751 46.314-60.751",[936],[925,1009],{"fill":927,"d":1010},"m48.845-54.01 29.447 20.786M74.95 7.598c0-6.286-5.096-11.381-11.381-11.381S52.187 1.312 52.187 7.597 57.283 18.98 63.57 18.98s11.38-5.096 11.38-11.381Zm-11.381 0",[920,1012,1014],{"transform":1013},"translate(21.872 71.187)",[925,1015],{"d":1016,"fill":922,"stroke":922,"className":1017,"style":937},"M40.447-61.076Q40.694-60.777 41.300-60.777Q41.581-60.777 41.821-60.915Q42.060-61.054 42.238-61.276Q42.416-61.498 42.526-61.761Q42.759-62.337 42.759-63.453Q42.592-63.088 42.287-62.864Q41.981-62.640 41.599-62.640Q41.063-62.640 40.647-62.919Q40.232-63.198 40.001-63.664Q39.771-64.130 39.771-64.657Q39.771-65.070 39.918-65.439Q40.065-65.809 40.329-66.085Q40.592-66.362 40.962-66.523Q41.331-66.683 41.744-66.683Q42.302-66.683 42.676-66.391Q43.049-66.099 43.253-65.635Q43.458-65.171 43.537-64.655Q43.616-64.139 43.616-63.607Q43.616-62.891 43.348-62.168Q43.080-61.445 42.557-60.968Q42.034-60.491 41.309-60.491Q40.759-60.491 40.382-60.740Q40.004-60.988 40.004-61.506Q40.004-61.625 40.061-61.728Q40.118-61.832 40.219-61.891Q40.320-61.950 40.447-61.950Q40.632-61.950 40.755-61.818Q40.878-61.687 40.878-61.506Q40.878-61.331 40.751-61.203Q40.623-61.076 40.447-61.076M41.643-62.904Q42.012-62.904 42.260-63.146Q42.509-63.387 42.625-63.745Q42.741-64.104 42.741-64.477Q42.741-64.587 42.733-64.640Q42.737-64.653 42.739-64.664Q42.741-64.675 42.741-64.692Q42.741-65.347 42.526-65.886Q42.311-66.424 41.744-66.424Q41.384-66.424 41.155-66.274Q40.926-66.125 40.810-65.868Q40.694-65.611 40.661-65.330Q40.628-65.048 40.628-64.675L40.628-64.640Q40.628-64.314 40.654-64.027Q40.680-63.739 40.779-63.480Q40.878-63.220 41.089-63.062Q41.300-62.904 41.643-62.904",[936],[925,1019],{"fill":927,"d":1020},"M81.06-17.096 70.262-1.852M123.32 7.598c0-6.286-5.096-11.381-11.382-11.381s-11.38 5.095-11.38 11.38 5.095 11.382 11.38 11.382 11.381-5.096 11.381-11.381Zm-11.382 0",[920,1022,1024],{"transform":1023},"translate(70.242 71.187)",[925,1025],{"d":1026,"fill":922,"stroke":922,"className":1027,"style":937},"M40.285-61.410L40.241-61.410Q40.443-61.093 40.830-60.935Q41.217-60.777 41.643-60.777Q42.179-60.777 42.418-61.212Q42.658-61.647 42.658-62.227Q42.658-62.807 42.412-63.247Q42.166-63.686 41.634-63.686L41.014-63.686Q40.988-63.686 40.955-63.715Q40.922-63.743 40.922-63.765L40.922-63.866Q40.922-63.897 40.951-63.921Q40.979-63.945 41.014-63.945L41.533-63.985Q41.999-63.985 42.245-64.457Q42.491-64.930 42.491-65.448Q42.491-65.875 42.278-66.149Q42.065-66.424 41.643-66.424Q41.300-66.424 40.975-66.294Q40.650-66.165 40.465-65.910L40.491-65.910Q40.694-65.910 40.830-65.769Q40.966-65.628 40.966-65.431Q40.966-65.233 40.832-65.099Q40.698-64.965 40.500-64.965Q40.298-64.965 40.160-65.099Q40.021-65.233 40.021-65.431Q40.021-66.020 40.524-66.351Q41.028-66.683 41.643-66.683Q42.021-66.683 42.423-66.543Q42.825-66.402 43.093-66.123Q43.361-65.844 43.361-65.448Q43.361-64.899 43.007-64.462Q42.654-64.024 42.113-63.840Q42.504-63.761 42.849-63.537Q43.194-63.313 43.405-62.972Q43.616-62.631 43.616-62.236Q43.616-61.854 43.453-61.531Q43.291-61.208 42.999-60.972Q42.706-60.737 42.359-60.614Q42.012-60.491 41.643-60.491Q41.195-60.491 40.764-60.652Q40.333-60.812 40.052-61.139Q39.771-61.467 39.771-61.924Q39.771-62.139 39.918-62.282Q40.065-62.425 40.285-62.425Q40.496-62.425 40.641-62.280Q40.786-62.135 40.786-61.924Q40.786-61.713 40.639-61.561Q40.491-61.410 40.285-61.410",[936],[925,1029],{"fill":927,"d":1030},"m94.447-17.096 10.798 15.244",[1032,1033,1036],"figcaption",{"className":1034},[1035],"tikz-cap","A small max-heap drawn as a binary tree.",[381,1038,1039],{},"Read level by level, the array is",[392,1041,1043],{"className":1042},[713],[392,1044,1046],{"className":1045},[395],[392,1047,1049,1068],{"className":1048,"ariaHidden":400},[399],[392,1050,1052,1056,1059,1062,1065],{"className":1051},[404],[392,1053],{"className":1054,"style":1055},[408],"height:0.6833em;",[392,1057,651],{"className":1058},[413,423],[392,1060],{"className":1061,"style":746},[428],[392,1063,750],{"className":1064},[602],[392,1066],{"className":1067,"style":746},[428],[392,1069,1071,1074,1205,1208],{"className":1070},[404],[392,1072],{"className":1073,"style":409},[408],[392,1075,1077,1081,1085,1088,1092,1095,1099,1102,1105,1108,1112,1115,1118,1121,1125,1128,1131,1134,1138,1141,1144,1147,1151,1154,1157,1160,1164,1167,1170,1173,1176,1179,1182,1185,1189,1192,1195,1198,1201],{"className":1076},[763],[392,1078,1080],{"className":1079,"style":768},[418,767],"⟨",[392,1082,1084],{"className":1083},[413],"16",[392,1086,788],{"className":1087},[787],[392,1089,1091],{"className":1090},[428]," ",[392,1093],{"className":1094,"style":429},[428],[392,1096,1098],{"className":1097},[413],"14",[392,1100,788],{"className":1101},[787],[392,1103,1091],{"className":1104},[428],[392,1106],{"className":1107,"style":429},[428],[392,1109,1111],{"className":1110},[413],"10",[392,1113,788],{"className":1114},[787],[392,1116,1091],{"className":1117},[428],[392,1119],{"className":1120,"style":429},[428],[392,1122,1124],{"className":1123},[413],"8",[392,1126,788],{"className":1127},[787],[392,1129,1091],{"className":1130},[428],[392,1132],{"className":1133,"style":429},[428],[392,1135,1137],{"className":1136},[413],"7",[392,1139,788],{"className":1140},[787],[392,1142,1091],{"className":1143},[428],[392,1145],{"className":1146,"style":429},[428],[392,1148,1150],{"className":1149},[413],"9",[392,1152,788],{"className":1153},[787],[392,1155,1091],{"className":1156},[428],[392,1158],{"className":1159,"style":429},[428],[392,1161,1163],{"className":1162},[413],"3",[392,1165,788],{"className":1166},[787],[392,1168,1091],{"className":1169},[428],[392,1171],{"className":1172,"style":429},[428],[392,1174,830],{"className":1175},[413],[392,1177,788],{"className":1178},[787],[392,1180,1091],{"className":1181},[428],[392,1183],{"className":1184,"style":429},[428],[392,1186,1188],{"className":1187},[413],"4",[392,1190,788],{"className":1191},[787],[392,1193,1091],{"className":1194},[428],[392,1196],{"className":1197,"style":429},[428],[392,1199,575],{"className":1200},[413],[392,1202,1204],{"className":1203,"style":768},[449,767],"⟩",[392,1206],{"className":1207,"style":429},[428],[392,1209,1211],{"className":1210},[413],".",[381,1213,1214,1215,1231,1232,1247,1248,1266,1267,1303,1304,1331],{},"The blue numbers below trace the correspondence: each tree node ",[392,1216,1218],{"className":1217},[395],[392,1219,1221],{"className":1220,"ariaHidden":400},[399],[392,1222,1224,1228],{"className":1223},[404],[392,1225],{"className":1226,"style":1227},[408],"height:0.6595em;",[392,1229,739],{"className":1230},[413,423]," lives at\narray slot ",[392,1233,1235],{"className":1234},[395],[392,1236,1238],{"className":1237,"ariaHidden":400},[399],[392,1239,1241,1244],{"className":1240},[404],[392,1242],{"className":1243,"style":1227},[408],[392,1245,739],{"className":1246},[413,423],", so doubling the index (",[392,1249,1251],{"className":1250},[395],[392,1252,1254],{"className":1253,"ariaHidden":400},[399],[392,1255,1257,1260,1263],{"className":1256},[404],[392,1258],{"className":1259,"style":1227},[408],[392,1261,830],{"className":1262},[413],[392,1264,739],{"className":1265},[413,423],", ",[392,1268,1270],{"className":1269},[395],[392,1271,1273,1294],{"className":1272,"ariaHidden":400},[399],[392,1274,1276,1279,1282,1285,1288,1291],{"className":1275},[404],[392,1277],{"className":1278,"style":874},[408],[392,1280,830],{"className":1281},[413],[392,1283,739],{"className":1284},[413,423],[392,1286],{"className":1287,"style":884},[428],[392,1289,889],{"className":1290},[888],[392,1292],{"className":1293,"style":884},[428],[392,1295,1297,1300],{"className":1296},[404],[392,1298],{"className":1299,"style":705},[408],[392,1301,575],{"className":1302},[413],") steps down to a child and\nhalving (",[392,1305,1307],{"className":1306},[395],[392,1308,1310],{"className":1309,"ariaHidden":400},[399],[392,1311,1313,1316],{"className":1312},[404],[392,1314],{"className":1315,"style":409},[408],[392,1317,1319,1322,1325,1328],{"className":1318},[763],[392,1320,769],{"className":1321,"style":768},[418,767],[392,1323,739],{"className":1324},[413,423],[392,1326,776],{"className":1327},[413],[392,1329,780],{"className":1330,"style":768},[449,767],") steps back up to the parent.",[907,1333,1335,1578],{"className":1334},[910,911],[913,1336,1340],{"xmlns":915,"width":1337,"height":1338,"viewBox":1339},"355.062","216.382","-75 -75 266.297 162.286",[920,1341,1342,1345,1351,1354,1361,1364,1371,1374,1381,1384,1391,1394,1401,1404,1411,1414,1423,1430,1437,1444,1451,1458,1465,1468,1474,1477,1483,1486,1492,1495,1501,1504,1510,1513,1519,1522,1528,1534,1540,1546,1552,1558,1564,1570],{"stroke":922,"style":923},[925,1343],{"fill":927,"d":1344},"M39.872-51.032c0-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",[920,1346,1347],{"transform":931},[925,1348],{"d":1349,"fill":922,"stroke":922,"className":1350,"style":937},"M33.820-51.032L30.788-51.032L30.788-51.348Q31.939-51.348 31.939-51.643L31.939-56.367Q31.451-56.134 30.730-56.134L30.730-56.450Q31.860-56.450 32.422-57.026L32.567-57.026Q32.602-57.026 32.635-56.993Q32.668-56.960 32.668-56.925L32.668-51.643Q32.668-51.348 33.820-51.348L33.820-51.032M36.843-50.834Q36.109-50.834 35.679-51.315Q35.248-51.797 35.083-52.489Q34.918-53.181 34.918-53.928Q34.918-54.657 35.211-55.380Q35.503-56.103 36.057-56.565Q36.610-57.026 37.357-57.026Q37.854-57.026 38.190-56.760Q38.526-56.494 38.526-56.011Q38.526-55.831 38.399-55.703Q38.271-55.576 38.096-55.576Q37.915-55.576 37.786-55.701Q37.656-55.826 37.656-56.011Q37.656-56.125 37.713-56.229Q37.770-56.332 37.871-56.391Q37.973-56.450 38.096-56.450Q38.100-56.450 38.104-56.448Q38.109-56.446 38.113-56.442Q37.999-56.609 37.790-56.688Q37.581-56.767 37.357-56.767Q36.913-56.767 36.555-56.466Q36.197-56.165 36.008-55.712Q35.775-55.106 35.775-54.073Q35.947-54.438 36.248-54.666Q36.549-54.895 36.935-54.895Q37.340-54.895 37.685-54.728Q38.030-54.561 38.267-54.280Q38.504-53.998 38.634-53.636Q38.764-53.273 38.764-52.869Q38.764-52.324 38.520-51.858Q38.276-51.392 37.836-51.113Q37.397-50.834 36.843-50.834M36.843-51.120Q37.305-51.120 37.540-51.377Q37.775-51.634 37.841-52.008Q37.907-52.381 37.907-52.851L37.907-52.886Q37.907-53.374 37.850-53.739Q37.792-54.104 37.564-54.367Q37.335-54.631 36.892-54.631Q36.522-54.631 36.272-54.387Q36.021-54.143 35.907-53.779Q35.793-53.414 35.793-53.067Q35.793-52.948 35.802-52.886Q35.802-52.869 35.799-52.858Q35.797-52.847 35.793-52.834Q35.793-52.183 36.030-51.652Q36.267-51.120 36.843-51.120",[936],[925,1352],{"fill":927,"d":1353},"M-17.034-16.89c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.459-9.959 9.959 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[920,1355,1357],{"transform":1356},"translate(-61.53 37.043)",[925,1358],{"d":1359,"fill":922,"stroke":922,"className":1360,"style":937},"M33.820-51.032L30.788-51.032L30.788-51.348Q31.939-51.348 31.939-51.643L31.939-56.367Q31.451-56.134 30.730-56.134L30.730-56.450Q31.860-56.450 32.422-57.026L32.567-57.026Q32.602-57.026 32.635-56.993Q32.668-56.960 32.668-56.925L32.668-51.643Q32.668-51.348 33.820-51.348L33.820-51.032M37.230-52.509L34.791-52.509L34.791-52.825L37.617-56.973Q37.661-57.026 37.726-57.026L37.880-57.026Q37.920-57.026 37.953-56.993Q37.986-56.960 37.986-56.916L37.986-52.825L38.887-52.825L38.887-52.509L37.986-52.509L37.986-51.643Q37.986-51.348 38.887-51.348L38.887-51.032L36.333-51.032L36.333-51.348Q36.694-51.348 36.962-51.403Q37.230-51.458 37.230-51.643L37.230-52.509M37.287-55.998L35.125-52.825L37.287-52.825",[936],[925,1362],{"fill":927,"d":1363},"M96.777-16.89c0-5.5-4.458-9.958-9.958-9.958s-9.959 4.459-9.959 9.959 4.459 9.958 9.959 9.958 9.958-4.458 9.958-9.958Zm-9.958 0",[920,1365,1367],{"transform":1366},"translate(52.28 37.043)",[925,1368],{"d":1369,"fill":922,"stroke":922,"className":1370,"style":937},"M33.820-51.032L30.788-51.032L30.788-51.348Q31.939-51.348 31.939-51.643L31.939-56.367Q31.451-56.134 30.730-56.134L30.730-56.450Q31.860-56.450 32.422-57.026L32.567-57.026Q32.602-57.026 32.635-56.993Q32.668-56.960 32.668-56.925L32.668-51.643Q32.668-51.348 33.820-51.348L33.820-51.032M36.843-50.834Q35.718-50.834 35.305-51.731Q34.892-52.627 34.892-53.902Q34.892-54.675 35.041-55.374Q35.191-56.073 35.626-56.549Q36.061-57.026 36.843-57.026Q37.621-57.026 38.056-56.547Q38.491-56.068 38.641-55.372Q38.790-54.675 38.790-53.902Q38.790-52.623 38.377-51.729Q37.964-50.834 36.843-50.834M36.843-51.094Q37.362-51.094 37.612-51.605Q37.863-52.117 37.920-52.728Q37.977-53.339 37.977-54.047Q37.977-54.732 37.920-55.292Q37.863-55.853 37.610-56.310Q37.357-56.767 36.843-56.767Q36.439-56.767 36.202-56.490Q35.964-56.213 35.857-55.772Q35.749-55.330 35.725-54.937Q35.701-54.543 35.701-54.047Q35.701-53.541 35.725-53.113Q35.749-52.684 35.857-52.201Q35.964-51.718 36.204-51.406Q36.443-51.094 36.843-51.094",[936],[925,1372],{"fill":927,"d":1373},"M-45.486 17.254c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[920,1375,1377],{"transform":1376},"translate(-87.67 71.186)",[925,1378],{"d":1379,"fill":922,"stroke":922,"className":1380,"style":937},"M30.300-52.399Q30.300-52.957 30.660-53.370Q31.020-53.783 31.596-54.055L31.227-54.288Q30.924-54.490 30.737-54.820Q30.550-55.150 30.550-55.506Q30.550-56.160 31.056-56.593Q31.561-57.026 32.225-57.026Q32.624-57.026 33.009-56.866Q33.393-56.705 33.642-56.400Q33.890-56.094 33.890-55.677Q33.890-54.846 32.822-54.288L33.376-53.941Q33.723-53.713 33.934-53.344Q34.145-52.974 34.145-52.561Q34.145-52.183 33.987-51.865Q33.829-51.546 33.552-51.313Q33.275-51.080 32.932-50.957Q32.589-50.834 32.225-50.834Q31.759-50.834 31.313-51.021Q30.867-51.208 30.583-51.562Q30.300-51.915 30.300-52.399M30.823-52.399Q30.823-51.854 31.242-51.487Q31.662-51.120 32.225-51.120Q32.554-51.120 32.879-51.252Q33.205-51.384 33.413-51.638Q33.622-51.893 33.622-52.236Q33.622-52.500 33.486-52.724Q33.350-52.948 33.117-53.102L31.873-53.884Q31.412-53.647 31.117-53.260Q30.823-52.873 30.823-52.399M31.434-55.154L32.550-54.451Q32.774-54.574 32.978-54.763Q33.183-54.952 33.303-55.185Q33.424-55.418 33.424-55.677Q33.424-55.985 33.253-56.235Q33.081-56.486 32.805-56.626Q32.528-56.767 32.216-56.767Q31.767-56.767 31.394-56.521Q31.020-56.275 31.020-55.848Q31.020-55.444 31.434-55.154",[936],[925,1382],{"fill":927,"d":1383},"M11.419 17.254c0-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",[920,1385,1387],{"transform":1386},"translate(-30.765 71.186)",[925,1388],{"d":1389,"fill":922,"stroke":922,"className":1390,"style":937},"M31.535-51.274Q31.535-51.911 31.691-52.557Q31.847-53.203 32.139-53.809Q32.431-54.416 32.840-54.965L33.657-56.073L32.629-56.073Q30.985-56.073 30.937-56.029Q30.831-55.901 30.713-55.198L30.427-55.198L30.722-57.114L31.012-57.114L31.012-57.088Q31.012-56.925 31.576-56.877Q32.141-56.828 32.686-56.828L34.404-56.828L34.404-56.622Q34.404-56.604 34.402-56.595Q34.400-56.587 34.395-56.578L33.108-54.829Q32.857-54.477 32.710-54.051Q32.563-53.625 32.497-53.161Q32.431-52.698 32.418-52.287Q32.405-51.876 32.405-51.274Q32.405-51.094 32.279-50.964Q32.154-50.834 31.974-50.834Q31.855-50.834 31.752-50.891Q31.649-50.949 31.592-51.052Q31.535-51.155 31.535-51.274",[936],[925,1392],{"fill":927,"d":1393},"M68.325 17.254c0-5.5-4.459-9.958-9.959-9.958s-9.958 4.458-9.958 9.958 4.458 9.958 9.958 9.958 9.959-4.458 9.959-9.958Zm-9.959 0",[920,1395,1397],{"transform":1396},"translate(26.14 71.186)",[925,1398],{"d":1399,"fill":922,"stroke":922,"className":1400,"style":937},"M30.976-51.419Q31.223-51.120 31.829-51.120Q32.110-51.120 32.350-51.258Q32.589-51.397 32.767-51.619Q32.945-51.841 33.055-52.104Q33.288-52.680 33.288-53.796Q33.121-53.431 32.816-53.207Q32.510-52.983 32.128-52.983Q31.592-52.983 31.176-53.262Q30.761-53.541 30.530-54.007Q30.300-54.473 30.300-55Q30.300-55.413 30.447-55.782Q30.594-56.152 30.858-56.428Q31.121-56.705 31.491-56.866Q31.860-57.026 32.273-57.026Q32.831-57.026 33.205-56.734Q33.578-56.442 33.782-55.978Q33.987-55.514 34.066-54.998Q34.145-54.482 34.145-53.950Q34.145-53.234 33.877-52.511Q33.609-51.788 33.086-51.311Q32.563-50.834 31.838-50.834Q31.288-50.834 30.911-51.083Q30.533-51.331 30.533-51.849Q30.533-51.968 30.590-52.071Q30.647-52.175 30.748-52.234Q30.849-52.293 30.976-52.293Q31.161-52.293 31.284-52.161Q31.407-52.030 31.407-51.849Q31.407-51.674 31.280-51.546Q31.152-51.419 30.976-51.419M32.172-53.247Q32.541-53.247 32.789-53.489Q33.038-53.730 33.154-54.088Q33.270-54.447 33.270-54.820Q33.270-54.930 33.262-54.983Q33.266-54.996 33.268-55.007Q33.270-55.018 33.270-55.035Q33.270-55.690 33.055-56.229Q32.840-56.767 32.273-56.767Q31.913-56.767 31.684-56.617Q31.455-56.468 31.339-56.211Q31.223-55.954 31.190-55.673Q31.157-55.391 31.157-55.018L31.157-54.983Q31.157-54.657 31.183-54.370Q31.209-54.082 31.308-53.823Q31.407-53.563 31.618-53.405Q31.829-53.247 32.172-53.247",[936],[925,1402],{"fill":927,"d":1403},"M125.23 17.254c0-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",[920,1405,1407],{"transform":1406},"translate(83.046 71.186)",[925,1408],{"d":1409,"fill":922,"stroke":922,"className":1410,"style":937},"M30.814-51.753L30.770-51.753Q30.972-51.436 31.359-51.278Q31.746-51.120 32.172-51.120Q32.708-51.120 32.947-51.555Q33.187-51.990 33.187-52.570Q33.187-53.150 32.941-53.590Q32.695-54.029 32.163-54.029L31.543-54.029Q31.517-54.029 31.484-54.058Q31.451-54.086 31.451-54.108L31.451-54.209Q31.451-54.240 31.480-54.264Q31.508-54.288 31.543-54.288L32.062-54.328Q32.528-54.328 32.774-54.800Q33.020-55.273 33.020-55.791Q33.020-56.218 32.807-56.492Q32.594-56.767 32.172-56.767Q31.829-56.767 31.504-56.637Q31.179-56.508 30.994-56.253L31.020-56.253Q31.223-56.253 31.359-56.112Q31.495-55.971 31.495-55.774Q31.495-55.576 31.361-55.442Q31.227-55.308 31.029-55.308Q30.827-55.308 30.689-55.442Q30.550-55.576 30.550-55.774Q30.550-56.363 31.053-56.694Q31.557-57.026 32.172-57.026Q32.550-57.026 32.952-56.886Q33.354-56.745 33.622-56.466Q33.890-56.187 33.890-55.791Q33.890-55.242 33.536-54.805Q33.183-54.367 32.642-54.183Q33.033-54.104 33.378-53.880Q33.723-53.656 33.934-53.315Q34.145-52.974 34.145-52.579Q34.145-52.197 33.982-51.874Q33.820-51.551 33.528-51.315Q33.235-51.080 32.888-50.957Q32.541-50.834 32.172-50.834Q31.724-50.834 31.293-50.995Q30.862-51.155 30.581-51.482Q30.300-51.810 30.300-52.267Q30.300-52.482 30.447-52.625Q30.594-52.768 30.814-52.768Q31.025-52.768 31.170-52.623Q31.315-52.478 31.315-52.267Q31.315-52.056 31.168-51.904Q31.020-51.753 30.814-51.753",[936],[925,1412],{"fill":927,"d":1413},"m21.203-45.806-39.485 23.69M38.624-45.806l39.484 23.69M-33.495-9.086-48.942 9.45M-20.49-9.086-5.041 9.45M80.316-9.086 64.869 9.45M93.322-9.086 108.769 9.45",[920,1415,1417],{"transform":1416},"translate(-1.993 -13.394)",[925,1418],{"d":1419,"fill":1420,"stroke":1420,"className":1421,"style":1422},"M33.239-51.032L30.709-51.032L30.709-51.312Q31.677-51.312 31.677-51.521L31.677-55.140Q31.284-54.952 30.662-54.952L30.662-55.233Q31.079-55.233 31.443-55.334Q31.807-55.434 32.063-55.680L32.189-55.680Q32.254-55.663 32.271-55.595L32.271-51.521Q32.271-51.312 33.239-51.312","var(--tk-accent)",[936],"stroke-width:0.210",[920,1424,1426],{"transform":1425},"translate(-58.899 20.75)",[925,1427],{"d":1428,"fill":1420,"stroke":1420,"className":1429,"style":1422},"M33.239-51.032L30.354-51.032L30.354-51.234Q30.354-51.264 30.381-51.292L31.629-52.509Q31.701-52.584 31.743-52.626Q31.786-52.669 31.865-52.748Q32.278-53.161 32.509-53.519Q32.740-53.876 32.740-54.300Q32.740-54.532 32.661-54.735Q32.582-54.939 32.441-55.089Q32.299-55.240 32.104-55.320Q31.909-55.400 31.677-55.400Q31.366-55.400 31.108-55.241Q30.850-55.082 30.720-54.805L30.740-54.805Q30.908-54.805 31.015-54.694Q31.123-54.583 31.123-54.419Q31.123-54.262 31.014-54.149Q30.904-54.036 30.740-54.036Q30.580-54.036 30.467-54.149Q30.354-54.262 30.354-54.419Q30.354-54.795 30.562-55.082Q30.771-55.369 31.106-55.525Q31.441-55.680 31.796-55.680Q32.220-55.680 32.600-55.522Q32.979-55.363 33.213-55.046Q33.447-54.730 33.447-54.300Q33.447-53.989 33.307-53.720Q33.167-53.452 32.962-53.247Q32.757-53.042 32.394-52.760Q32.032-52.478 31.923-52.382L31.068-51.654L31.711-51.654Q31.974-51.654 32.263-51.656Q32.552-51.657 32.770-51.666Q32.989-51.675 33.006-51.692Q33.068-51.757 33.105-51.924Q33.143-52.092 33.181-52.334L33.447-52.334",[936],[920,1431,1433],{"transform":1432},"translate(54.912 20.75)",[925,1434],{"d":1435,"fill":1420,"stroke":1420,"className":1436,"style":1422},"M30.709-51.579Q30.829-51.422 31.020-51.323Q31.212-51.223 31.427-51.184Q31.642-51.145 31.865-51.145Q32.162-51.145 32.357-51.300Q32.552-51.456 32.642-51.710Q32.733-51.965 32.733-52.249Q32.733-52.543 32.641-52.794Q32.548-53.045 32.350-53.201Q32.152-53.356 31.858-53.356L31.342-53.356Q31.314-53.356 31.289-53.382Q31.263-53.407 31.263-53.431L31.263-53.503Q31.263-53.534 31.289-53.556Q31.314-53.578 31.342-53.578L31.783-53.609Q32.145-53.609 32.365-53.966Q32.586-54.324 32.586-54.713Q32.586-55.041 32.391-55.245Q32.196-55.448 31.865-55.448Q31.578-55.448 31.325-55.364Q31.072-55.281 30.908-55.093Q31.055-55.093 31.155-54.978Q31.256-54.864 31.256-54.713Q31.256-54.563 31.150-54.453Q31.044-54.344 30.887-54.344Q30.726-54.344 30.617-54.453Q30.508-54.563 30.508-54.713Q30.508-55.038 30.716-55.257Q30.925-55.475 31.241-55.578Q31.557-55.680 31.865-55.680Q32.183-55.680 32.511-55.576Q32.839-55.472 33.066-55.250Q33.293-55.028 33.293-54.713Q33.293-54.279 33.006-53.954Q32.719-53.630 32.285-53.483Q32.596-53.418 32.876-53.252Q33.157-53.086 33.334-52.828Q33.512-52.570 33.512-52.249Q33.512-51.839 33.268-51.529Q33.023-51.220 32.642-51.056Q32.261-50.892 31.865-50.892Q31.496-50.892 31.138-51.005Q30.781-51.117 30.537-51.367Q30.292-51.616 30.292-51.986Q30.292-52.157 30.409-52.269Q30.525-52.382 30.696-52.382Q30.805-52.382 30.896-52.331Q30.986-52.280 31.041-52.187Q31.096-52.095 31.096-51.986Q31.096-51.818 30.983-51.699Q30.870-51.579 30.709-51.579",[936],[920,1438,1440],{"transform":1439},"translate(-87.351 54.893)",[925,1441],{"d":1442,"fill":1420,"stroke":1420,"className":1443,"style":1422},"M32.230-52.180L30.186-52.180L30.186-52.461L32.517-55.633Q32.552-55.680 32.617-55.680L32.753-55.680Q32.798-55.680 32.825-55.653Q32.852-55.626 32.852-55.581L32.852-52.461L33.615-52.461L33.615-52.180L32.852-52.180L32.852-51.521Q32.852-51.312 33.608-51.312L33.608-51.032L31.475-51.032L31.475-51.312Q32.230-51.312 32.230-51.521L32.230-52.180M32.278-54.905L30.487-52.461L32.278-52.461",[936],[920,1445,1447],{"transform":1446},"translate(-30.446 54.893)",[925,1448],{"d":1449,"fill":1420,"stroke":1420,"className":1450,"style":1422},"M30.720-51.794L30.689-51.794Q30.826-51.497 31.123-51.321Q31.420-51.145 31.748-51.145Q32.111-51.145 32.338-51.323Q32.565-51.500 32.659-51.789Q32.753-52.078 32.753-52.440Q32.753-52.755 32.699-53.040Q32.644-53.325 32.471-53.531Q32.299-53.736 31.984-53.736Q31.711-53.736 31.528-53.669Q31.345-53.602 31.241-53.513Q31.137-53.425 31.041-53.315Q30.945-53.206 30.901-53.196L30.822-53.196Q30.750-53.213 30.733-53.284L30.733-55.602Q30.733-55.636 30.757-55.658Q30.781-55.680 30.815-55.680L30.843-55.680Q31.130-55.564 31.398-55.510Q31.666-55.455 31.943-55.455Q32.220-55.455 32.490-55.510Q32.760-55.564 33.040-55.680L33.064-55.680Q33.099-55.680 33.122-55.657Q33.146-55.633 33.146-55.602L33.146-55.533Q33.146-55.506 33.126-55.486Q32.852-55.171 32.468-54.995Q32.083-54.819 31.670-54.819Q31.331-54.819 31.014-54.905L31.014-53.623Q31.410-53.958 31.984-53.958Q32.388-53.958 32.724-53.748Q33.061-53.537 33.254-53.185Q33.447-52.833 33.447-52.433Q33.447-52.102 33.307-51.816Q33.167-51.531 32.923-51.321Q32.678-51.111 32.376-51.001Q32.073-50.892 31.755-50.892Q31.396-50.892 31.070-51.056Q30.744-51.220 30.549-51.512Q30.354-51.804 30.354-52.167Q30.354-52.317 30.460-52.423Q30.566-52.529 30.720-52.529Q30.873-52.529 30.978-52.425Q31.082-52.321 31.082-52.167Q31.082-52.010 30.978-51.902Q30.873-51.794 30.720-51.794",[936],[920,1452,1454],{"transform":1453},"translate(26.46 54.893)",[925,1455],{"d":1456,"fill":1420,"stroke":1420,"className":1457,"style":1422},"M31.902-50.892Q31.444-50.892 31.126-51.107Q30.809-51.323 30.627-51.675Q30.446-52.027 30.369-52.447Q30.292-52.867 30.292-53.295Q30.292-53.879 30.545-54.435Q30.798-54.990 31.268-55.335Q31.738-55.680 32.336-55.680Q32.746-55.680 33.030-55.482Q33.314-55.284 33.314-54.881Q33.314-54.785 33.268-54.706Q33.222-54.628 33.141-54.583Q33.061-54.539 32.972-54.539Q32.825-54.539 32.724-54.636Q32.623-54.734 32.623-54.881Q32.623-55.011 32.714-55.118Q32.805-55.226 32.938-55.226Q32.750-55.448 32.336-55.448Q32.022-55.448 31.748-55.284Q31.475-55.120 31.308-54.846Q31.120-54.556 31.055-54.190Q30.990-53.824 30.990-53.370Q31.140-53.664 31.405-53.842Q31.670-54.019 31.984-54.019Q32.415-54.019 32.764-53.813Q33.112-53.606 33.312-53.250Q33.512-52.895 33.512-52.468Q33.512-52.023 33.295-51.663Q33.078-51.302 32.705-51.097Q32.333-50.892 31.902-50.892M31.902-51.145Q32.278-51.145 32.482-51.328Q32.685-51.511 32.748-51.794Q32.811-52.078 32.811-52.468Q32.811-52.854 32.757-53.134Q32.702-53.414 32.507-53.606Q32.312-53.797 31.943-53.797Q31.653-53.797 31.441-53.621Q31.229-53.445 31.121-53.172Q31.014-52.898 31.014-52.615L31.014-52.474L31.014-52.433Q31.014-51.928 31.226-51.536Q31.437-51.145 31.902-51.145",[936],[920,1459,1461],{"transform":1460},"translate(83.365 54.893)",[925,1462],{"d":1463,"fill":1420,"stroke":1420,"className":1464,"style":1422},"M31.349-51.240Q31.349-51.746 31.478-52.254Q31.608-52.761 31.846-53.223Q32.083-53.684 32.418-54.105L33.064-54.918L32.251-54.918Q31.666-54.918 31.270-54.910Q30.873-54.901 30.850-54.881Q30.747-54.764 30.668-54.238L30.402-54.238L30.648-55.762L30.914-55.762L30.914-55.742Q30.914-55.674 30.990-55.631Q31.065-55.588 31.143-55.581Q31.335-55.557 31.530-55.551Q31.725-55.544 31.916-55.542Q32.107-55.540 32.306-55.540L33.727-55.540L33.727-55.352Q33.717-55.304 33.707-55.294L32.651-53.971Q32.432-53.698 32.309-53.385Q32.186-53.073 32.128-52.724Q32.070-52.375 32.056-52.044Q32.042-51.712 32.042-51.240Q32.042-51.090 31.943-50.991Q31.844-50.892 31.697-50.892Q31.547-50.892 31.448-50.991Q31.349-51.090 31.349-51.240",[936],[925,1466],{"fill":927,"d":1467},"M31.336 72.737h19.917V52.82H31.336Z",[920,1469,1471],{"transform":1470},"translate(6.756 116.711)",[925,1472],{"d":1349,"fill":922,"stroke":922,"className":1473,"style":937},[936],[925,1475],{"fill":927,"d":1476},"M54.099 72.737h19.916V52.82H54.1Z",[920,1478,1480],{"transform":1479},"translate(29.519 116.711)",[925,1481],{"d":1359,"fill":922,"stroke":922,"className":1482,"style":937},[936],[925,1484],{"fill":927,"d":1485},"M76.86 72.737h19.918V52.82H76.86Z",[920,1487,1489],{"transform":1488},"translate(52.28 116.711)",[925,1490],{"d":1369,"fill":922,"stroke":922,"className":1491,"style":937},[936],[925,1493],{"fill":927,"d":1494},"M99.623 72.737h19.917V52.82H99.623Z",[920,1496,1498],{"transform":1497},"translate(77.356 116.711)",[925,1499],{"d":1379,"fill":922,"stroke":922,"className":1500,"style":937},[936],[925,1502],{"fill":927,"d":1503},"M122.385 72.737h19.917V52.82h-19.917Z",[920,1505,1507],{"transform":1506},"translate(100.118 116.711)",[925,1508],{"d":1389,"fill":922,"stroke":922,"className":1509,"style":937},[936],[925,1511],{"fill":927,"d":1512},"M145.148 72.737h19.917V52.82h-19.917Z",[920,1514,1516],{"transform":1515},"translate(122.88 116.711)",[925,1517],{"d":1399,"fill":922,"stroke":922,"className":1518,"style":937},[936],[925,1520],{"fill":927,"d":1521},"M167.91 72.737h19.917V52.82H167.91Z",[920,1523,1525],{"transform":1524},"translate(145.643 116.711)",[925,1526],{"d":1409,"fill":922,"stroke":922,"className":1527,"style":937},[936],[920,1529,1531],{"transform":1530},"translate(9.388 131.716)",[925,1532],{"d":1419,"fill":1420,"stroke":1420,"className":1533,"style":1422},[936],[920,1535,1537],{"transform":1536},"translate(32.15 131.716)",[925,1538],{"d":1428,"fill":1420,"stroke":1420,"className":1539,"style":1422},[936],[920,1541,1543],{"transform":1542},"translate(54.913 131.716)",[925,1544],{"d":1435,"fill":1420,"stroke":1420,"className":1545,"style":1422},[936],[920,1547,1549],{"transform":1548},"translate(77.675 131.716)",[925,1550],{"d":1442,"fill":1420,"stroke":1420,"className":1551,"style":1422},[936],[920,1553,1555],{"transform":1554},"translate(100.437 131.716)",[925,1556],{"d":1449,"fill":1420,"stroke":1420,"className":1557,"style":1422},[936],[920,1559,1561],{"transform":1560},"translate(123.2 131.716)",[925,1562],{"d":1456,"fill":1420,"stroke":1420,"className":1563,"style":1422},[936],[920,1565,1567],{"transform":1566},"translate(145.962 131.716)",[925,1568],{"d":1463,"fill":1420,"stroke":1420,"className":1569,"style":1422},[936],[920,1571,1573],{"transform":1572},"translate(-12.745 116.544)",[925,1574],{"d":1575,"fill":922,"stroke":922,"className":1576,"style":1577},"M31.882-51.032L30.319-51.032Q30.280-51.032 30.253-51.073Q30.226-51.114 30.226-51.161L30.249-51.262Q30.292-51.321 30.347-51.329Q30.671-51.329 30.913-51.473Q31.058-51.559 31.175-51.712Q31.292-51.864 31.339-51.903L34.288-56.634Q34.354-56.743 34.479-56.743L34.561-56.743Q34.675-56.743 34.698-56.634L35.339-51.489Q35.393-51.329 35.936-51.329Q36.034-51.298 36.034-51.208L36.011-51.102Q35.975-51.044 35.913-51.032L33.913-51.032Q33.878-51.032 33.847-51.073Q33.815-51.114 33.815-51.161L33.843-51.262Q33.874-51.317 33.936-51.329Q34.530-51.329 34.561-51.536L34.401-52.841L32.241-52.841L31.585-51.802Q31.577-51.755 31.546-51.682Q31.515-51.610 31.515-51.567Q31.515-51.434 31.634-51.382Q31.753-51.329 31.897-51.329Q31.991-51.298 31.991-51.208L31.968-51.102Q31.936-51.044 31.882-51.032M34.042-55.719L32.425-53.137L34.362-53.137",[936],"stroke-width:0.240",[1032,1579,1581,1582,1597,1598,1613,1614,1632,1633,1669],{"className":1580},[1035],"The same heap as tree and array: node ",[392,1583,1585],{"className":1584},[395],[392,1586,1588],{"className":1587,"ariaHidden":400},[399],[392,1589,1591,1594],{"className":1590},[404],[392,1592],{"className":1593,"style":1227},[408],[392,1595,739],{"className":1596},[413,423]," sits at array slot ",[392,1599,1601],{"className":1600},[395],[392,1602,1604],{"className":1603,"ariaHidden":400},[399],[392,1605,1607,1610],{"className":1606},[404],[392,1608],{"className":1609,"style":1227},[408],[392,1611,739],{"className":1612},[413,423],", with children at ",[392,1615,1617],{"className":1616},[395],[392,1618,1620],{"className":1619,"ariaHidden":400},[399],[392,1621,1623,1626,1629],{"className":1622},[404],[392,1624],{"className":1625,"style":1227},[408],[392,1627,830],{"className":1628},[413],[392,1630,739],{"className":1631},[413,423]," and ",[392,1634,1636],{"className":1635},[395],[392,1637,1639,1660],{"className":1638,"ariaHidden":400},[399],[392,1640,1642,1645,1648,1651,1654,1657],{"className":1641},[404],[392,1643],{"className":1644,"style":874},[408],[392,1646,830],{"className":1647},[413],[392,1649,739],{"className":1650},[413,423],[392,1652],{"className":1653,"style":884},[428],[392,1655,889],{"className":1656},[888],[392,1658],{"className":1659,"style":884},[428],[392,1661,1663,1666],{"className":1662},[404],[392,1664],{"className":1665,"style":705},[408],[392,1667,575],{"className":1668},[413],". Doubling an index steps down a level; halving steps up.",[381,1671,1672,1673,1715,1716,1758,1759,1802,1803,1845,1846,1870,1871,1886,1887,2009],{},"Check the index rule on ",[392,1674,1676],{"className":1675},[395],[392,1677,1679,1706],{"className":1678,"ariaHidden":400},[399],[392,1680,1682,1685,1688,1691,1694,1697,1700,1703],{"className":1681},[404],[392,1683],{"className":1684,"style":409},[408],[392,1686,651],{"className":1687},[413,423],[392,1689,655],{"className":1690},[418],[392,1692,830],{"className":1693},[413],[392,1695,666],{"className":1696},[449],[392,1698],{"className":1699,"style":746},[428],[392,1701,750],{"className":1702},[602],[392,1704],{"className":1705,"style":746},[428],[392,1707,1709,1712],{"className":1708},[404],[392,1710],{"className":1711,"style":705},[408],[392,1713,1098],{"className":1714},[413],": its children are at ",[392,1717,1719],{"className":1718},[395],[392,1720,1722,1749],{"className":1721,"ariaHidden":400},[399],[392,1723,1725,1728,1731,1734,1737,1740,1743,1746],{"className":1724},[404],[392,1726],{"className":1727,"style":409},[408],[392,1729,651],{"className":1730},[413,423],[392,1732,655],{"className":1733},[418],[392,1735,1188],{"className":1736},[413],[392,1738,666],{"className":1739},[449],[392,1741],{"className":1742,"style":746},[428],[392,1744,750],{"className":1745},[602],[392,1747],{"className":1748,"style":746},[428],[392,1750,1752,1755],{"className":1751},[404],[392,1753],{"className":1754,"style":705},[408],[392,1756,1124],{"className":1757},[413]," and\n",[392,1760,1762],{"className":1761},[395],[392,1763,1765,1793],{"className":1764,"ariaHidden":400},[399],[392,1766,1768,1771,1774,1777,1781,1784,1787,1790],{"className":1767},[404],[392,1769],{"className":1770,"style":409},[408],[392,1772,651],{"className":1773},[413,423],[392,1775,655],{"className":1776},[418],[392,1778,1780],{"className":1779},[413],"5",[392,1782,666],{"className":1783},[449],[392,1785],{"className":1786,"style":746},[428],[392,1788,750],{"className":1789},[602],[392,1791],{"className":1792,"style":746},[428],[392,1794,1796,1799],{"className":1795},[404],[392,1797],{"className":1798,"style":705},[408],[392,1800,1137],{"className":1801},[413],", both smaller, and its parent is at ",[392,1804,1806],{"className":1805},[395],[392,1807,1809,1836],{"className":1808,"ariaHidden":400},[399],[392,1810,1812,1815,1818,1821,1824,1827,1830,1833],{"className":1811},[404],[392,1813],{"className":1814,"style":409},[408],[392,1816,651],{"className":1817},[413,423],[392,1819,655],{"className":1820},[418],[392,1822,575],{"className":1823},[413],[392,1825,666],{"className":1826},[449],[392,1828],{"className":1829,"style":746},[428],[392,1831,750],{"className":1832},[602],[392,1834],{"className":1835,"style":746},[428],[392,1837,1839,1842],{"className":1838},[404],[392,1840],{"className":1841,"style":705},[408],[392,1843,1084],{"className":1844},[413],", larger. The largest\nkey always sits at the root, ",[392,1847,1849],{"className":1848},[395],[392,1850,1852],{"className":1851,"ariaHidden":400},[399],[392,1853,1855,1858,1861,1864,1867],{"className":1854},[404],[392,1856],{"className":1857,"style":409},[408],[392,1859,651],{"className":1860},[413,423],[392,1862,655],{"className":1863},[418],[392,1865,575],{"className":1866},[413],[392,1868,666],{"className":1869},[449],". A heap on ",[392,1872,1874],{"className":1873},[395],[392,1875,1877],{"className":1876,"ariaHidden":400},[399],[392,1878,1880,1883],{"className":1879},[404],[392,1881],{"className":1882,"style":624},[408],[392,1884,424],{"className":1885},[413,423]," nodes is complete, so its\nheight, the number of edges on the longest root-to-leaf path, is\n",[392,1888,1890],{"className":1889},[395],[392,1891,1893,1982],{"className":1892,"ariaHidden":400},[399],[392,1894,1896,1899,1973,1976,1979],{"className":1895},[404],[392,1897],{"className":1898,"style":409},[408],[392,1900,1902,1905,1964,1967,1970],{"className":1901},[763],[392,1903,769],{"className":1904,"style":768},[418,767],[392,1906,1908,1914],{"className":1907},[433],[392,1909,1911],{"className":1910},[433],[392,1912,439],{"className":1913,"style":438},[413,437],[392,1915,1918],{"className":1916},[1917],"msupsub",[392,1919,1923,1955],{"className":1920},[1921,1922],"vlist-t","vlist-t2",[392,1924,1927,1950],{"className":1925},[1926],"vlist-r",[392,1928,1932],{"className":1929,"style":1931},[1930],"vlist","height:0.207em;",[392,1933,1935,1940],{"style":1934},"top:-2.4559em;margin-right:0.05em;",[392,1936],{"className":1937,"style":1939},[1938],"pstrut","height:2.7em;",[392,1941,1947],{"className":1942},[1943,1944,1945,1946],"sizing","reset-size6","size3","mtight",[392,1948,830],{"className":1949},[413,1946],[392,1951,1954],{"className":1952},[1953],"vlist-s","​",[392,1956,1958],{"className":1957},[1926],[392,1959,1962],{"className":1960,"style":1961},[1930],"height:0.2441em;",[392,1963],{},[392,1965],{"className":1966,"style":429},[428],[392,1968,424],{"className":1969},[413,423],[392,1971,780],{"className":1972,"style":768},[449,767],[392,1974],{"className":1975,"style":746},[428],[392,1977,750],{"className":1978},[602],[392,1980],{"className":1981,"style":746},[428],[392,1983,1985,1988,1991,1994,2000,2003,2006],{"className":1984},[404],[392,1986],{"className":1987,"style":409},[408],[392,1989,414],{"className":1990},[413],[392,1992,419],{"className":1993},[418],[392,1995,1997],{"className":1996},[433],[392,1998,439],{"className":1999,"style":438},[413,437],[392,2001],{"className":2002,"style":429},[428],[392,2004,424],{"className":2005},[413,423],[392,2007,450],{"className":2008},[449],". Every operation below costs at most one such\ntrip up or down the tree.",[381,2011,2012,2013,2016],{},"A heap is ",[545,2014,2015],{},"not"," a sorted array: it is far weaker, ordering only along\nancestor-descendant paths, with no relation between siblings or cousins. That\nweakness is exactly why a heap is cheap to maintain.",[555,2018,2020],{"id":2019},"sift-down-restoring-the-property-at-one-node","Sift-down: restoring the property at one node",[381,2022,2023,2024,2047,2048,2063,2064,2067,2068,2092,2093,2117,2118,1211,2121],{},"The single primitive every heap operation rests on is ",[392,2025,2027],{"className":2026},[395],[392,2028,2030],{"className":2029,"ariaHidden":400},[399],[392,2031,2033,2037],{"className":2032},[404],[392,2034],{"className":2035,"style":2036},[408],"height:0.8889em;vertical-align:-0.1944em;",[392,2038,2040],{"className":2039},[493,494],[392,2041,2043],{"className":2042},[413,498],[392,2044,2046],{"className":2045},[413],"Max-Heapify",". It\nassumes the subtrees rooted at the two children of ",[392,2049,2051],{"className":2050},[395],[392,2052,2054],{"className":2053,"ariaHidden":400},[399],[392,2055,2057,2060],{"className":2056},[404],[392,2058],{"className":2059,"style":1227},[408],[392,2061,739],{"className":2062},[413,423]," are ",[545,2065,2066],{},"already"," max-heaps,\nbut ",[392,2069,2071],{"className":2070},[395],[392,2072,2074],{"className":2073,"ariaHidden":400},[399],[392,2075,2077,2080,2083,2086,2089],{"className":2076},[404],[392,2078],{"className":2079,"style":409},[408],[392,2081,651],{"className":2082},[413,423],[392,2084,655],{"className":2085},[418],[392,2087,739],{"className":2088},[413,423],[392,2090,666],{"className":2091},[449]," itself may be smaller than a child and thus violate the property. It\nrepairs the violation by floating ",[392,2094,2096],{"className":2095},[395],[392,2097,2099],{"className":2098,"ariaHidden":400},[399],[392,2100,2102,2105,2108,2111,2114],{"className":2101},[404],[392,2103],{"className":2104,"style":409},[408],[392,2106,651],{"className":2107},[413,423],[392,2109,655],{"className":2110},[418],[392,2112,739],{"className":2113},[413,423],[392,2115,666],{"className":2116},[449]," down to its rightful level, a motion\nusually called ",[550,2119,2120],{},"sift-down",[567,2122,2123],{},[384,2124,830],{"href":2125,"ariaDescribedBy":2126,"dataFootnoteRef":376,"id":2127},"#user-content-fn-erickson-ds",[573],"user-content-fnref-erickson-ds",[2129,2130,2134],"pre",{"className":2131,"code":2132,"language":2133,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Max-Heapify}(A, i)$ — sift $A[i]$ down to restore the heap property\nnumber: 1\n$\\ell \\gets \\operatorname{left}(i)$\n$r \\gets \\operatorname{right}(i)$\nif $\\ell \\le A.heapsize$ and $A[\\ell] > A[i]$ then\n  $largest \\gets \\ell$\nelse\n  $largest \\gets i$\nif $r \\le A.heapsize$ and $A[r] > A[largest]$ then\n  $largest \\gets r$\nif $largest \\ne i$ then\n  exchange $A[i]$ with $A[largest]$ \u002F\u002F bigger child moves up\n  call $\\textsc{Max-Heapify}(A, largest)$ \u002F\u002F fix the disturbed subtree\n","algorithm",[2135,2136,2137,2143,2148,2153,2158,2163,2168,2173,2178,2183,2188,2193,2198],"code",{"__ignoreMap":376},[392,2138,2140],{"class":2139,"line":6},"line",[392,2141,2142],{},"caption: $\\textsc{Max-Heapify}(A, i)$ — sift $A[i]$ down to restore the heap property\n",[392,2144,2145],{"class":2139,"line":18},[392,2146,2147],{},"number: 1\n",[392,2149,2150],{"class":2139,"line":24},[392,2151,2152],{},"$\\ell \\gets \\operatorname{left}(i)$\n",[392,2154,2155],{"class":2139,"line":73},[392,2156,2157],{},"$r \\gets \\operatorname{right}(i)$\n",[392,2159,2160],{"class":2139,"line":102},[392,2161,2162],{},"if $\\ell \\le A.heapsize$ and $A[\\ell] > A[i]$ then\n",[392,2164,2165],{"class":2139,"line":108},[392,2166,2167],{},"  $largest \\gets \\ell$\n",[392,2169,2170],{"class":2139,"line":116},[392,2171,2172],{},"else\n",[392,2174,2175],{"class":2139,"line":196},[392,2176,2177],{},"  $largest \\gets i$\n",[392,2179,2180],{"class":2139,"line":202},[392,2181,2182],{},"if $r \\le A.heapsize$ and $A[r] > A[largest]$ then\n",[392,2184,2185],{"class":2139,"line":283},[392,2186,2187],{},"  $largest \\gets r$\n",[392,2189,2190],{"class":2139,"line":333},[392,2191,2192],{},"if $largest \\ne i$ then\n",[392,2194,2195],{"class":2139,"line":354},[392,2196,2197],{},"  exchange $A[i]$ with $A[largest]$ \u002F\u002F bigger child moves up\n",[392,2199,2201],{"class":2139,"line":2200},13,[392,2202,2203],{},"  call $\\textsc{Max-Heapify}(A, largest)$ \u002F\u002F fix the disturbed subtree\n",[381,2205,2206,2207,2231,2232,2267,2268,2292,2293,2326,2327,2418],{},"We compare ",[392,2208,2210],{"className":2209},[395],[392,2211,2213],{"className":2212,"ariaHidden":400},[399],[392,2214,2216,2219,2222,2225,2228],{"className":2215},[404],[392,2217],{"className":2218,"style":409},[408],[392,2220,651],{"className":2221},[413,423],[392,2223,655],{"className":2224},[418],[392,2226,739],{"className":2227},[413,423],[392,2229,666],{"className":2230},[449]," against both children, find the largest of the three, and, if\na child wins, swap it up and recurse into the subtree that just received the\nsmaller key. The violation moves strictly down one level each step, so the\nrecursion can run no deeper than the tree is tall: ",[392,2233,2235],{"className":2234},[395],[392,2236,2238],{"className":2237,"ariaHidden":400},[399],[392,2239,2241,2244,2249,2252,2258,2261,2264],{"className":2240},[404],[392,2242],{"className":2243,"style":409},[408],[392,2245,2248],{"className":2246,"style":2247},[413,423],"margin-right:0.0278em;","O",[392,2250,419],{"className":2251},[418],[392,2253,2255],{"className":2254},[433],[392,2256,439],{"className":2257,"style":438},[413,437],[392,2259],{"className":2260,"style":429},[428],[392,2262,424],{"className":2263},[413,423],[392,2265,450],{"className":2266},[449]," time, ",[392,2269,2271],{"className":2270},[395],[392,2272,2274],{"className":2273,"ariaHidden":400},[399],[392,2275,2277,2280,2283,2286,2289],{"className":2276},[404],[392,2278],{"className":2279,"style":409},[408],[392,2281,2248],{"className":2282,"style":2247},[413,423],[392,2284,419],{"className":2285},[418],[392,2287,575],{"className":2288},[413],[392,2290,450],{"className":2291},[449]," extra\nspace (or ",[392,2294,2296],{"className":2295},[395],[392,2297,2299],{"className":2298,"ariaHidden":400},[399],[392,2300,2302,2305,2308,2311,2317,2320,2323],{"className":2301},[404],[392,2303],{"className":2304,"style":409},[408],[392,2306,2248],{"className":2307,"style":2247},[413,423],[392,2309,419],{"className":2310},[418],[392,2312,2314],{"className":2313},[433],[392,2315,439],{"className":2316,"style":438},[413,437],[392,2318],{"className":2319,"style":429},[428],[392,2321,424],{"className":2322},[413,423],[392,2324,450],{"className":2325},[449]," stack, trivially made iterative). We track the logical\nlength of the heap in a field ",[392,2328,2330],{"className":2329},[395],[392,2331,2333,2384],{"className":2332,"ariaHidden":400},[399],[392,2334,2336,2339,2342,2345,2349,2353,2356,2359,2363,2366,2371,2374,2377,2381],{"className":2335},[404],[392,2337],{"className":2338,"style":2036},[408],[392,2340,651],{"className":2341},[413,423],[392,2343,1211],{"className":2344},[413],[392,2346,2348],{"className":2347},[413,423],"h",[392,2350,2352],{"className":2351},[413,423],"e",[392,2354,384],{"className":2355},[413,423],[392,2357,381],{"className":2358},[413,423],[392,2360,2362],{"className":2361},[413,423],"s",[392,2364,739],{"className":2365},[413,423],[392,2367,2370],{"className":2368,"style":2369},[413,423],"margin-right:0.044em;","z",[392,2372,2352],{"className":2373},[413,423],[392,2375],{"className":2376,"style":746},[428],[392,2378,2380],{"className":2379},[602],"≤",[392,2382],{"className":2383,"style":746},[428],[392,2385,2387,2390,2393,2396,2401,2404,2407,2411,2415],{"className":2386},[404],[392,2388],{"className":2389,"style":2036},[408],[392,2391,651],{"className":2392},[413,423],[392,2394,1211],{"className":2395},[413],[392,2397,2400],{"className":2398,"style":2399},[413,423],"margin-right:0.0197em;","l",[392,2402,2352],{"className":2403},[413,423],[392,2405,424],{"className":2406},[413,423],[392,2408,920],{"className":2409,"style":2410},[413,423],"margin-right:0.0359em;",[392,2412,2414],{"className":2413},[413,423],"t",[392,2416,2348],{"className":2417},[413,423],", which lets the array\nhold heap and non-heap regions side by side, an arrangement central to heapsort below.",[907,2420,2422,2578],{"className":2421},[910,911],[913,2423,2427],{"xmlns":915,"width":2424,"height":2425,"viewBox":2426},"259.137","139.416","-75 -75 194.353 104.562",[920,2428,2429,2442,2455,2458,2465,2477,2480,2487,2490,2497,2500,2507,2510,2547],{"stroke":922,"style":923},[920,2430,2432,2435],{"fill":2431},"var(--tk-soft-warn)",[925,2433],{"d":2434},"M41.906-61.4c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2436,2438],{"transform":2437},"translate(-2.312 2.9)",[925,2439],{"d":2440,"fill":922,"stroke":922,"className":2441,"style":937},"M33.934-62.877L31.495-62.877L31.495-63.193L34.321-67.341Q34.365-67.394 34.431-67.394L34.585-67.394Q34.624-67.394 34.657-67.361Q34.690-67.328 34.690-67.284L34.690-63.193L35.591-63.193L35.591-62.877L34.690-62.877L34.690-62.011Q34.690-61.716 35.591-61.716L35.591-61.400L33.038-61.400L33.038-61.716Q33.398-61.716 33.666-61.771Q33.934-61.826 33.934-62.011L33.934-62.877M33.991-66.366L31.829-63.193L33.991-63.193",[936],[920,2443,2445,2448],{"fill":2444},"var(--tk-soft-accent)",[925,2446],{"d":2447},"M-6.464-24.412c0-5.892-4.777-10.67-10.67-10.67s-10.67 4.778-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2449,2451],{"transform":2450},"translate(-52.995 39.889)",[925,2452],{"d":2453,"fill":922,"stroke":922,"className":2454,"style":937},"M35.143-61.400L32.111-61.400L32.111-61.716Q33.262-61.716 33.262-62.011L33.262-66.735Q32.774-66.502 32.053-66.502L32.053-66.818Q33.183-66.818 33.745-67.394L33.890-67.394Q33.925-67.394 33.958-67.361Q33.991-67.328 33.991-67.293L33.991-62.011Q33.991-61.716 35.143-61.716L35.143-61.400M38.553-62.877L36.114-62.877L36.114-63.193L38.940-67.341Q38.984-67.394 39.049-67.394L39.203-67.394Q39.243-67.394 39.276-67.361Q39.309-67.328 39.309-67.284L39.309-63.193L40.210-63.193L40.210-62.877L39.309-62.877L39.309-62.011Q39.309-61.716 40.210-61.716L40.210-61.400L37.656-61.400L37.656-61.716Q38.017-61.716 38.285-61.771Q38.553-61.826 38.553-62.011L38.553-62.877M38.610-66.366L36.448-63.193L38.610-63.193",[936],[925,2456],{"fill":927,"d":2457},"M90.275-24.412c0-5.892-4.777-10.67-10.67-10.67s-10.67 4.778-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2459,2461],{"transform":2460},"translate(43.745 39.889)",[925,2462],{"d":2463,"fill":922,"stroke":922,"className":2464,"style":937},"M35.143-61.400L32.111-61.400L32.111-61.716Q33.262-61.716 33.262-62.011L33.262-66.735Q32.774-66.502 32.053-66.502L32.053-66.818Q33.183-66.818 33.745-67.394L33.890-67.394Q33.925-67.394 33.958-67.361Q33.991-67.328 33.991-67.293L33.991-62.011Q33.991-61.716 35.143-61.716L35.143-61.400M38.166-61.202Q37.041-61.202 36.628-62.099Q36.215-62.995 36.215-64.270Q36.215-65.043 36.364-65.742Q36.514-66.441 36.949-66.917Q37.384-67.394 38.166-67.394Q38.944-67.394 39.379-66.915Q39.814-66.436 39.964-65.740Q40.113-65.043 40.113-64.270Q40.113-62.991 39.700-62.097Q39.287-61.202 38.166-61.202M38.166-61.462Q38.685-61.462 38.935-61.973Q39.186-62.485 39.243-63.096Q39.300-63.707 39.300-64.415Q39.300-65.100 39.243-65.660Q39.186-66.221 38.933-66.678Q38.680-67.135 38.166-67.135Q37.762-67.135 37.525-66.858Q37.287-66.581 37.180-66.140Q37.072-65.698 37.048-65.305Q37.024-64.911 37.024-64.415Q37.024-63.909 37.048-63.481Q37.072-63.052 37.180-62.569Q37.287-62.086 37.527-61.774Q37.766-61.462 38.166-61.462",[936],[920,2466,2467,2470],{"fill":2444},[925,2468],{"d":2469},"M-32.072 15.422c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2471,2473],{"transform":2472},"translate(-76.29 79.722)",[925,2474],{"d":2475,"fill":922,"stroke":922,"className":2476,"style":937},"M31.623-62.767Q31.623-63.325 31.983-63.738Q32.343-64.151 32.919-64.423L32.550-64.656Q32.247-64.858 32.060-65.188Q31.873-65.518 31.873-65.874Q31.873-66.528 32.379-66.961Q32.884-67.394 33.548-67.394Q33.947-67.394 34.332-67.234Q34.716-67.073 34.965-66.768Q35.213-66.463 35.213-66.045Q35.213-65.214 34.145-64.656L34.699-64.309Q35.046-64.081 35.257-63.712Q35.468-63.342 35.468-62.929Q35.468-62.551 35.310-62.233Q35.152-61.914 34.875-61.681Q34.598-61.448 34.255-61.325Q33.912-61.202 33.548-61.202Q33.082-61.202 32.636-61.389Q32.190-61.576 31.906-61.930Q31.623-62.283 31.623-62.767M32.146-62.767Q32.146-62.222 32.565-61.855Q32.985-61.488 33.548-61.488Q33.877-61.488 34.202-61.620Q34.528-61.752 34.736-62.006Q34.945-62.261 34.945-62.604Q34.945-62.868 34.809-63.092Q34.673-63.316 34.440-63.470L33.196-64.252Q32.735-64.015 32.440-63.628Q32.146-63.241 32.146-62.767M32.757-65.522L33.873-64.819Q34.097-64.942 34.301-65.131Q34.506-65.320 34.626-65.553Q34.747-65.786 34.747-66.045Q34.747-66.353 34.576-66.603Q34.404-66.854 34.128-66.994Q33.851-67.135 33.539-67.135Q33.090-67.135 32.717-66.889Q32.343-66.643 32.343-66.216Q32.343-65.812 32.757-65.522",[936],[925,2478],{"fill":927,"d":2479},"M19.143 15.422c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2481,2483],{"transform":2482},"translate(-25.075 79.722)",[925,2484],{"d":2485,"fill":922,"stroke":922,"className":2486,"style":937},"M32.858-61.642Q32.858-62.279 33.014-62.925Q33.170-63.571 33.462-64.177Q33.754-64.784 34.163-65.333L34.980-66.441L33.952-66.441Q32.308-66.441 32.260-66.397Q32.154-66.269 32.036-65.566L31.750-65.566L32.045-67.482L32.335-67.482L32.335-67.456Q32.335-67.293 32.899-67.245Q33.464-67.196 34.009-67.196L35.727-67.196L35.727-66.990Q35.727-66.972 35.725-66.963Q35.723-66.955 35.718-66.946L34.431-65.197Q34.180-64.845 34.033-64.419Q33.886-63.993 33.820-63.529Q33.754-63.066 33.741-62.655Q33.728-62.244 33.728-61.642Q33.728-61.462 33.602-61.332Q33.477-61.202 33.297-61.202Q33.178-61.202 33.075-61.259Q32.972-61.317 32.915-61.420Q32.858-61.523 32.858-61.642",[936],[925,2488],{"fill":927,"d":2489},"M64.668 15.422c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2491,2493],{"transform":2492},"translate(20.45 79.722)",[925,2494],{"d":2495,"fill":922,"stroke":922,"className":2496,"style":937},"M32.299-61.787Q32.546-61.488 33.152-61.488Q33.433-61.488 33.673-61.626Q33.912-61.765 34.090-61.987Q34.268-62.209 34.378-62.472Q34.611-63.048 34.611-64.164Q34.444-63.799 34.139-63.575Q33.833-63.351 33.451-63.351Q32.915-63.351 32.499-63.630Q32.084-63.909 31.853-64.375Q31.623-64.841 31.623-65.368Q31.623-65.781 31.770-66.150Q31.917-66.520 32.181-66.796Q32.444-67.073 32.814-67.234Q33.183-67.394 33.596-67.394Q34.154-67.394 34.528-67.102Q34.901-66.810 35.105-66.346Q35.310-65.882 35.389-65.366Q35.468-64.850 35.468-64.318Q35.468-63.602 35.200-62.879Q34.932-62.156 34.409-61.679Q33.886-61.202 33.161-61.202Q32.611-61.202 32.234-61.451Q31.856-61.699 31.856-62.217Q31.856-62.336 31.913-62.439Q31.970-62.543 32.071-62.602Q32.172-62.661 32.299-62.661Q32.484-62.661 32.607-62.529Q32.730-62.398 32.730-62.217Q32.730-62.042 32.603-61.914Q32.475-61.787 32.299-61.787M33.495-63.615Q33.864-63.615 34.112-63.857Q34.361-64.098 34.477-64.456Q34.593-64.815 34.593-65.188Q34.593-65.298 34.585-65.351Q34.589-65.364 34.591-65.375Q34.593-65.386 34.593-65.403Q34.593-66.058 34.378-66.597Q34.163-67.135 33.596-67.135Q33.236-67.135 33.007-66.985Q32.778-66.836 32.662-66.579Q32.546-66.322 32.513-66.041Q32.480-65.759 32.480-65.386L32.480-65.351Q32.480-65.025 32.506-64.738Q32.532-64.450 32.631-64.191Q32.730-63.931 32.941-63.773Q33.152-63.615 33.495-63.615",[936],[925,2498],{"fill":927,"d":2499},"M115.883 15.422c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,2501,2503],{"transform":2502},"translate(71.665 79.722)",[925,2504],{"d":2505,"fill":922,"stroke":922,"className":2506,"style":937},"M32.137-62.121L32.093-62.121Q32.295-61.804 32.682-61.646Q33.069-61.488 33.495-61.488Q34.031-61.488 34.270-61.923Q34.510-62.358 34.510-62.938Q34.510-63.518 34.264-63.958Q34.018-64.397 33.486-64.397L32.866-64.397Q32.840-64.397 32.807-64.426Q32.774-64.454 32.774-64.476L32.774-64.577Q32.774-64.608 32.803-64.632Q32.831-64.656 32.866-64.656L33.385-64.696Q33.851-64.696 34.097-65.168Q34.343-65.641 34.343-66.159Q34.343-66.586 34.130-66.860Q33.917-67.135 33.495-67.135Q33.152-67.135 32.827-67.005Q32.502-66.876 32.317-66.621L32.343-66.621Q32.546-66.621 32.682-66.480Q32.818-66.339 32.818-66.142Q32.818-65.944 32.684-65.810Q32.550-65.676 32.352-65.676Q32.150-65.676 32.012-65.810Q31.873-65.944 31.873-66.142Q31.873-66.731 32.376-67.062Q32.880-67.394 33.495-67.394Q33.873-67.394 34.275-67.254Q34.677-67.113 34.945-66.834Q35.213-66.555 35.213-66.159Q35.213-65.610 34.859-65.173Q34.506-64.735 33.965-64.551Q34.356-64.472 34.701-64.248Q35.046-64.024 35.257-63.683Q35.468-63.342 35.468-62.947Q35.468-62.565 35.305-62.242Q35.143-61.919 34.851-61.683Q34.558-61.448 34.211-61.325Q33.864-61.202 33.495-61.202Q33.047-61.202 32.616-61.363Q32.185-61.523 31.904-61.850Q31.623-62.178 31.623-62.635Q31.623-62.850 31.770-62.993Q31.917-63.136 32.137-63.136Q32.348-63.136 32.493-62.991Q32.638-62.846 32.638-62.635Q32.638-62.424 32.491-62.272Q32.343-62.121 32.137-62.121",[936],[925,2508],{"fill":927,"d":2509},"M22.602-54.798-8.5-31.014M39.87-54.798l31.102 23.784M-23.011-15.269-36.864 6.28M-11.256-15.269 2.596 6.28M73.728-15.269 59.876 6.28M85.483-15.269 99.336 6.28",[920,2511,2514,2517,2521,2525],{"fill":2512,"stroke":2512,"style":2513},"red","stroke-width:.8",[925,2515],{"fill":927,"d":2516},"M20.23-57.523C6.182-52.575-2.052-46.278-10.508-34.018",[925,2518],{"fill":927,"d":2519,"style":2520},"M17.155-59.75c1.064 1.611 2.34 2.1 3.452 2.094-.87.692-1.558 1.873-1.377 3.795","stroke-linecap:round;stroke-linejoin:round;stroke-width:.79996",[925,2522],{"fill":927,"d":2523,"style":2524},"M-6.712-34.023c-1.807-.678-3.127-.323-4.023.335.296-1.071.16-2.432-1.117-3.88","stroke-linecap:round;stroke-linejoin:round;stroke-width:.7999520000000001",[920,2526,2528,2535,2541],{"fill":2512,"stroke":927,"fontFamily":2527,"fontSize":1137},"cmr7",[920,2529,2531],{"transform":2530},"translate(-55.912 14.512)",[925,2532],{"d":2533,"fill":2512,"stroke":2512,"className":2534,"style":1422},"M31.550-61.407L31.550-62.470Q31.550-62.494 31.578-62.521Q31.605-62.548 31.629-62.548L31.738-62.548Q31.803-62.548 31.817-62.490Q31.913-62.056 32.159-61.805Q32.405-61.554 32.819-61.554Q33.160-61.554 33.413-61.687Q33.666-61.820 33.666-62.128Q33.666-62.285 33.572-62.400Q33.478-62.514 33.340-62.583Q33.201-62.651 33.034-62.689L32.453-62.788Q32.097-62.856 31.824-63.077Q31.550-63.297 31.550-63.639Q31.550-63.888 31.662-64.063Q31.773-64.237 31.959-64.336Q32.145-64.435 32.361-64.478Q32.576-64.521 32.819-64.521Q33.232-64.521 33.512-64.339L33.728-64.514Q33.738-64.517 33.745-64.519Q33.752-64.521 33.762-64.521L33.813-64.521Q33.840-64.521 33.864-64.497Q33.888-64.473 33.888-64.445L33.888-63.598Q33.888-63.577 33.864-63.550Q33.840-63.523 33.813-63.523L33.700-63.523Q33.673-63.523 33.647-63.548Q33.622-63.574 33.622-63.598Q33.622-63.834 33.516-63.998Q33.410-64.162 33.227-64.244Q33.044-64.326 32.812-64.326Q32.484-64.326 32.227-64.223Q31.971-64.121 31.971-63.844Q31.971-63.649 32.154-63.540Q32.337-63.430 32.566-63.389L33.140-63.283Q33.386-63.235 33.600-63.107Q33.813-62.979 33.950-62.776Q34.087-62.572 34.087-62.323Q34.087-61.810 33.721-61.571Q33.355-61.332 32.819-61.332Q32.323-61.332 31.991-61.626L31.725-61.352Q31.704-61.332 31.677-61.332L31.629-61.332Q31.605-61.332 31.578-61.359Q31.550-61.386 31.550-61.407M36.103-61.427L35.122-63.926Q35.061-64.069 34.943-64.104Q34.825-64.138 34.610-64.138L34.610-64.418L36.090-64.418L36.090-64.138Q35.710-64.138 35.710-63.977Q35.710-63.967 35.724-63.926L36.438-62.094L37.111-63.799Q37.081-63.871 37.081-63.899Q37.081-63.926 37.053-63.926Q36.992-64.073 36.874-64.105Q36.756-64.138 36.544-64.138L36.544-64.418L37.942-64.418L37.942-64.138Q37.566-64.138 37.566-63.977Q37.566-63.946 37.573-63.926L38.328-61.988L39.015-63.738Q39.036-63.789 39.036-63.844Q39.036-63.984 38.923-64.061Q38.810-64.138 38.670-64.138L38.670-64.418L39.890-64.418L39.890-64.138Q39.685-64.138 39.530-64.032Q39.374-63.926 39.302-63.738L38.397-61.427Q38.362-61.332 38.250-61.332L38.181-61.332Q38.072-61.332 38.034-61.427L37.252-63.430L36.465-61.427Q36.431-61.332 36.319-61.332L36.250-61.332Q36.141-61.332 36.103-61.427",[936],[920,2536,2537],{"transform":2530},[925,2538],{"d":2539,"fill":2512,"stroke":2512,"className":2540,"style":1422},"M40.270-62.128Q40.270-62.460 40.493-62.687Q40.717-62.914 41.061-63.042Q41.404-63.171 41.777-63.223Q42.149-63.276 42.454-63.276L42.454-63.529Q42.454-63.734 42.346-63.914Q42.238-64.093 42.057-64.196Q41.876-64.298 41.668-64.298Q41.261-64.298 41.025-64.206Q41.114-64.169 41.160-64.085Q41.206-64.001 41.206-63.899Q41.206-63.803 41.160-63.724Q41.114-63.646 41.033-63.601Q40.953-63.557 40.864-63.557Q40.714-63.557 40.613-63.654Q40.512-63.752 40.512-63.899Q40.512-64.521 41.668-64.521Q41.879-64.521 42.129-64.457Q42.378-64.394 42.580-64.275Q42.782-64.155 42.908-63.970Q43.035-63.786 43.035-63.543L43.035-61.967Q43.035-61.851 43.096-61.755Q43.158-61.660 43.271-61.660Q43.380-61.660 43.445-61.754Q43.510-61.848 43.510-61.967L43.510-62.415L43.776-62.415L43.776-61.967Q43.776-61.697 43.549-61.532Q43.322-61.366 43.042-61.366Q42.833-61.366 42.696-61.520Q42.560-61.673 42.536-61.889Q42.389-61.622 42.107-61.477Q41.825-61.332 41.500-61.332Q41.223-61.332 40.939-61.407Q40.656-61.482 40.463-61.661Q40.270-61.841 40.270-62.128M40.885-62.128Q40.885-61.954 40.986-61.824Q41.086-61.694 41.242-61.624Q41.397-61.554 41.562-61.554Q41.780-61.554 41.989-61.651Q42.197-61.749 42.325-61.930Q42.454-62.111 42.454-62.337L42.454-63.065Q42.129-63.065 41.763-62.974Q41.397-62.883 41.141-62.671Q40.885-62.460 40.885-62.128M45.837-60.043L44.207-60.043L44.207-60.323Q44.436-60.323 44.585-60.358Q44.733-60.392 44.733-60.532L44.733-63.878Q44.733-64.049 44.597-64.090Q44.460-64.131 44.207-64.131L44.207-64.411L45.287-64.486L45.287-64.080Q45.509-64.281 45.796-64.384Q46.084-64.486 46.391-64.486Q46.818-64.486 47.182-64.273Q47.546-64.059 47.760-63.695Q47.974-63.331 47.974-62.911Q47.974-62.466 47.734-62.102Q47.495-61.738 47.102-61.535Q46.709-61.332 46.265-61.332Q45.998-61.332 45.750-61.432Q45.502-61.533 45.314-61.714L45.314-60.532Q45.314-60.395 45.463-60.359Q45.612-60.323 45.837-60.323L45.837-60.043M45.314-63.731L45.314-62.121Q45.448-61.868 45.690-61.711Q45.933-61.554 46.210-61.554Q46.538-61.554 46.791-61.755Q47.044-61.957 47.177-62.275Q47.311-62.593 47.311-62.911Q47.311-63.140 47.246-63.369Q47.181-63.598 47.053-63.796Q46.924-63.994 46.730-64.114Q46.535-64.233 46.302-64.233Q46.008-64.233 45.740-64.104Q45.472-63.974 45.314-63.731",[936],[920,2542,2543],{"transform":2530},[925,2544],{"d":2545,"fill":2512,"stroke":2512,"className":2546,"style":1422},"M54.320-61.400L51.790-61.400L51.790-61.680Q52.758-61.680 52.758-61.889L52.758-65.508Q52.365-65.320 51.743-65.320L51.743-65.601Q52.160-65.601 52.524-65.702Q52.888-65.802 53.144-66.048L53.270-66.048Q53.335-66.031 53.352-65.963L53.352-61.889Q53.352-61.680 54.320-61.680",[936],[920,2548,2549,2552,2555,2559],{"fill":2512,"stroke":2512,"style":2513},[925,2550],{"fill":927,"d":2551},"M-26.168-17.026c-7.443 6.084-11.16 11.866-13.606 21.163",[925,2553],{"fill":927,"d":2554,"style":2520},"M-29.817-18.077c1.548 1.155 2.915 1.18 3.959.798-.583.946-.83 2.29-.006 4.037",[925,2556],{"fill":927,"d":2557,"style":2558},"M-36.204 2.842c-1.931-.024-3.052.759-3.671 1.681-.085-1.108-.676-2.34-2.369-3.27","stroke-linecap:round;stroke-linejoin:round;stroke-width:.799968",[920,2560,2561,2567,2572],{"fill":2512,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,2562,2564],{"transform":2563},"translate(-93.506 55.36)",[925,2565],{"d":2533,"fill":2512,"stroke":2512,"className":2566,"style":1422},[936],[920,2568,2569],{"transform":2563},[925,2570],{"d":2539,"fill":2512,"stroke":2512,"className":2571,"style":1422},[936],[920,2573,2574],{"transform":2563},[925,2575],{"d":2576,"fill":2512,"stroke":2512,"className":2577,"style":1422},"M54.320-61.400L51.435-61.400L51.435-61.602Q51.435-61.632 51.462-61.660L52.710-62.877Q52.782-62.952 52.824-62.994Q52.867-63.037 52.946-63.116Q53.359-63.529 53.590-63.887Q53.821-64.244 53.821-64.668Q53.821-64.900 53.742-65.103Q53.663-65.307 53.522-65.457Q53.380-65.608 53.185-65.688Q52.990-65.768 52.758-65.768Q52.447-65.768 52.189-65.609Q51.931-65.450 51.801-65.173L51.821-65.173Q51.989-65.173 52.096-65.062Q52.204-64.951 52.204-64.787Q52.204-64.630 52.095-64.517Q51.985-64.404 51.821-64.404Q51.661-64.404 51.548-64.517Q51.435-64.630 51.435-64.787Q51.435-65.163 51.643-65.450Q51.852-65.737 52.187-65.893Q52.522-66.048 52.877-66.048Q53.301-66.048 53.681-65.890Q54.060-65.731 54.294-65.414Q54.528-65.098 54.528-64.668Q54.528-64.357 54.388-64.088Q54.248-63.820 54.043-63.615Q53.838-63.410 53.475-63.128Q53.113-62.846 53.004-62.750L52.149-62.022L52.792-62.022Q53.055-62.022 53.344-62.024Q53.633-62.025 53.851-62.034Q54.070-62.043 54.087-62.060Q54.149-62.125 54.186-62.292Q54.224-62.460 54.262-62.702L54.528-62.702",[936],[1032,2579,2581],{"className":2580},[1035],"Max-Heapify with both subtrees already valid heaps: the small root key sinks along its path, swapping with the larger child at each step.",[577,2583,2585],{"type":2584},"proof",[381,2586,2587,2590,2591,2630,2631,2646,2647,2650,2651,2724,2725,2740,2741,1211],{},[550,2588,2589],{},"Correctness."," When ",[392,2592,2594],{"className":2593},[395],[392,2595,2597],{"className":2596,"ariaHidden":400},[399],[392,2598,2600,2603,2612,2615,2618,2621,2624,2627],{"className":2599},[404],[392,2601],{"className":2602,"style":409},[408],[392,2604,2606],{"className":2605},[493,494],[392,2607,2609],{"className":2608},[413,498],[392,2610,2046],{"className":2611},[413],[392,2613,419],{"className":2614},[418],[392,2616,651],{"className":2617},[413,423],[392,2619,788],{"className":2620},[787],[392,2622],{"className":2623,"style":429},[428],[392,2625,739],{"className":2626},[413,423],[392,2628,450],{"className":2629},[449]," is called with both child\nsubtrees being valid max-heaps, it leaves the subtree rooted at ",[392,2632,2634],{"className":2633},[395],[392,2635,2637],{"className":2636,"ariaHidden":400},[399],[392,2638,2640,2643],{"className":2639},[404],[392,2641],{"className":2642,"style":1227},[408],[392,2644,739],{"className":2645},[413,423]," a valid\nmax-heap. ",[545,2648,2649],{},"Proof sketch:"," the largest of ",[392,2652,2654],{"className":2653},[395],[392,2655,2657],{"className":2656,"ariaHidden":400},[399],[392,2658,2660,2663],{"className":2659},[404],[392,2661],{"className":2662,"style":409},[408],[392,2664,2666,2670,2673,2676,2679,2682,2685,2688,2691,2694,2698,2701,2704,2707,2710,2713,2717,2720],{"className":2665},[763],[392,2667,2669],{"className":2668,"style":768},[418,767],"{",[392,2671,651],{"className":2672},[413,423],[392,2674,655],{"className":2675},[418],[392,2677,739],{"className":2678},[413,423],[392,2680,666],{"className":2681},[449],[392,2683,788],{"className":2684},[787],[392,2686],{"className":2687,"style":429},[428],[392,2689,651],{"className":2690},[413,423],[392,2692,655],{"className":2693},[418],[392,2695,2697],{"className":2696},[413],"ℓ",[392,2699,666],{"className":2700},[449],[392,2702,788],{"className":2703},[787],[392,2705],{"className":2706,"style":429},[428],[392,2708,651],{"className":2709},[413,423],[392,2711,655],{"className":2712},[418],[392,2714,2716],{"className":2715,"style":2247},[413,423],"r",[392,2718,666],{"className":2719},[449],[392,2721,2723],{"className":2722,"style":768},[449,767],"}"," is placed\nat ",[392,2726,2728],{"className":2727},[395],[392,2729,2731],{"className":2730,"ariaHidden":400},[399],[392,2732,2734,2737],{"className":2733},[404],[392,2735],{"className":2736,"style":1227},[408],[392,2738,739],{"className":2739},[413,423],", dominating both children; the only subtree possibly disturbed is the\none the old root sank into, and the recursive call fixes it. The recursion\nterminates because the index strictly increases (we move to a child) and is\nbounded by ",[392,2742,2744],{"className":2743},[395],[392,2745,2747],{"className":2746,"ariaHidden":400},[399],[392,2748,2750,2753],{"className":2749},[404],[392,2751],{"className":2752,"style":624},[408],[392,2754,424],{"className":2755},[413,423],[555,2757,2759],{"id":2758},"building-a-heap-bottom-up","Building a heap bottom-up",[381,2761,2762,2763,2784,2785,2842,2843,2846,2847,2868],{},"To turn an arbitrary array into a heap we call ",[392,2764,2766],{"className":2765},[395],[392,2767,2769],{"className":2768,"ariaHidden":400},[399],[392,2770,2772,2775],{"className":2771},[404],[392,2773],{"className":2774,"style":2036},[408],[392,2776,2778],{"className":2777},[493,494],[392,2779,2781],{"className":2780},[413,498],[392,2782,2046],{"className":2783},[413]," at every internal\nnode, but in the right order. The leaves ",[392,2786,2788],{"className":2787},[395],[392,2789,2791,2827],{"className":2790,"ariaHidden":400},[399],[392,2792,2794,2797,2800,2803,2818,2821,2824],{"className":2793},[404],[392,2795],{"className":2796,"style":409},[408],[392,2798,651],{"className":2799},[413,423],[392,2801,655],{"className":2802},[418],[392,2804,2806,2809,2812,2815],{"className":2805},[763],[392,2807,769],{"className":2808,"style":768},[418,767],[392,2810,424],{"className":2811},[413,423],[392,2813,776],{"className":2814},[413],[392,2816,780],{"className":2817,"style":768},[449,767],[392,2819],{"className":2820,"style":884},[428],[392,2822,889],{"className":2823},[888],[392,2825],{"className":2826,"style":884},[428],[392,2828,2830,2833,2836,2839],{"className":2829},[404],[392,2831],{"className":2832,"style":409},[408],[392,2834,659],{"className":2835},[413],[392,2837,424],{"className":2838},[413,423],[392,2840,666],{"className":2841},[449]," are already\nvalid one-element heaps, so we start just above them and work ",[545,2844,2845],{},"upward"," to the\nroot. Processing a node only after its children are heaps is exactly the\nprecondition ",[392,2848,2850],{"className":2849},[395],[392,2851,2853],{"className":2852,"ariaHidden":400},[399],[392,2854,2856,2859],{"className":2855},[404],[392,2857],{"className":2858,"style":2036},[408],[392,2860,2862],{"className":2861},[493,494],[392,2863,2865],{"className":2864},[413,498],[392,2866,2046],{"className":2867},[413]," demands.",[2129,2870,2872],{"className":2131,"code":2871,"language":2133,"meta":376,"style":376},"caption: $\\textsc{Build-Max-Heap}(A)$ — turn $A[1..n]$ into a max-heap\nnumber: 2\n$A.heapsize \\gets A.length$\nfor $i \\gets \\floor{A.length \u002F 2}$ downto $1$ do\n  call $\\textsc{Max-Heapify}(A, i)$ \u002F\u002F children already heaps\n",[2135,2873,2874,2879,2884,2889,2894],{"__ignoreMap":376},[392,2875,2876],{"class":2139,"line":6},[392,2877,2878],{},"caption: $\\textsc{Build-Max-Heap}(A)$ — turn $A[1..n]$ into a max-heap\n",[392,2880,2881],{"class":2139,"line":18},[392,2882,2883],{},"number: 2\n",[392,2885,2886],{"class":2139,"line":24},[392,2887,2888],{},"$A.heapsize \\gets A.length$\n",[392,2890,2891],{"class":2139,"line":73},[392,2892,2893],{},"for $i \\gets \\floor{A.length \u002F 2}$ downto $1$ do\n",[392,2895,2896],{"class":2139,"line":102},[392,2897,2898],{},"  call $\\textsc{Max-Heapify}(A, i)$ \u002F\u002F children already heaps\n",[381,2900,2901,2902,2935,2936,2961,2962,3035],{},"On ",[392,2903,2905],{"className":2904},[395],[392,2906,2908,2926],{"className":2907,"ariaHidden":400},[399],[392,2909,2911,2914,2917,2920,2923],{"className":2910},[404],[392,2912],{"className":2913,"style":624},[408],[392,2915,424],{"className":2916},[413,423],[392,2918],{"className":2919,"style":746},[428],[392,2921,750],{"className":2922},[602],[392,2924],{"className":2925,"style":746},[428],[392,2927,2929,2932],{"className":2928},[404],[392,2930],{"className":2931,"style":705},[408],[392,2933,1111],{"className":2934},[413]," nodes the leaves are ",[392,2937,2939],{"className":2938},[395],[392,2940,2942],{"className":2941,"ariaHidden":400},[399],[392,2943,2945,2948,2951,2954,2958],{"className":2944},[404],[392,2946],{"className":2947,"style":409},[408],[392,2949,651],{"className":2950},[413,423],[392,2952,655],{"className":2953},[418],[392,2955,2957],{"className":2956},[413],"6..10",[392,2959,666],{"className":2960},[449]," (already heaps, so we skip them), and we\nsift down the internal nodes ",[392,2963,2965],{"className":2964},[395],[392,2966,2968],{"className":2967,"ariaHidden":400},[399],[392,2969,2971,2974,2977,2980,2983,2986,2989,2992,2995,2998,3001,3004,3007,3010,3014,3017,3020,3023,3026,3029,3032],{"className":2970},[404],[392,2972],{"className":2973,"style":409},[408],[392,2975,651],{"className":2976},[413,423],[392,2978,655],{"className":2979},[418],[392,2981,1780],{"className":2982},[413],[392,2984,666],{"className":2985},[449],[392,2987,788],{"className":2988},[787],[392,2990],{"className":2991,"style":429},[428],[392,2993,651],{"className":2994},[413,423],[392,2996,655],{"className":2997},[418],[392,2999,1188],{"className":3000},[413],[392,3002,666],{"className":3003},[449],[392,3005,788],{"className":3006},[787],[392,3008],{"className":3009,"style":429},[428],[392,3011,3013],{"className":3012},[763],"…",[392,3015],{"className":3016,"style":429},[428],[392,3018,788],{"className":3019},[787],[392,3021],{"className":3022,"style":429},[428],[392,3024,651],{"className":3025},[413,423],[392,3027,655],{"className":3028},[418],[392,3030,575],{"className":3031},[413],[392,3033,666],{"className":3034},[449]," in that decreasing order, so\nthat every node is processed only after both of its children are.",[907,3037,3039,3289],{"className":3038},[910,911],[913,3040,3044],{"xmlns":915,"width":3041,"height":3042,"viewBox":3043},"495.882","217.781","-75 -75 371.911 163.336",[920,3045,3046,3049,3055,3058,3065,3068,3075,3078,3085,3088,3095,3108,3120,3132,3144,3156,3159,3175,3189,3203,3217,3231],{"stroke":922,"style":923},[925,3047],{"fill":927,"d":3048},"M92.38-45.305c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.778 10.67-10.67Zm-10.67 0",[920,3050,3051],{"transform":931},[925,3052],{"d":3053,"fill":922,"stroke":922,"className":3054,"style":937},"M85.617-45.305L82.585-45.305L82.585-45.621Q83.736-45.621 83.736-45.916L83.736-50.640Q83.248-50.407 82.527-50.407L82.527-50.723Q83.657-50.723 84.219-51.299L84.364-51.299Q84.399-51.299 84.432-51.266Q84.465-51.233 84.465-51.198L84.465-45.916Q84.465-45.621 85.617-45.621L85.617-45.305M88.640-45.107Q87.906-45.107 87.476-45.588Q87.045-46.070 86.880-46.762Q86.715-47.454 86.715-48.201Q86.715-48.930 87.008-49.653Q87.300-50.376 87.854-50.838Q88.407-51.299 89.154-51.299Q89.651-51.299 89.987-51.033Q90.323-50.767 90.323-50.284Q90.323-50.104 90.196-49.976Q90.068-49.849 89.893-49.849Q89.712-49.849 89.583-49.974Q89.453-50.099 89.453-50.284Q89.453-50.398 89.510-50.502Q89.567-50.605 89.668-50.664Q89.770-50.723 89.893-50.723Q89.897-50.723 89.901-50.721Q89.906-50.719 89.910-50.715Q89.796-50.882 89.587-50.961Q89.378-51.040 89.154-51.040Q88.710-51.040 88.352-50.739Q87.994-50.438 87.805-49.985Q87.572-49.379 87.572-48.346Q87.744-48.711 88.045-48.939Q88.346-49.168 88.732-49.168Q89.137-49.168 89.482-49.001Q89.827-48.834 90.064-48.553Q90.301-48.271 90.431-47.909Q90.561-47.546 90.561-47.142Q90.561-46.597 90.317-46.131Q90.073-45.665 89.633-45.386Q89.194-45.107 88.640-45.107M88.640-45.393Q89.102-45.393 89.337-45.650Q89.572-45.907 89.638-46.281Q89.704-46.654 89.704-47.124L89.704-47.159Q89.704-47.647 89.647-48.012Q89.589-48.377 89.361-48.640Q89.132-48.904 88.689-48.904Q88.319-48.904 88.069-48.660Q87.818-48.416 87.704-48.052Q87.590-47.687 87.590-47.340Q87.590-47.221 87.599-47.159Q87.599-47.142 87.596-47.131Q87.594-47.120 87.590-47.107Q87.590-46.456 87.827-45.925Q88.064-45.393 88.640-45.393",[936],[925,3056],{"fill":927,"d":3057},"M18.402-5.472c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67S1.84 5.198 7.733 5.198 18.403.42 18.403-5.472Zm-10.67 0",[920,3059,3061],{"transform":3060},"translate(-78.602 42.734)",[925,3062],{"d":3063,"fill":922,"stroke":922,"className":3064,"style":937},"M85.617-45.305L82.585-45.305L82.585-45.621Q83.736-45.621 83.736-45.916L83.736-50.640Q83.248-50.407 82.527-50.407L82.527-50.723Q83.657-50.723 84.219-51.299L84.364-51.299Q84.399-51.299 84.432-51.266Q84.465-51.233 84.465-51.198L84.465-45.916Q84.465-45.621 85.617-45.621L85.617-45.305M89.027-46.782L86.588-46.782L86.588-47.098L89.414-51.246Q89.458-51.299 89.523-51.299L89.677-51.299Q89.717-51.299 89.750-51.266Q89.783-51.233 89.783-51.189L89.783-47.098L90.684-47.098L90.684-46.782L89.783-46.782L89.783-45.916Q89.783-45.621 90.684-45.621L90.684-45.305L88.130-45.305L88.130-45.621Q88.491-45.621 88.759-45.676Q89.027-45.731 89.027-45.916L89.027-46.782M89.084-50.271L86.922-47.098L89.084-47.098",[936],[925,3066],{"fill":927,"d":3067},"M166.357-5.472c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3069,3071],{"transform":3070},"translate(69.352 42.734)",[925,3072],{"d":3073,"fill":922,"stroke":922,"className":3074,"style":937},"M85.617-45.305L82.585-45.305L82.585-45.621Q83.736-45.621 83.736-45.916L83.736-50.640Q83.248-50.407 82.527-50.407L82.527-50.723Q83.657-50.723 84.219-51.299L84.364-51.299Q84.399-51.299 84.432-51.266Q84.465-51.233 84.465-51.198L84.465-45.916Q84.465-45.621 85.617-45.621L85.617-45.305M88.640-45.107Q87.515-45.107 87.102-46.004Q86.689-46.900 86.689-48.175Q86.689-48.948 86.838-49.647Q86.988-50.346 87.423-50.822Q87.858-51.299 88.640-51.299Q89.418-51.299 89.853-50.820Q90.288-50.341 90.438-49.645Q90.587-48.948 90.587-48.175Q90.587-46.896 90.174-46.002Q89.761-45.107 88.640-45.107M88.640-45.367Q89.159-45.367 89.409-45.878Q89.660-46.390 89.717-47.001Q89.774-47.612 89.774-48.320Q89.774-49.005 89.717-49.565Q89.660-50.126 89.407-50.583Q89.154-51.040 88.640-51.040Q88.236-51.040 87.999-50.763Q87.761-50.486 87.654-50.045Q87.546-49.603 87.522-49.210Q87.498-48.816 87.498-48.320Q87.498-47.814 87.522-47.386Q87.546-46.957 87.654-46.474Q87.761-45.991 88.001-45.679Q88.240-45.367 88.640-45.367",[936],[925,3076],{"fill":927,"d":3077},"M-15.74 34.362c0-5.893-4.778-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3079,3081],{"transform":3080},"translate(-110.433 82.568)",[925,3082],{"d":3083,"fill":922,"stroke":922,"className":3084,"style":937},"M82.097-46.672Q82.097-47.230 82.457-47.643Q82.817-48.056 83.393-48.328L83.024-48.561Q82.721-48.763 82.534-49.093Q82.347-49.423 82.347-49.779Q82.347-50.433 82.853-50.866Q83.358-51.299 84.022-51.299Q84.421-51.299 84.806-51.139Q85.190-50.978 85.439-50.673Q85.687-50.367 85.687-49.950Q85.687-49.119 84.619-48.561L85.173-48.214Q85.520-47.986 85.731-47.617Q85.942-47.247 85.942-46.834Q85.942-46.456 85.784-46.138Q85.626-45.819 85.349-45.586Q85.072-45.353 84.729-45.230Q84.386-45.107 84.022-45.107Q83.556-45.107 83.110-45.294Q82.664-45.481 82.380-45.835Q82.097-46.188 82.097-46.672M82.620-46.672Q82.620-46.127 83.039-45.760Q83.459-45.393 84.022-45.393Q84.351-45.393 84.676-45.525Q85.002-45.657 85.210-45.911Q85.419-46.166 85.419-46.509Q85.419-46.773 85.283-46.997Q85.147-47.221 84.914-47.375L83.670-48.157Q83.209-47.920 82.914-47.533Q82.620-47.146 82.620-46.672M83.231-49.427L84.347-48.724Q84.571-48.847 84.775-49.036Q84.980-49.225 85.100-49.458Q85.221-49.691 85.221-49.950Q85.221-50.258 85.050-50.508Q84.878-50.759 84.602-50.899Q84.325-51.040 84.013-51.040Q83.564-51.040 83.191-50.794Q82.817-50.548 82.817-50.121Q82.817-49.717 83.231-49.427",[936],[925,3086],{"fill":927,"d":3087},"M52.546 34.362c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3089,3091],{"transform":3090},"translate(-42.146 82.568)",[925,3092],{"d":3093,"fill":922,"stroke":922,"className":3094,"style":937},"M83.332-45.547Q83.332-46.184 83.488-46.830Q83.644-47.476 83.936-48.082Q84.228-48.689 84.637-49.238L85.454-50.346L84.426-50.346Q82.782-50.346 82.734-50.302Q82.628-50.174 82.510-49.471L82.224-49.471L82.519-51.387L82.809-51.387L82.809-51.361Q82.809-51.198 83.373-51.150Q83.938-51.101 84.483-51.101L86.201-51.101L86.201-50.895Q86.201-50.877 86.199-50.868Q86.197-50.860 86.192-50.851L84.905-49.102Q84.654-48.750 84.507-48.324Q84.360-47.898 84.294-47.434Q84.228-46.971 84.215-46.560Q84.202-46.149 84.202-45.547Q84.202-45.367 84.076-45.237Q83.951-45.107 83.771-45.107Q83.652-45.107 83.549-45.164Q83.446-45.222 83.389-45.325Q83.332-45.428 83.332-45.547",[936],[920,3096,3098,3101],{"fill":3097},"var(--tk-soft-neutral)",[925,3099],{"d":3100},"M132.213 34.362c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3102,3104],{"transform":3103},"translate(37.521 82.568)",[925,3105],{"d":3106,"fill":922,"stroke":922,"className":3107,"style":937},"M82.773-45.692Q83.020-45.393 83.626-45.393Q83.907-45.393 84.147-45.531Q84.386-45.670 84.564-45.892Q84.742-46.114 84.852-46.377Q85.085-46.953 85.085-48.069Q84.918-47.704 84.613-47.480Q84.307-47.256 83.925-47.256Q83.389-47.256 82.973-47.535Q82.558-47.814 82.327-48.280Q82.097-48.746 82.097-49.273Q82.097-49.686 82.244-50.055Q82.391-50.425 82.655-50.701Q82.918-50.978 83.288-51.139Q83.657-51.299 84.070-51.299Q84.628-51.299 85.002-51.007Q85.375-50.715 85.579-50.251Q85.784-49.787 85.863-49.271Q85.942-48.755 85.942-48.223Q85.942-47.507 85.674-46.784Q85.406-46.061 84.883-45.584Q84.360-45.107 83.635-45.107Q83.085-45.107 82.708-45.356Q82.330-45.604 82.330-46.122Q82.330-46.241 82.387-46.344Q82.444-46.448 82.545-46.507Q82.646-46.566 82.773-46.566Q82.958-46.566 83.081-46.434Q83.204-46.303 83.204-46.122Q83.204-45.947 83.077-45.819Q82.949-45.692 82.773-45.692M83.969-47.520Q84.338-47.520 84.586-47.762Q84.835-48.003 84.951-48.361Q85.067-48.720 85.067-49.093Q85.067-49.203 85.059-49.256Q85.063-49.269 85.065-49.280Q85.067-49.291 85.067-49.308Q85.067-49.963 84.852-50.502Q84.637-51.040 84.070-51.040Q83.710-51.040 83.481-50.890Q83.252-50.741 83.136-50.484Q83.020-50.227 82.987-49.946Q82.954-49.664 82.954-49.291L82.954-49.256Q82.954-48.930 82.980-48.643Q83.006-48.355 83.105-48.096Q83.204-47.836 83.415-47.678Q83.626-47.520 83.969-47.520",[936],[920,3109,3110,3113],{"fill":3097},[925,3111],{"d":3112},"M200.5 34.362c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3114,3116],{"transform":3115},"translate(105.808 82.568)",[925,3117],{"d":3118,"fill":922,"stroke":922,"className":3119,"style":937},"M82.611-46.026L82.567-46.026Q82.769-45.709 83.156-45.551Q83.543-45.393 83.969-45.393Q84.505-45.393 84.744-45.828Q84.984-46.263 84.984-46.843Q84.984-47.423 84.738-47.863Q84.492-48.302 83.960-48.302L83.340-48.302Q83.314-48.302 83.281-48.331Q83.248-48.359 83.248-48.381L83.248-48.482Q83.248-48.513 83.277-48.537Q83.305-48.561 83.340-48.561L83.859-48.601Q84.325-48.601 84.571-49.073Q84.817-49.546 84.817-50.064Q84.817-50.491 84.604-50.765Q84.391-51.040 83.969-51.040Q83.626-51.040 83.301-50.910Q82.976-50.781 82.791-50.526L82.817-50.526Q83.020-50.526 83.156-50.385Q83.292-50.244 83.292-50.047Q83.292-49.849 83.158-49.715Q83.024-49.581 82.826-49.581Q82.624-49.581 82.486-49.715Q82.347-49.849 82.347-50.047Q82.347-50.636 82.850-50.967Q83.354-51.299 83.969-51.299Q84.347-51.299 84.749-51.159Q85.151-51.018 85.419-50.739Q85.687-50.460 85.687-50.064Q85.687-49.515 85.333-49.078Q84.980-48.640 84.439-48.456Q84.830-48.377 85.175-48.153Q85.520-47.929 85.731-47.588Q85.942-47.247 85.942-46.852Q85.942-46.470 85.779-46.147Q85.617-45.824 85.325-45.588Q85.032-45.353 84.685-45.230Q84.338-45.107 83.969-45.107Q83.521-45.107 83.090-45.268Q82.659-45.428 82.378-45.755Q82.097-46.083 82.097-46.540Q82.097-46.755 82.244-46.898Q82.391-47.041 82.611-47.041Q82.822-47.041 82.967-46.896Q83.112-46.751 83.112-46.540Q83.112-46.329 82.965-46.177Q82.817-46.026 82.611-46.026",[936],[920,3121,3122,3125],{"fill":3097},[925,3123],{"d":3124},"M-35.658 74.196c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3126,3128],{"transform":3127},"translate(-130.35 122.401)",[925,3129],{"d":3130,"fill":922,"stroke":922,"className":3131,"style":937},"M85.617-45.305L82.167-45.305L82.167-45.538Q82.167-45.551 82.198-45.582L83.652-47.159Q84.118-47.656 84.371-47.961Q84.624-48.267 84.815-48.678Q85.006-49.089 85.006-49.528Q85.006-50.117 84.683-50.550Q84.360-50.983 83.780-50.983Q83.516-50.983 83.270-50.873Q83.024-50.763 82.848-50.576Q82.672-50.389 82.576-50.139L82.655-50.139Q82.857-50.139 83-50.003Q83.143-49.867 83.143-49.651Q83.143-49.445 83-49.306Q82.857-49.168 82.655-49.168Q82.453-49.168 82.310-49.311Q82.167-49.453 82.167-49.651Q82.167-50.113 82.404-50.486Q82.642-50.860 83.042-51.079Q83.441-51.299 83.890-51.299Q84.413-51.299 84.867-51.084Q85.322-50.868 85.595-50.469Q85.867-50.069 85.867-49.528Q85.867-49.133 85.696-48.779Q85.524-48.425 85.259-48.146Q84.993-47.867 84.542-47.482Q84.092-47.098 84.013-47.023L82.989-46.061L83.806-46.061Q84.457-46.061 84.894-46.072Q85.331-46.083 85.362-46.105Q85.432-46.188 85.487-46.428Q85.542-46.667 85.582-46.935L85.867-46.935",[936],[920,3133,3134,3137],{"fill":3097},[925,3135],{"d":3136},"M4.176 74.196c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3138,3140],{"transform":3139},"translate(-90.516 122.401)",[925,3141],{"d":3142,"fill":922,"stroke":922,"className":3143,"style":937},"M84.408-46.782L81.969-46.782L81.969-47.098L84.795-51.246Q84.839-51.299 84.905-51.299L85.059-51.299Q85.098-51.299 85.131-51.266Q85.164-51.233 85.164-51.189L85.164-47.098L86.065-47.098L86.065-46.782L85.164-46.782L85.164-45.916Q85.164-45.621 86.065-45.621L86.065-45.305L83.512-45.305L83.512-45.621Q83.872-45.621 84.140-45.676Q84.408-45.731 84.408-45.916L84.408-46.782M84.465-50.271L82.303-47.098L84.465-47.098",[936],[920,3145,3146,3149],{"fill":3097},[925,3147],{"d":3148},"M35.474 74.196c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,3150,3152],{"transform":3151},"translate(-59.218 122.401)",[925,3153],{"d":3154,"fill":922,"stroke":922,"className":3155,"style":937},"M85.617-45.305L82.585-45.305L82.585-45.621Q83.736-45.621 83.736-45.916L83.736-50.640Q83.248-50.407 82.527-50.407L82.527-50.723Q83.657-50.723 84.219-51.299L84.364-51.299Q84.399-51.299 84.432-51.266Q84.465-51.233 84.465-51.198L84.465-45.916Q84.465-45.621 85.617-45.621",[936],[925,3157],{"fill":927,"d":3158},"M72.14-40.152 17.303-10.625M91.28-40.152l54.837 29.527M.66 2.78l-19.997 23.33M14.806 2.78l19.997 23.33M148.614 2.78l-19.997 23.33M162.76 2.78l19.997 23.33M-31.271 44.084l-10.196 20.39M-21.55 44.084l10.195 20.39M37.595 44.353l-8.509 19.852",[920,3160,3162,3169],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},"var(--tk-warn)",[920,3163,3165],{"transform":3164},"translate(-10.473 -19.12)",[925,3166],{"d":3167,"fill":3161,"stroke":3161,"className":3168,"style":1422},"M82.024-45.312L82.024-46.375Q82.024-46.399 82.052-46.426Q82.079-46.453 82.103-46.453L82.212-46.453Q82.277-46.453 82.291-46.395Q82.387-45.961 82.633-45.710Q82.879-45.459 83.293-45.459Q83.634-45.459 83.887-45.592Q84.140-45.725 84.140-46.033Q84.140-46.190 84.046-46.305Q83.952-46.419 83.814-46.488Q83.675-46.556 83.508-46.594L82.927-46.693Q82.571-46.761 82.298-46.982Q82.024-47.202 82.024-47.544Q82.024-47.793 82.136-47.968Q82.247-48.142 82.433-48.241Q82.619-48.340 82.835-48.383Q83.050-48.426 83.293-48.426Q83.706-48.426 83.986-48.244L84.202-48.419Q84.212-48.422 84.219-48.424Q84.226-48.426 84.236-48.426L84.287-48.426Q84.314-48.426 84.338-48.402Q84.362-48.378 84.362-48.350L84.362-47.503Q84.362-47.482 84.338-47.455Q84.314-47.428 84.287-47.428L84.174-47.428Q84.147-47.428 84.121-47.453Q84.096-47.479 84.096-47.503Q84.096-47.739 83.990-47.903Q83.884-48.067 83.701-48.149Q83.518-48.231 83.286-48.231Q82.958-48.231 82.701-48.128Q82.445-48.026 82.445-47.749Q82.445-47.554 82.628-47.445Q82.811-47.335 83.040-47.294L83.614-47.188Q83.860-47.140 84.074-47.012Q84.287-46.884 84.424-46.681Q84.561-46.477 84.561-46.228Q84.561-45.715 84.195-45.476Q83.829-45.237 83.293-45.237Q82.797-45.237 82.465-45.531L82.199-45.257Q82.178-45.237 82.151-45.237L82.103-45.237Q82.079-45.237 82.052-45.264Q82.024-45.291 82.024-45.312M85.716-46.146L85.716-48.043L85.077-48.043L85.077-48.265Q85.395-48.265 85.612-48.475Q85.829-48.685 85.929-48.995Q86.030-49.304 86.030-49.612L86.297-49.612L86.297-48.323L87.374-48.323L87.374-48.043L86.297-48.043L86.297-46.159Q86.297-45.883 86.401-45.684Q86.505-45.486 86.765-45.486Q86.922-45.486 87.028-45.590Q87.134-45.695 87.184-45.848Q87.233-46.002 87.233-46.159L87.233-46.573L87.500-46.573L87.500-46.146Q87.500-45.920 87.401-45.710Q87.302-45.500 87.117-45.368Q86.933-45.237 86.704-45.237Q86.266-45.237 85.991-45.474Q85.716-45.712 85.716-46.146M88.269-46.840Q88.269-47.161 88.394-47.450Q88.519-47.739 88.744-47.962Q88.970-48.186 89.265-48.306Q89.561-48.426 89.879-48.426Q90.207-48.426 90.469-48.326Q90.730-48.227 90.906-48.045Q91.082-47.862 91.176-47.604Q91.270-47.346 91.270-47.014Q91.270-46.922 91.188-46.901L88.932-46.901L88.932-46.840Q88.932-46.252 89.216-45.869Q89.500-45.486 90.067-45.486Q90.388-45.486 90.657-45.679Q90.925-45.872 91.014-46.187Q91.021-46.228 91.096-46.242L91.188-46.242Q91.270-46.218 91.270-46.146Q91.270-46.139 91.263-46.112Q91.150-45.715 90.780-45.476Q90.409-45.237 89.985-45.237Q89.547-45.237 89.147-45.445Q88.748-45.654 88.508-46.021Q88.269-46.388 88.269-46.840M88.939-47.110L90.754-47.110Q90.754-47.387 90.657-47.639Q90.559-47.892 90.361-48.048Q90.163-48.203 89.879-48.203Q89.602-48.203 89.388-48.045Q89.175-47.886 89.057-47.631Q88.939-47.376 88.939-47.110M93.502-43.948L91.872-43.948L91.872-44.228Q92.101-44.228 92.249-44.263Q92.398-44.297 92.398-44.437L92.398-47.783Q92.398-47.954 92.261-47.995Q92.125-48.036 91.872-48.036L91.872-48.316L92.952-48.391L92.952-47.985Q93.174-48.186 93.461-48.289Q93.748-48.391 94.056-48.391Q94.483-48.391 94.847-48.178Q95.211-47.964 95.425-47.600Q95.638-47.236 95.638-46.816Q95.638-46.371 95.399-46.007Q95.160-45.643 94.767-45.440Q94.374-45.237 93.929-45.237Q93.663-45.237 93.415-45.337Q93.167-45.438 92.979-45.619L92.979-44.437Q92.979-44.300 93.128-44.264Q93.276-44.228 93.502-44.228L93.502-43.948M92.979-47.636L92.979-46.026Q93.112-45.773 93.355-45.616Q93.598-45.459 93.875-45.459Q94.203-45.459 94.456-45.660Q94.709-45.862 94.842-46.180Q94.975-46.498 94.975-46.816Q94.975-47.045 94.910-47.274Q94.845-47.503 94.717-47.701Q94.589-47.899 94.394-48.019Q94.199-48.138 93.967-48.138Q93.673-48.138 93.405-48.009Q93.136-47.879 92.979-47.636",[936],[920,3170,3171],{"transform":3164},[925,3172],{"d":3173,"fill":3161,"stroke":3161,"className":3174,"style":1422},"M99.477-46.067L99.446-46.067Q99.583-45.770 99.880-45.594Q100.177-45.418 100.505-45.418Q100.868-45.418 101.095-45.596Q101.322-45.773 101.416-46.062Q101.510-46.351 101.510-46.713Q101.510-47.028 101.456-47.313Q101.401-47.598 101.228-47.804Q101.056-48.009 100.741-48.009Q100.468-48.009 100.285-47.942Q100.102-47.875 99.998-47.786Q99.894-47.698 99.798-47.588Q99.702-47.479 99.658-47.469L99.579-47.469Q99.507-47.486 99.490-47.557L99.490-49.875Q99.490-49.909 99.514-49.931Q99.538-49.953 99.572-49.953L99.600-49.953Q99.887-49.837 100.155-49.783Q100.423-49.728 100.700-49.728Q100.977-49.728 101.247-49.783Q101.517-49.837 101.797-49.953L101.821-49.953Q101.856-49.953 101.879-49.930Q101.903-49.906 101.903-49.875L101.903-49.806Q101.903-49.779 101.883-49.759Q101.609-49.444 101.225-49.268Q100.840-49.092 100.427-49.092Q100.088-49.092 99.771-49.178L99.771-47.896Q100.167-48.231 100.741-48.231Q101.145-48.231 101.481-48.021Q101.818-47.810 102.011-47.458Q102.204-47.106 102.204-46.706Q102.204-46.375 102.064-46.089Q101.924-45.804 101.680-45.594Q101.435-45.384 101.133-45.274Q100.830-45.165 100.512-45.165Q100.153-45.165 99.827-45.329Q99.501-45.493 99.306-45.785Q99.111-46.077 99.111-46.440Q99.111-46.590 99.217-46.696Q99.323-46.802 99.477-46.802Q99.630-46.802 99.735-46.698Q99.839-46.594 99.839-46.440Q99.839-46.283 99.735-46.175Q99.630-46.067 99.477-46.067",[936],[920,3176,3177,3183],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,3178,3180],{"transform":3179},"translate(-109.837 41.409)",[925,3181],{"d":3167,"fill":3161,"stroke":3161,"className":3182,"style":1422},[936],[920,3184,3185],{"transform":3179},[925,3186],{"d":3187,"fill":3161,"stroke":3161,"className":3188,"style":1422},"M100.987-46.453L98.943-46.453L98.943-46.734L101.274-49.906Q101.309-49.953 101.374-49.953L101.510-49.953Q101.555-49.953 101.582-49.926Q101.609-49.899 101.609-49.854L101.609-46.734L102.372-46.734L102.372-46.453L101.609-46.453L101.609-45.794Q101.609-45.585 102.365-45.585L102.365-45.305L100.232-45.305L100.232-45.585Q100.987-45.585 100.987-45.794L100.987-46.453M101.035-49.178L99.244-46.734L101.035-46.734",[936],[920,3190,3191,3197],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,3192,3194],{"transform":3193},"translate(88.891 41.409)",[925,3195],{"d":3167,"fill":3161,"stroke":3161,"className":3196,"style":1422},[936],[920,3198,3199],{"transform":3193},[925,3200],{"d":3201,"fill":3161,"stroke":3161,"className":3202,"style":1422},"M99.466-45.852Q99.586-45.695 99.777-45.596Q99.969-45.496 100.184-45.457Q100.399-45.418 100.622-45.418Q100.919-45.418 101.114-45.573Q101.309-45.729 101.399-45.983Q101.490-46.238 101.490-46.522Q101.490-46.816 101.398-47.067Q101.305-47.318 101.107-47.474Q100.909-47.629 100.615-47.629L100.099-47.629Q100.071-47.629 100.046-47.655Q100.020-47.680 100.020-47.704L100.020-47.776Q100.020-47.807 100.046-47.829Q100.071-47.851 100.099-47.851L100.540-47.882Q100.902-47.882 101.122-48.239Q101.343-48.597 101.343-48.986Q101.343-49.314 101.148-49.518Q100.953-49.721 100.622-49.721Q100.335-49.721 100.082-49.637Q99.829-49.554 99.665-49.366Q99.812-49.366 99.912-49.251Q100.013-49.137 100.013-48.986Q100.013-48.836 99.907-48.726Q99.801-48.617 99.644-48.617Q99.483-48.617 99.374-48.726Q99.265-48.836 99.265-48.986Q99.265-49.311 99.473-49.530Q99.682-49.748 99.998-49.851Q100.314-49.953 100.622-49.953Q100.940-49.953 101.268-49.849Q101.596-49.745 101.823-49.523Q102.050-49.301 102.050-48.986Q102.050-48.552 101.763-48.227Q101.476-47.903 101.042-47.756Q101.353-47.691 101.633-47.525Q101.914-47.359 102.091-47.101Q102.269-46.843 102.269-46.522Q102.269-46.112 102.025-45.802Q101.780-45.493 101.399-45.329Q101.018-45.165 100.622-45.165Q100.253-45.165 99.895-45.278Q99.538-45.390 99.294-45.640Q99.049-45.889 99.049-46.259Q99.049-46.430 99.166-46.542Q99.282-46.655 99.453-46.655Q99.562-46.655 99.653-46.604Q99.743-46.553 99.798-46.460Q99.853-46.368 99.853-46.259Q99.853-46.091 99.740-45.972Q99.627-45.852 99.466-45.852",[936],[920,3204,3205,3211],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,3206,3208],{"transform":3207},"translate(-143.98 81.243)",[925,3209],{"d":3167,"fill":3161,"stroke":3161,"className":3210,"style":1422},[936],[920,3212,3213],{"transform":3207},[925,3214],{"d":3215,"fill":3161,"stroke":3161,"className":3216,"style":1422},"M101.996-45.305L99.111-45.305L99.111-45.507Q99.111-45.537 99.138-45.565L100.386-46.782Q100.458-46.857 100.500-46.899Q100.543-46.942 100.622-47.021Q101.035-47.434 101.266-47.792Q101.497-48.149 101.497-48.573Q101.497-48.805 101.418-49.008Q101.339-49.212 101.198-49.362Q101.056-49.513 100.861-49.593Q100.666-49.673 100.434-49.673Q100.123-49.673 99.865-49.514Q99.607-49.355 99.477-49.078L99.497-49.078Q99.665-49.078 99.772-48.967Q99.880-48.856 99.880-48.692Q99.880-48.535 99.771-48.422Q99.661-48.309 99.497-48.309Q99.337-48.309 99.224-48.422Q99.111-48.535 99.111-48.692Q99.111-49.068 99.319-49.355Q99.528-49.642 99.863-49.798Q100.198-49.953 100.553-49.953Q100.977-49.953 101.357-49.795Q101.736-49.636 101.970-49.319Q102.204-49.003 102.204-48.573Q102.204-48.262 102.064-47.993Q101.924-47.725 101.719-47.520Q101.514-47.315 101.151-47.033Q100.789-46.751 100.680-46.655L99.825-45.927L100.468-45.927Q100.731-45.927 101.020-45.929Q101.309-45.930 101.527-45.939Q101.746-45.948 101.763-45.965Q101.825-46.030 101.862-46.197Q101.900-46.365 101.938-46.607L102.204-46.607",[936],[920,3218,3219,3225],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,3220,3222],{"transform":3221},"translate(-23.497 81.243)",[925,3223],{"d":3167,"fill":3161,"stroke":3161,"className":3224,"style":1422},[936],[920,3226,3227],{"transform":3221},[925,3228],{"d":3229,"fill":3161,"stroke":3161,"className":3230,"style":1422},"M101.996-45.305L99.466-45.305L99.466-45.585Q100.434-45.585 100.434-45.794L100.434-49.413Q100.041-49.225 99.419-49.225L99.419-49.506Q99.836-49.506 100.200-49.607Q100.564-49.707 100.820-49.953L100.946-49.953Q101.011-49.936 101.028-49.868L101.028-45.794Q101.028-45.585 101.996-45.585",[936],[920,3232,3234,3241,3247,3253,3259,3265,3271,3277,3283],{"fill":3233,"stroke":927,"fontSize":1137},"var(--tk-line)",[920,3235,3237],{"transform":3236},"translate(125.88 101.335)",[925,3238],{"d":3239,"fill":3233,"stroke":3233,"className":3240,"style":1422},"M83.692-45.305L82.089-45.305L82.089-45.585Q82.315-45.585 82.464-45.619Q82.612-45.654 82.612-45.794L82.612-49.413Q82.612-49.683 82.505-49.745Q82.397-49.806 82.089-49.806L82.089-50.087L83.166-50.162L83.166-45.794Q83.166-45.657 83.316-45.621Q83.467-45.585 83.692-45.585L83.692-45.305M84.246-46.840Q84.246-47.161 84.371-47.450Q84.496-47.739 84.721-47.962Q84.947-48.186 85.242-48.306Q85.538-48.426 85.856-48.426Q86.184-48.426 86.446-48.326Q86.707-48.227 86.883-48.045Q87.059-47.862 87.153-47.604Q87.247-47.346 87.247-47.014Q87.247-46.922 87.165-46.901L84.909-46.901L84.909-46.840Q84.909-46.252 85.193-45.869Q85.477-45.486 86.044-45.486Q86.365-45.486 86.634-45.679Q86.902-45.872 86.991-46.187Q86.998-46.228 87.073-46.242L87.165-46.242Q87.247-46.218 87.247-46.146Q87.247-46.139 87.240-46.112Q87.127-45.715 86.757-45.476Q86.386-45.237 85.962-45.237Q85.524-45.237 85.125-45.445Q84.725-45.654 84.485-46.021Q84.246-46.388 84.246-46.840M84.916-47.110L86.731-47.110Q86.731-47.387 86.634-47.639Q86.536-47.892 86.338-48.048Q86.140-48.203 85.856-48.203Q85.579-48.203 85.366-48.045Q85.152-47.886 85.034-47.631Q84.916-47.376 84.916-47.110M87.893-46.033Q87.893-46.365 88.117-46.592Q88.341-46.819 88.684-46.947Q89.028-47.076 89.400-47.128Q89.773-47.181 90.077-47.181L90.077-47.434Q90.077-47.639 89.970-47.819Q89.862-47.998 89.681-48.101Q89.500-48.203 89.291-48.203Q88.884-48.203 88.648-48.111Q88.737-48.074 88.783-47.990Q88.830-47.906 88.830-47.804Q88.830-47.708 88.783-47.629Q88.737-47.551 88.657-47.506Q88.577-47.462 88.488-47.462Q88.337-47.462 88.237-47.559Q88.136-47.657 88.136-47.804Q88.136-48.426 89.291-48.426Q89.503-48.426 89.752-48.362Q90.002-48.299 90.204-48.180Q90.405-48.060 90.532-47.875Q90.658-47.691 90.658-47.448L90.658-45.872Q90.658-45.756 90.720-45.660Q90.781-45.565 90.894-45.565Q91.003-45.565 91.068-45.659Q91.133-45.753 91.133-45.872L91.133-46.320L91.400-46.320L91.400-45.872Q91.400-45.602 91.173-45.437Q90.945-45.271 90.665-45.271Q90.457-45.271 90.320-45.425Q90.183-45.578 90.159-45.794Q90.012-45.527 89.730-45.382Q89.448-45.237 89.124-45.237Q88.847-45.237 88.563-45.312Q88.279-45.387 88.086-45.566Q87.893-45.746 87.893-46.033M88.508-46.033Q88.508-45.859 88.609-45.729Q88.710-45.599 88.866-45.529Q89.021-45.459 89.185-45.459Q89.404-45.459 89.612-45.556Q89.821-45.654 89.949-45.835Q90.077-46.016 90.077-46.242L90.077-46.970Q89.752-46.970 89.387-46.879Q89.021-46.788 88.765-46.576Q88.508-46.365 88.508-46.033",[936],[920,3242,3243],{"transform":3236},[925,3244],{"d":3245,"fill":3233,"stroke":3233,"className":3246,"style":1422},"M93.204-45.332L92.076-47.831Q92.004-47.978 91.874-48.010Q91.744-48.043 91.515-48.043L91.515-48.323L93.029-48.323L93.029-48.043Q92.677-48.043 92.677-47.896Q92.677-47.851 92.688-47.831L93.552-45.913L94.332-47.643Q94.366-47.711 94.366-47.790Q94.366-47.903 94.282-47.973Q94.198-48.043 94.079-48.043L94.079-48.323L95.275-48.323L95.275-48.043Q95.056-48.043 94.885-47.940Q94.715-47.838 94.626-47.643L93.590-45.332Q93.542-45.237 93.436-45.237L93.358-45.237Q93.252-45.237 93.204-45.332",[936],[920,3248,3249],{"transform":3236},[925,3250],{"d":3251,"fill":3233,"stroke":3233,"className":3252,"style":1422},"M95.559-46.840Q95.559-47.161 95.684-47.450Q95.809-47.739 96.035-47.962Q96.260-48.186 96.556-48.306Q96.851-48.426 97.169-48.426Q97.497-48.426 97.759-48.326Q98.020-48.227 98.196-48.045Q98.372-47.862 98.466-47.604Q98.560-47.346 98.560-47.014Q98.560-46.922 98.478-46.901L96.223-46.901L96.223-46.840Q96.223-46.252 96.506-45.869Q96.790-45.486 97.357-45.486Q97.679-45.486 97.947-45.679Q98.215-45.872 98.304-46.187Q98.311-46.228 98.386-46.242L98.478-46.242Q98.560-46.218 98.560-46.146Q98.560-46.139 98.554-46.112Q98.441-45.715 98.070-45.476Q97.699-45.237 97.275-45.237Q96.838-45.237 96.438-45.445Q96.038-45.654 95.799-46.021Q95.559-46.388 95.559-46.840M96.229-47.110L98.044-47.110Q98.044-47.387 97.947-47.639Q97.849-47.892 97.651-48.048Q97.453-48.203 97.169-48.203Q96.892-48.203 96.679-48.045Q96.465-47.886 96.347-47.631Q96.229-47.376 96.229-47.110M99.148-45.312L99.148-46.375Q99.148-46.399 99.176-46.426Q99.203-46.453 99.227-46.453L99.336-46.453Q99.401-46.453 99.415-46.395Q99.511-45.961 99.757-45.710Q100.003-45.459 100.416-45.459Q100.758-45.459 101.011-45.592Q101.264-45.725 101.264-46.033Q101.264-46.190 101.170-46.305Q101.076-46.419 100.938-46.488Q100.799-46.556 100.632-46.594L100.051-46.693Q99.695-46.761 99.422-46.982Q99.148-47.202 99.148-47.544Q99.148-47.793 99.259-47.968Q99.370-48.142 99.557-48.241Q99.743-48.340 99.958-48.383Q100.174-48.426 100.416-48.426Q100.830-48.426 101.110-48.244L101.326-48.419Q101.336-48.422 101.343-48.424Q101.349-48.426 101.360-48.426L101.411-48.426Q101.438-48.426 101.462-48.402Q101.486-48.378 101.486-48.350L101.486-47.503Q101.486-47.482 101.462-47.455Q101.438-47.428 101.411-47.428L101.298-47.428Q101.271-47.428 101.245-47.453Q101.220-47.479 101.220-47.503Q101.220-47.739 101.114-47.903Q101.008-48.067 100.825-48.149Q100.642-48.231 100.410-48.231Q100.081-48.231 99.825-48.128Q99.569-48.026 99.569-47.749Q99.569-47.554 99.752-47.445Q99.934-47.335 100.163-47.294L100.738-47.188Q100.984-47.140 101.197-47.012Q101.411-46.884 101.548-46.681Q101.684-46.477 101.684-46.228Q101.684-45.715 101.319-45.476Q100.953-45.237 100.416-45.237Q99.921-45.237 99.589-45.531L99.323-45.257Q99.302-45.237 99.275-45.237L99.227-45.237Q99.203-45.237 99.176-45.264Q99.148-45.291 99.148-45.312",[936],[920,3254,3255],{"transform":3236},[925,3256],{"d":3257,"fill":3233,"stroke":3233,"className":3258,"style":1422},"M106.602-45.305L105.187-45.305Q105.153-45.305 105.129-45.341Q105.105-45.377 105.105-45.418L105.132-45.531Q105.160-45.578 105.207-45.585Q105.768-45.585 106.062-46.026Q106.065-46.033 106.079-46.045Q106.093-46.057 106.100-46.067L108.745-50.200Q108.803-50.295 108.913-50.295L109.001-50.295Q109.101-50.295 109.121-50.200L109.747-45.719Q109.801-45.585 110.297-45.585Q110.382-45.558 110.382-45.479L110.355-45.367Q110.328-45.315 110.276-45.305L108.458-45.305Q108.424-45.305 108.398-45.341Q108.372-45.377 108.372-45.418L108.400-45.531Q108.444-45.578 108.485-45.585Q108.981-45.585 109.046-45.746L108.885-46.874L106.910-46.874L106.335-45.978Q106.281-45.859 106.281-45.787Q106.281-45.585 106.622-45.585Q106.708-45.558 106.708-45.479L106.681-45.367Q106.650-45.312 106.602-45.305M108.526-49.400L107.091-47.154L108.841-47.154",[936],[920,3260,3261],{"transform":3236},[925,3262],{"d":3263,"fill":3233,"stroke":3233,"className":3264,"style":1422},"M112.748-43.555L111.672-43.555L111.672-50.555L112.748-50.555L112.748-50.213L112.013-50.213L112.013-43.897L112.748-43.897L112.748-43.555M114.970-45.165Q114.512-45.165 114.194-45.380Q113.876-45.596 113.695-45.948Q113.514-46.300 113.437-46.720Q113.360-47.140 113.360-47.568Q113.360-48.152 113.613-48.708Q113.866-49.263 114.336-49.608Q114.806-49.953 115.404-49.953Q115.814-49.953 116.098-49.755Q116.382-49.557 116.382-49.154Q116.382-49.058 116.335-48.979Q116.289-48.901 116.209-48.856Q116.129-48.812 116.040-48.812Q115.893-48.812 115.792-48.909Q115.691-49.007 115.691-49.154Q115.691-49.284 115.782-49.391Q115.872-49.499 116.006-49.499Q115.818-49.721 115.404-49.721Q115.090-49.721 114.816-49.557Q114.543-49.393 114.375-49.119Q114.187-48.829 114.122-48.463Q114.057-48.097 114.057-47.643Q114.208-47.937 114.473-48.115Q114.738-48.292 115.052-48.292Q115.483-48.292 115.831-48.086Q116.180-47.879 116.380-47.523Q116.580-47.168 116.580-46.741Q116.580-46.296 116.363-45.936Q116.146-45.575 115.773-45.370Q115.401-45.165 114.970-45.165M114.970-45.418Q115.346-45.418 115.549-45.601Q115.753-45.784 115.816-46.067Q115.879-46.351 115.879-46.741Q115.879-47.127 115.824-47.407Q115.770-47.687 115.575-47.879Q115.380-48.070 115.011-48.070Q114.720-48.070 114.509-47.894Q114.297-47.718 114.189-47.445Q114.081-47.171 114.081-46.888L114.081-46.747L114.081-46.706Q114.081-46.201 114.293-45.809Q114.505-45.418 114.970-45.418",[936],[920,3266,3267],{"transform":3236},[925,3268],{"d":3269,"fill":3233,"stroke":3233,"className":3270,"style":1422},"M117.737-45.725Q117.737-45.893 117.864-46.016Q117.990-46.139 118.157-46.139Q118.325-46.139 118.448-46.016Q118.571-45.893 118.571-45.725Q118.571-45.551 118.448-45.428Q118.325-45.305 118.157-45.305Q117.990-45.305 117.864-45.428Q117.737-45.551 117.737-45.725M120.109-45.725Q120.109-45.893 120.236-46.016Q120.362-46.139 120.530-46.139Q120.697-46.139 120.820-46.016Q120.943-45.893 120.943-45.725Q120.943-45.551 120.820-45.428Q120.697-45.305 120.530-45.305Q120.362-45.305 120.236-45.428Q120.109-45.551 120.109-45.725",[936],[920,3272,3273],{"transform":3236},[925,3274],{"d":3275,"fill":3233,"stroke":3233,"className":3276,"style":1422},"M125.045-45.305L122.515-45.305L122.515-45.585Q123.483-45.585 123.483-45.794L123.483-49.413Q123.090-49.225 122.468-49.225L122.468-49.506Q122.885-49.506 123.249-49.607Q123.613-49.707 123.869-49.953L123.995-49.953Q124.060-49.936 124.077-49.868L124.077-45.794Q124.077-45.585 125.045-45.585L125.045-45.305M127.690-45.165Q127.054-45.165 126.690-45.510Q126.326-45.855 126.191-46.380Q126.056-46.905 126.056-47.530Q126.056-48.555 126.412-49.254Q126.767-49.953 127.690-49.953Q128.616-49.953 128.969-49.254Q129.321-48.555 129.321-47.530Q129.321-46.905 129.186-46.380Q129.051-45.855 128.688-45.510Q128.326-45.165 127.690-45.165M127.690-45.390Q128.128-45.390 128.341-45.765Q128.555-46.139 128.604-46.606Q128.654-47.072 128.654-47.650Q128.654-48.203 128.604-48.631Q128.555-49.058 128.343-49.393Q128.131-49.728 127.690-49.728Q127.348-49.728 127.145-49.521Q126.942-49.314 126.854-49.002Q126.767-48.689 126.745-48.373Q126.723-48.056 126.723-47.650Q126.723-47.233 126.745-46.891Q126.767-46.549 126.856-46.201Q126.945-45.852 127.150-45.621Q127.355-45.390 127.690-45.390M130.985-43.555L129.908-43.555L129.908-43.897L130.643-43.897L130.643-50.213L129.908-50.213L129.908-50.555L130.985-50.555L130.985-43.555M132.660-45.725Q132.660-45.893 132.783-46.016Q132.906-46.139 133.080-46.139Q133.248-46.139 133.371-46.016Q133.494-45.893 133.494-45.725Q133.494-45.551 133.371-45.428Q133.248-45.305 133.080-45.305Q132.906-45.305 132.783-45.428Q132.660-45.551 132.660-45.725M132.660-47.909Q132.660-48.077 132.783-48.200Q132.906-48.323 133.080-48.323Q133.248-48.323 133.371-48.200Q133.494-48.077 133.494-47.909Q133.494-47.735 133.371-47.612Q133.248-47.489 133.080-47.489Q132.906-47.489 132.783-47.612Q132.660-47.735 132.660-47.909",[936],[920,3278,3279],{"transform":3236},[925,3280],{"d":3281,"fill":3233,"stroke":3233,"className":3282,"style":1422},"M138.088-45.312L138.088-46.375Q138.088-46.399 138.116-46.426Q138.143-46.453 138.167-46.453L138.276-46.453Q138.341-46.453 138.355-46.395Q138.451-45.961 138.697-45.710Q138.943-45.459 139.357-45.459Q139.698-45.459 139.951-45.592Q140.204-45.725 140.204-46.033Q140.204-46.190 140.110-46.305Q140.016-46.419 139.878-46.488Q139.739-46.556 139.572-46.594L138.991-46.693Q138.635-46.761 138.362-46.982Q138.088-47.202 138.088-47.544Q138.088-47.793 138.200-47.968Q138.311-48.142 138.497-48.241Q138.683-48.340 138.899-48.383Q139.114-48.426 139.357-48.426Q139.770-48.426 140.050-48.244L140.266-48.419Q140.276-48.422 140.283-48.424Q140.290-48.426 140.300-48.426L140.351-48.426Q140.378-48.426 140.402-48.402Q140.426-48.378 140.426-48.350L140.426-47.503Q140.426-47.482 140.402-47.455Q140.378-47.428 140.351-47.428L140.238-47.428Q140.211-47.428 140.185-47.453Q140.160-47.479 140.160-47.503Q140.160-47.739 140.054-47.903Q139.948-48.067 139.765-48.149Q139.582-48.231 139.350-48.231Q139.022-48.231 138.765-48.128Q138.509-48.026 138.509-47.749Q138.509-47.554 138.692-47.445Q138.875-47.335 139.104-47.294L139.678-47.188Q139.924-47.140 140.138-47.012Q140.351-46.884 140.488-46.681Q140.625-46.477 140.625-46.228Q140.625-45.715 140.259-45.476Q139.893-45.237 139.357-45.237Q138.861-45.237 138.529-45.531L138.263-45.257Q138.242-45.237 138.215-45.237L138.167-45.237Q138.143-45.237 138.116-45.264Q138.088-45.291 138.088-45.312M142.850-45.305L141.267-45.305L141.267-45.585Q141.496-45.585 141.645-45.619Q141.794-45.654 141.794-45.794L141.794-49.413Q141.794-49.683 141.686-49.745Q141.578-49.806 141.267-49.806L141.267-50.087L142.347-50.162L142.347-46.874L143.332-47.643Q143.537-47.780 143.537-47.930Q143.537-47.974 143.496-48.009Q143.455-48.043 143.410-48.043L143.410-48.323L144.774-48.323L144.774-48.043Q144.285-48.043 143.766-47.643L143.209-47.209L144.186-45.985Q144.388-45.739 144.521-45.662Q144.654-45.585 144.941-45.585L144.941-45.305L143.509-45.305L143.509-45.585Q143.697-45.585 143.697-45.698Q143.697-45.794 143.544-45.985L142.809-46.894L142.327-46.515L142.327-45.794Q142.327-45.657 142.475-45.621Q142.624-45.585 142.850-45.585L142.850-45.305M147.071-45.305L145.519-45.305L145.519-45.585Q145.745-45.585 145.893-45.619Q146.042-45.654 146.042-45.794L146.042-47.643Q146.042-47.831 145.994-47.915Q145.946-47.998 145.849-48.017Q145.752-48.036 145.540-48.036L145.540-48.316L146.596-48.391L146.596-45.794Q146.596-45.654 146.727-45.619Q146.859-45.585 147.071-45.585L147.071-45.305M145.799-49.612Q145.799-49.783 145.922-49.902Q146.045-50.022 146.216-50.022Q146.384-50.022 146.507-49.902Q146.630-49.783 146.630-49.612Q146.630-49.437 146.507-49.314Q146.384-49.191 146.216-49.191Q146.045-49.191 145.922-49.314Q145.799-49.437 145.799-49.612M149.361-43.948L147.731-43.948L147.731-44.228Q147.960-44.228 148.108-44.263Q148.257-44.297 148.257-44.437L148.257-47.783Q148.257-47.954 148.120-47.995Q147.983-48.036 147.731-48.036L147.731-48.316L148.811-48.391L148.811-47.985Q149.033-48.186 149.320-48.289Q149.607-48.391 149.915-48.391Q150.342-48.391 150.706-48.178Q151.070-47.964 151.284-47.600Q151.497-47.236 151.497-46.816Q151.497-46.371 151.258-46.007Q151.019-45.643 150.626-45.440Q150.232-45.237 149.788-45.237Q149.522-45.237 149.274-45.337Q149.026-45.438 148.838-45.619L148.838-44.437Q148.838-44.300 148.987-44.264Q149.135-44.228 149.361-44.228L149.361-43.948M148.838-47.636L148.838-46.026Q148.971-45.773 149.214-45.616Q149.457-45.459 149.733-45.459Q150.062-45.459 150.315-45.660Q150.567-45.862 150.701-46.180Q150.834-46.498 150.834-46.816Q150.834-47.045 150.769-47.274Q150.704-47.503 150.576-47.701Q150.448-47.899 150.253-48.019Q150.058-48.138 149.826-48.138Q149.532-48.138 149.264-48.009Q148.995-47.879 148.838-47.636M153.777-43.948L152.147-43.948L152.147-44.228Q152.376-44.228 152.524-44.263Q152.673-44.297 152.673-44.437L152.673-47.783Q152.673-47.954 152.536-47.995Q152.399-48.036 152.147-48.036L152.147-48.316L153.227-48.391L153.227-47.985Q153.449-48.186 153.736-48.289Q154.023-48.391 154.331-48.391Q154.758-48.391 155.122-48.178Q155.486-47.964 155.700-47.600Q155.913-47.236 155.913-46.816Q155.913-46.371 155.674-46.007Q155.435-45.643 155.042-45.440Q154.649-45.237 154.204-45.237Q153.938-45.237 153.690-45.337Q153.442-45.438 153.254-45.619L153.254-44.437Q153.254-44.300 153.403-44.264Q153.551-44.228 153.777-44.228L153.777-43.948M153.254-47.636L153.254-46.026Q153.387-45.773 153.630-45.616Q153.873-45.459 154.149-45.459Q154.478-45.459 154.731-45.660Q154.983-45.862 155.117-46.180Q155.250-46.498 155.250-46.816Q155.250-47.045 155.185-47.274Q155.120-47.503 154.992-47.701Q154.864-47.899 154.669-48.019Q154.474-48.138 154.242-48.138Q153.948-48.138 153.680-48.009Q153.411-47.879 153.254-47.636",[936],[920,3284,3285],{"transform":3236},[925,3286],{"d":3287,"fill":3233,"stroke":3233,"className":3288,"style":1422},"M156.729-46.840Q156.729-47.161 156.854-47.450Q156.979-47.739 157.205-47.962Q157.430-48.186 157.726-48.306Q158.021-48.426 158.339-48.426Q158.667-48.426 158.929-48.326Q159.190-48.227 159.366-48.045Q159.542-47.862 159.636-47.604Q159.730-47.346 159.730-47.014Q159.730-46.922 159.648-46.901L157.393-46.901L157.393-46.840Q157.393-46.252 157.676-45.869Q157.960-45.486 158.527-45.486Q158.849-45.486 159.117-45.679Q159.385-45.872 159.474-46.187Q159.481-46.228 159.556-46.242L159.648-46.242Q159.730-46.218 159.730-46.146Q159.730-46.139 159.724-46.112Q159.611-45.715 159.240-45.476Q158.869-45.237 158.445-45.237Q158.008-45.237 157.608-45.445Q157.208-45.654 156.969-46.021Q156.729-46.388 156.729-46.840M157.399-47.110L159.214-47.110Q159.214-47.387 159.117-47.639Q159.019-47.892 158.821-48.048Q158.623-48.203 158.339-48.203Q158.062-48.203 157.849-48.045Q157.635-47.886 157.517-47.631Q157.399-47.376 157.399-47.110M160.318-46.816Q160.318-47.154 160.458-47.445Q160.599-47.735 160.843-47.949Q161.087-48.162 161.392-48.277Q161.696-48.391 162.020-48.391Q162.290-48.391 162.554-48.292Q162.817-48.193 163.008-48.015L163.008-49.413Q163.008-49.683 162.901-49.745Q162.793-49.806 162.482-49.806L162.482-50.087L163.559-50.162L163.559-45.978Q163.559-45.790 163.613-45.707Q163.668-45.623 163.769-45.604Q163.870-45.585 164.085-45.585L164.085-45.305L162.977-45.237L162.977-45.654Q162.560-45.237 161.935-45.237Q161.504-45.237 161.132-45.449Q160.759-45.660 160.539-46.021Q160.318-46.382 160.318-46.816M161.993-45.459Q162.202-45.459 162.388-45.531Q162.574-45.602 162.728-45.739Q162.882-45.876 162.977-46.054L162.977-47.663Q162.892-47.810 162.747-47.930Q162.602-48.050 162.432-48.109Q162.263-48.169 162.082-48.169Q161.521-48.169 161.253-47.780Q160.985-47.390 160.985-46.809Q160.985-46.238 161.219-45.848Q161.453-45.459 161.993-45.459",[936],[1032,3290,3292,3293,3315,3316,3331,3332,3356,3357,3429],{"className":3291},[1035],"Processing order of ",[392,3294,3296],{"className":3295},[395],[392,3297,3299],{"className":3298,"ariaHidden":400},[399],[392,3300,3302,3305],{"className":3301},[404],[392,3303],{"className":3304,"style":2036},[408],[392,3306,3308],{"className":3307},[493,494],[392,3309,3311],{"className":3310},[413,498],[392,3312,3314],{"className":3313},[413],"Build-Max-Heap"," on ",[392,3317,3319],{"className":3318},[395],[392,3320,3322],{"className":3321,"ariaHidden":400},[399],[392,3323,3325,3328],{"className":3324},[404],[392,3326],{"className":3327,"style":705},[408],[392,3329,1111],{"className":3330},[413]," nodes. Leaves ",[392,3333,3335],{"className":3334},[395],[392,3336,3338],{"className":3337,"ariaHidden":400},[399],[392,3339,3341,3344,3347,3350,3353],{"className":3340},[404],[392,3342],{"className":3343,"style":409},[408],[392,3345,651],{"className":3346},[413,423],[392,3348,655],{"className":3349},[418],[392,3351,2957],{"className":3352},[413],[392,3354,666],{"className":3355},[449]," are trivial heaps and skipped (grey); the internal nodes ",[392,3358,3360],{"className":3359},[395],[392,3361,3363],{"className":3362,"ariaHidden":400},[399],[392,3364,3366,3369,3372,3375,3378,3381,3384,3387,3390,3393,3396,3399,3402,3405,3408,3411,3414,3417,3420,3423,3426],{"className":3365},[404],[392,3367],{"className":3368,"style":409},[408],[392,3370,651],{"className":3371},[413,423],[392,3373,655],{"className":3374},[418],[392,3376,1780],{"className":3377},[413],[392,3379,666],{"className":3380},[449],[392,3382,788],{"className":3383},[787],[392,3385],{"className":3386,"style":429},[428],[392,3388,651],{"className":3389},[413,423],[392,3391,655],{"className":3392},[418],[392,3394,1188],{"className":3395},[413],[392,3397,666],{"className":3398},[449],[392,3400,788],{"className":3401},[787],[392,3403],{"className":3404,"style":429},[428],[392,3406,3013],{"className":3407},[763],[392,3409],{"className":3410,"style":429},[428],[392,3412,788],{"className":3413},[787],[392,3415],{"className":3416,"style":429},[428],[392,3418,651],{"className":3419},[413,423],[392,3421,655],{"className":3422},[418],[392,3424,575],{"className":3425},[413],[392,3427,666],{"className":3428},[449]," are sifted down in decreasing index (red labels), each after its children are already heaps.",[381,3431,3432],{},"The loop invariant makes the correctness immediate.",[577,3434,3435],{"type":579},[381,3436,3437,3440,3441],{},[550,3438,3439],{},"Invariant (Build-heap loop)."," ",[545,3442,3443,3444,3527],{},"At the start of each iteration, every node ",[392,3445,3447],{"className":3446},[395],[392,3448,3450,3468,3496],{"className":3449,"ariaHidden":400},[399],[392,3451,3453,3456,3459,3462,3465],{"className":3452},[404],[392,3454],{"className":3455,"style":874},[408],[392,3457,739],{"className":3458},[413,423],[392,3460],{"className":3461,"style":884},[428],[392,3463,889],{"className":3464},[888],[392,3466],{"className":3467,"style":884},[428],[392,3469,3471,3475,3478,3481,3484,3487,3490,3493],{"className":3470},[404],[392,3472],{"className":3473,"style":3474},[408],"height:0.854em;vertical-align:-0.1944em;",[392,3476,575],{"className":3477},[413],[392,3479,788],{"className":3480},[787],[392,3482],{"className":3483,"style":429},[428],[392,3485,739],{"className":3486},[413,423],[392,3488],{"className":3489,"style":884},[428],[392,3491,889],{"className":3492},[888],[392,3494],{"className":3495,"style":884},[428],[392,3497,3499,3503,3506,3509,3512,3515,3518,3521,3524],{"className":3498},[404],[392,3500],{"className":3501,"style":3502},[408],"height:0.8389em;vertical-align:-0.1944em;",[392,3504,830],{"className":3505},[413],[392,3507,788],{"className":3508},[787],[392,3510],{"className":3511,"style":429},[428],[392,3513,3013],{"className":3514},[763],[392,3516],{"className":3517,"style":429},[428],[392,3519,788],{"className":3520},[787],[392,3522],{"className":3523,"style":429},[428],[392,3525,424],{"className":3526},[413,423]," is the root\nof a max-heap.",[381,3529,3530,3531,3579,3580,3595,3596,3611,3612,3651,3652,3667,3668,3702,3703,3718],{},"Initialization: nodes ",[392,3532,3534],{"className":3533},[395],[392,3535,3537,3567],{"className":3536,"ariaHidden":400},[399],[392,3538,3540,3543,3558,3561,3564],{"className":3539},[404],[392,3541],{"className":3542,"style":409},[408],[392,3544,3546,3549,3552,3555],{"className":3545},[763],[392,3547,769],{"className":3548,"style":768},[418,767],[392,3550,424],{"className":3551},[413,423],[392,3553,776],{"className":3554},[413],[392,3556,780],{"className":3557,"style":768},[449,767],[392,3559],{"className":3560,"style":884},[428],[392,3562,889],{"className":3563},[888],[392,3565],{"className":3566,"style":884},[428],[392,3568,3570,3573,3576],{"className":3569},[404],[392,3571],{"className":3572,"style":705},[408],[392,3574,659],{"className":3575},[413],[392,3577,424],{"className":3578},[413,423]," are leaves, hence trivial heaps.\nMaintenance: the children of ",[392,3581,3583],{"className":3582},[395],[392,3584,3586],{"className":3585,"ariaHidden":400},[399],[392,3587,3589,3592],{"className":3588},[404],[392,3590],{"className":3591,"style":1227},[408],[392,3593,739],{"className":3594},[413,423]," are numbered higher than ",[392,3597,3599],{"className":3598},[395],[392,3600,3602],{"className":3601,"ariaHidden":400},[399],[392,3603,3605,3608],{"className":3604},[404],[392,3606],{"className":3607,"style":1227},[408],[392,3609,739],{"className":3610},[413,423],", so by the\ninvariant they head max-heaps, precisely what ",[392,3613,3615],{"className":3614},[395],[392,3616,3618],{"className":3617,"ariaHidden":400},[399],[392,3619,3621,3624,3633,3636,3639,3642,3645,3648],{"className":3620},[404],[392,3622],{"className":3623,"style":409},[408],[392,3625,3627],{"className":3626},[493,494],[392,3628,3630],{"className":3629},[413,498],[392,3631,2046],{"className":3632},[413],[392,3634,419],{"className":3635},[418],[392,3637,651],{"className":3638},[413,423],[392,3640,788],{"className":3641},[787],[392,3643],{"className":3644,"style":429},[428],[392,3646,739],{"className":3647},[413,423],[392,3649,450],{"className":3650},[449]," needs, and\nit extends the property to ",[392,3653,3655],{"className":3654},[395],[392,3656,3658],{"className":3657,"ariaHidden":400},[399],[392,3659,3661,3664],{"className":3660},[404],[392,3662],{"className":3663,"style":1227},[408],[392,3665,739],{"className":3666},[413,423],". Termination: when ",[392,3669,3671],{"className":3670},[395],[392,3672,3674,3692],{"className":3673,"ariaHidden":400},[399],[392,3675,3677,3680,3683,3686,3689],{"className":3676},[404],[392,3678],{"className":3679,"style":1227},[408],[392,3681,739],{"className":3682},[413,423],[392,3684],{"className":3685,"style":746},[428],[392,3687,750],{"className":3688},[602],[392,3690],{"className":3691,"style":746},[428],[392,3693,3695,3698],{"className":3694},[404],[392,3696],{"className":3697,"style":705},[408],[392,3699,3701],{"className":3700},[413],"0",", node ",[392,3704,3706],{"className":3705},[395],[392,3707,3709],{"className":3708,"ariaHidden":400},[399],[392,3710,3712,3715],{"className":3711},[404],[392,3713],{"className":3714,"style":705},[408],[392,3716,575],{"className":3717},[413]," (and all\nothers) roots a max-heap.",[3720,3721,3723,3724,3748,3749],"h3",{"id":3722},"why-it-is-on-not-onlogn","Why it is ",[392,3725,3727],{"className":3726},[395],[392,3728,3730],{"className":3729,"ariaHidden":400},[399],[392,3731,3733,3736,3739,3742,3745],{"className":3732},[404],[392,3734],{"className":3735,"style":409},[408],[392,3737,2248],{"className":3738,"style":2247},[413,423],[392,3740,419],{"className":3741},[418],[392,3743,424],{"className":3744},[413,423],[392,3746,450],{"className":3747},[449],", not ",[392,3750,3752],{"className":3751},[395],[392,3753,3755],{"className":3754,"ariaHidden":400},[399],[392,3756,3758,3761,3764,3767,3770,3773,3779,3782,3785],{"className":3757},[404],[392,3759],{"className":3760,"style":409},[408],[392,3762,2248],{"className":3763,"style":2247},[413,423],[392,3765,419],{"className":3766},[418],[392,3768,424],{"className":3769},[413,423],[392,3771],{"className":3772,"style":429},[428],[392,3774,3776],{"className":3775},[433],[392,3777,439],{"className":3778,"style":438},[413,437],[392,3780],{"className":3781,"style":429},[428],[392,3783,424],{"className":3784},[413,423],[392,3786,450],{"className":3787},[449],[381,3789,3790,3791,3794,3795,3819,3820,3841,3842,3875,3876,3915,3916,3919,3920,3941],{},"The easy ",[384,3792,3793],{"href":17},"bound"," is immediate: there are ",[392,3796,3798],{"className":3797},[395],[392,3799,3801],{"className":3800,"ariaHidden":400},[399],[392,3802,3804,3807,3810,3813,3816],{"className":3803},[404],[392,3805],{"className":3806,"style":409},[408],[392,3808,2248],{"className":3809,"style":2247},[413,423],[392,3811,419],{"className":3812},[418],[392,3814,424],{"className":3815},[413,423],[392,3817,450],{"className":3818},[449]," calls to ",[392,3821,3823],{"className":3822},[395],[392,3824,3826],{"className":3825,"ariaHidden":400},[399],[392,3827,3829,3832],{"className":3828},[404],[392,3830],{"className":3831,"style":2036},[408],[392,3833,3835],{"className":3834},[493,494],[392,3836,3838],{"className":3837},[413,498],[392,3839,2046],{"className":3840},[413],", each costing\n",[392,3843,3845],{"className":3844},[395],[392,3846,3848],{"className":3847,"ariaHidden":400},[399],[392,3849,3851,3854,3857,3860,3866,3869,3872],{"className":3850},[404],[392,3852],{"className":3853,"style":409},[408],[392,3855,2248],{"className":3856,"style":2247},[413,423],[392,3858,419],{"className":3859},[418],[392,3861,3863],{"className":3862},[433],[392,3864,439],{"className":3865,"style":438},[413,437],[392,3867],{"className":3868,"style":429},[428],[392,3870,424],{"className":3871},[413,423],[392,3873,450],{"className":3874},[449],", for ",[392,3877,3879],{"className":3878},[395],[392,3880,3882],{"className":3881,"ariaHidden":400},[399],[392,3883,3885,3888,3891,3894,3897,3900,3906,3909,3912],{"className":3884},[404],[392,3886],{"className":3887,"style":409},[408],[392,3889,2248],{"className":3890,"style":2247},[413,423],[392,3892,419],{"className":3893},[418],[392,3895,424],{"className":3896},[413,423],[392,3898],{"className":3899,"style":429},[428],[392,3901,3903],{"className":3902},[433],[392,3904,439],{"className":3905,"style":438},[413,437],[392,3907],{"className":3908,"style":429},[428],[392,3910,424],{"className":3911},[413,423],[392,3913,450],{"className":3914},[449],". That is correct but loose, and the looseness\nmatters. Most nodes are near the ",[545,3917,3918],{},"bottom"," of the tree, where ",[392,3921,3923],{"className":3922},[395],[392,3924,3926],{"className":3925,"ariaHidden":400},[399],[392,3927,3929,3932],{"className":3928},[404],[392,3930],{"className":3931,"style":2036},[408],[392,3933,3935],{"className":3934},[493,494],[392,3936,3938],{"className":3937},[413,498],[392,3939,2046],{"className":3940},[413]," has\nalmost nothing to do.",[381,3943,3944,3945,3960,3961,4040,4041,4057,4058,4073,4074,4098],{},"A heap of ",[392,3946,3948],{"className":3947},[395],[392,3949,3951],{"className":3950,"ariaHidden":400},[399],[392,3952,3954,3957],{"className":3953},[404],[392,3955],{"className":3956,"style":624},[408],[392,3958,424],{"className":3959},[413,423]," nodes has at most ",[392,3962,3964],{"className":3963},[395],[392,3965,3967],{"className":3966,"ariaHidden":400},[399],[392,3968,3970,3974],{"className":3969},[404],[392,3971],{"className":3972,"style":3973},[408],"height:1.2em;vertical-align:-0.35em;",[392,3975,3977,3986,3989,3993,4033],{"className":3976},[763],[392,3978,3980],{"className":3979,"style":768},[418,767],[392,3981,3985],{"className":3982},[3983,3984],"delimsizing","size1","⌈",[392,3987,424],{"className":3988},[413,423],[392,3990,3992],{"className":3991},[413],"\u002F",[392,3994,3996,3999],{"className":3995},[413],[392,3997,830],{"className":3998},[413],[392,4000,4002],{"className":4001},[1917],[392,4003,4005],{"className":4004},[1921],[392,4006,4008],{"className":4007},[1926],[392,4009,4012],{"className":4010,"style":4011},[1930],"height:0.8491em;",[392,4013,4015,4018],{"style":4014},"top:-3.063em;margin-right:0.05em;",[392,4016],{"className":4017,"style":1939},[1938],[392,4019,4021],{"className":4020},[1943,1944,1945,1946],[392,4022,4024,4027,4030],{"className":4023},[413,1946],[392,4025,2348],{"className":4026},[413,423,1946],[392,4028,889],{"className":4029},[888,1946],[392,4031,575],{"className":4032},[413,1946],[392,4034,4036],{"className":4035,"style":768},[449,767],[392,4037,4039],{"className":4038},[3983,3984],"⌉"," nodes at height ",[392,4042,4044],{"className":4043},[395],[392,4045,4047],{"className":4046,"ariaHidden":400},[399],[392,4048,4050,4054],{"className":4049},[404],[392,4051],{"className":4052,"style":4053},[408],"height:0.6944em;",[392,4055,2348],{"className":4056},[413,423],", and a\nsift-down from height ",[392,4059,4061],{"className":4060},[395],[392,4062,4064],{"className":4063,"ariaHidden":400},[399],[392,4065,4067,4070],{"className":4066},[404],[392,4068],{"className":4069,"style":4053},[408],[392,4071,2348],{"className":4072},[413,423]," costs ",[392,4075,4077],{"className":4076},[395],[392,4078,4080],{"className":4079,"ariaHidden":400},[399],[392,4081,4083,4086,4089,4092,4095],{"className":4082},[404],[392,4084],{"className":4085,"style":409},[408],[392,4087,2248],{"className":4088,"style":2247},[413,423],[392,4090,419],{"className":4091},[418],[392,4093,2348],{"className":4094},[413,423],[392,4096,450],{"className":4097},[449],". Summing the real work over all heights,",[392,4100,4102],{"className":4101},[713],[392,4103,4105],{"className":4104},[395],[392,4106,4108,4420],{"className":4107,"ariaHidden":400},[399],[392,4109,4111,4115,4259,4262,4387,4390,4393,4396,4399,4402,4405,4408,4411,4414,4417],{"className":4110},[404],[392,4112],{"className":4113,"style":4114},[408],"height:3.2742em;vertical-align:-1.3021em;",[392,4116,4119],{"className":4117},[433,4118],"op-limits",[392,4120,4122,4250],{"className":4121},[1921,1922],[392,4123,4125,4247],{"className":4124},[1926],[392,4126,4129,4151,4165],{"className":4127,"style":4128},[1930],"height:1.9721em;",[392,4130,4132,4136],{"style":4131},"top:-1.8479em;margin-left:0em;",[392,4133],{"className":4134,"style":4135},[1938],"height:3.05em;",[392,4137,4139],{"className":4138},[1943,1944,1945,1946],[392,4140,4142,4145,4148],{"className":4141},[413,1946],[392,4143,2348],{"className":4144},[413,423,1946],[392,4146,750],{"className":4147},[602,1946],[392,4149,3701],{"className":4150},[413,1946],[392,4152,4154,4157],{"style":4153},"top:-3.05em;",[392,4155],{"className":4156,"style":4135},[1938],[392,4158,4159],{},[392,4160,4164],{"className":4161},[433,4162,4163],"op-symbol","large-op","∑",[392,4166,4168,4171],{"style":4167},"top:-4.3971em;margin-left:0em;",[392,4169],{"className":4170,"style":4135},[1938],[392,4172,4174],{"className":4173},[1943,1944,1945,1946],[392,4175,4177],{"className":4176},[413,1946],[392,4178,4180,4186,4234,4238,4241],{"className":4179},[763,1946],[392,4181,4183],{"className":4182,"style":768},[418,1946,767],[392,4184,769],{"className":4185},[1946],[392,4187,4189,4195],{"className":4188},[433,1946],[392,4190,4192],{"className":4191},[433,1946],[392,4193,439],{"className":4194,"style":438},[413,437,1946],[392,4196,4198],{"className":4197},[1917],[392,4199,4201,4225],{"className":4200},[1921,1922],[392,4202,4204,4222],{"className":4203},[1926],[392,4205,4208],{"className":4206,"style":4207},[1930],"height:0.1944em;",[392,4209,4211,4215],{"style":4210},"top:-2.2341em;margin-right:0.0714em;",[392,4212],{"className":4213,"style":4214},[1938],"height:2.5em;",[392,4216,4219],{"className":4217},[1943,4218,3984,1946],"reset-size3",[392,4220,830],{"className":4221},[413,1946],[392,4223,1954],{"className":4224},[1953],[392,4226,4228],{"className":4227},[1926],[392,4229,4232],{"className":4230,"style":4231},[1930],"height:0.2659em;",[392,4233],{},[392,4235],{"className":4236,"style":4237},[428,1946],"margin-right:0.1952em;",[392,4239,424],{"className":4240},[413,423,1946],[392,4242,4244],{"className":4243,"style":768},[449,1946,767],[392,4245,780],{"className":4246},[1946],[392,4248,1954],{"className":4249},[1953],[392,4251,4253],{"className":4252},[1926],[392,4254,4257],{"className":4255,"style":4256},[1930],"height:1.3021em;",[392,4258],{},[392,4260],{"className":4261,"style":429},[428],[392,4263,4265,4272,4381],{"className":4264},[763],[392,4266,4268],{"className":4267,"style":768},[418,767],[392,4269,3985],{"className":4270},[3983,4271],"size2",[392,4273,4275,4279,4378],{"className":4274},[413],[392,4276],{"className":4277},[418,4278],"nulldelimiter",[392,4280,4283],{"className":4281},[4282],"mfrac",[392,4284,4286,4369],{"className":4285},[1921,1922],[392,4287,4289,4366],{"className":4288},[1926],[392,4290,4293,4343,4354],{"className":4291,"style":4292},[1930],"height:1.1076em;",[392,4294,4296,4300],{"style":4295},"top:-2.314em;",[392,4297],{"className":4298,"style":4299},[1938],"height:3em;",[392,4301,4303],{"className":4302},[413],[392,4304,4306,4309],{"className":4305},[413],[392,4307,830],{"className":4308},[413],[392,4310,4312],{"className":4311},[1917],[392,4313,4315],{"className":4314},[1921],[392,4316,4318],{"className":4317},[1926],[392,4319,4322],{"className":4320,"style":4321},[1930],"height:0.7751em;",[392,4323,4325,4328],{"style":4324},"top:-2.989em;margin-right:0.05em;",[392,4326],{"className":4327,"style":1939},[1938],[392,4329,4331],{"className":4330},[1943,1944,1945,1946],[392,4332,4334,4337,4340],{"className":4333},[413,1946],[392,4335,2348],{"className":4336},[413,423,1946],[392,4338,889],{"className":4339},[888,1946],[392,4341,575],{"className":4342},[413,1946],[392,4344,4346,4349],{"style":4345},"top:-3.23em;",[392,4347],{"className":4348,"style":4299},[1938],[392,4350],{"className":4351,"style":4353},[4352],"frac-line","border-bottom-width:0.04em;",[392,4355,4357,4360],{"style":4356},"top:-3.677em;",[392,4358],{"className":4359,"style":4299},[1938],[392,4361,4363],{"className":4362},[413],[392,4364,424],{"className":4365},[413,423],[392,4367,1954],{"className":4368},[1953],[392,4370,4372],{"className":4371},[1926],[392,4373,4376],{"className":4374,"style":4375},[1930],"height:0.686em;",[392,4377],{},[392,4379],{"className":4380},[449,4278],[392,4382,4384],{"className":4383,"style":768},[449,767],[392,4385,4039],{"className":4386},[3983,4271],[392,4388],{"className":4389,"style":429},[428],[392,4391],{"className":4392,"style":429},[428],[392,4394,2248],{"className":4395,"style":2247},[413,423],[392,4397,419],{"className":4398},[418],[392,4400,2348],{"className":4401},[413,423],[392,4403,450],{"className":4404},[449],[392,4406],{"className":4407,"style":746},[428],[392,4409],{"className":4410,"style":746},[428],[392,4412,750],{"className":4413},[602],[392,4415],{"className":4416,"style":746},[428],[392,4418],{"className":4419,"style":746},[428],[392,4421,4423,4427,4430,4434,4437,4624,4627],{"className":4422},[404],[392,4424],{"className":4425,"style":4426},[408],"height:3.0521em;vertical-align:-1.3021em;",[392,4428,2248],{"className":4429,"style":2247},[413,423],[392,4431],{"className":4432,"style":4433},[428],"margin-right:-0.1667em;",[392,4435],{"className":4436,"style":429},[428],[392,4438,4440,4447,4450,4453,4523,4526,4618],{"className":4439},[763],[392,4441,4443],{"className":4442,"style":768},[418,767],[392,4444,419],{"className":4445},[3983,4446],"size4",[392,4448,424],{"className":4449},[413,423],[392,4451],{"className":4452,"style":429},[428],[392,4454,4456],{"className":4455},[433,4118],[392,4457,4459,4515],{"className":4458},[1921,1922],[392,4460,4462,4512],{"className":4461},[1926],[392,4463,4466,4486,4496],{"className":4464,"style":4465},[1930],"height:1.6514em;",[392,4467,4468,4471],{"style":4131},[392,4469],{"className":4470,"style":4135},[1938],[392,4472,4474],{"className":4473},[1943,1944,1945,1946],[392,4475,4477,4480,4483],{"className":4476},[413,1946],[392,4478,2348],{"className":4479},[413,423,1946],[392,4481,750],{"className":4482},[602,1946],[392,4484,3701],{"className":4485},[413,1946],[392,4487,4488,4491],{"style":4153},[392,4489],{"className":4490,"style":4135},[1938],[392,4492,4493],{},[392,4494,4164],{"className":4495},[433,4162,4163],[392,4497,4499,4502],{"style":4498},"top:-4.3em;margin-left:0em;",[392,4500],{"className":4501,"style":4135},[1938],[392,4503,4505],{"className":4504},[1943,1944,1945,1946],[392,4506,4508],{"className":4507},[413,1946],[392,4509,4511],{"className":4510},[413,1946],"∞",[392,4513,1954],{"className":4514},[1953],[392,4516,4518],{"className":4517},[1926],[392,4519,4521],{"className":4520,"style":4256},[1930],[392,4522],{},[392,4524],{"className":4525,"style":429},[428],[392,4527,4529,4532,4615],{"className":4528},[413],[392,4530],{"className":4531},[418,4278],[392,4533,4535],{"className":4534},[4282],[392,4536,4538,4607],{"className":4537},[1921,1922],[392,4539,4541,4604],{"className":4540},[1926],[392,4542,4545,4585,4593],{"className":4543,"style":4544},[1930],"height:1.3714em;",[392,4546,4547,4550],{"style":4295},[392,4548],{"className":4549,"style":4299},[1938],[392,4551,4553],{"className":4552},[413],[392,4554,4556,4559],{"className":4555},[413],[392,4557,830],{"className":4558},[413],[392,4560,4562],{"className":4561},[1917],[392,4563,4565],{"className":4564},[1921],[392,4566,4568],{"className":4567},[1926],[392,4569,4571],{"className":4570,"style":4321},[1930],[392,4572,4573,4576],{"style":4324},[392,4574],{"className":4575,"style":1939},[1938],[392,4577,4579],{"className":4578},[1943,1944,1945,1946],[392,4580,4582],{"className":4581},[413,1946],[392,4583,2348],{"className":4584},[413,423,1946],[392,4586,4587,4590],{"style":4345},[392,4588],{"className":4589,"style":4299},[1938],[392,4591],{"className":4592,"style":4353},[4352],[392,4594,4595,4598],{"style":4356},[392,4596],{"className":4597,"style":4299},[1938],[392,4599,4601],{"className":4600},[413],[392,4602,2348],{"className":4603},[413,423],[392,4605,1954],{"className":4606},[1953],[392,4608,4610],{"className":4609},[1926],[392,4611,4613],{"className":4612,"style":4375},[1930],[392,4614],{},[392,4616],{"className":4617},[449,4278],[392,4619,4621],{"className":4620,"style":768},[449,767],[392,4622,450],{"className":4623},[3983,4446],[392,4625],{"className":4626,"style":429},[428],[392,4628,1211],{"className":4629},[413],[381,4631,4632,4633,4738,4739,4754,4755,4929,4930,5033,5034,1211],{},"The series ",[392,4634,4636],{"className":4635},[395],[392,4637,4639],{"className":4638,"ariaHidden":400},[399],[392,4640,4642,4646,4700,4703,4706,4709],{"className":4641},[404],[392,4643],{"className":4644,"style":4645},[408],"height:1.244em;vertical-align:-0.3949em;",[392,4647,4649,4654],{"className":4648},[433],[392,4650,4164],{"className":4651,"style":4653},[433,4162,4652],"small-op","position:relative;top:0em;",[392,4655,4657],{"className":4656},[1917],[392,4658,4660,4691],{"className":4659},[1921,1922],[392,4661,4663,4688],{"className":4662},[1926],[392,4664,4667],{"className":4665,"style":4666},[1930],"height:0.1864em;",[392,4668,4670,4673],{"style":4669},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[392,4671],{"className":4672,"style":1939},[1938],[392,4674,4676],{"className":4675},[1943,1944,1945,1946],[392,4677,4679,4682,4685],{"className":4678},[413,1946],[392,4680,2348],{"className":4681},[413,423,1946],[392,4683,603],{"className":4684},[602,1946],[392,4686,3701],{"className":4687},[413,1946],[392,4689,1954],{"className":4690},[1953],[392,4692,4694],{"className":4693},[1926],[392,4695,4698],{"className":4696,"style":4697},[1930],"height:0.3949em;",[392,4699],{},[392,4701],{"className":4702,"style":429},[428],[392,4704,2348],{"className":4705},[413,423],[392,4707,3992],{"className":4708},[413],[392,4710,4712,4715],{"className":4711},[413],[392,4713,830],{"className":4714},[413],[392,4716,4718],{"className":4717},[1917],[392,4719,4721],{"className":4720},[1921],[392,4722,4724],{"className":4723},[1926],[392,4725,4727],{"className":4726,"style":4011},[1930],[392,4728,4729,4732],{"style":4014},[392,4730],{"className":4731,"style":1939},[1938],[392,4733,4735],{"className":4734},[1943,1944,1945,1946],[392,4736,2348],{"className":4737},[413,423,1946]," converges to ",[392,4740,4742],{"className":4741},[395],[392,4743,4745],{"className":4744,"ariaHidden":400},[399],[392,4746,4748,4751],{"className":4747},[404],[392,4749],{"className":4750,"style":705},[408],[392,4752,830],{"className":4753},[413],", using the standard\nidentity ",[392,4756,4758],{"className":4757},[395],[392,4759,4761,4861,4889],{"className":4760,"ariaHidden":400},[399],[392,4762,4764,4767,4816,4819,4822,4852,4855,4858],{"className":4763},[404],[392,4765],{"className":4766,"style":4645},[408],[392,4768,4770,4773],{"className":4769},[433],[392,4771,4164],{"className":4772,"style":4653},[433,4162,4652],[392,4774,4776],{"className":4775},[1917],[392,4777,4779,4808],{"className":4778},[1921,1922],[392,4780,4782,4805],{"className":4781},[1926],[392,4783,4785],{"className":4784,"style":4666},[1930],[392,4786,4787,4790],{"style":4669},[392,4788],{"className":4789,"style":1939},[1938],[392,4791,4793],{"className":4792},[1943,1944,1945,1946],[392,4794,4796,4799,4802],{"className":4795},[413,1946],[392,4797,2348],{"className":4798},[413,423,1946],[392,4800,603],{"className":4801},[602,1946],[392,4803,3701],{"className":4804},[413,1946],[392,4806,1954],{"className":4807},[1953],[392,4809,4811],{"className":4810},[1926],[392,4812,4814],{"className":4813,"style":4697},[1930],[392,4815],{},[392,4817],{"className":4818,"style":429},[428],[392,4820,2348],{"className":4821},[413,423],[392,4823,4825,4829],{"className":4824},[413],[392,4826,4828],{"className":4827},[413,423],"x",[392,4830,4832],{"className":4831},[1917],[392,4833,4835],{"className":4834},[1921],[392,4836,4838],{"className":4837},[1926],[392,4839,4841],{"className":4840,"style":4011},[1930],[392,4842,4843,4846],{"style":4014},[392,4844],{"className":4845,"style":1939},[1938],[392,4847,4849],{"className":4848},[1943,1944,1945,1946],[392,4850,2348],{"className":4851},[413,423,1946],[392,4853],{"className":4854,"style":746},[428],[392,4856,750],{"className":4857},[602],[392,4859],{"className":4860,"style":746},[428],[392,4862,4864,4867,4870,4873,4876,4879,4882,4886],{"className":4863},[404],[392,4865],{"className":4866,"style":409},[408],[392,4868,4828],{"className":4869},[413,423],[392,4871,3992],{"className":4872},[413],[392,4874,419],{"className":4875},[418],[392,4877,575],{"className":4878},[413],[392,4880],{"className":4881,"style":884},[428],[392,4883,4885],{"className":4884},[888],"−",[392,4887],{"className":4888,"style":884},[428],[392,4890,4892,4896,4899],{"className":4891},[404],[392,4893],{"className":4894,"style":4895},[408],"height:1.0641em;vertical-align:-0.25em;",[392,4897,4828],{"className":4898},[413,423],[392,4900,4902,4905],{"className":4901},[449],[392,4903,450],{"className":4904},[449],[392,4906,4908],{"className":4907},[1917],[392,4909,4911],{"className":4910},[1921],[392,4912,4914],{"className":4913},[1926],[392,4915,4918],{"className":4916,"style":4917},[1930],"height:0.8141em;",[392,4919,4920,4923],{"style":4014},[392,4921],{"className":4922,"style":1939},[1938],[392,4924,4926],{"className":4925},[1943,1944,1945,1946],[392,4927,830],{"className":4928},[413,1946]," at ",[392,4931,4933],{"className":4932},[395],[392,4934,4936,4954],{"className":4935,"ariaHidden":400},[399],[392,4937,4939,4942,4945,4948,4951],{"className":4938},[404],[392,4940],{"className":4941,"style":624},[408],[392,4943,4828],{"className":4944},[413,423],[392,4946],{"className":4947,"style":746},[428],[392,4949,750],{"className":4950},[602],[392,4952],{"className":4953,"style":746},[428],[392,4955,4957,4961],{"className":4956},[404],[392,4958],{"className":4959,"style":4960},[408],"height:1.1901em;vertical-align:-0.345em;",[392,4962,4964,4967,5030],{"className":4963},[413],[392,4965],{"className":4966},[418,4278],[392,4968,4970],{"className":4969},[4282],[392,4971,4973,5021],{"className":4972},[1921,1922],[392,4974,4976,5018],{"className":4975},[1926],[392,4977,4980,4995,5003],{"className":4978,"style":4979},[1930],"height:0.8451em;",[392,4981,4983,4986],{"style":4982},"top:-2.655em;",[392,4984],{"className":4985,"style":4299},[1938],[392,4987,4989],{"className":4988},[1943,1944,1945,1946],[392,4990,4992],{"className":4991},[413,1946],[392,4993,830],{"className":4994},[413,1946],[392,4996,4997,5000],{"style":4345},[392,4998],{"className":4999,"style":4299},[1938],[392,5001],{"className":5002,"style":4353},[4352],[392,5004,5006,5009],{"style":5005},"top:-3.394em;",[392,5007],{"className":5008,"style":4299},[1938],[392,5010,5012],{"className":5011},[1943,1944,1945,1946],[392,5013,5015],{"className":5014},[413,1946],[392,5016,575],{"className":5017},[413,1946],[392,5019,1954],{"className":5020},[1953],[392,5022,5024],{"className":5023},[1926],[392,5025,5028],{"className":5026,"style":5027},[1930],"height:0.345em;",[392,5029],{},[392,5031],{"className":5032},[449,4278],". The infinite sum is\na constant, so the whole bound collapses to ",[392,5035,5037],{"className":5036},[395],[392,5038,5040],{"className":5039,"ariaHidden":400},[399],[392,5041,5043,5046,5049,5052,5055],{"className":5042},[404],[392,5044],{"className":5045,"style":409},[408],[392,5047,2248],{"className":5048,"style":2247},[413,423],[392,5050,419],{"className":5051},[418],[392,5053,424],{"className":5054},[413,423],[392,5056,450],{"className":5057},[449],[381,5059,5060,5061,5064,5065,5072],{},"The intuition behind the algebra: half the nodes are leaves (zero work), a\nquarter sit one level up (at most one swap each), an eighth two levels up, and so\non. Cost per node falls geometrically as the number of nodes at that level\n",[545,5062,5063],{},"rises"," geometrically, and the two effects cancel to leave a linear total.",[567,5066,5067],{},[384,5068,1163],{"href":5069,"ariaDescribedBy":5070,"dataFootnoteRef":376,"id":5071},"#user-content-fn-clrs-build",[573],"user-content-fnref-clrs-build","\nBuilding a heap is asymptotically negligible compared to the sort that follows.",[907,5074,5076,5318],{"className":5075},[910,911],[913,5077,5081],{"xmlns":915,"width":5078,"height":5079,"viewBox":5080},"282.299","162.717","-75 -75 211.724 122.037",[920,5082,5083,5104,5107,5114,5133,5136,5143,5162,5165,5172,5191,5194,5201,5240,5243,5250,5253,5259,5262,5268,5271,5278],{"stroke":922,"style":923},[920,5084,5085,5092,5098],{"stroke":927,"fontSize":1137},[920,5086,5088],{"transform":5087},"translate(-24.03 2.43)",[925,5089],{"d":5090,"fill":922,"stroke":922,"className":5091,"style":1422},"M-37.714 35.440Q-37.714 35.399-37.707 35.375L-36.716 31.380Q-36.678 31.284-36.678 31.192Q-36.678 31.100-37.112 31.100Q-37.198 31.072-37.198 30.987L-37.170 30.877Q-37.163 30.836-37.092 30.819L-36.111 30.744Q-36.066 30.744-36.037 30.770Q-36.008 30.795-36.008 30.847L-36.558 33.075Q-36.333 32.812-36.049 32.663Q-35.765 32.515-35.448 32.515Q-35.031 32.515-34.778 32.711Q-34.525 32.908-34.525 33.304Q-34.525 33.755-34.979 34.873Q-35.054 35.068-35.054 35.215Q-35.054 35.447-34.887 35.447Q-34.610 35.447-34.417 35.170Q-34.224 34.893-34.145 34.572Q-34.121 34.511-34.067 34.511L-33.957 34.511Q-33.923 34.511-33.901 34.536Q-33.879 34.562-33.879 34.593Q-33.879 34.606-33.886 34.620Q-33.947 34.870-34.087 35.111Q-34.227 35.351-34.438 35.510Q-34.648 35.669-34.901 35.669Q-35.184 35.669-35.386 35.507Q-35.588 35.345-35.588 35.075Q-35.588 34.952-35.536 34.825Q-35.331 34.306-35.200 33.901Q-35.068 33.496-35.068 33.208Q-35.068 33-35.164 32.868Q-35.260 32.737-35.461 32.737Q-35.882 32.737-36.196 33.024Q-36.511 33.311-36.729 33.745L-37.150 35.427Q-37.180 35.529-37.274 35.599Q-37.368 35.669-37.471 35.669Q-37.570 35.669-37.642 35.606Q-37.714 35.543-37.714 35.440",[936],[920,5093,5094],{"transform":5087},[925,5095],{"d":5096,"fill":922,"stroke":922,"className":5097,"style":1422},"M-28.076 34.794L-32.909 34.794Q-32.977 34.784-33.023 34.738Q-33.069 34.692-33.069 34.620Q-33.069 34.555-33.023 34.509Q-32.977 34.463-32.909 34.453L-28.076 34.453Q-28.007 34.463-27.961 34.509Q-27.915 34.555-27.915 34.620Q-27.915 34.692-27.961 34.738Q-28.007 34.784-28.076 34.794M-28.076 33.256L-32.909 33.256Q-32.977 33.246-33.023 33.200Q-33.069 33.154-33.069 33.082Q-33.069 32.938-32.909 32.914L-28.076 32.914Q-27.915 32.938-27.915 33.082Q-27.915 33.154-27.961 33.200Q-28.007 33.246-28.076 33.256",[936],[920,5099,5100],{"transform":5087},[925,5101],{"d":5102,"fill":922,"stroke":922,"className":5103,"style":1422},"M-25.430 35.741Q-26.065 35.741-26.429 35.396Q-26.794 35.051-26.929 34.526Q-27.064 34.001-27.064 33.376Q-27.064 32.351-26.708 31.652Q-26.353 30.953-25.430 30.953Q-24.503 30.953-24.151 31.652Q-23.799 32.351-23.799 33.376Q-23.799 34.001-23.934 34.526Q-24.069 35.051-24.432 35.396Q-24.794 35.741-25.430 35.741M-25.430 35.516Q-24.992 35.516-24.779 35.141Q-24.565 34.767-24.515 34.300Q-24.466 33.834-24.466 33.256Q-24.466 32.703-24.515 32.275Q-24.565 31.848-24.777 31.513Q-24.989 31.178-25.430 31.178Q-25.772 31.178-25.975 31.385Q-26.178 31.592-26.265 31.904Q-26.353 32.217-26.375 32.533Q-26.397 32.850-26.397 33.256Q-26.397 33.673-26.375 34.015Q-26.353 34.357-26.264 34.705Q-26.175 35.054-25.970 35.285Q-25.765 35.516-25.430 35.516",[936],[925,5105],{"fill":3097,"d":5106},"M-38.24 43.567V27.634h63.734v15.933Zm63.734-15.933",[920,5108,5110],{"transform":5109},"translate(73.122 2.256)",[925,5111],{"d":5112,"fill":922,"stroke":922,"className":5113,"style":1422},"M-37.861 34.524Q-37.861 34.083-37.558 33.762Q-37.256 33.441-36.804 33.249L-37.044 33.109Q-37.314 32.949-37.480 32.691Q-37.645 32.433-37.645 32.135Q-37.645 31.783-37.440 31.511Q-37.235 31.240-36.914 31.096Q-36.593 30.953-36.251 30.953Q-35.929 30.953-35.606 31.069Q-35.283 31.185-35.072 31.426Q-34.860 31.667-34.860 32.002Q-34.860 32.364-35.104 32.627Q-35.348 32.891-35.728 33.068L-35.328 33.304Q-35.133 33.417-34.974 33.586Q-34.815 33.755-34.728 33.964Q-34.641 34.172-34.641 34.405Q-34.641 34.808-34.875 35.112Q-35.109 35.416-35.483 35.579Q-35.858 35.741-36.251 35.741Q-36.637 35.741-37.006 35.604Q-37.375 35.468-37.618 35.191Q-37.861 34.914-37.861 34.524M-37.413 34.524Q-37.413 34.811-37.244 35.034Q-37.074 35.256-36.806 35.372Q-36.538 35.488-36.251 35.488Q-35.813 35.488-35.451 35.271Q-35.089 35.054-35.089 34.647Q-35.089 34.446-35.217 34.268Q-35.345 34.090-35.523 33.991L-36.545 33.396Q-36.784 33.506-36.982 33.672Q-37.180 33.837-37.297 34.053Q-37.413 34.268-37.413 34.524M-36.890 32.395L-35.970 32.928Q-35.663 32.768-35.461 32.535Q-35.260 32.303-35.260 32.002Q-35.260 31.763-35.405 31.573Q-35.550 31.383-35.782 31.284Q-36.015 31.185-36.251 31.185Q-36.473 31.185-36.702 31.255Q-36.931 31.325-37.088 31.482Q-37.245 31.640-37.245 31.869Q-37.245 32.183-36.890 32.395",[936],[920,5115,5116,5122,5127],{"stroke":927,"fontSize":1137},[920,5117,5119],{"transform":5118},"translate(-24.03 -24.6)",[925,5120],{"d":5090,"fill":922,"stroke":922,"className":5121,"style":1422},[936],[920,5123,5124],{"transform":5118},[925,5125],{"d":5096,"fill":922,"stroke":922,"className":5126,"style":1422},[936],[920,5128,5129],{"transform":5118},[925,5130],{"d":5131,"fill":922,"stroke":922,"className":5132,"style":1422},"M-24.093 35.601L-26.623 35.601L-26.623 35.321Q-25.655 35.321-25.655 35.112L-25.655 31.493Q-26.048 31.681-26.670 31.681L-26.670 31.400Q-26.253 31.400-25.889 31.299Q-25.525 31.199-25.269 30.953L-25.143 30.953Q-25.078 30.970-25.061 31.038L-25.061 35.112Q-25.061 35.321-24.093 35.321",[936],[925,5134],{"fill":3097,"d":5135},"M-38.24 16.537V.604h31.867v15.933ZM-6.373.604",[920,5137,5139],{"transform":5138},"translate(41.255 -24.774)",[925,5140],{"d":5141,"fill":922,"stroke":922,"className":5142,"style":1422},"M-35.923 34.453L-37.967 34.453L-37.967 34.172L-35.636 31Q-35.601 30.953-35.536 30.953L-35.400 30.953Q-35.355 30.953-35.328 30.980Q-35.301 31.007-35.301 31.052L-35.301 34.172L-34.538 34.172L-34.538 34.453L-35.301 34.453L-35.301 35.112Q-35.301 35.321-34.545 35.321L-34.545 35.601L-36.678 35.601L-36.678 35.321Q-35.923 35.321-35.923 35.112L-35.923 34.453M-35.875 31.728L-37.666 34.172L-35.875 34.172",[936],[920,5144,5145,5151,5156],{"stroke":927,"fontSize":1137},[920,5146,5148],{"transform":5147},"translate(-24.03 -51.63)",[925,5149],{"d":5090,"fill":922,"stroke":922,"className":5150,"style":1422},[936],[920,5152,5153],{"transform":5147},[925,5154],{"d":5096,"fill":922,"stroke":922,"className":5155,"style":1422},[936],[920,5157,5158],{"transform":5147},[925,5159],{"d":5160,"fill":922,"stroke":922,"className":5161,"style":1422},"M-24.093 35.601L-26.978 35.601L-26.978 35.399Q-26.978 35.369-26.951 35.341L-25.703 34.124Q-25.631 34.049-25.589 34.007Q-25.546 33.964-25.467 33.885Q-25.054 33.472-24.823 33.114Q-24.592 32.757-24.592 32.333Q-24.592 32.101-24.671 31.898Q-24.750 31.694-24.891 31.544Q-25.033 31.393-25.228 31.313Q-25.423 31.233-25.655 31.233Q-25.966 31.233-26.224 31.392Q-26.482 31.551-26.612 31.828L-26.592 31.828Q-26.424 31.828-26.317 31.939Q-26.209 32.050-26.209 32.214Q-26.209 32.371-26.318 32.484Q-26.428 32.597-26.592 32.597Q-26.752 32.597-26.865 32.484Q-26.978 32.371-26.978 32.214Q-26.978 31.838-26.770 31.551Q-26.561 31.264-26.226 31.108Q-25.891 30.953-25.536 30.953Q-25.112 30.953-24.732 31.111Q-24.353 31.270-24.119 31.587Q-23.885 31.903-23.885 32.333Q-23.885 32.644-24.025 32.913Q-24.165 33.181-24.370 33.386Q-24.575 33.591-24.938 33.873Q-25.300 34.155-25.409 34.251L-26.264 34.979L-25.621 34.979Q-25.358 34.979-25.069 34.977Q-24.780 34.976-24.562 34.967Q-24.343 34.958-24.326 34.941Q-24.264 34.876-24.227 34.709Q-24.189 34.541-24.151 34.299L-23.885 34.299",[936],[925,5163],{"fill":3097,"d":5164},"M-38.24-10.493v-15.933h15.933v15.933Zm15.933-15.933",[920,5166,5168],{"transform":5167},"translate(25.321 -51.804)",[925,5169],{"d":5170,"fill":922,"stroke":922,"className":5171,"style":1422},"M-34.914 35.601L-37.799 35.601L-37.799 35.399Q-37.799 35.369-37.772 35.341L-36.524 34.124Q-36.452 34.049-36.410 34.007Q-36.367 33.964-36.288 33.885Q-35.875 33.472-35.644 33.114Q-35.413 32.757-35.413 32.333Q-35.413 32.101-35.492 31.898Q-35.571 31.694-35.712 31.544Q-35.854 31.393-36.049 31.313Q-36.244 31.233-36.476 31.233Q-36.787 31.233-37.045 31.392Q-37.303 31.551-37.433 31.828L-37.413 31.828Q-37.245 31.828-37.138 31.939Q-37.030 32.050-37.030 32.214Q-37.030 32.371-37.139 32.484Q-37.249 32.597-37.413 32.597Q-37.573 32.597-37.686 32.484Q-37.799 32.371-37.799 32.214Q-37.799 31.838-37.591 31.551Q-37.382 31.264-37.047 31.108Q-36.712 30.953-36.357 30.953Q-35.933 30.953-35.553 31.111Q-35.174 31.270-34.940 31.587Q-34.706 31.903-34.706 32.333Q-34.706 32.644-34.846 32.913Q-34.986 33.181-35.191 33.386Q-35.396 33.591-35.759 33.873Q-36.121 34.155-36.230 34.251L-37.085 34.979L-36.442 34.979Q-36.179 34.979-35.890 34.977Q-35.601 34.976-35.383 34.967Q-35.164 34.958-35.147 34.941Q-35.085 34.876-35.048 34.709Q-35.010 34.541-34.972 34.299L-34.706 34.299",[936],[920,5173,5174,5180,5185],{"stroke":927,"fontSize":1137},[920,5175,5177],{"transform":5176},"translate(-24.03 -78.66)",[925,5178],{"d":5090,"fill":922,"stroke":922,"className":5179,"style":1422},[936],[920,5181,5182],{"transform":5176},[925,5183],{"d":5096,"fill":922,"stroke":922,"className":5184,"style":1422},[936],[920,5186,5187],{"transform":5176},[925,5188],{"d":5189,"fill":922,"stroke":922,"className":5190,"style":1422},"M-26.623 35.054Q-26.503 35.211-26.312 35.310Q-26.120 35.410-25.905 35.449Q-25.690 35.488-25.467 35.488Q-25.170 35.488-24.975 35.333Q-24.780 35.177-24.690 34.923Q-24.599 34.668-24.599 34.384Q-24.599 34.090-24.691 33.839Q-24.784 33.588-24.982 33.432Q-25.180 33.277-25.474 33.277L-25.990 33.277Q-26.018 33.277-26.043 33.251Q-26.069 33.226-26.069 33.202L-26.069 33.130Q-26.069 33.099-26.043 33.077Q-26.018 33.055-25.990 33.055L-25.549 33.024Q-25.187 33.024-24.967 32.667Q-24.746 32.309-24.746 31.920Q-24.746 31.592-24.941 31.388Q-25.136 31.185-25.467 31.185Q-25.754 31.185-26.007 31.269Q-26.260 31.352-26.424 31.540Q-26.277 31.540-26.177 31.655Q-26.076 31.769-26.076 31.920Q-26.076 32.070-26.182 32.180Q-26.288 32.289-26.445 32.289Q-26.606 32.289-26.715 32.180Q-26.824 32.070-26.824 31.920Q-26.824 31.595-26.616 31.376Q-26.407 31.158-26.091 31.055Q-25.775 30.953-25.467 30.953Q-25.149 30.953-24.821 31.057Q-24.493 31.161-24.266 31.383Q-24.039 31.605-24.039 31.920Q-24.039 32.354-24.326 32.679Q-24.613 33.003-25.047 33.150Q-24.736 33.215-24.456 33.381Q-24.175 33.547-23.998 33.805Q-23.820 34.063-23.820 34.384Q-23.820 34.794-24.064 35.104Q-24.309 35.413-24.690 35.577Q-25.071 35.741-25.467 35.741Q-25.836 35.741-26.194 35.628Q-26.551 35.516-26.795 35.266Q-27.040 35.017-27.040 34.647Q-27.040 34.476-26.923 34.364Q-26.807 34.251-26.636 34.251Q-26.527 34.251-26.436 34.302Q-26.346 34.353-26.291 34.446Q-26.236 34.538-26.236 34.647Q-26.236 34.815-26.349 34.934Q-26.462 35.054-26.623 35.054",[936],[925,5192],{"fill":3097,"d":5193},"M-38.24-37.523v-15.933h7.967v15.933Zm7.967-15.933",[920,5195,5197],{"transform":5196},"translate(17.355 -78.835)",[925,5198],{"d":5199,"fill":922,"stroke":922,"className":5200,"style":1422},"M-34.914 35.601L-37.444 35.601L-37.444 35.321Q-36.476 35.321-36.476 35.112L-36.476 31.493Q-36.869 31.681-37.491 31.681L-37.491 31.400Q-37.074 31.400-36.710 31.299Q-36.346 31.199-36.090 30.953L-35.964 30.953Q-35.899 30.970-35.882 31.038L-35.882 35.112Q-35.882 35.321-34.914 35.321",[936],[920,5202,5203,5210,5216,5222,5228,5234],{"stroke":927,"fontSize":1124},[920,5204,5206],{"transform":5205},"translate(-4.007 -98.982)",[925,5207],{"d":5208,"fill":922,"stroke":922,"className":5209,"style":1577},"M-36.072 35.601L-37.928 35.601L-37.928 35.304Q-37.654 35.304-37.486 35.257Q-37.318 35.210-37.318 35.042L-37.318 32.906Q-37.318 32.691-37.381 32.595Q-37.443 32.499-37.562 32.478Q-37.681 32.456-37.928 32.456L-37.928 32.160L-36.736 32.074L-36.736 32.808Q-36.623 32.593-36.429 32.425Q-36.236 32.257-35.998 32.165Q-35.760 32.074-35.506 32.074Q-34.338 32.074-34.338 33.152L-34.338 35.042Q-34.338 35.210-34.168 35.257Q-33.998 35.304-33.728 35.304L-33.728 35.601L-35.584 35.601L-35.584 35.304Q-35.310 35.304-35.142 35.257Q-34.974 35.210-34.974 35.042L-34.974 33.167Q-34.974 32.785-35.095 32.556Q-35.217 32.328-35.568 32.328Q-35.881 32.328-36.135 32.490Q-36.388 32.652-36.535 32.921Q-36.681 33.191-36.681 33.488L-36.681 35.042Q-36.681 35.210-36.511 35.257Q-36.342 35.304-36.072 35.304L-36.072 35.601M-33.283 33.906Q-33.283 33.402-33.027 32.970Q-32.771 32.538-32.336 32.287Q-31.900 32.035-31.400 32.035Q-31.013 32.035-30.672 32.179Q-30.330 32.324-30.068 32.585Q-29.806 32.847-29.664 33.183Q-29.521 33.519-29.521 33.906Q-29.521 34.398-29.785 34.808Q-30.049 35.218-30.478 35.449Q-30.908 35.679-31.400 35.679Q-31.892 35.679-32.326 35.447Q-32.760 35.214-33.021 34.806Q-33.283 34.398-33.283 33.906M-31.400 35.402Q-30.943 35.402-30.691 35.179Q-30.439 34.956-30.351 34.605Q-30.263 34.253-30.263 33.808Q-30.263 33.378-30.357 33.040Q-30.451 32.703-30.705 32.496Q-30.959 32.288-31.400 32.288Q-32.049 32.288-32.293 32.705Q-32.537 33.121-32.537 33.808Q-32.537 34.253-32.449 34.605Q-32.361 34.956-32.109 35.179Q-31.857 35.402-31.400 35.402",[936],[920,5211,5212],{"transform":5205},[925,5213],{"d":5214,"fill":922,"stroke":922,"className":5215,"style":1577},"M-26.977 35.679Q-27.458 35.679-27.866 35.435Q-28.274 35.191-28.512 34.777Q-28.751 34.363-28.751 33.874Q-28.751 33.382-28.493 32.966Q-28.235 32.550-27.803 32.312Q-27.372 32.074-26.880 32.074Q-26.259 32.074-25.809 32.511L-25.809 30.882Q-25.809 30.667-25.872 30.572Q-25.934 30.476-26.052 30.455Q-26.169 30.433-26.415 30.433L-26.415 30.136L-25.192 30.050L-25.192 34.859Q-25.192 35.070-25.130 35.165Q-25.067 35.261-24.950 35.283Q-24.833 35.304-24.583 35.304L-24.583 35.601L-25.833 35.679L-25.833 35.195Q-26.298 35.679-26.977 35.679M-26.911 35.425Q-26.571 35.425-26.278 35.234Q-25.985 35.042-25.833 34.746L-25.833 32.913Q-25.981 32.640-26.243 32.484Q-26.505 32.328-26.817 32.328Q-27.442 32.328-27.725 32.775Q-28.009 33.222-28.009 33.882Q-28.009 34.527-27.757 34.976Q-27.505 35.425-26.911 35.425M-24.075 33.847Q-24.075 33.367-23.843 32.951Q-23.610 32.535-23.200 32.285Q-22.790 32.035-22.313 32.035Q-21.583 32.035-21.184 32.476Q-20.786 32.917-20.786 33.648Q-20.786 33.753-20.880 33.777L-23.329 33.777L-23.329 33.847Q-23.329 34.257-23.208 34.613Q-23.087 34.968-22.815 35.185Q-22.544 35.402-22.114 35.402Q-21.751 35.402-21.454 35.173Q-21.157 34.945-21.055 34.593Q-21.048 34.546-20.962 34.531L-20.880 34.531Q-20.786 34.558-20.786 34.640Q-20.786 34.648-20.794 34.679Q-20.856 34.906-20.995 35.089Q-21.134 35.273-21.325 35.406Q-21.516 35.538-21.735 35.609Q-21.954 35.679-22.192 35.679Q-22.563 35.679-22.901 35.542Q-23.239 35.406-23.507 35.154Q-23.774 34.902-23.925 34.562Q-24.075 34.222-24.075 33.847M-23.321 33.538L-21.360 33.538Q-21.360 33.234-21.462 32.943Q-21.563 32.652-21.780 32.470Q-21.997 32.288-22.313 32.288Q-22.614 32.288-22.845 32.476Q-23.075 32.663-23.198 32.955Q-23.321 33.246-23.321 33.538M-20.255 35.593L-20.255 34.371Q-20.255 34.343-20.223 34.312Q-20.192 34.281-20.169 34.281L-20.063 34.281Q-19.993 34.281-19.977 34.343Q-19.915 34.663-19.776 34.904Q-19.637 35.144-19.405 35.285Q-19.173 35.425-18.864 35.425Q-18.626 35.425-18.417 35.365Q-18.208 35.304-18.071 35.156Q-17.934 35.007-17.934 34.761Q-17.934 34.507-18.145 34.341Q-18.356 34.175-18.626 34.121L-19.247 34.007Q-19.653 33.929-19.954 33.673Q-20.255 33.417-20.255 33.042Q-20.255 32.675-20.053 32.453Q-19.852 32.230-19.528 32.132Q-19.204 32.035-18.864 32.035Q-18.399 32.035-18.102 32.242L-17.880 32.058Q-17.856 32.035-17.825 32.035L-17.774 32.035Q-17.743 32.035-17.716 32.062Q-17.688 32.089-17.688 32.121L-17.688 33.105Q-17.688 33.136-17.714 33.165Q-17.739 33.195-17.774 33.195L-17.880 33.195Q-17.915 33.195-17.942 33.167Q-17.970 33.140-17.970 33.105Q-17.970 32.706-18.221 32.486Q-18.473 32.265-18.872 32.265Q-19.227 32.265-19.511 32.388Q-19.794 32.511-19.794 32.816Q-19.794 33.035-19.593 33.167Q-19.391 33.300-19.145 33.343L-18.520 33.456Q-18.091 33.546-17.782 33.843Q-17.473 34.140-17.473 34.554Q-17.473 35.124-17.872 35.402Q-18.270 35.679-18.864 35.679Q-19.415 35.679-19.766 35.343L-20.063 35.656Q-20.087 35.679-20.122 35.679L-20.169 35.679Q-20.192 35.679-20.223 35.648Q-20.255 35.617-20.255 35.593",[936],[920,5217,5218],{"transform":5205},[925,5219],{"d":5220,"fill":922,"stroke":922,"className":5221,"style":1577},"M-14.009 34.769Q-14.009 34.285-13.607 33.990Q-13.204 33.695-12.654 33.576Q-12.103 33.456-11.611 33.456L-11.611 33.167Q-11.611 32.941-11.726 32.734Q-11.841 32.527-12.038 32.408Q-12.236 32.288-12.466 32.288Q-12.892 32.288-13.177 32.394Q-13.107 32.421-13.060 32.476Q-13.013 32.531-12.988 32.601Q-12.962 32.671-12.962 32.746Q-12.962 32.851-13.013 32.943Q-13.064 33.035-13.156 33.085Q-13.247 33.136-13.353 33.136Q-13.458 33.136-13.550 33.085Q-13.642 33.035-13.693 32.943Q-13.743 32.851-13.743 32.746Q-13.743 32.328-13.355 32.181Q-12.966 32.035-12.466 32.035Q-12.134 32.035-11.781 32.165Q-11.427 32.296-11.199 32.550Q-10.970 32.804-10.970 33.152L-10.970 34.953Q-10.970 35.085-10.898 35.195Q-10.825 35.304-10.697 35.304Q-10.572 35.304-10.503 35.199Q-10.435 35.093-10.435 34.953L-10.435 34.441L-10.154 34.441L-10.154 34.953Q-10.154 35.156-10.271 35.314Q-10.388 35.472-10.570 35.556Q-10.751 35.640-10.954 35.640Q-11.185 35.640-11.337 35.468Q-11.490 35.296-11.521 35.066Q-11.681 35.347-11.990 35.513Q-12.298 35.679-12.650 35.679Q-13.161 35.679-13.585 35.456Q-14.009 35.234-14.009 34.769M-13.322 34.769Q-13.322 35.054-13.095 35.240Q-12.868 35.425-12.575 35.425Q-12.329 35.425-12.105 35.308Q-11.880 35.191-11.745 34.988Q-11.611 34.785-11.611 34.531L-11.611 33.699Q-11.876 33.699-12.161 33.753Q-12.447 33.808-12.718 33.937Q-12.990 34.066-13.156 34.273Q-13.322 34.480-13.322 34.769M-9.236 34.640L-9.236 32.449L-9.939 32.449L-9.939 32.195Q-9.583 32.195-9.341 31.962Q-9.099 31.730-8.988 31.382Q-8.876 31.035-8.876 30.679L-8.595 30.679L-8.595 32.152L-7.419 32.152L-7.419 32.449L-8.595 32.449L-8.595 34.624Q-8.595 34.945-8.476 35.173Q-8.357 35.402-8.075 35.402Q-7.896 35.402-7.779 35.279Q-7.661 35.156-7.609 34.976Q-7.556 34.796-7.556 34.624L-7.556 34.152L-7.275 34.152L-7.275 34.640Q-7.275 34.894-7.380 35.134Q-7.486 35.374-7.683 35.527Q-7.880 35.679-8.138 35.679Q-8.454 35.679-8.706 35.556Q-8.958 35.433-9.097 35.199Q-9.236 34.964-9.236 34.640",[936],[920,5223,5224],{"transform":5205},[925,5225],{"d":5226,"fill":922,"stroke":922,"className":5227,"style":1577},"M-1.788 35.601L-3.643 35.601L-3.643 35.304Q-3.370 35.304-3.202 35.257Q-3.034 35.210-3.034 35.042L-3.034 30.882Q-3.034 30.667-3.097 30.572Q-3.159 30.476-3.278 30.455Q-3.397 30.433-3.643 30.433L-3.643 30.136L-2.421 30.050L-2.421 32.753Q-2.296 32.542-2.108 32.392Q-1.921 32.242-1.694 32.158Q-1.468 32.074-1.222 32.074Q-0.054 32.074-0.054 33.152L-0.054 35.042Q-0.054 35.210 0.116 35.257Q0.286 35.304 0.556 35.304L0.556 35.601L-1.300 35.601L-1.300 35.304Q-1.026 35.304-0.858 35.257Q-0.690 35.210-0.690 35.042L-0.690 33.167Q-0.690 32.785-0.811 32.556Q-0.933 32.328-1.284 32.328Q-1.597 32.328-1.851 32.490Q-2.104 32.652-2.251 32.921Q-2.397 33.191-2.397 33.488L-2.397 35.042Q-2.397 35.210-2.227 35.257Q-2.058 35.304-1.788 35.304L-1.788 35.601M1.001 33.847Q1.001 33.367 1.233 32.951Q1.466 32.535 1.876 32.285Q2.286 32.035 2.763 32.035Q3.493 32.035 3.892 32.476Q4.290 32.917 4.290 33.648Q4.290 33.753 4.196 33.777L1.747 33.777L1.747 33.847Q1.747 34.257 1.868 34.613Q1.989 34.968 2.261 35.185Q2.532 35.402 2.962 35.402Q3.325 35.402 3.622 35.173Q3.919 34.945 4.021 34.593Q4.028 34.546 4.114 34.531L4.196 34.531Q4.290 34.558 4.290 34.640Q4.290 34.648 4.282 34.679Q4.220 34.906 4.081 35.089Q3.942 35.273 3.751 35.406Q3.560 35.538 3.341 35.609Q3.122 35.679 2.884 35.679Q2.513 35.679 2.175 35.542Q1.837 35.406 1.569 35.154Q1.302 34.902 1.151 34.562Q1.001 34.222 1.001 33.847M1.755 33.538L3.716 33.538Q3.716 33.234 3.614 32.943Q3.513 32.652 3.296 32.470Q3.079 32.288 2.763 32.288Q2.462 32.288 2.232 32.476Q2.001 32.663 1.878 32.955Q1.755 33.246 1.755 33.538M6.638 35.601L4.860 35.601L4.860 35.304Q5.134 35.304 5.302 35.257Q5.470 35.210 5.470 35.042L5.470 32.906Q5.470 32.691 5.413 32.595Q5.357 32.499 5.243 32.478Q5.130 32.456 4.884 32.456L4.884 32.160L6.083 32.074L6.083 35.042Q6.083 35.210 6.230 35.257Q6.376 35.304 6.638 35.304L6.638 35.601M5.196 30.679Q5.196 30.488 5.331 30.357Q5.466 30.226 5.661 30.226Q5.782 30.226 5.886 30.288Q5.989 30.351 6.052 30.455Q6.114 30.558 6.114 30.679Q6.114 30.874 5.983 31.009Q5.853 31.144 5.661 31.144Q5.462 31.144 5.329 31.011Q5.196 30.878 5.196 30.679M7.138 36.210Q7.138 35.929 7.349 35.718Q7.560 35.507 7.845 35.417Q7.689 35.292 7.610 35.103Q7.532 34.913 7.532 34.714Q7.532 34.359 7.763 34.066Q7.396 33.726 7.396 33.257Q7.396 32.906 7.599 32.636Q7.802 32.367 8.122 32.220Q8.442 32.074 8.786 32.074Q9.306 32.074 9.677 32.355Q10.040 31.984 10.587 31.984Q10.767 31.984 10.894 32.111Q11.021 32.238 11.021 32.417Q11.021 32.523 10.942 32.601Q10.864 32.679 10.755 32.679Q10.646 32.679 10.569 32.603Q10.493 32.527 10.493 32.417Q10.493 32.316 10.532 32.265Q10.540 32.257 10.544 32.251Q10.548 32.246 10.548 32.242Q10.173 32.242 9.853 32.496Q10.173 32.835 10.173 33.257Q10.173 33.527 10.056 33.744Q9.939 33.960 9.733 34.119Q9.528 34.277 9.286 34.359Q9.044 34.441 8.786 34.441Q8.567 34.441 8.355 34.382Q8.142 34.324 7.946 34.203Q7.853 34.343 7.853 34.523Q7.853 34.730 7.989 34.882Q8.126 35.035 8.333 35.035L9.028 35.035Q9.517 35.035 9.929 35.119Q10.341 35.203 10.620 35.460Q10.899 35.718 10.899 36.210Q10.899 36.574 10.579 36.806Q10.259 37.038 9.817 37.140Q9.376 37.242 9.021 37.242Q8.665 37.242 8.222 37.140Q7.778 37.038 7.458 36.806Q7.138 36.574 7.138 36.210M7.642 36.210Q7.642 36.406 7.786 36.554Q7.931 36.703 8.144 36.792Q8.357 36.882 8.597 36.929Q8.837 36.976 9.021 36.976Q9.263 36.976 9.593 36.898Q9.923 36.820 10.159 36.646Q10.396 36.472 10.396 36.210Q10.396 35.804 9.985 35.695Q9.575 35.585 9.013 35.585L8.333 35.585Q8.064 35.585 7.853 35.763Q7.642 35.941 7.642 36.210M8.786 34.175Q9.509 34.175 9.509 33.257Q9.509 32.335 8.786 32.335Q8.060 32.335 8.060 33.257Q8.060 34.175 8.786 34.175M13.314 35.601L11.458 35.601L11.458 35.304Q11.732 35.304 11.899 35.257Q12.067 35.210 12.067 35.042L12.067 30.882Q12.067 30.667 12.005 30.572Q11.942 30.476 11.823 30.455Q11.704 30.433 11.458 30.433L11.458 30.136L12.681 30.050L12.681 32.753Q12.806 32.542 12.993 32.392Q13.181 32.242 13.407 32.158Q13.634 32.074 13.880 32.074Q15.048 32.074 15.048 33.152L15.048 35.042Q15.048 35.210 15.218 35.257Q15.388 35.304 15.657 35.304L15.657 35.601L13.802 35.601L13.802 35.304Q14.075 35.304 14.243 35.257Q14.411 35.210 14.411 35.042L14.411 33.167Q14.411 32.785 14.290 32.556Q14.169 32.328 13.817 32.328Q13.505 32.328 13.251 32.490Q12.997 32.652 12.851 32.921Q12.704 33.191 12.704 33.488L12.704 35.042Q12.704 35.210 12.874 35.257Q13.044 35.304 13.314 35.304",[936],[920,5229,5230],{"transform":5205},[925,5231],{"d":5232,"fill":922,"stroke":922,"className":5233,"style":1577},"M16.504 34.640L16.504 32.449L15.801 32.449L15.801 32.195Q16.157 32.195 16.399 31.962Q16.641 31.730 16.752 31.382Q16.864 31.035 16.864 30.679L17.145 30.679L17.145 32.152L18.321 32.152L18.321 32.449L17.145 32.449L17.145 34.624Q17.145 34.945 17.264 35.173Q17.383 35.402 17.664 35.402Q17.844 35.402 17.961 35.279Q18.078 35.156 18.131 34.976Q18.184 34.796 18.184 34.624L18.184 34.152L18.465 34.152L18.465 34.640Q18.465 34.894 18.360 35.134Q18.254 35.374 18.057 35.527Q17.860 35.679 17.602 35.679Q17.286 35.679 17.034 35.556Q16.782 35.433 16.643 35.199Q16.504 34.964 16.504 34.640",[936],[920,5235,5236],{"transform":5205},[925,5237],{"d":5238,"fill":922,"stroke":922,"className":5239,"style":1577},"M22.221 35.425Q22.225 35.406 22.227 35.392Q22.229 35.378 22.229 35.355L23.382 30.753Q23.421 30.566 23.421 30.538Q23.421 30.433 22.925 30.433Q22.827 30.402 22.827 30.304L22.850 30.203Q22.858 30.156 22.940 30.136L24.046 30.050Q24.096 30.050 24.130 30.080Q24.163 30.109 24.163 30.167L23.542 32.671Q23.784 32.394 24.094 32.234Q24.405 32.074 24.757 32.074Q25.210 32.074 25.491 32.300Q25.772 32.527 25.772 32.960Q25.772 33.300 25.639 33.701Q25.507 34.101 25.253 34.769Q25.155 34.984 25.155 35.175Q25.155 35.425 25.331 35.425Q25.639 35.425 25.858 35.109Q26.077 34.792 26.163 34.425Q26.190 34.355 26.253 34.355L26.354 34.355Q26.393 34.355 26.419 34.384Q26.444 34.413 26.444 34.449Q26.444 34.464 26.436 34.480Q26.362 34.769 26.212 35.040Q26.061 35.312 25.831 35.496Q25.600 35.679 25.315 35.679Q25.010 35.679 24.792 35.492Q24.573 35.304 24.573 34.999Q24.573 34.835 24.628 34.714Q24.870 34.070 25.012 33.628Q25.155 33.187 25.155 32.859Q25.155 32.624 25.059 32.476Q24.964 32.328 24.741 32.328Q23.913 32.328 23.354 33.402L22.850 35.410Q22.819 35.531 22.721 35.605Q22.624 35.679 22.499 35.679Q22.385 35.679 22.303 35.609Q22.221 35.538 22.221 35.425",[936],[925,5241],{"fill":2444,"d":5242},"M81.261 43.567V27.634zm0-15.933",[920,5244,5246],{"transform":5245},"translate(126.044 2.256)",[925,5247],{"d":5248,"fill":922,"stroke":922,"className":5249,"style":1422},"M-36.251 35.741Q-36.886 35.741-37.250 35.396Q-37.615 35.051-37.750 34.526Q-37.885 34.001-37.885 33.376Q-37.885 32.351-37.529 31.652Q-37.174 30.953-36.251 30.953Q-35.324 30.953-34.972 31.652Q-34.620 32.351-34.620 33.376Q-34.620 34.001-34.755 34.526Q-34.890 35.051-35.253 35.396Q-35.615 35.741-36.251 35.741M-36.251 35.516Q-35.813 35.516-35.600 35.141Q-35.386 34.767-35.336 34.300Q-35.287 33.834-35.287 33.256Q-35.287 32.703-35.336 32.275Q-35.386 31.848-35.598 31.513Q-35.810 31.178-36.251 31.178Q-36.593 31.178-36.796 31.385Q-36.999 31.592-37.086 31.904Q-37.174 32.217-37.196 32.533Q-37.218 32.850-37.218 33.256Q-37.218 33.673-37.196 34.015Q-37.174 34.357-37.085 34.705Q-36.996 35.054-36.791 35.285Q-36.586 35.516-36.251 35.516",[936],[925,5251],{"fill":2444,"d":5252},"M81.261 16.537V.604h31.867v15.933ZM113.128.604",[920,5254,5256],{"transform":5255},"translate(157.911 -24.774)",[925,5257],{"d":5141,"fill":922,"stroke":922,"className":5258,"style":1422},[936],[925,5260],{"fill":2444,"d":5261},"M81.261-10.493v-15.933h31.867v15.933Zm31.867-15.933",[920,5263,5265],{"transform":5264},"translate(157.911 -51.804)",[925,5266],{"d":5141,"fill":922,"stroke":922,"className":5267,"style":1422},[936],[925,5269],{"fill":2444,"d":5270},"M81.261-37.523v-15.933h23.9v15.933Zm23.9-15.933",[920,5272,5274],{"transform":5273},"translate(149.944 -78.835)",[925,5275],{"d":5276,"fill":922,"stroke":922,"className":5277,"style":1422},"M-37.444 35.054Q-37.324 35.211-37.133 35.310Q-36.941 35.410-36.726 35.449Q-36.511 35.488-36.288 35.488Q-35.991 35.488-35.796 35.333Q-35.601 35.177-35.511 34.923Q-35.420 34.668-35.420 34.384Q-35.420 34.090-35.512 33.839Q-35.605 33.588-35.803 33.432Q-36.001 33.277-36.295 33.277L-36.811 33.277Q-36.839 33.277-36.864 33.251Q-36.890 33.226-36.890 33.202L-36.890 33.130Q-36.890 33.099-36.864 33.077Q-36.839 33.055-36.811 33.055L-36.370 33.024Q-36.008 33.024-35.788 32.667Q-35.567 32.309-35.567 31.920Q-35.567 31.592-35.762 31.388Q-35.957 31.185-36.288 31.185Q-36.575 31.185-36.828 31.269Q-37.081 31.352-37.245 31.540Q-37.098 31.540-36.998 31.655Q-36.897 31.769-36.897 31.920Q-36.897 32.070-37.003 32.180Q-37.109 32.289-37.266 32.289Q-37.427 32.289-37.536 32.180Q-37.645 32.070-37.645 31.920Q-37.645 31.595-37.437 31.376Q-37.228 31.158-36.912 31.055Q-36.596 30.953-36.288 30.953Q-35.970 30.953-35.642 31.057Q-35.314 31.161-35.087 31.383Q-34.860 31.605-34.860 31.920Q-34.860 32.354-35.147 32.679Q-35.434 33.003-35.868 33.150Q-35.557 33.215-35.277 33.381Q-34.996 33.547-34.819 33.805Q-34.641 34.063-34.641 34.384Q-34.641 34.794-34.885 35.104Q-35.130 35.413-35.511 35.577Q-35.892 35.741-36.288 35.741Q-36.657 35.741-37.015 35.628Q-37.372 35.516-37.616 35.266Q-37.861 35.017-37.861 34.647Q-37.861 34.476-37.744 34.364Q-37.628 34.251-37.457 34.251Q-37.348 34.251-37.257 34.302Q-37.167 34.353-37.112 34.446Q-37.057 34.538-37.057 34.647Q-37.057 34.815-37.170 34.934Q-37.283 35.054-37.444 35.054",[936],[920,5279,5281,5288,5294,5300,5306,5312],{"stroke":927,"fontFamily":5280,"fontSize":1124},"cmr8",[920,5282,5284],{"transform":5283},"translate(116.166 -98.982)",[925,5285],{"d":5286,"fill":922,"stroke":922,"className":5287,"style":1577},"M-36.416 35.570L-37.486 32.714Q-37.553 32.535-37.683 32.492Q-37.814 32.449-38.072 32.449L-38.072 32.152L-36.392 32.152L-36.392 32.449Q-36.842 32.449-36.842 32.648Q-36.838 32.663-36.836 32.681Q-36.834 32.699-36.834 32.714L-36.041 34.808L-35.330 32.898Q-35.365 32.804-35.365 32.759Q-35.365 32.714-35.400 32.714Q-35.467 32.535-35.597 32.492Q-35.728 32.449-35.982 32.449L-35.982 32.152L-34.392 32.152L-34.392 32.449Q-34.842 32.449-34.842 32.648Q-34.838 32.667-34.836 32.685Q-34.834 32.703-34.834 32.714L-34.002 34.929L-33.248 32.929Q-33.224 32.871-33.224 32.800Q-33.224 32.640-33.361 32.544Q-33.498 32.449-33.666 32.449L-33.666 32.152L-32.279 32.152L-32.279 32.449Q-32.513 32.449-32.691 32.576Q-32.869 32.703-32.951 32.929L-33.935 35.570Q-33.990 35.679-34.103 35.679L-34.162 35.679Q-34.275 35.679-34.318 35.570L-35.178 33.296L-36.033 35.570Q-36.072 35.679-36.193 35.679L-36.248 35.679Q-36.361 35.679-36.416 35.570",[936],[920,5289,5290],{"transform":5283},[925,5291],{"d":5292,"fill":922,"stroke":922,"className":5293,"style":1577},"M-32.099 33.906Q-32.099 33.402-31.843 32.970Q-31.587 32.538-31.151 32.287Q-30.716 32.035-30.216 32.035Q-29.829 32.035-29.487 32.179Q-29.146 32.324-28.884 32.585Q-28.622 32.847-28.480 33.183Q-28.337 33.519-28.337 33.906Q-28.337 34.398-28.601 34.808Q-28.864 35.218-29.294 35.449Q-29.724 35.679-30.216 35.679Q-30.708 35.679-31.142 35.447Q-31.575 35.214-31.837 34.806Q-32.099 34.398-32.099 33.906M-30.216 35.402Q-29.759 35.402-29.507 35.179Q-29.255 34.956-29.167 34.605Q-29.079 34.253-29.079 33.808Q-29.079 33.378-29.173 33.040Q-29.267 32.703-29.521 32.496Q-29.775 32.288-30.216 32.288Q-30.864 32.288-31.108 32.705Q-31.353 33.121-31.353 33.808Q-31.353 34.253-31.265 34.605Q-31.177 34.956-30.925 35.179Q-30.673 35.402-30.216 35.402M-25.845 35.601L-27.825 35.601L-27.825 35.304Q-27.556 35.304-27.388 35.259Q-27.220 35.214-27.220 35.042L-27.220 32.906Q-27.220 32.691-27.282 32.595Q-27.345 32.499-27.462 32.478Q-27.579 32.456-27.825 32.456L-27.825 32.160L-26.657 32.074L-26.657 32.859Q-26.579 32.648-26.427 32.462Q-26.275 32.277-26.075 32.175Q-25.876 32.074-25.650 32.074Q-25.403 32.074-25.212 32.218Q-25.021 32.363-25.021 32.593Q-25.021 32.749-25.126 32.859Q-25.232 32.968-25.388 32.968Q-25.544 32.968-25.653 32.859Q-25.763 32.749-25.763 32.593Q-25.763 32.433-25.657 32.328Q-25.982 32.328-26.196 32.556Q-26.411 32.785-26.507 33.124Q-26.603 33.464-26.603 33.769L-26.603 35.042Q-26.603 35.210-26.376 35.257Q-26.150 35.304-25.845 35.304L-25.845 35.601M-22.716 35.601L-24.513 35.601L-24.513 35.304Q-24.243 35.304-24.075 35.259Q-23.907 35.214-23.907 35.042L-23.907 30.882Q-23.907 30.667-23.970 30.572Q-24.032 30.476-24.150 30.455Q-24.267 30.433-24.513 30.433L-24.513 30.136L-23.290 30.050L-23.290 33.816L-22.192 32.929Q-21.985 32.749-21.985 32.601Q-21.985 32.535-22.038 32.492Q-22.091 32.449-22.161 32.449L-22.161 32.152L-20.626 32.152L-20.626 32.449Q-21.157 32.449-21.755 32.929L-22.364 33.425L-21.290 34.824Q-21.153 34.999-21.046 35.107Q-20.939 35.214-20.804 35.259Q-20.669 35.304-20.442 35.304L-20.442 35.601L-22.067 35.601L-22.067 35.304Q-21.825 35.304-21.825 35.152Q-21.825 35.074-21.868 35.003Q-21.911 34.933-21.993 34.824L-22.794 33.777L-23.321 34.203L-23.321 35.042Q-23.321 35.210-23.153 35.257Q-22.985 35.304-22.716 35.304",[936],[920,5295,5296],{"transform":5283},[925,5297],{"d":5298,"fill":922,"stroke":922,"className":5299,"style":1577},"M-15.334 37.152L-17.189 37.152L-17.189 36.859Q-16.920 36.859-16.752 36.814Q-16.584 36.769-16.584 36.593L-16.584 32.769Q-16.584 32.562-16.740 32.509Q-16.896 32.456-17.189 32.456L-17.189 32.160L-15.967 32.074L-15.967 32.538Q-15.736 32.316-15.422 32.195Q-15.107 32.074-14.767 32.074Q-14.295 32.074-13.891 32.320Q-13.486 32.566-13.254 32.982Q-13.021 33.398-13.021 33.874Q-13.021 34.249-13.170 34.578Q-13.318 34.906-13.588 35.158Q-13.857 35.410-14.201 35.544Q-14.545 35.679-14.904 35.679Q-15.193 35.679-15.465 35.558Q-15.736 35.437-15.943 35.226L-15.943 36.593Q-15.943 36.769-15.775 36.814Q-15.607 36.859-15.334 36.859L-15.334 37.152M-15.943 32.937L-15.943 34.777Q-15.791 35.066-15.529 35.246Q-15.267 35.425-14.959 35.425Q-14.674 35.425-14.451 35.287Q-14.228 35.148-14.076 34.917Q-13.924 34.687-13.846 34.415Q-13.767 34.144-13.767 33.874Q-13.767 33.542-13.892 33.185Q-14.017 32.828-14.266 32.591Q-14.514 32.355-14.861 32.355Q-15.185 32.355-15.480 32.511Q-15.775 32.667-15.943 32.937",[936],[920,5301,5302],{"transform":5283},[925,5303],{"d":5304,"fill":922,"stroke":922,"className":5305,"style":1577},"M-12.259 33.847Q-12.259 33.367-12.026 32.951Q-11.794 32.535-11.384 32.285Q-10.974 32.035-10.497 32.035Q-9.767 32.035-9.368 32.476Q-8.970 32.917-8.970 33.648Q-8.970 33.753-9.063 33.777L-11.513 33.777L-11.513 33.847Q-11.513 34.257-11.392 34.613Q-11.270 34.968-10.999 35.185Q-10.727 35.402-10.298 35.402Q-9.934 35.402-9.638 35.173Q-9.341 34.945-9.239 34.593Q-9.231 34.546-9.145 34.531L-9.063 34.531Q-8.970 34.558-8.970 34.640Q-8.970 34.648-8.977 34.679Q-9.040 34.906-9.179 35.089Q-9.317 35.273-9.509 35.406Q-9.700 35.538-9.919 35.609Q-10.138 35.679-10.376 35.679Q-10.747 35.679-11.085 35.542Q-11.423 35.406-11.690 35.154Q-11.958 34.902-12.108 34.562Q-12.259 34.222-12.259 33.847M-11.505 33.538L-9.544 33.538Q-9.544 33.234-9.645 32.943Q-9.747 32.652-9.964 32.470Q-10.181 32.288-10.497 32.288Q-10.798 32.288-11.028 32.476Q-11.259 32.663-11.382 32.955Q-11.505 33.246-11.505 33.538M-6.474 35.601L-8.454 35.601L-8.454 35.304Q-8.184 35.304-8.017 35.259Q-7.849 35.214-7.849 35.042L-7.849 32.906Q-7.849 32.691-7.911 32.595Q-7.974 32.499-8.091 32.478Q-8.208 32.456-8.454 32.456L-8.454 32.160L-7.286 32.074L-7.286 32.859Q-7.208 32.648-7.056 32.462Q-6.903 32.277-6.704 32.175Q-6.505 32.074-6.278 32.074Q-6.032 32.074-5.841 32.218Q-5.649 32.363-5.649 32.593Q-5.649 32.749-5.755 32.859Q-5.860 32.968-6.017 32.968Q-6.173 32.968-6.282 32.859Q-6.392 32.749-6.392 32.593Q-6.392 32.433-6.286 32.328Q-6.610 32.328-6.825 32.556Q-7.040 32.785-7.136 33.124Q-7.231 33.464-7.231 33.769L-7.231 35.042Q-7.231 35.210-7.005 35.257Q-6.778 35.304-6.474 35.304",[936],[920,5307,5308],{"transform":5283},[925,5309],{"d":5310,"fill":922,"stroke":922,"className":5311,"style":1577},"M-0.421 35.601L-2.253 35.601L-2.253 35.304Q-1.979 35.304-1.811 35.257Q-1.643 35.210-1.643 35.042L-1.643 30.882Q-1.643 30.667-1.706 30.572Q-1.768 30.476-1.887 30.455Q-2.007 30.433-2.253 30.433L-2.253 30.136L-1.030 30.050L-1.030 35.042Q-1.030 35.210-0.862 35.257Q-0.694 35.304-0.421 35.304L-0.421 35.601M0.025 33.847Q0.025 33.367 0.257 32.951Q0.490 32.535 0.900 32.285Q1.310 32.035 1.786 32.035Q2.517 32.035 2.915 32.476Q3.314 32.917 3.314 33.648Q3.314 33.753 3.220 33.777L0.771 33.777L0.771 33.847Q0.771 34.257 0.892 34.613Q1.013 34.968 1.284 35.185Q1.556 35.402 1.986 35.402Q2.349 35.402 2.646 35.173Q2.943 34.945 3.044 34.593Q3.052 34.546 3.138 34.531L3.220 34.531Q3.314 34.558 3.314 34.640Q3.314 34.648 3.306 34.679Q3.243 34.906 3.105 35.089Q2.966 35.273 2.775 35.406Q2.583 35.538 2.365 35.609Q2.146 35.679 1.907 35.679Q1.536 35.679 1.198 35.542Q0.861 35.406 0.593 35.154Q0.325 34.902 0.175 34.562Q0.025 34.222 0.025 33.847M0.779 33.538L2.740 33.538Q2.740 33.234 2.638 32.943Q2.536 32.652 2.320 32.470Q2.103 32.288 1.786 32.288Q1.486 32.288 1.255 32.476Q1.025 32.663 0.902 32.955Q0.779 33.246 0.779 33.538M5.603 35.570L4.380 32.714Q4.298 32.538 4.154 32.494Q4.009 32.449 3.740 32.449L3.740 32.152L5.450 32.152L5.450 32.449Q5.029 32.449 5.029 32.632Q5.029 32.667 5.044 32.714L5.989 34.906L6.829 32.929Q6.868 32.851 6.868 32.761Q6.868 32.621 6.763 32.535Q6.657 32.449 6.517 32.449L6.517 32.152L7.868 32.152L7.868 32.449Q7.345 32.449 7.130 32.929L6.005 35.570Q5.943 35.679 5.837 35.679L5.771 35.679Q5.657 35.679 5.603 35.570",[936],[920,5313,5314],{"transform":5283},[925,5315],{"d":5316,"fill":922,"stroke":922,"className":5317,"style":1577},"M8.054 33.847Q8.054 33.367 8.287 32.951Q8.519 32.535 8.929 32.285Q9.339 32.035 9.816 32.035Q10.546 32.035 10.945 32.476Q11.343 32.917 11.343 33.648Q11.343 33.753 11.250 33.777L8.800 33.777L8.800 33.847Q8.800 34.257 8.921 34.613Q9.043 34.968 9.314 35.185Q9.586 35.402 10.015 35.402Q10.378 35.402 10.675 35.173Q10.972 34.945 11.074 34.593Q11.082 34.546 11.168 34.531L11.250 34.531Q11.343 34.558 11.343 34.640Q11.343 34.648 11.336 34.679Q11.273 34.906 11.134 35.089Q10.996 35.273 10.804 35.406Q10.613 35.538 10.394 35.609Q10.175 35.679 9.937 35.679Q9.566 35.679 9.228 35.542Q8.890 35.406 8.623 35.154Q8.355 34.902 8.205 34.562Q8.054 34.222 8.054 33.847M8.808 33.538L10.769 33.538Q10.769 33.234 10.668 32.943Q10.566 32.652 10.349 32.470Q10.132 32.288 9.816 32.288Q9.515 32.288 9.285 32.476Q9.054 32.663 8.931 32.955Q8.808 33.246 8.808 33.538M13.746 35.601L11.914 35.601L11.914 35.304Q12.187 35.304 12.355 35.257Q12.523 35.210 12.523 35.042L12.523 30.882Q12.523 30.667 12.461 30.572Q12.398 30.476 12.279 30.455Q12.160 30.433 11.914 30.433L11.914 30.136L13.136 30.050L13.136 35.042Q13.136 35.210 13.304 35.257Q13.472 35.304 13.746 35.304",[936],[1032,5319,5321,5322,5343,5344,5359,5360,5435,5436,5460,5461,1211],{"className":5320},[1035],"The geometric cancellation in ",[392,5323,5325],{"className":5324},[395],[392,5326,5328],{"className":5327,"ariaHidden":400},[399],[392,5329,5331,5334],{"className":5330},[404],[392,5332],{"className":5333,"style":2036},[408],[392,5335,5337],{"className":5336},[493,494],[392,5338,5340],{"className":5339},[413,498],[392,5341,3314],{"className":5342},[413],". By height ",[392,5345,5347],{"className":5346},[395],[392,5348,5350],{"className":5349,"ariaHidden":400},[399],[392,5351,5353,5356],{"className":5352},[404],[392,5354],{"className":5355,"style":4053},[408],[392,5357,2348],{"className":5358},[413,423]," the node count halves going up (",[392,5361,5363],{"className":5362},[395],[392,5364,5366,5378],{"className":5365,"ariaHidden":400},[399],[392,5367,5369,5372,5375],{"className":5368},[404],[392,5370],{"className":5371,"style":598},[408],[392,5373,2380],{"className":5374},[602],[392,5376],{"className":5377,"style":746},[428],[392,5379,5381,5385,5388,5391,5394,5432],{"className":5380},[404],[392,5382],{"className":5383,"style":5384},[408],"height:1.0991em;vertical-align:-0.25em;",[392,5386,3985],{"className":5387},[418],[392,5389,424],{"className":5390},[413,423],[392,5392,3992],{"className":5393},[413],[392,5395,5397,5400],{"className":5396},[413],[392,5398,830],{"className":5399},[413],[392,5401,5403],{"className":5402},[1917],[392,5404,5406],{"className":5405},[1921],[392,5407,5409],{"className":5408},[1926],[392,5410,5412],{"className":5411,"style":4011},[1930],[392,5413,5414,5417],{"style":4014},[392,5415],{"className":5416,"style":1939},[1938],[392,5418,5420],{"className":5419},[1943,1944,1945,1946],[392,5421,5423,5426,5429],{"className":5422},[413,1946],[392,5424,2348],{"className":5425},[413,423,1946],[392,5427,889],{"className":5428},[888,1946],[392,5430,575],{"className":5431},[413,1946],[392,5433,4039],{"className":5434},[449],") while per-node work grows only as ",[392,5437,5439],{"className":5438},[395],[392,5440,5442],{"className":5441,"ariaHidden":400},[399],[392,5443,5445,5448,5451,5454,5457],{"className":5444},[404],[392,5446],{"className":5447,"style":409},[408],[392,5449,2248],{"className":5450,"style":2247},[413,423],[392,5452,419],{"className":5453},[418],[392,5455,2348],{"className":5456},[413,423],[392,5458,450],{"className":5459},[449],", so the level totals (right) decay geometrically and sum to ",[392,5462,5464],{"className":5463},[395],[392,5465,5467],{"className":5466,"ariaHidden":400},[399],[392,5468,5470,5473,5476,5479,5482],{"className":5469},[404],[392,5471],{"className":5472,"style":409},[408],[392,5474,2248],{"className":5475,"style":2247},[413,423],[392,5477,419],{"className":5478},[418],[392,5480,424],{"className":5481},[413,423],[392,5483,450],{"className":5484},[449],[555,5486,502],{"id":5487},"heapsort",[381,5489,5490,5491,5515],{},"A max-heap keeps the largest element at the root, ",[392,5492,5494],{"className":5493},[395],[392,5495,5497],{"className":5496,"ariaHidden":400},[399],[392,5498,5500,5503,5506,5509,5512],{"className":5499},[404],[392,5501],{"className":5502,"style":409},[408],[392,5504,651],{"className":5505},[413,423],[392,5507,655],{"className":5508},[418],[392,5510,575],{"className":5511},[413],[392,5513,666],{"className":5514},[449],". To\nsort, we repeatedly move that maximum to where it belongs, the back of the\narray, then shrink the heap and repair it.",[2129,5517,5519],{"className":2131,"code":5518,"language":2133,"meta":376,"style":376},"caption: $\\textsc{Heapsort}(A)$ — sort $A[1..n]$ in place, increasing\nnumber: 3\ncall $\\textsc{Build-Max-Heap}(A)$\nfor $i \\gets A.length$ downto $2$ do\n  exchange $A[1]$ with $A[i]$ \u002F\u002F max to its final slot\n  $A.heapsize \\gets A.heapsize - 1$ \u002F\u002F evict from the heap\n  call $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F restore the shrunken heap\n",[2135,5520,5521,5526,5531,5536,5541,5546,5551],{"__ignoreMap":376},[392,5522,5523],{"class":2139,"line":6},[392,5524,5525],{},"caption: $\\textsc{Heapsort}(A)$ — sort $A[1..n]$ in place, increasing\n",[392,5527,5528],{"class":2139,"line":18},[392,5529,5530],{},"number: 3\n",[392,5532,5533],{"class":2139,"line":24},[392,5534,5535],{},"call $\\textsc{Build-Max-Heap}(A)$\n",[392,5537,5538],{"class":2139,"line":73},[392,5539,5540],{},"for $i \\gets A.length$ downto $2$ do\n",[392,5542,5543],{"class":2139,"line":102},[392,5544,5545],{},"  exchange $A[1]$ with $A[i]$ \u002F\u002F max to its final slot\n",[392,5547,5548],{"class":2139,"line":108},[392,5549,5550],{},"  $A.heapsize \\gets A.heapsize - 1$ \u002F\u002F evict from the heap\n",[392,5552,5553],{"class":2139,"line":116},[392,5554,5555],{},"  call $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F restore the shrunken heap\n",[381,5557,5558,5559,5613,5614,5648,5649,5664],{},"The array splits into two regions: a heap at the front, ",[392,5560,5562],{"className":5561},[395],[392,5563,5565],{"className":5564,"ariaHidden":400},[399],[392,5566,5568,5571,5574,5577,5580,5583,5586,5589,5592,5595,5598,5601,5604,5607,5610],{"className":5567},[404],[392,5569],{"className":5570,"style":409},[408],[392,5572,651],{"className":5573},[413,423],[392,5575,655],{"className":5576},[418],[392,5578,659],{"className":5579},[413],[392,5581,651],{"className":5582},[413,423],[392,5584,1211],{"className":5585},[413],[392,5587,2348],{"className":5588},[413,423],[392,5590,2352],{"className":5591},[413,423],[392,5593,384],{"className":5594},[413,423],[392,5596,381],{"className":5597},[413,423],[392,5599,2362],{"className":5600},[413,423],[392,5602,739],{"className":5603},[413,423],[392,5605,2370],{"className":5606,"style":2369},[413,423],[392,5608,2352],{"className":5609},[413,423],[392,5611,666],{"className":5612},[449],", and\na growing sorted suffix at the back. Each iteration swaps the heap's maximum into\nthe slot just before the sorted suffix, drops the heap size by one, and runs a\nsingle sift-down from the root to re-establish the max-heap property on the\nsmaller heap. After ",[392,5615,5617],{"className":5616},[395],[392,5618,5620,5639],{"className":5619,"ariaHidden":400},[399],[392,5621,5623,5627,5630,5633,5636],{"className":5622},[404],[392,5624],{"className":5625,"style":5626},[408],"height:0.6667em;vertical-align:-0.0833em;",[392,5628,424],{"className":5629},[413,423],[392,5631],{"className":5632,"style":884},[428],[392,5634,4885],{"className":5635},[888],[392,5637],{"className":5638,"style":884},[428],[392,5640,5642,5645],{"className":5641},[404],[392,5643],{"className":5644,"style":705},[408],[392,5646,575],{"className":5647},[413]," iterations the heap is a single element, necessarily\nthe global minimum, and ",[392,5650,5652],{"className":5651},[395],[392,5653,5655],{"className":5654,"ariaHidden":400},[399],[392,5656,5658,5661],{"className":5657},[404],[392,5659],{"className":5660,"style":1055},[408],[392,5662,651],{"className":5663},[413,423]," is sorted ascending.",[907,5666,5668,5913],{"className":5667},[910,911],[913,5669,5673],{"xmlns":915,"width":5670,"height":5671,"viewBox":5672},"237.623","119.315","-75 -75 178.217 89.486",[920,5674,5675,5687,5699,5711,5723,5735,5747,5759,5766,5773,5780,5787,5794,5801,5808,5835,5842,5845,5848,5856],{"stroke":922,"style":923},[920,5676,5677,5680],{"fill":2444},[925,5678],{"d":5679},"M-65.403-28.66h21.34V-50h-21.34Z",[920,5681,5683],{"transform":5682},"translate(21.019 2.9)",[925,5684],{"d":5685,"fill":922,"stroke":922,"className":5686,"style":937},"M-77.002-39.717Q-76.755-39.418-76.149-39.418Q-75.868-39.418-75.628-39.556Q-75.389-39.695-75.211-39.917Q-75.033-40.139-74.923-40.402Q-74.690-40.978-74.690-42.094Q-74.857-41.729-75.162-41.505Q-75.468-41.281-75.850-41.281Q-76.386-41.281-76.802-41.560Q-77.217-41.839-77.448-42.305Q-77.678-42.771-77.678-43.298Q-77.678-43.711-77.531-44.080Q-77.384-44.450-77.120-44.726Q-76.857-45.003-76.487-45.164Q-76.118-45.324-75.705-45.324Q-75.147-45.324-74.773-45.032Q-74.400-44.740-74.196-44.276Q-73.991-43.812-73.912-43.296Q-73.833-42.780-73.833-42.248Q-73.833-41.532-74.101-40.809Q-74.369-40.086-74.892-39.609Q-75.415-39.132-76.140-39.132Q-76.690-39.132-77.067-39.381Q-77.445-39.629-77.445-40.147Q-77.445-40.266-77.388-40.369Q-77.331-40.473-77.230-40.532Q-77.129-40.591-77.002-40.591Q-76.817-40.591-76.694-40.459Q-76.571-40.328-76.571-40.147Q-76.571-39.972-76.698-39.844Q-76.826-39.717-77.002-39.717M-75.806-41.545Q-75.437-41.545-75.189-41.787Q-74.940-42.028-74.824-42.386Q-74.708-42.745-74.708-43.118Q-74.708-43.228-74.716-43.281Q-74.712-43.294-74.710-43.305Q-74.708-43.316-74.708-43.333Q-74.708-43.988-74.923-44.527Q-75.138-45.065-75.705-45.065Q-76.065-45.065-76.294-44.915Q-76.523-44.766-76.639-44.509Q-76.755-44.252-76.788-43.971Q-76.821-43.689-76.821-43.316L-76.821-43.281Q-76.821-42.955-76.795-42.668Q-76.769-42.380-76.670-42.121Q-76.571-41.861-76.360-41.703Q-76.149-41.545-75.806-41.545",[936],[920,5688,5689,5692],{"fill":2444},[925,5690],{"d":5691},"M-42.072-28.66h21.34V-50h-21.34Z",[920,5693,5695],{"transform":5694},"translate(44.35 2.9)",[925,5696],{"d":5697,"fill":922,"stroke":922,"className":5698,"style":937},"M-76.443-39.572Q-76.443-40.209-76.287-40.855Q-76.131-41.501-75.839-42.107Q-75.547-42.714-75.138-43.263L-74.321-44.371L-75.349-44.371Q-76.993-44.371-77.041-44.327Q-77.147-44.199-77.265-43.496L-77.551-43.496L-77.256-45.412L-76.966-45.412L-76.966-45.386Q-76.966-45.223-76.402-45.175Q-75.837-45.126-75.292-45.126L-73.574-45.126L-73.574-44.920Q-73.574-44.902-73.576-44.893Q-73.578-44.885-73.583-44.876L-74.870-43.127Q-75.121-42.775-75.268-42.349Q-75.415-41.923-75.481-41.459Q-75.547-40.996-75.560-40.585Q-75.573-40.174-75.573-39.572Q-75.573-39.392-75.699-39.262Q-75.824-39.132-76.004-39.132Q-76.123-39.132-76.226-39.189Q-76.329-39.247-76.386-39.350Q-76.443-39.453-76.443-39.572",[936],[920,5700,5701,5704],{"fill":2444},[925,5702],{"d":5703},"M-18.74-28.66H2.6V-50h-21.34Z",[920,5705,5707],{"transform":5706},"translate(67.682 2.9)",[925,5708],{"d":5709,"fill":922,"stroke":922,"className":5710,"style":937},"M-77.164-40.051L-77.208-40.051Q-77.006-39.734-76.619-39.576Q-76.232-39.418-75.806-39.418Q-75.270-39.418-75.031-39.853Q-74.791-40.288-74.791-40.868Q-74.791-41.448-75.037-41.888Q-75.283-42.327-75.815-42.327L-76.435-42.327Q-76.461-42.327-76.494-42.356Q-76.527-42.384-76.527-42.406L-76.527-42.507Q-76.527-42.538-76.498-42.562Q-76.470-42.586-76.435-42.586L-75.916-42.626Q-75.450-42.626-75.204-43.098Q-74.958-43.571-74.958-44.089Q-74.958-44.516-75.171-44.790Q-75.384-45.065-75.806-45.065Q-76.149-45.065-76.474-44.935Q-76.799-44.806-76.984-44.551L-76.958-44.551Q-76.755-44.551-76.619-44.410Q-76.483-44.269-76.483-44.072Q-76.483-43.874-76.617-43.740Q-76.751-43.606-76.949-43.606Q-77.151-43.606-77.289-43.740Q-77.428-43.874-77.428-44.072Q-77.428-44.661-76.925-44.992Q-76.421-45.324-75.806-45.324Q-75.428-45.324-75.026-45.184Q-74.624-45.043-74.356-44.764Q-74.088-44.485-74.088-44.089Q-74.088-43.540-74.442-43.103Q-74.795-42.665-75.336-42.481Q-74.945-42.402-74.600-42.178Q-74.255-41.954-74.044-41.613Q-73.833-41.272-73.833-40.877Q-73.833-40.495-73.996-40.172Q-74.158-39.849-74.450-39.613Q-74.743-39.378-75.090-39.255Q-75.437-39.132-75.806-39.132Q-76.254-39.132-76.685-39.293Q-77.116-39.453-77.397-39.780Q-77.678-40.108-77.678-40.565Q-77.678-40.780-77.531-40.923Q-77.384-41.066-77.164-41.066Q-76.953-41.066-76.808-40.921Q-76.663-40.776-76.663-40.565Q-76.663-40.354-76.810-40.202Q-76.958-40.051-77.164-40.051",[936],[920,5712,5713,5716],{"fill":2444},[925,5714],{"d":5715},"M4.591-28.66h21.34V-50H4.59Z",[920,5717,5719],{"transform":5718},"translate(91.013 2.9)",[925,5720],{"d":5721,"fill":922,"stroke":922,"className":5722,"style":937},"M-74.158-39.330L-77.608-39.330L-77.608-39.563Q-77.608-39.576-77.577-39.607L-76.123-41.184Q-75.657-41.681-75.404-41.986Q-75.151-42.292-74.960-42.703Q-74.769-43.114-74.769-43.553Q-74.769-44.142-75.092-44.575Q-75.415-45.008-75.995-45.008Q-76.259-45.008-76.505-44.898Q-76.751-44.788-76.927-44.601Q-77.103-44.414-77.199-44.164L-77.120-44.164Q-76.918-44.164-76.775-44.028Q-76.632-43.892-76.632-43.676Q-76.632-43.470-76.775-43.331Q-76.918-43.193-77.120-43.193Q-77.322-43.193-77.465-43.336Q-77.608-43.478-77.608-43.676Q-77.608-44.138-77.371-44.511Q-77.133-44.885-76.733-45.104Q-76.334-45.324-75.885-45.324Q-75.362-45.324-74.908-45.109Q-74.453-44.893-74.180-44.494Q-73.908-44.094-73.908-43.553Q-73.908-43.158-74.079-42.804Q-74.251-42.450-74.516-42.171Q-74.782-41.892-75.233-41.507Q-75.683-41.123-75.762-41.048L-76.786-40.086L-75.969-40.086Q-75.318-40.086-74.881-40.097Q-74.444-40.108-74.413-40.130Q-74.343-40.213-74.288-40.453Q-74.233-40.692-74.193-40.960L-73.908-40.960",[936],[920,5724,5725,5728],{"fill":2444},[925,5726],{"d":5727},"M27.922-28.66h21.34V-50h-21.34Z",[920,5729,5731],{"transform":5730},"translate(114.345 2.9)",[925,5732],{"d":5733,"fill":922,"stroke":922,"className":5734,"style":937},"M-75.367-40.807L-77.806-40.807L-77.806-41.123L-74.980-45.271Q-74.936-45.324-74.870-45.324L-74.716-45.324Q-74.677-45.324-74.644-45.291Q-74.611-45.258-74.611-45.214L-74.611-41.123L-73.710-41.123L-73.710-40.807L-74.611-40.807L-74.611-39.941Q-74.611-39.646-73.710-39.646L-73.710-39.330L-76.263-39.330L-76.263-39.646Q-75.903-39.646-75.635-39.701Q-75.367-39.756-75.367-39.941L-75.367-40.807M-75.310-44.296L-77.472-41.123L-75.310-41.123",[936],[920,5736,5737,5740],{"fill":3097},[925,5738],{"d":5739},"M51.254-28.66h21.34V-50h-21.34Z",[920,5741,5743],{"transform":5742},"translate(135.364 2.9)",[925,5744],{"d":5745,"fill":922,"stroke":922,"className":5746,"style":937},"M-74.158-39.330L-77.190-39.330L-77.190-39.646Q-76.039-39.646-76.039-39.941L-76.039-44.665Q-76.527-44.432-77.248-44.432L-77.248-44.748Q-76.118-44.748-75.556-45.324L-75.411-45.324Q-75.376-45.324-75.343-45.291Q-75.310-45.258-75.310-45.223L-75.310-39.941Q-75.310-39.646-74.158-39.646L-74.158-39.330M-70.748-40.807L-73.187-40.807L-73.187-41.123L-70.361-45.271Q-70.317-45.324-70.252-45.324L-70.098-45.324Q-70.058-45.324-70.025-45.291Q-69.992-45.258-69.992-45.214L-69.992-41.123L-69.091-41.123L-69.091-40.807L-69.992-40.807L-69.992-39.941Q-69.992-39.646-69.091-39.646L-69.091-39.330L-71.645-39.330L-71.645-39.646Q-71.284-39.646-71.016-39.701Q-70.748-39.756-70.748-39.941L-70.748-40.807M-70.691-44.296L-72.853-41.123L-70.691-41.123",[936],[920,5748,5749,5752],{"fill":3097},[925,5750],{"d":5751},"M74.585-28.66h21.34V-50h-21.34Z",[920,5753,5755],{"transform":5754},"translate(158.695 2.9)",[925,5756],{"d":5757,"fill":922,"stroke":922,"className":5758,"style":937},"M-74.158-39.330L-77.190-39.330L-77.190-39.646Q-76.039-39.646-76.039-39.941L-76.039-44.665Q-76.527-44.432-77.248-44.432L-77.248-44.748Q-76.118-44.748-75.556-45.324L-75.411-45.324Q-75.376-45.324-75.343-45.291Q-75.310-45.258-75.310-45.223L-75.310-39.941Q-75.310-39.646-74.158-39.646L-74.158-39.330M-71.135-39.132Q-71.869-39.132-72.299-39.613Q-72.730-40.095-72.895-40.787Q-73.060-41.479-73.060-42.226Q-73.060-42.955-72.767-43.678Q-72.475-44.401-71.921-44.863Q-71.368-45.324-70.621-45.324Q-70.124-45.324-69.788-45.058Q-69.452-44.792-69.452-44.309Q-69.452-44.129-69.579-44.001Q-69.707-43.874-69.882-43.874Q-70.063-43.874-70.192-43.999Q-70.322-44.124-70.322-44.309Q-70.322-44.423-70.265-44.527Q-70.208-44.630-70.107-44.689Q-70.005-44.748-69.882-44.748Q-69.878-44.748-69.874-44.746Q-69.869-44.744-69.865-44.740Q-69.979-44.907-70.188-44.986Q-70.397-45.065-70.621-45.065Q-71.065-45.065-71.423-44.764Q-71.781-44.463-71.970-44.010Q-72.203-43.404-72.203-42.371Q-72.031-42.736-71.730-42.964Q-71.429-43.193-71.043-43.193Q-70.638-43.193-70.293-43.026Q-69.948-42.859-69.711-42.578Q-69.474-42.296-69.344-41.934Q-69.214-41.571-69.214-41.167Q-69.214-40.622-69.458-40.156Q-69.702-39.690-70.142-39.411Q-70.581-39.132-71.135-39.132M-71.135-39.418Q-70.673-39.418-70.438-39.675Q-70.203-39.932-70.137-40.306Q-70.071-40.679-70.071-41.149L-70.071-41.184Q-70.071-41.672-70.128-42.037Q-70.186-42.402-70.414-42.665Q-70.643-42.929-71.086-42.929Q-71.456-42.929-71.706-42.685Q-71.957-42.441-72.071-42.077Q-72.185-41.712-72.185-41.365Q-72.185-41.246-72.176-41.184Q-72.176-41.167-72.179-41.156Q-72.181-41.145-72.185-41.132Q-72.185-40.481-71.948-39.950Q-71.711-39.418-71.135-39.418",[936],[920,5760,5762],{"transform":5761},"translate(21.338 19.896)",[925,5763],{"d":5764,"fill":3233,"stroke":3233,"className":5765,"style":1422},"M-74.739-39.330L-77.269-39.330L-77.269-39.610Q-76.301-39.610-76.301-39.819L-76.301-43.438Q-76.694-43.250-77.316-43.250L-77.316-43.531Q-76.899-43.531-76.535-43.632Q-76.171-43.732-75.915-43.978L-75.789-43.978Q-75.724-43.961-75.707-43.893L-75.707-39.819Q-75.707-39.610-74.739-39.610",[936],[920,5767,5769],{"transform":5768},"translate(44.67 19.896)",[925,5770],{"d":5771,"fill":3233,"stroke":3233,"className":5772,"style":1422},"M-74.739-39.330L-77.624-39.330L-77.624-39.532Q-77.624-39.562-77.597-39.590L-76.349-40.807Q-76.277-40.882-76.235-40.924Q-76.192-40.967-76.113-41.046Q-75.700-41.459-75.469-41.817Q-75.238-42.174-75.238-42.598Q-75.238-42.830-75.317-43.033Q-75.396-43.237-75.537-43.387Q-75.679-43.538-75.874-43.618Q-76.069-43.698-76.301-43.698Q-76.612-43.698-76.870-43.539Q-77.128-43.380-77.258-43.103L-77.238-43.103Q-77.070-43.103-76.963-42.992Q-76.855-42.881-76.855-42.717Q-76.855-42.560-76.964-42.447Q-77.074-42.334-77.238-42.334Q-77.398-42.334-77.511-42.447Q-77.624-42.560-77.624-42.717Q-77.624-43.093-77.416-43.380Q-77.207-43.667-76.872-43.823Q-76.537-43.978-76.182-43.978Q-75.758-43.978-75.378-43.820Q-74.999-43.661-74.765-43.344Q-74.531-43.028-74.531-42.598Q-74.531-42.287-74.671-42.018Q-74.811-41.750-75.016-41.545Q-75.221-41.340-75.584-41.058Q-75.946-40.776-76.055-40.680L-76.910-39.952L-76.267-39.952Q-76.004-39.952-75.715-39.954Q-75.426-39.955-75.208-39.964Q-74.989-39.973-74.972-39.990Q-74.910-40.055-74.873-40.222Q-74.835-40.390-74.797-40.632L-74.531-40.632",[936],[920,5774,5776],{"transform":5775},"translate(68.001 19.896)",[925,5777],{"d":5778,"fill":3233,"stroke":3233,"className":5779,"style":1422},"M-77.269-39.877Q-77.149-39.720-76.958-39.621Q-76.766-39.521-76.551-39.482Q-76.336-39.443-76.113-39.443Q-75.816-39.443-75.621-39.598Q-75.426-39.754-75.336-40.008Q-75.245-40.263-75.245-40.547Q-75.245-40.841-75.337-41.092Q-75.430-41.343-75.628-41.499Q-75.826-41.654-76.120-41.654L-76.636-41.654Q-76.664-41.654-76.689-41.680Q-76.715-41.705-76.715-41.729L-76.715-41.801Q-76.715-41.832-76.689-41.854Q-76.664-41.876-76.636-41.876L-76.195-41.907Q-75.833-41.907-75.613-42.264Q-75.392-42.622-75.392-43.011Q-75.392-43.339-75.587-43.543Q-75.782-43.746-76.113-43.746Q-76.400-43.746-76.653-43.662Q-76.906-43.579-77.070-43.391Q-76.923-43.391-76.823-43.276Q-76.722-43.162-76.722-43.011Q-76.722-42.861-76.828-42.751Q-76.934-42.642-77.091-42.642Q-77.252-42.642-77.361-42.751Q-77.470-42.861-77.470-43.011Q-77.470-43.336-77.262-43.555Q-77.053-43.773-76.737-43.876Q-76.421-43.978-76.113-43.978Q-75.795-43.978-75.467-43.874Q-75.139-43.770-74.912-43.548Q-74.685-43.326-74.685-43.011Q-74.685-42.577-74.972-42.252Q-75.259-41.928-75.693-41.781Q-75.382-41.716-75.102-41.550Q-74.821-41.384-74.644-41.126Q-74.466-40.868-74.466-40.547Q-74.466-40.137-74.710-39.827Q-74.955-39.518-75.336-39.354Q-75.717-39.190-76.113-39.190Q-76.482-39.190-76.840-39.303Q-77.197-39.415-77.441-39.665Q-77.686-39.914-77.686-40.284Q-77.686-40.455-77.569-40.567Q-77.453-40.680-77.282-40.680Q-77.173-40.680-77.082-40.629Q-76.992-40.578-76.937-40.485Q-76.882-40.393-76.882-40.284Q-76.882-40.116-76.995-39.997Q-77.108-39.877-77.269-39.877",[936],[920,5781,5783],{"transform":5782},"translate(91.333 19.896)",[925,5784],{"d":5785,"fill":3233,"stroke":3233,"className":5786,"style":1422},"M-75.748-40.478L-77.792-40.478L-77.792-40.759L-75.461-43.931Q-75.426-43.978-75.361-43.978L-75.225-43.978Q-75.180-43.978-75.153-43.951Q-75.126-43.924-75.126-43.879L-75.126-40.759L-74.363-40.759L-74.363-40.478L-75.126-40.478L-75.126-39.819Q-75.126-39.610-74.370-39.610L-74.370-39.330L-76.503-39.330L-76.503-39.610Q-75.748-39.610-75.748-39.819L-75.748-40.478M-75.700-43.203L-77.491-40.759L-75.700-40.759",[936],[920,5788,5790],{"transform":5789},"translate(114.664 19.896)",[925,5791],{"d":5792,"fill":3233,"stroke":3233,"className":5793,"style":1422},"M-77.258-40.092L-77.289-40.092Q-77.152-39.795-76.855-39.619Q-76.558-39.443-76.230-39.443Q-75.867-39.443-75.640-39.621Q-75.413-39.798-75.319-40.087Q-75.225-40.376-75.225-40.738Q-75.225-41.053-75.279-41.338Q-75.334-41.623-75.507-41.829Q-75.679-42.034-75.994-42.034Q-76.267-42.034-76.450-41.967Q-76.633-41.900-76.737-41.811Q-76.841-41.723-76.937-41.613Q-77.033-41.504-77.077-41.494L-77.156-41.494Q-77.228-41.511-77.245-41.582L-77.245-43.900Q-77.245-43.934-77.221-43.956Q-77.197-43.978-77.163-43.978L-77.135-43.978Q-76.848-43.862-76.580-43.808Q-76.312-43.753-76.035-43.753Q-75.758-43.753-75.488-43.808Q-75.218-43.862-74.938-43.978L-74.914-43.978Q-74.879-43.978-74.856-43.955Q-74.832-43.931-74.832-43.900L-74.832-43.831Q-74.832-43.804-74.852-43.784Q-75.126-43.469-75.510-43.293Q-75.895-43.117-76.308-43.117Q-76.647-43.117-76.964-43.203L-76.964-41.921Q-76.568-42.256-75.994-42.256Q-75.590-42.256-75.254-42.046Q-74.917-41.835-74.724-41.483Q-74.531-41.131-74.531-40.731Q-74.531-40.400-74.671-40.114Q-74.811-39.829-75.055-39.619Q-75.300-39.409-75.602-39.299Q-75.905-39.190-76.223-39.190Q-76.582-39.190-76.908-39.354Q-77.234-39.518-77.429-39.810Q-77.624-40.102-77.624-40.465Q-77.624-40.615-77.518-40.721Q-77.412-40.827-77.258-40.827Q-77.105-40.827-77-40.723Q-76.896-40.619-76.896-40.465Q-76.896-40.308-77-40.200Q-77.105-40.092-77.258-40.092",[936],[920,5795,5797],{"transform":5796},"translate(137.996 19.896)",[925,5798],{"d":5799,"fill":3233,"stroke":3233,"className":5800,"style":1422},"M-76.076-39.190Q-76.534-39.190-76.852-39.405Q-77.169-39.621-77.351-39.973Q-77.532-40.325-77.609-40.745Q-77.686-41.165-77.686-41.593Q-77.686-42.177-77.433-42.733Q-77.180-43.288-76.710-43.633Q-76.240-43.978-75.642-43.978Q-75.232-43.978-74.948-43.780Q-74.664-43.582-74.664-43.179Q-74.664-43.083-74.710-43.004Q-74.756-42.926-74.837-42.881Q-74.917-42.837-75.006-42.837Q-75.153-42.837-75.254-42.934Q-75.355-43.032-75.355-43.179Q-75.355-43.309-75.264-43.416Q-75.173-43.524-75.040-43.524Q-75.228-43.746-75.642-43.746Q-75.956-43.746-76.230-43.582Q-76.503-43.418-76.670-43.144Q-76.858-42.854-76.923-42.488Q-76.988-42.122-76.988-41.668Q-76.838-41.962-76.573-42.140Q-76.308-42.317-75.994-42.317Q-75.563-42.317-75.214-42.111Q-74.866-41.904-74.666-41.548Q-74.466-41.193-74.466-40.766Q-74.466-40.321-74.683-39.961Q-74.900-39.600-75.273-39.395Q-75.645-39.190-76.076-39.190M-76.076-39.443Q-75.700-39.443-75.496-39.626Q-75.293-39.809-75.230-40.092Q-75.167-40.376-75.167-40.766Q-75.167-41.152-75.221-41.432Q-75.276-41.712-75.471-41.904Q-75.666-42.095-76.035-42.095Q-76.325-42.095-76.537-41.919Q-76.749-41.743-76.857-41.470Q-76.964-41.196-76.964-40.913L-76.964-40.772L-76.964-40.731Q-76.964-40.226-76.752-39.834Q-76.541-39.443-76.076-39.443",[936],[920,5802,5804],{"transform":5803},"translate(161.327 19.896)",[925,5805],{"d":5806,"fill":3233,"stroke":3233,"className":5807,"style":1422},"M-76.629-39.538Q-76.629-40.044-76.500-40.552Q-76.370-41.059-76.132-41.521Q-75.895-41.982-75.560-42.403L-74.914-43.216L-75.727-43.216Q-76.312-43.216-76.708-43.208Q-77.105-43.199-77.128-43.179Q-77.231-43.062-77.310-42.536L-77.576-42.536L-77.330-44.060L-77.064-44.060L-77.064-44.040Q-77.064-43.972-76.988-43.929Q-76.913-43.886-76.835-43.879Q-76.643-43.855-76.448-43.849Q-76.253-43.842-76.062-43.840Q-75.871-43.838-75.672-43.838L-74.251-43.838L-74.251-43.650Q-74.261-43.602-74.271-43.592L-75.327-42.269Q-75.546-41.996-75.669-41.683Q-75.792-41.371-75.850-41.022Q-75.908-40.673-75.922-40.342Q-75.936-40.010-75.936-39.538Q-75.936-39.388-76.035-39.289Q-76.134-39.190-76.281-39.190Q-76.431-39.190-76.530-39.289Q-76.629-39.388-76.629-39.538",[936],[920,5809,5810,5817,5823,5829],{"fill":1420,"stroke":927,"fontFamily":5280,"fontSize":1124},[920,5811,5813],{"transform":5812},"translate(23.81 -23.607)",[925,5814],{"d":5815,"fill":1420,"stroke":1420,"className":5816,"style":1577},"M-75.897-39.330L-77.752-39.330L-77.752-39.627Q-77.479-39.627-77.311-39.674Q-77.143-39.721-77.143-39.889L-77.143-42.025Q-77.143-42.240-77.206-42.336Q-77.268-42.432-77.387-42.453Q-77.506-42.475-77.752-42.475L-77.752-42.771L-76.561-42.857L-76.561-42.123Q-76.448-42.338-76.254-42.506Q-76.061-42.674-75.823-42.766Q-75.585-42.857-75.331-42.857Q-74.370-42.857-74.194-42.146Q-74.010-42.475-73.682-42.666Q-73.354-42.857-72.975-42.857Q-71.799-42.857-71.799-41.779L-71.799-39.889Q-71.799-39.721-71.631-39.674Q-71.463-39.627-71.194-39.627L-71.194-39.330L-73.049-39.330L-73.049-39.627Q-72.776-39.627-72.608-39.672Q-72.440-39.717-72.440-39.889L-72.440-41.764Q-72.440-42.150-72.565-42.377Q-72.690-42.603-73.042-42.603Q-73.346-42.603-73.602-42.441Q-73.858-42.279-74.006-42.010Q-74.155-41.740-74.155-41.443L-74.155-39.889Q-74.155-39.721-73.985-39.674Q-73.815-39.627-73.545-39.627L-73.545-39.330L-75.401-39.330L-75.401-39.627Q-75.127-39.627-74.960-39.674Q-74.792-39.721-74.792-39.889L-74.792-41.764Q-74.792-42.150-74.917-42.377Q-75.042-42.603-75.393-42.603Q-75.698-42.603-75.954-42.441Q-76.210-42.279-76.358-42.010Q-76.506-41.740-76.506-41.443L-76.506-39.889Q-76.506-39.721-76.336-39.674Q-76.167-39.627-75.897-39.627L-75.897-39.330M-70.651-40.162Q-70.651-40.646-70.249-40.941Q-69.846-41.236-69.295-41.355Q-68.745-41.475-68.252-41.475L-68.252-41.764Q-68.252-41.990-68.368-42.197Q-68.483-42.404-68.680-42.523Q-68.877-42.642-69.108-42.642Q-69.534-42.642-69.819-42.537Q-69.749-42.510-69.702-42.455Q-69.655-42.400-69.629-42.330Q-69.604-42.260-69.604-42.185Q-69.604-42.080-69.655-41.988Q-69.706-41.896-69.797-41.846Q-69.889-41.795-69.995-41.795Q-70.100-41.795-70.192-41.846Q-70.284-41.896-70.335-41.988Q-70.385-42.080-70.385-42.185Q-70.385-42.603-69.997-42.750Q-69.608-42.896-69.108-42.896Q-68.776-42.896-68.422-42.766Q-68.069-42.635-67.840-42.381Q-67.612-42.127-67.612-41.779L-67.612-39.978Q-67.612-39.846-67.540-39.736Q-67.467-39.627-67.338-39.627Q-67.213-39.627-67.145-39.732Q-67.077-39.838-67.077-39.978L-67.077-40.490L-66.795-40.490L-66.795-39.978Q-66.795-39.775-66.913-39.617Q-67.030-39.459-67.211-39.375Q-67.393-39.291-67.596-39.291Q-67.827-39.291-67.979-39.463Q-68.131-39.635-68.163-39.865Q-68.323-39.584-68.631-39.418Q-68.940-39.252-69.292-39.252Q-69.803-39.252-70.227-39.475Q-70.651-39.697-70.651-40.162M-69.963-40.162Q-69.963-39.877-69.737-39.691Q-69.510-39.506-69.217-39.506Q-68.971-39.506-68.747-39.623Q-68.522-39.740-68.387-39.943Q-68.252-40.146-68.252-40.400L-68.252-41.232Q-68.518-41.232-68.803-41.178Q-69.088-41.123-69.360-40.994Q-69.631-40.865-69.797-40.658Q-69.963-40.451-69.963-40.162M-65.116-39.330L-66.612-39.330L-66.612-39.627Q-65.979-39.627-65.557-40.107L-64.788-41.017L-65.780-42.217Q-65.936-42.396-66.098-42.439Q-66.260-42.482-66.565-42.482L-66.565-42.779L-64.877-42.779L-64.877-42.482Q-64.971-42.482-65.047-42.439Q-65.124-42.396-65.124-42.307Q-65.124-42.264-65.092-42.217L-64.436-41.428L-63.956-42.002Q-63.838-42.139-63.838-42.275Q-63.838-42.365-63.889-42.424Q-63.940-42.482-64.022-42.482L-64.022-42.779L-62.534-42.779L-62.534-42.482Q-63.170-42.482-63.581-42.002L-64.260-41.201L-63.174-39.889Q-63.014-39.713-62.854-39.670Q-62.694-39.627-62.389-39.627L-62.389-39.330L-64.077-39.330L-64.077-39.627Q-63.987-39.627-63.909-39.670Q-63.831-39.713-63.831-39.803Q-63.831-39.826-63.862-39.889L-64.604-40.795L-65.190-40.107Q-65.307-39.971-65.307-39.834Q-65.307-39.748-65.256-39.687Q-65.206-39.627-65.116-39.627L-65.116-39.330M-59.909-40.779L-62.163-40.779L-62.163-41.330L-59.909-41.330L-59.909-40.779M-57.260-39.330L-59.116-39.330L-59.116-39.627Q-58.842-39.627-58.674-39.674Q-58.506-39.721-58.506-39.889L-58.506-44.049Q-58.506-44.264-58.569-44.359Q-58.631-44.455-58.751-44.476Q-58.870-44.498-59.116-44.498L-59.116-44.795L-57.893-44.881L-57.893-42.178Q-57.768-42.389-57.581-42.539Q-57.393-42.689-57.167-42.773Q-56.940-42.857-56.694-42.857Q-55.526-42.857-55.526-41.779L-55.526-39.889Q-55.526-39.721-55.356-39.674Q-55.186-39.627-54.917-39.627L-54.917-39.330L-56.772-39.330L-56.772-39.627Q-56.499-39.627-56.331-39.674Q-56.163-39.721-56.163-39.889L-56.163-41.764Q-56.163-42.146-56.284-42.375Q-56.405-42.603-56.756-42.603Q-57.069-42.603-57.323-42.441Q-57.577-42.279-57.723-42.010Q-57.870-41.740-57.870-41.443L-57.870-39.889Q-57.870-39.721-57.700-39.674Q-57.530-39.627-57.260-39.627L-57.260-39.330M-54.471-41.084Q-54.471-41.564-54.239-41.980Q-54.006-42.396-53.596-42.646Q-53.186-42.896-52.710-42.896Q-51.979-42.896-51.581-42.455Q-51.182-42.014-51.182-41.283Q-51.182-41.178-51.276-41.154L-53.725-41.154L-53.725-41.084Q-53.725-40.674-53.604-40.318Q-53.483-39.963-53.211-39.746Q-52.940-39.529-52.510-39.529Q-52.147-39.529-51.850-39.758Q-51.553-39.986-51.452-40.338Q-51.444-40.385-51.358-40.400L-51.276-40.400Q-51.182-40.373-51.182-40.291Q-51.182-40.283-51.190-40.252Q-51.252-40.025-51.391-39.842Q-51.530-39.658-51.721-39.525Q-51.913-39.392-52.131-39.322Q-52.350-39.252-52.588-39.252Q-52.960-39.252-53.297-39.389Q-53.635-39.525-53.903-39.777Q-54.170-40.029-54.321-40.369Q-54.471-40.709-54.471-41.084M-53.717-41.392L-51.756-41.392Q-51.756-41.697-51.858-41.988Q-51.960-42.279-52.176-42.461Q-52.393-42.642-52.710-42.642Q-53.010-42.642-53.241-42.455Q-53.471-42.267-53.594-41.976Q-53.717-41.685-53.717-41.392M-50.596-40.162Q-50.596-40.646-50.194-40.941Q-49.792-41.236-49.241-41.355Q-48.690-41.475-48.198-41.475L-48.198-41.764Q-48.198-41.990-48.313-42.197Q-48.428-42.404-48.626-42.523Q-48.823-42.642-49.053-42.642Q-49.479-42.642-49.764-42.537Q-49.694-42.510-49.647-42.455Q-49.600-42.400-49.575-42.330Q-49.549-42.260-49.549-42.185Q-49.549-42.080-49.600-41.988Q-49.651-41.896-49.743-41.846Q-49.835-41.795-49.940-41.795Q-50.045-41.795-50.137-41.846Q-50.229-41.896-50.280-41.988Q-50.331-42.080-50.331-42.185Q-50.331-42.603-49.942-42.750Q-49.553-42.896-49.053-42.896Q-48.721-42.896-48.368-42.766Q-48.014-42.635-47.786-42.381Q-47.557-42.127-47.557-41.779L-47.557-39.978Q-47.557-39.846-47.485-39.736Q-47.413-39.627-47.284-39.627Q-47.159-39.627-47.090-39.732Q-47.022-39.838-47.022-39.978L-47.022-40.490L-46.741-40.490L-46.741-39.978Q-46.741-39.775-46.858-39.617Q-46.975-39.459-47.157-39.375Q-47.338-39.291-47.542-39.291Q-47.772-39.291-47.924-39.463Q-48.077-39.635-48.108-39.865Q-48.268-39.584-48.577-39.418Q-48.885-39.252-49.237-39.252Q-49.749-39.252-50.172-39.475Q-50.596-39.697-50.596-40.162M-49.909-40.162Q-49.909-39.877-49.682-39.691Q-49.456-39.506-49.163-39.506Q-48.917-39.506-48.692-39.623Q-48.467-39.740-48.333-39.943Q-48.198-40.146-48.198-40.400L-48.198-41.232Q-48.463-41.232-48.749-41.178Q-49.034-41.123-49.305-40.994Q-49.577-40.865-49.743-40.658Q-49.909-40.451-49.909-40.162M-44.565-37.779L-46.420-37.779L-46.420-38.072Q-46.151-38.072-45.983-38.117Q-45.815-38.162-45.815-38.338L-45.815-42.162Q-45.815-42.369-45.971-42.422Q-46.127-42.475-46.420-42.475L-46.420-42.771L-45.198-42.857L-45.198-42.392Q-44.967-42.615-44.653-42.736Q-44.338-42.857-43.999-42.857Q-43.526-42.857-43.122-42.611Q-42.717-42.365-42.485-41.949Q-42.252-41.533-42.252-41.057Q-42.252-40.682-42.401-40.353Q-42.549-40.025-42.819-39.773Q-43.088-39.521-43.432-39.387Q-43.776-39.252-44.135-39.252Q-44.424-39.252-44.696-39.373Q-44.967-39.494-45.174-39.705L-45.174-38.338Q-45.174-38.162-45.006-38.117Q-44.838-38.072-44.565-38.072L-44.565-37.779M-45.174-41.994L-45.174-40.154Q-45.022-39.865-44.760-39.685Q-44.499-39.506-44.190-39.506Q-43.905-39.506-43.682-39.644Q-43.460-39.783-43.307-40.014Q-43.155-40.244-43.077-40.516Q-42.999-40.787-42.999-41.057Q-42.999-41.389-43.124-41.746Q-43.249-42.103-43.497-42.340Q-43.745-42.576-44.092-42.576Q-44.417-42.576-44.711-42.420Q-45.006-42.264-45.174-41.994",[936],[920,5818,5819],{"transform":5812},[925,5820],{"d":5821,"fill":1420,"stroke":1420,"className":5822,"style":1577},"M-36.489-37.338Q-37.102-37.795-37.504-38.430Q-37.907-39.064-38.102-39.810Q-38.297-40.557-38.297-41.330Q-38.297-42.103-38.102-42.850Q-37.907-43.596-37.504-44.230Q-37.102-44.865-36.489-45.322Q-36.477-45.326-36.469-45.328Q-36.461-45.330-36.450-45.330L-36.372-45.330Q-36.333-45.330-36.307-45.303Q-36.282-45.275-36.282-45.232Q-36.282-45.182-36.313-45.162Q-36.821-44.709-37.143-44.086Q-37.465-43.463-37.606-42.767Q-37.747-42.072-37.747-41.330Q-37.747-40.596-37.608-39.896Q-37.469-39.197-37.145-38.572Q-36.821-37.947-36.313-37.498Q-36.282-37.478-36.282-37.428Q-36.282-37.385-36.307-37.357Q-36.333-37.330-36.372-37.330L-36.450-37.330Q-36.458-37.334-36.467-37.336Q-36.477-37.338-36.489-37.338M-33.633-39.330L-35.489-39.330L-35.489-39.627Q-35.215-39.627-35.047-39.674Q-34.879-39.721-34.879-39.889L-34.879-44.049Q-34.879-44.264-34.942-44.359Q-35.004-44.455-35.124-44.476Q-35.243-44.498-35.489-44.498L-35.489-44.795L-34.266-44.881L-34.266-42.178Q-34.141-42.389-33.954-42.539Q-33.766-42.689-33.540-42.773Q-33.313-42.857-33.067-42.857Q-31.899-42.857-31.899-41.779L-31.899-39.889Q-31.899-39.721-31.729-39.674Q-31.559-39.627-31.290-39.627L-31.290-39.330L-33.145-39.330L-33.145-39.627Q-32.872-39.627-32.704-39.674Q-32.536-39.721-32.536-39.889L-32.536-41.764Q-32.536-42.146-32.657-42.375Q-32.778-42.603-33.129-42.603Q-33.442-42.603-33.696-42.441Q-33.950-42.279-34.096-42.010Q-34.243-41.740-34.243-41.443L-34.243-39.889Q-34.243-39.721-34.073-39.674Q-33.903-39.627-33.633-39.627L-33.633-39.330M-30.844-41.084Q-30.844-41.564-30.612-41.980Q-30.379-42.396-29.969-42.646Q-29.559-42.896-29.083-42.896Q-28.352-42.896-27.954-42.455Q-27.555-42.014-27.555-41.283Q-27.555-41.178-27.649-41.154L-30.098-41.154L-30.098-41.084Q-30.098-40.674-29.977-40.318Q-29.856-39.963-29.585-39.746Q-29.313-39.529-28.883-39.529Q-28.520-39.529-28.223-39.758Q-27.926-39.986-27.825-40.338Q-27.817-40.385-27.731-40.400L-27.649-40.400Q-27.555-40.373-27.555-40.291Q-27.555-40.283-27.563-40.252Q-27.626-40.025-27.764-39.842Q-27.903-39.658-28.094-39.525Q-28.286-39.392-28.504-39.322Q-28.723-39.252-28.961-39.252Q-29.333-39.252-29.670-39.389Q-30.008-39.525-30.276-39.777Q-30.544-40.029-30.694-40.369Q-30.844-40.709-30.844-41.084M-30.090-41.392L-28.129-41.392Q-28.129-41.697-28.231-41.988Q-28.333-42.279-28.549-42.461Q-28.766-42.642-29.083-42.642Q-29.383-42.642-29.614-42.455Q-29.844-42.267-29.967-41.976Q-30.090-41.685-30.090-41.392M-26.969-40.162Q-26.969-40.646-26.567-40.941Q-26.165-41.236-25.614-41.355Q-25.063-41.475-24.571-41.475L-24.571-41.764Q-24.571-41.990-24.686-42.197Q-24.801-42.404-24.999-42.523Q-25.196-42.642-25.426-42.642Q-25.852-42.642-26.137-42.537Q-26.067-42.510-26.020-42.455Q-25.973-42.400-25.948-42.330Q-25.922-42.260-25.922-42.185Q-25.922-42.080-25.973-41.988Q-26.024-41.896-26.116-41.846Q-26.208-41.795-26.313-41.795Q-26.419-41.795-26.510-41.846Q-26.602-41.896-26.653-41.988Q-26.704-42.080-26.704-42.185Q-26.704-42.603-26.315-42.750Q-25.926-42.896-25.426-42.896Q-25.094-42.896-24.741-42.766Q-24.387-42.635-24.159-42.381Q-23.930-42.127-23.930-41.779L-23.930-39.978Q-23.930-39.846-23.858-39.736Q-23.786-39.627-23.657-39.627Q-23.532-39.627-23.463-39.732Q-23.395-39.838-23.395-39.978L-23.395-40.490L-23.114-40.490L-23.114-39.978Q-23.114-39.775-23.231-39.617Q-23.348-39.459-23.530-39.375Q-23.711-39.291-23.915-39.291Q-24.145-39.291-24.297-39.463Q-24.450-39.635-24.481-39.865Q-24.641-39.584-24.950-39.418Q-25.258-39.252-25.610-39.252Q-26.122-39.252-26.545-39.475Q-26.969-39.697-26.969-40.162M-26.282-40.162Q-26.282-39.877-26.055-39.691Q-25.829-39.506-25.536-39.506Q-25.290-39.506-25.065-39.623Q-24.840-39.740-24.706-39.943Q-24.571-40.146-24.571-40.400L-24.571-41.232Q-24.836-41.232-25.122-41.178Q-25.407-41.123-25.678-40.994Q-25.950-40.865-26.116-40.658Q-26.282-40.451-26.282-40.162M-20.938-37.779L-22.794-37.779L-22.794-38.072Q-22.524-38.072-22.356-38.117Q-22.188-38.162-22.188-38.338L-22.188-42.162Q-22.188-42.369-22.344-42.422Q-22.501-42.475-22.794-42.475L-22.794-42.771L-21.571-42.857L-21.571-42.392Q-21.340-42.615-21.026-42.736Q-20.711-42.857-20.372-42.857Q-19.899-42.857-19.495-42.611Q-19.090-42.365-18.858-41.949Q-18.626-41.533-18.626-41.057Q-18.626-40.682-18.774-40.353Q-18.922-40.025-19.192-39.773Q-19.461-39.521-19.805-39.387Q-20.149-39.252-20.508-39.252Q-20.797-39.252-21.069-39.373Q-21.340-39.494-21.547-39.705L-21.547-38.338Q-21.547-38.162-21.379-38.117Q-21.211-38.072-20.938-38.072L-20.938-37.779M-21.547-41.994L-21.547-40.154Q-21.395-39.865-21.133-39.685Q-20.872-39.506-20.563-39.506Q-20.278-39.506-20.055-39.644Q-19.833-39.783-19.680-40.014Q-19.528-40.244-19.450-40.516Q-19.372-40.787-19.372-41.057Q-19.372-41.389-19.497-41.746Q-19.622-42.103-19.870-42.340Q-20.118-42.576-20.465-42.576Q-20.790-42.576-21.085-42.420Q-21.379-42.264-21.547-41.994M-18.059-39.338L-18.059-40.560Q-18.059-40.588-18.028-40.619Q-17.997-40.650-17.973-40.650L-17.868-40.650Q-17.797-40.650-17.782-40.588Q-17.719-40.267-17.581-40.027Q-17.442-39.787-17.210-39.646Q-16.977-39.506-16.669-39.506Q-16.430-39.506-16.221-39.566Q-16.012-39.627-15.876-39.775Q-15.739-39.924-15.739-40.170Q-15.739-40.424-15.950-40.590Q-16.161-40.756-16.430-40.810L-17.051-40.924Q-17.458-41.002-17.758-41.258Q-18.059-41.514-18.059-41.889Q-18.059-42.256-17.858-42.478Q-17.657-42.701-17.333-42.799Q-17.008-42.896-16.669-42.896Q-16.204-42.896-15.907-42.689L-15.684-42.873Q-15.661-42.896-15.629-42.896L-15.579-42.896Q-15.547-42.896-15.520-42.869Q-15.493-42.842-15.493-42.810L-15.493-41.826Q-15.493-41.795-15.518-41.766Q-15.544-41.736-15.579-41.736L-15.684-41.736Q-15.719-41.736-15.747-41.764Q-15.774-41.791-15.774-41.826Q-15.774-42.225-16.026-42.445Q-16.278-42.666-16.676-42.666Q-17.032-42.666-17.315-42.543Q-17.598-42.420-17.598-42.115Q-17.598-41.896-17.397-41.764Q-17.196-41.631-16.950-41.588L-16.325-41.475Q-15.895-41.385-15.586-41.088Q-15.278-40.791-15.278-40.377Q-15.278-39.807-15.676-39.529Q-16.075-39.252-16.669-39.252Q-17.219-39.252-17.571-39.588L-17.868-39.275Q-17.891-39.252-17.926-39.252L-17.973-39.252Q-17.997-39.252-18.028-39.283Q-18.059-39.314-18.059-39.338M-12.891-39.330L-14.669-39.330L-14.669-39.627Q-14.395-39.627-14.227-39.674Q-14.059-39.721-14.059-39.889L-14.059-42.025Q-14.059-42.240-14.116-42.336Q-14.172-42.432-14.286-42.453Q-14.399-42.475-14.645-42.475L-14.645-42.771L-13.446-42.857L-13.446-39.889Q-13.446-39.721-13.299-39.674Q-13.153-39.627-12.891-39.627L-12.891-39.330M-14.333-44.252Q-14.333-44.443-14.198-44.574Q-14.063-44.705-13.868-44.705Q-13.747-44.705-13.643-44.642Q-13.540-44.580-13.477-44.476Q-13.415-44.373-13.415-44.252Q-13.415-44.057-13.545-43.922Q-13.676-43.787-13.868-43.787Q-14.067-43.787-14.200-43.920Q-14.333-44.053-14.333-44.252M-9.356-39.330L-12.278-39.330Q-12.321-39.330-12.356-39.361Q-12.391-39.392-12.391-39.443L-12.391-39.514Q-12.391-39.560-12.356-39.596L-10.044-42.521L-10.758-42.521Q-11.118-42.521-11.338-42.480Q-11.559-42.439-11.706-42.324Q-11.852-42.209-11.924-41.990Q-11.997-41.771-11.997-41.408L-12.278-41.408L-12.180-42.779L-9.348-42.779Q-9.301-42.779-9.270-42.746Q-9.239-42.713-9.239-42.666L-9.239-42.611Q-9.239-42.564-9.262-42.529L-11.583-39.611L-10.821-39.611Q-10.461-39.611-10.221-39.652Q-9.981-39.693-9.797-39.857Q-9.645-40.010-9.585-40.269Q-9.524-40.529-9.493-40.904L-9.215-40.904L-9.356-39.330M-8.614-41.084Q-8.614-41.564-8.381-41.980Q-8.149-42.396-7.739-42.646Q-7.329-42.896-6.852-42.896Q-6.122-42.896-5.723-42.455Q-5.325-42.014-5.325-41.283Q-5.325-41.178-5.419-41.154L-7.868-41.154L-7.868-41.084Q-7.868-40.674-7.747-40.318Q-7.626-39.963-7.354-39.746Q-7.083-39.529-6.653-39.529Q-6.290-39.529-5.993-39.758Q-5.696-39.986-5.594-40.338Q-5.586-40.385-5.501-40.400L-5.419-40.400Q-5.325-40.373-5.325-40.291Q-5.325-40.283-5.333-40.252Q-5.395-40.025-5.534-39.842Q-5.672-39.658-5.864-39.525Q-6.055-39.392-6.274-39.322Q-6.493-39.252-6.731-39.252Q-7.102-39.252-7.440-39.389Q-7.778-39.525-8.045-39.777Q-8.313-40.029-8.463-40.369Q-8.614-40.709-8.614-41.084M-7.860-41.392L-5.899-41.392Q-5.899-41.697-6.001-41.988Q-6.102-42.279-6.319-42.461Q-6.536-42.642-6.852-42.642Q-7.153-42.642-7.383-42.455Q-7.614-42.267-7.737-41.976Q-7.860-41.685-7.860-41.392",[936],[920,5824,5825],{"transform":5812},[925,5826],{"d":5827,"fill":1420,"stroke":1420,"className":5828,"style":1577},"M3.736-40.307L-1.577-40.307Q-1.655-40.314-1.704-40.363Q-1.752-40.412-1.752-40.490Q-1.752-40.560-1.705-40.611Q-1.659-40.662-1.577-40.674L3.736-40.674Q3.810-40.662 3.857-40.611Q3.904-40.560 3.904-40.490Q3.904-40.412 3.855-40.363Q3.806-40.314 3.736-40.307M3.736-41.994L-1.577-41.994Q-1.655-42.002-1.704-42.051Q-1.752-42.100-1.752-42.178Q-1.752-42.248-1.705-42.299Q-1.659-42.350-1.577-42.361L3.736-42.361Q3.810-42.350 3.857-42.299Q3.904-42.248 3.904-42.178Q3.904-42.100 3.855-42.051Q3.806-42.002 3.736-41.994",[936],[920,5830,5831],{"transform":5812},[925,5832],{"d":5833,"fill":1420,"stroke":1420,"className":5834,"style":1577},"M7.587-40.209L7.524-40.209Q7.665-39.857 7.989-39.646Q8.313-39.435 8.700-39.435Q9.294-39.435 9.544-39.869Q9.794-40.303 9.794-40.939Q9.794-41.533 9.624-41.980Q9.454-42.428 8.954-42.428Q8.657-42.428 8.452-42.348Q8.247-42.267 8.145-42.176Q8.044-42.084 7.929-41.951Q7.813-41.818 7.763-41.803L7.692-41.803Q7.606-41.826 7.587-41.904L7.587-44.553Q7.618-44.650 7.692-44.650Q7.708-44.650 7.716-44.648Q7.724-44.646 7.731-44.642Q8.317-44.392 8.915-44.392Q9.497-44.392 10.114-44.650L10.138-44.650Q10.181-44.650 10.208-44.625Q10.235-44.600 10.235-44.560L10.235-44.482Q10.235-44.451 10.212-44.428Q9.915-44.076 9.493-43.879Q9.071-43.682 8.610-43.682Q8.263-43.682 7.884-43.787L7.884-42.291Q8.102-42.486 8.378-42.584Q8.653-42.682 8.954-42.682Q9.411-42.682 9.780-42.434Q10.149-42.185 10.356-41.781Q10.563-41.377 10.563-40.932Q10.563-40.443 10.308-40.035Q10.052-39.627 9.620-39.394Q9.188-39.162 8.700-39.162Q8.306-39.162 7.950-39.353Q7.595-39.545 7.384-39.879Q7.173-40.213 7.173-40.627Q7.173-40.807 7.290-40.920Q7.407-41.033 7.587-41.033Q7.704-41.033 7.796-40.980Q7.888-40.928 7.940-40.836Q7.993-40.744 7.993-40.627Q7.993-40.443 7.880-40.326Q7.767-40.209 7.587-40.209M11.634-37.330L11.552-37.330Q11.517-37.330 11.491-37.359Q11.466-37.389 11.466-37.428Q11.466-37.478 11.497-37.498Q11.884-37.834 12.167-38.283Q12.450-38.732 12.616-39.232Q12.782-39.732 12.856-40.250Q12.931-40.767 12.931-41.330Q12.931-41.900 12.856-42.416Q12.782-42.932 12.616-43.428Q12.450-43.924 12.171-44.371Q11.892-44.818 11.497-45.162Q11.466-45.182 11.466-45.232Q11.466-45.271 11.491-45.301Q11.517-45.330 11.552-45.330L11.634-45.330Q11.645-45.330 11.655-45.328Q11.665-45.326 11.673-45.322Q12.286-44.865 12.688-44.230Q13.091-43.596 13.286-42.850Q13.481-42.103 13.481-41.330Q13.481-40.557 13.286-39.810Q13.091-39.064 12.688-38.430Q12.286-37.795 11.673-37.338Q11.661-37.338 11.653-37.336Q11.645-37.334 11.634-37.330",[936],[920,5836,5838],{"transform":5837},"translate(151.958 -22.83)",[925,5839],{"d":5840,"fill":3233,"stroke":3233,"className":5841,"style":1577},"M-77.784-39.338L-77.784-40.560Q-77.784-40.588-77.752-40.619Q-77.721-40.650-77.698-40.650L-77.592-40.650Q-77.522-40.650-77.506-40.588Q-77.444-40.267-77.305-40.027Q-77.167-39.787-76.934-39.646Q-76.702-39.506-76.393-39.506Q-76.155-39.506-75.946-39.566Q-75.737-39.627-75.600-39.775Q-75.463-39.924-75.463-40.170Q-75.463-40.424-75.674-40.590Q-75.885-40.756-76.155-40.810L-76.776-40.924Q-77.182-41.002-77.483-41.258Q-77.784-41.514-77.784-41.889Q-77.784-42.256-77.583-42.478Q-77.381-42.701-77.057-42.799Q-76.733-42.896-76.393-42.896Q-75.928-42.896-75.631-42.689L-75.409-42.873Q-75.385-42.896-75.354-42.896L-75.303-42.896Q-75.272-42.896-75.245-42.869Q-75.217-42.842-75.217-42.810L-75.217-41.826Q-75.217-41.795-75.243-41.766Q-75.268-41.736-75.303-41.736L-75.409-41.736Q-75.444-41.736-75.471-41.764Q-75.499-41.791-75.499-41.826Q-75.499-42.225-75.751-42.445Q-76.002-42.666-76.401-42.666Q-76.756-42.666-77.040-42.543Q-77.323-42.420-77.323-42.115Q-77.323-41.896-77.122-41.764Q-76.920-41.631-76.674-41.588L-76.049-41.475Q-75.620-41.385-75.311-41.088Q-75.002-40.791-75.002-40.377Q-75.002-39.807-75.401-39.529Q-75.799-39.252-76.393-39.252Q-76.944-39.252-77.295-39.588L-77.592-39.275Q-77.616-39.252-77.651-39.252L-77.698-39.252Q-77.721-39.252-77.752-39.283Q-77.784-39.314-77.784-39.338M-74.475-41.025Q-74.475-41.529-74.219-41.961Q-73.963-42.392-73.528-42.644Q-73.092-42.896-72.592-42.896Q-72.206-42.896-71.864-42.752Q-71.522-42.607-71.260-42.346Q-70.999-42.084-70.856-41.748Q-70.713-41.412-70.713-41.025Q-70.713-40.533-70.977-40.123Q-71.241-39.713-71.670-39.482Q-72.100-39.252-72.592-39.252Q-73.085-39.252-73.518-39.484Q-73.952-39.717-74.213-40.125Q-74.475-40.533-74.475-41.025M-72.592-39.529Q-72.135-39.529-71.883-39.752Q-71.631-39.975-71.544-40.326Q-71.456-40.678-71.456-41.123Q-71.456-41.553-71.549-41.891Q-71.643-42.228-71.897-42.435Q-72.151-42.642-72.592-42.642Q-73.241-42.642-73.485-42.226Q-73.729-41.810-73.729-41.123Q-73.729-40.678-73.641-40.326Q-73.553-39.975-73.301-39.752Q-73.049-39.529-72.592-39.529M-68.221-39.330L-70.202-39.330L-70.202-39.627Q-69.932-39.627-69.764-39.672Q-69.596-39.717-69.596-39.889L-69.596-42.025Q-69.596-42.240-69.659-42.336Q-69.721-42.432-69.838-42.453Q-69.956-42.475-70.202-42.475L-70.202-42.771L-69.034-42.857L-69.034-42.072Q-68.956-42.283-68.803-42.469Q-68.651-42.654-68.452-42.756Q-68.252-42.857-68.026-42.857Q-67.780-42.857-67.588-42.713Q-67.397-42.568-67.397-42.338Q-67.397-42.182-67.502-42.072Q-67.608-41.963-67.764-41.963Q-67.920-41.963-68.030-42.072Q-68.139-42.182-68.139-42.338Q-68.139-42.498-68.034-42.603Q-68.358-42.603-68.573-42.375Q-68.788-42.146-68.883-41.807Q-68.979-41.467-68.979-41.162L-68.979-39.889Q-68.979-39.721-68.752-39.674Q-68.526-39.627-68.221-39.627L-68.221-39.330M-66.292-40.291L-66.292-42.482L-66.995-42.482L-66.995-42.736Q-66.639-42.736-66.397-42.969Q-66.155-43.201-66.044-43.549Q-65.932-43.896-65.932-44.252L-65.651-44.252L-65.651-42.779L-64.475-42.779L-64.475-42.482L-65.651-42.482L-65.651-40.307Q-65.651-39.986-65.532-39.758Q-65.413-39.529-65.131-39.529Q-64.952-39.529-64.835-39.652Q-64.717-39.775-64.665-39.955Q-64.612-40.135-64.612-40.307L-64.612-40.779L-64.331-40.779L-64.331-40.291Q-64.331-40.037-64.436-39.797Q-64.542-39.557-64.739-39.404Q-64.936-39.252-65.194-39.252Q-65.510-39.252-65.762-39.375Q-66.014-39.498-66.153-39.732Q-66.292-39.967-66.292-40.291M-63.612-41.084Q-63.612-41.564-63.379-41.980Q-63.147-42.396-62.737-42.646Q-62.327-42.896-61.850-42.896Q-61.120-42.896-60.721-42.455Q-60.323-42.014-60.323-41.283Q-60.323-41.178-60.417-41.154L-62.866-41.154L-62.866-41.084Q-62.866-40.674-62.745-40.318Q-62.624-39.963-62.352-39.746Q-62.081-39.529-61.651-39.529Q-61.288-39.529-60.991-39.758Q-60.694-39.986-60.592-40.338Q-60.585-40.385-60.499-40.400L-60.417-40.400Q-60.323-40.373-60.323-40.291Q-60.323-40.283-60.331-40.252Q-60.393-40.025-60.532-39.842Q-60.670-39.658-60.862-39.525Q-61.053-39.392-61.272-39.322Q-61.491-39.252-61.729-39.252Q-62.100-39.252-62.438-39.389Q-62.776-39.525-63.044-39.777Q-63.311-40.029-63.461-40.369Q-63.612-40.709-63.612-41.084M-62.858-41.392L-60.897-41.392Q-60.897-41.697-60.999-41.988Q-61.100-42.279-61.317-42.461Q-61.534-42.642-61.850-42.642Q-62.151-42.642-62.381-42.455Q-62.612-42.267-62.735-41.976Q-62.858-41.685-62.858-41.392M-58.018-39.252Q-58.499-39.252-58.907-39.496Q-59.315-39.740-59.553-40.154Q-59.792-40.568-59.792-41.057Q-59.792-41.549-59.534-41.965Q-59.276-42.381-58.844-42.619Q-58.413-42.857-57.920-42.857Q-57.299-42.857-56.850-42.420L-56.850-44.049Q-56.850-44.264-56.913-44.359Q-56.975-44.455-57.092-44.476Q-57.210-44.498-57.456-44.498L-57.456-44.795L-56.233-44.881L-56.233-40.072Q-56.233-39.861-56.170-39.766Q-56.108-39.670-55.991-39.648Q-55.874-39.627-55.624-39.627L-55.624-39.330L-56.874-39.252L-56.874-39.736Q-57.338-39.252-58.018-39.252M-57.952-39.506Q-57.612-39.506-57.319-39.697Q-57.026-39.889-56.874-40.185L-56.874-42.017Q-57.022-42.291-57.284-42.447Q-57.545-42.603-57.858-42.603Q-58.483-42.603-58.766-42.156Q-59.049-41.709-59.049-41.049Q-59.049-40.404-58.797-39.955Q-58.545-39.506-57.952-39.506",[936],[925,5843],{"fill":927,"stroke":1420,"d":5844,"style":2513},"M-60.993-54.125H61.922",[925,5846],{"fill":927,"stroke":3233,"d":5847,"style":2513},"M64.199-54.125h33.005",[920,5849,5850,5853],{"fill":3161,"stroke":3161,"style":2513},[925,5851],{"fill":927,"d":5852},"M-58.69-24.334c0 17.588 101.238 17.588 101.238 0",[925,5854],{"d":5855},"m-58.69-27.32-1.576 4.168 1.576-1.382 1.577 1.382ZM42.548-27.32l-1.576 4.168 1.576-1.382 1.577 1.382Z",[920,5857,5858,5865,5871,5877,5883,5889,5895,5901,5907],{"fill":3161,"stroke":927,"fontFamily":2527,"fontSize":1137},[920,5859,5861],{"transform":5860},"translate(17.1 45.852)",[925,5862],{"d":5863,"fill":3161,"stroke":3161,"className":5864,"style":1422},"M-77.751-39.337L-77.751-40.400Q-77.751-40.424-77.723-40.451Q-77.696-40.478-77.672-40.478L-77.563-40.478Q-77.498-40.478-77.484-40.420Q-77.388-39.986-77.142-39.735Q-76.896-39.484-76.482-39.484Q-76.141-39.484-75.888-39.617Q-75.635-39.750-75.635-40.058Q-75.635-40.215-75.729-40.330Q-75.823-40.444-75.961-40.513Q-76.100-40.581-76.267-40.619L-76.848-40.718Q-77.204-40.786-77.477-41.007Q-77.751-41.227-77.751-41.569Q-77.751-41.818-77.639-41.993Q-77.528-42.167-77.342-42.266Q-77.156-42.365-76.940-42.408Q-76.725-42.451-76.482-42.451Q-76.069-42.451-75.789-42.269L-75.573-42.444Q-75.563-42.447-75.556-42.449Q-75.549-42.451-75.539-42.451L-75.488-42.451Q-75.461-42.451-75.437-42.427Q-75.413-42.403-75.413-42.375L-75.413-41.528Q-75.413-41.507-75.437-41.480Q-75.461-41.453-75.488-41.453L-75.601-41.453Q-75.628-41.453-75.654-41.478Q-75.679-41.504-75.679-41.528Q-75.679-41.764-75.785-41.928Q-75.891-42.092-76.074-42.174Q-76.257-42.256-76.489-42.256Q-76.817-42.256-77.074-42.153Q-77.330-42.051-77.330-41.774Q-77.330-41.579-77.147-41.470Q-76.964-41.360-76.735-41.319L-76.161-41.213Q-75.915-41.165-75.701-41.037Q-75.488-40.909-75.351-40.706Q-75.214-40.502-75.214-40.253Q-75.214-39.740-75.580-39.501Q-75.946-39.262-76.482-39.262Q-76.978-39.262-77.310-39.556L-77.576-39.282Q-77.597-39.262-77.624-39.262L-77.672-39.262Q-77.696-39.262-77.723-39.289Q-77.751-39.316-77.751-39.337M-73.198-39.357L-74.179-41.856Q-74.240-41.999-74.358-42.034Q-74.476-42.068-74.691-42.068L-74.691-42.348L-73.211-42.348L-73.211-42.068Q-73.591-42.068-73.591-41.907Q-73.591-41.897-73.577-41.856L-72.863-40.024L-72.190-41.729Q-72.220-41.801-72.220-41.829Q-72.220-41.856-72.248-41.856Q-72.309-42.003-72.427-42.035Q-72.545-42.068-72.757-42.068L-72.757-42.348L-71.359-42.348L-71.359-42.068Q-71.735-42.068-71.735-41.907Q-71.735-41.876-71.728-41.856L-70.973-39.918L-70.286-41.668Q-70.265-41.719-70.265-41.774Q-70.265-41.914-70.378-41.991Q-70.491-42.068-70.631-42.068L-70.631-42.348L-69.411-42.348L-69.411-42.068Q-69.616-42.068-69.771-41.962Q-69.927-41.856-69.999-41.668L-70.904-39.357Q-70.939-39.262-71.051-39.262L-71.120-39.262Q-71.229-39.262-71.267-39.357L-72.049-41.360L-72.836-39.357Q-72.870-39.262-72.982-39.262L-73.051-39.262Q-73.160-39.262-73.198-39.357",[936],[920,5866,5867],{"transform":5860},[925,5868],{"d":5869,"fill":3161,"stroke":3161,"className":5870,"style":1422},"M-69.031-40.058Q-69.031-40.390-68.808-40.617Q-68.584-40.844-68.240-40.972Q-67.897-41.101-67.524-41.153Q-67.152-41.206-66.847-41.206L-66.847-41.459Q-66.847-41.664-66.955-41.844Q-67.063-42.023-67.244-42.126Q-67.425-42.228-67.633-42.228Q-68.040-42.228-68.276-42.136Q-68.187-42.099-68.141-42.015Q-68.095-41.931-68.095-41.829Q-68.095-41.733-68.141-41.654Q-68.187-41.576-68.268-41.531Q-68.348-41.487-68.437-41.487Q-68.587-41.487-68.688-41.584Q-68.789-41.682-68.789-41.829Q-68.789-42.451-67.633-42.451Q-67.422-42.451-67.172-42.387Q-66.923-42.324-66.721-42.205Q-66.519-42.085-66.393-41.900Q-66.266-41.716-66.266-41.473L-66.266-39.897Q-66.266-39.781-66.205-39.685Q-66.143-39.590-66.030-39.590Q-65.921-39.590-65.856-39.684Q-65.791-39.778-65.791-39.897L-65.791-40.345L-65.525-40.345L-65.525-39.897Q-65.525-39.627-65.752-39.462Q-65.979-39.296-66.259-39.296Q-66.468-39.296-66.605-39.450Q-66.741-39.603-66.765-39.819Q-66.912-39.552-67.194-39.407Q-67.476-39.262-67.801-39.262Q-68.078-39.262-68.362-39.337Q-68.645-39.412-68.838-39.591Q-69.031-39.771-69.031-40.058M-68.416-40.058Q-68.416-39.884-68.315-39.754Q-68.215-39.624-68.059-39.554Q-67.904-39.484-67.739-39.484Q-67.521-39.484-67.312-39.581Q-67.104-39.679-66.976-39.860Q-66.847-40.041-66.847-40.267L-66.847-40.995Q-67.172-40.995-67.538-40.904Q-67.904-40.813-68.160-40.601Q-68.416-40.390-68.416-40.058M-63.464-37.973L-65.094-37.973L-65.094-38.253Q-64.865-38.253-64.716-38.288Q-64.568-38.322-64.568-38.462L-64.568-41.808Q-64.568-41.979-64.704-42.020Q-64.841-42.061-65.094-42.061L-65.094-42.341L-64.014-42.416L-64.014-42.010Q-63.792-42.211-63.505-42.314Q-63.217-42.416-62.910-42.416Q-62.483-42.416-62.119-42.203Q-61.755-41.989-61.541-41.625Q-61.327-41.261-61.327-40.841Q-61.327-40.396-61.567-40.032Q-61.806-39.668-62.199-39.465Q-62.592-39.262-63.036-39.262Q-63.303-39.262-63.551-39.362Q-63.799-39.463-63.987-39.644L-63.987-38.462Q-63.987-38.325-63.838-38.289Q-63.689-38.253-63.464-38.253L-63.464-37.973M-63.987-41.661L-63.987-40.051Q-63.853-39.798-63.611-39.641Q-63.368-39.484-63.091-39.484Q-62.763-39.484-62.510-39.685Q-62.257-39.887-62.124-40.205Q-61.990-40.523-61.990-40.841Q-61.990-41.070-62.055-41.299Q-62.120-41.528-62.248-41.726Q-62.377-41.924-62.571-42.044Q-62.766-42.163-62.999-42.163Q-63.293-42.163-63.561-42.034Q-63.829-41.904-63.987-41.661",[936],[920,5872,5873],{"transform":5860},[925,5874],{"d":5875,"fill":3161,"stroke":3161,"className":5876,"style":1422},"M-56.243-39.330L-57.979-39.330L-57.979-39.610Q-57.750-39.610-57.601-39.644Q-57.453-39.679-57.453-39.819L-57.453-41.668Q-57.453-41.938-57.560-41.999Q-57.668-42.061-57.979-42.061L-57.979-42.341L-56.950-42.416L-56.950-41.709Q-56.820-42.017-56.578-42.216Q-56.335-42.416-56.017-42.416Q-55.798-42.416-55.627-42.292Q-55.456-42.167-55.456-41.955Q-55.456-41.818-55.556-41.719Q-55.655-41.620-55.788-41.620Q-55.925-41.620-56.024-41.719Q-56.123-41.818-56.123-41.955Q-56.123-42.095-56.024-42.194Q-56.314-42.194-56.514-41.998Q-56.714-41.801-56.807-41.507Q-56.899-41.213-56.899-40.933L-56.899-39.819Q-56.899-39.610-56.243-39.610L-56.243-39.330M-54.913-40.813Q-54.913-41.155-54.778-41.454Q-54.643-41.753-54.404-41.977Q-54.164-42.201-53.847-42.326Q-53.529-42.451-53.197-42.451Q-52.753-42.451-52.353-42.235Q-51.953-42.020-51.719-41.642Q-51.485-41.265-51.485-40.813Q-51.485-40.472-51.627-40.188Q-51.768-39.904-52.013-39.697Q-52.257-39.491-52.567-39.376Q-52.876-39.262-53.197-39.262Q-53.628-39.262-54.029-39.463Q-54.431-39.665-54.672-40.017Q-54.913-40.369-54.913-40.813M-53.197-39.511Q-52.596-39.511-52.372-39.889Q-52.148-40.267-52.148-40.899Q-52.148-41.511-52.382-41.870Q-52.616-42.228-53.197-42.228Q-54.250-42.228-54.250-40.899Q-54.250-40.267-54.024-39.889Q-53.799-39.511-53.197-39.511",[936],[920,5878,5879],{"transform":5860},[925,5880],{"d":5881,"fill":3161,"stroke":3161,"className":5882,"style":1422},"M-50.707-40.813Q-50.707-41.155-50.572-41.454Q-50.437-41.753-50.197-41.977Q-49.958-42.201-49.640-42.326Q-49.322-42.451-48.991-42.451Q-48.546-42.451-48.147-42.235Q-47.747-42.020-47.512-41.642Q-47.278-41.265-47.278-40.813Q-47.278-40.472-47.420-40.188Q-47.562-39.904-47.806-39.697Q-48.051-39.491-48.360-39.376Q-48.669-39.262-48.991-39.262Q-49.421-39.262-49.823-39.463Q-50.225-39.665-50.466-40.017Q-50.707-40.369-50.707-40.813M-48.991-39.511Q-48.389-39.511-48.165-39.889Q-47.941-40.267-47.941-40.899Q-47.941-41.511-48.176-41.870Q-48.410-42.228-48.991-42.228Q-50.043-42.228-50.043-40.899Q-50.043-40.267-49.818-39.889Q-49.592-39.511-48.991-39.511M-46.157-40.171L-46.157-42.068L-46.796-42.068L-46.796-42.290Q-46.479-42.290-46.261-42.500Q-46.044-42.710-45.944-43.020Q-45.843-43.329-45.843-43.637L-45.576-43.637L-45.576-42.348L-44.500-42.348L-44.500-42.068L-45.576-42.068L-45.576-40.184Q-45.576-39.908-45.472-39.709Q-45.368-39.511-45.108-39.511Q-44.951-39.511-44.845-39.615Q-44.739-39.720-44.689-39.873Q-44.640-40.027-44.640-40.184L-44.640-40.598L-44.373-40.598L-44.373-40.171Q-44.373-39.945-44.472-39.735Q-44.571-39.525-44.756-39.393Q-44.940-39.262-45.169-39.262Q-45.607-39.262-45.882-39.499Q-46.157-39.737-46.157-40.171",[936],[920,5884,5885],{"transform":5860},[925,5886],{"d":5887,"fill":3161,"stroke":3161,"className":5888,"style":1422},"M-40.334-40.171L-40.334-42.068L-40.973-42.068L-40.973-42.290Q-40.655-42.290-40.438-42.500Q-40.221-42.710-40.121-43.020Q-40.020-43.329-40.020-43.637L-39.753-43.637L-39.753-42.348L-38.676-42.348L-38.676-42.068L-39.753-42.068L-39.753-40.184Q-39.753-39.908-39.649-39.709Q-39.545-39.511-39.285-39.511Q-39.128-39.511-39.022-39.615Q-38.916-39.720-38.866-39.873Q-38.817-40.027-38.817-40.184L-38.817-40.598L-38.550-40.598L-38.550-40.171Q-38.550-39.945-38.649-39.735Q-38.748-39.525-38.933-39.393Q-39.117-39.262-39.346-39.262Q-39.784-39.262-40.059-39.499Q-40.334-39.737-40.334-40.171M-37.781-40.813Q-37.781-41.155-37.646-41.454Q-37.511-41.753-37.272-41.977Q-37.032-42.201-36.715-42.326Q-36.397-42.451-36.065-42.451Q-35.621-42.451-35.221-42.235Q-34.821-42.020-34.587-41.642Q-34.353-41.265-34.353-40.813Q-34.353-40.472-34.495-40.188Q-34.636-39.904-34.881-39.697Q-35.125-39.491-35.435-39.376Q-35.744-39.262-36.065-39.262Q-36.496-39.262-36.897-39.463Q-37.299-39.665-37.540-40.017Q-37.781-40.369-37.781-40.813M-36.065-39.511Q-35.464-39.511-35.240-39.889Q-35.016-40.267-35.016-40.899Q-35.016-41.511-35.250-41.870Q-35.484-42.228-36.065-42.228Q-37.118-42.228-37.118-40.899Q-37.118-40.267-36.892-39.889Q-36.667-39.511-36.065-39.511",[936],[920,5890,5891],{"transform":5860},[925,5892],{"d":5893,"fill":3161,"stroke":3161,"className":5894,"style":1422},"M-31.055-39.337L-31.055-40.400Q-31.055-40.424-31.027-40.451Q-31-40.478-30.976-40.478L-30.867-40.478Q-30.802-40.478-30.788-40.420Q-30.692-39.986-30.446-39.735Q-30.200-39.484-29.786-39.484Q-29.445-39.484-29.192-39.617Q-28.939-39.750-28.939-40.058Q-28.939-40.215-29.033-40.330Q-29.127-40.444-29.265-40.513Q-29.404-40.581-29.571-40.619L-30.152-40.718Q-30.508-40.786-30.781-41.007Q-31.055-41.227-31.055-41.569Q-31.055-41.818-30.943-41.993Q-30.832-42.167-30.646-42.266Q-30.460-42.365-30.244-42.408Q-30.029-42.451-29.786-42.451Q-29.373-42.451-29.093-42.269L-28.877-42.444Q-28.867-42.447-28.860-42.449Q-28.853-42.451-28.843-42.451L-28.792-42.451Q-28.765-42.451-28.741-42.427Q-28.717-42.403-28.717-42.375L-28.717-41.528Q-28.717-41.507-28.741-41.480Q-28.765-41.453-28.792-41.453L-28.905-41.453Q-28.932-41.453-28.958-41.478Q-28.983-41.504-28.983-41.528Q-28.983-41.764-29.089-41.928Q-29.195-42.092-29.378-42.174Q-29.561-42.256-29.793-42.256Q-30.121-42.256-30.378-42.153Q-30.634-42.051-30.634-41.774Q-30.634-41.579-30.451-41.470Q-30.268-41.360-30.039-41.319L-29.465-41.213Q-29.219-41.165-29.005-41.037Q-28.792-40.909-28.655-40.706Q-28.518-40.502-28.518-40.253Q-28.518-39.740-28.884-39.501Q-29.250-39.262-29.786-39.262Q-30.282-39.262-30.614-39.556L-30.880-39.282Q-30.901-39.262-30.928-39.262L-30.976-39.262Q-31-39.262-31.027-39.289Q-31.055-39.316-31.055-39.337M-26.222-39.330L-27.825-39.330L-27.825-39.610Q-27.599-39.610-27.450-39.644Q-27.302-39.679-27.302-39.819L-27.302-43.438Q-27.302-43.708-27.409-43.770Q-27.517-43.831-27.825-43.831L-27.825-44.112L-26.748-44.187L-26.748-39.819Q-26.748-39.682-26.598-39.646Q-26.447-39.610-26.222-39.610L-26.222-39.330M-25.668-40.813Q-25.668-41.155-25.533-41.454Q-25.398-41.753-25.159-41.977Q-24.919-42.201-24.601-42.326Q-24.284-42.451-23.952-42.451Q-23.508-42.451-23.108-42.235Q-22.708-42.020-22.474-41.642Q-22.240-41.265-22.240-40.813Q-22.240-40.472-22.381-40.188Q-22.523-39.904-22.768-39.697Q-23.012-39.491-23.321-39.376Q-23.631-39.262-23.952-39.262Q-24.383-39.262-24.784-39.463Q-25.186-39.665-25.427-40.017Q-25.668-40.369-25.668-40.813M-23.952-39.511Q-23.350-39.511-23.127-39.889Q-22.903-40.267-22.903-40.899Q-22.903-41.511-23.137-41.870Q-23.371-42.228-23.952-42.228Q-25.005-42.228-25.005-40.899Q-25.005-40.267-24.779-39.889Q-24.554-39.511-23.952-39.511M-21.119-40.171L-21.119-42.068L-21.758-42.068L-21.758-42.290Q-21.440-42.290-21.223-42.500Q-21.006-42.710-20.905-43.020Q-20.804-43.329-20.804-43.637L-20.537-43.637L-20.537-42.348L-19.461-42.348L-19.461-42.068L-20.537-42.068L-20.537-40.184Q-20.537-39.908-20.433-39.709Q-20.329-39.511-20.069-39.511Q-19.912-39.511-19.806-39.615Q-19.700-39.720-19.650-39.873Q-19.601-40.027-19.601-40.184L-19.601-40.598L-19.334-40.598L-19.334-40.171Q-19.334-39.945-19.433-39.735Q-19.533-39.525-19.717-39.393Q-19.902-39.262-20.131-39.262Q-20.568-39.262-20.843-39.499Q-21.119-39.737-21.119-40.171",[936],[920,5896,5897],{"transform":5860},[925,5898],{"d":5899,"fill":3161,"stroke":3161,"className":5900,"style":1422},"M-15.324-40.092L-15.355-40.092Q-15.218-39.795-14.921-39.619Q-14.624-39.443-14.296-39.443Q-13.933-39.443-13.706-39.621Q-13.479-39.798-13.385-40.087Q-13.291-40.376-13.291-40.738Q-13.291-41.053-13.345-41.338Q-13.400-41.623-13.573-41.829Q-13.745-42.034-14.060-42.034Q-14.333-42.034-14.516-41.967Q-14.699-41.900-14.803-41.811Q-14.907-41.723-15.003-41.613Q-15.099-41.504-15.143-41.494L-15.222-41.494Q-15.294-41.511-15.311-41.582L-15.311-43.900Q-15.311-43.934-15.287-43.956Q-15.263-43.978-15.229-43.978L-15.201-43.978Q-14.914-43.862-14.646-43.808Q-14.378-43.753-14.101-43.753Q-13.824-43.753-13.554-43.808Q-13.284-43.862-13.004-43.978L-12.980-43.978Q-12.945-43.978-12.922-43.955Q-12.898-43.931-12.898-43.900L-12.898-43.831Q-12.898-43.804-12.918-43.784Q-13.192-43.469-13.576-43.293Q-13.961-43.117-14.374-43.117Q-14.713-43.117-15.030-43.203L-15.030-41.921Q-14.634-42.256-14.060-42.256Q-13.656-42.256-13.320-42.046Q-12.983-41.835-12.790-41.483Q-12.597-41.131-12.597-40.731Q-12.597-40.400-12.737-40.114Q-12.877-39.829-13.121-39.619Q-13.366-39.409-13.668-39.299Q-13.971-39.190-14.289-39.190Q-14.648-39.190-14.974-39.354Q-15.300-39.518-15.495-39.810Q-15.690-40.102-15.690-40.465Q-15.690-40.615-15.584-40.721Q-15.478-40.827-15.324-40.827Q-15.171-40.827-15.066-40.723Q-14.962-40.619-14.962-40.465Q-14.962-40.308-15.066-40.200Q-15.171-40.092-15.324-40.092M-11.336-38.100Q-11.336-38.134-11.308-38.161Q-11.038-38.390-10.890-38.713Q-10.741-39.036-10.741-39.392L-10.741-39.429Q-10.850-39.330-11.014-39.330Q-11.195-39.330-11.315-39.450Q-11.435-39.569-11.435-39.750Q-11.435-39.925-11.315-40.044Q-11.195-40.164-11.014-40.164Q-10.758-40.164-10.638-39.925Q-10.519-39.685-10.519-39.392Q-10.519-38.992-10.688-38.621Q-10.857-38.250-11.154-37.994Q-11.185-37.973-11.213-37.973Q-11.254-37.973-11.295-38.014Q-11.336-38.055-11.336-38.100",[936],[920,5902,5903],{"transform":5860},[925,5904],{"d":5905,"fill":3161,"stroke":3161,"className":5906,"style":1422},"M-6.346-40.171L-6.346-42.068L-6.985-42.068L-6.985-42.290Q-6.667-42.290-6.450-42.500Q-6.233-42.710-6.133-43.020Q-6.032-43.329-6.032-43.637L-5.765-43.637L-5.765-42.348L-4.688-42.348L-4.688-42.068L-5.765-42.068L-5.765-40.184Q-5.765-39.908-5.661-39.709Q-5.557-39.511-5.297-39.511Q-5.140-39.511-5.034-39.615Q-4.928-39.720-4.878-39.873Q-4.829-40.027-4.829-40.184L-4.829-40.598L-4.562-40.598L-4.562-40.171Q-4.562-39.945-4.661-39.735Q-4.760-39.525-4.945-39.393Q-5.129-39.262-5.358-39.262Q-5.796-39.262-6.071-39.499Q-6.346-39.737-6.346-40.171M-2.070-39.330L-3.704-39.330L-3.704-39.610Q-3.475-39.610-3.326-39.644Q-3.178-39.679-3.178-39.819L-3.178-43.438Q-3.178-43.708-3.285-43.770Q-3.393-43.831-3.704-43.831L-3.704-44.112L-2.624-44.187L-2.624-41.801Q-2.518-41.986-2.340-42.128Q-2.163-42.269-1.954-42.343Q-1.746-42.416-1.520-42.416Q-1.014-42.416-0.730-42.193Q-0.447-41.969-0.447-41.473L-0.447-39.819Q-0.447-39.682-0.298-39.646Q-0.149-39.610 0.076-39.610L0.076-39.330L-1.554-39.330L-1.554-39.610Q-1.325-39.610-1.177-39.644Q-1.028-39.679-1.028-39.819L-1.028-41.459Q-1.028-41.794-1.147-41.994Q-1.267-42.194-1.582-42.194Q-1.852-42.194-2.086-42.058Q-2.320-41.921-2.458-41.687Q-2.597-41.453-2.597-41.179L-2.597-39.819Q-2.597-39.682-2.446-39.646Q-2.296-39.610-2.070-39.610L-2.070-39.330M0.623-40.865Q0.623-41.186 0.748-41.475Q0.873-41.764 1.098-41.987Q1.324-42.211 1.619-42.331Q1.915-42.451 2.233-42.451Q2.561-42.451 2.823-42.351Q3.084-42.252 3.260-42.070Q3.436-41.887 3.530-41.629Q3.624-41.371 3.624-41.039Q3.624-40.947 3.542-40.926L1.286-40.926L1.286-40.865Q1.286-40.277 1.570-39.894Q1.854-39.511 2.421-39.511Q2.742-39.511 3.011-39.704Q3.279-39.897 3.368-40.212Q3.375-40.253 3.450-40.267L3.542-40.267Q3.624-40.243 3.624-40.171Q3.624-40.164 3.617-40.137Q3.504-39.740 3.134-39.501Q2.763-39.262 2.339-39.262Q1.901-39.262 1.501-39.470Q1.102-39.679 0.862-40.046Q0.623-40.413 0.623-40.865M1.293-41.135L3.108-41.135Q3.108-41.412 3.011-41.664Q2.913-41.917 2.715-42.073Q2.517-42.228 2.233-42.228Q1.956-42.228 1.742-42.070Q1.529-41.911 1.411-41.656Q1.293-41.401 1.293-41.135M5.894-39.330L4.260-39.330L4.260-39.610Q4.489-39.610 4.637-39.644Q4.786-39.679 4.786-39.819L4.786-41.668Q4.786-41.938 4.678-41.999Q4.571-42.061 4.260-42.061L4.260-42.341L5.319-42.416L5.319-41.767Q5.490-42.075 5.794-42.246Q6.099-42.416 6.444-42.416Q6.950-42.416 7.233-42.193Q7.517-41.969 7.517-41.473L7.517-39.819Q7.517-39.682 7.666-39.646Q7.814-39.610 8.040-39.610L8.040-39.330L6.410-39.330L6.410-39.610Q6.639-39.610 6.787-39.644Q6.936-39.679 6.936-39.819L6.936-41.459Q6.936-41.794 6.816-41.994Q6.697-42.194 6.382-42.194Q6.112-42.194 5.878-42.058Q5.644-41.921 5.506-41.687Q5.367-41.453 5.367-41.179L5.367-39.819Q5.367-39.682 5.518-39.646Q5.668-39.610 5.894-39.610",[936],[920,5908,5909],{"transform":5860},[925,5910],{"d":5911,"fill":3161,"stroke":3161,"className":5912,"style":1422},"M11.295-40.865Q11.295-41.186 11.420-41.475Q11.545-41.764 11.771-41.987Q11.996-42.211 12.292-42.331Q12.587-42.451 12.905-42.451Q13.233-42.451 13.495-42.351Q13.756-42.252 13.932-42.070Q14.108-41.887 14.202-41.629Q14.296-41.371 14.296-41.039Q14.296-40.947 14.214-40.926L11.959-40.926L11.959-40.865Q11.959-40.277 12.242-39.894Q12.526-39.511 13.093-39.511Q13.415-39.511 13.683-39.704Q13.951-39.897 14.040-40.212Q14.047-40.253 14.122-40.267L14.214-40.267Q14.296-40.243 14.296-40.171Q14.296-40.164 14.290-40.137Q14.177-39.740 13.806-39.501Q13.435-39.262 13.011-39.262Q12.574-39.262 12.174-39.470Q11.774-39.679 11.535-40.046Q11.295-40.413 11.295-40.865M11.965-41.135L13.780-41.135Q13.780-41.412 13.683-41.664Q13.585-41.917 13.387-42.073Q13.189-42.228 12.905-42.228Q12.628-42.228 12.415-42.070Q12.201-41.911 12.083-41.656Q11.965-41.401 11.965-41.135M16.474-39.357L15.346-41.856Q15.274-42.003 15.144-42.035Q15.014-42.068 14.785-42.068L14.785-42.348L16.299-42.348L16.299-42.068Q15.947-42.068 15.947-41.921Q15.947-41.876 15.958-41.856L16.822-39.938L17.602-41.668Q17.636-41.736 17.636-41.815Q17.636-41.928 17.552-41.998Q17.468-42.068 17.349-42.068L17.349-42.348L18.545-42.348L18.545-42.068Q18.326-42.068 18.155-41.965Q17.984-41.863 17.896-41.668L16.860-39.357Q16.812-39.262 16.706-39.262L16.627-39.262Q16.522-39.262 16.474-39.357M20.702-39.330L19.150-39.330L19.150-39.610Q19.376-39.610 19.524-39.644Q19.673-39.679 19.673-39.819L19.673-41.668Q19.673-41.856 19.625-41.940Q19.577-42.023 19.480-42.042Q19.382-42.061 19.170-42.061L19.170-42.341L20.227-42.416L20.227-39.819Q20.227-39.679 20.358-39.644Q20.490-39.610 20.702-39.610L20.702-39.330M19.430-43.637Q19.430-43.808 19.553-43.927Q19.676-44.047 19.847-44.047Q20.015-44.047 20.138-43.927Q20.261-43.808 20.261-43.637Q20.261-43.462 20.138-43.339Q20.015-43.216 19.847-43.216Q19.676-43.216 19.553-43.339Q19.430-43.462 19.430-43.637M21.348-40.841Q21.348-41.169 21.483-41.470Q21.618-41.770 21.854-41.991Q22.089-42.211 22.394-42.331Q22.698-42.451 23.022-42.451Q23.528-42.451 23.877-42.348Q24.226-42.246 24.226-41.870Q24.226-41.723 24.128-41.622Q24.031-41.521 23.884-41.521Q23.730-41.521 23.631-41.620Q23.532-41.719 23.532-41.870Q23.532-42.058 23.672-42.150Q23.470-42.201 23.029-42.201Q22.674-42.201 22.445-42.005Q22.216-41.808 22.115-41.499Q22.014-41.189 22.014-40.841Q22.014-40.492 22.141-40.186Q22.267-39.880 22.522-39.696Q22.776-39.511 23.132-39.511Q23.354-39.511 23.539-39.595Q23.723-39.679 23.858-39.834Q23.993-39.990 24.051-40.198Q24.065-40.253 24.120-40.253L24.232-40.253Q24.263-40.253 24.285-40.229Q24.308-40.205 24.308-40.171L24.308-40.150Q24.222-39.863 24.034-39.665Q23.846-39.467 23.581-39.364Q23.316-39.262 23.022-39.262Q22.592-39.262 22.204-39.468Q21.816-39.675 21.582-40.038Q21.348-40.400 21.348-40.841M25.422-40.171L25.422-42.068L24.783-42.068L24.783-42.290Q25.101-42.290 25.318-42.500Q25.535-42.710 25.636-43.020Q25.736-43.329 25.736-43.637L26.003-43.637L26.003-42.348L27.080-42.348L27.080-42.068L26.003-42.068L26.003-40.184Q26.003-39.908 26.107-39.709Q26.211-39.511 26.471-39.511Q26.628-39.511 26.734-39.615Q26.840-39.720 26.890-39.873Q26.939-40.027 26.939-40.184L26.939-40.598L27.206-40.598L27.206-40.171Q27.206-39.945 27.107-39.735Q27.008-39.525 26.823-39.393Q26.639-39.262 26.410-39.262Q25.972-39.262 25.697-39.499Q25.422-39.737 25.422-40.171",[936],[1032,5914,5916,5917,5948,5949,5973],{"className":5915},[1035],"A heapsort snapshot. The array splits into a max-heap prefix ",[392,5918,5920],{"className":5919},[395],[392,5921,5923],{"className":5922,"ariaHidden":400},[399],[392,5924,5926,5929,5932,5935,5938,5945],{"className":5925},[404],[392,5927],{"className":5928,"style":409},[408],[392,5930,651],{"className":5931},[413,423],[392,5933,655],{"className":5934},[418],[392,5936,659],{"className":5937},[413],[392,5939,5941],{"className":5940},[413,498],[392,5942,5944],{"className":5943},[413],"heapsize",[392,5946,666],{"className":5947},[449]," and a sorted suffix; each step swaps the root ",[392,5950,5952],{"className":5951},[395],[392,5953,5955],{"className":5954,"ariaHidden":400},[399],[392,5956,5958,5961,5964,5967,5970],{"className":5957},[404],[392,5959],{"className":5960,"style":409},[408],[392,5962,651],{"className":5963},[413,423],[392,5965,655],{"className":5966},[418],[392,5968,575],{"className":5969},[413],[392,5971,666],{"className":5972},[449]," into the slot just before the suffix, drops the heap size by one, and sifts down.",[577,5975,5976],{"type":579},[381,5977,5978,5981,5982,6036,6037,6079,6080,6152],{},[550,5979,5980],{},"Invariant (Loop)."," At the start of each iteration, ",[392,5983,5985],{"className":5984},[395],[392,5986,5988],{"className":5987,"ariaHidden":400},[399],[392,5989,5991,5994,5997,6000,6003,6006,6009,6012,6015,6018,6021,6024,6027,6030,6033],{"className":5990},[404],[392,5992],{"className":5993,"style":409},[408],[392,5995,651],{"className":5996},[413,423],[392,5998,655],{"className":5999},[418],[392,6001,659],{"className":6002},[413],[392,6004,651],{"className":6005},[413,423],[392,6007,1211],{"className":6008},[413],[392,6010,2348],{"className":6011},[413,423],[392,6013,2352],{"className":6014},[413,423],[392,6016,384],{"className":6017},[413,423],[392,6019,381],{"className":6020},[413,423],[392,6022,2362],{"className":6023},[413,423],[392,6025,739],{"className":6026},[413,423],[392,6028,2370],{"className":6029,"style":2369},[413,423],[392,6031,2352],{"className":6032},[413,423],[392,6034,666],{"className":6035},[449]," is a\nmax-heap containing the ",[392,6038,6040],{"className":6039},[395],[392,6041,6043],{"className":6042,"ariaHidden":400},[399],[392,6044,6046,6049,6052,6055,6058,6061,6064,6067,6070,6073,6076],{"className":6045},[404],[392,6047],{"className":6048,"style":2036},[408],[392,6050,651],{"className":6051},[413,423],[392,6053,1211],{"className":6054},[413],[392,6056,2348],{"className":6057},[413,423],[392,6059,2352],{"className":6060},[413,423],[392,6062,384],{"className":6063},[413,423],[392,6065,381],{"className":6066},[413,423],[392,6068,2362],{"className":6069},[413,423],[392,6071,739],{"className":6072},[413,423],[392,6074,2370],{"className":6075,"style":2369},[413,423],[392,6077,2352],{"className":6078},[413,423]," smallest elements, and\n",[392,6081,6083],{"className":6082},[395],[392,6084,6086,6137],{"className":6085,"ariaHidden":400},[399],[392,6087,6089,6092,6095,6098,6101,6104,6107,6110,6113,6116,6119,6122,6125,6128,6131,6134],{"className":6088},[404],[392,6090],{"className":6091,"style":409},[408],[392,6093,651],{"className":6094},[413,423],[392,6096,655],{"className":6097},[418],[392,6099,651],{"className":6100},[413,423],[392,6102,1211],{"className":6103},[413],[392,6105,2348],{"className":6106},[413,423],[392,6108,2352],{"className":6109},[413,423],[392,6111,384],{"className":6112},[413,423],[392,6114,381],{"className":6115},[413,423],[392,6117,2362],{"className":6118},[413,423],[392,6120,739],{"className":6121},[413,423],[392,6123,2370],{"className":6124,"style":2369},[413,423],[392,6126,2352],{"className":6127},[413,423],[392,6129],{"className":6130,"style":884},[428],[392,6132,889],{"className":6133},[888],[392,6135],{"className":6136,"style":884},[428],[392,6138,6140,6143,6146,6149],{"className":6139},[404],[392,6141],{"className":6142,"style":409},[408],[392,6144,659],{"className":6145},[413],[392,6147,424],{"className":6148},[413,423],[392,6150,666],{"className":6151},[449]," holds the remaining elements in sorted order, each no\nsmaller than anything in the heap.",[381,6154,6155,3440,6158,6179,6180,6204,6205,6238,6239,6263,6264,4929,6285,6318],{},[550,6156,6157],{},"Cost.",[392,6159,6161],{"className":6160},[395],[392,6162,6164],{"className":6163,"ariaHidden":400},[399],[392,6165,6167,6170],{"className":6166},[404],[392,6168],{"className":6169,"style":2036},[408],[392,6171,6173],{"className":6172},[493,494],[392,6174,6176],{"className":6175},[413,498],[392,6177,3314],{"className":6178},[413]," is ",[392,6181,6183],{"className":6182},[395],[392,6184,6186],{"className":6185,"ariaHidden":400},[399],[392,6187,6189,6192,6195,6198,6201],{"className":6188},[404],[392,6190],{"className":6191,"style":409},[408],[392,6193,2248],{"className":6194,"style":2247},[413,423],[392,6196,419],{"className":6197},[418],[392,6199,424],{"className":6200},[413,423],[392,6202,450],{"className":6203},[449],". The loop runs ",[392,6206,6208],{"className":6207},[395],[392,6209,6211,6229],{"className":6210,"ariaHidden":400},[399],[392,6212,6214,6217,6220,6223,6226],{"className":6213},[404],[392,6215],{"className":6216,"style":5626},[408],[392,6218,424],{"className":6219},[413,423],[392,6221],{"className":6222,"style":884},[428],[392,6224,4885],{"className":6225},[888],[392,6227],{"className":6228,"style":884},[428],[392,6230,6232,6235],{"className":6231},[404],[392,6233],{"className":6234,"style":705},[408],[392,6236,575],{"className":6237},[413]," times, each\niteration doing ",[392,6240,6242],{"className":6241},[395],[392,6243,6245],{"className":6244,"ariaHidden":400},[399],[392,6246,6248,6251,6254,6257,6260],{"className":6247},[404],[392,6249],{"className":6250,"style":409},[408],[392,6252,2248],{"className":6253,"style":2247},[413,423],[392,6255,419],{"className":6256},[418],[392,6258,575],{"className":6259},[413],[392,6261,450],{"className":6262},[449]," work plus one ",[392,6265,6267],{"className":6266},[395],[392,6268,6270],{"className":6269,"ariaHidden":400},[399],[392,6271,6273,6276],{"className":6272},[404],[392,6274],{"className":6275,"style":2036},[408],[392,6277,6279],{"className":6278},[493,494],[392,6280,6282],{"className":6281},[413,498],[392,6283,2046],{"className":6284},[413],[392,6286,6288],{"className":6287},[395],[392,6289,6291],{"className":6290,"ariaHidden":400},[399],[392,6292,6294,6297,6300,6303,6309,6312,6315],{"className":6293},[404],[392,6295],{"className":6296,"style":409},[408],[392,6298,2248],{"className":6299,"style":2247},[413,423],[392,6301,419],{"className":6302},[418],[392,6304,6306],{"className":6305},[433],[392,6307,439],{"className":6308,"style":438},[413,437],[392,6310],{"className":6311,"style":429},[428],[392,6313,424],{"className":6314},[413,423],[392,6316,450],{"className":6317},[449],". The total is",[392,6320,6322],{"className":6321},[713],[392,6323,6325],{"className":6324},[395],[392,6326,6328,6355,6376,6398,6434],{"className":6327,"ariaHidden":400},[399],[392,6329,6331,6334,6337,6340,6343,6346,6349,6352],{"className":6330},[404],[392,6332],{"className":6333,"style":409},[408],[392,6335,2248],{"className":6336,"style":2247},[413,423],[392,6338,419],{"className":6339},[418],[392,6341,424],{"className":6342},[413,423],[392,6344,450],{"className":6345},[449],[392,6347],{"className":6348,"style":884},[428],[392,6350,889],{"className":6351},[888],[392,6353],{"className":6354,"style":884},[428],[392,6356,6358,6361,6364,6367,6370,6373],{"className":6357},[404],[392,6359],{"className":6360,"style":409},[408],[392,6362,419],{"className":6363},[418],[392,6365,424],{"className":6366},[413,423],[392,6368],{"className":6369,"style":884},[428],[392,6371,4885],{"className":6372},[888],[392,6374],{"className":6375,"style":884},[428],[392,6377,6379,6382,6385,6388,6391,6395],{"className":6378},[404],[392,6380],{"className":6381,"style":409},[408],[392,6383,575],{"className":6384},[413],[392,6386,450],{"className":6387},[449],[392,6389],{"className":6390,"style":884},[428],[392,6392,6394],{"className":6393},[888],"⋅",[392,6396],{"className":6397,"style":884},[428],[392,6399,6401,6404,6407,6410,6416,6419,6422,6425,6428,6431],{"className":6400},[404],[392,6402],{"className":6403,"style":409},[408],[392,6405,2248],{"className":6406,"style":2247},[413,423],[392,6408,419],{"className":6409},[418],[392,6411,6413],{"className":6412},[433],[392,6414,439],{"className":6415,"style":438},[413,437],[392,6417],{"className":6418,"style":429},[428],[392,6420,424],{"className":6421},[413,423],[392,6423,450],{"className":6424},[449],[392,6426],{"className":6427,"style":746},[428],[392,6429,750],{"className":6430},[602],[392,6432],{"className":6433,"style":746},[428],[392,6435,6437,6440,6443,6446,6449,6452,6458,6461,6464,6467],{"className":6436},[404],[392,6438],{"className":6439,"style":409},[408],[392,6441,414],{"className":6442},[413],[392,6444,419],{"className":6445},[418],[392,6447,424],{"className":6448},[413,423],[392,6450],{"className":6451,"style":429},[428],[392,6453,6455],{"className":6454},[433],[392,6456,439],{"className":6457,"style":438},[413,437],[392,6459],{"className":6460,"style":429},[428],[392,6462,424],{"className":6463},[413,423],[392,6465,450],{"className":6466},[449],[392,6468,788],{"className":6469},[787],[381,6471,6472,6473,6476,6477,6501,6502,6505,6506,6545,6546,6549,6550],{},"and this is the bound in ",[545,6474,6475],{},"every"," case, best, average, and worst, because the\nheap is always full height during the extractions. Heapsort is in place (",[392,6478,6480],{"className":6479},[395],[392,6481,6483],{"className":6482,"ariaHidden":400},[399],[392,6484,6486,6489,6492,6495,6498],{"className":6485},[404],[392,6487],{"className":6488,"style":409},[408],[392,6490,2248],{"className":6491,"style":2247},[413,423],[392,6493,419],{"className":6494},[418],[392,6496,575],{"className":6497},[413],[392,6499,450],{"className":6500},[449],"\nauxiliary space beyond the array) but ",[550,6503,6504],{},"not stable",": the swaps scatter equal\nkeys. Compared to its peers it lacks quicksort's cache-friendliness, since the\nparent\u002Fchild jumps roam across memory, which is why quicksort usually wins in\npractice despite the worse worst case. Heapsort's niche is the guaranteed\n",[392,6507,6509],{"className":6508},[395],[392,6510,6512],{"className":6511,"ariaHidden":400},[399],[392,6513,6515,6518,6521,6524,6527,6530,6536,6539,6542],{"className":6514},[404],[392,6516],{"className":6517,"style":409},[408],[392,6519,414],{"className":6520},[413],[392,6522,419],{"className":6523},[418],[392,6525,424],{"className":6526},[413,423],[392,6528],{"className":6529,"style":429},[428],[392,6531,6533],{"className":6532},[433],[392,6534,439],{"className":6535,"style":438},[413,437],[392,6537],{"className":6538,"style":429},[428],[392,6540,424],{"className":6541},[413,423],[392,6543,450],{"className":6544},[449]," ceiling with no extra memory, exactly the property ",[545,6547,6548],{},"introsort","\nborrows as a fallback when quicksort's recursion runs too deep.",[567,6551,6552],{},[384,6553,1188],{"href":6554,"ariaDescribedBy":6555,"dataFootnoteRef":376,"id":6556},"#user-content-fn-clrs-sort",[573],"user-content-fnref-clrs-sort",[555,6558,6560],{"id":6559},"priority-queues","Priority queues",[381,6562,6563,6564,6567,6568,6585,6586,6589],{},"Sorting is only the first use of a heap. The same structure implements a\n",[550,6565,6566],{},"priority queue",": a set ",[392,6569,6571],{"className":6570},[395],[392,6572,6574],{"className":6573,"ariaHidden":400},[399],[392,6575,6577,6580],{"className":6576},[404],[392,6578],{"className":6579,"style":1055},[408],[392,6581,6584],{"className":6582,"style":6583},[413,423],"margin-right:0.0576em;","S"," of elements, each with a ",[550,6587,6588],{},"key"," (its priority),\nsupporting",[6591,6592,6593,6669,6703,6737],"ul",{},[6594,6595,6596,6636,6637,6652,6653,6668],"li",{},[392,6597,6599],{"className":6598},[395],[392,6600,6602],{"className":6601,"ariaHidden":400},[399],[392,6603,6605,6608,6618,6621,6624,6627,6630,6633],{"className":6604},[404],[392,6606],{"className":6607,"style":409},[408],[392,6609,6611],{"className":6610},[493,494],[392,6612,6614],{"className":6613},[413,498],[392,6615,6617],{"className":6616},[413],"Insert",[392,6619,419],{"className":6620},[418],[392,6622,6584],{"className":6623,"style":6583},[413,423],[392,6625,788],{"className":6626},[787],[392,6628],{"className":6629,"style":429},[428],[392,6631,4828],{"className":6632},[413,423],[392,6634,450],{"className":6635},[449],": add ",[392,6638,6640],{"className":6639},[395],[392,6641,6643],{"className":6642,"ariaHidden":400},[399],[392,6644,6646,6649],{"className":6645},[404],[392,6647],{"className":6648,"style":624},[408],[392,6650,4828],{"className":6651},[413,423]," to ",[392,6654,6656],{"className":6655},[395],[392,6657,6659],{"className":6658,"ariaHidden":400},[399],[392,6660,6662,6665],{"className":6661},[404],[392,6663],{"className":6664,"style":1055},[408],[392,6666,6584],{"className":6667,"style":6583},[413,423],";",[6594,6670,6671,6702],{},[392,6672,6674],{"className":6673},[395],[392,6675,6677],{"className":6676,"ariaHidden":400},[399],[392,6678,6680,6683,6693,6696,6699],{"className":6679},[404],[392,6681],{"className":6682,"style":409},[408],[392,6684,6686],{"className":6685},[493,494],[392,6687,6689],{"className":6688},[413,498],[392,6690,6692],{"className":6691},[413],"Maximum",[392,6694,419],{"className":6695},[418],[392,6697,6584],{"className":6698,"style":6583},[413,423],[392,6700,450],{"className":6701},[449],": return the element with the largest key;",[6594,6704,6705,6736],{},[392,6706,6708],{"className":6707},[395],[392,6709,6711],{"className":6710,"ariaHidden":400},[399],[392,6712,6714,6717,6727,6730,6733],{"className":6713},[404],[392,6715],{"className":6716,"style":409},[408],[392,6718,6720],{"className":6719},[493,494],[392,6721,6723],{"className":6722},[413,498],[392,6724,6726],{"className":6725},[413],"Extract-Max",[392,6728,419],{"className":6729},[418],[392,6731,6584],{"className":6732,"style":6583},[413,423],[392,6734,450],{"className":6735},[449],": remove and return that element;",[6594,6738,6739,6790,6791,6806,6807,1211],{},[392,6740,6742],{"className":6741},[395],[392,6743,6745],{"className":6744,"ariaHidden":400},[399],[392,6746,6748,6751,6761,6764,6767,6770,6773,6776,6779,6782,6787],{"className":6747},[404],[392,6749],{"className":6750,"style":409},[408],[392,6752,6754],{"className":6753},[493,494],[392,6755,6757],{"className":6756},[413,498],[392,6758,6760],{"className":6759},[413],"Increase-Key",[392,6762,419],{"className":6763},[418],[392,6765,6584],{"className":6766,"style":6583},[413,423],[392,6768,788],{"className":6769},[787],[392,6771],{"className":6772,"style":429},[428],[392,6774,4828],{"className":6775},[413,423],[392,6777,788],{"className":6778},[787],[392,6780],{"className":6781,"style":429},[428],[392,6783,6786],{"className":6784,"style":6785},[413,423],"margin-right:0.0315em;","k",[392,6788,450],{"className":6789},[449],": raise ",[392,6792,6794],{"className":6793},[395],[392,6795,6797],{"className":6796,"ariaHidden":400},[399],[392,6798,6800,6803],{"className":6799},[404],[392,6801],{"className":6802,"style":624},[408],[392,6804,4828],{"className":6805},[413,423],"'s key to ",[392,6808,6810],{"className":6809},[395],[392,6811,6813],{"className":6812,"ariaHidden":400},[399],[392,6814,6816,6819],{"className":6815},[404],[392,6817],{"className":6818,"style":4053},[408],[392,6820,6786],{"className":6821,"style":6785},[413,423],[381,6823,6824,6825,6827,6828,6852,6853,6877,6878,6911,6912],{},"A max-heap answers ",[550,6826,6692],{}," in ",[392,6829,6831],{"className":6830},[395],[392,6832,6834],{"className":6833,"ariaHidden":400},[399],[392,6835,6837,6840,6843,6846,6849],{"className":6836},[404],[392,6838],{"className":6839,"style":409},[408],[392,6841,2248],{"className":6842,"style":2247},[413,423],[392,6844,419],{"className":6845},[418],[392,6847,575],{"className":6848},[413],[392,6850,450],{"className":6851},[449],", since it is just ",[392,6854,6856],{"className":6855},[395],[392,6857,6859],{"className":6858,"ariaHidden":400},[399],[392,6860,6862,6865,6868,6871,6874],{"className":6861},[404],[392,6863],{"className":6864,"style":409},[408],[392,6866,651],{"className":6867},[413,423],[392,6869,655],{"className":6870},[418],[392,6872,575],{"className":6873},[413],[392,6875,666],{"className":6876},[449],", and supports the\nmutating operations in ",[392,6879,6881],{"className":6880},[395],[392,6882,6884],{"className":6883,"ariaHidden":400},[399],[392,6885,6887,6890,6893,6896,6902,6905,6908],{"className":6886},[404],[392,6888],{"className":6889,"style":409},[408],[392,6891,2248],{"className":6892,"style":2247},[413,423],[392,6894,419],{"className":6895},[418],[392,6897,6899],{"className":6898},[433],[392,6900,439],{"className":6901,"style":438},[413,437],[392,6903],{"className":6904,"style":429},[428],[392,6906,424],{"className":6907},[413,423],[392,6909,450],{"className":6910},[449],", the height of the tree.",[567,6913,6914],{},[384,6915,1780],{"href":6916,"ariaDescribedBy":6917,"dataFootnoteRef":376,"id":6918},"#user-content-fn-skiena-pq",[573],"user-content-fnref-skiena-pq",[2129,6920,6922],{"className":2131,"code":6921,"language":2133,"meta":376,"style":376},"caption: $\\textsc{Heap-Extract-Max}(A)$ — remove and return the largest key\nnumber: 4\n$max \\gets A[1]$\n$A[1] \\gets A[A.heapsize]$ \u002F\u002F last leaf to the root\n$A.heapsize \\gets A.heapsize - 1$\ncall $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F sift the new root down\nreturn $max$\n",[2135,6923,6924,6929,6934,6939,6944,6949,6954],{"__ignoreMap":376},[392,6925,6926],{"class":2139,"line":6},[392,6927,6928],{},"caption: $\\textsc{Heap-Extract-Max}(A)$ — remove and return the largest key\n",[392,6930,6931],{"class":2139,"line":18},[392,6932,6933],{},"number: 4\n",[392,6935,6936],{"class":2139,"line":24},[392,6937,6938],{},"$max \\gets A[1]$\n",[392,6940,6941],{"class":2139,"line":73},[392,6942,6943],{},"$A[1] \\gets A[A.heapsize]$ \u002F\u002F last leaf to the root\n",[392,6945,6946],{"class":2139,"line":102},[392,6947,6948],{},"$A.heapsize \\gets A.heapsize - 1$\n",[392,6950,6951],{"class":2139,"line":108},[392,6952,6953],{},"call $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F sift the new root down\n",[392,6955,6956],{"class":2139,"line":116},[392,6957,6958],{},"return $max$\n",[381,6960,6961,6982,6983,6986,6987,7020,7021,7023,7024,7045,7046,7064],{},[392,6962,6964],{"className":6963},[395],[392,6965,6967],{"className":6966,"ariaHidden":400},[399],[392,6968,6970,6973],{"className":6969},[404],[392,6971],{"className":6972,"style":489},[408],[392,6974,6976],{"className":6975},[493,494],[392,6977,6979],{"className":6978},[413,498],[392,6980,6760],{"className":6981},[413]," moves the other direction: bump a key and ",[550,6984,6985],{},"sift up",",\nrepeatedly swapping with the parent while the heap property is violated, again in\n",[392,6988,6990],{"className":6989},[395],[392,6991,6993],{"className":6992,"ariaHidden":400},[399],[392,6994,6996,6999,7002,7005,7011,7014,7017],{"className":6995},[404],[392,6997],{"className":6998,"style":409},[408],[392,7000,2248],{"className":7001,"style":2247},[413,423],[392,7003,419],{"className":7004},[418],[392,7006,7008],{"className":7007},[433],[392,7009,439],{"className":7010,"style":438},[413,437],[392,7012],{"className":7013,"style":429},[428],[392,7015,424],{"className":7016},[413,423],[392,7018,450],{"className":7019},[449],". ",[550,7022,6617],{}," is just an ",[392,7025,7027],{"className":7026},[395],[392,7028,7030],{"className":7029,"ariaHidden":400},[399],[392,7031,7033,7036],{"className":7032},[404],[392,7034],{"className":7035,"style":489},[408],[392,7037,7039],{"className":7038},[493,494],[392,7040,7042],{"className":7041},[413,498],[392,7043,6760],{"className":7044},[413]," from ",[392,7047,7049],{"className":7048},[395],[392,7050,7052],{"className":7051,"ariaHidden":400},[399],[392,7053,7055,7058,7061],{"className":7054},[404],[392,7056],{"className":7057,"style":5626},[408],[392,7059,4885],{"className":7060},[413],[392,7062,4511],{"className":7063},[413],": append the new\nelement as the last leaf, then sift it up.",[907,7066,7068,7234],{"className":7067},[910,911],[913,7069,7073],{"xmlns":915,"width":7070,"height":7071,"viewBox":7072},"288.671","197.775","-75 -75 216.504 148.331",[920,7074,7075,7078,7084,7096,7099,7106,7118,7121,7128,7131,7138,7141,7148,7160,7163,7170,7173,7188,7207],{"stroke":922,"style":923},[925,7076],{"fill":927,"d":7077},"M55.52-57.465c0-5.893-4.776-10.67-10.669-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.669 0",[920,7079,7080],{"transform":931},[925,7081],{"d":7082,"fill":922,"stroke":922,"className":7083,"style":937},"M48.758-57.465L45.726-57.465L45.726-57.781Q46.877-57.781 46.877-58.076L46.877-62.800Q46.389-62.567 45.668-62.567L45.668-62.883Q46.798-62.883 47.360-63.459L47.505-63.459Q47.540-63.459 47.573-63.426Q47.606-63.393 47.606-63.358L47.606-58.076Q47.606-57.781 48.758-57.781L48.758-57.465M51.781-57.267Q51.047-57.267 50.617-57.748Q50.186-58.230 50.021-58.922Q49.856-59.614 49.856-60.361Q49.856-61.090 50.149-61.813Q50.441-62.536 50.995-62.998Q51.548-63.459 52.295-63.459Q52.792-63.459 53.128-63.193Q53.464-62.927 53.464-62.444Q53.464-62.264 53.337-62.136Q53.209-62.009 53.034-62.009Q52.853-62.009 52.724-62.134Q52.594-62.259 52.594-62.444Q52.594-62.558 52.651-62.662Q52.708-62.765 52.809-62.824Q52.911-62.883 53.034-62.883Q53.038-62.883 53.042-62.881Q53.047-62.879 53.051-62.875Q52.937-63.042 52.728-63.121Q52.519-63.200 52.295-63.200Q51.851-63.200 51.493-62.899Q51.135-62.598 50.946-62.145Q50.713-61.539 50.713-60.506Q50.885-60.871 51.186-61.099Q51.487-61.328 51.873-61.328Q52.278-61.328 52.623-61.161Q52.968-60.994 53.205-60.713Q53.442-60.431 53.572-60.069Q53.702-59.706 53.702-59.302Q53.702-58.757 53.458-58.291Q53.214-57.825 52.774-57.546Q52.335-57.267 51.781-57.267M51.781-57.553Q52.243-57.553 52.478-57.810Q52.713-58.067 52.779-58.441Q52.845-58.814 52.845-59.284L52.845-59.319Q52.845-59.807 52.788-60.172Q52.730-60.537 52.502-60.800Q52.273-61.064 51.830-61.064Q51.460-61.064 51.210-60.820Q50.959-60.576 50.845-60.212Q50.731-59.847 50.731-59.500Q50.731-59.381 50.740-59.319Q50.740-59.302 50.737-59.291Q50.735-59.280 50.731-59.267Q50.731-58.616 50.968-58.085Q51.205-57.553 51.781-57.553",[936],[920,7085,7086,7089],{"fill":2444},[925,7087],{"d":7088},"M1.46-20.476c0-5.893-4.776-10.67-10.669-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.778 10.67-10.67Zm-10.669 0",[920,7090,7092],{"transform":7091},"translate(-58.685 39.889)",[925,7093],{"d":7094,"fill":922,"stroke":922,"className":7095,"style":937},"M48.758-57.465L45.726-57.465L45.726-57.781Q46.877-57.781 46.877-58.076L46.877-62.800Q46.389-62.567 45.668-62.567L45.668-62.883Q46.798-62.883 47.360-63.459L47.505-63.459Q47.540-63.459 47.573-63.426Q47.606-63.393 47.606-63.358L47.606-58.076Q47.606-57.781 48.758-57.781L48.758-57.465M52.168-58.942L49.729-58.942L49.729-59.258L52.555-63.406Q52.599-63.459 52.664-63.459L52.818-63.459Q52.858-63.459 52.891-63.426Q52.924-63.393 52.924-63.349L52.924-59.258L53.825-59.258L53.825-58.942L52.924-58.942L52.924-58.076Q52.924-57.781 53.825-57.781L53.825-57.465L51.271-57.465L51.271-57.781Q51.632-57.781 51.900-57.836Q52.168-57.891 52.168-58.076L52.168-58.942M52.225-62.431L50.063-59.258L52.225-59.258",[936],[925,7097],{"fill":927,"d":7098},"M109.58-20.476c0-5.893-4.776-10.67-10.669-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.778 10.67-10.67Zm-10.669 0",[920,7100,7102],{"transform":7101},"translate(49.435 39.889)",[925,7103],{"d":7104,"fill":922,"stroke":922,"className":7105,"style":937},"M48.758-57.465L45.726-57.465L45.726-57.781Q46.877-57.781 46.877-58.076L46.877-62.800Q46.389-62.567 45.668-62.567L45.668-62.883Q46.798-62.883 47.360-63.459L47.505-63.459Q47.540-63.459 47.573-63.426Q47.606-63.393 47.606-63.358L47.606-58.076Q47.606-57.781 48.758-57.781L48.758-57.465M51.781-57.267Q50.656-57.267 50.243-58.164Q49.830-59.060 49.830-60.335Q49.830-61.108 49.979-61.807Q50.129-62.506 50.564-62.982Q50.999-63.459 51.781-63.459Q52.559-63.459 52.994-62.980Q53.429-62.501 53.579-61.805Q53.728-61.108 53.728-60.335Q53.728-59.056 53.315-58.162Q52.902-57.267 51.781-57.267M51.781-57.527Q52.300-57.527 52.550-58.038Q52.801-58.550 52.858-59.161Q52.915-59.772 52.915-60.480Q52.915-61.165 52.858-61.725Q52.801-62.286 52.548-62.743Q52.295-63.200 51.781-63.200Q51.377-63.200 51.140-62.923Q50.902-62.646 50.795-62.205Q50.687-61.763 50.663-61.370Q50.639-60.976 50.639-60.480Q50.639-59.974 50.663-59.546Q50.687-59.117 50.795-58.634Q50.902-58.151 51.142-57.839Q51.381-57.527 51.781-57.527",[936],[920,7107,7108,7111],{"fill":2444},[925,7109],{"d":7110},"M-26.992 19.357c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7112,7114],{"transform":7113},"translate(-84.825 79.722)",[925,7115],{"d":7116,"fill":922,"stroke":922,"className":7117,"style":937},"M45.238-58.832Q45.238-59.390 45.598-59.803Q45.958-60.216 46.534-60.488L46.165-60.721Q45.862-60.923 45.675-61.253Q45.488-61.583 45.488-61.939Q45.488-62.593 45.994-63.026Q46.499-63.459 47.163-63.459Q47.562-63.459 47.947-63.299Q48.331-63.138 48.580-62.833Q48.828-62.528 48.828-62.110Q48.828-61.279 47.760-60.721L48.314-60.374Q48.661-60.146 48.872-59.777Q49.083-59.407 49.083-58.994Q49.083-58.616 48.925-58.298Q48.767-57.979 48.490-57.746Q48.213-57.513 47.870-57.390Q47.527-57.267 47.163-57.267Q46.697-57.267 46.251-57.454Q45.805-57.641 45.521-57.995Q45.238-58.348 45.238-58.832M45.761-58.832Q45.761-58.287 46.180-57.920Q46.600-57.553 47.163-57.553Q47.492-57.553 47.817-57.685Q48.143-57.817 48.351-58.071Q48.560-58.326 48.560-58.669Q48.560-58.933 48.424-59.157Q48.288-59.381 48.055-59.535L46.811-60.317Q46.350-60.080 46.055-59.693Q45.761-59.306 45.761-58.832M46.372-61.587L47.488-60.884Q47.712-61.007 47.916-61.196Q48.121-61.385 48.241-61.618Q48.362-61.851 48.362-62.110Q48.362-62.418 48.191-62.668Q48.019-62.919 47.743-63.059Q47.466-63.200 47.154-63.200Q46.705-63.200 46.332-62.954Q45.958-62.708 45.958-62.281Q45.958-61.877 46.372-61.587",[936],[925,7119],{"fill":927,"d":7120},"M29.913 19.357c0-5.893-4.776-10.67-10.67-10.67-5.892 0-10.669 4.777-10.669 10.67s4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7122,7124],{"transform":7123},"translate(-27.92 79.722)",[925,7125],{"d":7126,"fill":922,"stroke":922,"className":7127,"style":937},"M46.473-57.707Q46.473-58.344 46.629-58.990Q46.785-59.636 47.077-60.242Q47.369-60.849 47.778-61.398L48.595-62.506L47.567-62.506Q45.923-62.506 45.875-62.462Q45.769-62.334 45.651-61.631L45.365-61.631L45.660-63.547L45.950-63.547L45.950-63.521Q45.950-63.358 46.514-63.310Q47.079-63.261 47.624-63.261L49.342-63.261L49.342-63.055Q49.342-63.037 49.340-63.028Q49.338-63.020 49.333-63.011L48.046-61.262Q47.795-60.910 47.648-60.484Q47.501-60.058 47.435-59.594Q47.369-59.131 47.356-58.720Q47.343-58.309 47.343-57.707Q47.343-57.527 47.217-57.397Q47.092-57.267 46.912-57.267Q46.793-57.267 46.690-57.324Q46.587-57.382 46.530-57.485Q46.473-57.588 46.473-57.707",[936],[925,7129],{"fill":927,"d":7130},"M81.128 19.357c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7132,7134],{"transform":7133},"translate(23.295 79.722)",[925,7135],{"d":7136,"fill":922,"stroke":922,"className":7137,"style":937},"M45.914-57.852Q46.161-57.553 46.767-57.553Q47.048-57.553 47.288-57.691Q47.527-57.830 47.705-58.052Q47.883-58.274 47.993-58.537Q48.226-59.113 48.226-60.229Q48.059-59.864 47.754-59.640Q47.448-59.416 47.066-59.416Q46.530-59.416 46.114-59.695Q45.699-59.974 45.468-60.440Q45.238-60.906 45.238-61.433Q45.238-61.846 45.385-62.215Q45.532-62.585 45.796-62.861Q46.059-63.138 46.429-63.299Q46.798-63.459 47.211-63.459Q47.769-63.459 48.143-63.167Q48.516-62.875 48.720-62.411Q48.925-61.947 49.004-61.431Q49.083-60.915 49.083-60.383Q49.083-59.667 48.815-58.944Q48.547-58.221 48.024-57.744Q47.501-57.267 46.776-57.267Q46.226-57.267 45.849-57.516Q45.471-57.764 45.471-58.282Q45.471-58.401 45.528-58.504Q45.585-58.608 45.686-58.667Q45.787-58.726 45.914-58.726Q46.099-58.726 46.222-58.594Q46.345-58.463 46.345-58.282Q46.345-58.107 46.218-57.979Q46.090-57.852 45.914-57.852M47.110-59.680Q47.479-59.680 47.727-59.922Q47.976-60.163 48.092-60.521Q48.208-60.880 48.208-61.253Q48.208-61.363 48.200-61.416Q48.204-61.429 48.206-61.440Q48.208-61.451 48.208-61.468Q48.208-62.123 47.993-62.662Q47.778-63.200 47.211-63.200Q46.851-63.200 46.622-63.050Q46.393-62.901 46.277-62.644Q46.161-62.387 46.128-62.106Q46.095-61.824 46.095-61.451L46.095-61.416Q46.095-61.090 46.121-60.803Q46.147-60.515 46.246-60.256Q46.345-59.996 46.556-59.838Q46.767-59.680 47.110-59.680",[936],[925,7139],{"fill":927,"d":7140},"M138.034 19.357c0-5.893-4.777-10.67-10.67-10.67s-10.67 4.777-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7142,7144],{"transform":7143},"translate(80.2 79.722)",[925,7145],{"d":7146,"fill":922,"stroke":922,"className":7147,"style":937},"M45.752-58.186L45.708-58.186Q45.910-57.869 46.297-57.711Q46.684-57.553 47.110-57.553Q47.646-57.553 47.885-57.988Q48.125-58.423 48.125-59.003Q48.125-59.583 47.879-60.023Q47.633-60.462 47.101-60.462L46.481-60.462Q46.455-60.462 46.422-60.491Q46.389-60.519 46.389-60.541L46.389-60.642Q46.389-60.673 46.418-60.697Q46.446-60.721 46.481-60.721L47-60.761Q47.466-60.761 47.712-61.233Q47.958-61.706 47.958-62.224Q47.958-62.651 47.745-62.925Q47.532-63.200 47.110-63.200Q46.767-63.200 46.442-63.070Q46.117-62.941 45.932-62.686L45.958-62.686Q46.161-62.686 46.297-62.545Q46.433-62.404 46.433-62.207Q46.433-62.009 46.299-61.875Q46.165-61.741 45.967-61.741Q45.765-61.741 45.627-61.875Q45.488-62.009 45.488-62.207Q45.488-62.796 45.991-63.127Q46.495-63.459 47.110-63.459Q47.488-63.459 47.890-63.319Q48.292-63.178 48.560-62.899Q48.828-62.620 48.828-62.224Q48.828-61.675 48.474-61.238Q48.121-60.800 47.580-60.616Q47.971-60.537 48.316-60.313Q48.661-60.089 48.872-59.748Q49.083-59.407 49.083-59.012Q49.083-58.630 48.920-58.307Q48.758-57.984 48.466-57.748Q48.173-57.513 47.826-57.390Q47.479-57.267 47.110-57.267Q46.662-57.267 46.231-57.428Q45.800-57.588 45.519-57.915Q45.238-58.243 45.238-58.700Q45.238-58.915 45.385-59.058Q45.532-59.201 45.752-59.201Q45.963-59.201 46.108-59.056Q46.253-58.911 46.253-58.700Q46.253-58.489 46.106-58.337Q45.958-58.186 45.752-58.186",[936],[920,7149,7150,7153],{"fill":2431},[925,7151],{"d":7152},"M-44.064 59.191c0-5.892-4.777-10.67-10.67-10.67s-10.67 4.778-10.67 10.67 4.778 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7154,7156],{"transform":7155},"translate(-104.21 119.556)",[925,7157],{"d":7158,"fill":922,"stroke":922,"className":7159,"style":937},"M48.758-57.465L45.726-57.465L45.726-57.781Q46.877-57.781 46.877-58.076L46.877-62.800Q46.389-62.567 45.668-62.567L45.668-62.883Q46.798-62.883 47.360-63.459L47.505-63.459Q47.540-63.459 47.573-63.426Q47.606-63.393 47.606-63.358L47.606-58.076Q47.606-57.781 48.758-57.781L48.758-57.465M50.296-58.471Q50.436-58.058 50.797-57.806Q51.157-57.553 51.592-57.553Q52.045-57.553 52.311-57.806Q52.577-58.058 52.680-58.443Q52.783-58.827 52.783-59.284Q52.783-60.985 51.873-60.985Q51.553-60.985 51.324-60.891Q51.096-60.796 50.966-60.677Q50.836-60.559 50.724-60.420Q50.612-60.282 50.577-60.273L50.494-60.273Q50.450-60.273 50.419-60.304Q50.388-60.335 50.388-60.383L50.388-63.380Q50.388-63.411 50.423-63.435Q50.458-63.459 50.485-63.459L50.524-63.459Q51.157-63.169 51.830-63.169Q52.502-63.169 53.143-63.459L53.170-63.459Q53.201-63.459 53.234-63.437Q53.267-63.415 53.267-63.380L53.267-63.279Q53.267-63.275 53.258-63.257Q53.249-63.239 53.249-63.235Q52.933-62.840 52.462-62.618Q51.992-62.396 51.496-62.396Q51.087-62.396 50.705-62.506L50.705-60.787Q51.162-61.244 51.873-61.244Q52.383-61.244 52.783-60.963Q53.183-60.682 53.405-60.227Q53.627-59.772 53.627-59.267Q53.627-58.717 53.348-58.258Q53.069-57.799 52.603-57.533Q52.137-57.267 51.592-57.267Q51.153-57.267 50.768-57.494Q50.384-57.720 50.155-58.100Q49.927-58.480 49.927-58.924Q49.927-59.117 50.059-59.249Q50.190-59.381 50.388-59.381Q50.520-59.381 50.623-59.322Q50.726-59.262 50.786-59.159Q50.845-59.056 50.845-58.924Q50.845-58.726 50.718-58.594Q50.590-58.463 50.388-58.463Q50.327-58.463 50.296-58.471",[936],[925,7161],{"fill":927,"d":7162},"M-9.92 59.191c0-5.892-4.778-10.67-10.67-10.67s-10.67 4.778-10.67 10.67 4.777 10.67 10.67 10.67 10.67-4.777 10.67-10.67Zm-10.67 0",[920,7164,7166],{"transform":7165},"translate(-67.754 119.556)",[925,7167],{"d":7168,"fill":922,"stroke":922,"className":7169,"style":937},"M47.549-58.942L45.110-58.942L45.110-59.258L47.936-63.406Q47.980-63.459 48.046-63.459L48.200-63.459Q48.239-63.459 48.272-63.426Q48.305-63.393 48.305-63.349L48.305-59.258L49.206-59.258L49.206-58.942L48.305-58.942L48.305-58.076Q48.305-57.781 49.206-57.781L49.206-57.465L46.653-57.465L46.653-57.781Q47.013-57.781 47.281-57.836Q47.549-57.891 47.549-58.076L47.549-58.942M47.606-62.431L45.444-59.258L47.606-59.258",[936],[925,7171],{"fill":927,"d":7172},"M35.88-51.327-.238-26.614M53.822-51.327 89.94-26.614M-15.527-11.632l-15.817 22.145M-2.891-11.632l15.817 22.145M92.593-11.632 76.776 10.513M105.229-11.632l15.817 22.145M-41.943 29.348l-8.51 19.853M-33.38 29.348l8.508 19.853",[920,7174,7175,7178,7181],{"fill":2512,"stroke":2512,"style":2513},[925,7176],{"fill":927,"d":7177},"M-52.468 47.744c1.518-7.667 3.575-12.464 8.08-18.851",[925,7179],{"fill":927,"d":7180,"style":2558},"M-48.985 46.232c-1.929.095-2.999.945-3.56 1.905-.154-1.101-.82-2.295-2.566-3.118M-48.185 28.858c1.801.698 3.125.356 4.028-.292-.308 1.068-.186 2.43 1.076 3.892",[920,7182,7184],{"transform":7183},"translate(-102.08 97.575)",[925,7185],{"d":7186,"fill":2512,"stroke":2512,"className":7187,"style":1422},"M48.177-57.465L45.647-57.465L45.647-57.745Q46.615-57.745 46.615-57.954L46.615-61.573Q46.222-61.385 45.600-61.385L45.600-61.666Q46.017-61.666 46.381-61.767Q46.745-61.867 47.001-62.113L47.127-62.113Q47.192-62.096 47.209-62.028L47.209-57.954Q47.209-57.745 48.177-57.745",[936],[920,7189,7190,7193,7196,7200],{"fill":2512,"stroke":2512,"style":2513},[925,7191],{"fill":927,"d":7192},"M-33.002 8.66C-29.007-.513-25.197-5.846-17.817-12.6",[925,7194],{"fill":927,"d":7195,"style":2520},"M-29.276 7.926c-1.905-.32-3.132.283-3.885 1.1.085-1.108-.31-2.417-1.84-3.594",[925,7197],{"fill":927,"d":7198,"style":7199},"M-21.519-13.444c1.61 1.067 2.976 1.016 3.997.575-.53.978-.7 2.334.22 4.032","stroke-linecap:round;stroke-linejoin:round;stroke-width:.799944",[920,7201,7203],{"transform":7202},"translate(-79.215 56.868)",[925,7204],{"d":7205,"fill":2512,"stroke":2512,"className":7206,"style":1422},"M48.177-57.465L45.292-57.465L45.292-57.667Q45.292-57.697 45.319-57.725L46.567-58.942Q46.639-59.017 46.681-59.059Q46.724-59.102 46.803-59.181Q47.216-59.594 47.447-59.952Q47.678-60.309 47.678-60.733Q47.678-60.965 47.599-61.168Q47.520-61.372 47.379-61.522Q47.237-61.673 47.042-61.753Q46.847-61.833 46.615-61.833Q46.304-61.833 46.046-61.674Q45.788-61.515 45.658-61.238L45.678-61.238Q45.846-61.238 45.953-61.127Q46.061-61.016 46.061-60.852Q46.061-60.695 45.952-60.582Q45.842-60.469 45.678-60.469Q45.518-60.469 45.405-60.582Q45.292-60.695 45.292-60.852Q45.292-61.228 45.500-61.515Q45.709-61.802 46.044-61.958Q46.379-62.113 46.734-62.113Q47.158-62.113 47.538-61.955Q47.917-61.796 48.151-61.479Q48.385-61.163 48.385-60.733Q48.385-60.422 48.245-60.153Q48.105-59.885 47.900-59.680Q47.695-59.475 47.332-59.193Q46.970-58.911 46.861-58.815L46.006-58.087L46.649-58.087Q46.912-58.087 47.201-58.089Q47.490-58.090 47.708-58.099Q47.927-58.108 47.944-58.125Q48.006-58.190 48.043-58.357Q48.081-58.525 48.119-58.767L48.385-58.767",[936],[920,7208,7209,7216,7222,7228],{"fill":1420,"stroke":927,"fontSize":1137},[920,7210,7212],{"transform":7211},"translate(23.45 -6.96)",[925,7213],{"d":7214,"fill":1420,"stroke":1420,"className":7215,"style":1422},"M45.165-57.472L45.165-58.535Q45.165-58.559 45.193-58.586Q45.220-58.613 45.244-58.613L45.353-58.613Q45.418-58.613 45.432-58.555Q45.528-58.121 45.774-57.870Q46.020-57.619 46.434-57.619Q46.775-57.619 47.028-57.752Q47.281-57.885 47.281-58.193Q47.281-58.350 47.187-58.465Q47.093-58.579 46.955-58.648Q46.816-58.716 46.649-58.754L46.068-58.853Q45.712-58.921 45.439-59.142Q45.165-59.362 45.165-59.704Q45.165-59.953 45.277-60.128Q45.388-60.302 45.574-60.401Q45.760-60.500 45.976-60.543Q46.191-60.586 46.434-60.586Q46.847-60.586 47.127-60.404L47.343-60.579Q47.353-60.582 47.360-60.584Q47.367-60.586 47.377-60.586L47.428-60.586Q47.455-60.586 47.479-60.562Q47.503-60.538 47.503-60.510L47.503-59.663Q47.503-59.642 47.479-59.615Q47.455-59.588 47.428-59.588L47.315-59.588Q47.288-59.588 47.262-59.613Q47.237-59.639 47.237-59.663Q47.237-59.899 47.131-60.063Q47.025-60.227 46.842-60.309Q46.659-60.391 46.427-60.391Q46.099-60.391 45.842-60.288Q45.586-60.186 45.586-59.909Q45.586-59.714 45.769-59.605Q45.952-59.495 46.181-59.454L46.755-59.348Q47.001-59.300 47.215-59.172Q47.428-59.044 47.565-58.841Q47.702-58.637 47.702-58.388Q47.702-57.875 47.336-57.636Q46.970-57.397 46.434-57.397Q45.938-57.397 45.606-57.691L45.340-57.417Q45.319-57.397 45.292-57.397L45.244-57.397Q45.220-57.397 45.193-57.424Q45.165-57.451 45.165-57.472M48.857-58.306L48.857-60.203L48.218-60.203L48.218-60.425Q48.536-60.425 48.753-60.635Q48.970-60.845 49.070-61.155Q49.171-61.464 49.171-61.772L49.438-61.772L49.438-60.483L50.515-60.483L50.515-60.203L49.438-60.203L49.438-58.319Q49.438-58.043 49.542-57.844Q49.646-57.646 49.906-57.646Q50.063-57.646 50.169-57.750Q50.275-57.855 50.325-58.008Q50.374-58.162 50.374-58.319L50.374-58.733L50.641-58.733L50.641-58.306Q50.641-58.080 50.542-57.870Q50.443-57.660 50.258-57.528Q50.074-57.397 49.845-57.397Q49.407-57.397 49.132-57.634Q48.857-57.872 48.857-58.306M51.410-58.948Q51.410-59.290 51.545-59.589Q51.680-59.888 51.919-60.112Q52.159-60.336 52.476-60.461Q52.794-60.586 53.126-60.586Q53.570-60.586 53.970-60.370Q54.370-60.155 54.604-59.777Q54.838-59.400 54.838-58.948Q54.838-58.607 54.696-58.323Q54.555-58.039 54.310-57.832Q54.066-57.626 53.757-57.511Q53.447-57.397 53.126-57.397Q52.695-57.397 52.294-57.598Q51.892-57.800 51.651-58.152Q51.410-58.504 51.410-58.948M53.126-57.646Q53.727-57.646 53.951-58.024Q54.175-58.402 54.175-59.034Q54.175-59.646 53.941-60.005Q53.707-60.363 53.126-60.363Q52.073-60.363 52.073-59.034Q52.073-58.402 52.299-58.024Q52.524-57.646 53.126-57.646M57.077-56.108L55.447-56.108L55.447-56.388Q55.676-56.388 55.824-56.423Q55.973-56.457 55.973-56.597L55.973-59.943Q55.973-60.114 55.836-60.155Q55.700-60.196 55.447-60.196L55.447-60.476L56.527-60.551L56.527-60.145Q56.749-60.346 57.036-60.449Q57.323-60.551 57.631-60.551Q58.058-60.551 58.422-60.338Q58.786-60.124 59-59.760Q59.213-59.396 59.213-58.976Q59.213-58.531 58.974-58.167Q58.735-57.803 58.342-57.600Q57.949-57.397 57.504-57.397Q57.238-57.397 56.990-57.497Q56.742-57.598 56.554-57.779L56.554-56.597Q56.554-56.460 56.703-56.424Q56.851-56.388 57.077-56.388L57.077-56.108M56.554-59.796L56.554-58.186Q56.687-57.933 56.930-57.776Q57.173-57.619 57.450-57.619Q57.778-57.619 58.031-57.820Q58.284-58.022 58.417-58.340Q58.550-58.658 58.550-58.976Q58.550-59.205 58.485-59.434Q58.420-59.663 58.292-59.861Q58.164-60.059 57.969-60.179Q57.774-60.298 57.542-60.298Q57.248-60.298 56.980-60.169Q56.711-60.039 56.554-59.796M60.249-57.885Q60.249-58.053 60.372-58.176Q60.495-58.299 60.669-58.299Q60.837-58.299 60.960-58.176Q61.083-58.053 61.083-57.885Q61.083-57.711 60.960-57.588Q60.837-57.465 60.669-57.465Q60.495-57.465 60.372-57.588Q60.249-57.711 60.249-57.885M60.249-60.069Q60.249-60.237 60.372-60.360Q60.495-60.483 60.669-60.483Q60.837-60.483 60.960-60.360Q61.083-60.237 61.083-60.069Q61.083-59.895 60.960-59.772Q60.837-59.649 60.669-59.649Q60.495-59.649 60.372-59.772Q60.249-59.895 60.249-60.069",[936],[920,7217,7218],{"transform":7211},[925,7219],{"d":7220,"fill":1420,"stroke":1420,"className":7221,"style":1422},"M68.692-57.465L66.162-57.465L66.162-57.745Q67.130-57.745 67.130-57.954L67.130-61.573Q66.737-61.385 66.115-61.385L66.115-61.666Q66.532-61.666 66.896-61.767Q67.260-61.867 67.516-62.113L67.642-62.113Q67.707-62.096 67.724-62.028L67.724-57.954Q67.724-57.745 68.692-57.745L68.692-57.465M70.155-58.227L70.124-58.227Q70.261-57.930 70.558-57.754Q70.855-57.578 71.183-57.578Q71.546-57.578 71.773-57.756Q72-57.933 72.094-58.222Q72.188-58.511 72.188-58.873Q72.188-59.188 72.134-59.473Q72.079-59.758 71.906-59.964Q71.734-60.169 71.419-60.169Q71.146-60.169 70.963-60.102Q70.780-60.035 70.676-59.946Q70.572-59.858 70.476-59.748Q70.380-59.639 70.336-59.629L70.257-59.629Q70.185-59.646 70.168-59.717L70.168-62.035Q70.168-62.069 70.192-62.091Q70.216-62.113 70.250-62.113L70.278-62.113Q70.565-61.997 70.833-61.943Q71.101-61.888 71.378-61.888Q71.655-61.888 71.925-61.943Q72.195-61.997 72.475-62.113L72.499-62.113Q72.533-62.113 72.557-62.090Q72.581-62.066 72.581-62.035L72.581-61.966Q72.581-61.939 72.561-61.919Q72.287-61.604 71.903-61.428Q71.518-61.252 71.105-61.252Q70.766-61.252 70.449-61.338L70.449-60.056Q70.845-60.391 71.419-60.391Q71.823-60.391 72.159-60.181Q72.496-59.970 72.689-59.618Q72.882-59.266 72.882-58.866Q72.882-58.535 72.742-58.249Q72.602-57.964 72.357-57.754Q72.113-57.544 71.811-57.434Q71.508-57.325 71.190-57.325Q70.831-57.325 70.505-57.489Q70.178-57.653 69.984-57.945Q69.789-58.237 69.789-58.600Q69.789-58.750 69.895-58.856Q70.001-58.962 70.155-58.962Q70.308-58.962 70.413-58.858Q70.517-58.754 70.517-58.600Q70.517-58.443 70.413-58.335Q70.308-58.227 70.155-58.227",[936],[920,7223,7224],{"transform":7211},[925,7225],{"d":7226,"fill":1420,"stroke":1420,"className":7227,"style":1422},"M80.851-56.945L76.463-59.061Q76.370-59.106 76.370-59.215Q76.370-59.318 76.463-59.362L80.851-61.478Q80.913-61.498 80.933-61.498Q81.005-61.498 81.055-61.445Q81.104-61.392 81.104-61.320Q81.104-61.283 81.080-61.238Q81.056-61.194 81.019-61.173L76.938-59.215L81.019-57.250Q81.050-57.236 81.077-57.188Q81.104-57.140 81.104-57.103Q81.104-57.038 81.055-56.981Q81.005-56.925 80.933-56.925Q80.913-56.925 80.851-56.945",[936],[920,7229,7230],{"transform":7211},[925,7231],{"d":7232,"fill":1420,"stroke":1420,"className":7233,"style":1422},"M87.467-57.465L84.937-57.465L84.937-57.745Q85.905-57.745 85.905-57.954L85.905-61.573Q85.512-61.385 84.890-61.385L84.890-61.666Q85.307-61.666 85.671-61.767Q86.035-61.867 86.291-62.113L86.417-62.113Q86.482-62.096 86.499-62.028L86.499-57.954Q86.499-57.745 87.467-57.745L87.467-57.465M90.112-57.325Q89.654-57.325 89.336-57.540Q89.018-57.756 88.837-58.108Q88.656-58.460 88.579-58.880Q88.502-59.300 88.502-59.728Q88.502-60.312 88.755-60.868Q89.008-61.423 89.478-61.768Q89.948-62.113 90.546-62.113Q90.956-62.113 91.240-61.915Q91.524-61.717 91.524-61.314Q91.524-61.218 91.478-61.139Q91.432-61.061 91.351-61.016Q91.271-60.972 91.182-60.972Q91.035-60.972 90.934-61.069Q90.833-61.167 90.833-61.314Q90.833-61.444 90.924-61.551Q91.015-61.659 91.148-61.659Q90.960-61.881 90.546-61.881Q90.232-61.881 89.958-61.717Q89.685-61.553 89.517-61.279Q89.329-60.989 89.265-60.623Q89.200-60.257 89.200-59.803Q89.350-60.097 89.615-60.275Q89.880-60.452 90.194-60.452Q90.625-60.452 90.974-60.246Q91.322-60.039 91.522-59.683Q91.722-59.328 91.722-58.901Q91.722-58.456 91.505-58.096Q91.288-57.735 90.915-57.530Q90.543-57.325 90.112-57.325M90.112-57.578Q90.488-57.578 90.692-57.761Q90.895-57.944 90.958-58.227Q91.021-58.511 91.021-58.901Q91.021-59.287 90.967-59.567Q90.912-59.847 90.717-60.039Q90.522-60.230 90.153-60.230Q89.863-60.230 89.651-60.054Q89.439-59.878 89.331-59.605Q89.224-59.331 89.224-59.048L89.224-58.907L89.224-58.866Q89.224-58.361 89.435-57.969Q89.647-57.578 90.112-57.578",[936],[1032,7235,7237,7238,7254,7255,7290,7291,7324,7325,7359],{"className":7236},[1035],"Increase-Key as sift-up, the mirror of Max-Heapify. Raising a leaf's key to ",[392,7239,7241],{"className":7240},[395],[392,7242,7244],{"className":7243,"ariaHidden":400},[399],[392,7245,7247,7250],{"className":7246},[404],[392,7248],{"className":7249,"style":705},[408],[392,7251,7253],{"className":7252},[413],"15"," violates the heap above it, so it swaps with its parent repeatedly (",[392,7256,7258],{"className":7257},[395],[392,7259,7261,7281],{"className":7260,"ariaHidden":400},[399],[392,7262,7264,7268,7271,7274,7278],{"className":7263},[404],[392,7265],{"className":7266,"style":7267},[408],"height:0.6835em;vertical-align:-0.0391em;",[392,7269,7253],{"className":7270},[413],[392,7272],{"className":7273,"style":746},[428],[392,7275,7277],{"className":7276},[602],">",[392,7279],{"className":7280,"style":746},[428],[392,7282,7284,7287],{"className":7283},[404],[392,7285],{"className":7286,"style":705},[408],[392,7288,1124],{"className":7289},[413],", then ",[392,7292,7294],{"className":7293},[395],[392,7295,7297,7315],{"className":7296,"ariaHidden":400},[399],[392,7298,7300,7303,7306,7309,7312],{"className":7299},[404],[392,7301],{"className":7302,"style":7267},[408],[392,7304,7253],{"className":7305},[413],[392,7307],{"className":7308,"style":746},[428],[392,7310,7277],{"className":7311},[602],[392,7313],{"className":7314,"style":746},[428],[392,7316,7318,7321],{"className":7317},[404],[392,7319],{"className":7320,"style":705},[408],[392,7322,1098],{"className":7323},[413],") until ",[392,7326,7328],{"className":7327},[395],[392,7329,7331,7350],{"className":7330,"ariaHidden":400},[399],[392,7332,7334,7337,7340,7343,7347],{"className":7333},[404],[392,7335],{"className":7336,"style":7267},[408],[392,7338,7253],{"className":7339},[413],[392,7341],{"className":7342,"style":746},[428],[392,7344,7346],{"className":7345},[602],"\u003C",[392,7348],{"className":7349,"style":746},[428],[392,7351,7353,7356],{"className":7352},[404],[392,7354],{"className":7355,"style":705},[408],[392,7357,1084],{"className":7358},[413]," at the root.",[381,7361,7362,7363,7378,7379,7400,7401,7404,7405,7408],{},"Reading heapsort through this lens, it\nis nothing but ",[392,7364,7366],{"className":7365},[395],[392,7367,7369],{"className":7368,"ariaHidden":400},[399],[392,7370,7372,7375],{"className":7371},[404],[392,7373],{"className":7374,"style":624},[408],[392,7376,424],{"className":7377},[413,423]," successive ",[392,7380,7382],{"className":7381},[395],[392,7383,7385],{"className":7384,"ariaHidden":400},[399],[392,7386,7388,7391],{"className":7387},[404],[392,7389],{"className":7390,"style":1055},[408],[392,7392,7394],{"className":7393},[493,494],[392,7395,7397],{"className":7396},[413,498],[392,7398,6726],{"className":7399},[413]," operations, writing each maximum\ninto the vacancy the shrinking heap leaves behind. Priority queues built this way\ndrive Dijkstra's ",[384,7402,7403],{"href":175},"shortest paths",", Prim's ",[384,7406,7407],{"href":170},"minimum spanning tree",", event-driven\nsimulation, and any scheduler that must repeatedly serve the most urgent task.",[555,7410,7412],{"id":7411},"takeaways","Takeaways",[6591,7414,7415,7566,7573,7678,7742],{},[6594,7416,561,7417,7419,7420,7477,7478,1632,7496,7532,7533,1211],{},[550,7418,552],{}," is a complete binary tree stored as an array; index\narithmetic (",[392,7421,7423],{"className":7422},[395],[392,7424,7426,7456],{"className":7425,"ariaHidden":400},[399],[392,7427,7429,7432,7438,7441,7444,7447,7450,7453],{"className":7428},[404],[392,7430],{"className":7431,"style":409},[408],[392,7433,7435],{"className":7434},[433],[392,7436,732],{"className":7437},[413,437],[392,7439,419],{"className":7440},[418],[392,7442,739],{"className":7443},[413,423],[392,7445,450],{"className":7446},[449],[392,7448],{"className":7449,"style":746},[428],[392,7451,750],{"className":7452},[602],[392,7454],{"className":7455,"style":746},[428],[392,7457,7459,7462],{"className":7458},[404],[392,7460],{"className":7461,"style":409},[408],[392,7463,7465,7468,7471,7474],{"className":7464},[763],[392,7466,769],{"className":7467,"style":768},[418,767],[392,7469,739],{"className":7470},[413,423],[392,7472,776],{"className":7473},[413],[392,7475,780],{"className":7476,"style":768},[449,767],", children ",[392,7479,7481],{"className":7480},[395],[392,7482,7484],{"className":7483,"ariaHidden":400},[399],[392,7485,7487,7490,7493],{"className":7486},[404],[392,7488],{"className":7489,"style":1227},[408],[392,7491,830],{"className":7492},[413],[392,7494,739],{"className":7495},[413,423],[392,7497,7499],{"className":7498},[395],[392,7500,7502,7523],{"className":7501,"ariaHidden":400},[399],[392,7503,7505,7508,7511,7514,7517,7520],{"className":7504},[404],[392,7506],{"className":7507,"style":874},[408],[392,7509,830],{"className":7510},[413],[392,7512,739],{"className":7513},[413,423],[392,7515],{"className":7516,"style":884},[428],[392,7518,889],{"className":7519},[888],[392,7521],{"className":7522,"style":884},[428],[392,7524,7526,7529],{"className":7525},[404],[392,7527],{"className":7528,"style":705},[408],[392,7530,575],{"className":7531},[413],")\nreplaces pointers, and the height is ",[392,7534,7536],{"className":7535},[395],[392,7537,7539],{"className":7538,"ariaHidden":400},[399],[392,7540,7542,7545,7548,7551,7557,7560,7563],{"className":7541},[404],[392,7543],{"className":7544,"style":409},[408],[392,7546,414],{"className":7547},[413],[392,7549,419],{"className":7550},[418],[392,7552,7554],{"className":7553},[433],[392,7555,439],{"className":7556,"style":438},[413,437],[392,7558],{"className":7559,"style":429},[428],[392,7561,424],{"className":7562},[413,423],[392,7564,450],{"className":7565},[449],[6594,7567,7568,7569,7572],{},"The ",[550,7570,7571],{},"max-heap property"," orders only ancestor over descendant: weak enough\nto maintain cheaply, strong enough to keep the maximum at the root.",[6594,7574,7575,7596,7597,7630,7631,7652,7653,7677],{},[392,7576,7578],{"className":7577},[395],[392,7579,7581],{"className":7580,"ariaHidden":400},[399],[392,7582,7584,7587],{"className":7583},[404],[392,7585],{"className":7586,"style":2036},[408],[392,7588,7590],{"className":7589},[493,494],[392,7591,7593],{"className":7592},[413,498],[392,7594,2046],{"className":7595},[413]," (sift-down) repairs one violation in ",[392,7598,7600],{"className":7599},[395],[392,7601,7603],{"className":7602,"ariaHidden":400},[399],[392,7604,7606,7609,7612,7615,7621,7624,7627],{"className":7605},[404],[392,7607],{"className":7608,"style":409},[408],[392,7610,2248],{"className":7611,"style":2247},[413,423],[392,7613,419],{"className":7614},[418],[392,7616,7618],{"className":7617},[433],[392,7619,439],{"className":7620,"style":438},[413,437],[392,7622],{"className":7623,"style":429},[428],[392,7625,424],{"className":7626},[413,423],[392,7628,450],{"className":7629},[449],";\n",[392,7632,7634],{"className":7633},[395],[392,7635,7637],{"className":7636,"ariaHidden":400},[399],[392,7638,7640,7643],{"className":7639},[404],[392,7641],{"className":7642,"style":2036},[408],[392,7644,7646],{"className":7645},[493,494],[392,7647,7649],{"className":7648},[413,498],[392,7650,3314],{"className":7651},[413]," applies it bottom-up in ",[392,7654,7656],{"className":7655},[395],[392,7657,7659],{"className":7658,"ariaHidden":400},[399],[392,7660,7662,7665,7668,7671,7674],{"className":7661},[404],[392,7663],{"className":7664,"style":409},[408],[392,7666,2248],{"className":7667,"style":2247},[413,423],[392,7669,419],{"className":7670},[418],[392,7672,424],{"className":7673},[413,423],[392,7675,450],{"className":7676},[449],", since work falls\ngeometrically while node counts rise geometrically.",[6594,7679,7680,7701,7702,7741],{},[392,7681,7683],{"className":7682},[395],[392,7684,7686],{"className":7685,"ariaHidden":400},[399],[392,7687,7689,7692],{"className":7688},[404],[392,7690],{"className":7691,"style":489},[408],[392,7693,7695],{"className":7694},[493,494],[392,7696,7698],{"className":7697},[413,498],[392,7699,502],{"className":7700},[413]," repeatedly extracts the max into the array's tail, sorting in\nplace in ",[392,7703,7705],{"className":7704},[395],[392,7706,7708],{"className":7707,"ariaHidden":400},[399],[392,7709,7711,7714,7717,7720,7723,7726,7732,7735,7738],{"className":7710},[404],[392,7712],{"className":7713,"style":409},[408],[392,7715,414],{"className":7716},[413],[392,7718,419],{"className":7719},[418],[392,7721,424],{"className":7722},[413,423],[392,7724],{"className":7725,"style":429},[428],[392,7727,7729],{"className":7728},[433],[392,7730,439],{"className":7731,"style":438},[413,437],[392,7733],{"className":7734,"style":429},[428],[392,7736,424],{"className":7737},[413,423],[392,7739,450],{"className":7740},[449]," in all cases, though it is unstable and not\ncache-friendly.",[6594,7743,7744,7745,7747,7748,7772,7773,7806],{},"The same heap is a ",[550,7746,6566],{},": ",[392,7749,7751],{"className":7750},[395],[392,7752,7754],{"className":7753,"ariaHidden":400},[399],[392,7755,7757,7760,7763,7766,7769],{"className":7756},[404],[392,7758],{"className":7759,"style":409},[408],[392,7761,2248],{"className":7762,"style":2247},[413,423],[392,7764,419],{"className":7765},[418],[392,7767,575],{"className":7768},[413],[392,7770,450],{"className":7771},[449]," maximum, ",[392,7774,7776],{"className":7775},[395],[392,7777,7779],{"className":7778,"ariaHidden":400},[399],[392,7780,7782,7785,7788,7791,7797,7800,7803],{"className":7781},[404],[392,7783],{"className":7784,"style":409},[408],[392,7786,2248],{"className":7787,"style":2247},[413,423],[392,7789,419],{"className":7790},[418],[392,7792,7794],{"className":7793},[433],[392,7795,439],{"className":7796,"style":438},[413,437],[392,7798],{"className":7799,"style":429},[428],[392,7801,424],{"className":7802},[413,423],[392,7804,450],{"className":7805},[449]," insert,\nextract-max, and increase-key, the operations Dijkstra, Prim, and\nschedulers are built on.",[7808,7809,7812,7817],"section",{"className":7810,"dataFootnotes":376},[7811],"footnotes",[555,7813,7816],{"className":7814,"id":573},[7815],"sr-only","Footnotes",[7818,7819,7820,7834,7882,7940,8013],"ol",{},[6594,7821,7823,7826,7827],{"id":7822},"user-content-fn-clrs-heap",[550,7824,7825],{},"CLRS",", Ch. 6 — Heapsort (§6.1). The binary max-heap as a complete tree stored in an array, with the max-heap property and index arithmetic for parent\u002Fchildren. ",[384,7828,7833],{"href":7829,"ariaLabel":7830,"className":7831,"dataFootnoteBackref":376},"#user-content-fnref-clrs-heap","Back to reference 1",[7832],"data-footnote-backref","↩",[6594,7835,7837,1266,7840,7843,7844,7020,7877],{"id":7836},"user-content-fn-erickson-ds",[550,7838,7839],{},"Erickson",[545,7841,7842],{},"Algorithms",", Ch. — Data Structures. The sift-down primitive that restores the heap property at one node in ",[392,7845,7847],{"className":7846},[395],[392,7848,7850],{"className":7849,"ariaHidden":400},[399],[392,7851,7853,7856,7859,7862,7868,7871,7874],{"className":7852},[404],[392,7854],{"className":7855,"style":409},[408],[392,7857,2248],{"className":7858,"style":2247},[413,423],[392,7860,419],{"className":7861},[418],[392,7863,7865],{"className":7864},[433],[392,7866,439],{"className":7867,"style":438},[413,437],[392,7869],{"className":7870,"style":429},[428],[392,7872,424],{"className":7873},[413,423],[392,7875,450],{"className":7876},[449],[384,7878,7833],{"href":7879,"ariaLabel":7880,"className":7881,"dataFootnoteBackref":376},"#user-content-fnref-erickson-ds","Back to reference 2",[7832],[6594,7883,7885,7887,7888,7909,7910,7934,7935],{"id":7884},"user-content-fn-clrs-build",[550,7886,7825],{},", Ch. 6 — Heapsort (§6.3). ",[392,7889,7891],{"className":7890},[395],[392,7892,7894],{"className":7893,"ariaHidden":400},[399],[392,7895,7897,7900],{"className":7896},[404],[392,7898],{"className":7899,"style":2036},[408],[392,7901,7903],{"className":7902},[493,494],[392,7904,7906],{"className":7905},[413,498],[392,7907,3314],{"className":7908},[413]," runs in ",[392,7911,7913],{"className":7912},[395],[392,7914,7916],{"className":7915,"ariaHidden":400},[399],[392,7917,7919,7922,7925,7928,7931],{"className":7918},[404],[392,7920],{"className":7921,"style":409},[408],[392,7923,2248],{"className":7924,"style":2247},[413,423],[392,7926,419],{"className":7927},[418],[392,7929,424],{"className":7930},[413,423],[392,7932,450],{"className":7933},[449],", summing geometrically decaying per-level work. ",[384,7936,7833],{"href":7937,"ariaLabel":7938,"className":7939,"dataFootnoteBackref":376},"#user-content-fnref-clrs-build","Back to reference 3",[7832],[6594,7941,7943,7945,7946,7967,7968,8007,8008],{"id":7942},"user-content-fn-clrs-sort",[550,7944,7825],{},", Ch. 6 — Heapsort (§6.4). ",[392,7947,7949],{"className":7948},[395],[392,7950,7952],{"className":7951,"ariaHidden":400},[399],[392,7953,7955,7958],{"className":7954},[404],[392,7956],{"className":7957,"style":489},[408],[392,7959,7961],{"className":7960},[493,494],[392,7962,7964],{"className":7963},[413,498],[392,7965,502],{"className":7966},[413]," sorts in place in ",[392,7969,7971],{"className":7970},[395],[392,7972,7974],{"className":7973,"ariaHidden":400},[399],[392,7975,7977,7980,7983,7986,7989,7992,7998,8001,8004],{"className":7976},[404],[392,7978],{"className":7979,"style":409},[408],[392,7981,414],{"className":7982},[413],[392,7984,419],{"className":7985},[418],[392,7987,424],{"className":7988},[413,423],[392,7990],{"className":7991,"style":429},[428],[392,7993,7995],{"className":7994},[433],[392,7996,439],{"className":7997,"style":438},[413,437],[392,7999],{"className":8000,"style":429},[428],[392,8002,424],{"className":8003},[413,423],[392,8005,450],{"className":8006},[449]," in all cases by repeatedly extracting the maximum. ",[384,8009,7833],{"href":8010,"ariaLabel":8011,"className":8012,"dataFootnoteBackref":376},"#user-content-fnref-clrs-sort","Back to reference 4",[7832],[6594,8014,8016,1266,8019,8022,8023,8047,8048,8081,8082],{"id":8015},"user-content-fn-skiena-pq",[550,8017,8018],{},"Skiena",[545,8020,8021],{},"The Algorithm Design Manual",", §4.3, §12.2 — Heaps and Priority Queues. The heap implements a priority queue with ",[392,8024,8026],{"className":8025},[395],[392,8027,8029],{"className":8028,"ariaHidden":400},[399],[392,8030,8032,8035,8038,8041,8044],{"className":8031},[404],[392,8033],{"className":8034,"style":409},[408],[392,8036,2248],{"className":8037,"style":2247},[413,423],[392,8039,419],{"className":8040},[418],[392,8042,575],{"className":8043},[413],[392,8045,450],{"className":8046},[449]," maximum and ",[392,8049,8051],{"className":8050},[395],[392,8052,8054],{"className":8053,"ariaHidden":400},[399],[392,8055,8057,8060,8063,8066,8072,8075,8078],{"className":8056},[404],[392,8058],{"className":8059,"style":409},[408],[392,8061,2248],{"className":8062,"style":2247},[413,423],[392,8064,419],{"className":8065},[418],[392,8067,8069],{"className":8068},[433],[392,8070,439],{"className":8071,"style":438},[413,437],[392,8073],{"className":8074,"style":429},[428],[392,8076,424],{"className":8077},[413,423],[392,8079,450],{"className":8080},[449]," updates. ",[384,8083,7833],{"href":8084,"ariaLabel":8085,"className":8086,"dataFootnoteBackref":376},"#user-content-fnref-skiena-pq","Back to reference 5",[7832],[8088,8089,8090],"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":8092},[8093,8094,8095,8099,8100,8101,8102],{"id":557,"depth":18,"text":558},{"id":2019,"depth":18,"text":2020},{"id":2758,"depth":18,"text":2759,"children":8096},[8097],{"id":3722,"depth":24,"text":8098},"Why it is O(n), not O(nlogn)",{"id":5487,"depth":18,"text":502},{"id":6559,"depth":18,"text":6560},{"id":7411,"depth":18,"text":7412},{"id":573,"depth":18,"text":7816},"Quicksort is fast but has a quadratic worst case; mergesort guarantees\nΘ(nlogn) but needs Θ(n) scratch space. Heapsort captures the\nbest of both: a worst-case Θ(nlogn) bound and sorting in place, using\nonly a constant amount of extra memory. The trick is a data structure, the\nbinary heap, which doubles as an efficient priority queue and so is\nworth knowing for its own sake well beyond sorting.","md",{"moduleNumber":24,"lessonNumber":6,"order":8106},301,true,[8109,8113,8116,8120,8124],{"title":8110,"slug":8111,"difficulty":8112},"Last Stone Weight","last-stone-weight","Easy",{"title":8114,"slug":8115,"difficulty":8112},"Kth Largest Element in a Stream","kth-largest-element-in-a-stream",{"title":8117,"slug":8118,"difficulty":8119},"Top K Frequent Elements","top-k-frequent-elements","Medium",{"title":8121,"slug":8122,"difficulty":8123},"Merge k Sorted Lists","merge-k-sorted-lists","Hard",{"title":8125,"slug":8126,"difficulty":8123},"Find Median from Data Stream","find-median-from-data-stream","---\ntitle: Heaps and Heapsort\nmodule: Sorting & Order Statistics\nmoduleNumber: 3\nlessonNumber: 1\norder: 301\nsummary: >-\n  A binary heap is a tree we store flat in an array, with index arithmetic\n  standing in for pointers. We build the max-heap property bottom-up in $O(n)$\n  time, sort in place in $\\Theta(n\\log n)$ by repeatedly extracting the maximum,\n  and reuse the same structure to implement a priority queue.\ntopics: [Heaps, Comparison Sorting]\nsources:\n  - book: CLRS\n    ref: \"Ch. 6 — Heapsort\"\n  - book: Skiena\n    ref: \"§4.3, §12.2 — Heaps and Priority Queues\"\n  - book: Erickson\n    ref: \"Ch. — Data Structures\"\npractice:\n  - title: 'Last Stone Weight'\n    slug: last-stone-weight\n    difficulty: Easy\n  - title: 'Kth Largest Element in a Stream'\n    slug: kth-largest-element-in-a-stream\n    difficulty: Easy\n  - title: 'Top K Frequent Elements'\n    slug: top-k-frequent-elements\n    difficulty: Medium\n  - title: 'Merge k Sorted Lists'\n    slug: merge-k-sorted-lists\n    difficulty: Hard\n  - title: 'Find Median from Data Stream'\n    slug: find-median-from-data-stream\n    difficulty: Hard\n---\n\n[Quicksort](\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort) is fast but has a quadratic worst case; [mergesort](\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort) guarantees\n$\\Theta(n\\log n)$ but needs $\\Theta(n)$ scratch space. $\\textsc{Heapsort}$ captures the\nbest of both: a worst-case $\\Theta(n\\log n)$ bound _and_ sorting in place, using\nonly a constant amount of extra memory. The trick is a data structure, the\n**binary heap**, which doubles as an efficient priority queue and so is\nworth knowing for its own sake well beyond sorting.\n\n## The heap as a tree we never build\n\nA **(binary) max-heap** is a complete binary tree that obeys one local rule.[^clrs-heap]\n\n> **Property (Max-heap).** Every node's key is at least the key of each of its\n> children. Equivalently, the key of any node is $\\ge$ the keys of all its\n> descendants.\n\n\"Complete\" means the tree is filled level by level, top to bottom and left to\nright, with no gaps until possibly the last level. That rigidity is what lets us\ndiscard the tree entirely and store it as a flat array: there is exactly one\nshape for a complete tree on $n$ nodes, so position in the array _is_ position\nin the tree.\n\nWe store the heap in an array $A[1..n]$ in level order: the root at $A[1]$,\nthen its two children, then their four children, and so on. With $1$-based\nindexing the navigation is pure arithmetic, no pointers required:\n\n$$\n\\operatorname{parent}(i) = \\floor{i\u002F2}, \\qquad\n\\operatorname{left}(i) = 2i, \\qquad\n\\operatorname{right}(i) = 2i + 1.\n$$\n\nDoubling an index walks down to a left child; halving walks back up to a parent.\nOn a machine these are single shift operations, which is part of why heaps are\nfast in practice. Here is a small max-heap shown both as a tree and as the array\nthat actually lives in memory:\n\n$$\n% caption: A small max-heap drawn as a binary tree.\n\\begin{tikzpicture}[level distance=12mm,\n  level 1\u002F.style={sibling distance=34mm},\n  level 2\u002F.style={sibling distance=17mm},\n  every node\u002F.style={draw, circle, minimum size=8mm, font=\\small}]\n  \\node {16}\n    child {node {14}\n      child {node {8}\n        child {node {2}}\n        child {node {4}}}\n      child {node {7}\n        child {node {1}}}}\n    child {node {10}\n      child {node {9}}\n      child {node {3}}};\n\\end{tikzpicture}\n$$\n\nRead level by level, the array is\n\n$$\nA = \\vector{16,\\ 14,\\ 10,\\ 8,\\ 7,\\ 9,\\ 3,\\ 2,\\ 4,\\ 1}.\n$$\n\nThe blue numbers below trace the correspondence: each tree node $i$ lives at\narray slot $i$, so doubling the index ($2i$, $2i+1$) steps down to a child and\nhalving ($\\floor{i\u002F2}$) steps back up to the parent.\n\n$$\n% caption: The same heap as tree and array: node $i$ sits at array slot $i$, with children\n%          at $2i$ and $2i+1$. Doubling an index steps down a level; halving steps up.\n\\begin{tikzpicture}[\n  n\u002F.style={circle, draw, minimum size=7mm, font=\\small, inner sep=0pt},\n  cell\u002F.style={draw, minimum size=7mm, font=\\small, inner sep=0pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[n] (a1) at (0,0) {16};\n  \\node[n] (a2) at (-2.0,-1.2) {14};\n  \\node[n] (a3) at (2.0,-1.2) {10};\n  \\node[n] (a4) at (-3.0,-2.4) {8};\n  \\node[n] (a5) at (-1.0,-2.4) {7};\n  \\node[n] (a6) at (1.0,-2.4) {9};\n  \\node[n] (a7) at (3.0,-2.4) {3};\n  \\draw (a1)--(a2); \\draw (a1)--(a3);\n  \\draw (a2)--(a4); \\draw (a2)--(a5);\n  \\draw (a3)--(a6); \\draw (a3)--(a7);\n  \\node[font=\\scriptsize, text=acc] at (0,0.55) {1};\n  \\node[font=\\scriptsize, text=acc] at (-2.0,-0.65) {2};\n  \\node[font=\\scriptsize, text=acc] at (2.0,-0.65) {3};\n  \\node[font=\\scriptsize, text=acc] at (-3.0,-1.85) {4};\n  \\node[font=\\scriptsize, text=acc] at (-1.0,-1.85) {5};\n  \\node[font=\\scriptsize, text=acc] at (1.0,-1.85) {6};\n  \\node[font=\\scriptsize, text=acc] at (3.0,-1.85) {7};\n  \\foreach \\v\u002F\\i in {16\u002F1,14\u002F2,10\u002F3,8\u002F4,7\u002F5,9\u002F6,3\u002F7}\n    \\node[cell] (c\\i) at (\\i*0.8-0.4,-4.0) {\\v};\n  \\foreach \\i in {1,...,7}\n    \\node[font=\\scriptsize, text=acc] at (\\i*0.8-0.4,-4.55) {\\i};\n  \\node[font=\\footnotesize, anchor=east] at (-0.1,-4.0) {$A$};\n\\end{tikzpicture}\n$$\n\nCheck the index rule on $A[2] = 14$: its children are at $A[4] = 8$ and\n$A[5] = 7$, both smaller, and its parent is at $A[1] = 16$, larger. The largest\nkey always sits at the root, $A[1]$. A heap on $n$ nodes is complete, so its\nheight, the number of edges on the longest root-to-leaf path, is\n$\\floor{\\log_2 n} = \\Theta(\\log n)$. Every operation below costs at most one such\ntrip up or down the tree.\n\nA heap is _not_ a sorted array: it is far weaker, ordering only along\nancestor-descendant paths, with no relation between siblings or cousins. That\nweakness is exactly why a heap is cheap to maintain.\n\n## Sift-down: restoring the property at one node\n\nThe single primitive every heap operation rests on is $\\textsc{Max-Heapify}$. It\nassumes the subtrees rooted at the two children of $i$ are _already_ max-heaps,\nbut $A[i]$ itself may be smaller than a child and thus violate the property. It\nrepairs the violation by floating $A[i]$ down to its rightful level, a motion\nusually called **sift-down**.[^erickson-ds]\n\n```algorithm\ncaption: $\\textsc{Max-Heapify}(A, i)$ — sift $A[i]$ down to restore the heap property\nnumber: 1\n$\\ell \\gets \\operatorname{left}(i)$\n$r \\gets \\operatorname{right}(i)$\nif $\\ell \\le A.heapsize$ and $A[\\ell] > A[i]$ then\n  $largest \\gets \\ell$\nelse\n  $largest \\gets i$\nif $r \\le A.heapsize$ and $A[r] > A[largest]$ then\n  $largest \\gets r$\nif $largest \\ne i$ then\n  exchange $A[i]$ with $A[largest]$ \u002F\u002F bigger child moves up\n  call $\\textsc{Max-Heapify}(A, largest)$ \u002F\u002F fix the disturbed subtree\n```\n\nWe compare $A[i]$ against both children, find the largest of the three, and, if\na child wins, swap it up and recurse into the subtree that just received the\nsmaller key. The violation moves strictly down one level each step, so the\nrecursion can run no deeper than the tree is tall: $O(\\log n)$ time, $O(1)$ extra\nspace (or $O(\\log n)$ stack, trivially made iterative). We track the logical\nlength of the heap in a field $A.heapsize \\le A.length$, which lets the array\nhold heap and non-heap regions side by side, an arrangement central to heapsort below.\n\n$$\n% caption: Max-Heapify with both subtrees already valid heaps: the small root key sinks\n%          along its path, swapping with the larger child at each step.\n\\begin{tikzpicture}[n\u002F.style={circle, draw, minimum size=7.5mm, font=\\small, inner sep=0pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[n, fill=red!18] (r) at (0,0) {4};\n  \\node[n, fill=acc!12] (l) at (-1.7,-1.3) {14};\n  \\node[n] (rt) at (1.7,-1.3) {10};\n  \\node[n, fill=acc!12] (ll) at (-2.6,-2.7) {8};\n  \\node[n] (lr) at (-0.8,-2.7) {7};\n  \\node[n] (rl) at (0.8,-2.7) {9};\n  \\node[n] (rr) at (2.6,-2.7) {3};\n  \\draw (r)--(l); \\draw (r)--(rt); \\draw (l)--(ll); \\draw (l)--(lr); \\draw (rt)--(rl); \\draw (rt)--(rr);\n  \\draw[\u003C->, red, thick] (r) to[bend right=18] node[left,font=\\scriptsize] {swap 1} (l);\n  \\draw[\u003C->, red, thick] (l) to[bend right=18] node[left,font=\\scriptsize] {swap 2} (ll);\n\\end{tikzpicture}\n$$\n\n> **Correctness.** When $\\textsc{Max-Heapify}(A,i)$ is called with both child\n> subtrees being valid max-heaps, it leaves the subtree rooted at $i$ a valid\n> max-heap. _Proof sketch:_ the largest of $\\set{A[i], A[\\ell], A[r]}$ is placed\n> at $i$, dominating both children; the only subtree possibly disturbed is the\n> one the old root sank into, and the recursive call fixes it. The recursion\n> terminates because the index strictly increases (we move to a child) and is\n> bounded by $n$.\n\n## Building a heap bottom-up\n\nTo turn an arbitrary array into a heap we call $\\textsc{Max-Heapify}$ at every internal\nnode, but in the right order. The leaves $A[\\floor{n\u002F2}+1 .. n]$ are already\nvalid one-element heaps, so we start just above them and work _upward_ to the\nroot. Processing a node only after its children are heaps is exactly the\nprecondition $\\textsc{Max-Heapify}$ demands.\n\n```algorithm\ncaption: $\\textsc{Build-Max-Heap}(A)$ — turn $A[1..n]$ into a max-heap\nnumber: 2\n$A.heapsize \\gets A.length$\nfor $i \\gets \\floor{A.length \u002F 2}$ downto $1$ do\n  call $\\textsc{Max-Heapify}(A, i)$ \u002F\u002F children already heaps\n```\n\nOn $n=10$ nodes the leaves are $A[6..10]$ (already heaps, so we skip them), and we\nsift down the internal nodes $A[5], A[4], \\dots, A[1]$ in that decreasing order, so\nthat every node is processed only after both of its children are.\n\n$$\n% caption: Processing order of $\\textsc{Build-Max-Heap}$ on $10$ nodes. Leaves $A[6..10]$\n%          are trivial heaps and skipped (grey); the internal nodes $A[5],A[4],\\dots,A[1]$\n%          are sifted down in decreasing index (red labels), each after its children are\n%          already heaps.\n\\begin{tikzpicture}[\n  n\u002F.style={circle, draw, minimum size=7.5mm, font=\\small, inner sep=0pt},\n  leaf\u002F.style={circle, draw, fill=black!8, minimum size=7.5mm, font=\\small, inner sep=0pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[n] (a1) at (0,0) {16};\n  \\node[n] (a2) at (-2.6,-1.4) {14};\n  \\node[n] (a3) at (2.6,-1.4) {10};\n  \\node[n] (a4) at (-3.8,-2.8) {8};\n  \\node[n] (a5) at (-1.4,-2.8) {7};\n  \\node[leaf] (a6) at (1.4,-2.8) {9};\n  \\node[leaf] (a7) at (3.8,-2.8) {3};\n  \\node[leaf] (a8) at (-4.5,-4.2) {2};\n  \\node[leaf] (a9) at (-3.1,-4.2) {4};\n  \\node[leaf] (a10) at (-2.0,-4.2) {1};\n  \\draw (a1)--(a2); \\draw (a1)--(a3);\n  \\draw (a2)--(a4); \\draw (a2)--(a5);\n  \\draw (a3)--(a6); \\draw (a3)--(a7);\n  \\draw (a4)--(a8); \\draw (a4)--(a9); \\draw (a5)--(a10);\n  \\node[font=\\scriptsize, text=red!75!black, anchor=south] at (0,0.5) {step 5};\n  \\node[font=\\scriptsize, text=red!75!black, anchor=east] at (-3.0,-1.4) {step 4};\n  \\node[font=\\scriptsize, text=red!75!black, anchor=west] at (3.0,-1.4) {step 3};\n  \\node[font=\\scriptsize, text=red!75!black, anchor=east] at (-4.2,-2.8) {step 2};\n  \\node[font=\\scriptsize, text=red!75!black, anchor=west] at (-0.95,-2.8) {step 1};\n  \\node[font=\\scriptsize, text=black!55, anchor=west] at (4.3,-3.5) {leaves $A[6..10]$: skipped};\n\\end{tikzpicture}\n$$\n\nThe loop invariant makes the correctness immediate.\n\n> **Invariant (Build-heap loop).** _At the start of each iteration, every node $i+1, i+2, \\dots, n$ is the root\n> of a max-heap._\n\nInitialization: nodes $\\floor{n\u002F2}+1 .. n$ are leaves, hence trivial heaps.\nMaintenance: the children of $i$ are numbered higher than $i$, so by the\ninvariant they head max-heaps, precisely what $\\textsc{Max-Heapify}(A,i)$ needs, and\nit extends the property to $i$. Termination: when $i = 0$, node $1$ (and all\nothers) roots a max-heap.\n\n### Why it is $O(n)$, not $O(n\\log n)$\n\nThe easy [bound](\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis) is immediate: there are $O(n)$ calls to $\\textsc{Max-Heapify}$, each costing\n$O(\\log n)$, for $O(n\\log n)$. That is correct but loose, and the looseness\nmatters. Most nodes are near the _bottom_ of the tree, where $\\textsc{Max-Heapify}$ has\nalmost nothing to do.\n\nA heap of $n$ nodes has at most $\\ceil{n\u002F2^{h+1}}$ nodes at height $h$, and a\nsift-down from height $h$ costs $O(h)$. Summing the real work over all heights,\n\n$$\n\\sum_{h=0}^{\\floor{\\log_2 n}} \\ceil{\\frac{n}{2^{h+1}}}\\, O(h)\n\\;=\\; O\\!\\left( n \\sum_{h=0}^{\\infty} \\frac{h}{2^{h}} \\right).\n$$\n\nThe series $\\sum_{h\\ge 0} h\u002F2^h$ converges to $2$, using the standard\nidentity $\\sum_{h\\ge 0} h x^h = x\u002F(1-x)^2$ at $x = \\tfrac12$. The infinite sum is\na constant, so the whole bound collapses to $O(n)$.\n\nThe intuition behind the algebra: half the nodes are leaves (zero work), a\nquarter sit one level up (at most one swap each), an eighth two levels up, and so\non. Cost per node falls geometrically as the number of nodes at that level\n_rises_ geometrically, and the two effects cancel to leave a linear total.[^clrs-build]\nBuilding a heap is asymptotically negligible compared to the sort that follows.\n\n$$\n% caption: The geometric cancellation in $\\textsc{Build-Max-Heap}$. By height $h$ the node\n%          count halves going up ($\\le \\lceil n\u002F2^{h+1}\\rceil$) while per-node work grows\n%          only as $O(h)$, so the level totals (right) decay geometrically and sum to\n%          $O(n)$.\n\\begin{tikzpicture}[\n  bar\u002F.style={draw, fill=acc!18},\n  cnt\u002F.style={draw, fill=black!10}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\h\u002F\\nodes\u002F\\y in {0\u002F8\u002F0, 1\u002F4\u002F1, 2\u002F2\u002F2, 3\u002F1\u002F3} {\n    \\node[font=\\scriptsize, anchor=east] at (-0.2,\\y*0.95) {$h{=}\\h$};\n    \\draw[cnt] (0,\\y*0.95-0.28) rectangle ({\\nodes*0.28},\\y*0.95+0.28);\n    \\node[font=\\scriptsize] at ({\\nodes*0.28+0.4},\\y*0.95) {$\\nodes$};\n  }\n  \\node[font=\\footnotesize, anchor=south] at (1.0,3*0.95+0.45) {nodes at height $h$};\n  \\foreach \\tot\u002F\\y in {0\u002F0, 4\u002F1, 4\u002F2, 3\u002F3} {\n    \\draw[bar] (4.2,\\y*0.95-0.28) rectangle ({4.2+\\tot*0.28},\\y*0.95+0.28);\n    \\node[font=\\scriptsize] at ({4.2+\\tot*0.28+0.3},\\y*0.95) {$\\tot$};\n  }\n  \\node[font=\\footnotesize, anchor=south] at (5.0,3*0.95+0.45) {work per level};\n\\end{tikzpicture}\n$$\n\n## Heapsort\n\nA max-heap keeps the largest element at the root, $A[1]$. To\nsort, we repeatedly move that maximum to where it belongs, the back of the\narray, then shrink the heap and repair it.\n\n```algorithm\ncaption: $\\textsc{Heapsort}(A)$ — sort $A[1..n]$ in place, increasing\nnumber: 3\ncall $\\textsc{Build-Max-Heap}(A)$\nfor $i \\gets A.length$ downto $2$ do\n  exchange $A[1]$ with $A[i]$ \u002F\u002F max to its final slot\n  $A.heapsize \\gets A.heapsize - 1$ \u002F\u002F evict from the heap\n  call $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F restore the shrunken heap\n```\n\nThe array splits into two regions: a heap at the front, $A[1..A.heapsize]$, and\na growing sorted suffix at the back. Each iteration swaps the heap's maximum into\nthe slot just before the sorted suffix, drops the heap size by one, and runs a\nsingle sift-down from the root to re-establish the max-heap property on the\nsmaller heap. After $n-1$ iterations the heap is a single element, necessarily\nthe global minimum, and $A$ is sorted ascending.\n\n$$\n% caption: A heapsort snapshot. The array splits into a max-heap prefix\n%          $A[1..\\text{heapsize}]$ and a sorted suffix; each step swaps the root $A[1]$\n%          into the slot just before the suffix, drops the heap size by one, and sifts\n%          down.\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum size=7.5mm, font=\\small, inner sep=0pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\v\u002F\\i in {9\u002F1,7\u002F2,3\u002F3,2\u002F4,4\u002F5} \\node[cell, fill=acc!15] (h\\i) at (\\i*0.82,0) {\\v};\n  \\foreach \\v\u002F\\i in {14\u002F6,16\u002F7} \\node[cell, fill=black!10] (s\\i) at (\\i*0.82,0) {\\v};\n  \\foreach \\i in {1,...,7} \\node[font=\\scriptsize, text=black!55] at (\\i*0.82,-0.62) {\\i};\n  \\node[font=\\footnotesize, text=acc] at (2.46,0.9) {max-heap (heapsize $=5$)};\n  \\node[font=\\footnotesize, text=black!55] at (5.74,0.9) {sorted};\n  \\draw[acc, thick] (0.6,0.52)--(4.92,0.52);\n  \\draw[thick, black!45] (5.0,0.52)--(6.16,0.52);\n  \\draw[\u003C->, >=Stealth, thick, red!75!black] (h1.250) to[out=-90, in=-90, looseness=0.55] (h5.290);\n  \\node[font=\\scriptsize, text=red!75!black] at (2.46,-1.55) {swap root to slot 5, then evict};\n\\end{tikzpicture}\n$$\n\n> **Invariant (Loop).** At the start of each iteration, $A[1..A.heapsize]$ is a\n> max-heap containing the $A.heapsize$ smallest elements, and\n> $A[A.heapsize+1 .. n]$ holds the remaining elements in sorted order, each no\n> smaller than anything in the heap.\n\n**Cost.** $\\textsc{Build-Max-Heap}$ is $O(n)$. The loop runs $n - 1$ times, each\niteration doing $O(1)$ work plus one $\\textsc{Max-Heapify}$ at $O(\\log n)$. The total is\n\n$$\nO(n) + (n-1)\\cdot O(\\log n) = \\Theta(n\\log n),\n$$\n\nand this is the bound in _every_ case, best, average, and worst, because the\nheap is always full height during the extractions. Heapsort is in place ($O(1)$\nauxiliary space beyond the array) but **not stable**: the swaps scatter equal\nkeys. Compared to its peers it lacks quicksort's cache-friendliness, since the\nparent\u002Fchild jumps roam across memory, which is why quicksort usually wins in\npractice despite the worse worst case. Heapsort's niche is the guaranteed\n$\\Theta(n\\log n)$ ceiling with no extra memory, exactly the property _introsort_\nborrows as a fallback when quicksort's recursion runs too deep.[^clrs-sort]\n\n## Priority queues\n\nSorting is only the first use of a heap. The same structure implements a\n**priority queue**: a set $S$ of elements, each with a **key** (its priority),\nsupporting\n\n- $\\textsc{Insert}(S, x)$: add $x$ to $S$;\n- $\\textsc{Maximum}(S)$: return the element with the largest key;\n- $\\textsc{Extract-Max}(S)$: remove and return that element;\n- $\\textsc{Increase-Key}(S, x, k)$: raise $x$'s key to $k$.\n\nA max-heap answers **Maximum** in $O(1)$, since it is just $A[1]$, and supports the\nmutating operations in $O(\\log n)$, the height of the tree.[^skiena-pq]\n\n```algorithm\ncaption: $\\textsc{Heap-Extract-Max}(A)$ — remove and return the largest key\nnumber: 4\n$max \\gets A[1]$\n$A[1] \\gets A[A.heapsize]$ \u002F\u002F last leaf to the root\n$A.heapsize \\gets A.heapsize - 1$\ncall $\\textsc{Max-Heapify}(A, 1)$ \u002F\u002F sift the new root down\nreturn $max$\n```\n\n$\\textsc{Increase-Key}$ moves the other direction: bump a key and **sift up**,\nrepeatedly swapping with the parent while the heap property is violated, again in\n$O(\\log n)$. **Insert** is just an $\\textsc{Increase-Key}$ from $-\\infty$: append the new\nelement as the last leaf, then sift it up.\n\n$$\n% caption: Increase-Key as sift-up, the mirror of Max-Heapify. Raising a leaf's key to\n%          $15$ violates the heap above it, so it swaps with its parent repeatedly\n%          ($15>8$, then $15>14$) until $15\u003C16$ at the root.\n\\begin{tikzpicture}[\n  n\u002F.style={circle, draw, minimum size=7.5mm, font=\\small, inner sep=0pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[n] (r) at (0,0) {16};\n  \\node[n, fill=acc!12] (l) at (-1.9,-1.3) {14};\n  \\node[n] (rt) at (1.9,-1.3) {10};\n  \\node[n, fill=acc!12] (ll) at (-2.9,-2.7) {8};\n  \\node[n] (lr) at (-0.9,-2.7) {7};\n  \\node[n] (rl) at (0.9,-2.7) {9};\n  \\node[n] (rr) at (2.9,-2.7) {3};\n  \\node[n, fill=red!16] (lll) at (-3.5,-4.1) {15};\n  \\node[n] (llr) at (-2.3,-4.1) {4};\n  \\draw (r)--(l); \\draw (r)--(rt); \\draw (l)--(ll); \\draw (l)--(lr);\n  \\draw (rt)--(rl); \\draw (rt)--(rr); \\draw (ll)--(lll); \\draw (ll)--(llr);\n  \\draw[\u003C->, red, thick] (lll) to[bend left=12] node[left, font=\\scriptsize] {1} (ll);\n  \\draw[\u003C->, red, thick] (ll) to[bend left=12] node[left, font=\\scriptsize] {2} (l);\n  \\node[font=\\scriptsize, text=acc, anchor=west] at (0.7,0.3) {stop: $15\u003C16$};\n\\end{tikzpicture}\n$$\n\nReading heapsort through this lens, it\nis nothing but $n$ successive $\\textsc{Extract-Max}$ operations, writing each maximum\ninto the vacancy the shrinking heap leaves behind. Priority queues built this way\ndrive Dijkstra's [shortest paths](\u002Falgorithms\u002Fgraphs\u002Fshortest-paths), Prim's [minimum spanning tree](\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees), event-driven\nsimulation, and any scheduler that must repeatedly serve the most urgent task.\n\n## Takeaways\n\n- A **binary heap** is a complete binary tree stored as an array; index\n  arithmetic ($\\operatorname{parent}(i)=\\floor{i\u002F2}$, children $2i$ and $2i+1$)\n  replaces pointers, and the height is $\\Theta(\\log n)$.\n- The **max-heap property** orders only ancestor over descendant: weak enough\n  to maintain cheaply, strong enough to keep the maximum at the root.\n- $\\textsc{Max-Heapify}$ (sift-down) repairs one violation in $O(\\log n)$;\n  $\\textsc{Build-Max-Heap}$ applies it bottom-up in $O(n)$, since work falls\n  geometrically while node counts rise geometrically.\n- $\\textsc{Heapsort}$ repeatedly extracts the max into the array's tail, sorting in\n  place in $\\Theta(n\\log n)$ in all cases, though it is unstable and not\n  cache-friendly.\n- The same heap is a **priority queue**: $O(1)$ maximum, $O(\\log n)$ insert,\n  extract-max, and increase-key, the operations Dijkstra, Prim, and\n  schedulers are built on.\n\n[^clrs-heap]: **CLRS**, Ch. 6 — Heapsort (§6.1). The binary max-heap as a complete tree stored in an array, with the max-heap property and index arithmetic for parent\u002Fchildren.\n[^erickson-ds]: **Erickson**, _Algorithms_, Ch. — Data Structures. The sift-down primitive that restores the heap property at one node in $O(\\log n)$.\n[^clrs-build]: **CLRS**, Ch. 6 — Heapsort (§6.3). $\\textsc{Build-Max-Heap}$ runs in $O(n)$, summing geometrically decaying per-level work.\n[^clrs-sort]: **CLRS**, Ch. 6 — Heapsort (§6.4). $\\textsc{Heapsort}$ sorts in place in $\\Theta(n\\log n)$ in all cases by repeatedly extracting the maximum.\n[^skiena-pq]: **Skiena**, _The Algorithm Design Manual_, §4.3, §12.2 — Heaps and Priority Queues. The heap implements a priority queue with $O(1)$ maximum and $O(\\log n)$ updates.\n",{"text":8129,"minutes":8130,"time":8131,"words":8132},"9 min read",8.485,509100,1697,{"title":55,"description":8103},[8135,8137,8139],{"book":7825,"ref":8136},"Ch. 6 — Heapsort",{"book":8018,"ref":8138},"§4.3, §12.2 — Heaps and Priority Queues",{"book":7839,"ref":8140},"Ch. — Data Structures","available","01.algorithms\u002F03.sorting\u002F01.heaps-and-heapsort",[58,36],"LWCp7fSjGWv2et7H32UwZ8vREL-D4Del7Xt52q2zgrQ",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":8146,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":8147,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":8148,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":8149,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":8150,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":8151,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":8132,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":8152,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":8153,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":8154,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":8155,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":8156,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":8157,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":8158,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":8159,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":8160,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":8161,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":8162,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":8163,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":8164,"\u002Falgorithms\u002Fsequences\u002Ftries":8165,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":8166,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":8167,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":8168,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":8169,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":8170,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":8171,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":8172,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":8173,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":8174,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":8175,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":8176,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":8177,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":8178,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":8179,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":8180,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":8181,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":8182,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":8183,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":8184,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":8185,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":8186,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":8187,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":8188,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":8189,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":8190,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":8191,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":8161,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":8192,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":8193,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":8194,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":8195,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":8177,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":8196,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":8197,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":8157,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":8198,"\u002Falgorithms":8199,"\u002Ftheory-of-computation":8200,"\u002Fcomputer-architecture":8200,"\u002Fphysical-computing":8200,"\u002Fdatabases":8200,"\u002Fdeep-learning":8200},1763,2107,1738,2628,1723,2048,1044,1542,1565,1679,1586,1388,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":8202,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":8203,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":8204,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":8205,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":8206,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":8207,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":8208,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":8209,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":8210,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":8211,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":8212,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":8213,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":8214,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":8215,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":8216,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":8217,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":8218,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":8219,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":8220,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":8221,"\u002Falgorithms\u002Fsequences\u002Ftries":8222,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":8223,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":8224,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":8225,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":8226,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":8227,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":8228,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":8229,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":8230,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":8231,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":8232,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":8233,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":8234,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":8235,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":8236,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":8237,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":8238,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":8239,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":8240,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":8241,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":8242,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":8243,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":8244,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":8245,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":8246,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":8247,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":8248,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":8249,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":8250,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":8251,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":8252,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":8253,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":8254,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":8255,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":8256,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":8257,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":8258,"\u002Falgorithms":8259,"\u002Ftheory-of-computation":8261,"\u002Fcomputer-architecture":8264,"\u002Fphysical-computing":8267,"\u002Fdatabases":8270,"\u002Fdeep-learning":8273},{"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":8260,"title":7842,"module":376,"summary":376},"\u002Falgorithms",{"path":8262,"title":8263,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":8265,"title":8266,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":8268,"title":8269,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":8271,"title":8272,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":8274,"title":8275,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560520918]