[{"data":1,"prerenderedAt":6408},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":374,"course-wordcounts":6276,"ref-card-index":6332},[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":77,"blurb":376,"body":377,"description":6236,"extension":6237,"meta":6238,"module":72,"navigation":6240,"path":78,"practice":6241,"rawbody":6257,"readingTime":6258,"seo":6263,"sources":6264,"status":6272,"stem":6273,"summary":81,"topics":6274,"__hash__":6275},"course\u002F01.algorithms\u002F04.data-structures\u002F01.elementary-structures.md","",{"type":378,"value":379,"toc":6227},"minimark",[380,402,407,512,515,795,834,1187,1191,1255,1313,1362,1469,1803,1907,2683,2811,3094,3098,3262,3405,3408,3658,3776,3796,3870,4143,4162,4166,4270,4381,4400,4404,4492,4734,5177,5492,5536,5540,6103,6223],[381,382,383,384,388,389,392,393,397,398,401],"p",{},"Before we can balance trees or hash keys, we need the raw material they are made\nof. Every data structure in this course (every tree, ",[385,386,387],"a",{"href":56},"heap",", ",[385,390,391],{"href":84},"hash table",", and graph) is ultimately stored one of two ways, and the choice echoes through everything\nbuilt on top of it. You can lay the elements out ",[394,395,396],"strong",{},"contiguously",", packed\nshoulder-to-shoulder in one block of memory, or you can scatter them and stitch\nthem together with ",[394,399,400],{},"pointers",". This first lesson works out the two strategies\nand the four ordered containers (array, linked list, stack, queue) that the\nrest of the module assumes you already own.",[403,404,406],"h2",{"id":405},"two-ways-to-store-a-sequence","Two ways to store a sequence",[381,408,409,410,413,414,439,440,456,457,475,476,493,494,497,498,501,502],{},"A ",[394,411,412],{},"contiguous"," structure stores its elements in a single block of memory, one\nafter another. An array of ",[415,416,419],"span",{"className":417},[418],"katex",[415,420,424],{"className":421,"ariaHidden":423},[422],"katex-html","true",[415,425,428,433],{"className":426},[427],"base",[415,429],{"className":430,"style":432},[431],"strut","height:0.4306em;",[415,434,438],{"className":435},[436,437],"mord","mathnormal","n"," elements each of size ",[415,441,443],{"className":442},[418],[415,444,446],{"className":445,"ariaHidden":423},[422],[415,447,449,452],{"className":448},[427],[415,450],{"className":451,"style":432},[431],[415,453,455],{"className":454},[436,437],"s"," occupies one run of ",[415,458,460],{"className":459},[418],[415,461,463],{"className":462,"ariaHidden":423},[422],[415,464,466,469,472],{"className":465},[427],[415,467],{"className":468,"style":432},[431],[415,470,438],{"className":471},[436,437],[415,473,455],{"className":474},[436,437],"\nbytes, so element ",[415,477,479],{"className":478},[418],[415,480,482],{"className":481,"ariaHidden":423},[422],[415,483,485,489],{"className":484},[427],[415,486],{"className":487,"style":488},[431],"height:0.6595em;",[415,490,492],{"className":491},[436,437],"i"," lives at a known offset from the start. A ",[394,495,496],{},"linked","\nstructure stores each element in its own separately-allocated ",[394,499,500],{},"node"," and uses a\npointer in each node to find the next; the nodes may sit anywhere in memory.",[503,504,505],"sup",{},[385,506,511],{"href":507,"ariaDescribedBy":508,"dataFootnoteRef":376,"id":510},"#user-content-fn-skiena-contig",[509],"footnote-label","user-content-fnref-skiena-contig","1",[381,513,514],{},"The contrast is sharp, and it drives every later choice:",[516,517,518,693,753,789],"ul",{},[519,520,521,524,525,540,541,603,604,635,636,651,652,667,668,692],"li",{},[394,522,523],{},"Random access."," Contiguous wins outright. Element ",[415,526,528],{"className":527},[418],[415,529,531],{"className":530,"ariaHidden":423},[422],[415,532,534,537],{"className":533},[427],[415,535],{"className":536,"style":488},[431],[415,538,492],{"className":539},[436,437]," of an array is at\naddress ",[415,542,544],{"className":543},[418],[415,545,547,575,594],{"className":546,"ariaHidden":423},[422],[415,548,550,554,558,562,567,572],{"className":549},[427],[415,551],{"className":552,"style":553},[431],"height:0.7778em;vertical-align:-0.0833em;",[415,555,557],{"className":556},[436,437],"ba",[415,559,561],{"className":560},[436,437],"se",[415,563],{"className":564,"style":566},[565],"mspace","margin-right:0.2222em;",[415,568,571],{"className":569},[570],"mbin","+",[415,573],{"className":574,"style":566},[565],[415,576,578,581,584,587,591],{"className":577},[427],[415,579],{"className":580,"style":488},[431],[415,582,492],{"className":583},[436,437],[415,585],{"className":586,"style":566},[565],[415,588,590],{"className":589},[570],"⋅",[415,592],{"className":593,"style":566},[565],[415,595,597,600],{"className":596},[427],[415,598],{"className":599,"style":432},[431],[415,601,455],{"className":602},[436,437],", computed with one multiply-add, so indexing is\n",[415,605,607],{"className":606},[418],[415,608,610],{"className":609,"ariaHidden":423},[422],[415,611,613,617,622,627,630],{"className":612},[427],[415,614],{"className":615,"style":616},[431],"height:1em;vertical-align:-0.25em;",[415,618,621],{"className":619,"style":620},[436,437],"margin-right:0.0278em;","O",[415,623,626],{"className":624},[625],"mopen","(",[415,628,511],{"className":629},[436],[415,631,634],{"className":632},[633],"mclose",")",". In a linked list there is no address arithmetic; to reach the ",[415,637,639],{"className":638},[418],[415,640,642],{"className":641,"ariaHidden":423},[422],[415,643,645,648],{"className":644},[427],[415,646],{"className":647,"style":488},[431],[415,649,492],{"className":650},[436,437],"-th\nnode you must follow ",[415,653,655],{"className":654},[418],[415,656,658],{"className":657,"ariaHidden":423},[422],[415,659,661,664],{"className":660},[427],[415,662],{"className":663,"style":488},[431],[415,665,492],{"className":666},[436,437]," pointers, which is ",[415,669,671],{"className":670},[418],[415,672,674],{"className":673,"ariaHidden":423},[422],[415,675,677,680,683,686,689],{"className":676},[427],[415,678],{"className":679,"style":616},[431],[415,681,621],{"className":682,"style":620},[436,437],[415,684,626],{"className":685},[625],[415,687,438],{"className":688},[436,437],[415,690,634],{"className":691},[633],".",[519,694,695,698,699,703,704,728,729,692],{},[394,696,697],{},"Splicing."," Linked wins outright. To insert or delete an element ",[700,701,702],"em",{},"given a\npointer to its node",", a linked list rewires a constant number of pointers in\n",[415,705,707],{"className":706},[418],[415,708,710],{"className":709,"ariaHidden":423},[422],[415,711,713,716,719,722,725],{"className":712},[427],[415,714],{"className":715,"style":616},[431],[415,717,621],{"className":718,"style":620},[436,437],[415,720,626],{"className":721},[625],[415,723,511],{"className":724},[436],[415,726,634],{"className":727},[633],"; an array must shift every later element to keep the block contiguous,\nwhich is ",[415,730,732],{"className":731},[418],[415,733,735],{"className":734,"ariaHidden":423},[422],[415,736,738,741,744,747,750],{"className":737},[427],[415,739],{"className":740,"style":616},[431],[415,742,621],{"className":743,"style":620},[436,437],[415,745,626],{"className":746},[625],[415,748,438],{"className":749},[436,437],[415,751,634],{"className":752},[633],[519,754,755,758,759,784,785,788],{},[394,756,757],{},"Cache locality."," Contiguous wins. A modern CPU reads memory in cache lines\nand prefetches sequentially, so a linear scan of an array is far faster than\nchasing pointers across scattered nodes, even though both are ",[415,760,762],{"className":761},[418],[415,763,765],{"className":764,"ariaHidden":423},[422],[415,766,768,771,775,778,781],{"className":767},[427],[415,769],{"className":770,"style":616},[431],[415,772,774],{"className":773},[436],"Θ",[415,776,626],{"className":777},[625],[415,779,438],{"className":780},[436,437],[415,782,634],{"className":783},[633],"\ncomparisons. Constant factors, not ",[385,786,787],{"href":17},"asymptotics",", yet they are large.",[519,790,791,794],{},[394,792,793],{},"Space overhead."," Linked pays per-element: every node carries one or two\npointers besides its key. An array pays nothing per element but may reserve\nunused capacity (below).",[796,797,799],"callout",{"type":798},"note",[381,800,801,804,805,808,809,833],{},[394,802,803],{},"Intuition."," Contiguous storage ",[700,806,807],{},"is"," the random-access machine's native\nidiom — an array is just addressable memory with a type. Linked storage buys\n",[415,810,812],{"className":811},[418],[415,813,815],{"className":814,"ariaHidden":423},[422],[415,816,818,821,824,827,830],{"className":817},[427],[415,819],{"className":820,"style":616},[431],[415,822,621],{"className":823,"style":620},[436,437],[415,825,626],{"className":826},[625],[415,828,511],{"className":829},[436],[415,831,634],{"className":832},[633]," structural edits by giving up the address arithmetic, paying with a\npointer per node and a cache miss per hop.",[835,836,840,1031],"figure",{"className":837},[838,839],"tikz-figure","tikz-diagram-rendered",[841,842,847],"svg",{"xmlns":843,"width":844,"height":845,"viewBox":846},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","325.147","137.519","-75 -75 243.860 103.139",[848,849,852,873,876,883,886,893,896,903,911,927,942,957,960,966,969,975,978,984,993,1001,1008,1016,1023],"g",{"stroke":850,"style":851},"currentColor","stroke-miterlimit:10;stroke-width:.4",[848,853,857,867],{"stroke":854,"fontFamily":855,"fontSize":856},"none","cmr9","9",[848,858,860],{"transform":859},"translate(-57.875 2.136)",[861,862],"path",{"d":863,"fill":850,"stroke":850,"className":864,"style":866},"M-2.084-60.588Q-2.634-60.588-3.093-60.867Q-3.552-61.146-3.820-61.616Q-4.088-62.086-4.088-62.631Q-4.088-63.044-3.939-63.422Q-3.790-63.800-3.515-64.095Q-3.240-64.389-2.871-64.556Q-2.502-64.723-2.084-64.723Q-1.750-64.723-1.430-64.657Q-1.109-64.591-0.880-64.405Q-0.652-64.218-0.652-63.893Q-0.652-63.717-0.779-63.589Q-0.907-63.462-1.083-63.462Q-1.267-63.462-1.397-63.587Q-1.526-63.712-1.526-63.893Q-1.526-64.029-1.452-64.141Q-1.377-64.253-1.245-64.306Q-1.553-64.433-2.084-64.433Q-2.520-64.433-2.788-64.156Q-3.056-63.879-3.168-63.464Q-3.280-63.049-3.280-62.631Q-3.280-62.201-3.141-61.799Q-3.003-61.397-2.708-61.137Q-2.414-60.878-1.975-60.878Q-1.553-60.878-1.250-61.128Q-0.946-61.379-0.841-61.788Q-0.832-61.818-0.808-61.843Q-0.784-61.867-0.753-61.867L-0.643-61.867Q-0.555-61.867-0.555-61.752Q-0.700-61.216-1.113-60.902Q-1.526-60.588-2.084-60.588M-0.032-62.596Q-0.032-63.163 0.240-63.651Q0.513-64.139 0.983-64.431Q1.453-64.723 2.020-64.723Q2.442-64.723 2.818-64.554Q3.193-64.385 3.470-64.093Q3.747-63.800 3.905-63.405Q4.063-63.009 4.063-62.596Q4.063-62.047 3.784-61.585Q3.505-61.124 3.037-60.856Q2.569-60.588 2.020-60.588Q1.466-60.588 0.996-60.856Q0.526-61.124 0.247-61.585Q-0.032-62.047-0.032-62.596M2.020-60.878Q2.517-60.878 2.793-61.139Q3.070-61.401 3.163-61.805Q3.255-62.210 3.255-62.706Q3.255-63.181 3.156-63.570Q3.057-63.959 2.785-64.209Q2.512-64.460 2.020-64.460Q1.308-64.460 1.044-63.965Q0.781-63.471 0.781-62.706Q0.781-61.906 1.036-61.392Q1.291-60.878 2.020-60.878M6.713-60.689L4.626-60.689L4.626-61.005Q4.934-61.005 5.125-61.058Q5.316-61.111 5.316-61.300L5.316-63.748Q5.316-63.989 5.246-64.097Q5.175-64.205 5.041-64.229Q4.907-64.253 4.626-64.253L4.626-64.569L5.966-64.666L5.966-63.831Q6.164-64.213 6.518-64.440Q6.872-64.666 7.298-64.666Q8.577-64.666 8.577-63.453L8.577-61.300Q8.577-61.111 8.768-61.058Q8.959-61.005 9.267-61.005L9.267-60.689L7.179-60.689L7.179-61.005Q7.491-61.005 7.682-61.058Q7.874-61.111 7.874-61.300L7.874-63.418Q7.874-63.677 7.830-63.899Q7.786-64.121 7.641-64.264Q7.496-64.407 7.236-64.407Q6.894-64.407 6.612-64.218Q6.331-64.029 6.175-63.717Q6.019-63.405 6.019-63.058L6.019-61.300Q6.019-61.111 6.212-61.058Q6.406-61.005 6.713-61.005",[865],"tikz-text","stroke-width:0.270",[848,868,869],{"transform":859},[861,870],{"d":871,"fill":850,"stroke":850,"className":872,"style":866},"M10.158-61.761L10.158-64.253L9.393-64.253L9.393-64.512Q9.798-64.512 10.064-64.778Q10.329-65.044 10.450-65.444Q10.571-65.844 10.571-66.226L10.861-66.226L10.861-64.569L12.149-64.569L12.149-64.253L10.861-64.253L10.861-61.796Q10.861-61.427 10.986-61.153Q11.112-60.878 11.437-60.878Q11.736-60.878 11.874-61.172Q12.013-61.467 12.013-61.796L12.013-62.319L12.298-62.319L12.298-61.761Q12.298-61.484 12.188-61.212Q12.078-60.939 11.865-60.764Q11.652-60.588 11.371-60.588Q11.011-60.588 10.738-60.726Q10.466-60.865 10.312-61.128Q10.158-61.392 10.158-61.761M15.106-60.689L13.120-60.689L13.120-61.005Q13.428-61.005 13.619-61.058Q13.810-61.111 13.810-61.300L13.810-63.748Q13.810-63.994 13.744-64.099Q13.678-64.205 13.553-64.229Q13.428-64.253 13.155-64.253L13.155-64.569L14.487-64.666L14.487-61.300Q14.487-61.106 14.651-61.056Q14.816-61.005 15.106-61.005L15.106-60.689M13.507-66.213Q13.507-66.419 13.656-66.569Q13.805-66.718 14.008-66.718Q14.139-66.718 14.256-66.648Q14.372-66.578 14.443-66.461Q14.513-66.345 14.513-66.213Q14.513-66.011 14.364-65.861Q14.214-65.712 14.008-65.712Q13.805-65.712 13.656-65.861Q13.507-66.011 13.507-66.213M15.638-59.995Q15.638-60.307 15.867-60.546Q16.095-60.786 16.416-60.887Q16.236-61.027 16.141-61.236Q16.047-61.445 16.047-61.678Q16.047-62.091 16.324-62.425Q15.910-62.829 15.910-63.343Q15.910-63.734 16.130-64.033Q16.350-64.332 16.701-64.499Q17.053-64.666 17.431-64.666Q17.985-64.666 18.402-64.354Q18.591-64.547 18.853-64.657Q19.114-64.767 19.400-64.767Q19.602-64.767 19.736-64.624Q19.870-64.481 19.870-64.288Q19.870-64.161 19.786-64.082Q19.703-64.002 19.580-64.002Q19.461-64.002 19.378-64.082Q19.294-64.161 19.294-64.288Q19.294-64.363 19.303-64.389Q19.321-64.424 19.343-64.457Q19.365-64.490 19.373-64.503Q18.930-64.503 18.582-64.200Q18.943-63.818 18.943-63.343Q18.943-63.049 18.815-62.803Q18.688-62.557 18.475-62.381Q18.262-62.205 17.982-62.108Q17.703-62.012 17.431-62.012Q16.921-62.012 16.513-62.280Q16.385-62.108 16.385-61.902Q16.385-61.660 16.543-61.489Q16.701-61.317 16.934-61.317L17.699-61.317Q18.244-61.317 18.690-61.221Q19.136-61.124 19.435-60.834Q19.734-60.544 19.734-59.995Q19.734-59.415 19.048-59.125Q18.363-58.835 17.690-58.835Q17.018-58.835 16.328-59.125Q15.638-59.415 15.638-59.995M16.179-59.995Q16.179-59.700 16.431-59.502Q16.684-59.305 17.044-59.210Q17.405-59.116 17.690-59.116Q18.191-59.116 18.692-59.342Q19.193-59.568 19.193-59.995Q19.193-60.452 18.752-60.584Q18.310-60.715 17.699-60.715L16.934-60.715Q16.741-60.715 16.563-60.621Q16.385-60.526 16.282-60.362Q16.179-60.197 16.179-59.995M17.422-62.293L17.431-62.293Q18.213-62.293 18.213-63.343Q18.213-64.389 17.431-64.389Q16.640-64.389 16.640-63.343Q16.640-62.293 17.422-62.293M20.986-61.761L20.986-63.748Q20.986-63.989 20.916-64.097Q20.846-64.205 20.712-64.229Q20.577-64.253 20.296-64.253L20.296-64.569L21.689-64.666L21.689-61.796Q21.689-61.418 21.735-61.232Q21.782-61.045 21.953-60.948Q22.124-60.852 22.480-60.852Q22.814-60.852 23.054-61.043Q23.293-61.234 23.419-61.537Q23.544-61.840 23.544-62.157L23.544-63.748Q23.544-63.989 23.473-64.097Q23.403-64.205 23.269-64.229Q23.135-64.253 22.849-64.253L22.849-64.569L24.247-64.666L24.247-61.506Q24.247-61.269 24.317-61.161Q24.388-61.054 24.522-61.030Q24.656-61.005 24.937-61.005L24.937-60.689L23.570-60.588L23.570-61.309Q23.403-60.983 23.098-60.786Q22.792-60.588 22.436-60.588Q21.777-60.588 21.382-60.858Q20.986-61.128 20.986-61.761M25.394-62.596Q25.394-63.163 25.666-63.651Q25.939-64.139 26.409-64.431Q26.879-64.723 27.446-64.723Q27.868-64.723 28.244-64.554Q28.619-64.385 28.896-64.093Q29.173-63.800 29.331-63.405Q29.490-63.009 29.490-62.596Q29.490-62.047 29.211-61.585Q28.931-61.124 28.463-60.856Q27.995-60.588 27.446-60.588Q26.892-60.588 26.422-60.856Q25.952-61.124 25.673-61.585Q25.394-62.047 25.394-62.596M27.446-60.878Q27.943-60.878 28.220-61.139Q28.496-61.401 28.589-61.805Q28.681-62.210 28.681-62.706Q28.681-63.181 28.582-63.570Q28.483-63.959 28.211-64.209Q27.938-64.460 27.446-64.460Q26.734-64.460 26.471-63.965Q26.207-63.471 26.207-62.706Q26.207-61.906 26.462-61.392Q26.717-60.878 27.446-60.878M30.742-61.761L30.742-63.748Q30.742-63.989 30.672-64.097Q30.601-64.205 30.467-64.229Q30.333-64.253 30.052-64.253L30.052-64.569L31.445-64.666L31.445-61.796Q31.445-61.418 31.491-61.232Q31.537-61.045 31.709-60.948Q31.880-60.852 32.236-60.852Q32.570-60.852 32.810-61.043Q33.049-61.234 33.174-61.537Q33.300-61.840 33.300-62.157L33.300-63.748Q33.300-63.989 33.229-64.097Q33.159-64.205 33.025-64.229Q32.891-64.253 32.605-64.253L32.605-64.569L34.003-64.666L34.003-61.506Q34.003-61.269 34.073-61.161Q34.143-61.054 34.277-61.030Q34.411-61.005 34.693-61.005L34.693-60.689L33.326-60.588L33.326-61.309Q33.159-60.983 32.854-60.786Q32.548-60.588 32.192-60.588Q31.533-60.588 31.138-60.858Q30.742-61.128 30.742-61.761M35.198-60.671L35.198-62.113Q35.198-62.144 35.227-62.168Q35.255-62.192 35.286-62.192L35.396-62.192Q35.431-62.192 35.453-62.170Q35.475-62.148 35.484-62.113Q35.743-60.852 36.710-60.852Q37.136-60.852 37.430-61.036Q37.725-61.221 37.725-61.625Q37.725-61.919 37.494-62.115Q37.264-62.311 36.951-62.372L36.349-62.491Q35.884-62.579 35.541-62.862Q35.198-63.146 35.198-63.585Q35.198-64.178 35.635-64.451Q36.073-64.723 36.710-64.723Q37.189-64.723 37.536-64.477L37.786-64.701Q37.844-64.723 37.844-64.723L37.896-64.723Q37.923-64.723 37.956-64.697Q37.989-64.670 37.989-64.640L37.989-63.480Q37.989-63.449 37.953-63.422Q37.918-63.396 37.896-63.396L37.786-63.396Q37.764-63.396 37.732-63.425Q37.699-63.453 37.699-63.480Q37.699-63.945 37.433-64.216Q37.167-64.486 36.701-64.486Q36.297-64.486 35.993-64.341Q35.690-64.196 35.690-63.840Q35.690-63.594 35.908-63.440Q36.125-63.286 36.402-63.229L37.031-63.102Q37.347-63.040 37.617-62.873Q37.888-62.706 38.055-62.440Q38.222-62.174 38.222-61.858Q38.222-61.216 37.795-60.902Q37.369-60.588 36.710-60.588Q36.437-60.588 36.171-60.682Q35.906-60.777 35.725-60.966L35.405-60.627Q35.387-60.588 35.339-60.588L35.286-60.588Q35.264-60.588 35.231-60.616Q35.198-60.645 35.198-60.671",[865],[861,874],{"fill":854,"d":875},"M-18.622-49.308H9.831V-72.07h-28.453Z",[848,877,879],{"transform":878},"translate(-2.312 2.9)",[861,880],{"d":881,"fill":850,"stroke":850,"className":882,"style":866},"M-3.333-61.076Q-3.086-60.777-2.480-60.777Q-2.199-60.777-1.959-60.915Q-1.720-61.054-1.542-61.276Q-1.364-61.498-1.254-61.761Q-1.021-62.337-1.021-63.453Q-1.188-63.088-1.493-62.864Q-1.799-62.640-2.181-62.640Q-2.717-62.640-3.133-62.919Q-3.548-63.198-3.779-63.664Q-4.009-64.130-4.009-64.657Q-4.009-65.070-3.862-65.439Q-3.715-65.809-3.451-66.085Q-3.188-66.362-2.818-66.523Q-2.449-66.683-2.036-66.683Q-1.478-66.683-1.104-66.391Q-0.731-66.099-0.527-65.635Q-0.322-65.171-0.243-64.655Q-0.164-64.139-0.164-63.607Q-0.164-62.891-0.432-62.168Q-0.700-61.445-1.223-60.968Q-1.746-60.491-2.471-60.491Q-3.021-60.491-3.398-60.740Q-3.776-60.988-3.776-61.506Q-3.776-61.625-3.719-61.728Q-3.662-61.832-3.561-61.891Q-3.460-61.950-3.333-61.950Q-3.148-61.950-3.025-61.818Q-2.902-61.687-2.902-61.506Q-2.902-61.331-3.029-61.203Q-3.157-61.076-3.333-61.076M-2.137-62.904Q-1.768-62.904-1.520-63.146Q-1.271-63.387-1.155-63.745Q-1.039-64.104-1.039-64.477Q-1.039-64.587-1.047-64.640Q-1.043-64.653-1.041-64.664Q-1.039-64.675-1.039-64.692Q-1.039-65.347-1.254-65.886Q-1.469-66.424-2.036-66.424Q-2.396-66.424-2.625-66.274Q-2.854-66.125-2.970-65.868Q-3.086-65.611-3.119-65.330Q-3.152-65.048-3.152-64.675L-3.152-64.640Q-3.152-64.314-3.126-64.027Q-3.100-63.739-3.001-63.480Q-2.902-63.220-2.691-63.062Q-2.480-62.904-2.137-62.904",[865],[861,884],{"fill":854,"d":885},"M10.23-49.308h28.453V-72.07H10.231Z",[848,887,889],{"transform":888},"translate(24.228 2.9)",[861,890],{"d":891,"fill":850,"stroke":850,"className":892,"style":866},"M-0.489-60.689L-3.521-60.689L-3.521-61.005Q-2.370-61.005-2.370-61.300L-2.370-66.024Q-2.858-65.791-3.579-65.791L-3.579-66.107Q-2.449-66.107-1.887-66.683L-1.742-66.683Q-1.707-66.683-1.674-66.650Q-1.641-66.617-1.641-66.582L-1.641-61.300Q-1.641-61.005-0.489-61.005L-0.489-60.689M2.534-60.491Q1.800-60.491 1.370-60.972Q0.939-61.454 0.774-62.146Q0.609-62.838 0.609-63.585Q0.609-64.314 0.902-65.037Q1.194-65.760 1.748-66.222Q2.301-66.683 3.048-66.683Q3.545-66.683 3.881-66.417Q4.217-66.151 4.217-65.668Q4.217-65.488 4.090-65.360Q3.962-65.233 3.787-65.233Q3.606-65.233 3.477-65.358Q3.347-65.483 3.347-65.668Q3.347-65.782 3.404-65.886Q3.461-65.989 3.562-66.048Q3.664-66.107 3.787-66.107Q3.791-66.107 3.795-66.105Q3.800-66.103 3.804-66.099Q3.690-66.266 3.481-66.345Q3.272-66.424 3.048-66.424Q2.604-66.424 2.246-66.123Q1.888-65.822 1.699-65.369Q1.466-64.763 1.466-63.730Q1.638-64.095 1.939-64.323Q2.240-64.552 2.626-64.552Q3.031-64.552 3.376-64.385Q3.721-64.218 3.958-63.937Q4.195-63.655 4.325-63.293Q4.455-62.930 4.455-62.526Q4.455-61.981 4.211-61.515Q3.967-61.049 3.527-60.770Q3.088-60.491 2.534-60.491M2.534-60.777Q2.996-60.777 3.231-61.034Q3.466-61.291 3.532-61.665Q3.598-62.038 3.598-62.508L3.598-62.543Q3.598-63.031 3.541-63.396Q3.483-63.761 3.255-64.024Q3.026-64.288 2.583-64.288Q2.213-64.288 1.963-64.044Q1.712-63.800 1.598-63.436Q1.484-63.071 1.484-62.724Q1.484-62.605 1.493-62.543Q1.493-62.526 1.490-62.515Q1.488-62.504 1.484-62.491Q1.484-61.840 1.721-61.309Q1.958-60.777 2.534-60.777",[865],[861,894],{"fill":854,"d":895},"M39.083-49.308h28.453V-72.07H39.083Z",[848,897,899],{"transform":898},"translate(55.393 2.9)",[861,900],{"d":901,"fill":850,"stroke":850,"className":902,"style":866},"M-1.698-62.166L-4.137-62.166L-4.137-62.482L-1.311-66.630Q-1.267-66.683-1.201-66.683L-1.047-66.683Q-1.008-66.683-0.975-66.650Q-0.942-66.617-0.942-66.573L-0.942-62.482L-0.041-62.482L-0.041-62.166L-0.942-62.166L-0.942-61.300Q-0.942-61.005-0.041-61.005L-0.041-60.689L-2.594-60.689L-2.594-61.005Q-2.234-61.005-1.966-61.060Q-1.698-61.115-1.698-61.300L-1.698-62.166M-1.641-65.655L-3.803-62.482L-1.641-62.482",[865],[848,904,906],{"transform":905},"translate(-7.711 21.398)",[861,907],{"d":908,"fill":850,"stroke":850,"className":909,"style":910},"M-2.906-60.621Q-3.224-60.621-3.456-60.776Q-3.688-60.932-3.815-61.195Q-3.941-61.458-3.941-61.772Q-3.941-61.991-3.883-62.207L-3.227-64.856Q-3.179-65.030-3.179-65.098Q-3.179-65.190-3.613-65.190Q-3.695-65.218-3.695-65.303L-3.668-65.413Q-3.661-65.454-3.589-65.471L-2.612-65.546Q-2.574-65.546-2.540-65.519Q-2.506-65.491-2.506-65.443L-3.008-63.413Q-2.598-63.775-2.157-63.775Q-1.836-63.775-1.590-63.620Q-1.344-63.464-1.214-63.198Q-1.084-62.931-1.084-62.606Q-1.084-62.254-1.229-61.902Q-1.375-61.550-1.626-61.262Q-1.877-60.973-2.212-60.797Q-2.547-60.621-2.906-60.621M-2.892-60.843Q-2.684-60.843-2.494-60.969Q-2.304-61.096-2.167-61.285Q-2.031-61.475-1.945-61.677Q-1.839-61.940-1.756-62.307Q-1.672-62.675-1.672-62.907Q-1.672-63.061-1.723-63.213Q-1.774-63.365-1.887-63.459Q-2-63.553-2.171-63.553Q-2.448-63.553-2.694-63.372Q-2.940-63.191-3.135-62.914L-3.326-62.172Q-3.422-61.755-3.422-61.530Q-3.422-61.253-3.289-61.048Q-3.155-60.843-2.892-60.843M0.608-60.621Q0.283-60.621 0.039-60.778Q-0.206-60.935-0.337-61.200Q-0.469-61.465-0.469-61.790Q-0.469-62.258-0.216-62.721Q0.037-63.184 0.461-63.480Q0.885-63.775 1.356-63.775Q1.572-63.775 1.758-63.671Q1.944-63.567 2.064-63.382Q2.088-63.495 2.182-63.569Q2.276-63.642 2.392-63.642Q2.495-63.642 2.563-63.581Q2.631-63.519 2.631-63.420Q2.631-63.362 2.625-63.335L2.143-61.417Q2.115-61.260 2.115-61.171Q2.115-61.044 2.167-60.944Q2.218-60.843 2.337-60.843Q2.560-60.843 2.672-61.096Q2.785-61.349 2.871-61.718Q2.895-61.779 2.946-61.779L3.059-61.779Q3.093-61.779 3.115-61.750Q3.137-61.721 3.137-61.697Q3.137-61.684 3.130-61.670Q2.867-60.621 2.324-60.621Q2.074-60.621 1.866-60.744Q1.657-60.867 1.589-61.096Q1.114-60.621 0.608-60.621M0.622-60.843Q0.895-60.843 1.146-61.027Q1.397-61.212 1.589-61.479L1.958-62.959Q1.920-63.119 1.840-63.256Q1.760-63.393 1.633-63.473Q1.507-63.553 1.343-63.553Q1.134-63.553 0.948-63.429Q0.762-63.304 0.623-63.112Q0.485-62.921 0.399-62.719Q0.287-62.425 0.203-62.080Q0.119-61.735 0.119-61.485Q0.119-61.229 0.247-61.036Q0.375-60.843 0.622-60.843M4.286-61.109Q4.477-60.843 5.082-60.843Q5.311-60.843 5.555-60.913Q5.800-60.983 5.962-61.138Q6.125-61.294 6.125-61.537Q6.125-61.711 5.974-61.819Q5.824-61.926 5.629-61.964L5.174-62.046Q4.904-62.101 4.716-62.289Q4.528-62.477 4.528-62.733Q4.528-63.058 4.715-63.295Q4.901-63.533 5.198-63.654Q5.496-63.775 5.817-63.775Q6.022-63.775 6.237-63.716Q6.453-63.656 6.594-63.521Q6.736-63.386 6.736-63.174Q6.736-63.006 6.642-62.880Q6.548-62.753 6.384-62.753Q6.285-62.753 6.212-62.818Q6.138-62.883 6.138-62.986Q6.138-63.106 6.222-63.203Q6.306-63.300 6.418-63.321Q6.261-63.553 5.803-63.553Q5.506-63.553 5.256-63.410Q5.007-63.266 5.007-62.986Q5.007-62.730 5.369-62.647L5.831-62.565Q6.145-62.504 6.374-62.295Q6.603-62.087 6.603-61.779Q6.603-61.516 6.448-61.265Q6.292-61.014 6.056-60.863Q5.663-60.621 5.075-60.621Q4.648-60.621 4.298-60.776Q3.947-60.932 3.947-61.297Q3.947-61.492 4.063-61.636Q4.180-61.779 4.375-61.779Q4.494-61.779 4.574-61.708Q4.655-61.636 4.655-61.516Q4.655-61.359 4.549-61.243Q4.443-61.127 4.286-61.109M8.274-61.656Q8.274-61.321 8.447-61.082Q8.620-60.843 8.948-60.843Q9.399-60.843 9.809-61.009Q10.219-61.174 10.486-61.509Q10.503-61.537 10.551-61.537Q10.599-61.537 10.645-61.487Q10.691-61.438 10.691-61.390Q10.691-61.359 10.670-61.332Q10.380-60.966 9.918-60.793Q9.457-60.621 8.934-60.621Q8.572-60.621 8.283-60.795Q7.994-60.969 7.837-61.268Q7.680-61.567 7.680-61.937Q7.680-62.326 7.844-62.665Q8.008-63.003 8.295-63.252Q8.582-63.502 8.943-63.639Q9.303-63.775 9.683-63.775Q9.891-63.775 10.088-63.710Q10.284-63.646 10.417-63.507Q10.551-63.369 10.551-63.160Q10.551-62.846 10.322-62.659Q10.093-62.473 9.741-62.391Q9.389-62.309 9.074-62.290Q8.760-62.272 8.387-62.272L8.367-62.272Q8.274-61.902 8.274-61.656M8.421-62.494Q8.712-62.494 8.980-62.507Q9.249-62.521 9.539-62.583Q9.830-62.644 10.026-62.784Q10.223-62.924 10.223-63.153Q10.223-63.345 10.048-63.449Q9.874-63.553 9.662-63.553Q9.204-63.553 8.885-63.258Q8.565-62.962 8.421-62.494",[865],"stroke-width:0.210",[848,912,914,921],{"stroke":854,"fontSize":913},"7",[848,915,917],{"transform":916},"translate(23.896 20.87)",[861,918],{"d":919,"fill":850,"stroke":850,"className":920,"style":910},"M-1.498-60.009L-1.498-62.265L-3.747-62.265Q-3.815-62.275-3.861-62.321Q-3.907-62.367-3.907-62.439Q-3.907-62.583-3.747-62.606L-1.498-62.606L-1.498-64.862Q-1.487-64.931-1.441-64.977Q-1.395-65.023-1.323-65.023Q-1.180-65.023-1.156-64.862L-1.156-62.606L1.086-62.606Q1.247-62.583 1.247-62.439Q1.247-62.367 1.201-62.321Q1.155-62.275 1.086-62.265L-1.156-62.265L-1.156-60.009Q-1.180-59.848-1.323-59.848Q-1.395-59.848-1.441-59.894Q-1.487-59.940-1.498-60.009",[865],[848,922,923],{"transform":916},[861,924],{"d":925,"fill":850,"stroke":850,"className":926,"style":910},"M2.577-61.109Q2.768-60.843 3.373-60.843Q3.602-60.843 3.847-60.913Q4.091-60.983 4.253-61.138Q4.416-61.294 4.416-61.537Q4.416-61.711 4.265-61.819Q4.115-61.926 3.920-61.964L3.466-62.046Q3.196-62.101 3.008-62.289Q2.820-62.477 2.820-62.733Q2.820-63.058 3.006-63.295Q3.192-63.533 3.490-63.654Q3.787-63.775 4.108-63.775Q4.313-63.775 4.529-63.716Q4.744-63.656 4.886-63.521Q5.028-63.386 5.028-63.174Q5.028-63.006 4.934-62.880Q4.840-62.753 4.676-62.753Q4.576-62.753 4.503-62.818Q4.430-62.883 4.430-62.986Q4.430-63.106 4.513-63.203Q4.597-63.300 4.710-63.321Q4.553-63.553 4.095-63.553Q3.797-63.553 3.548-63.410Q3.298-63.266 3.298-62.986Q3.298-62.730 3.660-62.647L4.122-62.565Q4.436-62.504 4.665-62.295Q4.894-62.087 4.894-61.779Q4.894-61.516 4.739-61.265Q4.583-61.014 4.347-60.863Q3.954-60.621 3.367-60.621Q2.939-60.621 2.589-60.776Q2.239-60.932 2.239-61.297Q2.239-61.492 2.355-61.636Q2.471-61.779 2.666-61.779Q2.785-61.779 2.866-61.708Q2.946-61.636 2.946-61.516Q2.946-61.359 2.840-61.243Q2.734-61.127 2.577-61.109",[865],[848,928,929,936],{"stroke":854,"fontSize":913},[848,930,932],{"transform":931},"translate(50.756 21.048)",[861,933],{"d":934,"fill":850,"stroke":850,"className":935,"style":910},"M-1.498-60.009L-1.498-62.265L-3.747-62.265Q-3.815-62.275-3.861-62.321Q-3.907-62.367-3.907-62.439Q-3.907-62.583-3.747-62.606L-1.498-62.606L-1.498-64.862Q-1.487-64.931-1.441-64.977Q-1.395-65.023-1.323-65.023Q-1.180-65.023-1.156-64.862L-1.156-62.606L1.086-62.606Q1.247-62.583 1.247-62.439Q1.247-62.367 1.201-62.321Q1.155-62.275 1.086-62.265L-1.156-62.265L-1.156-60.009Q-1.180-59.848-1.323-59.848Q-1.395-59.848-1.441-59.894Q-1.487-59.940-1.498-60.009M5.068-60.689L2.184-60.689L2.184-60.891Q2.184-60.921 2.211-60.949L3.458-62.166Q3.530-62.241 3.573-62.283Q3.616-62.326 3.694-62.405Q4.108-62.818 4.339-63.176Q4.569-63.533 4.569-63.957Q4.569-64.189 4.491-64.392Q4.412-64.596 4.270-64.746Q4.128-64.897 3.934-64.977Q3.739-65.057 3.506-65.057Q3.195-65.057 2.937-64.898Q2.679-64.739 2.549-64.462L2.570-64.462Q2.737-64.462 2.845-64.351Q2.953-64.240 2.953-64.076Q2.953-63.919 2.843-63.806Q2.734-63.693 2.570-63.693Q2.409-63.693 2.296-63.806Q2.184-63.919 2.184-64.076Q2.184-64.452 2.392-64.739Q2.601-65.026 2.936-65.182Q3.271-65.337 3.626-65.337Q4.050-65.337 4.429-65.179Q4.809-65.020 5.043-64.703Q5.277-64.387 5.277-63.957Q5.277-63.646 5.137-63.377Q4.997-63.109 4.792-62.904Q4.586-62.699 4.224-62.417Q3.862-62.135 3.752-62.039L2.898-61.311L3.541-61.311Q3.804-61.311 4.093-61.313Q4.381-61.314 4.600-61.323Q4.819-61.332 4.836-61.349Q4.897-61.414 4.935-61.581Q4.973-61.749 5.010-61.991L5.277-61.991",[865],[848,937,938],{"transform":931},[861,939],{"d":940,"fill":850,"stroke":850,"className":941,"style":910},"M6.563-61.109Q6.754-60.843 7.359-60.843Q7.588-60.843 7.833-60.913Q8.077-60.983 8.239-61.138Q8.402-61.294 8.402-61.537Q8.402-61.711 8.251-61.819Q8.101-61.926 7.906-61.964L7.452-62.046Q7.182-62.101 6.994-62.289Q6.806-62.477 6.806-62.733Q6.806-63.058 6.992-63.295Q7.178-63.533 7.476-63.654Q7.773-63.775 8.094-63.775Q8.299-63.775 8.515-63.716Q8.730-63.656 8.872-63.521Q9.014-63.386 9.014-63.174Q9.014-63.006 8.920-62.880Q8.826-62.753 8.662-62.753Q8.562-62.753 8.489-62.818Q8.416-62.883 8.416-62.986Q8.416-63.106 8.499-63.203Q8.583-63.300 8.696-63.321Q8.539-63.553 8.081-63.553Q7.783-63.553 7.534-63.410Q7.284-63.266 7.284-62.986Q7.284-62.730 7.646-62.647L8.108-62.565Q8.422-62.504 8.651-62.295Q8.880-62.087 8.880-61.779Q8.880-61.516 8.725-61.265Q8.569-61.014 8.333-60.863Q7.940-60.621 7.353-60.621Q6.925-60.621 6.575-60.776Q6.225-60.932 6.225-61.297Q6.225-61.492 6.341-61.636Q6.457-61.779 6.652-61.779Q6.771-61.779 6.852-61.708Q6.932-61.636 6.932-61.516Q6.932-61.359 6.826-61.243Q6.720-61.127 6.563-61.109",[865],[848,943,944,951],{"stroke":854,"fontFamily":855,"fontSize":856},[848,945,947],{"transform":946},"translate(-39.07 65.721)",[861,948],{"d":949,"fill":850,"stroke":850,"className":950,"style":866},"M-2.027-60.689L-4.088-60.689L-4.088-61.005Q-3.781-61.005-3.590-61.058Q-3.398-61.111-3.398-61.300L-3.398-66.015Q-3.398-66.257-3.469-66.365Q-3.539-66.472-3.673-66.496Q-3.807-66.521-4.088-66.521L-4.088-66.837L-2.722-66.934L-2.722-61.300Q-2.722-61.111-2.528-61.058Q-2.335-61.005-2.027-61.005L-2.027-60.689M0.464-60.689L-1.522-60.689L-1.522-61.005Q-1.214-61.005-1.023-61.058Q-0.832-61.111-0.832-61.300L-0.832-63.748Q-0.832-63.994-0.898-64.099Q-0.964-64.205-1.089-64.229Q-1.214-64.253-1.487-64.253L-1.487-64.569L-0.155-64.666L-0.155-61.300Q-0.155-61.106 0.010-61.056Q0.174-61.005 0.464-61.005L0.464-60.689M-1.135-66.213Q-1.135-66.419-0.986-66.569Q-0.836-66.718-0.634-66.718Q-0.502-66.718-0.386-66.648Q-0.270-66.578-0.199-66.461Q-0.129-66.345-0.129-66.213Q-0.129-66.011-0.278-65.861Q-0.428-65.712-0.634-65.712Q-0.836-65.712-0.986-65.861Q-1.135-66.011-1.135-66.213M3.123-60.689L1.036-60.689L1.036-61.005Q1.343-61.005 1.534-61.058Q1.726-61.111 1.726-61.300L1.726-63.748Q1.726-63.989 1.655-64.097Q1.585-64.205 1.451-64.229Q1.317-64.253 1.036-64.253L1.036-64.569L2.376-64.666L2.376-63.831Q2.574-64.213 2.927-64.440Q3.281-64.666 3.708-64.666Q4.986-64.666 4.986-63.453L4.986-61.300Q4.986-61.111 5.177-61.058Q5.369-61.005 5.676-61.005L5.676-60.689L3.589-60.689L3.589-61.005Q3.901-61.005 4.092-61.058Q4.283-61.111 4.283-61.300L4.283-63.418Q4.283-63.677 4.239-63.899Q4.195-64.121 4.050-64.264Q3.905-64.407 3.646-64.407Q3.303-64.407 3.022-64.218Q2.741-64.029 2.585-63.717Q2.429-63.405 2.429-63.058L2.429-61.300Q2.429-61.111 2.622-61.058Q2.815-61.005 3.123-61.005L3.123-60.689M8.159-60.689L6.125-60.689L6.125-61.005Q6.437-61.005 6.628-61.058Q6.819-61.111 6.819-61.300L6.819-66.015Q6.819-66.257 6.749-66.365Q6.678-66.472 6.544-66.496Q6.410-66.521 6.125-66.521L6.125-66.837L7.496-66.934L7.496-62.689L8.700-63.704Q8.906-63.875 8.906-64.055Q8.906-64.152 8.838-64.202Q8.770-64.253 8.673-64.253L8.673-64.569L10.383-64.569L10.383-64.253Q9.785-64.253 9.139-63.704L8.493-63.154L9.653-61.555Q9.829-61.317 9.932-61.212Q10.036-61.106 10.187-61.056Q10.339-61.005 10.589-61.005L10.589-60.689L8.761-60.689L8.761-61.005Q9.060-61.005 9.060-61.194Q9.060-61.313 8.889-61.555L8.014-62.750L7.465-62.280L7.465-61.300Q7.465-61.111 7.658-61.058Q7.852-61.005 8.159-61.005",[865],[848,952,953],{"transform":946},[861,954],{"d":955,"fill":850,"stroke":850,"className":956,"style":866},"M12.819-60.588Q12.260-60.588 11.788-60.871Q11.316-61.155 11.041-61.632Q10.766-62.108 10.766-62.662Q10.766-63.058 10.909-63.433Q11.052-63.809 11.309-64.097Q11.566-64.385 11.924-64.554Q12.282-64.723 12.687-64.723Q13.232-64.723 13.603-64.486Q13.974-64.249 14.161-63.831Q14.348-63.414 14.348-62.877Q14.348-62.825 14.324-62.787Q14.299-62.750 14.251-62.750L11.579-62.750L11.579-62.671Q11.579-61.924 11.891-61.401Q12.203-60.878 12.902-60.878Q13.306-60.878 13.627-61.135Q13.948-61.392 14.071-61.796Q14.089-61.876 14.172-61.876L14.251-61.876Q14.291-61.876 14.319-61.845Q14.348-61.814 14.348-61.770L14.348-61.735Q14.242-61.392 14.020-61.133Q13.799-60.874 13.484-60.731Q13.170-60.588 12.819-60.588M11.588-63.001L13.702-63.001Q13.702-63.269 13.649-63.515Q13.596-63.761 13.476-63.983Q13.355-64.205 13.157-64.332Q12.959-64.460 12.687-64.460Q12.344-64.460 12.091-64.235Q11.839-64.011 11.713-63.673Q11.588-63.335 11.588-63.001M16.870-60.588Q16.325-60.588 15.882-60.871Q15.438-61.155 15.183-61.627Q14.928-62.100 14.928-62.631Q14.928-63.185 15.205-63.651Q15.482-64.117 15.954-64.391Q16.426-64.666 16.971-64.666Q17.305-64.666 17.609-64.534Q17.912-64.402 18.132-64.165L18.132-66.015Q18.132-66.257 18.061-66.365Q17.991-66.472 17.857-66.496Q17.723-66.521 17.437-66.521L17.437-66.837L18.804-66.934L18.804-61.506Q18.804-61.269 18.874-61.161Q18.944-61.054 19.081-61.030Q19.217-61.005 19.498-61.005L19.498-60.689L18.105-60.588L18.105-61.137Q17.855-60.874 17.536-60.731Q17.217-60.588 16.870-60.588M16.932-60.852Q17.301-60.852 17.611-61.063Q17.921-61.273 18.105-61.616L18.105-63.748Q17.934-64.051 17.653-64.229Q17.371-64.407 17.033-64.407Q16.343-64.407 16.040-63.886Q15.736-63.365 15.736-62.623Q15.736-61.902 16.007-61.377Q16.277-60.852 16.932-60.852",[865],[861,958],{"fill":854,"d":959},"M-10.086 4.752h22.762V-18.01h-22.762Z",[848,961,963],{"transform":962},"translate(3.378 56.96)",[861,964],{"d":881,"fill":850,"stroke":850,"className":965,"style":866},[865],[861,967],{"fill":854,"d":968},"M52.51 24.67h22.762V1.906H52.51Z",[848,970,972],{"transform":971},"translate(63.661 76.877)",[861,973],{"d":891,"fill":850,"stroke":850,"className":974,"style":866},[865],[861,976],{"fill":854,"d":977},"M106.57 7.598h22.762v-22.763H106.57Z",[848,979,981],{"transform":980},"translate(120.034 59.806)",[861,982],{"d":901,"fill":850,"stroke":850,"className":983,"style":866},[865],[848,985,987,990],{"fill":986,"stroke":986},"var(--tk-accent)",[861,988],{"fill":854,"d":989},"M12.876-6.629c13.645 7.857 23.776 10 37.445 8.547",[861,991],{"stroke":854,"d":992},"M52.31 1.707 48.959.454l1.362 1.464-1.024 1.718",[848,994,995,998],{"fill":986,"stroke":986},[861,996],{"fill":854,"d":997},"M75.472 13.288c10.8-5.76 18.775-7.178 28.917-5.766",[861,999],{"stroke":854,"d":1000},"m106.37 7.798-2.949-2.026.968 1.75-1.409 1.42",[848,1002,1004],{"transform":1003},"translate(-39.486 56.49)",[861,1005],{"d":1006,"fill":850,"stroke":850,"className":1007,"style":910},"M-2.400-60.689L-4.034-60.689L-4.034-60.969Q-3.805-60.969-3.656-61.003Q-3.507-61.038-3.507-61.178L-3.507-64.797Q-3.507-65.067-3.615-65.129Q-3.723-65.190-4.034-65.190L-4.034-65.471L-2.954-65.546L-2.954-63.160Q-2.848-63.345-2.670-63.487Q-2.492-63.628-2.284-63.702Q-2.075-63.775-1.850-63.775Q-1.344-63.775-1.060-63.552Q-0.776-63.328-0.776-62.832L-0.776-61.178Q-0.776-61.041-0.628-61.005Q-0.479-60.969-0.253-60.969L-0.253-60.689L-1.884-60.689L-1.884-60.969Q-1.655-60.969-1.506-61.003Q-1.357-61.038-1.357-61.178L-1.357-62.818Q-1.357-63.153-1.477-63.353Q-1.597-63.553-1.911-63.553Q-2.181-63.553-2.415-63.417Q-2.649-63.280-2.788-63.046Q-2.926-62.812-2.926-62.538L-2.926-61.178Q-2.926-61.041-2.776-61.005Q-2.625-60.969-2.400-60.969L-2.400-60.689M0.293-62.224Q0.293-62.545 0.418-62.834Q0.543-63.123 0.769-63.346Q0.994-63.570 1.290-63.690Q1.585-63.810 1.903-63.810Q2.231-63.810 2.493-63.710Q2.754-63.611 2.930-63.429Q3.106-63.246 3.200-62.988Q3.294-62.730 3.294-62.398Q3.294-62.306 3.212-62.285L0.957-62.285L0.957-62.224Q0.957-61.636 1.240-61.253Q1.524-60.870 2.091-60.870Q2.413-60.870 2.681-61.063Q2.949-61.256 3.038-61.571Q3.045-61.612 3.120-61.626L3.212-61.626Q3.294-61.602 3.294-61.530Q3.294-61.523 3.288-61.496Q3.175-61.099 2.804-60.860Q2.433-60.621 2.009-60.621Q1.572-60.621 1.172-60.829Q0.772-61.038 0.533-61.405Q0.293-61.772 0.293-62.224M0.963-62.494L2.778-62.494Q2.778-62.771 2.681-63.023Q2.583-63.276 2.385-63.432Q2.187-63.587 1.903-63.587Q1.626-63.587 1.413-63.429Q1.199-63.270 1.081-63.015Q0.963-62.760 0.963-62.494M3.940-61.417Q3.940-61.749 4.164-61.976Q4.388-62.203 4.732-62.331Q5.075-62.460 5.448-62.512Q5.820-62.565 6.125-62.565L6.125-62.818Q6.125-63.023 6.017-63.203Q5.909-63.382 5.728-63.485Q5.547-63.587 5.338-63.587Q4.932-63.587 4.696-63.495Q4.785-63.458 4.831-63.374Q4.877-63.290 4.877-63.188Q4.877-63.092 4.831-63.013Q4.785-62.935 4.704-62.890Q4.624-62.846 4.535-62.846Q4.385-62.846 4.284-62.943Q4.183-63.041 4.183-63.188Q4.183-63.810 5.338-63.810Q5.550-63.810 5.800-63.746Q6.049-63.683 6.251-63.564Q6.453-63.444 6.579-63.259Q6.706-63.075 6.706-62.832L6.706-61.256Q6.706-61.140 6.767-61.044Q6.829-60.949 6.941-60.949Q7.051-60.949 7.116-61.043Q7.181-61.137 7.181-61.256L7.181-61.704L7.447-61.704L7.447-61.256Q7.447-60.986 7.220-60.821Q6.993-60.655 6.712-60.655Q6.504-60.655 6.367-60.809Q6.230-60.962 6.207-61.178Q6.060-60.911 5.778-60.766Q5.496-60.621 5.171-60.621Q4.894-60.621 4.610-60.696Q4.327-60.771 4.134-60.950Q3.940-61.130 3.940-61.417M4.556-61.417Q4.556-61.243 4.656-61.113Q4.757-60.983 4.913-60.913Q5.068-60.843 5.232-60.843Q5.451-60.843 5.660-60.940Q5.868-61.038 5.996-61.219Q6.125-61.400 6.125-61.626L6.125-62.354Q5.800-62.354 5.434-62.263Q5.068-62.172 4.812-61.960Q4.556-61.749 4.556-61.417M7.864-62.200Q7.864-62.538 8.004-62.829Q8.145-63.119 8.389-63.333Q8.633-63.546 8.937-63.661Q9.242-63.775 9.566-63.775Q9.836-63.775 10.100-63.676Q10.363-63.577 10.554-63.399L10.554-64.797Q10.554-65.067 10.447-65.129Q10.339-65.190 10.028-65.190L10.028-65.471L11.104-65.546L11.104-61.362Q11.104-61.174 11.159-61.091Q11.214-61.007 11.315-60.988Q11.416-60.969 11.631-60.969L11.631-60.689L10.523-60.621L10.523-61.038Q10.106-60.621 9.481-60.621Q9.050-60.621 8.678-60.833Q8.305-61.044 8.085-61.405Q7.864-61.766 7.864-62.200M9.539-60.843Q9.748-60.843 9.934-60.915Q10.120-60.986 10.274-61.123Q10.428-61.260 10.523-61.438L10.523-63.047Q10.438-63.194 10.293-63.314Q10.147-63.434 9.978-63.493Q9.809-63.553 9.628-63.553Q9.067-63.553 8.799-63.164Q8.531-62.774 8.531-62.193Q8.531-61.622 8.765-61.232Q8.999-60.843 9.539-60.843",[865],[848,1009,1010,1013],{"fill":986,"stroke":986},[861,1011],{"fill":854,"d":1012},"M-23.973-6.629h11.687",[861,1014],{"stroke":854,"d":1015},"m-10.286-6.629-3.2-1.6 1.2 1.6-1.2 1.6",[848,1017,1019],{"transform":1018},"translate(157.708 59.336)",[861,1020],{"d":1021,"fill":850,"stroke":850,"className":1022,"style":910},"M-2.400-60.689L-4.034-60.689L-4.034-60.969Q-3.805-60.969-3.656-61.003Q-3.507-61.038-3.507-61.178L-3.507-63.027Q-3.507-63.297-3.615-63.358Q-3.723-63.420-4.034-63.420L-4.034-63.700L-2.974-63.775L-2.974-63.126Q-2.803-63.434-2.499-63.605Q-2.195-63.775-1.850-63.775Q-1.344-63.775-1.060-63.552Q-0.776-63.328-0.776-62.832L-0.776-61.178Q-0.776-61.041-0.628-61.005Q-0.479-60.969-0.253-60.969L-0.253-60.689L-1.884-60.689L-1.884-60.969Q-1.655-60.969-1.506-61.003Q-1.357-61.038-1.357-61.178L-1.357-62.818Q-1.357-63.153-1.477-63.353Q-1.597-63.553-1.911-63.553Q-2.181-63.553-2.415-63.417Q-2.649-63.280-2.788-63.046Q-2.926-62.812-2.926-62.538L-2.926-61.178Q-2.926-61.041-2.776-61.005Q-2.625-60.969-2.400-60.969L-2.400-60.689M1.951-60.689L0.399-60.689L0.399-60.969Q0.625-60.969 0.774-61.003Q0.922-61.038 0.922-61.178L0.922-63.027Q0.922-63.215 0.875-63.299Q0.827-63.382 0.729-63.401Q0.632-63.420 0.420-63.420L0.420-63.700L1.476-63.775L1.476-61.178Q1.476-61.038 1.608-61.003Q1.739-60.969 1.951-60.969L1.951-60.689M0.680-64.996Q0.680-65.167 0.803-65.286Q0.926-65.406 1.097-65.406Q1.264-65.406 1.387-65.286Q1.510-65.167 1.510-64.996Q1.510-64.821 1.387-64.698Q1.264-64.575 1.097-64.575Q0.926-64.575 0.803-64.698Q0.680-64.821 0.680-64.996M4.265-60.689L2.662-60.689L2.662-60.969Q2.888-60.969 3.036-61.003Q3.185-61.038 3.185-61.178L3.185-64.797Q3.185-65.067 3.077-65.129Q2.970-65.190 2.662-65.190L2.662-65.471L3.739-65.546L3.739-61.178Q3.739-61.041 3.889-61.005Q4.040-60.969 4.265-60.969",[865],[848,1024,1025,1028],{"fill":986,"stroke":986},[861,1026],{"fill":854,"d":1027},"M129.532-3.783h16.295",[861,1029],{"stroke":854,"d":1030},"m147.827-3.783-3.2-1.6 1.2 1.6-1.2 1.6",[1032,1033,1036,1037,1083,1084,1099,1100,1154,1155,1170,1171,1186],"figcaption",{"className":1034},[1035],"tikz-cap","The same sequence ",[415,1038,1040],{"className":1039},[418],[415,1041,1043],{"className":1042,"ariaHidden":423},[422],[415,1044,1046,1049,1053,1056,1061,1065,1069,1072,1075,1079],{"className":1045},[427],[415,1047],{"className":1048,"style":616},[431],[415,1050,1052],{"className":1051},[625],"⟨",[415,1054,856],{"className":1055},[436],[415,1057,1060],{"className":1058},[1059],"mpunct",",",[415,1062],{"className":1063,"style":1064},[565],"margin-right:0.1667em;",[415,1066,1068],{"className":1067},[436],"16",[415,1070,1060],{"className":1071},[1059],[415,1073],{"className":1074,"style":1064},[565],[415,1076,1078],{"className":1077},[436],"4",[415,1080,1082],{"className":1081},[633],"⟩"," stored two ways. Contiguous: one block, element ",[415,1085,1087],{"className":1086},[418],[415,1088,1090],{"className":1089,"ariaHidden":423},[422],[415,1091,1093,1096],{"className":1092},[427],[415,1094],{"className":1095,"style":488},[431],[415,1097,492],{"className":1098},[436,437]," at ",[415,1101,1103],{"className":1102},[418],[415,1104,1106,1127,1145],{"className":1105,"ariaHidden":423},[422],[415,1107,1109,1112,1115,1118,1121,1124],{"className":1108},[427],[415,1110],{"className":1111,"style":553},[431],[415,1113,557],{"className":1114},[436,437],[415,1116,561],{"className":1117},[436,437],[415,1119],{"className":1120,"style":566},[565],[415,1122,571],{"className":1123},[570],[415,1125],{"className":1126,"style":566},[565],[415,1128,1130,1133,1136,1139,1142],{"className":1129},[427],[415,1131],{"className":1132,"style":488},[431],[415,1134,492],{"className":1135},[436,437],[415,1137],{"className":1138,"style":566},[565],[415,1140,590],{"className":1141},[570],[415,1143],{"className":1144,"style":566},[565],[415,1146,1148,1151],{"className":1147},[427],[415,1149],{"className":1150,"style":432},[431],[415,1152,455],{"className":1153},[436,437],", so indexing is address arithmetic. Linked: three separately-allocated nodes scattered in memory, each pointing to the next, so reaching element ",[415,1156,1158],{"className":1157},[418],[415,1159,1161],{"className":1160,"ariaHidden":423},[422],[415,1162,1164,1167],{"className":1163},[427],[415,1165],{"className":1166,"style":488},[431],[415,1168,492],{"className":1169},[436,437]," means following ",[415,1172,1174],{"className":1173},[418],[415,1175,1177],{"className":1176,"ariaHidden":423},[422],[415,1178,1180,1183],{"className":1179},[427],[415,1181],{"className":1182,"style":488},[431],[415,1184,492],{"className":1185},[436,437]," pointers.",[403,1188,1190],{"id":1189},"arrays-and-dynamic-arrays","Arrays and dynamic arrays",[381,1192,1193,1194,1197,1198,1213,1214,1238,1239,1254],{},"A fixed-size ",[394,1195,1196],{},"array"," is the contiguous structure in its purest form: allocate\n",[415,1199,1201],{"className":1200},[418],[415,1202,1204],{"className":1203,"ariaHidden":423},[422],[415,1205,1207,1210],{"className":1206},[427],[415,1208],{"className":1209,"style":432},[431],[415,1211,438],{"className":1212},[436,437]," slots up front, index any of them in ",[415,1215,1217],{"className":1216},[418],[415,1218,1220],{"className":1219,"ariaHidden":423},[422],[415,1221,1223,1226,1229,1232,1235],{"className":1222},[427],[415,1224],{"className":1225,"style":616},[431],[415,1227,621],{"className":1228,"style":620},[436,437],[415,1230,626],{"className":1231},[625],[415,1233,511],{"className":1234},[436],[415,1236,634],{"className":1237},[633],". Its limitation is exactly that\n",[415,1240,1242],{"className":1241},[418],[415,1243,1245],{"className":1244,"ariaHidden":423},[422],[415,1246,1248,1251],{"className":1247},[427],[415,1249],{"className":1250,"style":432},[431],[415,1252,438],{"className":1253},[436,437]," is fixed at allocation. Real programs rarely know the final size in advance,\nso we want a structure that grows.",[381,1256,409,1257,1260,1261,1265,1266,1269,1270,1273,1274,1277,1278,1296,1297,1300,1301,1304,1305,1308,1309,1312],{},[394,1258,1259],{},"dynamic array"," (C++ ",[1262,1263,1264],"code",{},"vector",", Python ",[1262,1267,1268],{},"list",", Java ",[1262,1271,1272],{},"ArrayList",") keeps a\ncontiguous backing block of some ",[394,1275,1276],{},"capacity"," ",[415,1279,1281],{"className":1280},[418],[415,1282,1284],{"className":1283,"ariaHidden":423},[422],[415,1285,1287,1291],{"className":1286},[427],[415,1288],{"className":1289,"style":1290},[431],"height:0.7719em;vertical-align:-0.136em;",[415,1292,1295],{"className":1293},[1294],"mrel","≥"," the current ",[394,1298,1299],{},"size",", and\nappends into the spare room. When the block fills, it allocates a ",[700,1302,1303],{},"larger"," block,\ncopies the elements over, and frees the old one. The design decision that matters is\n",[700,1306,1307],{},"how much"," larger, and the answer is to ",[394,1310,1311],{},"double"," the capacity.",[1314,1315,1319],"pre",{"className":1316,"code":1317,"language":1318,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Append}(A, x)$ — push $x$, doubling the backing block on overflow\nif $size(A) = capacity(A)$ then\n  $cap' \\gets \\max(1, 2 \\cdot capacity(A))$\n  allocate new block $B$ of capacity $cap'$\n  copy $A[0\\,..\\,size(A)-1]$ into $B$ \u002F\u002F the $O(n)$ resize\n  free old block; $store(A) \\gets B$; $capacity(A) \\gets cap'$\n$A[size(A)] \\gets x$\n$size(A) \\gets size(A) + 1$\n","algorithm",[1262,1320,1321,1327,1332,1337,1342,1347,1352,1357],{"__ignoreMap":376},[415,1322,1324],{"class":1323,"line":6},"line",[415,1325,1326],{},"caption: $\\textsc{Append}(A, x)$ — push $x$, doubling the backing block on overflow\n",[415,1328,1329],{"class":1323,"line":18},[415,1330,1331],{},"if $size(A) = capacity(A)$ then\n",[415,1333,1334],{"class":1323,"line":24},[415,1335,1336],{},"  $cap' \\gets \\max(1, 2 \\cdot capacity(A))$\n",[415,1338,1339],{"class":1323,"line":73},[415,1340,1341],{},"  allocate new block $B$ of capacity $cap'$\n",[415,1343,1344],{"class":1323,"line":102},[415,1345,1346],{},"  copy $A[0\\,..\\,size(A)-1]$ into $B$ \u002F\u002F the $O(n)$ resize\n",[415,1348,1349],{"class":1323,"line":108},[415,1350,1351],{},"  free old block; $store(A) \\gets B$; $capacity(A) \\gets cap'$\n",[415,1353,1354],{"class":1323,"line":116},[415,1355,1356],{},"$A[size(A)] \\gets x$\n",[415,1358,1359],{"class":1323,"line":196},[415,1360,1361],{},"$size(A) \\gets size(A) + 1$\n",[381,1363,1364,1365,1389,1390,1414,1415,1439,1440,1443,1444,1468],{},"A single append is usually ",[415,1366,1368],{"className":1367},[418],[415,1369,1371],{"className":1370,"ariaHidden":423},[422],[415,1372,1374,1377,1380,1383,1386],{"className":1373},[427],[415,1375],{"className":1376,"style":616},[431],[415,1378,621],{"className":1379,"style":620},[436,437],[415,1381,626],{"className":1382},[625],[415,1384,511],{"className":1385},[436],[415,1387,634],{"className":1388},[633],", writing into spare room and bumping the size, but\nthe appends that trigger a resize cost ",[415,1391,1393],{"className":1392},[418],[415,1394,1396],{"className":1395,"ariaHidden":423},[422],[415,1397,1399,1402,1405,1408,1411],{"className":1398},[427],[415,1400],{"className":1401,"style":616},[431],[415,1403,774],{"className":1404},[436],[415,1406,626],{"className":1407},[625],[415,1409,438],{"className":1410},[436,437],[415,1412,634],{"className":1413},[633]," because they copy the whole\narray. The worst case of one operation is therefore ",[415,1416,1418],{"className":1417},[418],[415,1419,1421],{"className":1420,"ariaHidden":423},[422],[415,1422,1424,1427,1430,1433,1436],{"className":1423},[427],[415,1425],{"className":1426,"style":616},[431],[415,1428,621],{"className":1429,"style":620},[436,437],[415,1431,626],{"className":1432},[625],[415,1434,438],{"className":1435},[436,437],[415,1437,634],{"className":1438},[633],". Yet the ",[700,1441,1442],{},"average","\ncost over a sequence of appends is ",[415,1445,1447],{"className":1446},[418],[415,1448,1450],{"className":1449,"ariaHidden":423},[422],[415,1451,1453,1456,1459,1462,1465],{"className":1452},[427],[415,1454],{"className":1455,"style":616},[431],[415,1457,621],{"className":1458,"style":620},[436,437],[415,1460,626],{"className":1461},[625],[415,1463,511],{"className":1464},[436],[415,1466,634],{"className":1467},[633],", and this is worth proving.",[835,1470,1472,1723],{"className":1471},[838,839],[841,1473,1477],{"xmlns":843,"width":1474,"height":1475,"viewBox":1476},"311.566","133.901","-75 -75 233.675 100.426",[848,1478,1479,1494,1497,1503,1506,1513,1516,1523,1526,1533,1561,1568,1580,1591,1602,1613,1626,1629,1648,1655,1664,1672,1680,1688],{"stroke":850,"style":851},[848,1480,1481,1488],{"stroke":854,"fontFamily":855,"fontSize":856},[848,1482,1484],{"transform":1483},"translate(-43.159 2.25)",[861,1485],{"d":1486,"fill":850,"stroke":850,"className":1487,"style":866},"M-18.852-62.596Q-18.852-63.163-18.579-63.651Q-18.307-64.139-17.837-64.431Q-17.366-64.723-16.799-64.723Q-16.378-64.723-16.002-64.554Q-15.626-64.385-15.349-64.093Q-15.072-63.800-14.914-63.405Q-14.756-63.009-14.756-62.596Q-14.756-62.047-15.035-61.585Q-15.314-61.124-15.782-60.856Q-16.250-60.588-16.799-60.588Q-17.353-60.588-17.823-60.856Q-18.294-61.124-18.573-61.585Q-18.852-62.047-18.852-62.596M-16.799-60.878Q-16.303-60.878-16.026-61.139Q-15.749-61.401-15.657-61.805Q-15.565-62.210-15.565-62.706Q-15.565-63.181-15.663-63.570Q-15.762-63.959-16.035-64.209Q-16.307-64.460-16.799-64.460Q-17.511-64.460-17.775-63.965Q-18.039-63.471-18.039-62.706Q-18.039-61.906-17.784-61.392Q-17.529-60.878-16.799-60.878M-12.124-60.689L-14.185-60.689L-14.185-61.005Q-13.877-61.005-13.686-61.058Q-13.495-61.111-13.495-61.300L-13.495-66.015Q-13.495-66.257-13.565-66.365Q-13.635-66.472-13.769-66.496Q-13.903-66.521-14.185-66.521L-14.185-66.837L-12.818-66.934L-12.818-61.300Q-12.818-61.111-12.625-61.058Q-12.431-61.005-12.124-61.005L-12.124-60.689M-9.676-60.588Q-10.221-60.588-10.665-60.871Q-11.109-61.155-11.363-61.627Q-11.618-62.100-11.618-62.631Q-11.618-63.185-11.341-63.651Q-11.065-64.117-10.592-64.391Q-10.120-64.666-9.575-64.666Q-9.241-64.666-8.938-64.534Q-8.634-64.402-8.415-64.165L-8.415-66.015Q-8.415-66.257-8.485-66.365Q-8.555-66.472-8.689-66.496Q-8.823-66.521-9.109-66.521L-9.109-66.837L-7.742-66.934L-7.742-61.506Q-7.742-61.269-7.672-61.161Q-7.602-61.054-7.465-61.030Q-7.329-61.005-7.048-61.005L-7.048-60.689L-8.441-60.588L-8.441-61.137Q-8.692-60.874-9.010-60.731Q-9.329-60.588-9.676-60.588M-9.614-60.852Q-9.245-60.852-8.935-61.063Q-8.626-61.273-8.441-61.616L-8.441-63.748Q-8.612-64.051-8.894-64.229Q-9.175-64.407-9.513-64.407Q-10.203-64.407-10.507-63.886Q-10.810-63.365-10.810-62.623Q-10.810-61.902-10.539-61.377Q-10.269-60.852-9.614-60.852M-5.888-59.085Q-5.888-59.125-5.853-59.160Q-5.528-59.472-5.347-59.878Q-5.167-60.285-5.167-60.733L-5.167-60.816Q-5.308-60.689-5.510-60.689Q-5.655-60.689-5.769-60.755Q-5.883-60.821-5.949-60.933Q-6.015-61.045-6.015-61.194Q-6.015-61.414-5.875-61.555Q-5.734-61.695-5.510-61.695Q-5.189-61.695-5.049-61.397Q-4.908-61.098-4.908-60.733Q-4.908-60.223-5.112-59.768Q-5.317-59.314-5.681-58.962Q-5.716-58.944-5.743-58.944Q-5.800-58.944-5.844-58.988Q-5.888-59.032-5.888-59.085",[865],[848,1489,1490],{"transform":1483},[861,1491],{"d":1492,"fill":850,"stroke":850,"className":1493,"style":866},"M1.415-60.689L-0.817-60.689L-0.817-61.005Q-0.510-61.005-0.319-61.058Q-0.127-61.111-0.127-61.300L-0.127-64.253L-0.817-64.253L-0.817-64.569L-0.127-64.569L-0.127-65.637Q-0.127-66.020 0.086-66.343Q0.299-66.666 0.653-66.850Q1.006-67.035 1.384-67.035Q1.705-67.035 1.956-66.857Q2.206-66.679 2.206-66.367Q2.206-66.191 2.087-66.072Q1.969-65.954 1.793-65.954Q1.613-65.954 1.490-66.072Q1.367-66.191 1.367-66.367Q1.367-66.608 1.582-66.736Q1.477-66.771 1.340-66.771Q1.072-66.771 0.890-66.589Q0.708-66.406 0.615-66.136Q0.523-65.866 0.523-65.602L0.523-64.569L1.573-64.569L1.573-64.253L0.549-64.253L0.549-61.300Q0.549-61.111 0.806-61.058Q1.063-61.005 1.415-61.005L1.415-60.689M2.689-61.761L2.689-63.748Q2.689-63.989 2.619-64.097Q2.549-64.205 2.415-64.229Q2.281-64.253 2-64.253L2-64.569L3.393-64.666L3.393-61.796Q3.393-61.418 3.439-61.232Q3.485-61.045 3.656-60.948Q3.828-60.852 4.184-60.852Q4.518-60.852 4.757-61.043Q4.997-61.234 5.122-61.537Q5.247-61.840 5.247-62.157L5.247-63.748Q5.247-63.989 5.177-64.097Q5.106-64.205 4.972-64.229Q4.838-64.253 4.553-64.253L4.553-64.569L5.950-64.666L5.950-61.506Q5.950-61.269 6.021-61.161Q6.091-61.054 6.225-61.030Q6.359-61.005 6.640-61.005L6.640-60.689L5.273-60.588L5.273-61.309Q5.106-60.983 4.801-60.786Q4.496-60.588 4.140-60.588Q3.480-60.588 3.085-60.858Q2.689-61.128 2.689-61.761M9.207-60.689L7.146-60.689L7.146-61.005Q7.453-61.005 7.644-61.058Q7.835-61.111 7.835-61.300L7.835-66.015Q7.835-66.257 7.765-66.365Q7.695-66.472 7.561-66.496Q7.427-66.521 7.146-66.521L7.146-66.837L8.512-66.934L8.512-61.300Q8.512-61.111 8.706-61.058Q8.899-61.005 9.207-61.005L9.207-60.689M11.773-60.689L9.712-60.689L9.712-61.005Q10.020-61.005 10.211-61.058Q10.402-61.111 10.402-61.300L10.402-66.015Q10.402-66.257 10.332-66.365Q10.261-66.472 10.127-66.496Q9.993-66.521 9.712-66.521L9.712-66.837L11.079-66.934L11.079-61.300Q11.079-61.111 11.272-61.058Q11.465-61.005 11.773-61.005",[865],[861,1495],{"fill":854,"d":1496},"M-30.493-49.308H-7.73V-72.07h-22.763Z",[848,1498,1499],{"transform":878},[861,1500],{"d":1501,"fill":850,"stroke":850,"className":1502,"style":866},"M-18.048-61.076Q-17.801-60.777-17.195-60.777Q-16.914-60.777-16.674-60.915Q-16.435-61.054-16.257-61.276Q-16.079-61.498-15.969-61.761Q-15.736-62.337-15.736-63.453Q-15.903-63.088-16.208-62.864Q-16.514-62.640-16.896-62.640Q-17.432-62.640-17.848-62.919Q-18.263-63.198-18.494-63.664Q-18.724-64.130-18.724-64.657Q-18.724-65.070-18.577-65.439Q-18.430-65.809-18.166-66.085Q-17.903-66.362-17.533-66.523Q-17.164-66.683-16.751-66.683Q-16.193-66.683-15.819-66.391Q-15.446-66.099-15.242-65.635Q-15.037-65.171-14.958-64.655Q-14.879-64.139-14.879-63.607Q-14.879-62.891-15.147-62.168Q-15.415-61.445-15.938-60.968Q-16.461-60.491-17.186-60.491Q-17.736-60.491-18.113-60.740Q-18.491-60.988-18.491-61.506Q-18.491-61.625-18.434-61.728Q-18.377-61.832-18.276-61.891Q-18.175-61.950-18.048-61.950Q-17.863-61.950-17.740-61.818Q-17.617-61.687-17.617-61.506Q-17.617-61.331-17.744-61.203Q-17.872-61.076-18.048-61.076M-16.852-62.904Q-16.483-62.904-16.235-63.146Q-15.986-63.387-15.870-63.745Q-15.754-64.104-15.754-64.477Q-15.754-64.587-15.762-64.640Q-15.758-64.653-15.756-64.664Q-15.754-64.675-15.754-64.692Q-15.754-65.347-15.969-65.886Q-16.184-66.424-16.751-66.424Q-17.111-66.424-17.340-66.274Q-17.569-66.125-17.685-65.868Q-17.801-65.611-17.834-65.330Q-17.867-65.048-17.867-64.675L-17.867-64.640Q-17.867-64.314-17.841-64.027Q-17.815-63.739-17.716-63.480Q-17.617-63.220-17.406-63.062Q-17.195-62.904-16.852-62.904",[865],[861,1504],{"fill":854,"d":1505},"M-7.33-49.308h22.762V-72.07H-7.33Z",[848,1507,1509],{"transform":1508},"translate(18.537 2.9)",[861,1510],{"d":1511,"fill":850,"stroke":850,"className":1512,"style":866},"M-15.204-60.689L-18.236-60.689L-18.236-61.005Q-17.085-61.005-17.085-61.300L-17.085-66.024Q-17.573-65.791-18.294-65.791L-18.294-66.107Q-17.164-66.107-16.602-66.683L-16.457-66.683Q-16.422-66.683-16.389-66.650Q-16.356-66.617-16.356-66.582L-16.356-61.300Q-16.356-61.005-15.204-61.005L-15.204-60.689M-12.181-60.491Q-12.915-60.491-13.345-60.972Q-13.776-61.454-13.941-62.146Q-14.106-62.838-14.106-63.585Q-14.106-64.314-13.813-65.037Q-13.521-65.760-12.967-66.222Q-12.414-66.683-11.667-66.683Q-11.170-66.683-10.834-66.417Q-10.498-66.151-10.498-65.668Q-10.498-65.488-10.625-65.360Q-10.753-65.233-10.928-65.233Q-11.109-65.233-11.238-65.358Q-11.368-65.483-11.368-65.668Q-11.368-65.782-11.311-65.886Q-11.254-65.989-11.153-66.048Q-11.051-66.107-10.928-66.107Q-10.924-66.107-10.920-66.105Q-10.915-66.103-10.911-66.099Q-11.025-66.266-11.234-66.345Q-11.443-66.424-11.667-66.424Q-12.111-66.424-12.469-66.123Q-12.827-65.822-13.016-65.369Q-13.249-64.763-13.249-63.730Q-13.077-64.095-12.776-64.323Q-12.475-64.552-12.089-64.552Q-11.684-64.552-11.339-64.385Q-10.994-64.218-10.757-63.937Q-10.520-63.655-10.390-63.293Q-10.260-62.930-10.260-62.526Q-10.260-61.981-10.504-61.515Q-10.748-61.049-11.188-60.770Q-11.627-60.491-12.181-60.491M-12.181-60.777Q-11.719-60.777-11.484-61.034Q-11.249-61.291-11.183-61.665Q-11.117-62.038-11.117-62.508L-11.117-62.543Q-11.117-63.031-11.174-63.396Q-11.232-63.761-11.460-64.024Q-11.689-64.288-12.132-64.288Q-12.502-64.288-12.752-64.044Q-13.003-63.800-13.117-63.436Q-13.231-63.071-13.231-62.724Q-13.231-62.605-13.222-62.543Q-13.222-62.526-13.225-62.515Q-13.227-62.504-13.231-62.491Q-13.231-61.840-12.994-61.309Q-12.757-60.777-12.181-60.777",[865],[861,1514],{"fill":854,"d":1515},"M15.832-49.308h22.762V-72.07H15.832Z",[848,1517,1519],{"transform":1518},"translate(44.012 2.9)",[861,1520],{"d":1521,"fill":850,"stroke":850,"className":1522,"style":866},"M-16.413-62.166L-18.852-62.166L-18.852-62.482L-16.026-66.630Q-15.982-66.683-15.916-66.683L-15.762-66.683Q-15.723-66.683-15.690-66.650Q-15.657-66.617-15.657-66.573L-15.657-62.482L-14.756-62.482L-14.756-62.166L-15.657-62.166L-15.657-61.300Q-15.657-61.005-14.756-61.005L-14.756-60.689L-17.309-60.689L-17.309-61.005Q-16.949-61.005-16.681-61.060Q-16.413-61.115-16.413-61.300L-16.413-62.166M-16.356-65.655L-18.518-62.482L-16.356-62.482",[865],[861,1524],{"fill":854,"d":1525},"M38.994-49.308h22.762V-72.07H38.994Z",[848,1527,1529],{"transform":1528},"translate(67.174 2.9)",[861,1530],{"d":1531,"fill":850,"stroke":850,"className":1532,"style":866},"M-17.489-60.931Q-17.489-61.568-17.333-62.214Q-17.177-62.860-16.885-63.466Q-16.593-64.073-16.184-64.622L-15.367-65.730L-16.395-65.730Q-18.039-65.730-18.087-65.686Q-18.193-65.558-18.311-64.855L-18.597-64.855L-18.302-66.771L-18.012-66.771L-18.012-66.745Q-18.012-66.582-17.448-66.534Q-16.883-66.485-16.338-66.485L-14.620-66.485L-14.620-66.279Q-14.620-66.261-14.622-66.252Q-14.624-66.244-14.629-66.235L-15.916-64.486Q-16.167-64.134-16.314-63.708Q-16.461-63.282-16.527-62.818Q-16.593-62.355-16.606-61.944Q-16.619-61.533-16.619-60.931Q-16.619-60.751-16.745-60.621Q-16.870-60.491-17.050-60.491Q-17.169-60.491-17.272-60.548Q-17.375-60.606-17.432-60.709Q-17.489-60.812-17.489-60.931",[865],[848,1534,1536,1543,1549,1555],{"stroke":854,"fontFamily":1535,"fontSize":913},"cmr7",[848,1537,1539],{"transform":1538},"translate(90.291 1.75)",[861,1540],{"d":1541,"fill":850,"stroke":850,"className":1542,"style":910},"M-18.797-62.200Q-18.797-62.528-18.662-62.829Q-18.527-63.129-18.291-63.350Q-18.055-63.570-17.751-63.690Q-17.446-63.810-17.122-63.810Q-16.616-63.810-16.267-63.707Q-15.919-63.605-15.919-63.229Q-15.919-63.082-16.016-62.981Q-16.113-62.880-16.260-62.880Q-16.414-62.880-16.513-62.979Q-16.612-63.078-16.612-63.229Q-16.612-63.417-16.472-63.509Q-16.674-63.560-17.115-63.560Q-17.470-63.560-17.699-63.364Q-17.928-63.167-18.029-62.858Q-18.130-62.548-18.130-62.200Q-18.130-61.851-18.004-61.545Q-17.877-61.239-17.622-61.055Q-17.368-60.870-17.012-60.870Q-16.790-60.870-16.606-60.954Q-16.421-61.038-16.286-61.193Q-16.151-61.349-16.093-61.557Q-16.079-61.612-16.025-61.612L-15.912-61.612Q-15.881-61.612-15.859-61.588Q-15.837-61.564-15.837-61.530L-15.837-61.509Q-15.922-61.222-16.110-61.024Q-16.298-60.826-16.563-60.723Q-16.828-60.621-17.122-60.621Q-17.552-60.621-17.940-60.827Q-18.328-61.034-18.562-61.397Q-18.797-61.759-18.797-62.200M-15.191-61.417Q-15.191-61.749-14.967-61.976Q-14.743-62.203-14.399-62.331Q-14.056-62.460-13.683-62.512Q-13.311-62.565-13.007-62.565L-13.007-62.818Q-13.007-63.023-13.114-63.203Q-13.222-63.382-13.403-63.485Q-13.584-63.587-13.793-63.587Q-14.199-63.587-14.435-63.495Q-14.346-63.458-14.300-63.374Q-14.254-63.290-14.254-63.188Q-14.254-63.092-14.300-63.013Q-14.346-62.935-14.427-62.890Q-14.507-62.846-14.596-62.846Q-14.746-62.846-14.847-62.943Q-14.948-63.041-14.948-63.188Q-14.948-63.810-13.793-63.810Q-13.581-63.810-13.331-63.746Q-13.082-63.683-12.880-63.564Q-12.678-63.444-12.552-63.259Q-12.425-63.075-12.425-62.832L-12.425-61.256Q-12.425-61.140-12.364-61.044Q-12.302-60.949-12.190-60.949Q-12.080-60.949-12.015-61.043Q-11.950-61.137-11.950-61.256L-11.950-61.704L-11.684-61.704L-11.684-61.256Q-11.684-60.986-11.911-60.821Q-12.138-60.655-12.419-60.655Q-12.627-60.655-12.764-60.809Q-12.901-60.962-12.924-61.178Q-13.071-60.911-13.353-60.766Q-13.635-60.621-13.960-60.621Q-14.237-60.621-14.521-60.696Q-14.804-60.771-14.997-60.950Q-15.191-61.130-15.191-61.417M-14.575-61.417Q-14.575-61.243-14.475-61.113Q-14.374-60.983-14.218-60.913Q-14.063-60.843-13.899-60.843Q-13.680-60.843-13.471-60.940Q-13.263-61.038-13.135-61.219Q-13.007-61.400-13.007-61.626L-13.007-62.354Q-13.331-62.354-13.697-62.263Q-14.063-62.172-14.319-61.960Q-14.575-61.749-14.575-61.417M-9.623-59.332L-11.253-59.332L-11.253-59.612Q-11.024-59.612-10.875-59.647Q-10.727-59.681-10.727-59.821L-10.727-63.167Q-10.727-63.338-10.863-63.379Q-11-63.420-11.253-63.420L-11.253-63.700L-10.173-63.775L-10.173-63.369Q-9.951-63.570-9.664-63.673Q-9.377-63.775-9.069-63.775Q-8.642-63.775-8.278-63.562Q-7.914-63.348-7.700-62.984Q-7.486-62.620-7.486-62.200Q-7.486-61.755-7.726-61.391Q-7.965-61.027-8.358-60.824Q-8.751-60.621-9.195-60.621Q-9.462-60.621-9.710-60.721Q-9.958-60.822-10.146-61.003L-10.146-59.821Q-10.146-59.684-9.997-59.648Q-9.848-59.612-9.623-59.612L-9.623-59.332M-10.146-63.020L-10.146-61.410Q-10.012-61.157-9.770-61Q-9.527-60.843-9.250-60.843Q-8.922-60.843-8.669-61.044Q-8.416-61.246-8.283-61.564Q-8.150-61.882-8.150-62.200Q-8.150-62.429-8.215-62.658Q-8.279-62.887-8.408-63.085Q-8.536-63.283-8.731-63.403Q-8.925-63.522-9.158-63.522Q-9.452-63.522-9.720-63.393Q-9.988-63.263-10.146-63.020M-6.793-61.417Q-6.793-61.749-6.569-61.976Q-6.345-62.203-6.001-62.331Q-5.658-62.460-5.285-62.512Q-4.913-62.565-4.609-62.565L-4.609-62.818Q-4.609-63.023-4.716-63.203Q-4.824-63.382-5.005-63.485Q-5.186-63.587-5.395-63.587Q-5.801-63.587-6.037-63.495Q-5.948-63.458-5.902-63.374Q-5.856-63.290-5.856-63.188Q-5.856-63.092-5.902-63.013Q-5.948-62.935-6.029-62.890Q-6.109-62.846-6.198-62.846Q-6.348-62.846-6.449-62.943Q-6.550-63.041-6.550-63.188Q-6.550-63.810-5.395-63.810Q-5.183-63.810-4.933-63.746Q-4.684-63.683-4.482-63.564Q-4.280-63.444-4.154-63.259Q-4.028-63.075-4.028-62.832L-4.028-61.256Q-4.028-61.140-3.966-61.044Q-3.904-60.949-3.792-60.949Q-3.682-60.949-3.617-61.043Q-3.552-61.137-3.552-61.256L-3.552-61.704L-3.286-61.704L-3.286-61.256Q-3.286-60.986-3.513-60.821Q-3.740-60.655-4.021-60.655Q-4.229-60.655-4.366-60.809Q-4.503-60.962-4.527-61.178Q-4.674-60.911-4.955-60.766Q-5.237-60.621-5.562-60.621Q-5.839-60.621-6.123-60.696Q-6.406-60.771-6.600-60.950Q-6.793-61.130-6.793-61.417M-6.177-61.417Q-6.177-61.243-6.077-61.113Q-5.976-60.983-5.820-60.913Q-5.665-60.843-5.501-60.843Q-5.282-60.843-5.073-60.940Q-4.865-61.038-4.737-61.219Q-4.609-61.400-4.609-61.626L-4.609-62.354Q-4.933-62.354-5.299-62.263Q-5.665-62.172-5.921-61.960Q-6.177-61.749-6.177-61.417M-2.869-62.200Q-2.869-62.528-2.734-62.829Q-2.599-63.129-2.363-63.350Q-2.127-63.570-1.823-63.690Q-1.519-63.810-1.194-63.810Q-0.688-63.810-0.340-63.707Q0.009-63.605 0.009-63.229Q0.009-63.082-0.088-62.981Q-0.186-62.880-0.333-62.880Q-0.486-62.880-0.586-62.979Q-0.685-63.078-0.685-63.229Q-0.685-63.417-0.545-63.509Q-0.746-63.560-1.187-63.560Q-1.543-63.560-1.772-63.364Q-2.001-63.167-2.101-62.858Q-2.202-62.548-2.202-62.200Q-2.202-61.851-2.076-61.545Q-1.949-61.239-1.695-61.055Q-1.440-60.870-1.085-60.870Q-0.862-60.870-0.678-60.954Q-0.493-61.038-0.358-61.193Q-0.223-61.349-0.165-61.557Q-0.152-61.612-0.097-61.612L0.016-61.612Q0.047-61.612 0.069-61.588Q0.091-61.564 0.091-61.530L0.091-61.509Q0.006-61.222-0.182-61.024Q-0.370-60.826-0.635-60.723Q-0.900-60.621-1.194-60.621Q-1.625-60.621-2.013-60.827Q-2.401-61.034-2.635-61.397Q-2.869-61.759-2.869-62.200M2.296-60.689L0.744-60.689L0.744-60.969Q0.970-60.969 1.118-61.003Q1.267-61.038 1.267-61.178L1.267-63.027Q1.267-63.215 1.219-63.299Q1.171-63.382 1.074-63.401Q0.976-63.420 0.764-63.420L0.764-63.700L1.821-63.775L1.821-61.178Q1.821-61.038 1.952-61.003Q2.084-60.969 2.296-60.969L2.296-60.689M1.024-64.996Q1.024-65.167 1.147-65.286Q1.270-65.406 1.441-65.406Q1.609-65.406 1.732-65.286Q1.855-65.167 1.855-64.996Q1.855-64.821 1.732-64.698Q1.609-64.575 1.441-64.575Q1.270-64.575 1.147-64.698Q1.024-64.821 1.024-64.996M3.468-61.530L3.468-63.427L2.829-63.427L2.829-63.649Q3.147-63.649 3.364-63.859Q3.581-64.069 3.682-64.379Q3.783-64.688 3.783-64.996L4.049-64.996L4.049-63.707L5.126-63.707L5.126-63.427L4.049-63.427L4.049-61.543Q4.049-61.267 4.153-61.068Q4.258-60.870 4.517-60.870Q4.675-60.870 4.781-60.974Q4.887-61.079 4.936-61.232Q4.986-61.386 4.986-61.543L4.986-61.957L5.252-61.957L5.252-61.530Q5.252-61.304 5.153-61.094Q5.054-60.884 4.869-60.752Q4.685-60.621 4.456-60.621Q4.018-60.621 3.743-60.858Q3.468-61.096 3.468-61.530",[865],[848,1544,1545],{"transform":1538},[861,1546],{"d":1547,"fill":850,"stroke":850,"className":1548,"style":910},"M6.211-59.554Q6.341-59.486 6.478-59.486Q6.649-59.486 6.799-59.575Q6.950-59.664 7.061-59.809Q7.172-59.954 7.250-60.122L7.514-60.689L6.345-63.215Q6.270-63.362 6.140-63.394Q6.010-63.427 5.777-63.427L5.777-63.707L7.298-63.707L7.298-63.427Q6.950-63.427 6.950-63.280Q6.953-63.259 6.955-63.242Q6.957-63.225 6.957-63.215L7.814-61.356L8.587-63.027Q8.621-63.095 8.621-63.174Q8.621-63.287 8.537-63.357Q8.454-63.427 8.341-63.427L8.341-63.707L9.537-63.707L9.537-63.427Q9.318-63.427 9.146-63.323Q8.973-63.218 8.881-63.027L7.544-60.122Q7.374-59.752 7.104-59.506Q6.833-59.260 6.478-59.260Q6.208-59.260 5.989-59.426Q5.770-59.592 5.770-59.855Q5.770-59.992 5.863-60.081Q5.955-60.169 6.095-60.169Q6.232-60.169 6.321-60.081Q6.410-59.992 6.410-59.855Q6.410-59.752 6.357-59.674Q6.304-59.595 6.211-59.554",[865],[848,1550,1551],{"transform":1538},[861,1552],{"d":1553,"fill":850,"stroke":850,"className":1554,"style":910},"M14.775-61.837L12.731-61.837L12.731-62.118L15.062-65.290Q15.097-65.337 15.162-65.337L15.298-65.337Q15.343-65.337 15.370-65.310Q15.397-65.283 15.397-65.238L15.397-62.118L16.160-62.118L16.160-61.837L15.397-61.837L15.397-61.178Q15.397-60.969 16.153-60.969L16.153-60.689L14.020-60.689L14.020-60.969Q14.775-60.969 14.775-61.178L14.775-61.837M14.823-64.562L13.032-62.118L14.823-62.118L14.823-64.562M17.154-61.109Q17.154-61.277 17.277-61.400Q17.400-61.523 17.575-61.523Q17.742-61.523 17.865-61.400Q17.988-61.277 17.988-61.109Q17.988-60.935 17.865-60.812Q17.742-60.689 17.575-60.689Q17.400-60.689 17.277-60.812Q17.154-60.935 17.154-61.109M17.154-63.293Q17.154-63.461 17.277-63.584Q17.400-63.707 17.575-63.707Q17.742-63.707 17.865-63.584Q17.988-63.461 17.988-63.293Q17.988-63.119 17.865-62.996Q17.742-62.873 17.575-62.873Q17.400-62.873 17.277-62.996Q17.154-63.119 17.154-63.293",[865],[848,1556,1557],{"transform":1538},[861,1558],{"d":1559,"fill":850,"stroke":850,"className":1560,"style":910},"M24.376-60.689L22.643-60.689L22.643-60.969Q22.869-60.969 23.018-61.003Q23.166-61.038 23.166-61.178L23.166-63.427L22.578-63.427L22.578-63.707L23.166-63.707L23.166-64.524Q23.166-64.842 23.344-65.090Q23.522-65.337 23.812-65.478Q24.103-65.618 24.414-65.618Q24.670-65.618 24.874-65.476Q25.077-65.334 25.077-65.091Q25.077-64.955 24.978-64.856Q24.879-64.756 24.742-64.756Q24.605-64.756 24.506-64.856Q24.407-64.955 24.407-65.091Q24.407-65.272 24.547-65.365Q24.469-65.392 24.369-65.392Q24.161-65.392 24.007-65.259Q23.853-65.126 23.773-64.922Q23.693-64.719 23.693-64.510L23.693-63.707L24.581-63.707L24.581-63.427L23.720-63.427L23.720-61.178Q23.720-60.969 24.376-60.969L24.376-60.689M25.631-61.523L25.631-63.027Q25.631-63.297 25.523-63.358Q25.415-63.420 25.104-63.420L25.104-63.700L26.212-63.775L26.212-61.543L26.212-61.523Q26.212-61.243 26.263-61.099Q26.314-60.956 26.456-60.899Q26.598-60.843 26.885-60.843Q27.138-60.843 27.343-60.983Q27.548-61.123 27.664-61.349Q27.781-61.574 27.781-61.824L27.781-63.027Q27.781-63.297 27.673-63.358Q27.565-63.420 27.254-63.420L27.254-63.700L28.362-63.775L28.362-61.362Q28.362-61.171 28.415-61.089Q28.468-61.007 28.568-60.988Q28.669-60.969 28.885-60.969L28.885-60.689L27.808-60.621L27.808-61.185Q27.699-61.003 27.553-60.880Q27.408-60.757 27.222-60.689Q27.035-60.621 26.834-60.621Q25.631-60.621 25.631-61.523M31.140-60.689L29.537-60.689L29.537-60.969Q29.763-60.969 29.912-61.003Q30.060-61.038 30.060-61.178L30.060-64.797Q30.060-65.067 29.953-65.129Q29.845-65.190 29.537-65.190L29.537-65.471L30.614-65.546L30.614-61.178Q30.614-61.041 30.764-61.005Q30.915-60.969 31.140-60.969L31.140-60.689M33.403-60.689L31.800-60.689L31.800-60.969Q32.026-60.969 32.174-61.003Q32.323-61.038 32.323-61.178L32.323-64.797Q32.323-65.067 32.215-65.129Q32.108-65.190 31.800-65.190L31.800-65.471L32.877-65.546L32.877-61.178Q32.877-61.041 33.027-61.005Q33.178-60.969 33.403-60.969",[865],[848,1562,1564],{"transform":1563},"translate(-28.003 58.843)",[861,1565],{"d":1566,"fill":850,"stroke":850,"className":1567,"style":866},"M-16.725-60.689L-18.812-60.689L-18.812-61.005Q-18.505-61.005-18.313-61.058Q-18.122-61.111-18.122-61.300L-18.122-63.748Q-18.122-63.989-18.193-64.097Q-18.263-64.205-18.397-64.229Q-18.531-64.253-18.812-64.253L-18.812-64.569L-17.472-64.666L-17.472-63.831Q-17.274-64.213-16.920-64.440Q-16.567-64.666-16.140-64.666Q-14.861-64.666-14.861-63.453L-14.861-61.300Q-14.861-61.111-14.670-61.058Q-14.479-61.005-14.172-61.005L-14.172-60.689L-16.259-60.689L-16.259-61.005Q-15.947-61.005-15.756-61.058Q-15.565-61.111-15.565-61.300L-15.565-63.418Q-15.565-63.677-15.609-63.899Q-15.653-64.121-15.798-64.264Q-15.943-64.407-16.202-64.407Q-16.545-64.407-16.826-64.218Q-17.107-64.029-17.263-63.717Q-17.419-63.405-17.419-63.058L-17.419-61.300Q-17.419-61.111-17.226-61.058Q-17.032-61.005-16.725-61.005L-16.725-60.689M-11.662-60.588Q-12.220-60.588-12.693-60.871Q-13.165-61.155-13.440-61.632Q-13.715-62.108-13.715-62.662Q-13.715-63.058-13.572-63.433Q-13.429-63.809-13.172-64.097Q-12.915-64.385-12.557-64.554Q-12.198-64.723-11.794-64.723Q-11.249-64.723-10.878-64.486Q-10.507-64.249-10.320-63.831Q-10.133-63.414-10.133-62.877Q-10.133-62.825-10.157-62.787Q-10.181-62.750-10.230-62.750L-12.902-62.750L-12.902-62.671Q-12.902-61.924-12.590-61.401Q-12.278-60.878-11.579-60.878Q-11.174-60.878-10.854-61.135Q-10.533-61.392-10.410-61.796Q-10.392-61.876-10.309-61.876L-10.230-61.876Q-10.190-61.876-10.162-61.845Q-10.133-61.814-10.133-61.770L-10.133-61.735Q-10.238-61.392-10.460-61.133Q-10.682-60.874-10.996-60.731Q-11.311-60.588-11.662-60.588M-12.893-63.001L-10.779-63.001Q-10.779-63.269-10.832-63.515Q-10.884-63.761-11.005-63.983Q-11.126-64.205-11.324-64.332Q-11.522-64.460-11.794-64.460Q-12.137-64.460-12.390-64.235Q-12.642-64.011-12.767-63.673Q-12.893-63.335-12.893-63.001M-7.835-60.707L-9.026-63.954Q-9.100-64.152-9.245-64.202Q-9.390-64.253-9.680-64.253L-9.680-64.569L-7.799-64.569L-7.799-64.253Q-8.322-64.253-8.322-64.029Q-8.322-63.998-8.305-63.954L-7.439-61.572L-6.683-63.660L-6.793-63.954Q-6.868-64.152-7.015-64.202Q-7.162-64.253-7.448-64.253L-7.448-64.569L-5.659-64.569L-5.659-64.253Q-6.169-64.253-6.169-64.029Q-6.169-63.976-6.160-63.954L-5.242-61.454L-4.424-63.704Q-4.407-63.748-4.407-63.849Q-4.407-64.042-4.559-64.147Q-4.710-64.253-4.912-64.253L-4.912-64.569L-3.370-64.569L-3.370-64.253Q-3.638-64.253-3.833-64.104Q-4.029-63.954-4.117-63.704L-5.215-60.707Q-5.246-60.588-5.378-60.588L-5.440-60.588Q-5.558-60.588-5.602-60.707L-6.521-63.238L-7.448-60.707Q-7.492-60.588-7.611-60.588L-7.672-60.588Q-7.804-60.588-7.835-60.707",[865],[848,1569,1571,1574],{"fill":1570},"var(--tk-soft-accent)",[861,1572],{"d":1573},"M-30.493 7.598H-7.73v-22.763h-22.763Z",[848,1575,1577],{"transform":1576},"translate(-2.312 59.806)",[861,1578],{"d":1501,"fill":850,"stroke":850,"className":1579,"style":866},[865],[848,1581,1582,1585],{"fill":1570},[861,1583],{"d":1584},"M-7.33 7.598h22.762v-22.763H-7.33Z",[848,1586,1588],{"transform":1587},"translate(18.537 59.806)",[861,1589],{"d":1511,"fill":850,"stroke":850,"className":1590,"style":866},[865],[848,1592,1593,1596],{"fill":1570},[861,1594],{"d":1595},"M15.832 7.598h22.762v-22.763H15.832Z",[848,1597,1599],{"transform":1598},"translate(44.012 59.806)",[861,1600],{"d":1521,"fill":850,"stroke":850,"className":1601,"style":866},[865],[848,1603,1604,1607],{"fill":1570},[861,1605],{"d":1606},"M38.994 7.598h22.762v-22.763H38.994Z",[848,1608,1610],{"transform":1609},"translate(67.174 59.806)",[861,1611],{"d":1531,"fill":850,"stroke":850,"className":1612,"style":866},[865],[848,1614,1616,1619],{"stroke":986,"style":1615},"stroke-width:1.2",[861,1617],{"fill":854,"d":1618},"M62.556 7.598h22.762v-22.763H62.556Z",[848,1620,1622],{"transform":1621},"translate(90.427 58.843)",[861,1623],{"d":1624,"fill":850,"stroke":850,"className":1625,"style":866},"M-18.382-60.979Q-18.206-60.852-17.933-60.852Q-17.643-60.852-17.430-61.106Q-17.217-61.361-17.138-61.678L-16.734-63.291Q-16.646-63.668-16.646-63.857Q-16.646-64.082-16.773-64.244Q-16.901-64.407-17.120-64.407Q-17.538-64.407-17.870-64.057Q-18.201-63.708-18.320-63.255Q-18.338-63.172-18.408-63.172L-18.518-63.172Q-18.606-63.172-18.606-63.291Q-18.474-63.831-18.052-64.249Q-17.630-64.666-17.103-64.666Q-16.769-64.666-16.494-64.495Q-16.219-64.323-16.105-64.029Q-15.947-64.301-15.701-64.484Q-15.455-64.666-15.169-64.666Q-14.831-64.666-14.558-64.499Q-14.286-64.332-14.286-64.011Q-14.286-63.783-14.429-63.614Q-14.571-63.444-14.809-63.444Q-14.949-63.444-15.055-63.537Q-15.160-63.629-15.160-63.774Q-15.160-63.959-15.037-64.101Q-14.914-64.244-14.730-64.279Q-14.910-64.407-15.187-64.407Q-15.477-64.407-15.688-64.150Q-15.899-63.893-15.978-63.576L-16.382-61.968Q-16.474-61.607-16.474-61.410Q-16.474-61.177-16.345-61.014Q-16.215-60.852-15.986-60.852Q-15.701-60.852-15.453-61.021Q-15.204-61.190-15.031-61.462Q-14.857-61.735-14.791-62.003Q-14.782-62.034-14.758-62.058Q-14.734-62.082-14.699-62.082L-14.593-62.082Q-14.554-62.082-14.528-62.045Q-14.501-62.007-14.501-61.968Q-14.589-61.621-14.809-61.302Q-15.028-60.983-15.345-60.786Q-15.661-60.588-16.004-60.588Q-16.342-60.588-16.617-60.757Q-16.892-60.926-17.015-61.230Q-17.164-60.961-17.413-60.775Q-17.661-60.588-17.942-60.588Q-18.285-60.588-18.559-60.755Q-18.834-60.922-18.834-61.247Q-18.834-61.471-18.685-61.643Q-18.535-61.814-18.302-61.814Q-18.157-61.814-18.054-61.722Q-17.951-61.629-17.951-61.480Q-17.951-61.304-18.074-61.157Q-18.197-61.010-18.382-60.979",[865],[861,1627],{"fill":854,"d":1628},"M86.118 7.598h22.762v-22.763H86.118ZM109.28 7.598h22.763v-22.763H109.28ZM132.443 7.598h22.762v-22.763h-22.762Z",[848,1630,1631,1637,1642],{"stroke":854,"fontFamily":1535,"fontSize":913},[848,1632,1634],{"transform":1633},"translate(16.965 78.15)",[861,1635],{"d":1541,"fill":850,"stroke":850,"className":1636,"style":910},[865],[848,1638,1639],{"transform":1633},[861,1640],{"d":1547,"fill":850,"stroke":850,"className":1641,"style":910},[865],[848,1643,1644],{"transform":1633},[861,1645],{"d":1646,"fill":850,"stroke":850,"className":1647,"style":910},"M12.837-61.766Q12.837-62.207 13.140-62.528Q13.442-62.849 13.894-63.041L13.654-63.181Q13.384-63.341 13.218-63.599Q13.053-63.857 13.053-64.155Q13.053-64.507 13.258-64.779Q13.463-65.050 13.784-65.194Q14.105-65.337 14.447-65.337Q14.769-65.337 15.092-65.221Q15.415-65.105 15.626-64.864Q15.838-64.623 15.838-64.288Q15.838-63.926 15.594-63.663Q15.350-63.399 14.970-63.222L15.370-62.986Q15.565-62.873 15.724-62.704Q15.883-62.535 15.970-62.326Q16.057-62.118 16.057-61.885Q16.057-61.482 15.823-61.178Q15.589-60.874 15.215-60.711Q14.840-60.549 14.447-60.549Q14.061-60.549 13.692-60.686Q13.323-60.822 13.080-61.099Q12.837-61.376 12.837-61.766M13.285-61.766Q13.285-61.479 13.454-61.256Q13.624-61.034 13.892-60.918Q14.160-60.802 14.447-60.802Q14.885-60.802 15.247-61.019Q15.609-61.236 15.609-61.643Q15.609-61.844 15.481-62.022Q15.353-62.200 15.175-62.299L14.153-62.894Q13.914-62.784 13.716-62.618Q13.518-62.453 13.401-62.237Q13.285-62.022 13.285-61.766M13.808-63.895L14.728-63.362Q15.035-63.522 15.237-63.755Q15.438-63.987 15.438-64.288Q15.438-64.527 15.293-64.717Q15.148-64.907 14.916-65.006Q14.683-65.105 14.447-65.105Q14.225-65.105 13.996-65.035Q13.767-64.965 13.610-64.808Q13.453-64.650 13.453-64.421Q13.453-64.107 13.808-63.895",[865],[848,1649,1651],{"transform":1650},"translate(130.647 76.456)",[861,1652],{"d":1653,"fill":850,"stroke":850,"className":1654,"style":910},"M-18.797-60.696L-18.797-61.759Q-18.797-61.783-18.769-61.810Q-18.742-61.837-18.718-61.837L-18.609-61.837Q-18.544-61.837-18.530-61.779Q-18.434-61.345-18.188-61.094Q-17.942-60.843-17.528-60.843Q-17.187-60.843-16.934-60.976Q-16.681-61.109-16.681-61.417Q-16.681-61.574-16.775-61.689Q-16.869-61.803-17.007-61.872Q-17.146-61.940-17.313-61.978L-17.894-62.077Q-18.250-62.145-18.523-62.366Q-18.797-62.586-18.797-62.928Q-18.797-63.177-18.685-63.352Q-18.574-63.526-18.388-63.625Q-18.202-63.724-17.986-63.767Q-17.771-63.810-17.528-63.810Q-17.115-63.810-16.835-63.628L-16.619-63.803Q-16.609-63.806-16.602-63.808Q-16.595-63.810-16.585-63.810L-16.534-63.810Q-16.507-63.810-16.483-63.786Q-16.459-63.762-16.459-63.734L-16.459-62.887Q-16.459-62.866-16.483-62.839Q-16.507-62.812-16.534-62.812L-16.647-62.812Q-16.674-62.812-16.700-62.837Q-16.725-62.863-16.725-62.887Q-16.725-63.123-16.831-63.287Q-16.937-63.451-17.120-63.533Q-17.303-63.615-17.535-63.615Q-17.863-63.615-18.120-63.512Q-18.376-63.410-18.376-63.133Q-18.376-62.938-18.193-62.829Q-18.010-62.719-17.781-62.678L-17.207-62.572Q-16.961-62.524-16.747-62.396Q-16.534-62.268-16.397-62.065Q-16.260-61.861-16.260-61.612Q-16.260-61.099-16.626-60.860Q-16.992-60.621-17.528-60.621Q-18.024-60.621-18.356-60.915L-18.622-60.641Q-18.643-60.621-18.670-60.621L-18.718-60.621Q-18.742-60.621-18.769-60.648Q-18.797-60.675-18.797-60.696M-13.987-59.332L-15.618-59.332L-15.618-59.612Q-15.389-59.612-15.240-59.647Q-15.091-59.681-15.091-59.821L-15.091-63.167Q-15.091-63.338-15.228-63.379Q-15.365-63.420-15.618-63.420L-15.618-63.700L-14.538-63.775L-14.538-63.369Q-14.316-63.570-14.028-63.673Q-13.741-63.775-13.434-63.775Q-13.007-63.775-12.642-63.562Q-12.278-63.348-12.065-62.984Q-11.851-62.620-11.851-62.200Q-11.851-61.755-12.090-61.391Q-12.330-61.027-12.723-60.824Q-13.116-60.621-13.560-60.621Q-13.827-60.621-14.075-60.721Q-14.322-60.822-14.510-61.003L-14.510-59.821Q-14.510-59.684-14.362-59.648Q-14.213-59.612-13.987-59.612L-13.987-59.332M-14.510-63.020L-14.510-61.410Q-14.377-61.157-14.134-61Q-13.892-60.843-13.615-60.843Q-13.287-60.843-13.034-61.044Q-12.781-61.246-12.648-61.564Q-12.514-61.882-12.514-62.200Q-12.514-62.429-12.579-62.658Q-12.644-62.887-12.772-63.085Q-12.901-63.283-13.095-63.403Q-13.290-63.522-13.523-63.522Q-13.817-63.522-14.085-63.393Q-14.353-63.263-14.510-63.020M-11.157-61.417Q-11.157-61.749-10.934-61.976Q-10.710-62.203-10.366-62.331Q-10.023-62.460-9.650-62.512Q-9.278-62.565-8.973-62.565L-8.973-62.818Q-8.973-63.023-9.081-63.203Q-9.189-63.382-9.370-63.485Q-9.551-63.587-9.759-63.587Q-10.166-63.587-10.402-63.495Q-10.313-63.458-10.267-63.374Q-10.221-63.290-10.221-63.188Q-10.221-63.092-10.267-63.013Q-10.313-62.935-10.393-62.890Q-10.474-62.846-10.563-62.846Q-10.713-62.846-10.814-62.943Q-10.915-63.041-10.915-63.188Q-10.915-63.810-9.759-63.810Q-9.548-63.810-9.298-63.746Q-9.049-63.683-8.847-63.564Q-8.645-63.444-8.519-63.259Q-8.392-63.075-8.392-62.832L-8.392-61.256Q-8.392-61.140-8.331-61.044Q-8.269-60.949-8.156-60.949Q-8.047-60.949-7.982-61.043Q-7.917-61.137-7.917-61.256L-7.917-61.704L-7.651-61.704L-7.651-61.256Q-7.651-60.986-7.878-60.821Q-8.105-60.655-8.385-60.655Q-8.594-60.655-8.731-60.809Q-8.867-60.962-8.891-61.178Q-9.038-60.911-9.320-60.766Q-9.602-60.621-9.927-60.621Q-10.204-60.621-10.487-60.696Q-10.771-60.771-10.964-60.950Q-11.157-61.130-11.157-61.417M-10.542-61.417Q-10.542-61.243-10.441-61.113Q-10.340-60.983-10.185-60.913Q-10.029-60.843-9.865-60.843Q-9.647-60.843-9.438-60.940Q-9.230-61.038-9.101-61.219Q-8.973-61.400-8.973-61.626L-8.973-62.354Q-9.298-62.354-9.664-62.263Q-10.029-62.172-10.286-61.960Q-10.542-61.749-10.542-61.417M-5.484-60.689L-7.220-60.689L-7.220-60.969Q-6.991-60.969-6.842-61.003Q-6.694-61.038-6.694-61.178L-6.694-63.027Q-6.694-63.297-6.801-63.358Q-6.909-63.420-7.220-63.420L-7.220-63.700L-6.191-63.775L-6.191-63.068Q-6.061-63.376-5.819-63.575Q-5.576-63.775-5.258-63.775Q-5.039-63.775-4.868-63.651Q-4.697-63.526-4.697-63.314Q-4.697-63.177-4.797-63.078Q-4.896-62.979-5.029-62.979Q-5.166-62.979-5.265-63.078Q-5.364-63.177-5.364-63.314Q-5.364-63.454-5.265-63.553Q-5.555-63.553-5.755-63.357Q-5.955-63.160-6.048-62.866Q-6.140-62.572-6.140-62.292L-6.140-61.178Q-6.140-60.969-5.484-60.969L-5.484-60.689M-4.154-62.224Q-4.154-62.545-4.029-62.834Q-3.904-63.123-3.679-63.346Q-3.453-63.570-3.158-63.690Q-2.862-63.810-2.544-63.810Q-2.216-63.810-1.955-63.710Q-1.693-63.611-1.517-63.429Q-1.341-63.246-1.247-62.988Q-1.153-62.730-1.153-62.398Q-1.153-62.306-1.235-62.285L-3.491-62.285L-3.491-62.224Q-3.491-61.636-3.207-61.253Q-2.924-60.870-2.356-60.870Q-2.035-60.870-1.767-61.063Q-1.498-61.256-1.409-61.571Q-1.403-61.612-1.327-61.626L-1.235-61.626Q-1.153-61.602-1.153-61.530Q-1.153-61.523-1.160-61.496Q-1.273-61.099-1.643-60.860Q-2.014-60.621-2.438-60.621Q-2.876-60.621-3.276-60.829Q-3.675-61.038-3.915-61.405Q-4.154-61.772-4.154-62.224M-3.484-62.494L-1.669-62.494Q-1.669-62.771-1.767-63.023Q-1.864-63.276-2.062-63.432Q-2.260-63.587-2.544-63.587Q-2.821-63.587-3.035-63.429Q-3.248-63.270-3.366-63.015Q-3.484-62.760-3.484-62.494",[865],[848,1656,1658,1661],{"fill":1657,"stroke":1657},"var(--tk-warn)",[861,1659],{"fill":854,"d":1660},"M-19.111-49.108v31.744",[861,1662],{"stroke":854,"d":1663},"m-19.111-15.364 1.6-3.2-1.6 1.2-1.6-1.2",[848,1665,1666,1669],{"fill":1657,"stroke":1657},[861,1667],{"fill":854,"d":1668},"M4.05-49.108v31.744",[861,1670],{"stroke":854,"d":1671},"m4.05-15.364 1.6-3.2-1.6 1.2-1.6-1.2",[848,1673,1674,1677],{"fill":1657,"stroke":1657},[861,1675],{"fill":854,"d":1676},"M27.213-49.108v31.744",[861,1678],{"stroke":854,"d":1679},"m27.213-15.364 1.6-3.2-1.6 1.2-1.6-1.2",[848,1681,1682,1685],{"fill":1657,"stroke":1657},[861,1683],{"fill":854,"d":1684},"M50.375-49.108v31.744",[861,1686],{"stroke":854,"d":1687},"m50.375-15.364 1.6-3.2-1.6 1.2-1.6-1.2",[848,1689,1690],{"fill":1657,"stroke":1657},[848,1691,1692,1699,1705,1711,1717],{"fill":1657,"stroke":854,"fontFamily":1535,"fontSize":913},[848,1693,1695],{"transform":1694},"translate(135.802 34.708)",[861,1696],{"d":1697,"fill":1657,"stroke":1657,"className":1698,"style":910},"M-15.113-70.200Q-15.113-70.528-14.978-70.829Q-14.843-71.129-14.607-71.350Q-14.371-71.570-14.067-71.690Q-13.762-71.810-13.438-71.810Q-12.932-71.810-12.583-71.707Q-12.235-71.605-12.235-71.229Q-12.235-71.082-12.332-70.981Q-12.429-70.880-12.576-70.880Q-12.730-70.880-12.829-70.979Q-12.928-71.078-12.928-71.229Q-12.928-71.417-12.788-71.509Q-12.990-71.560-13.431-71.560Q-13.786-71.560-14.015-71.364Q-14.244-71.167-14.345-70.858Q-14.446-70.548-14.446-70.200Q-14.446-69.851-14.320-69.545Q-14.193-69.239-13.938-69.055Q-13.684-68.870-13.328-68.870Q-13.106-68.870-12.922-68.954Q-12.737-69.038-12.602-69.193Q-12.467-69.349-12.409-69.557Q-12.395-69.612-12.341-69.612L-12.228-69.612Q-12.197-69.612-12.175-69.588Q-12.153-69.564-12.153-69.530L-12.153-69.509Q-12.238-69.222-12.426-69.024Q-12.614-68.826-12.879-68.723Q-13.144-68.621-13.438-68.621Q-13.868-68.621-14.256-68.827Q-14.644-69.034-14.878-69.397Q-15.113-69.759-15.113-70.200M-11.606-70.172Q-11.606-70.514-11.471-70.813Q-11.336-71.112-11.096-71.336Q-10.857-71.560-10.539-71.685Q-10.221-71.810-9.890-71.810Q-9.446-71.810-9.046-71.594Q-8.646-71.379-8.412-71.001Q-8.177-70.624-8.177-70.172Q-8.177-69.831-8.319-69.547Q-8.461-69.263-8.706-69.056Q-8.950-68.850-9.259-68.735Q-9.569-68.621-9.890-68.621Q-10.321-68.621-10.722-68.822Q-11.124-69.024-11.365-69.376Q-11.606-69.728-11.606-70.172M-9.890-68.870Q-9.288-68.870-9.064-69.248Q-8.841-69.626-8.841-70.258Q-8.841-70.870-9.075-71.229Q-9.309-71.587-9.890-71.587Q-10.943-71.587-10.943-70.258Q-10.943-69.626-10.717-69.248Q-10.491-68.870-9.890-68.870M-5.939-67.332L-7.569-67.332L-7.569-67.612Q-7.340-67.612-7.191-67.647Q-7.043-67.681-7.043-67.821L-7.043-71.167Q-7.043-71.338-7.179-71.379Q-7.316-71.420-7.569-71.420L-7.569-71.700L-6.489-71.775L-6.489-71.369Q-6.267-71.570-5.980-71.673Q-5.693-71.775-5.385-71.775Q-4.958-71.775-4.594-71.562Q-4.230-71.348-4.016-70.984Q-3.802-70.620-3.802-70.200Q-3.802-69.755-4.042-69.391Q-4.281-69.027-4.674-68.824Q-5.067-68.621-5.511-68.621Q-5.778-68.621-6.026-68.721Q-6.274-68.822-6.462-69.003L-6.462-67.821Q-6.462-67.684-6.313-67.648Q-6.164-67.612-5.939-67.612L-5.939-67.332M-6.462-71.020L-6.462-69.410Q-6.328-69.157-6.086-69Q-5.843-68.843-5.566-68.843Q-5.238-68.843-4.985-69.044Q-4.732-69.246-4.599-69.564Q-4.466-69.882-4.466-70.200Q-4.466-70.429-4.531-70.658Q-4.595-70.887-4.724-71.085Q-4.852-71.283-5.047-71.403Q-5.241-71.522-5.474-71.522Q-5.768-71.522-6.036-71.393Q-6.304-71.263-6.462-71.020",[865],[848,1700,1701],{"transform":1694},[861,1702],{"d":1703,"fill":1657,"stroke":1657,"className":1704,"style":910},"M-3.035-67.554Q-2.905-67.486-2.768-67.486Q-2.597-67.486-2.447-67.575Q-2.296-67.664-2.185-67.809Q-2.074-67.954-1.996-68.122L-1.732-68.689L-2.901-71.215Q-2.976-71.362-3.106-71.394Q-3.236-71.427-3.469-71.427L-3.469-71.707L-1.948-71.707L-1.948-71.427Q-2.296-71.427-2.296-71.280Q-2.293-71.259-2.291-71.242Q-2.289-71.225-2.289-71.215L-1.432-69.356L-0.659-71.027Q-0.625-71.095-0.625-71.174Q-0.625-71.287-0.709-71.357Q-0.792-71.427-0.905-71.427L-0.905-71.707L0.291-71.707L0.291-71.427Q0.072-71.427-0.100-71.323Q-0.273-71.218-0.365-71.027L-1.702-68.122Q-1.872-67.752-2.142-67.506Q-2.413-67.260-2.768-67.260Q-3.038-67.260-3.257-67.426Q-3.476-67.592-3.476-67.855Q-3.476-67.992-3.383-68.081Q-3.291-68.169-3.151-68.169Q-3.014-68.169-2.925-68.081Q-2.836-67.992-2.836-67.855Q-2.836-67.752-2.889-67.674Q-2.942-67.595-3.035-67.554",[865],[848,1706,1707],{"transform":1694},[861,1708],{"d":1709,"fill":1657,"stroke":1657,"className":1710,"style":910},"M5.529-69.837L3.485-69.837L3.485-70.118L5.816-73.290Q5.851-73.337 5.916-73.337L6.052-73.337Q6.097-73.337 6.124-73.310Q6.151-73.283 6.151-73.238L6.151-70.118L6.914-70.118L6.914-69.837L6.151-69.837L6.151-69.178Q6.151-68.969 6.907-68.969L6.907-68.689L4.774-68.689L4.774-68.969Q5.529-68.969 5.529-69.178L5.529-69.837M5.577-72.562L3.786-70.118L5.577-70.118",[865],[848,1712,1713],{"transform":1694},[861,1714],{"d":1715,"fill":1657,"stroke":1657,"className":1716,"style":910},"M-18.838-62.224Q-18.838-62.545-18.713-62.834Q-18.588-63.123-18.362-63.346Q-18.137-63.570-17.841-63.690Q-17.546-63.810-17.228-63.810Q-16.900-63.810-16.638-63.710Q-16.377-63.611-16.201-63.429Q-16.025-63.246-15.931-62.988Q-15.837-62.730-15.837-62.398Q-15.837-62.306-15.919-62.285L-18.174-62.285L-18.174-62.224Q-18.174-61.636-17.891-61.253Q-17.607-60.870-17.040-60.870Q-16.718-60.870-16.450-61.063Q-16.182-61.256-16.093-61.571Q-16.086-61.612-16.011-61.626L-15.919-61.626Q-15.837-61.602-15.837-61.530Q-15.837-61.523-15.843-61.496Q-15.956-61.099-16.327-60.860Q-16.698-60.621-17.122-60.621Q-17.559-60.621-17.959-60.829Q-18.359-61.038-18.598-61.405Q-18.838-61.772-18.838-62.224M-18.168-62.494L-16.353-62.494Q-16.353-62.771-16.450-63.023Q-16.548-63.276-16.746-63.432Q-16.944-63.587-17.228-63.587Q-17.505-63.587-17.718-63.429Q-17.932-63.270-18.050-63.015Q-18.168-62.760-18.168-62.494M-13.581-60.689L-15.184-60.689L-15.184-60.969Q-14.958-60.969-14.809-61.003Q-14.661-61.038-14.661-61.178L-14.661-64.797Q-14.661-65.067-14.768-65.129Q-14.876-65.190-15.184-65.190L-15.184-65.471L-14.107-65.546L-14.107-61.178Q-14.107-61.041-13.957-61.005Q-13.806-60.969-13.581-60.969L-13.581-60.689M-13.027-62.224Q-13.027-62.545-12.902-62.834Q-12.778-63.123-12.552-63.346Q-12.326-63.570-12.031-63.690Q-11.735-63.810-11.417-63.810Q-11.089-63.810-10.828-63.710Q-10.566-63.611-10.390-63.429Q-10.214-63.246-10.120-62.988Q-10.026-62.730-10.026-62.398Q-10.026-62.306-10.108-62.285L-12.364-62.285L-12.364-62.224Q-12.364-61.636-12.080-61.253Q-11.797-60.870-11.229-60.870Q-10.908-60.870-10.640-61.063Q-10.371-61.256-10.282-61.571Q-10.276-61.612-10.200-61.626L-10.108-61.626Q-10.026-61.602-10.026-61.530Q-10.026-61.523-10.033-61.496Q-10.146-61.099-10.517-60.860Q-10.887-60.621-11.311-60.621Q-11.749-60.621-12.149-60.829Q-12.549-61.038-12.788-61.405Q-13.027-61.772-13.027-62.224M-12.357-62.494L-10.542-62.494Q-10.542-62.771-10.640-63.023Q-10.737-63.276-10.935-63.432Q-11.133-63.587-11.417-63.587Q-11.694-63.587-11.908-63.429Q-12.121-63.270-12.239-63.015Q-12.357-62.760-12.357-62.494M-7.757-60.689L-9.390-60.689L-9.390-60.969Q-9.161-60.969-9.013-61.003Q-8.864-61.038-8.864-61.178L-8.864-63.027Q-8.864-63.297-8.972-63.358Q-9.079-63.420-9.390-63.420L-9.390-63.700L-8.331-63.775L-8.331-63.126Q-8.160-63.434-7.856-63.605Q-7.551-63.775-7.206-63.775Q-6.806-63.775-6.529-63.635Q-6.253-63.495-6.167-63.147Q-6-63.440-5.701-63.608Q-5.402-63.775-5.056-63.775Q-4.550-63.775-4.267-63.552Q-3.983-63.328-3.983-62.832L-3.983-61.178Q-3.983-61.041-3.834-61.005Q-3.686-60.969-3.460-60.969L-3.460-60.689L-5.090-60.689L-5.090-60.969Q-4.865-60.969-4.715-61.005Q-4.564-61.041-4.564-61.178L-4.564-62.818Q-4.564-63.153-4.684-63.353Q-4.803-63.553-5.118-63.553Q-5.388-63.553-5.622-63.417Q-5.856-63.280-5.995-63.046Q-6.133-62.812-6.133-62.538L-6.133-61.178Q-6.133-61.041-5.984-61.005Q-5.836-60.969-5.610-60.969L-5.610-60.689L-7.240-60.689L-7.240-60.969Q-7.011-60.969-6.863-61.003Q-6.714-61.038-6.714-61.178L-6.714-62.818Q-6.714-63.153-6.834-63.353Q-6.953-63.553-7.268-63.553Q-7.538-63.553-7.772-63.417Q-8.006-63.280-8.144-63.046Q-8.283-62.812-8.283-62.538L-8.283-61.178Q-8.283-61.041-8.132-61.005Q-7.982-60.969-7.757-60.969L-7.757-60.689M-2.913-62.224Q-2.913-62.545-2.788-62.834Q-2.664-63.123-2.438-63.346Q-2.213-63.570-1.917-63.690Q-1.621-63.810-1.303-63.810Q-0.975-63.810-0.714-63.710Q-0.452-63.611-0.276-63.429Q-0.100-63.246-0.006-62.988Q0.088-62.730 0.088-62.398Q0.088-62.306 0.006-62.285L-2.250-62.285L-2.250-62.224Q-2.250-61.636-1.966-61.253Q-1.683-60.870-1.115-60.870Q-0.794-60.870-0.526-61.063Q-0.257-61.256-0.169-61.571Q-0.162-61.612-0.087-61.626L0.006-61.626Q0.088-61.602 0.088-61.530Q0.088-61.523 0.081-61.496Q-0.032-61.099-0.403-60.860Q-0.774-60.621-1.197-60.621Q-1.635-60.621-2.035-60.829Q-2.435-61.038-2.674-61.405Q-2.913-61.772-2.913-62.224M-2.243-62.494L-0.428-62.494Q-0.428-62.771-0.526-63.023Q-0.623-63.276-0.821-63.432Q-1.020-63.587-1.303-63.587Q-1.580-63.587-1.794-63.429Q-2.007-63.270-2.125-63.015Q-2.243-62.760-2.243-62.494M2.357-60.689L0.723-60.689L0.723-60.969Q0.952-60.969 1.101-61.003Q1.250-61.038 1.250-61.178L1.250-63.027Q1.250-63.297 1.142-63.358Q1.035-63.420 0.723-63.420L0.723-63.700L1.783-63.775L1.783-63.126Q1.954-63.434 2.258-63.605Q2.562-63.775 2.908-63.775Q3.413-63.775 3.697-63.552Q3.981-63.328 3.981-62.832L3.981-61.178Q3.981-61.041 4.129-61.005Q4.278-60.969 4.504-60.969L4.504-60.689L2.873-60.689L2.873-60.969Q3.102-60.969 3.251-61.003Q3.400-61.038 3.400-61.178L3.400-62.818Q3.400-63.153 3.280-63.353Q3.160-63.553 2.846-63.553Q2.576-63.553 2.342-63.417Q2.108-63.280 1.969-63.046Q1.831-62.812 1.831-62.538L1.831-61.178Q1.831-61.041 1.981-61.005Q2.132-60.969 2.357-60.969",[865],[848,1718,1719],{"transform":1694},[861,1720],{"d":1721,"fill":1657,"stroke":1657,"className":1722,"style":910},"M5.431-61.530L5.431-63.427L4.792-63.427L4.792-63.649Q5.110-63.649 5.327-63.859Q5.544-64.069 5.644-64.379Q5.745-64.688 5.745-64.996L6.012-64.996L6.012-63.707L7.089-63.707L7.089-63.427L6.012-63.427L6.012-61.543Q6.012-61.267 6.116-61.068Q6.220-60.870 6.480-60.870Q6.637-60.870 6.743-60.974Q6.849-61.079 6.899-61.232Q6.948-61.386 6.948-61.543L6.948-61.957L7.215-61.957L7.215-61.530Q7.215-61.304 7.116-61.094Q7.017-60.884 6.832-60.752Q6.648-60.621 6.419-60.621Q5.981-60.621 5.706-60.858Q5.431-61.096 5.431-61.530M8.025-60.696L8.025-61.759Q8.025-61.783 8.052-61.810Q8.080-61.837 8.104-61.837L8.213-61.837Q8.278-61.837 8.292-61.779Q8.387-61.345 8.633-61.094Q8.880-60.843 9.293-60.843Q9.635-60.843 9.888-60.976Q10.141-61.109 10.141-61.417Q10.141-61.574 10.047-61.689Q9.953-61.803 9.814-61.872Q9.676-61.940 9.508-61.978L8.927-62.077Q8.572-62.145 8.298-62.366Q8.025-62.586 8.025-62.928Q8.025-63.177 8.136-63.352Q8.247-63.526 8.434-63.625Q8.620-63.724 8.835-63.767Q9.050-63.810 9.293-63.810Q9.707-63.810 9.987-63.628L10.202-63.803Q10.213-63.806 10.219-63.808Q10.226-63.810 10.236-63.810L10.288-63.810Q10.315-63.810 10.339-63.786Q10.363-63.762 10.363-63.734L10.363-62.887Q10.363-62.866 10.339-62.839Q10.315-62.812 10.288-62.812L10.175-62.812Q10.148-62.812 10.122-62.837Q10.096-62.863 10.096-62.887Q10.096-63.123 9.990-63.287Q9.884-63.451 9.702-63.533Q9.519-63.615 9.286-63.615Q8.958-63.615 8.702-63.512Q8.445-63.410 8.445-63.133Q8.445-62.938 8.628-62.829Q8.811-62.719 9.040-62.678L9.614-62.572Q9.861-62.524 10.074-62.396Q10.288-62.268 10.424-62.065Q10.561-61.861 10.561-61.612Q10.561-61.099 10.195-60.860Q9.830-60.621 9.293-60.621Q8.798-60.621 8.466-60.915L8.199-60.641Q8.179-60.621 8.152-60.621L8.104-60.621Q8.080-60.621 8.052-60.648Q8.025-60.675 8.025-60.696",[865],[1032,1724,1726,1727,1743,1744,1760,1761,1785,1786,1802],{"className":1725},[1035],"A resize on overflow. The full block of capacity ",[415,1728,1730],{"className":1729},[418],[415,1731,1733],{"className":1732,"ariaHidden":423},[422],[415,1734,1736,1740],{"className":1735},[427],[415,1737],{"className":1738,"style":1739},[431],"height:0.6444em;",[415,1741,1078],{"className":1742},[436]," cannot take a fifth element, so a new block of capacity ",[415,1745,1747],{"className":1746},[418],[415,1748,1750],{"className":1749,"ariaHidden":423},[422],[415,1751,1753,1756],{"className":1752},[427],[415,1754],{"className":1755,"style":1739},[431],[415,1757,1759],{"className":1758},[436],"8"," is allocated, the four elements are copied over (the ",[415,1762,1764],{"className":1763},[418],[415,1765,1767],{"className":1766,"ariaHidden":423},[422],[415,1768,1770,1773,1776,1779,1782],{"className":1769},[427],[415,1771],{"className":1772,"style":616},[431],[415,1774,774],{"className":1775},[436],[415,1777,626],{"className":1778},[625],[415,1780,438],{"className":1781},[436,437],[415,1783,634],{"className":1784},[633]," step, red), ",[415,1787,1789],{"className":1788},[418],[415,1790,1792],{"className":1791,"ariaHidden":423},[422],[415,1793,1795,1798],{"className":1794},[427],[415,1796],{"className":1797,"style":432},[431],[415,1799,1801],{"className":1800},[436,437],"x"," is written into the first spare slot, and the old block is freed. The four trailing slots are reserved-but-unused capacity.",[796,1804,1806],{"type":1805},"lemma",[381,1807,1808,1811,1812,1277,1827,1853,1854,1878,1879,1903,1906],{},[394,1809,1810],{},"Lemma (amortized append)."," Starting from an empty dynamic array, any sequence\nof ",[415,1813,1815],{"className":1814},[418],[415,1816,1818],{"className":1817,"ariaHidden":423},[422],[415,1819,1821,1824],{"className":1820},[427],[415,1822],{"className":1823,"style":432},[431],[415,1825,438],{"className":1826},[436,437],[415,1828,1830],{"className":1829},[418],[415,1831,1833],{"className":1832,"ariaHidden":423},[422],[415,1834,1836,1840],{"className":1835},[427],[415,1837],{"className":1838,"style":1839},[431],"height:0.8889em;vertical-align:-0.1944em;",[415,1841,1845],{"className":1842},[1843,1844],"enclosing","textsc",[415,1846,1849],{"className":1847},[436,1848],"text",[415,1850,1852],{"className":1851},[436],"Append"," operations runs in ",[415,1855,1857],{"className":1856},[418],[415,1858,1860],{"className":1859,"ariaHidden":423},[422],[415,1861,1863,1866,1869,1872,1875],{"className":1862},[427],[415,1864],{"className":1865,"style":616},[431],[415,1867,621],{"className":1868,"style":620},[436,437],[415,1870,626],{"className":1871},[625],[415,1873,438],{"className":1874},[436,437],[415,1876,634],{"className":1877},[633]," total time, i.e. ",[415,1880,1882],{"className":1881},[418],[415,1883,1885],{"className":1884,"ariaHidden":423},[422],[415,1886,1888,1891,1894,1897,1900],{"className":1887},[427],[415,1889],{"className":1890,"style":616},[431],[415,1892,621],{"className":1893,"style":620},[436,437],[415,1895,626],{"className":1896},[625],[415,1898,511],{"className":1899},[436],[415,1901,634],{"className":1902},[633],[394,1904,1905],{},"amortized"," per append.",[796,1908,1910,2249,2592],{"type":1909},"proof",[381,1911,1912,1915,1916,1940,1941,1996,1997,2052,2053,2094,2095,2110,2111,2248],{},[394,1913,1914],{},"Proof (aggregate method)."," Ignore the cheap per-append writes (clearly ",[415,1917,1919],{"className":1918},[418],[415,1920,1922],{"className":1921,"ariaHidden":423},[422],[415,1923,1925,1928,1931,1934,1937],{"className":1924},[427],[415,1926],{"className":1927,"style":616},[431],[415,1929,621],{"className":1930,"style":620},[436,437],[415,1932,626],{"className":1933},[625],[415,1935,438],{"className":1936},[436,437],[415,1938,634],{"className":1939},[633],"\ntotal) and count only the copying done by resizes. Doubling from empty, resizes\nhappen when the size passes ",[415,1942,1944],{"className":1943},[418],[415,1945,1947],{"className":1946,"ariaHidden":423},[422],[415,1948,1950,1954,1957,1960,1963,1967,1970,1973,1976,1979,1982,1985,1988,1991],{"className":1949},[427],[415,1951],{"className":1952,"style":1953},[431],"height:0.8389em;vertical-align:-0.1944em;",[415,1955,511],{"className":1956},[436],[415,1958,1060],{"className":1959},[1059],[415,1961],{"className":1962,"style":1064},[565],[415,1964,1966],{"className":1965},[436],"2",[415,1968,1060],{"className":1969},[1059],[415,1971],{"className":1972,"style":1064},[565],[415,1974,1078],{"className":1975},[436],[415,1977,1060],{"className":1978},[1059],[415,1980],{"className":1981,"style":1064},[565],[415,1983,1759],{"className":1984},[436],[415,1986,1060],{"className":1987},[1059],[415,1989],{"className":1990,"style":1064},[565],[415,1992,1995],{"className":1993},[1994],"minner","…",", and the resize at size ",[415,1998,2000],{"className":1999},[418],[415,2001,2003],{"className":2002,"ariaHidden":423},[422],[415,2004,2006,2010],{"className":2005},[427],[415,2007],{"className":2008,"style":2009},[431],"height:0.8491em;",[415,2011,2013,2016],{"className":2012},[436],[415,2014,1966],{"className":2015},[436],[415,2017,2020],{"className":2018},[2019],"msupsub",[415,2021,2024],{"className":2022},[2023],"vlist-t",[415,2025,2028],{"className":2026},[2027],"vlist-r",[415,2029,2032],{"className":2030,"style":2009},[2031],"vlist",[415,2033,2035,2040],{"style":2034},"top:-3.063em;margin-right:0.05em;",[415,2036],{"className":2037,"style":2039},[2038],"pstrut","height:2.7em;",[415,2041,2047],{"className":2042},[2043,2044,2045,2046],"sizing","reset-size6","size3","mtight",[415,2048,2051],{"className":2049,"style":2050},[436,437,2046],"margin-right:0.0315em;","k","\ncopies ",[415,2054,2056],{"className":2055},[418],[415,2057,2059],{"className":2058,"ariaHidden":423},[422],[415,2060,2062,2065],{"className":2061},[427],[415,2063],{"className":2064,"style":2009},[431],[415,2066,2068,2071],{"className":2067},[436],[415,2069,1966],{"className":2070},[436],[415,2072,2074],{"className":2073},[2019],[415,2075,2077],{"className":2076},[2023],[415,2078,2080],{"className":2079},[2027],[415,2081,2083],{"className":2082,"style":2009},[2031],[415,2084,2085,2088],{"style":2034},[415,2086],{"className":2087,"style":2039},[2038],[415,2089,2091],{"className":2090},[2043,2044,2045,2046],[415,2092,2051],{"className":2093,"style":2050},[436,437,2046]," elements. Across ",[415,2096,2098],{"className":2097},[418],[415,2099,2101],{"className":2100,"ariaHidden":423},[422],[415,2102,2104,2107],{"className":2103},[427],[415,2105],{"className":2106,"style":432},[431],[415,2108,438],{"className":2109},[436,437]," appends the largest resize is at most ",[415,2112,2114],{"className":2113},[418],[415,2115,2117,2236],{"className":2116,"ariaHidden":423},[422],[415,2118,2120,2124,2225,2229,2233],{"className":2119},[427],[415,2121],{"className":2122,"style":2123},[431],"height:1.024em;vertical-align:-0.136em;",[415,2125,2127,2130],{"className":2126},[436],[415,2128,1966],{"className":2129},[436],[415,2131,2133],{"className":2132},[2019],[415,2134,2136],{"className":2135},[2023],[415,2137,2139],{"className":2138},[2027],[415,2140,2143],{"className":2141,"style":2142},[2031],"height:0.888em;",[415,2144,2145,2148],{"style":2034},[415,2146],{"className":2147,"style":2039},[2038],[415,2149,2151],{"className":2150},[2043,2044,2045,2046],[415,2152,2154,2158,2214,2218,2221],{"className":2153},[436,2046],[415,2155,2157],{"className":2156},[625,2046],"⌈",[415,2159,2162,2171],{"className":2160},[2161,2046],"mop",[415,2163,2165],{"className":2164},[2161,2046],[415,2166,2170],{"className":2167,"style":2169},[436,2168,2046],"mathrm","margin-right:0.0139em;","log",[415,2172,2174],{"className":2173},[2019],[415,2175,2178,2205],{"className":2176},[2023,2177],"vlist-t2",[415,2179,2181,2200],{"className":2180},[2027],[415,2182,2185],{"className":2183,"style":2184},[2031],"height:0.1944em;",[415,2186,2188,2192],{"style":2187},"top:-2.2341em;margin-right:0.0714em;",[415,2189],{"className":2190,"style":2191},[2038],"height:2.5em;",[415,2193,2197],{"className":2194},[2043,2195,2196,2046],"reset-size3","size1",[415,2198,1966],{"className":2199},[436,2046],[415,2201,2204],{"className":2202},[2203],"vlist-s","​",[415,2206,2208],{"className":2207},[2027],[415,2209,2212],{"className":2210,"style":2211},[2031],"height:0.2659em;",[415,2213],{},[415,2215],{"className":2216,"style":2217},[565,2046],"margin-right:0.1952em;",[415,2219,438],{"className":2220},[436,437,2046],[415,2222,2224],{"className":2223},[633,2046],"⌉",[415,2226],{"className":2227,"style":2228},[565],"margin-right:0.2778em;",[415,2230,2232],{"className":2231},[1294],"≤",[415,2234],{"className":2235,"style":2228},[565],[415,2237,2239,2242,2245],{"className":2238},[427],[415,2240],{"className":2241,"style":1739},[431],[415,2243,1966],{"className":2244},[436],[415,2246,438],{"className":2247},[436,437],", so the total copying cost is",[415,2250,2253],{"className":2251},[2252],"katex-display",[415,2254,2256],{"className":2255},[418],[415,2257,2259,2278,2296,2314,2334,2444,2551,2577],{"className":2258,"ariaHidden":423},[422],[415,2260,2262,2266,2269,2272,2275],{"className":2261},[427],[415,2263],{"className":2264,"style":2265},[431],"height:0.7278em;vertical-align:-0.0833em;",[415,2267,511],{"className":2268},[436],[415,2270],{"className":2271,"style":566},[565],[415,2273,571],{"className":2274},[570],[415,2276],{"className":2277,"style":566},[565],[415,2279,2281,2284,2287,2290,2293],{"className":2280},[427],[415,2282],{"className":2283,"style":2265},[431],[415,2285,1966],{"className":2286},[436],[415,2288],{"className":2289,"style":566},[565],[415,2291,571],{"className":2292},[570],[415,2294],{"className":2295,"style":566},[565],[415,2297,2299,2302,2305,2308,2311],{"className":2298},[427],[415,2300],{"className":2301,"style":2265},[431],[415,2303,1078],{"className":2304},[436],[415,2306],{"className":2307,"style":566},[565],[415,2309,571],{"className":2310},[570],[415,2312],{"className":2313,"style":566},[565],[415,2315,2317,2321,2325,2328,2331],{"className":2316},[427],[415,2318],{"className":2319,"style":2320},[431],"height:0.6667em;vertical-align:-0.0833em;",[415,2322,2324],{"className":2323},[1994],"⋯",[415,2326],{"className":2327,"style":566},[565],[415,2329,571],{"className":2330},[570],[415,2332],{"className":2333,"style":566},[565],[415,2335,2337,2341,2428,2431,2434,2438,2441],{"className":2336},[427],[415,2338],{"className":2339,"style":2340},[431],"height:0.938em;",[415,2342,2344,2347],{"className":2343},[436],[415,2345,1966],{"className":2346},[436],[415,2348,2350],{"className":2349},[2019],[415,2351,2353],{"className":2352},[2023],[415,2354,2356],{"className":2355},[2027],[415,2357,2359],{"className":2358,"style":2340},[2031],[415,2360,2362,2365],{"style":2361},"top:-3.113em;margin-right:0.05em;",[415,2363],{"className":2364,"style":2039},[2038],[415,2366,2368],{"className":2367},[2043,2044,2045,2046],[415,2369,2371,2375,2418,2421,2424],{"className":2370},[436,2046],[415,2372,2374],{"className":2373},[625,2046],"⌊",[415,2376,2378,2384],{"className":2377},[2161,2046],[415,2379,2381],{"className":2380},[2161,2046],[415,2382,2170],{"className":2383,"style":2169},[436,2168,2046],[415,2385,2387],{"className":2386},[2019],[415,2388,2390,2410],{"className":2389},[2023,2177],[415,2391,2393,2407],{"className":2392},[2027],[415,2394,2396],{"className":2395,"style":2184},[2031],[415,2397,2398,2401],{"style":2187},[415,2399],{"className":2400,"style":2191},[2038],[415,2402,2404],{"className":2403},[2043,2195,2196,2046],[415,2405,1966],{"className":2406},[436,2046],[415,2408,2204],{"className":2409},[2203],[415,2411,2413],{"className":2412},[2027],[415,2414,2416],{"className":2415,"style":2211},[2031],[415,2417],{},[415,2419],{"className":2420,"style":2217},[565,2046],[415,2422,438],{"className":2423},[436,437,2046],[415,2425,2427],{"className":2426},[633,2046],"⌋",[415,2429],{"className":2430,"style":2228},[565],[415,2432],{"className":2433,"style":2228},[565],[415,2435,2437],{"className":2436},[1294],"=",[415,2439],{"className":2440,"style":2228},[565],[415,2442],{"className":2443,"style":2228},[565],[415,2445,2447,2451,2541,2544,2548],{"className":2446},[427],[415,2448],{"className":2449,"style":2450},[431],"height:1.0213em;vertical-align:-0.0833em;",[415,2452,2454,2457],{"className":2453},[436],[415,2455,1966],{"className":2456},[436],[415,2458,2460],{"className":2459},[2019],[415,2461,2463],{"className":2462},[2023],[415,2464,2466],{"className":2465},[2027],[415,2467,2469],{"className":2468,"style":2340},[2031],[415,2470,2471,2474],{"style":2361},[415,2472],{"className":2473,"style":2039},[2038],[415,2475,2477],{"className":2476},[2043,2044,2045,2046],[415,2478,2480,2483,2526,2529,2532,2535,2538],{"className":2479},[436,2046],[415,2481,2374],{"className":2482},[625,2046],[415,2484,2486,2492],{"className":2485},[2161,2046],[415,2487,2489],{"className":2488},[2161,2046],[415,2490,2170],{"className":2491,"style":2169},[436,2168,2046],[415,2493,2495],{"className":2494},[2019],[415,2496,2498,2518],{"className":2497},[2023,2177],[415,2499,2501,2515],{"className":2500},[2027],[415,2502,2504],{"className":2503,"style":2184},[2031],[415,2505,2506,2509],{"style":2187},[415,2507],{"className":2508,"style":2191},[2038],[415,2510,2512],{"className":2511},[2043,2195,2196,2046],[415,2513,1966],{"className":2514},[436,2046],[415,2516,2204],{"className":2517},[2203],[415,2519,2521],{"className":2520},[2027],[415,2522,2524],{"className":2523,"style":2211},[2031],[415,2525],{},[415,2527],{"className":2528,"style":2217},[565,2046],[415,2530,438],{"className":2531},[436,437,2046],[415,2533,2427],{"className":2534},[633,2046],[415,2536,571],{"className":2537},[570,2046],[415,2539,511],{"className":2540},[436,2046],[415,2542],{"className":2543,"style":566},[565],[415,2545,2547],{"className":2546},[570],"−",[415,2549],{"className":2550,"style":566},[565],[415,2552,2554,2558,2561,2564,2567,2571,2574],{"className":2553},[427],[415,2555],{"className":2556,"style":2557},[431],"height:0.6835em;vertical-align:-0.0391em;",[415,2559,511],{"className":2560},[436],[415,2562],{"className":2563,"style":2228},[565],[415,2565],{"className":2566,"style":2228},[565],[415,2568,2570],{"className":2569},[1294],"\u003C",[415,2572],{"className":2573,"style":2228},[565],[415,2575],{"className":2576,"style":2228},[565],[415,2578,2580,2583,2586,2589],{"className":2579},[427],[415,2581],{"className":2582,"style":1739},[431],[415,2584,1966],{"className":2585},[436],[415,2587,438],{"className":2588},[436,437],[415,2590,692],{"className":2591},[436],[381,2593,2594,2595,2619,2620,2635,2636,2660,2661],{},"Total work is therefore ",[415,2596,2598],{"className":2597},[418],[415,2599,2601],{"className":2600,"ariaHidden":423},[422],[415,2602,2604,2607,2610,2613,2616],{"className":2603},[427],[415,2605],{"className":2606,"style":616},[431],[415,2608,621],{"className":2609,"style":620},[436,437],[415,2611,626],{"className":2612},[625],[415,2614,438],{"className":2615},[436,437],[415,2617,634],{"className":2618},[633]," for the ",[415,2621,2623],{"className":2622},[418],[415,2624,2626],{"className":2625,"ariaHidden":423},[422],[415,2627,2629,2632],{"className":2628},[427],[415,2630],{"className":2631,"style":432},[431],[415,2633,438],{"className":2634},[436,437]," appends, or ",[415,2637,2639],{"className":2638},[418],[415,2640,2642],{"className":2641,"ariaHidden":423},[422],[415,2643,2645,2648,2651,2654,2657],{"className":2644},[427],[415,2646],{"className":2647,"style":616},[431],[415,2649,621],{"className":2650,"style":620},[436,437],[415,2652,626],{"className":2653},[625],[415,2655,511],{"className":2656},[436],[415,2658,634],{"className":2659},[633]," amortized each.\n",[415,2662,2664],{"className":2663},[418],[415,2665,2667],{"className":2666,"ariaHidden":423},[422],[415,2668,2670,2674],{"className":2669},[427],[415,2671],{"className":2672,"style":2673},[431],"height:0.675em;",[415,2675,2678],{"className":2676},[1843,2677],"qed",[415,2679,2682],{"className":2680},[436,2681],"amsrm","□",[381,2684,2685,2686,2689,2690,2705,2706,2758,2759,2783,2784,2803,2804],{},"The geometric growth is what makes this work: each resize is twice as expensive\nas the last but happens half as often, so the costs telescope into a constant per\noperation. Growing by a ",[700,2687,2688],{},"fixed"," increment instead of doubling would make the same\n",[415,2691,2693],{"className":2692},[418],[415,2694,2696],{"className":2695,"ariaHidden":423},[422],[415,2697,2699,2702],{"className":2698},[427],[415,2700],{"className":2701,"style":432},[431],[415,2703,438],{"className":2704},[436,437]," appends cost ",[415,2707,2709],{"className":2708},[418],[415,2710,2712],{"className":2711,"ariaHidden":423},[422],[415,2713,2715,2719,2722,2725,2755],{"className":2714},[427],[415,2716],{"className":2717,"style":2718},[431],"height:1.0641em;vertical-align:-0.25em;",[415,2720,774],{"className":2721},[436],[415,2723,626],{"className":2724},[625],[415,2726,2728,2731],{"className":2727},[436],[415,2729,438],{"className":2730},[436,437],[415,2732,2734],{"className":2733},[2019],[415,2735,2737],{"className":2736},[2023],[415,2738,2740],{"className":2739},[2027],[415,2741,2744],{"className":2742,"style":2743},[2031],"height:0.8141em;",[415,2745,2746,2749],{"style":2034},[415,2747],{"className":2748,"style":2039},[2038],[415,2750,2752],{"className":2751},[2043,2044,2045,2046],[415,2753,1966],{"className":2754},[436,2046],[415,2756,634],{"className":2757},[633],". The price of amortized ",[415,2760,2762],{"className":2761},[418],[415,2763,2765],{"className":2764,"ariaHidden":423},[422],[415,2766,2768,2771,2774,2777,2780],{"className":2767},[427],[415,2769],{"className":2770,"style":616},[431],[415,2772,621],{"className":2773,"style":620},[436,437],[415,2775,626],{"className":2776},[625],[415,2778,511],{"className":2779},[436],[415,2781,634],{"className":2782},[633]," is twofold: an\noccasional latency spike on the doubling step, and up to ",[415,2785,2787],{"className":2786},[418],[415,2788,2790],{"className":2789,"ariaHidden":423},[422],[415,2791,2793,2796,2799],{"className":2792},[427],[415,2794],{"className":2795,"style":2265},[431],[415,2797,1966],{"className":2798},[436],[415,2800,2802],{"className":2801},[436],"×"," wasted capacity\nright after a resize.",[503,2805,2806],{},[385,2807,1966],{"href":2808,"ariaDescribedBy":2809,"dataFootnoteRef":376,"id":2810},"#user-content-fn-clrs-amort",[509],"user-content-fnref-clrs-amort",[835,2812,2814,2935],{"className":2813},[838,839],[841,2815,2819],{"xmlns":843,"width":2816,"height":2817,"viewBox":2818},"410.837","171.836","-75 -75 308.128 128.877",[848,2820,2821,2824,2827,2848,2851,2854,2861,2865,2872,2875,2882,2885,2892,2895,2902,2905,2912,2915,2918],{"stroke":850,"style":851},[861,2822],{"fill":854,"d":2823},"M-47.92 43.274h227.048",[861,2825],{"stroke":854,"d":2826},"m181.128 43.274-3.2-1.6 1.2 1.6-1.2 1.6",[848,2828,2829,2836,2842],{"stroke":854,"fontSize":856},[848,2830,2832],{"transform":2831},"translate(232.58 2.25)",[861,2833],{"d":2834,"fill":850,"stroke":850,"className":2835,"style":866},"M-47.551 42.364Q-47.551 41.824-47.118 41.490Q-46.685 41.156-46.079 41.017Q-45.472 40.879-44.941 40.879L-44.941 40.545Q-44.941 40.286-45.059 40.042Q-45.178 39.798-45.387 39.651Q-45.595 39.503-45.868 39.503Q-46.430 39.503-46.742 39.701Q-46.593 39.728-46.501 39.846Q-46.408 39.965-46.408 40.123Q-46.408 40.299-46.534 40.429Q-46.659 40.558-46.839 40.558Q-47.028 40.558-47.155 40.431Q-47.283 40.303-47.283 40.123Q-47.283 39.653-46.843 39.446Q-46.404 39.240-45.868 39.240Q-45.578 39.240-45.290 39.328Q-45.002 39.416-44.769 39.576Q-44.536 39.736-44.387 39.976Q-44.237 40.215-44.237 40.510L-44.237 42.545Q-44.237 42.698-44.163 42.837Q-44.088 42.975-43.943 42.975Q-43.789 42.975-43.717 42.839Q-43.644 42.703-43.644 42.545L-43.644 41.969L-43.358 41.969L-43.358 42.545Q-43.358 42.878-43.607 43.103Q-43.855 43.327-44.185 43.327Q-44.444 43.327-44.626 43.133Q-44.809 42.940-44.853 42.663Q-45.020 42.984-45.354 43.180Q-45.688 43.375-46.057 43.375Q-46.610 43.375-47.081 43.127Q-47.551 42.878-47.551 42.364M-46.795 42.364Q-46.795 42.676-46.553 42.894Q-46.312 43.111-45.995 43.111Q-45.560 43.111-45.250 42.802Q-44.941 42.492-44.941 42.061L-44.941 41.134Q-45.358 41.134-45.784 41.261Q-46.211 41.389-46.503 41.666Q-46.795 41.942-46.795 42.364M-40.963 45.019L-43.051 45.019L-43.051 44.707Q-42.739 44.707-42.548 44.656Q-42.357 44.606-42.357 44.408L-42.357 40.070Q-42.357 39.829-42.530 39.769Q-42.704 39.710-43.051 39.710L-43.051 39.394L-41.680 39.297L-41.680 39.837Q-41.420 39.569-41.087 39.433Q-40.753 39.297-40.383 39.297Q-39.983 39.297-39.628 39.464Q-39.272 39.631-39.017 39.912Q-38.762 40.193-38.619 40.558Q-38.476 40.923-38.476 41.332Q-38.476 41.894-38.753 42.360Q-39.030 42.826-39.504 43.100Q-39.979 43.375-40.528 43.375Q-40.840 43.375-41.130 43.241Q-41.420 43.107-41.653 42.861L-41.653 44.408Q-41.653 44.606-41.462 44.656Q-41.271 44.707-40.963 44.707L-40.963 45.019M-41.653 40.251L-41.653 42.382Q-41.495 42.707-41.212 42.909Q-40.928 43.111-40.586 43.111Q-40.172 43.111-39.878 42.835Q-39.584 42.558-39.436 42.140Q-39.289 41.723-39.289 41.332Q-39.289 40.954-39.423 40.545Q-39.557 40.136-39.832 39.859Q-40.107 39.583-40.484 39.583Q-40.726 39.583-40.941 39.659Q-41.157 39.736-41.348 39.897Q-41.539 40.057-41.653 40.251M-35.826 45.019L-37.914 45.019L-37.914 44.707Q-37.602 44.707-37.410 44.656Q-37.219 44.606-37.219 44.408L-37.219 40.070Q-37.219 39.829-37.393 39.769Q-37.566 39.710-37.914 39.710L-37.914 39.394L-36.543 39.297L-36.543 39.837Q-36.283 39.569-35.949 39.433Q-35.615 39.297-35.246 39.297Q-34.846 39.297-34.490 39.464Q-34.134 39.631-33.879 39.912Q-33.625 40.193-33.482 40.558Q-33.339 40.923-33.339 41.332Q-33.339 41.894-33.616 42.360Q-33.893 42.826-34.367 43.100Q-34.842 43.375-35.391 43.375Q-35.703 43.375-35.993 43.241Q-36.283 43.107-36.516 42.861L-36.516 44.408Q-36.516 44.606-36.325 44.656Q-36.134 44.707-35.826 44.707L-35.826 45.019M-36.516 40.251L-36.516 42.382Q-36.358 42.707-36.075 42.909Q-35.791 43.111-35.448 43.111Q-35.035 43.111-34.741 42.835Q-34.446 42.558-34.299 42.140Q-34.152 41.723-34.152 41.332Q-34.152 40.954-34.286 40.545Q-34.420 40.136-34.695 39.859Q-34.969 39.583-35.347 39.583Q-35.589 39.583-35.804 39.659Q-36.020 39.736-36.211 39.897Q-36.402 40.057-36.516 40.251",[865],[848,2837,2838],{"transform":2831},[861,2839],{"d":2840,"fill":850,"stroke":850,"className":2841,"style":866},"M-30.448 43.375Q-31.007 43.375-31.479 43.092Q-31.951 42.808-32.226 42.331Q-32.501 41.855-32.501 41.301Q-32.501 40.905-32.358 40.530Q-32.215 40.154-31.958 39.866Q-31.701 39.578-31.343 39.409Q-30.985 39.240-30.580 39.240Q-30.035 39.240-29.664 39.477Q-29.293 39.714-29.106 40.132Q-28.919 40.549-28.919 41.086Q-28.919 41.138-28.943 41.176Q-28.968 41.213-29.016 41.213L-31.688 41.213L-31.688 41.292Q-31.688 42.039-31.376 42.562Q-31.064 43.085-30.365 43.085Q-29.961 43.085-29.640 42.828Q-29.319 42.571-29.196 42.167Q-29.178 42.087-29.095 42.087L-29.016 42.087Q-28.976 42.087-28.948 42.118Q-28.919 42.149-28.919 42.193L-28.919 42.228Q-29.025 42.571-29.247 42.830Q-29.468 43.089-29.783 43.232Q-30.097 43.375-30.448 43.375M-31.679 40.962L-29.565 40.962Q-29.565 40.694-29.618 40.448Q-29.671 40.202-29.791 39.980Q-29.912 39.758-30.110 39.631Q-30.308 39.503-30.580 39.503Q-30.923 39.503-31.176 39.728Q-31.428 39.952-31.554 40.290Q-31.679 40.628-31.679 40.962M-26.260 43.274L-28.348 43.274L-28.348 42.958Q-28.040 42.958-27.849 42.905Q-27.658 42.852-27.658 42.663L-27.658 40.215Q-27.658 39.974-27.728 39.866Q-27.799 39.758-27.933 39.734Q-28.067 39.710-28.348 39.710L-28.348 39.394L-27.008 39.297L-27.008 40.132Q-26.810 39.750-26.456 39.523Q-26.102 39.297-25.676 39.297Q-24.397 39.297-24.397 40.510L-24.397 42.663Q-24.397 42.852-24.206 42.905Q-24.015 42.958-23.707 42.958L-23.707 43.274L-25.795 43.274L-25.795 42.958Q-25.483 42.958-25.291 42.905Q-25.100 42.852-25.100 42.663L-25.100 40.545Q-25.100 40.286-25.144 40.064Q-25.188 39.842-25.333 39.699Q-25.478 39.556-25.738 39.556Q-26.080 39.556-26.362 39.745Q-26.643 39.934-26.799 40.246Q-26.955 40.558-26.955 40.905L-26.955 42.663Q-26.955 42.852-26.761 42.905Q-26.568 42.958-26.260 42.958L-26.260 43.274M-21.260 43.375Q-21.804 43.375-22.248 43.092Q-22.692 42.808-22.947 42.336Q-23.202 41.863-23.202 41.332Q-23.202 40.778-22.925 40.312Q-22.648 39.846-22.176 39.572Q-21.703 39.297-21.158 39.297Q-20.824 39.297-20.521 39.429Q-20.218 39.561-19.998 39.798L-19.998 37.948Q-19.998 37.706-20.069 37.598Q-20.139 37.491-20.273 37.467Q-20.407 37.442-20.693 37.442L-20.693 37.126L-19.326 37.029L-19.326 42.457Q-19.326 42.694-19.256 42.802Q-19.185 42.909-19.049 42.933Q-18.913 42.958-18.632 42.958L-18.632 43.274L-20.025 43.375L-20.025 42.826Q-20.275 43.089-20.594 43.232Q-20.912 43.375-21.260 43.375M-21.198 43.111Q-20.829 43.111-20.519 42.900Q-20.209 42.690-20.025 42.347L-20.025 40.215Q-20.196 39.912-20.477 39.734Q-20.759 39.556-21.097 39.556Q-21.787 39.556-22.090 40.077Q-22.393 40.598-22.393 41.340Q-22.393 42.061-22.123 42.586Q-21.853 43.111-21.198 43.111M-18.065 43.292L-18.065 41.850Q-18.065 41.819-18.036 41.795Q-18.008 41.771-17.977 41.771L-17.867 41.771Q-17.832 41.771-17.810 41.793Q-17.788 41.815-17.779 41.850Q-17.520 43.111-16.553 43.111Q-16.127 43.111-15.832 42.927Q-15.538 42.742-15.538 42.338Q-15.538 42.044-15.769 41.848Q-15.999 41.652-16.311 41.591L-16.913 41.472Q-17.379 41.384-17.722 41.101Q-18.065 40.817-18.065 40.378Q-18.065 39.785-17.627 39.512Q-17.190 39.240-16.553 39.240Q-16.074 39.240-15.727 39.486L-15.476 39.262Q-15.419 39.240-15.419 39.240L-15.366 39.240Q-15.340 39.240-15.307 39.266Q-15.274 39.293-15.274 39.323L-15.274 40.483Q-15.274 40.514-15.309 40.541Q-15.344 40.567-15.366 40.567L-15.476 40.567Q-15.498 40.567-15.531 40.538Q-15.564 40.510-15.564 40.483Q-15.564 40.018-15.830 39.747Q-16.096 39.477-16.562 39.477Q-16.966 39.477-17.269 39.622Q-17.572 39.767-17.572 40.123Q-17.572 40.369-17.355 40.523Q-17.137 40.677-16.861 40.734L-16.232 40.861Q-15.916 40.923-15.645 41.090Q-15.375 41.257-15.208 41.523Q-15.041 41.789-15.041 42.105Q-15.041 42.747-15.468 43.061Q-15.894 43.375-16.553 43.375Q-16.825 43.375-17.091 43.281Q-17.357 43.186-17.537 42.997L-17.858 43.336Q-17.876 43.375-17.924 43.375L-17.977 43.375Q-17.999 43.375-18.032 43.347Q-18.065 43.318-18.065 43.292",[865],[848,2843,2844],{"transform":2831},[861,2845],{"d":2846,"fill":850,"stroke":850,"className":2847,"style":866},"M-10.898 43.103Q-10.898 43.050-10.889 43.015L-10.221 40.347Q-10.168 40.149-10.168 39.952Q-10.168 39.556-10.432 39.556Q-10.718 39.556-10.852 39.879Q-10.986 40.202-11.104 40.708Q-11.122 40.791-11.197 40.791L-11.302 40.791Q-11.350 40.791-11.372 40.752Q-11.394 40.712-11.394 40.672Q-11.232 40.053-11.032 39.675Q-10.832 39.297-10.410 39.297Q-10.190 39.297-9.986 39.391Q-9.782 39.486-9.652 39.659Q-9.522 39.833-9.522 40.053Q-9.245 39.701-8.883 39.499Q-8.520 39.297-8.107 39.297Q-7.611 39.297-7.314 39.550Q-7.017 39.802-7.017 40.286Q-7.017 40.659-7.178 41.154Q-7.338 41.648-7.593 42.320Q-7.712 42.606-7.712 42.843Q-7.712 43.111-7.523 43.111Q-7.281 43.111-7.085 42.925Q-6.890 42.738-6.769 42.472Q-6.648 42.206-6.587 41.960Q-6.578 41.929-6.554 41.905Q-6.530 41.881-6.499 41.881L-6.389 41.881Q-6.345 41.881-6.323 41.914Q-6.301 41.947-6.301 41.995Q-6.433 42.527-6.751 42.951Q-7.070 43.375-7.532 43.375Q-7.861 43.375-8.096 43.162Q-8.331 42.949-8.331 42.615Q-8.331 42.435-8.270 42.285Q-8.011 41.622-7.839 41.081Q-7.668 40.541-7.668 40.149Q-7.668 39.996-7.709 39.859Q-7.751 39.723-7.852 39.640Q-7.953 39.556-8.125 39.556Q-8.621 39.556-8.990 39.868Q-9.360 40.180-9.628 40.690L-10.212 43.050Q-10.243 43.186-10.359 43.281Q-10.476 43.375-10.612 43.375Q-10.731 43.375-10.814 43.300Q-10.898 43.226-10.898 43.103",[865],[861,2849],{"fill":854,"d":2850},"M-47.92 43.274V-57.154",[861,2852],{"stroke":854,"d":2853},"m-47.92-59.154-1.6 3.2 1.6-1.2 1.6 1.2",[848,2855,2857],{"transform":2856},"translate(-9.044 -105.961)",[861,2858],{"d":2859,"fill":850,"stroke":850,"className":2860,"style":866},"M-47.612 43.292L-47.612 41.850Q-47.612 41.819-47.584 41.795Q-47.555 41.771-47.524 41.771L-47.415 41.771Q-47.379 41.771-47.358 41.793Q-47.336 41.815-47.327 41.850Q-47.067 43.111-46.101 43.111Q-45.674 43.111-45.380 42.927Q-45.086 42.742-45.086 42.338Q-45.086 42.044-45.316 41.848Q-45.547 41.652-45.859 41.591L-46.461 41.472Q-46.927 41.384-47.270 41.101Q-47.612 40.817-47.612 40.378Q-47.612 39.785-47.175 39.512Q-46.738 39.240-46.101 39.240Q-45.622 39.240-45.274 39.486L-45.024 39.262Q-44.967 39.240-44.967 39.240L-44.914 39.240Q-44.888 39.240-44.855 39.266Q-44.822 39.293-44.822 39.323L-44.822 40.483Q-44.822 40.514-44.857 40.541Q-44.892 40.567-44.914 40.567L-45.024 40.567Q-45.046 40.567-45.079 40.538Q-45.112 40.510-45.112 40.483Q-45.112 40.018-45.378 39.747Q-45.644 39.477-46.109 39.477Q-46.514 39.477-46.817 39.622Q-47.120 39.767-47.120 40.123Q-47.120 40.369-46.903 40.523Q-46.685 40.677-46.408 40.734L-45.780 40.861Q-45.463 40.923-45.193 41.090Q-44.923 41.257-44.756 41.523Q-44.589 41.789-44.589 42.105Q-44.589 42.747-45.015 43.061Q-45.441 43.375-46.101 43.375Q-46.373 43.375-46.639 43.281Q-46.905 43.186-47.085 42.997L-47.406 43.336Q-47.423 43.375-47.472 43.375L-47.524 43.375Q-47.546 43.375-47.579 43.347Q-47.612 43.318-47.612 43.292M-41.908 43.274L-43.969 43.274L-43.969 42.958Q-43.662 42.958-43.471 42.905Q-43.279 42.852-43.279 42.663L-43.279 37.948Q-43.279 37.706-43.350 37.598Q-43.420 37.491-43.554 37.467Q-43.688 37.442-43.969 37.442L-43.969 37.126L-42.603 37.029L-42.603 42.663Q-42.603 42.852-42.409 42.905Q-42.216 42.958-41.908 42.958L-41.908 43.274M-41.451 41.367Q-41.451 40.800-41.179 40.312Q-40.906 39.824-40.436 39.532Q-39.966 39.240-39.399 39.240Q-38.977 39.240-38.601 39.409Q-38.226 39.578-37.949 39.870Q-37.672 40.163-37.514 40.558Q-37.356 40.954-37.356 41.367Q-37.356 41.916-37.635 42.378Q-37.914 42.839-38.382 43.107Q-38.850 43.375-39.399 43.375Q-39.953 43.375-40.423 43.107Q-40.893 42.839-41.172 42.378Q-41.451 41.916-41.451 41.367M-39.399 43.085Q-38.902 43.085-38.626 42.824Q-38.349 42.562-38.256 42.158Q-38.164 41.753-38.164 41.257Q-38.164 40.782-38.263 40.393Q-38.362 40.004-38.634 39.754Q-38.907 39.503-39.399 39.503Q-40.111 39.503-40.375 39.998Q-40.638 40.492-40.638 41.257Q-40.638 42.057-40.383 42.571Q-40.128 43.085-39.399 43.085M-36.156 42.202L-36.156 39.710L-36.920 39.710L-36.920 39.451Q-36.516 39.451-36.250 39.185Q-35.984 38.919-35.864 38.519Q-35.743 38.119-35.743 37.737L-35.453 37.737L-35.453 39.394L-34.165 39.394L-34.165 39.710L-35.453 39.710L-35.453 42.167Q-35.453 42.536-35.327 42.810Q-35.202 43.085-34.877 43.085Q-34.578 43.085-34.440 42.791Q-34.301 42.496-34.301 42.167L-34.301 41.644L-34.016 41.644L-34.016 42.202Q-34.016 42.479-34.126 42.751Q-34.235 43.024-34.449 43.199Q-34.662 43.375-34.943 43.375Q-35.303 43.375-35.576 43.237Q-35.848 43.098-36.002 42.835Q-36.156 42.571-36.156 42.202M-33.194 43.292L-33.194 41.850Q-33.194 41.819-33.165 41.795Q-33.137 41.771-33.106 41.771L-32.996 41.771Q-32.961 41.771-32.939 41.793Q-32.917 41.815-32.908 41.850Q-32.649 43.111-31.682 43.111Q-31.256 43.111-30.962 42.927Q-30.667 42.742-30.667 42.338Q-30.667 42.044-30.898 41.848Q-31.128 41.652-31.441 41.591L-32.043 41.472Q-32.508 41.384-32.851 41.101Q-33.194 40.817-33.194 40.378Q-33.194 39.785-32.757 39.512Q-32.319 39.240-31.682 39.240Q-31.203 39.240-30.856 39.486L-30.606 39.262Q-30.548 39.240-30.548 39.240L-30.496 39.240Q-30.469 39.240-30.436 39.266Q-30.403 39.293-30.403 39.323L-30.403 40.483Q-30.403 40.514-30.439 40.541Q-30.474 40.567-30.496 40.567L-30.606 40.567Q-30.628 40.567-30.660 40.538Q-30.693 40.510-30.693 40.483Q-30.693 40.018-30.959 39.747Q-31.225 39.477-31.691 39.477Q-32.095 39.477-32.399 39.622Q-32.702 39.767-32.702 40.123Q-32.702 40.369-32.484 40.523Q-32.267 40.677-31.990 40.734L-31.361 40.861Q-31.045 40.923-30.775 41.090Q-30.504 41.257-30.337 41.523Q-30.170 41.789-30.170 42.105Q-30.170 42.747-30.597 43.061Q-31.023 43.375-31.682 43.375Q-31.955 43.375-32.221 43.281Q-32.486 43.186-32.667 42.997L-32.987 43.336Q-33.005 43.375-33.053 43.375L-33.106 43.375Q-33.128 43.375-33.161 43.347Q-33.194 43.318-33.194 43.292",[865],[861,2862],{"fill":854,"stroke":2863,"d":2864},"var(--tk-soft-neutral)","M-47.92 37.584h209.415",[848,2866,2868],{"transform":2867},"translate(-10.364 -3.435)",[861,2869],{"d":2870,"fill":850,"stroke":850,"className":2871,"style":910},"M-44.594 43.274L-47.124 43.274L-47.124 42.994Q-46.156 42.994-46.156 42.785L-46.156 39.166Q-46.549 39.354-47.171 39.354L-47.171 39.073Q-46.754 39.073-46.390 38.972Q-46.026 38.872-45.770 38.626L-45.644 38.626Q-45.579 38.643-45.562 38.711L-45.562 42.785Q-45.562 42.994-44.594 42.994",[865],[861,2873],{"fill":854,"stroke":2863,"d":2874},"M-47.92 31.893h209.415",[848,2876,2878],{"transform":2877},"translate(-10.364 -9.125)",[861,2879],{"d":2880,"fill":850,"stroke":850,"className":2881,"style":910},"M-44.594 43.274L-47.479 43.274L-47.479 43.072Q-47.479 43.042-47.452 43.014L-46.204 41.797Q-46.132 41.722-46.090 41.680Q-46.047 41.637-45.968 41.558Q-45.555 41.145-45.324 40.787Q-45.093 40.430-45.093 40.006Q-45.093 39.774-45.172 39.571Q-45.251 39.367-45.392 39.217Q-45.534 39.066-45.729 38.986Q-45.924 38.906-46.156 38.906Q-46.467 38.906-46.725 39.065Q-46.983 39.224-47.113 39.501L-47.093 39.501Q-46.925 39.501-46.818 39.612Q-46.710 39.723-46.710 39.887Q-46.710 40.044-46.819 40.157Q-46.929 40.270-47.093 40.270Q-47.253 40.270-47.366 40.157Q-47.479 40.044-47.479 39.887Q-47.479 39.511-47.271 39.224Q-47.062 38.937-46.727 38.781Q-46.392 38.626-46.037 38.626Q-45.613 38.626-45.233 38.784Q-44.854 38.943-44.620 39.260Q-44.386 39.576-44.386 40.006Q-44.386 40.317-44.526 40.586Q-44.666 40.854-44.871 41.059Q-45.076 41.264-45.439 41.546Q-45.801 41.828-45.910 41.924L-46.765 42.652L-46.122 42.652Q-45.859 42.652-45.570 42.650Q-45.281 42.649-45.063 42.640Q-44.844 42.631-44.827 42.614Q-44.765 42.549-44.728 42.382Q-44.690 42.214-44.652 41.972L-44.386 41.972",[865],[861,2883],{"fill":854,"stroke":2863,"d":2884},"M-47.92 20.512h209.415",[848,2886,2888],{"transform":2887},"translate(-10.364 -20.506)",[861,2889],{"d":2890,"fill":850,"stroke":850,"className":2891,"style":910},"M-45.603 42.126L-47.647 42.126L-47.647 41.845L-45.316 38.673Q-45.281 38.626-45.216 38.626L-45.080 38.626Q-45.035 38.626-45.008 38.653Q-44.981 38.680-44.981 38.725L-44.981 41.845L-44.218 41.845L-44.218 42.126L-44.981 42.126L-44.981 42.785Q-44.981 42.994-44.225 42.994L-44.225 43.274L-46.358 43.274L-46.358 42.994Q-45.603 42.994-45.603 42.785L-45.603 42.126M-45.555 39.401L-47.346 41.845L-45.555 41.845",[865],[861,2893],{"fill":854,"stroke":2863,"d":2894},"M-47.92-2.25h209.415",[848,2896,2898],{"transform":2897},"translate(-10.364 -43.268)",[861,2899],{"d":2900,"fill":850,"stroke":850,"className":2901,"style":910},"M-47.541 42.197Q-47.541 41.756-47.238 41.435Q-46.936 41.114-46.484 40.922L-46.724 40.782Q-46.994 40.622-47.160 40.364Q-47.325 40.106-47.325 39.808Q-47.325 39.456-47.120 39.184Q-46.915 38.913-46.594 38.769Q-46.273 38.626-45.931 38.626Q-45.609 38.626-45.286 38.742Q-44.963 38.858-44.752 39.099Q-44.540 39.340-44.540 39.675Q-44.540 40.037-44.784 40.300Q-45.028 40.564-45.408 40.741L-45.008 40.977Q-44.813 41.090-44.654 41.259Q-44.495 41.428-44.408 41.637Q-44.321 41.845-44.321 42.078Q-44.321 42.481-44.555 42.785Q-44.789 43.089-45.163 43.252Q-45.538 43.414-45.931 43.414Q-46.317 43.414-46.686 43.277Q-47.055 43.141-47.298 42.864Q-47.541 42.587-47.541 42.197M-47.093 42.197Q-47.093 42.484-46.924 42.707Q-46.754 42.929-46.486 43.045Q-46.218 43.161-45.931 43.161Q-45.493 43.161-45.131 42.944Q-44.769 42.727-44.769 42.320Q-44.769 42.119-44.897 41.941Q-45.025 41.763-45.203 41.664L-46.225 41.069Q-46.464 41.179-46.662 41.345Q-46.860 41.510-46.977 41.726Q-47.093 41.941-47.093 42.197M-46.570 40.068L-45.650 40.601Q-45.343 40.441-45.141 40.208Q-44.940 39.976-44.940 39.675Q-44.940 39.436-45.085 39.246Q-45.230 39.056-45.462 38.957Q-45.695 38.858-45.931 38.858Q-46.153 38.858-46.382 38.928Q-46.611 38.998-46.768 39.155Q-46.925 39.313-46.925 39.542Q-46.925 39.856-46.570 40.068",[865],[861,2903],{"fill":854,"stroke":2863,"d":2904},"M-47.92-47.773h209.415",[848,2906,2908],{"transform":2907},"translate(-14.35 -88.792)",[861,2909],{"d":2910,"fill":850,"stroke":850,"className":2911,"style":910},"M-44.594 43.274L-47.124 43.274L-47.124 42.994Q-46.156 42.994-46.156 42.785L-46.156 39.166Q-46.549 39.354-47.171 39.354L-47.171 39.073Q-46.754 39.073-46.390 38.972Q-46.026 38.872-45.770 38.626L-45.644 38.626Q-45.579 38.643-45.562 38.711L-45.562 42.785Q-45.562 42.994-44.594 42.994L-44.594 43.274M-41.949 43.414Q-42.407 43.414-42.725 43.199Q-43.043 42.983-43.224 42.631Q-43.405 42.279-43.482 41.859Q-43.559 41.439-43.559 41.011Q-43.559 40.427-43.306 39.871Q-43.053 39.316-42.583 38.971Q-42.113 38.626-41.515 38.626Q-41.105 38.626-40.821 38.824Q-40.537 39.022-40.537 39.425Q-40.537 39.521-40.583 39.600Q-40.629 39.678-40.710 39.723Q-40.790 39.767-40.879 39.767Q-41.026 39.767-41.127 39.670Q-41.228 39.572-41.228 39.425Q-41.228 39.295-41.137 39.188Q-41.046 39.080-40.913 39.080Q-41.101 38.858-41.515 38.858Q-41.829 38.858-42.103 39.022Q-42.376 39.186-42.544 39.460Q-42.732 39.750-42.796 40.116Q-42.861 40.482-42.861 40.936Q-42.711 40.642-42.446 40.464Q-42.181 40.287-41.867 40.287Q-41.436 40.287-41.087 40.493Q-40.739 40.700-40.539 41.056Q-40.339 41.411-40.339 41.838Q-40.339 42.283-40.556 42.643Q-40.773 43.004-41.146 43.209Q-41.518 43.414-41.949 43.414M-41.949 43.161Q-41.573 43.161-41.369 42.978Q-41.166 42.795-41.103 42.512Q-41.040 42.228-41.040 41.838Q-41.040 41.452-41.094 41.172Q-41.149 40.892-41.344 40.700Q-41.539 40.509-41.908 40.509Q-42.198 40.509-42.410 40.685Q-42.622 40.861-42.730 41.134Q-42.837 41.408-42.837 41.691L-42.837 41.832L-42.837 41.873Q-42.837 42.378-42.626 42.770Q-42.414 43.161-41.949 43.161",[865],[861,2913],{"fill":1570,"stroke":854,"d":2914},"M-45.564 43.274v-5.69h8.377v5.69ZM-32.476 43.274v-11.38h8.377v11.38ZM-19.387 43.274V26.203h8.377v17.071ZM-6.299 43.274V20.512h8.377v22.762ZM6.79 43.274V14.822h8.377v28.452ZM19.878 43.274V9.131h8.377v34.143ZM32.967 43.274V3.441h8.376v39.833ZM46.055 43.274V-2.249h8.377v45.523ZM59.144 43.274V-7.94h8.376v51.214ZM72.232 43.274V-13.63h8.377v56.904ZM85.32 43.274V-19.32h8.377v62.595ZM98.409 43.274V-25.01h8.377v68.285ZM111.497 43.274v-73.976h8.377v73.976ZM124.586 43.274v-79.666h8.377v79.666ZM137.674 43.274v-85.357h8.377v85.357ZM150.763 43.274v-91.047h8.377v91.047Zm8.377-91.047",[861,2916],{"fill":854,"stroke":986,"d":2917,"style":1615},"M-47.92 37.584h13.089v-5.69h13.088V20.511H4.434V-2.249h52.354v-45.524h104.707",[848,2919,2920],{"fill":986,"stroke":986},[848,2921,2922,2929],{"fill":986,"stroke":854,"fontFamily":1535,"fontSize":913},[848,2923,2925],{"transform":2924},"translate(72.3 -95.941)",[861,2926],{"d":2927,"fill":986,"stroke":986,"className":2928,"style":910},"M-47.606 41.763Q-47.606 41.435-47.471 41.134Q-47.336 40.834-47.100 40.613Q-46.864 40.393-46.560 40.273Q-46.255 40.153-45.931 40.153Q-45.425 40.153-45.076 40.256Q-44.728 40.358-44.728 40.734Q-44.728 40.881-44.825 40.982Q-44.922 41.083-45.069 41.083Q-45.223 41.083-45.322 40.984Q-45.421 40.885-45.421 40.734Q-45.421 40.546-45.281 40.454Q-45.483 40.403-45.924 40.403Q-46.279 40.403-46.508 40.599Q-46.737 40.796-46.838 41.105Q-46.939 41.415-46.939 41.763Q-46.939 42.112-46.813 42.418Q-46.686 42.724-46.431 42.908Q-46.177 43.093-45.821 43.093Q-45.599 43.093-45.415 43.009Q-45.230 42.925-45.095 42.770Q-44.960 42.614-44.902 42.406Q-44.888 42.351-44.834 42.351L-44.721 42.351Q-44.690 42.351-44.668 42.375Q-44.646 42.399-44.646 42.433L-44.646 42.454Q-44.731 42.741-44.919 42.939Q-45.107 43.137-45.372 43.240Q-45.637 43.342-45.931 43.342Q-46.361 43.342-46.749 43.136Q-47.137 42.929-47.371 42.566Q-47.606 42.204-47.606 41.763M-44 42.546Q-44 42.214-43.776 41.987Q-43.552 41.760-43.208 41.632Q-42.865 41.503-42.492 41.451Q-42.120 41.398-41.816 41.398L-41.816 41.145Q-41.816 40.940-41.923 40.760Q-42.031 40.581-42.212 40.478Q-42.393 40.376-42.602 40.376Q-43.008 40.376-43.244 40.468Q-43.155 40.505-43.109 40.589Q-43.063 40.673-43.063 40.775Q-43.063 40.871-43.109 40.950Q-43.155 41.028-43.236 41.073Q-43.316 41.117-43.405 41.117Q-43.555 41.117-43.656 41.020Q-43.757 40.922-43.757 40.775Q-43.757 40.153-42.602 40.153Q-42.390 40.153-42.140 40.217Q-41.891 40.280-41.689 40.399Q-41.487 40.519-41.361 40.704Q-41.234 40.888-41.234 41.131L-41.234 42.707Q-41.234 42.823-41.173 42.919Q-41.111 43.014-40.999 43.014Q-40.889 43.014-40.824 42.920Q-40.759 42.826-40.759 42.707L-40.759 42.259L-40.493 42.259L-40.493 42.707Q-40.493 42.977-40.720 43.142Q-40.947 43.308-41.228 43.308Q-41.436 43.308-41.573 43.154Q-41.710 43.001-41.733 42.785Q-41.880 43.052-42.162 43.197Q-42.444 43.342-42.769 43.342Q-43.046 43.342-43.330 43.267Q-43.613 43.192-43.806 43.013Q-44 42.833-44 42.546M-43.384 42.546Q-43.384 42.720-43.284 42.850Q-43.183 42.980-43.027 43.050Q-42.872 43.120-42.708 43.120Q-42.489 43.120-42.280 43.023Q-42.072 42.925-41.944 42.744Q-41.816 42.563-41.816 42.337L-41.816 41.609Q-42.140 41.609-42.506 41.700Q-42.872 41.791-43.128 42.003Q-43.384 42.214-43.384 42.546M-38.432 44.631L-40.062 44.631L-40.062 44.351Q-39.833 44.351-39.684 44.316Q-39.536 44.282-39.536 44.142L-39.536 40.796Q-39.536 40.625-39.672 40.584Q-39.809 40.543-40.062 40.543L-40.062 40.263L-38.982 40.188L-38.982 40.594Q-38.760 40.393-38.473 40.290Q-38.186 40.188-37.878 40.188Q-37.451 40.188-37.087 40.401Q-36.723 40.615-36.509 40.979Q-36.295 41.343-36.295 41.763Q-36.295 42.208-36.535 42.572Q-36.774 42.936-37.167 43.139Q-37.560 43.342-38.004 43.342Q-38.271 43.342-38.519 43.242Q-38.767 43.141-38.955 42.960L-38.955 44.142Q-38.955 44.279-38.806 44.315Q-38.657 44.351-38.432 44.351L-38.432 44.631M-38.955 40.943L-38.955 42.553Q-38.821 42.806-38.579 42.963Q-38.336 43.120-38.059 43.120Q-37.731 43.120-37.478 42.919Q-37.225 42.717-37.092 42.399Q-36.959 42.081-36.959 41.763Q-36.959 41.534-37.024 41.305Q-37.088 41.076-37.217 40.878Q-37.345 40.680-37.540 40.560Q-37.734 40.441-37.967 40.441Q-38.261 40.441-38.529 40.570Q-38.797 40.700-38.955 40.943M-35.602 42.546Q-35.602 42.214-35.378 41.987Q-35.154 41.760-34.810 41.632Q-34.467 41.503-34.094 41.451Q-33.722 41.398-33.418 41.398L-33.418 41.145Q-33.418 40.940-33.525 40.760Q-33.633 40.581-33.814 40.478Q-33.995 40.376-34.204 40.376Q-34.610 40.376-34.846 40.468Q-34.757 40.505-34.711 40.589Q-34.665 40.673-34.665 40.775Q-34.665 40.871-34.711 40.950Q-34.757 41.028-34.838 41.073Q-34.918 41.117-35.007 41.117Q-35.157 41.117-35.258 41.020Q-35.359 40.922-35.359 40.775Q-35.359 40.153-34.204 40.153Q-33.992 40.153-33.742 40.217Q-33.493 40.280-33.291 40.399Q-33.089 40.519-32.963 40.704Q-32.837 40.888-32.837 41.131L-32.837 42.707Q-32.837 42.823-32.775 42.919Q-32.713 43.014-32.601 43.014Q-32.491 43.014-32.426 42.920Q-32.361 42.826-32.361 42.707L-32.361 42.259L-32.095 42.259L-32.095 42.707Q-32.095 42.977-32.322 43.142Q-32.549 43.308-32.830 43.308Q-33.038 43.308-33.175 43.154Q-33.312 43.001-33.336 42.785Q-33.483 43.052-33.764 43.197Q-34.046 43.342-34.371 43.342Q-34.648 43.342-34.932 43.267Q-35.215 43.192-35.409 43.013Q-35.602 42.833-35.602 42.546M-34.986 42.546Q-34.986 42.720-34.886 42.850Q-34.785 42.980-34.629 43.050Q-34.474 43.120-34.310 43.120Q-34.091 43.120-33.882 43.023Q-33.674 42.925-33.546 42.744Q-33.418 42.563-33.418 42.337L-33.418 41.609Q-33.742 41.609-34.108 41.700Q-34.474 41.791-34.730 42.003Q-34.986 42.214-34.986 42.546M-31.678 41.763Q-31.678 41.435-31.543 41.134Q-31.408 40.834-31.172 40.613Q-30.936 40.393-30.632 40.273Q-30.328 40.153-30.003 40.153Q-29.497 40.153-29.149 40.256Q-28.800 40.358-28.800 40.734Q-28.800 40.881-28.897 40.982Q-28.995 41.083-29.142 41.083Q-29.295 41.083-29.395 40.984Q-29.494 40.885-29.494 40.734Q-29.494 40.546-29.354 40.454Q-29.555 40.403-29.996 40.403Q-30.352 40.403-30.581 40.599Q-30.810 40.796-30.910 41.105Q-31.011 41.415-31.011 41.763Q-31.011 42.112-30.885 42.418Q-30.758 42.724-30.504 42.908Q-30.249 43.093-29.894 43.093Q-29.671 43.093-29.487 43.009Q-29.302 42.925-29.167 42.770Q-29.032 42.614-28.974 42.406Q-28.961 42.351-28.906 42.351L-28.793 42.351Q-28.762 42.351-28.740 42.375Q-28.718 42.399-28.718 42.433L-28.718 42.454Q-28.803 42.741-28.991 42.939Q-29.179 43.137-29.444 43.240Q-29.709 43.342-30.003 43.342Q-30.434 43.342-30.822 43.136Q-31.210 42.929-31.444 42.566Q-31.678 42.204-31.678 41.763M-26.513 43.274L-28.065 43.274L-28.065 42.994Q-27.839 42.994-27.691 42.960Q-27.542 42.925-27.542 42.785L-27.542 40.936Q-27.542 40.748-27.590 40.664Q-27.638 40.581-27.735 40.562Q-27.833 40.543-28.045 40.543L-28.045 40.263L-26.988 40.188L-26.988 42.785Q-26.988 42.925-26.857 42.960Q-26.725 42.994-26.513 42.994L-26.513 43.274M-27.785 38.967Q-27.785 38.796-27.662 38.677Q-27.539 38.557-27.368 38.557Q-27.200 38.557-27.077 38.677Q-26.954 38.796-26.954 38.967Q-26.954 39.142-27.077 39.265Q-27.200 39.388-27.368 39.388Q-27.539 39.388-27.662 39.265Q-27.785 39.142-27.785 38.967M-25.341 42.433L-25.341 40.536L-25.980 40.536L-25.980 40.314Q-25.662 40.314-25.445 40.104Q-25.228 39.894-25.127 39.584Q-25.026 39.275-25.026 38.967L-24.760 38.967L-24.760 40.256L-23.683 40.256L-23.683 40.536L-24.760 40.536L-24.760 42.420Q-24.760 42.696-24.656 42.895Q-24.551 43.093-24.292 43.093Q-24.134 43.093-24.028 42.989Q-23.922 42.884-23.873 42.731Q-23.823 42.577-23.823 42.420L-23.823 42.006L-23.557 42.006L-23.557 42.433Q-23.557 42.659-23.656 42.869Q-23.755 43.079-23.940 43.211Q-24.124 43.342-24.353 43.342Q-24.791 43.342-25.066 43.105Q-25.341 42.867-25.341 42.433",[865],[848,2930,2931],{"transform":2924},[861,2932],{"d":2933,"fill":986,"stroke":986,"className":2934,"style":910},"M-22.597 44.409Q-22.467 44.477-22.330 44.477Q-22.159 44.477-22.009 44.388Q-21.858 44.299-21.747 44.154Q-21.636 44.009-21.558 43.841L-21.294 43.274L-22.463 40.748Q-22.538 40.601-22.668 40.569Q-22.798 40.536-23.031 40.536L-23.031 40.256L-21.510 40.256L-21.510 40.536Q-21.858 40.536-21.858 40.683Q-21.855 40.704-21.853 40.721Q-21.851 40.738-21.851 40.748L-20.994 42.607L-20.221 40.936Q-20.187 40.868-20.187 40.789Q-20.187 40.676-20.271 40.606Q-20.354 40.536-20.467 40.536L-20.467 40.256L-19.271 40.256L-19.271 40.536Q-19.490 40.536-19.662 40.640Q-19.835 40.745-19.927 40.936L-21.264 43.841Q-21.434 44.211-21.704 44.457Q-21.975 44.703-22.330 44.703Q-22.600 44.703-22.819 44.537Q-23.038 44.371-23.038 44.108Q-23.038 43.971-22.945 43.882Q-22.853 43.794-22.713 43.794Q-22.576 43.794-22.487 43.882Q-22.398 43.971-22.398 44.108Q-22.398 44.211-22.451 44.289Q-22.504 44.368-22.597 44.409",[865],[1032,2936,2938,2939,2954,2955,3068,3069,3093],{"className":2937},[1035],"Doubling growth over ",[415,2940,2942],{"className":2941},[418],[415,2943,2945],{"className":2944,"ariaHidden":423},[422],[415,2946,2948,2951],{"className":2947},[427],[415,2949],{"className":2950,"style":1739},[431],[415,2952,1068],{"className":2953},[436]," appends: the capacity staircase (accent) jumps ",[415,2956,2958],{"className":2957},[418],[415,2959,2961,2987,3011,3035,3059],{"className":2960,"ariaHidden":423},[422],[415,2962,2964,2967,2970,2974,2977,2981,2984],{"className":2963},[427],[415,2965],{"className":2966,"style":1739},[431],[415,2968,511],{"className":2969},[436],[415,2971],{"className":2972,"style":2973},[565],"margin-right:-0.1667em;",[415,2975],{"className":2976,"style":2228},[565],[415,2978,2980],{"className":2979},[1294],"→",[415,2982],{"className":2983,"style":2973},[565],[415,2985],{"className":2986,"style":2228},[565],[415,2988,2990,2993,2996,2999,3002,3005,3008],{"className":2989},[427],[415,2991],{"className":2992,"style":1739},[431],[415,2994,1966],{"className":2995},[436],[415,2997],{"className":2998,"style":2973},[565],[415,3000],{"className":3001,"style":2228},[565],[415,3003,2980],{"className":3004},[1294],[415,3006],{"className":3007,"style":2973},[565],[415,3009],{"className":3010,"style":2228},[565],[415,3012,3014,3017,3020,3023,3026,3029,3032],{"className":3013},[427],[415,3015],{"className":3016,"style":1739},[431],[415,3018,1078],{"className":3019},[436],[415,3021],{"className":3022,"style":2973},[565],[415,3024],{"className":3025,"style":2228},[565],[415,3027,2980],{"className":3028},[1294],[415,3030],{"className":3031,"style":2973},[565],[415,3033],{"className":3034,"style":2228},[565],[415,3036,3038,3041,3044,3047,3050,3053,3056],{"className":3037},[427],[415,3039],{"className":3040,"style":1739},[431],[415,3042,1759],{"className":3043},[436],[415,3045],{"className":3046,"style":2973},[565],[415,3048],{"className":3049,"style":2228},[565],[415,3051,2980],{"className":3052},[1294],[415,3054],{"className":3055,"style":2973},[565],[415,3057],{"className":3058,"style":2228},[565],[415,3060,3062,3065],{"className":3061},[427],[415,3063],{"className":3064,"style":1739},[431],[415,3066,1068],{"className":3067},[436],", while the size (filled) rises by one each append. Each jump is a ",[415,3070,3072],{"className":3071},[418],[415,3073,3075],{"className":3074,"ariaHidden":423},[422],[415,3076,3078,3081,3084,3087,3090],{"className":3077},[427],[415,3079],{"className":3080,"style":616},[431],[415,3082,774],{"className":3083},[436],[415,3085,626],{"className":3086},[625],[415,3088,438],{"className":3089},[436,437],[415,3091,634],{"className":3092},[633]," copy, and the gap above the fill is the reserved-but-unused capacity.",[403,3095,3097],{"id":3096},"linked-lists","Linked lists",[381,3099,409,3100,3103,3104,3107,3108,3128,3129,3156,3157,3184,3185,3209,3210,3229,3230,3233,3234,3261],{},[394,3101,3102],{},"linked list"," threads elements through pointers. In a ",[394,3105,3106],{},"singly linked list","\neach node stores a ",[415,3109,3111],{"className":3110},[418],[415,3112,3114],{"className":3113,"ariaHidden":423},[422],[415,3115,3117,3120,3123],{"className":3116},[427],[415,3118],{"className":3119,"style":1839},[431],[415,3121,2051],{"className":3122,"style":2050},[436,437],[415,3124,3127],{"className":3125,"style":3126},[436,437],"margin-right:0.0359em;","ey"," and a ",[415,3130,3132],{"className":3131},[418],[415,3133,3135],{"className":3134,"ariaHidden":423},[422],[415,3136,3138,3142,3145,3149,3152],{"className":3137},[427],[415,3139],{"className":3140,"style":3141},[431],"height:0.6151em;",[415,3143,438],{"className":3144},[436,437],[415,3146,3148],{"className":3147},[436,437],"e",[415,3150,1801],{"className":3151},[436,437],[415,3153,3155],{"className":3154},[436,437],"t"," pointer to its successor; a ",[415,3158,3160],{"className":3159},[418],[415,3161,3163],{"className":3162,"ariaHidden":423},[422],[415,3164,3166,3170,3174,3177,3180],{"className":3165},[427],[415,3167],{"className":3168,"style":3169},[431],"height:0.6944em;",[415,3171,3173],{"className":3172},[436,437],"h",[415,3175,3148],{"className":3176},[436,437],[415,3178,385],{"className":3179},[436,437],[415,3181,3183],{"className":3182},[436,437],"d"," pointer\nnames the first node and the last node's ",[415,3186,3188],{"className":3187},[418],[415,3189,3191],{"className":3190,"ariaHidden":423},[422],[415,3192,3194,3197,3200,3203,3206],{"className":3193},[427],[415,3195],{"className":3196,"style":3141},[431],[415,3198,438],{"className":3199},[436,437],[415,3201,3148],{"className":3202},[436,437],[415,3204,1801],{"className":3205},[436,437],[415,3207,3155],{"className":3208},[436,437]," is ",[415,3211,3213],{"className":3212},[418],[415,3214,3216],{"className":3215,"ariaHidden":423},[422],[415,3217,3219,3222],{"className":3218},[427],[415,3220],{"className":3221,"style":3169},[431],[415,3223,3225],{"className":3224},[436,1848],[415,3226,3228],{"className":3227},[436],"nil",". A ",[394,3231,3232],{},"doubly linked\nlist"," adds a ",[415,3235,3237],{"className":3236},[418],[415,3238,3240],{"className":3239,"ariaHidden":423},[422],[415,3241,3243,3247,3250,3254,3257],{"className":3242},[427],[415,3244],{"className":3245,"style":3246},[431],"height:0.625em;vertical-align:-0.1944em;",[415,3248,381],{"className":3249},[436,437],[415,3251,3253],{"className":3252,"style":620},[436,437],"r",[415,3255,3148],{"className":3256},[436,437],[415,3258,3260],{"className":3259,"style":3126},[436,437],"v"," pointer, so the list can be traversed in both directions and\na node can be removed knowing only itself.",[835,3263,3265,3376],{"className":3264},[838,839],[841,3266,3270],{"xmlns":843,"width":3267,"height":3268,"viewBox":3269},"480.267","86.720","-75 -75 360.201 65.040",[848,3271,3272,3275,3282,3285,3292,3295,3302,3305,3321,3324,3327,3330,3333,3336,3339,3342,3345,3348,3351,3358,3364,3367,3370,3373],{"stroke":850,"style":851},[861,3273],{"fill":854,"d":3274},"M-23.14-13.43h19.917v-22.762H-23.14ZM-2.823-13.43h22.762v-22.762H-2.823Z",[848,3276,3278],{"transform":3277},"translate(19.427 2.9)",[861,3279],{"d":3280,"fill":850,"stroke":850,"className":3281,"style":866},"M-12.119-25.198Q-11.872-24.899-11.266-24.899Q-10.985-24.899-10.745-25.037Q-10.506-25.176-10.328-25.398Q-10.150-25.620-10.040-25.883Q-9.807-26.459-9.807-27.575Q-9.974-27.210-10.279-26.986Q-10.585-26.762-10.967-26.762Q-11.503-26.762-11.919-27.041Q-12.334-27.320-12.565-27.786Q-12.795-28.252-12.795-28.779Q-12.795-29.192-12.648-29.561Q-12.501-29.931-12.237-30.207Q-11.974-30.484-11.604-30.645Q-11.235-30.805-10.822-30.805Q-10.264-30.805-9.890-30.513Q-9.517-30.221-9.313-29.757Q-9.108-29.293-9.029-28.777Q-8.950-28.261-8.950-27.729Q-8.950-27.013-9.218-26.290Q-9.486-25.567-10.009-25.090Q-10.532-24.613-11.257-24.613Q-11.807-24.613-12.184-24.862Q-12.562-25.110-12.562-25.628Q-12.562-25.747-12.505-25.850Q-12.448-25.954-12.347-26.013Q-12.246-26.072-12.119-26.072Q-11.934-26.072-11.811-25.940Q-11.688-25.809-11.688-25.628Q-11.688-25.453-11.815-25.325Q-11.943-25.198-12.119-25.198M-10.923-27.026Q-10.554-27.026-10.306-27.268Q-10.057-27.509-9.941-27.867Q-9.825-28.226-9.825-28.599Q-9.825-28.709-9.833-28.762Q-9.829-28.775-9.827-28.786Q-9.825-28.797-9.825-28.814Q-9.825-29.469-10.040-30.008Q-10.255-30.546-10.822-30.546Q-11.182-30.546-11.411-30.396Q-11.640-30.247-11.756-29.990Q-11.872-29.733-11.905-29.452Q-11.938-29.170-11.938-28.797L-11.938-28.762Q-11.938-28.436-11.912-28.149Q-11.886-27.861-11.787-27.602Q-11.688-27.342-11.477-27.184Q-11.266-27.026-10.923-27.026",[865],[861,3283],{"fill":854,"d":3284},"M20.339-13.43h19.917v-22.762H20.339ZM74.799-13.43h19.917v-22.762H74.799ZM95.116-13.43h22.762v-22.762H95.116Z",[848,3286,3288],{"transform":3287},"translate(115.054 2.9)",[861,3289],{"d":3290,"fill":850,"stroke":850,"className":3291,"style":866},"M-9.275-24.811L-12.307-24.811L-12.307-25.127Q-11.156-25.127-11.156-25.422L-11.156-30.146Q-11.644-29.913-12.365-29.913L-12.365-30.229Q-11.235-30.229-10.673-30.805L-10.528-30.805Q-10.493-30.805-10.460-30.772Q-10.427-30.739-10.427-30.704L-10.427-25.422Q-10.427-25.127-9.275-25.127L-9.275-24.811M-6.252-24.613Q-6.986-24.613-7.416-25.094Q-7.847-25.576-8.012-26.268Q-8.177-26.960-8.177-27.707Q-8.177-28.436-7.884-29.159Q-7.592-29.882-7.038-30.344Q-6.485-30.805-5.738-30.805Q-5.241-30.805-4.905-30.539Q-4.569-30.273-4.569-29.790Q-4.569-29.610-4.696-29.482Q-4.824-29.355-4.999-29.355Q-5.180-29.355-5.309-29.480Q-5.439-29.605-5.439-29.790Q-5.439-29.904-5.382-30.008Q-5.325-30.111-5.224-30.170Q-5.122-30.229-4.999-30.229Q-4.995-30.229-4.991-30.227Q-4.986-30.225-4.982-30.221Q-5.096-30.388-5.305-30.467Q-5.514-30.546-5.738-30.546Q-6.182-30.546-6.540-30.245Q-6.898-29.944-7.087-29.491Q-7.320-28.885-7.320-27.852Q-7.148-28.217-6.847-28.445Q-6.546-28.674-6.160-28.674Q-5.755-28.674-5.410-28.507Q-5.065-28.340-4.828-28.059Q-4.591-27.777-4.461-27.415Q-4.331-27.052-4.331-26.648Q-4.331-26.103-4.575-25.637Q-4.819-25.171-5.259-24.892Q-5.698-24.613-6.252-24.613M-6.252-24.899Q-5.790-24.899-5.555-25.156Q-5.320-25.413-5.254-25.787Q-5.188-26.160-5.188-26.630L-5.188-26.665Q-5.188-27.153-5.245-27.518Q-5.303-27.883-5.531-28.146Q-5.760-28.410-6.203-28.410Q-6.573-28.410-6.823-28.166Q-7.074-27.922-7.188-27.558Q-7.302-27.193-7.302-26.846Q-7.302-26.727-7.293-26.665Q-7.293-26.648-7.296-26.637Q-7.298-26.626-7.302-26.613Q-7.302-25.962-7.065-25.431Q-6.828-24.899-6.252-24.899",[865],[861,3293],{"fill":854,"d":3294},"M118.278-13.43h19.917v-22.762h-19.917ZM172.738-13.43h19.917v-22.762h-19.917ZM193.055-13.43h22.762v-22.762h-22.762Z",[848,3296,3298],{"transform":3297},"translate(215.306 2.9)",[861,3299],{"d":3300,"fill":850,"stroke":850,"className":3301,"style":866},"M-10.484-26.288L-12.923-26.288L-12.923-26.604L-10.097-30.752Q-10.053-30.805-9.987-30.805L-9.833-30.805Q-9.794-30.805-9.761-30.772Q-9.728-30.739-9.728-30.695L-9.728-26.604L-8.827-26.604L-8.827-26.288L-9.728-26.288L-9.728-25.422Q-9.728-25.127-8.827-25.127L-8.827-24.811L-11.380-24.811L-11.380-25.127Q-11.020-25.127-10.752-25.182Q-10.484-25.237-10.484-25.422L-10.484-26.288M-10.427-29.777L-12.589-26.604L-10.427-26.604",[865],[861,3303],{"fill":854,"d":3304},"M216.217-13.43h19.917v-22.762h-19.917Z",[848,3306,3308,3315],{"stroke":854,"fontFamily":3307,"fontSize":856},"cmti9",[848,3309,3311],{"transform":3310},"translate(12.305 -37.876)",[861,3312],{"d":3313,"fill":850,"stroke":850,"className":3314,"style":866},"M-12.514-24.974Q-12.510-24.996-12.507-25.011Q-12.505-25.026-12.505-25.053L-11.191-30.282Q-11.156-30.432-11.156-30.506Q-11.156-30.643-11.723-30.643Q-11.824-30.643-11.824-30.761Q-11.824-30.818-11.793-30.889Q-11.763-30.959-11.697-30.959L-10.501-31.056L-10.466-31.056Q-10.383-31.025-10.383-30.950L-10.383-30.915L-11.051-28.248Q-10.536-28.788-9.851-28.788Q-9.398-28.788-9.126-28.538Q-8.853-28.287-8.853-27.834Q-8.853-27.461-9.012-26.958Q-9.170-26.455-9.429-25.765Q-9.557-25.404-9.557-25.207Q-9.557-24.974-9.394-24.974Q-8.840-24.974-8.546-26.125Q-8.537-26.156-8.513-26.180Q-8.489-26.204-8.458-26.204L-8.295-26.204Q-8.256-26.204-8.229-26.167Q-8.203-26.129-8.203-26.090Q-8.335-25.558-8.640-25.134Q-8.946-24.710-9.411-24.710Q-9.715-24.710-9.928-24.923Q-10.141-25.136-10.141-25.448Q-10.141-25.646-10.075-25.800Q-9.807-26.512-9.640-27.039Q-9.473-27.566-9.473-27.962Q-9.473-28.190-9.565-28.360Q-9.658-28.529-9.869-28.529Q-10.712-28.529-11.275-27.360L-11.859-25.009Q-11.899-24.881-12.002-24.796Q-12.105-24.710-12.237-24.710Q-12.347-24.710-12.431-24.789Q-12.514-24.868-12.514-24.974M-6.107-24.710Q-6.537-24.710-6.838-24.936Q-7.140-25.163-7.291-25.532Q-7.443-25.901-7.443-26.314Q-7.443-26.789-7.267-27.232Q-7.091-27.676-6.779-28.030Q-6.467-28.384-6.043-28.586Q-5.619-28.788-5.144-28.788Q-4.766-28.788-4.479-28.582Q-4.191-28.375-4.191-28.006Q-4.191-27.606-4.432-27.364Q-4.674-27.123-5.057-27.013Q-5.439-26.903-5.790-26.879Q-6.142-26.854-6.595-26.854L-6.630-26.854Q-6.766-26.292-6.766-25.936Q-6.766-25.699-6.700-25.483Q-6.634-25.268-6.480-25.121Q-6.327-24.974-6.089-24.974Q-5.764-24.974-5.448-25.086Q-5.131-25.198-4.859-25.400Q-4.586-25.602-4.397-25.866Q-4.375-25.901-4.327-25.901Q-4.265-25.901-4.202-25.837Q-4.138-25.773-4.138-25.712Q-4.138-25.681-4.164-25.646Q-4.490-25.193-5.017-24.952Q-5.544-24.710-6.107-24.710M-6.559-27.114Q-6.067-27.114-5.659-27.162Q-5.250-27.210-4.922-27.406Q-4.595-27.602-4.595-28.015Q-4.595-28.243-4.760-28.386Q-4.925-28.529-5.153-28.529Q-5.685-28.529-6.041-28.113Q-6.397-27.698-6.559-27.114",[865],[848,3316,3317],{"transform":3310},[861,3318],{"d":3319,"fill":850,"stroke":850,"className":3320,"style":866},"M-2.559-24.710Q-3.104-24.710-3.408-25.136Q-3.711-25.562-3.711-26.134Q-3.711-26.683-3.425-27.314Q-3.140-27.944-2.647-28.366Q-2.155-28.788-1.584-28.788Q-1.355-28.788-1.151-28.661Q-0.947-28.533-0.828-28.322Q-0.788-28.450-0.685-28.529Q-0.582-28.608-0.450-28.608Q-0.345-28.608-0.263-28.535Q-0.182-28.463-0.182-28.349L-0.182-28.265L-0.810-25.765Q-0.876-25.510-0.876-25.316Q-0.876-24.974-0.661-24.974Q-0.538-24.974-0.432-25.101Q-0.327-25.228-0.252-25.417Q-0.178-25.606-0.123-25.824Q-0.068-26.041-0.046-26.125Q-0.037-26.156-0.013-26.180Q0.011-26.204 0.042-26.204L0.205-26.204Q0.244-26.204 0.271-26.167Q0.297-26.129 0.297-26.090Q0.148-25.483-0.050-25.097Q-0.248-24.710-0.670-24.710Q-0.960-24.710-1.175-24.870Q-1.390-25.031-1.470-25.308Q-1.689-25.053-1.977-24.881Q-2.265-24.710-2.559-24.710M-2.542-24.974Q-1.988-24.974-1.452-25.826L-0.982-27.720Q-1.017-28.041-1.166-28.285Q-1.316-28.529-1.606-28.529Q-1.935-28.529-2.208-28.219Q-2.480-27.909-2.639-27.518Q-2.713-27.333-2.814-26.978Q-2.915-26.622-2.979-26.285Q-3.043-25.949-3.043-25.747Q-3.043-25.448-2.924-25.211Q-2.806-24.974-2.542-24.974M2.156-24.710Q1.611-24.710 1.308-25.136Q1.005-25.562 1.005-26.134Q1.005-26.683 1.290-27.314Q1.576-27.944 2.068-28.366Q2.560-28.788 3.131-28.788Q3.360-28.788 3.564-28.661Q3.769-28.533 3.887-28.322L4.380-30.282Q4.415-30.432 4.415-30.506Q4.415-30.643 3.848-30.643Q3.751-30.643 3.751-30.761Q3.751-30.818 3.782-30.889Q3.813-30.959 3.874-30.959L5.074-31.056Q5.127-31.056 5.160-31.027Q5.193-30.998 5.193-30.950L5.193-30.915L3.905-25.765Q3.905-25.721 3.872-25.549Q3.839-25.378 3.839-25.316Q3.839-24.974 4.054-24.974Q4.177-24.974 4.283-25.101Q4.388-25.228 4.463-25.417Q4.538-25.606 4.593-25.824Q4.648-26.041 4.670-26.125Q4.678-26.156 4.703-26.180Q4.727-26.204 4.757-26.204L4.920-26.204Q4.960-26.204 4.986-26.167Q5.012-26.129 5.012-26.090Q4.863-25.483 4.665-25.097Q4.467-24.710 4.046-24.710Q3.755-24.710 3.540-24.870Q3.325-25.031 3.246-25.308Q3.026-25.053 2.738-24.881Q2.450-24.710 2.156-24.710M2.173-24.974Q2.727-24.974 3.263-25.826L3.734-27.720Q3.698-28.041 3.549-28.285Q3.400-28.529 3.110-28.529Q2.780-28.529 2.507-28.219Q2.235-27.909 2.077-27.518Q2.002-27.333 1.901-26.978Q1.800-26.622 1.736-26.285Q1.672-25.949 1.672-25.747Q1.672-25.448 1.791-25.211Q1.910-24.974 2.173-24.974",[865],[861,3322],{"fill":854,"d":3323},"M8.558-59.154v20.762",[861,3325],{"stroke":854,"d":3326},"m8.558-36.392 1.6-3.2-1.6 1.2-1.6-1.2",[861,3328],{"fill":854,"d":3329},"M40.456-27.01h32.143",[861,3331],{"stroke":854,"d":3332},"m74.599-27.01-3.2-1.6 1.2 1.6-1.2 1.6",[861,3334],{"fill":854,"d":3335},"M138.395-27.01h32.143",[861,3337],{"stroke":854,"d":3338},"m172.538-27.01-3.2-1.6 1.2 1.6-1.2 1.6",[861,3340],{"fill":854,"d":3341},"M74.599-22.61H42.456",[861,3343],{"stroke":854,"d":3344},"m40.456-22.61 3.2 1.6-1.2-1.6 1.2-1.6",[861,3346],{"fill":854,"d":3347},"M172.538-22.61h-32.143",[861,3349],{"stroke":854,"d":3350},"m138.395-22.61 3.2 1.6-1.2-1.6 1.2-1.6",[848,3352,3354],{"transform":3353},"translate(-52.422 3.125)",[861,3355],{"d":3356,"fill":850,"stroke":850,"className":3357,"style":866},"M-10.796-24.811L-12.883-24.811L-12.883-25.127Q-12.576-25.127-12.384-25.180Q-12.193-25.233-12.193-25.422L-12.193-27.870Q-12.193-28.111-12.264-28.219Q-12.334-28.327-12.468-28.351Q-12.602-28.375-12.883-28.375L-12.883-28.691L-11.543-28.788L-11.543-27.953Q-11.345-28.335-10.991-28.562Q-10.638-28.788-10.211-28.788Q-8.932-28.788-8.932-27.575L-8.932-25.422Q-8.932-25.233-8.741-25.180Q-8.550-25.127-8.243-25.127L-8.243-24.811L-10.330-24.811L-10.330-25.127Q-10.018-25.127-9.827-25.180Q-9.636-25.233-9.636-25.422L-9.636-27.540Q-9.636-27.799-9.680-28.021Q-9.724-28.243-9.869-28.386Q-10.014-28.529-10.273-28.529Q-10.616-28.529-10.897-28.340Q-11.178-28.151-11.334-27.839Q-11.490-27.527-11.490-27.180L-11.490-25.422Q-11.490-25.233-11.297-25.180Q-11.103-25.127-10.796-25.127L-10.796-24.811M-5.751-24.811L-7.737-24.811L-7.737-25.127Q-7.430-25.127-7.238-25.180Q-7.047-25.233-7.047-25.422L-7.047-27.870Q-7.047-28.116-7.113-28.221Q-7.179-28.327-7.304-28.351Q-7.430-28.375-7.702-28.375L-7.702-28.691L-6.370-28.788L-6.370-25.422Q-6.370-25.228-6.206-25.178Q-6.041-25.127-5.751-25.127L-5.751-24.811M-7.350-30.335Q-7.350-30.541-7.201-30.691Q-7.052-30.840-6.849-30.840Q-6.718-30.840-6.601-30.770Q-6.485-30.700-6.414-30.583Q-6.344-30.467-6.344-30.335Q-6.344-30.133-6.494-29.983Q-6.643-29.834-6.849-29.834Q-7.052-29.834-7.201-29.983Q-7.350-30.133-7.350-30.335M-3.110-24.811L-5.171-24.811L-5.171-25.127Q-4.863-25.127-4.672-25.180Q-4.481-25.233-4.481-25.422L-4.481-30.137Q-4.481-30.379-4.551-30.487Q-4.621-30.594-4.755-30.618Q-4.890-30.643-5.171-30.643L-5.171-30.959L-3.804-31.056L-3.804-25.422Q-3.804-25.233-3.611-25.180Q-3.417-25.127-3.110-25.127",[865],[848,3359,3361],{"transform":3360},"translate(281.502 3.125)",[861,3362],{"d":3356,"fill":850,"stroke":850,"className":3363,"style":866},[865],[861,3365],{"fill":854,"d":3366},"M-13.182-24.81h-36.611",[861,3368],{"stroke":854,"d":3369},"m-51.793-24.81 3.2 1.6-1.2-1.6 1.2-1.6",[861,3371],{"fill":854,"d":3372},"M226.176-24.81h36.611",[861,3374],{"stroke":854,"d":3375},"m264.787-24.81-3.2-1.6 1.2 1.6-1.2 1.6",[1032,3377,3379,3380,3404],{"className":3378},[1035],"A doubly linked list; deleting the middle node is ",[415,3381,3383],{"className":3382},[418],[415,3384,3386],{"className":3385,"ariaHidden":423},[422],[415,3387,3389,3392,3395,3398,3401],{"className":3388},[427],[415,3390],{"className":3391,"style":616},[431],[415,3393,621],{"className":3394,"style":620},[436,437],[415,3396,626],{"className":3397},[625],[415,3399,511],{"className":3400},[436],[415,3402,634],{"className":3403},[633]," pointer splicing",[381,3406,3407],{},"The complexities follow directly from the pointer structure:",[516,3409,3410,3628],{},[519,3411,3412,1277,3415,3439,3440,3455,3456,3542,3543,3627],{},[394,3413,3414],{},"Insert \u002F delete given the node.",[415,3416,3418],{"className":3417},[418],[415,3419,3421],{"className":3420,"ariaHidden":423},[422],[415,3422,3424,3427,3430,3433,3436],{"className":3423},[427],[415,3425],{"className":3426,"style":616},[431],[415,3428,621],{"className":3429,"style":620},[436,437],[415,3431,626],{"className":3432},[625],[415,3434,511],{"className":3435},[436],[415,3437,634],{"className":3438},[633],". To delete node ",[415,3441,3443],{"className":3442},[418],[415,3444,3446],{"className":3445,"ariaHidden":423},[422],[415,3447,3449,3452],{"className":3448},[427],[415,3450],{"className":3451,"style":432},[431],[415,3453,1801],{"className":3454},[436,437]," from a doubly\nlinked list, set ",[415,3457,3459],{"className":3458},[418],[415,3460,3462,3515],{"className":3461,"ariaHidden":423},[422],[415,3463,3465,3468,3471,3474,3477,3480,3483,3486,3489,3492,3495,3498,3501,3505,3508,3512],{"className":3464},[427],[415,3466],{"className":3467,"style":616},[431],[415,3469,438],{"className":3470},[436,437],[415,3472,3148],{"className":3473},[436,437],[415,3475,1801],{"className":3476},[436,437],[415,3478,3155],{"className":3479},[436,437],[415,3481,626],{"className":3482},[625],[415,3484,381],{"className":3485},[436,437],[415,3487,3253],{"className":3488,"style":620},[436,437],[415,3490,3148],{"className":3491},[436,437],[415,3493,3260],{"className":3494,"style":3126},[436,437],[415,3496,626],{"className":3497},[625],[415,3499,1801],{"className":3500},[436,437],[415,3502,3504],{"className":3503},[633],"))",[415,3506],{"className":3507,"style":2228},[565],[415,3509,3511],{"className":3510},[1294],"←",[415,3513],{"className":3514,"style":2228},[565],[415,3516,3518,3521,3524,3527,3530,3533,3536,3539],{"className":3517},[427],[415,3519],{"className":3520,"style":616},[431],[415,3522,438],{"className":3523},[436,437],[415,3525,3148],{"className":3526},[436,437],[415,3528,1801],{"className":3529},[436,437],[415,3531,3155],{"className":3532},[436,437],[415,3534,626],{"className":3535},[625],[415,3537,1801],{"className":3538},[436,437],[415,3540,634],{"className":3541},[633]," and ",[415,3544,3546],{"className":3545},[418],[415,3547,3549,3600],{"className":3548,"ariaHidden":423},[422],[415,3550,3552,3555,3558,3561,3564,3567,3570,3573,3576,3579,3582,3585,3588,3591,3594,3597],{"className":3551},[427],[415,3553],{"className":3554,"style":616},[431],[415,3556,381],{"className":3557},[436,437],[415,3559,3253],{"className":3560,"style":620},[436,437],[415,3562,3148],{"className":3563},[436,437],[415,3565,3260],{"className":3566,"style":3126},[436,437],[415,3568,626],{"className":3569},[625],[415,3571,438],{"className":3572},[436,437],[415,3574,3148],{"className":3575},[436,437],[415,3577,1801],{"className":3578},[436,437],[415,3580,3155],{"className":3581},[436,437],[415,3583,626],{"className":3584},[625],[415,3586,1801],{"className":3587},[436,437],[415,3589,3504],{"className":3590},[633],[415,3592],{"className":3593,"style":2228},[565],[415,3595,3511],{"className":3596},[1294],[415,3598],{"className":3599,"style":2228},[565],[415,3601,3603,3606,3609,3612,3615,3618,3621,3624],{"className":3602},[427],[415,3604],{"className":3605,"style":616},[431],[415,3607,381],{"className":3608},[436,437],[415,3610,3253],{"className":3611,"style":620},[436,437],[415,3613,3148],{"className":3614},[436,437],[415,3616,3260],{"className":3617,"style":3126},[436,437],[415,3619,626],{"className":3620},[625],[415,3622,1801],{"className":3623},[436,437],[415,3625,634],{"className":3626},[633],", a constant number of pointer writes, no shifting. This is the linked\nlist's signature advantage over an array.",[519,3629,3630,1277,3633,3657],{},[394,3631,3632],{},"Search by key, or index by position.",[415,3634,3636],{"className":3635},[418],[415,3637,3639],{"className":3638,"ariaHidden":423},[422],[415,3640,3642,3645,3648,3651,3654],{"className":3641},[427],[415,3643],{"className":3644,"style":616},[431],[415,3646,621],{"className":3647,"style":620},[436,437],[415,3649,626],{"className":3650},[625],[415,3652,438],{"className":3653},[436,437],[415,3655,634],{"className":3656},[633],". There is no address\narithmetic; you must walk the chain.",[381,3659,3660,3661,3663,3664,3667,3668,3689,3690,3726,3727,3763,3764,3767,3768],{},"The boundary cases (deleting the head, deleting the tail, operating on an empty\nlist) force ",[1262,3662,3228],{}," checks that clutter the code. A standard trick removes them: a\n",[394,3665,3666],{},"sentinel"," is a dummy node that is always present and never holds real data. Wrap\nthe list into a ring around one sentinel ",[415,3669,3671],{"className":3670},[418],[415,3672,3674],{"className":3673,"ariaHidden":423},[422],[415,3675,3677,3680,3684],{"className":3676},[427],[415,3678],{"className":3679,"style":3169},[431],[415,3681,3683],{"className":3682},[436,437],"ni",[415,3685,3688],{"className":3686,"style":3687},[436,437],"margin-right:0.0197em;","l",", with ",[415,3691,3693],{"className":3692},[418],[415,3694,3696],{"className":3695,"ariaHidden":423},[422],[415,3697,3699,3702,3705,3708,3711,3714,3717,3720,3723],{"className":3698},[427],[415,3700],{"className":3701,"style":616},[431],[415,3703,438],{"className":3704},[436,437],[415,3706,3148],{"className":3707},[436,437],[415,3709,1801],{"className":3710},[436,437],[415,3712,3155],{"className":3713},[436,437],[415,3715,626],{"className":3716},[625],[415,3718,3683],{"className":3719},[436,437],[415,3721,3688],{"className":3722,"style":3687},[436,437],[415,3724,634],{"className":3725},[633]," the first real\nnode and ",[415,3728,3730],{"className":3729},[418],[415,3731,3733],{"className":3732,"ariaHidden":423},[422],[415,3734,3736,3739,3742,3745,3748,3751,3754,3757,3760],{"className":3735},[427],[415,3737],{"className":3738,"style":616},[431],[415,3740,381],{"className":3741},[436,437],[415,3743,3253],{"className":3744,"style":620},[436,437],[415,3746,3148],{"className":3747},[436,437],[415,3749,3260],{"className":3750,"style":3126},[436,437],[415,3752,626],{"className":3753},[625],[415,3755,3683],{"className":3756},[436,437],[415,3758,3688],{"className":3759,"style":3687},[436,437],[415,3761,634],{"className":3762},[633]," the last; now ",[700,3765,3766],{},"every"," node has a real predecessor and\nsuccessor, and delete needs no special cases.",[503,3769,3770],{},[385,3771,3775],{"href":3772,"ariaDescribedBy":3773,"dataFootnoteRef":376,"id":3774},"#user-content-fn-clrs-list",[509],"user-content-fnref-clrs-list","3",[1314,3777,3779],{"className":1316,"code":3778,"language":1318,"meta":376,"style":376},"caption: $\\textsc{List-Delete}(x)$ — remove $x$ from a doubly linked list (sentinel form)\n$next(prev(x)) \\gets next(x)$\n$prev(next(x)) \\gets prev(x)$\n",[1262,3780,3781,3786,3791],{"__ignoreMap":376},[415,3782,3783],{"class":1323,"line":6},[415,3784,3785],{},"caption: $\\textsc{List-Delete}(x)$ — remove $x$ from a doubly linked list (sentinel form)\n",[415,3787,3788],{"class":1323,"line":18},[415,3789,3790],{},"$next(prev(x)) \\gets next(x)$\n",[415,3792,3793],{"class":1323,"line":24},[415,3794,3795],{},"$prev(next(x)) \\gets prev(x)$\n",[381,3797,3798,3799,3801,3802,3835,3836,3869],{},"With a sentinel there are no ",[1262,3800,3228],{}," guards: even at the ends, ",[415,3803,3805],{"className":3804},[418],[415,3806,3808],{"className":3807,"ariaHidden":423},[422],[415,3809,3811,3814,3817,3820,3823,3826,3829,3832],{"className":3810},[427],[415,3812],{"className":3813,"style":616},[431],[415,3815,381],{"className":3816},[436,437],[415,3818,3253],{"className":3819,"style":620},[436,437],[415,3821,3148],{"className":3822},[436,437],[415,3824,3260],{"className":3825,"style":3126},[436,437],[415,3827,626],{"className":3828},[625],[415,3830,1801],{"className":3831},[436,437],[415,3833,634],{"className":3834},[633]," and\n",[415,3837,3839],{"className":3838},[418],[415,3840,3842],{"className":3841,"ariaHidden":423},[422],[415,3843,3845,3848,3851,3854,3857,3860,3863,3866],{"className":3844},[427],[415,3846],{"className":3847,"style":616},[431],[415,3849,438],{"className":3850},[436,437],[415,3852,3148],{"className":3853},[436,437],[415,3855,1801],{"className":3856},[436,437],[415,3858,3155],{"className":3859},[436,437],[415,3861,626],{"className":3862},[625],[415,3864,1801],{"className":3865},[436,437],[415,3867,634],{"className":3868},[633]," point at real nodes (possibly the sentinel itself), so the two\nassignments always make sense.",[3871,3872,3873,3887],"table",{},[3874,3875,3876],"thead",{},[3877,3878,3879,3883,3885],"tr",{},[3880,3881,3882],"th",{},"operation",[3880,3884,1196],{},[3880,3886,3102],{},[3888,3889,3890,3948,4005,4064,4122,4133],"tbody",{},[3877,3891,3892,3896,3922],{},[3893,3894,3895],"td",{},"index \u002F random access",[3893,3897,3898],{},[415,3899,3901],{"className":3900},[418],[415,3902,3904],{"className":3903,"ariaHidden":423},[422],[415,3905,3907,3910,3913,3916,3919],{"className":3906},[427],[415,3908],{"className":3909,"style":616},[431],[415,3911,621],{"className":3912,"style":620},[436,437],[415,3914,626],{"className":3915},[625],[415,3917,511],{"className":3918},[436],[415,3920,634],{"className":3921},[633],[3893,3923,3924],{},[415,3925,3927],{"className":3926},[418],[415,3928,3930],{"className":3929,"ariaHidden":423},[422],[415,3931,3933,3936,3939,3942,3945],{"className":3932},[427],[415,3934],{"className":3935,"style":616},[431],[415,3937,621],{"className":3938,"style":620},[436,437],[415,3940,626],{"className":3941},[625],[415,3943,438],{"className":3944},[436,437],[415,3946,634],{"className":3947},[633],[3877,3949,3950,3953,3979],{},[3893,3951,3952],{},"search (unsorted)",[3893,3954,3955],{},[415,3956,3958],{"className":3957},[418],[415,3959,3961],{"className":3960,"ariaHidden":423},[422],[415,3962,3964,3967,3970,3973,3976],{"className":3963},[427],[415,3965],{"className":3966,"style":616},[431],[415,3968,621],{"className":3969,"style":620},[436,437],[415,3971,626],{"className":3972},[625],[415,3974,438],{"className":3975},[436,437],[415,3977,634],{"className":3978},[633],[3893,3980,3981],{},[415,3982,3984],{"className":3983},[418],[415,3985,3987],{"className":3986,"ariaHidden":423},[422],[415,3988,3990,3993,3996,3999,4002],{"className":3989},[427],[415,3991],{"className":3992,"style":616},[431],[415,3994,621],{"className":3995,"style":620},[436,437],[415,3997,626],{"className":3998},[625],[415,4000,438],{"className":4001},[436,437],[415,4003,634],{"className":4004},[633],[3877,4006,4007,4010,4037],{},[3893,4008,4009],{},"insert\u002Fdelete at known position",[3893,4011,4012,4036],{},[415,4013,4015],{"className":4014},[418],[415,4016,4018],{"className":4017,"ariaHidden":423},[422],[415,4019,4021,4024,4027,4030,4033],{"className":4020},[427],[415,4022],{"className":4023,"style":616},[431],[415,4025,621],{"className":4026,"style":620},[436,437],[415,4028,626],{"className":4029},[625],[415,4031,438],{"className":4032},[436,437],[415,4034,634],{"className":4035},[633]," shift",[3893,4038,4039,4063],{},[415,4040,4042],{"className":4041},[418],[415,4043,4045],{"className":4044,"ariaHidden":423},[422],[415,4046,4048,4051,4054,4057,4060],{"className":4047},[427],[415,4049],{"className":4050,"style":616},[431],[415,4052,621],{"className":4053,"style":620},[436,437],[415,4055,626],{"className":4056},[625],[415,4058,511],{"className":4059},[436],[415,4061,634],{"className":4062},[633]," splice",[3877,4065,4066,4069,4096],{},[3893,4067,4068],{},"insert\u002Fdelete at end",[3893,4070,4071,4095],{},[415,4072,4074],{"className":4073},[418],[415,4075,4077],{"className":4076,"ariaHidden":423},[422],[415,4078,4080,4083,4086,4089,4092],{"className":4079},[427],[415,4081],{"className":4082,"style":616},[431],[415,4084,621],{"className":4085,"style":620},[436,437],[415,4087,626],{"className":4088},[625],[415,4090,511],{"className":4091},[436],[415,4093,634],{"className":4094},[633]," amortized",[3893,4097,4098],{},[415,4099,4101],{"className":4100},[418],[415,4102,4104],{"className":4103,"ariaHidden":423},[422],[415,4105,4107,4110,4113,4116,4119],{"className":4106},[427],[415,4108],{"className":4109,"style":616},[431],[415,4111,621],{"className":4112,"style":620},[436,437],[415,4114,626],{"className":4115},[625],[415,4117,511],{"className":4118},[436],[415,4120,634],{"className":4121},[633],[3877,4123,4124,4127,4130],{},[3893,4125,4126],{},"cache locality",[3893,4128,4129],{},"excellent",[3893,4131,4132],{},"poor",[3877,4134,4135,4138,4140],{},[3893,4136,4137],{},"extra space per element",[3893,4139,854],{},[3893,4141,4142],{},"1–2 pointers",[381,4144,4145,4146,4161],{},"Neither structure dominates: choose contiguous when you index and scan, linked\nwhen you splice in the middle and never need the ",[415,4147,4149],{"className":4148},[418],[415,4150,4152],{"className":4151,"ariaHidden":423},[422],[415,4153,4155,4158],{"className":4154},[427],[415,4156],{"className":4157,"style":488},[431],[415,4159,492],{"className":4160},[436,437],"-th element by number.",[403,4163,4165],{"id":4164},"stacks-last-in-first-out","Stacks: last in, first out",[381,4167,409,4168,4171,4172,4175,4176,4198,4199,4222,4223,4245,4246,692],{},[394,4169,4170],{},"stack"," restricts access to one discipline: ",[394,4173,4174],{},"LIFO",", last in, first out.\nOnly the most recently inserted element is reachable. The operations are\n",[415,4177,4179],{"className":4178},[418],[415,4180,4182],{"className":4181,"ariaHidden":423},[422],[415,4183,4185,4188],{"className":4184},[427],[415,4186],{"className":4187,"style":3169},[431],[415,4189,4191],{"className":4190},[1843,1844],[415,4192,4194],{"className":4193},[436,1848],[415,4195,4197],{"className":4196},[436],"Push"," (add to the top), ",[415,4200,4202],{"className":4201},[418],[415,4203,4205],{"className":4204,"ariaHidden":423},[422],[415,4206,4208,4212],{"className":4207},[427],[415,4209],{"className":4210,"style":4211},[431],"height:0.8778em;vertical-align:-0.1944em;",[415,4213,4215],{"className":4214},[1843,1844],[415,4216,4218],{"className":4217},[436,1848],[415,4219,4221],{"className":4220},[436],"Pop"," (remove the top), and\n",[415,4224,4226],{"className":4225},[418],[415,4227,4229],{"className":4228,"ariaHidden":423},[422],[415,4230,4232,4235],{"className":4231},[427],[415,4233],{"className":4234,"style":3169},[431],[415,4236,4238],{"className":4237},[1843,1844],[415,4239,4241],{"className":4240},[436,1848],[415,4242,4244],{"className":4243},[436],"Peek"," (read the top without removing) — all ",[415,4247,4249],{"className":4248},[418],[415,4250,4252],{"className":4251,"ariaHidden":423},[422],[415,4253,4255,4258,4261,4264,4267],{"className":4254},[427],[415,4256],{"className":4257,"style":616},[431],[415,4259,621],{"className":4260,"style":620},[436,437],[415,4262,626],{"className":4263},[625],[415,4265,511],{"className":4266},[436],[415,4268,634],{"className":4269},[633],[381,4271,4272,4273,4296,4297,4330,4331,4355,4356,4380],{},"A stack is trivial to back with a dynamic array: keep a ",[415,4274,4276],{"className":4275},[418],[415,4277,4279],{"className":4278,"ariaHidden":423},[422],[415,4280,4282,4286,4289,4293],{"className":4281},[427],[415,4283],{"className":4284,"style":4285},[431],"height:0.8095em;vertical-align:-0.1944em;",[415,4287,3155],{"className":4288},[436,437],[415,4290,4292],{"className":4291},[436,437],"o",[415,4294,381],{"className":4295},[436,437]," index, push by\nwriting ",[415,4298,4300],{"className":4299},[418],[415,4301,4303],{"className":4302,"ariaHidden":423},[422],[415,4304,4306,4309,4313,4317,4320,4323,4326],{"className":4305},[427],[415,4307],{"className":4308,"style":616},[431],[415,4310,4312],{"className":4311},[436,437],"A",[415,4314,4316],{"className":4315},[625],"[",[415,4318,3155],{"className":4319},[436,437],[415,4321,4292],{"className":4322},[436,437],[415,4324,381],{"className":4325},[436,437],[415,4327,4329],{"className":4328},[633],"]"," and incrementing, pop by decrementing. (Amortized ",[415,4332,4334],{"className":4333},[418],[415,4335,4337],{"className":4336,"ariaHidden":423},[422],[415,4338,4340,4343,4346,4349,4352],{"className":4339},[427],[415,4341],{"className":4342,"style":616},[431],[415,4344,621],{"className":4345,"style":620},[436,437],[415,4347,626],{"className":4348},[625],[415,4350,511],{"className":4351},[436],[415,4353,634],{"className":4354},[633]," if it\nmust grow.) Equally, a singly linked list with push\u002Fpop at the head is a stack\nwith worst-case ",[415,4357,4359],{"className":4358},[418],[415,4360,4362],{"className":4361,"ariaHidden":423},[422],[415,4363,4365,4368,4371,4374,4377],{"className":4364},[427],[415,4366],{"className":4367,"style":616},[431],[415,4369,621],{"className":4370,"style":620},[436,437],[415,4372,626],{"className":4373},[625],[415,4375,511],{"className":4376},[436],[415,4378,634],{"className":4379},[633]," operations and no resize spikes.",[381,4382,4383,4384,4387,4388,4391,4392,4395,4396,4399],{},"Stacks appear wherever computation is ",[700,4385,4386],{},"nested",": the ",[394,4389,4390],{},"call stack"," that holds\nfunction activation records, ",[394,4393,4394],{},"depth-first search",", evaluating arithmetic\nexpressions, and matching brackets. For brackets, push each opener, then pop and\ncheck on each closer, accepting iff the stack ends empty. That last pattern is the\n",[700,4397,4398],{},"Valid Parentheses"," problem, and it is a stack in one line of intuition.",[403,4401,4403],{"id":4402},"queues-and-deques-first-in-first-out","Queues and deques: first in, first out",[381,4405,409,4406,4409,4410,4413,4414,4436,4437,4440,4441,4463,4464,4467,4468,692],{},[394,4407,4408],{},"queue"," enforces the opposite discipline: ",[394,4411,4412],{},"FIFO",", first in, first out, like\na line at a counter. ",[415,4415,4417],{"className":4416},[418],[415,4418,4420],{"className":4419,"ariaHidden":423},[422],[415,4421,4423,4426],{"className":4422},[427],[415,4424],{"className":4425,"style":4211},[431],[415,4427,4429],{"className":4428},[1843,1844],[415,4430,4432],{"className":4431},[436,1848],[415,4433,4435],{"className":4434},[436],"Enqueue"," adds at the ",[394,4438,4439],{},"tail","; ",[415,4442,4444],{"className":4443},[418],[415,4445,4447],{"className":4446,"ariaHidden":423},[422],[415,4448,4450,4453],{"className":4449},[427],[415,4451],{"className":4452,"style":4211},[431],[415,4454,4456],{"className":4455},[1843,1844],[415,4457,4459],{"className":4458},[436,1848],[415,4460,4462],{"className":4461},[436],"Dequeue","\nremoves from the ",[394,4465,4466],{},"head",". Both are ",[415,4469,4471],{"className":4470},[418],[415,4472,4474],{"className":4473,"ariaHidden":423},[422],[415,4475,4477,4480,4483,4486,4489],{"className":4476},[427],[415,4478],{"className":4479,"style":616},[431],[415,4481,621],{"className":4482,"style":620},[436,437],[415,4484,626],{"className":4485},[625],[415,4487,511],{"className":4488},[436],[415,4490,634],{"className":4491},[633],[835,4493,4495,4730],{"className":4494},[838,839],[841,4496,4500],{"xmlns":843,"width":4497,"height":4498,"viewBox":4499},"364.988","151.906","-75 -75 273.741 113.930",[848,4501,4502,4505,4513,4516,4523,4526,4533,4560,4569,4577,4594,4618,4621,4627,4630,4636,4639,4645,4666,4675,4684,4692,4700,4715],{"stroke":850,"style":851},[861,4503],{"fill":854,"d":4504},"M-39.596-27.656h28.453v-19.917h-28.453Z",[848,4506,4508],{"transform":4507},"translate(-2.164 2.153)",[861,4509],{"d":4510,"fill":850,"stroke":850,"className":4511,"style":4512},"M-24.198-38.806Q-24.198-38.372-23.976-38.069Q-23.754-37.766-23.339-37.766Q-22.743-37.766-22.194-38.040Q-21.644-38.313-21.298-38.797Q-21.268-38.826-21.220-38.826Q-21.171-38.826-21.120-38.770Q-21.068-38.714-21.068-38.665Q-21.068-38.626-21.088-38.606Q-21.454-38.094-22.074-37.798Q-22.694-37.503-23.358-37.503Q-23.837-37.503-24.203-37.730Q-24.569-37.957-24.769-38.338Q-24.970-38.719-24.970-39.197Q-24.970-39.871-24.594-40.535Q-24.218-41.199-23.593-41.616Q-22.968-42.034-22.279-42.034Q-21.830-42.034-21.471-41.817Q-21.112-41.599-21.112-41.175Q-21.112-40.901-21.271-40.708Q-21.430-40.515-21.698-40.515Q-21.859-40.515-21.969-40.615Q-22.079-40.716-22.079-40.877Q-22.079-41.111-21.908-41.277Q-21.737-41.443-21.508-41.443L-21.488-41.443Q-21.605-41.614-21.828-41.695Q-22.050-41.775-22.289-41.775Q-22.875-41.775-23.314-41.275Q-23.754-40.774-23.976-40.078Q-24.198-39.383-24.198-38.806",[865],"stroke-width:0.300",[861,4514],{"fill":854,"d":4515},"M-39.596-7.17h28.453v-19.917h-28.453Z",[848,4517,4519],{"transform":4518},"translate(-2.146 23.958)",[861,4520],{"d":4521,"fill":850,"stroke":850,"className":4522,"style":4512},"M-23.641-37.503Q-24.247-37.503-24.584-37.976Q-24.921-38.450-24.921-39.085Q-24.921-39.178-24.874-39.448Q-24.828-39.719-24.828-39.783L-23.861-43.665Q-23.822-43.836-23.812-43.933Q-23.812-44.094-24.462-44.094Q-24.559-44.094-24.559-44.226Q-24.555-44.251-24.537-44.314Q-24.520-44.378-24.494-44.412Q-24.467-44.446-24.418-44.446L-23.070-44.553Q-22.948-44.553-22.948-44.427L-23.690-41.477Q-23.124-42.034-22.548-42.034Q-22.123-42.034-21.818-41.809Q-21.513-41.585-21.361-41.219Q-21.210-40.852-21.210-40.437Q-21.210-39.954-21.398-39.439Q-21.586-38.924-21.918-38.482Q-22.250-38.040-22.694-37.771Q-23.139-37.503-23.641-37.503M-23.622-37.766Q-23.280-37.766-22.982-38.052Q-22.684-38.338-22.499-38.694Q-22.299-39.094-22.125-39.781Q-21.952-40.467-21.952-40.877Q-21.952-41.233-22.101-41.504Q-22.250-41.775-22.572-41.775Q-22.933-41.775-23.263-41.509Q-23.593-41.243-23.842-40.877L-24.120-39.744Q-24.281-39.114-24.291-38.733Q-24.291-38.357-24.127-38.062Q-23.964-37.766-23.622-37.766",[865],[861,4524],{"fill":854,"d":4525},"M-39.596 13.316h28.453V-6.601h-28.453Z",[848,4527,4529],{"transform":4528},"translate(-2.643 43.125)",[861,4530],{"d":4531,"fill":850,"stroke":850,"className":4532,"style":4512},"M-23.632-37.503Q-24.262-37.503-24.625-37.979Q-24.989-38.455-24.989-39.104Q-24.989-39.744-24.657-40.432Q-24.325-41.121-23.761-41.577Q-23.197-42.034-22.548-42.034Q-22.250-42.034-22.016-41.873Q-21.781-41.712-21.649-41.433Q-21.537-41.834-21.210-41.834Q-21.083-41.834-20.997-41.758Q-20.912-41.682-20.912-41.555Q-20.912-41.526-20.914-41.511Q-20.917-41.497-20.922-41.477L-21.620-38.684Q-21.688-38.386-21.688-38.196Q-21.688-37.766-21.400-37.766Q-21.088-37.766-20.924-38.164Q-20.761-38.562-20.648-39.085Q-20.629-39.143-20.570-39.143L-20.448-39.143Q-20.409-39.143-20.385-39.109Q-20.360-39.075-20.360-39.046Q-20.536-38.347-20.744-37.925Q-20.951-37.503-21.420-37.503Q-21.757-37.503-22.016-37.700Q-22.274-37.898-22.338-38.225Q-22.982-37.503-23.632-37.503M-23.622-37.766Q-23.261-37.766-22.921-38.037Q-22.582-38.308-22.338-38.675Q-22.328-38.684-22.328-38.704L-21.791-40.877L-21.781-40.906Q-21.840-41.262-22.037-41.519Q-22.235-41.775-22.572-41.775Q-22.909-41.775-23.200-41.499Q-23.490-41.223-23.690-40.847Q-23.886-40.447-24.064-39.749Q-24.242-39.051-24.242-38.665Q-24.242-38.318-24.093-38.042Q-23.944-37.766-23.622-37.766",[865],[848,4534,4535,4542,4548,4554],{"stroke":854,"fontFamily":855,"fontSize":856},[848,4536,4538],{"transform":4537},"translate(-26.49 67.691)",[861,4539],{"d":4540,"fill":850,"stroke":850,"className":4541,"style":866},"M-25.062-37.597L-25.062-39.039Q-25.062-39.070-25.034-39.094Q-25.005-39.118-24.974-39.118L-24.865-39.118Q-24.829-39.118-24.808-39.096Q-24.786-39.074-24.777-39.039Q-24.517-37.778-23.551-37.778Q-23.124-37.778-22.830-37.962Q-22.536-38.147-22.536-38.551Q-22.536-38.845-22.766-39.041Q-22.997-39.237-23.309-39.298L-23.911-39.417Q-24.377-39.505-24.720-39.788Q-25.062-40.072-25.062-40.511Q-25.062-41.104-24.625-41.377Q-24.188-41.649-23.551-41.649Q-23.072-41.649-22.724-41.403L-22.474-41.627Q-22.417-41.649-22.417-41.649L-22.364-41.649Q-22.338-41.649-22.305-41.623Q-22.272-41.596-22.272-41.566L-22.272-40.406Q-22.272-40.375-22.307-40.348Q-22.342-40.322-22.364-40.322L-22.474-40.322Q-22.496-40.322-22.529-40.351Q-22.562-40.379-22.562-40.406Q-22.562-40.871-22.828-41.142Q-23.094-41.412-23.559-41.412Q-23.964-41.412-24.267-41.267Q-24.570-41.122-24.570-40.766Q-24.570-40.520-24.353-40.366Q-24.135-40.212-23.858-40.155L-23.230-40.028Q-22.913-39.966-22.643-39.799Q-22.373-39.632-22.206-39.366Q-22.039-39.100-22.039-38.784Q-22.039-38.142-22.465-37.828Q-22.891-37.514-23.551-37.514Q-23.823-37.514-24.089-37.608Q-24.355-37.703-24.535-37.892L-24.856-37.553Q-24.873-37.514-24.922-37.514L-24.974-37.514Q-24.996-37.514-25.029-37.542Q-25.062-37.571-25.062-37.597M-20.791-38.687L-20.791-41.179L-21.556-41.179L-21.556-41.438Q-21.151-41.438-20.885-41.704Q-20.620-41.970-20.499-42.370Q-20.378-42.770-20.378-43.152L-20.088-43.152L-20.088-41.495L-18.800-41.495L-18.800-41.179L-20.088-41.179L-20.088-38.722Q-20.088-38.353-19.963-38.079Q-19.837-37.804-19.512-37.804Q-19.213-37.804-19.075-38.098Q-18.936-38.393-18.936-38.722L-18.936-39.245L-18.651-39.245L-18.651-38.687Q-18.651-38.410-18.761-38.138Q-18.870-37.865-19.084-37.690Q-19.297-37.514-19.578-37.514Q-19.938-37.514-20.211-37.652Q-20.483-37.791-20.637-38.054Q-20.791-38.318-20.791-38.687M-17.767-38.525Q-17.767-39.065-17.335-39.399Q-16.902-39.733-16.295-39.872Q-15.689-40.010-15.157-40.010L-15.157-40.344Q-15.157-40.603-15.276-40.847Q-15.394-41.091-15.603-41.238Q-15.812-41.386-16.084-41.386Q-16.647-41.386-16.959-41.188Q-16.809-41.161-16.717-41.043Q-16.625-40.924-16.625-40.766Q-16.625-40.590-16.750-40.460Q-16.875-40.331-17.056-40.331Q-17.245-40.331-17.372-40.458Q-17.499-40.586-17.499-40.766Q-17.499-41.236-17.060-41.443Q-16.620-41.649-16.084-41.649Q-15.794-41.649-15.506-41.561Q-15.219-41.473-14.986-41.313Q-14.753-41.153-14.603-40.913Q-14.454-40.674-14.454-40.379L-14.454-38.344Q-14.454-38.191-14.379-38.052Q-14.305-37.914-14.160-37.914Q-14.006-37.914-13.933-38.050Q-13.861-38.186-13.861-38.344L-13.861-38.920L-13.575-38.920L-13.575-38.344Q-13.575-38.011-13.823-37.786Q-14.072-37.562-14.401-37.562Q-14.661-37.562-14.843-37.756Q-15.025-37.949-15.069-38.226Q-15.236-37.905-15.570-37.709Q-15.904-37.514-16.273-37.514Q-16.827-37.514-17.297-37.762Q-17.767-38.011-17.767-38.525M-17.012-38.525Q-17.012-38.213-16.770-37.995Q-16.528-37.778-16.212-37.778Q-15.777-37.778-15.467-38.087Q-15.157-38.397-15.157-38.828L-15.157-39.755Q-15.575-39.755-16.001-39.628Q-16.427-39.500-16.719-39.223Q-17.012-38.947-17.012-38.525M-11.206-37.514Q-11.756-37.514-12.215-37.793Q-12.674-38.072-12.942-38.542Q-13.210-39.012-13.210-39.557Q-13.210-39.970-13.061-40.348Q-12.912-40.726-12.637-41.021Q-12.362-41.315-11.993-41.482Q-11.624-41.649-11.206-41.649Q-10.872-41.649-10.552-41.583Q-10.231-41.517-10.002-41.331Q-9.774-41.144-9.774-40.819Q-9.774-40.643-9.901-40.515Q-10.029-40.388-10.204-40.388Q-10.389-40.388-10.519-40.513Q-10.648-40.638-10.648-40.819Q-10.648-40.955-10.574-41.067Q-10.499-41.179-10.367-41.232Q-10.675-41.359-11.206-41.359Q-11.641-41.359-11.910-41.082Q-12.178-40.805-12.290-40.390Q-12.402-39.975-12.402-39.557Q-12.402-39.127-12.263-38.725Q-12.125-38.323-11.830-38.063Q-11.536-37.804-11.097-37.804Q-10.675-37.804-10.371-38.054Q-10.068-38.305-9.963-38.714Q-9.954-38.744-9.930-38.769Q-9.906-38.793-9.875-38.793L-9.765-38.793Q-9.677-38.793-9.677-38.678Q-9.822-38.142-10.235-37.828Q-10.648-37.514-11.206-37.514",[865],[848,4543,4544],{"transform":4537},[861,4545],{"d":4546,"fill":850,"stroke":850,"className":4547,"style":866},"M-7.360-37.615L-9.395-37.615L-9.395-37.931Q-9.082-37.931-8.891-37.984Q-8.700-38.037-8.700-38.226L-8.700-42.941Q-8.700-43.183-8.770-43.291Q-8.841-43.398-8.975-43.422Q-9.109-43.447-9.395-43.447L-9.395-43.763L-8.023-43.860L-8.023-39.615L-6.819-40.630Q-6.613-40.801-6.613-40.981Q-6.613-41.078-6.681-41.128Q-6.749-41.179-6.846-41.179L-6.846-41.495L-5.136-41.495L-5.136-41.179Q-5.734-41.179-6.380-40.630L-7.026-40.080L-5.866-38.481Q-5.690-38.243-5.587-38.138Q-5.483-38.032-5.332-37.982Q-5.180-37.931-4.930-37.931L-4.930-37.615L-6.758-37.615L-6.758-37.931Q-6.459-37.931-6.459-38.120Q-6.459-38.239-6.630-38.481L-7.505-39.676L-8.054-39.206L-8.054-38.226Q-8.054-38.037-7.861-37.984Q-7.667-37.931-7.360-37.931",[865],[848,4549,4550],{"transform":4537},[861,4551],{"d":4552,"fill":850,"stroke":850,"className":4553,"style":866},"M1.172-35.374Q0.667-35.761 0.298-36.266Q-0.072-36.771-0.315-37.371Q-0.559-37.971-0.674-38.588Q-0.788-39.206-0.788-39.865Q-0.788-40.524-0.674-41.139Q-0.559-41.755-0.320-42.348Q-0.080-42.941 0.293-43.451Q0.667-43.961 1.172-44.347Q1.207-44.365 1.229-44.365L1.308-44.365Q1.396-44.365 1.396-44.264Q1.396-44.229 1.361-44.194Q0.799-43.671 0.454-42.965Q0.109-42.260-0.039-41.478Q-0.186-40.696-0.186-39.865Q-0.186-39.241-0.107-38.657Q-0.028-38.072 0.150-37.505Q0.328-36.938 0.627-36.437Q0.926-35.936 1.361-35.528Q1.396-35.492 1.396-35.453Q1.396-35.356 1.308-35.356L1.229-35.356Q1.207-35.356 1.172-35.374M7.039-37.615L2.236-37.615L2.236-37.931Q3.154-37.931 3.154-38.226L3.154-43.152Q3.154-43.447 2.236-43.447L2.236-43.763L5.140-43.763L5.140-43.447Q3.998-43.447 3.998-43.152L3.998-38.226Q3.998-38.032 4.103-37.982Q4.209-37.931 4.459-37.931L5.175-37.931Q5.852-37.931 6.232-38.175Q6.612-38.419 6.771-38.848Q6.929-39.276 7.004-39.975L7.294-39.975L7.039-37.615M10.739-37.615L7.966-37.615L7.966-37.931Q8.933-37.931 8.933-38.226L8.933-43.152Q8.933-43.447 7.966-43.447L7.966-43.763L10.739-43.763L10.739-43.447Q9.777-43.447 9.777-43.152L9.777-38.226Q9.777-37.931 10.739-37.931L10.739-37.615M14.259-37.615L11.354-37.615L11.354-37.931Q12.273-37.931 12.273-38.226L12.273-43.152Q12.273-43.447 11.354-43.447L11.354-43.763L16.421-43.763L16.672-41.702L16.386-41.702Q16.289-42.471 16.116-42.825Q15.942-43.178 15.571-43.313Q15.199-43.447 14.430-43.447L13.578-43.447Q13.327-43.447 13.222-43.398Q13.116-43.350 13.116-43.152L13.116-40.845L13.784-40.845Q14.246-40.845 14.468-40.922Q14.690-40.999 14.775-41.221Q14.861-41.443 14.861-41.900L15.151-41.900L15.151-39.478L14.861-39.478Q14.861-39.935 14.775-40.157Q14.690-40.379 14.468-40.456Q14.246-40.533 13.784-40.533L13.116-40.533L13.116-38.226Q13.116-37.931 14.259-37.931",[865],[848,4555,4556],{"transform":4537},[861,4557],{"d":4558,"fill":850,"stroke":850,"className":4559,"style":866},"M20.408-37.417Q19.762-37.417 19.202-37.677Q18.642-37.936 18.220-38.393Q17.798-38.850 17.565-39.441Q17.332-40.032 17.332-40.656Q17.332-41.289 17.563-41.895Q17.794-42.502 18.211-42.963Q18.629-43.425 19.193-43.693Q19.758-43.961 20.408-43.961Q21.063-43.961 21.632-43.693Q22.201-43.425 22.617-42.959Q23.032-42.493 23.260-41.897Q23.489-41.302 23.489-40.656Q23.489-40.032 23.260-39.441Q23.032-38.850 22.608-38.393Q22.184-37.936 21.621-37.677Q21.059-37.417 20.408-37.417M18.853-38.604Q19.033-38.340 19.275-38.145Q19.516-37.949 19.806-37.837Q20.096-37.725 20.408-37.725Q20.720-37.725 21.013-37.837Q21.305-37.949 21.549-38.147Q21.793-38.344 21.964-38.604Q22.171-38.894 22.298-39.256Q22.425-39.619 22.478-40.006Q22.531-40.392 22.531-40.810Q22.531-42.093 21.964-42.844Q21.788-43.095 21.542-43.282Q21.296-43.469 21.006-43.570Q20.716-43.671 20.408-43.671Q19.956-43.671 19.543-43.451Q19.130-43.231 18.853-42.844Q18.554-42.445 18.420-41.922Q18.286-41.399 18.286-40.810Q18.286-40.392 18.339-40.006Q18.391-39.619 18.519-39.256Q18.646-38.894 18.853-38.604M24.693-35.356L24.610-35.356Q24.522-35.356 24.522-35.453Q24.522-35.492 24.557-35.528Q25.392-36.301 25.752-37.435Q26.112-38.569 26.112-39.865Q26.112-40.485 26.033-41.076Q25.954-41.667 25.774-42.225Q25.594-42.783 25.293-43.291Q24.992-43.798 24.557-44.194Q24.522-44.229 24.522-44.264Q24.522-44.365 24.610-44.365L24.693-44.365Q24.711-44.365 24.746-44.347Q25.251-43.965 25.625-43.451Q25.998-42.937 26.235-42.359Q26.473-41.781 26.589-41.153Q26.706-40.524 26.706-39.865Q26.706-39.206 26.589-38.575Q26.473-37.945 26.233-37.360Q25.994-36.776 25.622-36.266Q25.251-35.756 24.746-35.374Q24.711-35.356 24.693-35.356",[865],[848,4561,4562],{"fill":986,"stroke":986},[848,4563,4565],{"transform":4564},"translate(26.495 1.893)",[861,4566],{"d":4567,"fill":986,"stroke":986,"className":4568,"style":866},"M-24.434-38.687L-24.434-41.179L-25.199-41.179L-25.199-41.438Q-24.794-41.438-24.528-41.704Q-24.263-41.970-24.142-42.370Q-24.021-42.770-24.021-43.152L-23.731-43.152L-23.731-41.495L-22.443-41.495L-22.443-41.179L-23.731-41.179L-23.731-38.722Q-23.731-38.353-23.606-38.079Q-23.480-37.804-23.155-37.804Q-22.856-37.804-22.718-38.098Q-22.579-38.393-22.579-38.722L-22.579-39.245L-22.294-39.245L-22.294-38.687Q-22.294-38.410-22.404-38.138Q-22.514-37.865-22.727-37.690Q-22.940-37.514-23.221-37.514Q-23.581-37.514-23.854-37.652Q-24.126-37.791-24.280-38.054Q-24.434-38.318-24.434-38.687M-21.520-39.522Q-21.520-40.089-21.248-40.577Q-20.975-41.065-20.505-41.357Q-20.035-41.649-19.468-41.649Q-19.046-41.649-18.671-41.480Q-18.295-41.311-18.018-41.019Q-17.741-40.726-17.583-40.331Q-17.425-39.935-17.425-39.522Q-17.425-38.973-17.704-38.511Q-17.983-38.050-18.451-37.782Q-18.919-37.514-19.468-37.514Q-20.022-37.514-20.492-37.782Q-20.962-38.050-21.241-38.511Q-21.520-38.973-21.520-39.522M-19.468-37.804Q-18.972-37.804-18.695-38.065Q-18.418-38.327-18.326-38.731Q-18.233-39.136-18.233-39.632Q-18.233-40.107-18.332-40.496Q-18.431-40.885-18.703-41.135Q-18.976-41.386-19.468-41.386Q-20.180-41.386-20.444-40.891Q-20.707-40.397-20.707-39.632Q-20.707-38.832-20.453-38.318Q-20.198-37.804-19.468-37.804M-14.823-35.870L-16.911-35.870L-16.911-36.182Q-16.599-36.182-16.407-36.233Q-16.216-36.283-16.216-36.481L-16.216-40.819Q-16.216-41.060-16.390-41.120Q-16.563-41.179-16.911-41.179L-16.911-41.495L-15.539-41.592L-15.539-41.052Q-15.280-41.320-14.946-41.456Q-14.612-41.592-14.243-41.592Q-13.843-41.592-13.487-41.425Q-13.131-41.258-12.876-40.977Q-12.621-40.696-12.479-40.331Q-12.336-39.966-12.336-39.557Q-12.336-38.995-12.613-38.529Q-12.890-38.063-13.364-37.789Q-13.839-37.514-14.388-37.514Q-14.700-37.514-14.990-37.648Q-15.280-37.782-15.513-38.028L-15.513-36.481Q-15.513-36.283-15.322-36.233Q-15.131-36.182-14.823-36.182L-14.823-35.870M-15.513-40.638L-15.513-38.507Q-15.355-38.182-15.071-37.980Q-14.788-37.778-14.445-37.778Q-14.032-37.778-13.738-38.054Q-13.443-38.331-13.296-38.749Q-13.149-39.166-13.149-39.557Q-13.149-39.935-13.283-40.344Q-13.417-40.753-13.692-41.030Q-13.966-41.306-14.344-41.306Q-14.586-41.306-14.801-41.230Q-15.016-41.153-15.208-40.992Q-15.399-40.832-15.513-40.638",[865],[848,4570,4571,4574],{"fill":986,"stroke":986},[861,4572],{"fill":854,"d":4573},"M-2.408-37.615h-6.535",[861,4575],{"stroke":854,"d":4576},"m-10.943-37.615 3.2 1.6-1.2-1.6 1.2-1.6",[848,4578,4580,4583,4586],{"style":4579},"stroke-width:.8",[861,4581],{"fill":854,"d":4582},"m-65.203-53.264 21.886 11.588",[861,4584],{"stroke":854,"d":4585},"m-41.019-40.46-2.703-3.784.405 2.568-2.351 1.108",[848,4587,4589],{"transform":4588},"translate(-36.501 -14.536)",[861,4590],{"d":4591,"fill":850,"stroke":850,"className":4592,"style":4593},"M-23.249-36.064L-25.104-36.064L-25.104-36.357Q-24.835-36.357-24.667-36.402Q-24.499-36.447-24.499-36.623L-24.499-40.447Q-24.499-40.654-24.655-40.707Q-24.811-40.760-25.104-40.760L-25.104-41.056L-23.882-41.142L-23.882-40.678Q-23.651-40.900-23.337-41.021Q-23.022-41.142-22.683-41.142Q-22.210-41.142-21.806-40.896Q-21.401-40.650-21.169-40.234Q-20.936-39.818-20.936-39.342Q-20.936-38.967-21.085-38.638Q-21.233-38.310-21.503-38.058Q-21.772-37.806-22.116-37.672Q-22.460-37.537-22.819-37.537Q-23.108-37.537-23.380-37.658Q-23.651-37.779-23.858-37.990L-23.858-36.623Q-23.858-36.447-23.690-36.402Q-23.522-36.357-23.249-36.357L-23.249-36.064M-23.858-40.279L-23.858-38.439Q-23.706-38.150-23.444-37.970Q-23.183-37.791-22.874-37.791Q-22.589-37.791-22.366-37.929Q-22.143-38.068-21.991-38.299Q-21.839-38.529-21.761-38.801Q-21.683-39.072-21.683-39.342Q-21.683-39.674-21.808-40.031Q-21.933-40.388-22.181-40.625Q-22.429-40.861-22.776-40.861Q-23.100-40.861-23.395-40.705Q-23.690-40.549-23.858-40.279M-19.729-38.568L-19.729-40.310Q-19.729-40.525-19.792-40.621Q-19.854-40.717-19.974-40.738Q-20.093-40.760-20.339-40.760L-20.339-41.056L-19.093-41.142L-19.093-38.592L-19.093-38.568Q-19.093-38.256-19.038-38.094Q-18.983-37.931-18.833-37.861Q-18.683-37.791-18.362-37.791Q-17.933-37.791-17.659-38.129Q-17.386-38.467-17.386-38.912L-17.386-40.310Q-17.386-40.525-17.448-40.621Q-17.511-40.717-17.630-40.738Q-17.749-40.760-17.995-40.760L-17.995-41.056L-16.749-41.142L-16.749-38.357Q-16.749-38.146-16.686-38.051Q-16.624-37.955-16.505-37.933Q-16.386-37.912-16.140-37.912L-16.140-37.615L-17.362-37.537L-17.362-38.158Q-17.530-37.869-17.811-37.703Q-18.093-37.537-18.413-37.537Q-19.729-37.537-19.729-38.568M-15.651-37.623L-15.651-38.845Q-15.651-38.873-15.620-38.904Q-15.589-38.935-15.565-38.935L-15.460-38.935Q-15.390-38.935-15.374-38.873Q-15.311-38.553-15.173-38.312Q-15.034-38.072-14.802-37.931Q-14.569-37.791-14.261-37.791Q-14.022-37.791-13.813-37.851Q-13.604-37.912-13.468-38.060Q-13.331-38.209-13.331-38.455Q-13.331-38.709-13.542-38.875Q-13.753-39.041-14.022-39.095L-14.643-39.209Q-15.050-39.287-15.350-39.543Q-15.651-39.799-15.651-40.174Q-15.651-40.541-15.450-40.763Q-15.249-40.986-14.925-41.084Q-14.600-41.181-14.261-41.181Q-13.796-41.181-13.499-40.974L-13.276-41.158Q-13.253-41.181-13.222-41.181L-13.171-41.181Q-13.140-41.181-13.112-41.154Q-13.085-41.127-13.085-41.095L-13.085-40.111Q-13.085-40.080-13.110-40.051Q-13.136-40.021-13.171-40.021L-13.276-40.021Q-13.311-40.021-13.339-40.049Q-13.366-40.076-13.366-40.111Q-13.366-40.510-13.618-40.730Q-13.870-40.951-14.268-40.951Q-14.624-40.951-14.907-40.828Q-15.190-40.705-15.190-40.400Q-15.190-40.181-14.989-40.049Q-14.788-39.916-14.542-39.873L-13.917-39.760Q-13.487-39.670-13.179-39.373Q-12.870-39.076-12.870-38.662Q-12.870-38.092-13.268-37.814Q-13.667-37.537-14.261-37.537Q-14.811-37.537-15.163-37.873L-15.460-37.560Q-15.483-37.537-15.518-37.537L-15.565-37.537Q-15.589-37.537-15.620-37.568Q-15.651-37.599-15.651-37.623M-10.413-37.615L-12.268-37.615L-12.268-37.912Q-11.995-37.912-11.827-37.959Q-11.659-38.006-11.659-38.174L-11.659-42.334Q-11.659-42.549-11.722-42.644Q-11.784-42.740-11.903-42.761Q-12.022-42.783-12.268-42.783L-12.268-43.080L-11.046-43.166L-11.046-40.463Q-10.921-40.674-10.733-40.824Q-10.546-40.974-10.319-41.058Q-10.093-41.142-9.847-41.142Q-8.679-41.142-8.679-40.064L-8.679-38.174Q-8.679-38.006-8.509-37.959Q-8.339-37.912-8.069-37.912L-8.069-37.615L-9.925-37.615L-9.925-37.912Q-9.651-37.912-9.483-37.959Q-9.315-38.006-9.315-38.174L-9.315-40.049Q-9.315-40.431-9.436-40.660Q-9.558-40.888-9.909-40.888Q-10.222-40.888-10.475-40.726Q-10.729-40.564-10.876-40.295Q-11.022-40.025-11.022-39.728L-11.022-38.174Q-11.022-38.006-10.852-37.959Q-10.683-37.912-10.413-37.912",[865],"stroke-width:0.240",[848,4595,4596,4599,4602],{"style":4579},[861,4597],{"fill":854,"d":4598},"m-41.019-34.77-21.887 11.588",[861,4600],{"stroke":854,"d":4601},"m-65.203-21.965 4.65-.108-2.353-1.109.406-2.568",[848,4603,4605,4612],{"stroke":854,"fontFamily":4604,"fontSize":1759},"cmr8",[848,4606,4608],{"transform":4607},"translate(-34.707 16.425)",[861,4609],{"d":4610,"fill":850,"stroke":850,"className":4611,"style":4593},"M-23.249-36.064L-25.104-36.064L-25.104-36.357Q-24.835-36.357-24.667-36.402Q-24.499-36.447-24.499-36.623L-24.499-40.447Q-24.499-40.654-24.655-40.707Q-24.811-40.760-25.104-40.760L-25.104-41.056L-23.882-41.142L-23.882-40.678Q-23.651-40.900-23.337-41.021Q-23.022-41.142-22.683-41.142Q-22.210-41.142-21.806-40.896Q-21.401-40.650-21.169-40.234Q-20.936-39.818-20.936-39.342Q-20.936-38.967-21.085-38.638Q-21.233-38.310-21.503-38.058Q-21.772-37.806-22.116-37.672Q-22.460-37.537-22.819-37.537Q-23.108-37.537-23.380-37.658Q-23.651-37.779-23.858-37.990L-23.858-36.623Q-23.858-36.447-23.690-36.402Q-23.522-36.357-23.249-36.357L-23.249-36.064M-23.858-40.279L-23.858-38.439Q-23.706-38.150-23.444-37.970Q-23.183-37.791-22.874-37.791Q-22.589-37.791-22.366-37.929Q-22.143-38.068-21.991-38.299Q-21.839-38.529-21.761-38.801Q-21.683-39.072-21.683-39.342Q-21.683-39.674-21.808-40.031Q-21.933-40.388-22.181-40.625Q-22.429-40.861-22.776-40.861Q-23.100-40.861-23.395-40.705Q-23.690-40.549-23.858-40.279",[865],[848,4613,4614],{"transform":4607},[861,4615],{"d":4616,"fill":850,"stroke":850,"className":4617,"style":4593},"M-20.173-39.310Q-20.173-39.814-19.917-40.246Q-19.661-40.678-19.225-40.929Q-18.790-41.181-18.290-41.181Q-17.903-41.181-17.561-41.037Q-17.220-40.892-16.958-40.631Q-16.696-40.369-16.554-40.033Q-16.411-39.697-16.411-39.310Q-16.411-38.818-16.675-38.408Q-16.938-37.998-17.368-37.767Q-17.798-37.537-18.290-37.537Q-18.782-37.537-19.216-37.769Q-19.649-38.002-19.911-38.410Q-20.173-38.818-20.173-39.310M-18.290-37.814Q-17.833-37.814-17.581-38.037Q-17.329-38.260-17.241-38.611Q-17.153-38.963-17.153-39.408Q-17.153-39.838-17.247-40.176Q-17.341-40.513-17.595-40.720Q-17.849-40.928-18.290-40.928Q-18.938-40.928-19.182-40.511Q-19.427-40.095-19.427-39.408Q-19.427-38.963-19.339-38.611Q-19.251-38.260-18.999-38.037Q-18.747-37.814-18.290-37.814M-14.044-36.064L-15.899-36.064L-15.899-36.357Q-15.630-36.357-15.462-36.402Q-15.294-36.447-15.294-36.623L-15.294-40.447Q-15.294-40.654-15.450-40.707Q-15.606-40.760-15.899-40.760L-15.899-41.056L-14.677-41.142L-14.677-40.678Q-14.446-40.900-14.132-41.021Q-13.817-41.142-13.477-41.142Q-13.005-41.142-12.600-40.896Q-12.196-40.650-11.964-40.234Q-11.731-39.818-11.731-39.342Q-11.731-38.967-11.880-38.638Q-12.028-38.310-12.298-38.058Q-12.567-37.806-12.911-37.672Q-13.255-37.537-13.614-37.537Q-13.903-37.537-14.175-37.658Q-14.446-37.779-14.653-37.990L-14.653-36.623Q-14.653-36.447-14.485-36.402Q-14.317-36.357-14.044-36.357L-14.044-36.064M-14.653-40.279L-14.653-38.439Q-14.501-38.150-14.239-37.970Q-13.977-37.791-13.669-37.791Q-13.384-37.791-13.161-37.929Q-12.938-38.068-12.786-38.299Q-12.634-38.529-12.556-38.801Q-12.477-39.072-12.477-39.342Q-12.477-39.674-12.602-40.031Q-12.727-40.388-12.975-40.625Q-13.224-40.861-13.571-40.861Q-13.895-40.861-14.190-40.705Q-14.485-40.549-14.653-40.279",[865],[861,4619],{"fill":854,"d":4620},"M79.905-27.656h28.453v-19.917H79.905Z",[848,4622,4624],{"transform":4623},"translate(116.859 2.153)",[861,4625],{"d":4531,"fill":850,"stroke":850,"className":4626,"style":4512},[865],[861,4628],{"fill":854,"d":4629},"M108.758-27.656h28.453v-19.917h-28.453Z",[848,4631,4633],{"transform":4632},"translate(146.208 3.472)",[861,4634],{"d":4521,"fill":850,"stroke":850,"className":4635,"style":4512},[865],[861,4637],{"fill":854,"d":4638},"M137.61-27.656h28.454v-19.917H137.61Z",[848,4640,4642],{"transform":4641},"translate(175.043 2.153)",[861,4643],{"d":4510,"fill":850,"stroke":850,"className":4644,"style":4512},[865],[848,4646,4647,4654,4660],{"stroke":854,"fontFamily":855,"fontSize":856},[848,4648,4650],{"transform":4649},"translate(119.945 30.703)",[861,4651],{"d":4652,"fill":850,"stroke":850,"className":4653,"style":866},"M-20.492-35.870L-22.579-35.870L-22.579-36.182Q-22.272-36.182-22.078-36.233Q-21.885-36.283-21.885-36.481L-21.885-38.120Q-22.377-37.514-23.111-37.514Q-23.507-37.514-23.867-37.679Q-24.227-37.844-24.498-38.131Q-24.768-38.419-24.915-38.791Q-25.062-39.162-25.062-39.557Q-25.062-40.107-24.788-40.575Q-24.513-41.043-24.045-41.317Q-23.577-41.592-23.032-41.592Q-22.641-41.592-22.309-41.379Q-21.977-41.166-21.780-40.819L-21.446-41.592L-21.186-41.592L-21.186-36.481Q-21.186-36.283-20.993-36.233Q-20.800-36.182-20.492-36.182L-20.492-35.870M-23.058-37.778Q-22.654-37.778-22.333-38.043Q-22.013-38.309-21.859-38.705L-21.859-40.261Q-21.929-40.533-22.076-40.772Q-22.224-41.012-22.452-41.159Q-22.681-41.306-22.957-41.306Q-23.366-41.306-23.661-41.034Q-23.955-40.761-24.104-40.348Q-24.254-39.935-24.254-39.549Q-24.254-39.175-24.122-38.762Q-23.990-38.349-23.720-38.063Q-23.450-37.778-23.058-37.778M-19.503-38.687L-19.503-40.674Q-19.503-40.915-19.574-41.023Q-19.644-41.131-19.778-41.155Q-19.912-41.179-20.193-41.179L-20.193-41.495L-18.800-41.592L-18.800-38.722Q-18.800-38.344-18.754-38.158Q-18.708-37.971-18.537-37.874Q-18.365-37.778-18.009-37.778Q-17.675-37.778-17.436-37.969Q-17.196-38.160-17.071-38.463Q-16.946-38.766-16.946-39.083L-16.946-40.674Q-16.946-40.915-17.016-41.023Q-17.086-41.131-17.220-41.155Q-17.354-41.179-17.640-41.179L-17.640-41.495L-16.243-41.592L-16.243-38.432Q-16.243-38.195-16.172-38.087Q-16.102-37.980-15.968-37.956Q-15.834-37.931-15.553-37.931L-15.553-37.615L-16.919-37.514L-16.919-38.235Q-17.086-37.909-17.392-37.712Q-17.697-37.514-18.053-37.514Q-18.712-37.514-19.108-37.784Q-19.503-38.054-19.503-38.687M-13.043-37.514Q-13.601-37.514-14.074-37.797Q-14.546-38.081-14.821-38.558Q-15.096-39.034-15.096-39.588Q-15.096-39.984-14.953-40.359Q-14.810-40.735-14.553-41.023Q-14.296-41.311-13.938-41.480Q-13.579-41.649-13.175-41.649Q-12.630-41.649-12.259-41.412Q-11.888-41.175-11.701-40.757Q-11.514-40.340-11.514-39.803Q-11.514-39.751-11.538-39.713Q-11.562-39.676-11.611-39.676L-14.283-39.676L-14.283-39.597Q-14.283-38.850-13.971-38.327Q-13.659-37.804-12.960-37.804Q-12.556-37.804-12.235-38.061Q-11.914-38.318-11.791-38.722Q-11.773-38.802-11.690-38.802L-11.611-38.802Q-11.571-38.802-11.543-38.771Q-11.514-38.740-11.514-38.696L-11.514-38.661Q-11.620-38.318-11.841-38.059Q-12.063-37.800-12.378-37.657Q-12.692-37.514-13.043-37.514M-14.274-39.927L-12.160-39.927Q-12.160-40.195-12.213-40.441Q-12.266-40.687-12.386-40.909Q-12.507-41.131-12.705-41.258Q-12.903-41.386-13.175-41.386Q-13.518-41.386-13.771-41.161Q-14.023-40.937-14.149-40.599Q-14.274-40.261-14.274-39.927M-10.253-38.687L-10.253-40.674Q-10.253-40.915-10.323-41.023Q-10.393-41.131-10.527-41.155Q-10.662-41.179-10.943-41.179L-10.943-41.495L-9.550-41.592L-9.550-38.722Q-9.550-38.344-9.504-38.158Q-9.457-37.971-9.286-37.874Q-9.115-37.778-8.759-37.778Q-8.425-37.778-8.185-37.969Q-7.946-38.160-7.820-38.463Q-7.695-38.766-7.695-39.083L-7.695-40.674Q-7.695-40.915-7.766-41.023Q-7.836-41.131-7.970-41.155Q-8.104-41.179-8.390-41.179L-8.390-41.495L-6.992-41.592L-6.992-38.432Q-6.992-38.195-6.922-38.087Q-6.851-37.980-6.717-37.956Q-6.583-37.931-6.302-37.931L-6.302-37.615L-7.669-37.514L-7.669-38.235Q-7.836-37.909-8.141-37.712Q-8.447-37.514-8.803-37.514Q-9.462-37.514-9.857-37.784Q-10.253-38.054-10.253-38.687M-3.793-37.514Q-4.351-37.514-4.823-37.797Q-5.296-38.081-5.570-38.558Q-5.845-39.034-5.845-39.588Q-5.845-39.984-5.702-40.359Q-5.559-40.735-5.302-41.023Q-5.045-41.311-4.687-41.480Q-4.329-41.649-3.925-41.649Q-3.380-41.649-3.008-41.412Q-2.637-41.175-2.450-40.757Q-2.264-40.340-2.264-39.803Q-2.264-39.751-2.288-39.713Q-2.312-39.676-2.360-39.676L-5.032-39.676L-5.032-39.597Q-5.032-38.850-4.720-38.327Q-4.408-37.804-3.709-37.804Q-3.305-37.804-2.984-38.061Q-2.663-38.318-2.540-38.722Q-2.523-38.802-2.439-38.802L-2.360-38.802Q-2.321-38.802-2.292-38.771Q-2.264-38.740-2.264-38.696L-2.264-38.661Q-2.369-38.318-2.591-38.059Q-2.813-37.800-3.127-37.657Q-3.441-37.514-3.793-37.514M-5.023-39.927L-2.910-39.927Q-2.910-40.195-2.962-40.441Q-3.015-40.687-3.136-40.909Q-3.257-41.131-3.454-41.258Q-3.652-41.386-3.925-41.386Q-4.267-41.386-4.520-41.161Q-4.773-40.937-4.898-40.599Q-5.023-40.261-5.023-39.927",[865],[848,4655,4656],{"transform":4649},[861,4657],{"d":4658,"fill":850,"stroke":850,"className":4659,"style":866},"M3.954-35.374Q3.449-35.761 3.080-36.266Q2.710-36.771 2.467-37.371Q2.223-37.971 2.108-38.588Q1.994-39.206 1.994-39.865Q1.994-40.524 2.108-41.139Q2.223-41.755 2.462-42.348Q2.702-42.941 3.075-43.451Q3.449-43.961 3.954-44.347Q3.989-44.365 4.011-44.365L4.090-44.365Q4.178-44.365 4.178-44.264Q4.178-44.229 4.143-44.194Q3.581-43.671 3.236-42.965Q2.891-42.260 2.743-41.478Q2.596-40.696 2.596-39.865Q2.596-39.241 2.675-38.657Q2.754-38.072 2.932-37.505Q3.110-36.938 3.409-36.437Q3.708-35.936 4.143-35.528Q4.178-35.492 4.178-35.453Q4.178-35.356 4.090-35.356L4.011-35.356Q3.989-35.356 3.954-35.374M7.922-37.615L5.018-37.615L5.018-37.931Q5.936-37.931 5.936-38.226L5.936-43.152Q5.936-43.447 5.018-43.447L5.018-43.763L10.084-43.763L10.335-41.702L10.049-41.702Q9.953-42.471 9.779-42.825Q9.605-43.178 9.234-43.313Q8.863-43.447 8.094-43.447L7.241-43.447Q6.991-43.447 6.885-43.398Q6.780-43.350 6.780-43.152L6.780-40.845L7.448-40.845Q7.909-40.845 8.131-40.922Q8.353-40.999 8.439-41.221Q8.524-41.443 8.524-41.900L8.814-41.900L8.814-39.478L8.524-39.478Q8.524-39.935 8.439-40.157Q8.353-40.379 8.131-40.456Q7.909-40.533 7.448-40.533L6.780-40.533L6.780-38.226Q6.780-37.931 7.922-37.931L7.922-37.615M13.771-37.615L10.998-37.615L10.998-37.931Q11.965-37.931 11.965-38.226L11.965-43.152Q11.965-43.447 10.998-43.447L10.998-43.763L13.771-43.763L13.771-43.447Q12.809-43.447 12.809-43.152L12.809-38.226Q12.809-37.931 13.771-37.931L13.771-37.615M17.291-37.615L14.387-37.615L14.387-37.931Q15.305-37.931 15.305-38.226L15.305-43.152Q15.305-43.447 14.387-43.447L14.387-43.763L19.454-43.763L19.704-41.702L19.418-41.702Q19.322-42.471 19.148-42.825Q18.975-43.178 18.603-43.313Q18.232-43.447 17.463-43.447L16.610-43.447Q16.360-43.447 16.254-43.398Q16.149-43.350 16.149-43.152L16.149-40.845L16.817-40.845Q17.278-40.845 17.500-40.922Q17.722-40.999 17.808-41.221Q17.894-41.443 17.894-41.900L18.184-41.900L18.184-39.478L17.894-39.478Q17.894-39.935 17.808-40.157Q17.722-40.379 17.500-40.456Q17.278-40.533 16.817-40.533L16.149-40.533L16.149-38.226Q16.149-37.931 17.291-37.931",[865],[848,4661,4662],{"transform":4649},[861,4663],{"d":4664,"fill":850,"stroke":850,"className":4665,"style":866},"M23.446-37.417Q22.800-37.417 22.240-37.677Q21.680-37.936 21.258-38.393Q20.836-38.850 20.603-39.441Q20.370-40.032 20.370-40.656Q20.370-41.289 20.601-41.895Q20.832-42.502 21.249-42.963Q21.667-43.425 22.231-43.693Q22.796-43.961 23.446-43.961Q24.101-43.961 24.670-43.693Q25.239-43.425 25.655-42.959Q26.070-42.493 26.298-41.897Q26.527-41.302 26.527-40.656Q26.527-40.032 26.298-39.441Q26.070-38.850 25.646-38.393Q25.222-37.936 24.659-37.677Q24.097-37.417 23.446-37.417M21.891-38.604Q22.071-38.340 22.313-38.145Q22.554-37.949 22.844-37.837Q23.134-37.725 23.446-37.725Q23.758-37.725 24.051-37.837Q24.343-37.949 24.587-38.147Q24.831-38.344 25.002-38.604Q25.209-38.894 25.336-39.256Q25.463-39.619 25.516-40.006Q25.569-40.392 25.569-40.810Q25.569-42.093 25.002-42.844Q24.826-43.095 24.580-43.282Q24.334-43.469 24.044-43.570Q23.754-43.671 23.446-43.671Q22.994-43.671 22.581-43.451Q22.168-43.231 21.891-42.844Q21.592-42.445 21.458-41.922Q21.324-41.399 21.324-40.810Q21.324-40.392 21.377-40.006Q21.429-39.619 21.557-39.256Q21.684-38.894 21.891-38.604M27.731-35.356L27.648-35.356Q27.560-35.356 27.560-35.453Q27.560-35.492 27.595-35.528Q28.430-36.301 28.790-37.435Q29.150-38.569 29.150-39.865Q29.150-40.485 29.071-41.076Q28.992-41.667 28.812-42.225Q28.632-42.783 28.331-43.291Q28.030-43.798 27.595-44.194Q27.560-44.229 27.560-44.264Q27.560-44.365 27.648-44.365L27.731-44.365Q27.749-44.365 27.784-44.347Q28.289-43.965 28.663-43.451Q29.036-42.937 29.273-42.359Q29.511-41.781 29.627-41.153Q29.744-40.524 29.744-39.865Q29.744-39.206 29.627-38.575Q29.511-37.945 29.271-37.360Q29.032-36.776 28.660-36.266Q28.289-35.756 27.784-35.374Q27.749-35.356 27.731-35.356",[865],[848,4667,4668],{"fill":986,"stroke":986},[848,4669,4671],{"transform":4670},"translate(109.993 -25.073)",[861,4672],{"d":4673,"fill":986,"stroke":986,"className":4674,"style":866},"M-22.984-37.615L-25.071-37.615L-25.071-37.931Q-24.764-37.931-24.572-37.984Q-24.381-38.037-24.381-38.226L-24.381-42.941Q-24.381-43.183-24.452-43.291Q-24.522-43.398-24.656-43.422Q-24.790-43.447-25.071-43.447L-25.071-43.763L-23.704-43.860L-23.704-40.810Q-23.507-41.166-23.153-41.379Q-22.799-41.592-22.399-41.592Q-21.120-41.592-21.120-40.379L-21.120-38.226Q-21.120-38.037-20.929-37.984Q-20.738-37.931-20.431-37.931L-20.431-37.615L-22.518-37.615L-22.518-37.931Q-22.206-37.931-22.015-37.984Q-21.824-38.037-21.824-38.226L-21.824-40.344Q-21.824-40.603-21.868-40.825Q-21.912-41.047-22.057-41.190Q-22.202-41.333-22.461-41.333Q-22.804-41.333-23.085-41.144Q-23.366-40.955-23.522-40.643Q-23.678-40.331-23.678-39.984L-23.678-38.226Q-23.678-38.037-23.485-37.984Q-23.291-37.931-22.984-37.931L-22.984-37.615M-17.921-37.514Q-18.479-37.514-18.952-37.797Q-19.424-38.081-19.699-38.558Q-19.974-39.034-19.974-39.588Q-19.974-39.984-19.831-40.359Q-19.688-40.735-19.431-41.023Q-19.174-41.311-18.816-41.480Q-18.457-41.649-18.053-41.649Q-17.508-41.649-17.137-41.412Q-16.766-41.175-16.579-40.757Q-16.392-40.340-16.392-39.803Q-16.392-39.751-16.416-39.713Q-16.440-39.676-16.489-39.676L-19.161-39.676L-19.161-39.597Q-19.161-38.850-18.849-38.327Q-18.537-37.804-17.838-37.804Q-17.433-37.804-17.113-38.061Q-16.792-38.318-16.669-38.722Q-16.651-38.802-16.568-38.802L-16.489-38.802Q-16.449-38.802-16.421-38.771Q-16.392-38.740-16.392-38.696L-16.392-38.661Q-16.497-38.318-16.719-38.059Q-16.941-37.800-17.255-37.657Q-17.570-37.514-17.921-37.514M-19.152-39.927L-17.038-39.927Q-17.038-40.195-17.091-40.441Q-17.143-40.687-17.264-40.909Q-17.385-41.131-17.583-41.258Q-17.781-41.386-18.053-41.386Q-18.396-41.386-18.649-41.161Q-18.901-40.937-19.026-40.599Q-19.152-40.261-19.152-39.927M-15.750-38.525Q-15.750-39.065-15.318-39.399Q-14.885-39.733-14.278-39.872Q-13.672-40.010-13.140-40.010L-13.140-40.344Q-13.140-40.603-13.259-40.847Q-13.377-41.091-13.586-41.238Q-13.795-41.386-14.067-41.386Q-14.630-41.386-14.942-41.188Q-14.792-41.161-14.700-41.043Q-14.608-40.924-14.608-40.766Q-14.608-40.590-14.733-40.460Q-14.858-40.331-15.038-40.331Q-15.227-40.331-15.355-40.458Q-15.482-40.586-15.482-40.766Q-15.482-41.236-15.043-41.443Q-14.603-41.649-14.067-41.649Q-13.777-41.649-13.489-41.561Q-13.202-41.473-12.969-41.313Q-12.736-41.153-12.586-40.913Q-12.437-40.674-12.437-40.379L-12.437-38.344Q-12.437-38.191-12.362-38.052Q-12.287-37.914-12.142-37.914Q-11.989-37.914-11.916-38.050Q-11.844-38.186-11.844-38.344L-11.844-38.920L-11.558-38.920L-11.558-38.344Q-11.558-38.011-11.806-37.786Q-12.055-37.562-12.384-37.562Q-12.643-37.562-12.826-37.756Q-13.008-37.949-13.052-38.226Q-13.219-37.905-13.553-37.709Q-13.887-37.514-14.256-37.514Q-14.810-37.514-15.280-37.762Q-15.750-38.011-15.750-38.525M-14.995-38.525Q-14.995-38.213-14.753-37.995Q-14.511-37.778-14.195-37.778Q-13.760-37.778-13.450-38.087Q-13.140-38.397-13.140-38.828L-13.140-39.755Q-13.558-39.755-13.984-39.628Q-14.410-39.500-14.702-39.223Q-14.995-38.947-14.995-38.525M-9.251-37.514Q-9.796-37.514-10.240-37.797Q-10.683-38.081-10.938-38.553Q-11.193-39.026-11.193-39.557Q-11.193-40.111-10.916-40.577Q-10.640-41.043-10.167-41.317Q-9.695-41.592-9.150-41.592Q-8.816-41.592-8.513-41.460Q-8.209-41.328-7.990-41.091L-7.990-42.941Q-7.990-43.183-8.060-43.291Q-8.130-43.398-8.264-43.422Q-8.398-43.447-8.684-43.447L-8.684-43.763L-7.317-43.860L-7.317-38.432Q-7.317-38.195-7.247-38.087Q-7.177-37.980-7.040-37.956Q-6.904-37.931-6.623-37.931L-6.623-37.615L-8.016-37.514L-8.016-38.063Q-8.266-37.800-8.585-37.657Q-8.904-37.514-9.251-37.514M-9.189-37.778Q-8.820-37.778-8.510-37.989Q-8.201-38.199-8.016-38.542L-8.016-40.674Q-8.187-40.977-8.469-41.155Q-8.750-41.333-9.088-41.333Q-9.778-41.333-10.081-40.812Q-10.385-40.291-10.385-39.549Q-10.385-38.828-10.114-38.303Q-9.844-37.778-9.189-37.778",[865],[848,4676,4677],{"fill":986,"stroke":986},[848,4678,4680],{"transform":4679},"translate(170.526 -25.073)",[861,4681],{"d":4682,"fill":986,"stroke":986,"className":4683,"style":866},"M-24.434-38.687L-24.434-41.179L-25.199-41.179L-25.199-41.438Q-24.794-41.438-24.528-41.704Q-24.263-41.970-24.142-42.370Q-24.021-42.770-24.021-43.152L-23.731-43.152L-23.731-41.495L-22.443-41.495L-22.443-41.179L-23.731-41.179L-23.731-38.722Q-23.731-38.353-23.606-38.079Q-23.480-37.804-23.155-37.804Q-22.856-37.804-22.718-38.098Q-22.579-38.393-22.579-38.722L-22.579-39.245L-22.294-39.245L-22.294-38.687Q-22.294-38.410-22.404-38.138Q-22.514-37.865-22.727-37.690Q-22.940-37.514-23.221-37.514Q-23.581-37.514-23.854-37.652Q-24.126-37.791-24.280-38.054Q-24.434-38.318-24.434-38.687M-21.411-38.525Q-21.411-39.065-20.978-39.399Q-20.545-39.733-19.938-39.872Q-19.332-40.010-18.800-40.010L-18.800-40.344Q-18.800-40.603-18.919-40.847Q-19.037-41.091-19.246-41.238Q-19.455-41.386-19.727-41.386Q-20.290-41.386-20.602-41.188Q-20.453-41.161-20.360-41.043Q-20.268-40.924-20.268-40.766Q-20.268-40.590-20.393-40.460Q-20.518-40.331-20.699-40.331Q-20.888-40.331-21.015-40.458Q-21.142-40.586-21.142-40.766Q-21.142-41.236-20.703-41.443Q-20.264-41.649-19.727-41.649Q-19.437-41.649-19.150-41.561Q-18.862-41.473-18.629-41.313Q-18.396-41.153-18.246-40.913Q-18.097-40.674-18.097-40.379L-18.097-38.344Q-18.097-38.191-18.022-38.052Q-17.948-37.914-17.803-37.914Q-17.649-37.914-17.576-38.050Q-17.504-38.186-17.504-38.344L-17.504-38.920L-17.218-38.920L-17.218-38.344Q-17.218-38.011-17.466-37.786Q-17.715-37.562-18.044-37.562Q-18.304-37.562-18.486-37.756Q-18.668-37.949-18.712-38.226Q-18.879-37.905-19.213-37.709Q-19.547-37.514-19.916-37.514Q-20.470-37.514-20.940-37.762Q-21.411-38.011-21.411-38.525M-20.655-38.525Q-20.655-38.213-20.413-37.995Q-20.171-37.778-19.855-37.778Q-19.420-37.778-19.110-38.087Q-18.800-38.397-18.800-38.828L-18.800-39.755Q-19.218-39.755-19.644-39.628Q-20.070-39.500-20.362-39.223Q-20.655-38.947-20.655-38.525M-14.867-37.615L-16.853-37.615L-16.853-37.931Q-16.546-37.931-16.355-37.984Q-16.163-38.037-16.163-38.226L-16.163-40.674Q-16.163-40.920-16.229-41.025Q-16.295-41.131-16.421-41.155Q-16.546-41.179-16.818-41.179L-16.818-41.495L-15.487-41.592L-15.487-38.226Q-15.487-38.032-15.322-37.982Q-15.157-37.931-14.867-37.931L-14.867-37.615M-16.467-43.139Q-16.467-43.345-16.317-43.495Q-16.168-43.644-15.966-43.644Q-15.834-43.644-15.717-43.574Q-15.601-43.504-15.531-43.387Q-15.460-43.271-15.460-43.139Q-15.460-42.937-15.610-42.787Q-15.759-42.638-15.966-42.638Q-16.168-42.638-16.317-42.787Q-16.467-42.937-16.467-43.139M-12.226-37.615L-14.287-37.615L-14.287-37.931Q-13.979-37.931-13.788-37.984Q-13.597-38.037-13.597-38.226L-13.597-42.941Q-13.597-43.183-13.667-43.291Q-13.738-43.398-13.872-43.422Q-14.006-43.447-14.287-43.447L-14.287-43.763L-12.920-43.860L-12.920-38.226Q-12.920-38.037-12.727-37.984Q-12.534-37.931-12.226-37.931",[865],[848,4685,4686,4689],{"fill":986,"stroke":986},[861,4687],{"fill":854,"d":4688},"M94.132-59.154v9.381",[861,4690],{"stroke":854,"d":4691},"m94.132-47.773 1.6-3.2-1.6 1.2-1.6-1.2",[848,4693,4694,4697],{"fill":986,"stroke":986},[861,4695],{"fill":854,"d":4696},"M151.837-59.154v9.381",[861,4698],{"stroke":854,"d":4699},"m151.837-47.773 1.6-3.2-1.6 1.2-1.6-1.2",[848,4701,4702,4705,4708],{"style":4579},[861,4703],{"fill":854,"d":4704},"M79.705-37.615H59.743",[861,4706],{"stroke":854,"d":4707},"m57.143-37.615 4.16 2.08-1.56-2.08 1.56-2.08",[848,4709,4711],{"transform":4710},"translate(78.8 9.289)",[861,4712],{"d":4713,"fill":850,"stroke":850,"className":4714,"style":4593},"M-23.315-37.537Q-23.796-37.537-24.204-37.781Q-24.612-38.025-24.850-38.439Q-25.089-38.853-25.089-39.342Q-25.089-39.834-24.831-40.250Q-24.573-40.666-24.141-40.904Q-23.710-41.142-23.218-41.142Q-22.597-41.142-22.147-40.705L-22.147-42.334Q-22.147-42.549-22.210-42.644Q-22.272-42.740-22.390-42.761Q-22.507-42.783-22.753-42.783L-22.753-43.080L-21.530-43.166L-21.530-38.357Q-21.530-38.146-21.468-38.051Q-21.405-37.955-21.288-37.933Q-21.171-37.912-20.921-37.912L-20.921-37.615L-22.171-37.537L-22.171-38.021Q-22.636-37.537-23.315-37.537M-23.249-37.791Q-22.909-37.791-22.616-37.982Q-22.323-38.174-22.171-38.470L-22.171-40.303Q-22.319-40.576-22.581-40.732Q-22.843-40.888-23.155-40.888Q-23.780-40.888-24.063-40.441Q-24.347-39.994-24.347-39.334Q-24.347-38.689-24.095-38.240Q-23.843-37.791-23.249-37.791M-20.413-39.369Q-20.413-39.849-20.181-40.265Q-19.948-40.681-19.538-40.931Q-19.128-41.181-18.651-41.181Q-17.921-41.181-17.522-40.740Q-17.124-40.299-17.124-39.568Q-17.124-39.463-17.218-39.439L-19.667-39.439L-19.667-39.369Q-19.667-38.959-19.546-38.603Q-19.425-38.248-19.153-38.031Q-18.882-37.814-18.452-37.814Q-18.089-37.814-17.792-38.043Q-17.495-38.271-17.393-38.623Q-17.386-38.670-17.300-38.685L-17.218-38.685Q-17.124-38.658-17.124-38.576Q-17.124-38.568-17.132-38.537Q-17.194-38.310-17.333-38.127Q-17.472-37.943-17.663-37.810Q-17.854-37.678-18.073-37.607Q-18.292-37.537-18.530-37.537Q-18.901-37.537-19.239-37.674Q-19.577-37.810-19.845-38.062Q-20.112-38.314-20.263-38.654Q-20.413-38.994-20.413-39.369M-19.659-39.678L-17.698-39.678Q-17.698-39.982-17.800-40.273Q-17.901-40.564-18.118-40.746Q-18.335-40.928-18.651-40.928Q-18.952-40.928-19.183-40.740Q-19.413-40.553-19.536-40.261Q-19.659-39.970-19.659-39.678M-12.417-36.064L-14.272-36.064L-14.272-36.357Q-14.003-36.357-13.835-36.402Q-13.667-36.447-13.667-36.623L-13.667-38.072Q-13.870-37.826-14.171-37.681Q-14.472-37.537-14.804-37.537Q-15.288-37.537-15.700-37.779Q-16.112-38.021-16.352-38.433Q-16.593-38.845-16.593-39.342Q-16.593-39.838-16.337-40.252Q-16.081-40.666-15.651-40.904Q-15.222-41.142-14.729-41.142Q-14.374-41.142-14.067-40.963Q-13.761-40.783-13.569-40.470L-13.280-41.142L-13.026-41.142L-13.026-36.623Q-13.026-36.447-12.858-36.402Q-12.690-36.357-12.417-36.357L-12.417-36.064M-14.745-37.791Q-14.378-37.791-14.085-38.023Q-13.792-38.256-13.643-38.615L-13.643-39.951Q-13.737-40.334-14.011-40.597Q-14.284-40.861-14.659-40.861Q-15.018-40.861-15.292-40.631Q-15.565-40.400-15.708-40.043Q-15.850-39.685-15.850-39.334Q-15.850-38.998-15.725-38.636Q-15.600-38.275-15.349-38.033Q-15.097-37.791-14.745-37.791M-11.472-38.568L-11.472-40.310Q-11.472-40.525-11.534-40.621Q-11.597-40.717-11.716-40.738Q-11.835-40.760-12.081-40.760L-12.081-41.056L-10.835-41.142L-10.835-38.592L-10.835-38.568Q-10.835-38.256-10.780-38.094Q-10.725-37.931-10.575-37.861Q-10.425-37.791-10.104-37.791Q-9.675-37.791-9.401-38.129Q-9.128-38.467-9.128-38.912L-9.128-40.310Q-9.128-40.525-9.190-40.621Q-9.253-40.717-9.372-40.738Q-9.491-40.760-9.737-40.760L-9.737-41.056L-8.491-41.142L-8.491-38.357Q-8.491-38.146-8.429-38.051Q-8.366-37.955-8.247-37.933Q-8.128-37.912-7.882-37.912L-7.882-37.615L-9.104-37.537L-9.104-38.158Q-9.272-37.869-9.554-37.703Q-9.835-37.537-10.155-37.537Q-11.472-37.537-11.472-38.568M-7.436-39.369Q-7.436-39.849-7.204-40.265Q-6.972-40.681-6.561-40.931Q-6.151-41.181-5.675-41.181Q-4.944-41.181-4.546-40.740Q-4.147-40.299-4.147-39.568Q-4.147-39.463-4.241-39.439L-6.690-39.439L-6.690-39.369Q-6.690-38.959-6.569-38.603Q-6.448-38.248-6.177-38.031Q-5.905-37.814-5.475-37.814Q-5.112-37.814-4.815-38.043Q-4.518-38.271-4.417-38.623Q-4.409-38.670-4.323-38.685L-4.241-38.685Q-4.147-38.658-4.147-38.576Q-4.147-38.568-4.155-38.537Q-4.218-38.310-4.356-38.127Q-4.495-37.943-4.686-37.810Q-4.878-37.678-5.097-37.607Q-5.315-37.537-5.554-37.537Q-5.925-37.537-6.263-37.674Q-6.600-37.810-6.868-38.062Q-7.136-38.314-7.286-38.654Q-7.436-38.994-7.436-39.369M-6.683-39.678L-4.722-39.678Q-4.722-39.982-4.823-40.273Q-4.925-40.564-5.141-40.746Q-5.358-40.928-5.675-40.928Q-5.975-40.928-6.206-40.740Q-6.436-40.553-6.559-40.261Q-6.683-39.970-6.683-39.678M-2.975-38.568L-2.975-40.310Q-2.975-40.525-3.038-40.621Q-3.100-40.717-3.220-40.738Q-3.339-40.760-3.585-40.760L-3.585-41.056L-2.339-41.142L-2.339-38.592L-2.339-38.568Q-2.339-38.256-2.284-38.094Q-2.229-37.931-2.079-37.861Q-1.929-37.791-1.608-37.791Q-1.179-37.791-0.905-38.129Q-0.632-38.467-0.632-38.912L-0.632-40.310Q-0.632-40.525-0.694-40.621Q-0.757-40.717-0.876-40.738Q-0.995-40.760-1.241-40.760L-1.241-41.056L0.005-41.142L0.005-38.357Q0.005-38.146 0.067-38.051Q0.130-37.955 0.249-37.933Q0.368-37.912 0.614-37.912L0.614-37.615L-0.608-37.537L-0.608-38.158Q-0.776-37.869-1.058-37.703Q-1.339-37.537-1.659-37.537Q-2.975-37.537-2.975-38.568M1.060-39.369Q1.060-39.849 1.292-40.265Q1.525-40.681 1.935-40.931Q2.345-41.181 2.821-41.181Q3.552-41.181 3.950-40.740Q4.349-40.299 4.349-39.568Q4.349-39.463 4.255-39.439L1.806-39.439L1.806-39.369Q1.806-38.959 1.927-38.603Q2.048-38.248 2.319-38.031Q2.591-37.814 3.021-37.814Q3.384-37.814 3.681-38.043Q3.978-38.271 4.079-38.623Q4.087-38.670 4.173-38.685L4.255-38.685Q4.349-38.658 4.349-38.576Q4.349-38.568 4.341-38.537Q4.278-38.310 4.140-38.127Q4.001-37.943 3.810-37.810Q3.618-37.678 3.400-37.607Q3.181-37.537 2.942-37.537Q2.571-37.537 2.234-37.674Q1.896-37.810 1.628-38.062Q1.360-38.314 1.210-38.654Q1.060-38.994 1.060-39.369M1.814-39.678L3.775-39.678Q3.775-39.982 3.673-40.273Q3.571-40.564 3.355-40.746Q3.138-40.928 2.821-40.928Q2.521-40.928 2.290-40.740Q2.060-40.553 1.937-40.261Q1.814-39.970 1.814-39.678",[865],[848,4716,4717,4720,4723],{"style":4579},[861,4718],{"fill":854,"d":4719},"M188.026-37.615h-19.162",[861,4721],{"stroke":854,"d":4722},"m166.264-37.615 4.16 2.08-1.56-2.08 1.56-2.08",[848,4724,4726],{"transform":4725},"translate(187.521 7.177)",[861,4727],{"d":4728,"fill":850,"stroke":850,"className":4729,"style":4593},"M-25.132-39.369Q-25.132-39.849-24.899-40.265Q-24.667-40.681-24.257-40.931Q-23.847-41.181-23.370-41.181Q-22.640-41.181-22.241-40.740Q-21.843-40.299-21.843-39.568Q-21.843-39.463-21.936-39.439L-24.386-39.439L-24.386-39.369Q-24.386-38.959-24.265-38.603Q-24.143-38.248-23.872-38.031Q-23.600-37.814-23.171-37.814Q-22.808-37.814-22.511-38.043Q-22.214-38.271-22.112-38.623Q-22.104-38.670-22.018-38.685L-21.936-38.685Q-21.843-38.658-21.843-38.576Q-21.843-38.568-21.850-38.537Q-21.913-38.310-22.052-38.127Q-22.190-37.943-22.382-37.810Q-22.573-37.678-22.792-37.607Q-23.011-37.537-23.249-37.537Q-23.620-37.537-23.958-37.674Q-24.296-37.810-24.563-38.062Q-24.831-38.314-24.981-38.654Q-25.132-38.994-25.132-39.369M-24.378-39.678L-22.417-39.678Q-22.417-39.982-22.518-40.273Q-22.620-40.564-22.837-40.746Q-23.054-40.928-23.370-40.928Q-23.671-40.928-23.901-40.740Q-24.132-40.553-24.255-40.261Q-24.378-39.970-24.378-39.678M-19.425-37.615L-21.280-37.615L-21.280-37.912Q-21.007-37.912-20.839-37.959Q-20.671-38.006-20.671-38.174L-20.671-40.310Q-20.671-40.525-20.733-40.621Q-20.796-40.717-20.915-40.738Q-21.034-40.760-21.280-40.760L-21.280-41.056L-20.089-41.142L-20.089-40.408Q-19.975-40.623-19.782-40.791Q-19.589-40.959-19.350-41.051Q-19.112-41.142-18.858-41.142Q-17.690-41.142-17.690-40.064L-17.690-38.174Q-17.690-38.006-17.520-37.959Q-17.350-37.912-17.081-37.912L-17.081-37.615L-18.936-37.615L-18.936-37.912Q-18.663-37.912-18.495-37.959Q-18.327-38.006-18.327-38.174L-18.327-40.049Q-18.327-40.431-18.448-40.660Q-18.569-40.888-18.921-40.888Q-19.233-40.888-19.487-40.726Q-19.741-40.564-19.888-40.295Q-20.034-40.025-20.034-39.728L-20.034-38.174Q-20.034-38.006-19.864-37.959Q-19.694-37.912-19.425-37.912L-19.425-37.615M-12.417-36.064L-14.272-36.064L-14.272-36.357Q-14.003-36.357-13.835-36.402Q-13.667-36.447-13.667-36.623L-13.667-38.072Q-13.870-37.826-14.171-37.681Q-14.472-37.537-14.804-37.537Q-15.288-37.537-15.700-37.779Q-16.112-38.021-16.352-38.433Q-16.593-38.845-16.593-39.342Q-16.593-39.838-16.337-40.252Q-16.081-40.666-15.651-40.904Q-15.222-41.142-14.729-41.142Q-14.374-41.142-14.067-40.963Q-13.761-40.783-13.569-40.470L-13.280-41.142L-13.026-41.142L-13.026-36.623Q-13.026-36.447-12.858-36.402Q-12.690-36.357-12.417-36.357L-12.417-36.064M-14.745-37.791Q-14.378-37.791-14.085-38.023Q-13.792-38.256-13.643-38.615L-13.643-39.951Q-13.737-40.334-14.011-40.597Q-14.284-40.861-14.659-40.861Q-15.018-40.861-15.292-40.631Q-15.565-40.400-15.708-40.043Q-15.850-39.685-15.850-39.334Q-15.850-38.998-15.725-38.636Q-15.600-38.275-15.349-38.033Q-15.097-37.791-14.745-37.791M-11.472-38.568L-11.472-40.310Q-11.472-40.525-11.534-40.621Q-11.597-40.717-11.716-40.738Q-11.835-40.760-12.081-40.760L-12.081-41.056L-10.835-41.142L-10.835-38.592L-10.835-38.568Q-10.835-38.256-10.780-38.094Q-10.725-37.931-10.575-37.861Q-10.425-37.791-10.104-37.791Q-9.675-37.791-9.401-38.129Q-9.128-38.467-9.128-38.912L-9.128-40.310Q-9.128-40.525-9.190-40.621Q-9.253-40.717-9.372-40.738Q-9.491-40.760-9.737-40.760L-9.737-41.056L-8.491-41.142L-8.491-38.357Q-8.491-38.146-8.429-38.051Q-8.366-37.955-8.247-37.933Q-8.128-37.912-7.882-37.912L-7.882-37.615L-9.104-37.537L-9.104-38.158Q-9.272-37.869-9.554-37.703Q-9.835-37.537-10.155-37.537Q-11.472-37.537-11.472-38.568M-7.436-39.369Q-7.436-39.849-7.204-40.265Q-6.972-40.681-6.561-40.931Q-6.151-41.181-5.675-41.181Q-4.944-41.181-4.546-40.740Q-4.147-40.299-4.147-39.568Q-4.147-39.463-4.241-39.439L-6.690-39.439L-6.690-39.369Q-6.690-38.959-6.569-38.603Q-6.448-38.248-6.177-38.031Q-5.905-37.814-5.475-37.814Q-5.112-37.814-4.815-38.043Q-4.518-38.271-4.417-38.623Q-4.409-38.670-4.323-38.685L-4.241-38.685Q-4.147-38.658-4.147-38.576Q-4.147-38.568-4.155-38.537Q-4.218-38.310-4.356-38.127Q-4.495-37.943-4.686-37.810Q-4.878-37.678-5.097-37.607Q-5.315-37.537-5.554-37.537Q-5.925-37.537-6.263-37.674Q-6.600-37.810-6.868-38.062Q-7.136-38.314-7.286-38.654Q-7.436-38.994-7.436-39.369M-6.683-39.678L-4.722-39.678Q-4.722-39.982-4.823-40.273Q-4.925-40.564-5.141-40.746Q-5.358-40.928-5.675-40.928Q-5.975-40.928-6.206-40.740Q-6.436-40.553-6.559-40.261Q-6.683-39.970-6.683-39.678M-2.975-38.568L-2.975-40.310Q-2.975-40.525-3.038-40.621Q-3.100-40.717-3.220-40.738Q-3.339-40.760-3.585-40.760L-3.585-41.056L-2.339-41.142L-2.339-38.592L-2.339-38.568Q-2.339-38.256-2.284-38.094Q-2.229-37.931-2.079-37.861Q-1.929-37.791-1.608-37.791Q-1.179-37.791-0.905-38.129Q-0.632-38.467-0.632-38.912L-0.632-40.310Q-0.632-40.525-0.694-40.621Q-0.757-40.717-0.876-40.738Q-0.995-40.760-1.241-40.760L-1.241-41.056L0.005-41.142L0.005-38.357Q0.005-38.146 0.067-38.051Q0.130-37.955 0.249-37.933Q0.368-37.912 0.614-37.912L0.614-37.615L-0.608-37.537L-0.608-38.158Q-0.776-37.869-1.058-37.703Q-1.339-37.537-1.659-37.537Q-2.975-37.537-2.975-38.568M1.060-39.369Q1.060-39.849 1.292-40.265Q1.525-40.681 1.935-40.931Q2.345-41.181 2.821-41.181Q3.552-41.181 3.950-40.740Q4.349-40.299 4.349-39.568Q4.349-39.463 4.255-39.439L1.806-39.439L1.806-39.369Q1.806-38.959 1.927-38.603Q2.048-38.248 2.319-38.031Q2.591-37.814 3.021-37.814Q3.384-37.814 3.681-38.043Q3.978-38.271 4.079-38.623Q4.087-38.670 4.173-38.685L4.255-38.685Q4.349-38.658 4.349-38.576Q4.349-38.568 4.341-38.537Q4.278-38.310 4.140-38.127Q4.001-37.943 3.810-37.810Q3.618-37.678 3.400-37.607Q3.181-37.537 2.942-37.537Q2.571-37.537 2.234-37.674Q1.896-37.810 1.628-38.062Q1.360-38.314 1.210-38.654Q1.060-38.994 1.060-39.369M1.814-39.678L3.775-39.678Q3.775-39.982 3.673-40.273Q3.571-40.564 3.355-40.746Q3.138-40.928 2.821-40.928Q2.521-40.928 2.290-40.740Q2.060-40.553 1.937-40.261Q1.814-39.970 1.814-39.678",[865],[1032,4731,4733],{"className":4732},[1035],"A stack is LIFO (one end, the top); a queue is FIFO (insert at tail, remove at head)",[381,4735,4736,4737,4753,4754,4778,4779,4782,4783,4799,4800,3542,4824,4846,4847,4877,4878,4979,4980,4877,5013,5118,5119,5143,5144,5151,5152,5176],{},"Backing a queue with an array needs care: if we always dequeued from index ",[415,4738,4740],{"className":4739},[418],[415,4741,4743],{"className":4742,"ariaHidden":423},[422],[415,4744,4746,4749],{"className":4745},[427],[415,4747],{"className":4748,"style":1739},[431],[415,4750,4752],{"className":4751},[436],"0"," we\nwould shift the whole array each time, ",[415,4755,4757],{"className":4756},[418],[415,4758,4760],{"className":4759,"ariaHidden":423},[422],[415,4761,4763,4766,4769,4772,4775],{"className":4762},[427],[415,4764],{"className":4765,"style":616},[431],[415,4767,621],{"className":4768,"style":620},[436,437],[415,4770,626],{"className":4771},[625],[415,4773,438],{"className":4774},[436,437],[415,4776,634],{"className":4777},[633],". The fix is a ",[394,4780,4781],{},"circular buffer",".\nKeep a fixed array of capacity ",[415,4784,4786],{"className":4785},[418],[415,4787,4789],{"className":4788,"ariaHidden":423},[422],[415,4790,4792,4795],{"className":4791},[427],[415,4793],{"className":4794,"style":432},[431],[415,4796,4798],{"className":4797},[436,437],"m"," and two indices, ",[415,4801,4803],{"className":4802},[418],[415,4804,4806],{"className":4805,"ariaHidden":423},[422],[415,4807,4809,4812,4815,4818,4821],{"className":4808},[427],[415,4810],{"className":4811,"style":3169},[431],[415,4813,3173],{"className":4814},[436,437],[415,4816,3148],{"className":4817},[436,437],[415,4819,385],{"className":4820},[436,437],[415,4822,3183],{"className":4823},[436,437],[415,4825,4827],{"className":4826},[418],[415,4828,4830],{"className":4829,"ariaHidden":423},[422],[415,4831,4833,4836,4839,4843],{"className":4832},[427],[415,4834],{"className":4835,"style":3169},[431],[415,4837,3155],{"className":4838},[436,437],[415,4840,4842],{"className":4841},[436,437],"ai",[415,4844,3688],{"className":4845,"style":3687},[436,437],"; enqueue\nwrites ",[415,4848,4850],{"className":4849},[418],[415,4851,4853],{"className":4852,"ariaHidden":423},[422],[415,4854,4856,4859,4862,4865,4868,4871,4874],{"className":4855},[427],[415,4857],{"className":4858,"style":616},[431],[415,4860,4312],{"className":4861},[436,437],[415,4863,4316],{"className":4864},[625],[415,4866,3155],{"className":4867},[436,437],[415,4869,4842],{"className":4870},[436,437],[415,4872,3688],{"className":4873,"style":3687},[436,437],[415,4875,4329],{"className":4876},[633]," and advances ",[415,4879,4881],{"className":4880},[418],[415,4882,4884,4908,4935,4970],{"className":4883,"ariaHidden":423},[422],[415,4885,4887,4890,4893,4896,4899,4902,4905],{"className":4886},[427],[415,4888],{"className":4889,"style":3169},[431],[415,4891,3155],{"className":4892},[436,437],[415,4894,4842],{"className":4895},[436,437],[415,4897,3688],{"className":4898,"style":3687},[436,437],[415,4900],{"className":4901,"style":2228},[565],[415,4903,3511],{"className":4904},[1294],[415,4906],{"className":4907,"style":2228},[565],[415,4909,4911,4914,4917,4920,4923,4926,4929,4932],{"className":4910},[427],[415,4912],{"className":4913,"style":616},[431],[415,4915,626],{"className":4916},[625],[415,4918,3155],{"className":4919},[436,437],[415,4921,4842],{"className":4922},[436,437],[415,4924,3688],{"className":4925,"style":3687},[436,437],[415,4927],{"className":4928,"style":566},[565],[415,4930,571],{"className":4931},[570],[415,4933],{"className":4934,"style":566},[565],[415,4936,4938,4941,4944,4947,4951,4954,4964,4967],{"className":4937},[427],[415,4939],{"className":4940,"style":616},[431],[415,4942,511],{"className":4943},[436],[415,4945,634],{"className":4946},[633],[415,4948],{"className":4949,"style":4950},[565],"margin-right:0.0556em;",[415,4952],{"className":4953,"style":566},[565],[415,4955,4957],{"className":4956},[570],[415,4958,4960],{"className":4959},[436],[415,4961,4963],{"className":4962},[436,2168],"mod",[415,4965],{"className":4966,"style":4950},[565],[415,4968],{"className":4969,"style":566},[565],[415,4971,4973,4976],{"className":4972},[427],[415,4974],{"className":4975,"style":432},[431],[415,4977,4798],{"className":4978},[436,437],", dequeue reads\n",[415,4981,4983],{"className":4982},[418],[415,4984,4986],{"className":4985,"ariaHidden":423},[422],[415,4987,4989,4992,4995,4998,5001,5004,5007,5010],{"className":4988},[427],[415,4990],{"className":4991,"style":616},[431],[415,4993,4312],{"className":4994},[436,437],[415,4996,4316],{"className":4997},[625],[415,4999,3173],{"className":5000},[436,437],[415,5002,3148],{"className":5003},[436,437],[415,5005,385],{"className":5006},[436,437],[415,5008,3183],{"className":5009},[436,437],[415,5011,4329],{"className":5012},[633],[415,5014,5016],{"className":5015},[418],[415,5017,5019,5046,5076,5109],{"className":5018,"ariaHidden":423},[422],[415,5020,5022,5025,5028,5031,5034,5037,5040,5043],{"className":5021},[427],[415,5023],{"className":5024,"style":3169},[431],[415,5026,3173],{"className":5027},[436,437],[415,5029,3148],{"className":5030},[436,437],[415,5032,385],{"className":5033},[436,437],[415,5035,3183],{"className":5036},[436,437],[415,5038],{"className":5039,"style":2228},[565],[415,5041,3511],{"className":5042},[1294],[415,5044],{"className":5045,"style":2228},[565],[415,5047,5049,5052,5055,5058,5061,5064,5067,5070,5073],{"className":5048},[427],[415,5050],{"className":5051,"style":616},[431],[415,5053,626],{"className":5054},[625],[415,5056,3173],{"className":5057},[436,437],[415,5059,3148],{"className":5060},[436,437],[415,5062,385],{"className":5063},[436,437],[415,5065,3183],{"className":5066},[436,437],[415,5068],{"className":5069,"style":566},[565],[415,5071,571],{"className":5072},[570],[415,5074],{"className":5075,"style":566},[565],[415,5077,5079,5082,5085,5088,5091,5094,5103,5106],{"className":5078},[427],[415,5080],{"className":5081,"style":616},[431],[415,5083,511],{"className":5084},[436],[415,5086,634],{"className":5087},[633],[415,5089],{"className":5090,"style":4950},[565],[415,5092],{"className":5093,"style":566},[565],[415,5095,5097],{"className":5096},[570],[415,5098,5100],{"className":5099},[436],[415,5101,4963],{"className":5102},[436,2168],[415,5104],{"className":5105,"style":4950},[565],[415,5107],{"className":5108,"style":566},[565],[415,5110,5112,5115],{"className":5111},[427],[415,5113],{"className":5114,"style":432},[431],[415,5116,4798],{"className":5117},[436,437],". The indices chase each\nother around the ring, reusing freed slots, so both operations stay ",[415,5120,5122],{"className":5121},[418],[415,5123,5125],{"className":5124,"ariaHidden":423},[422],[415,5126,5128,5131,5134,5137,5140],{"className":5127},[427],[415,5129],{"className":5130,"style":616},[431],[415,5132,621],{"className":5133,"style":620},[436,437],[415,5135,626],{"className":5136},[625],[415,5138,511],{"className":5139},[436],[415,5141,634],{"className":5142},[633]," with no\nshifting and no wasted scanning.",[503,5145,5146],{},[385,5147,1078],{"href":5148,"ariaDescribedBy":5149,"dataFootnoteRef":376,"id":5150},"#user-content-fn-clrs-queue",[509],"user-content-fnref-clrs-queue"," (When the buffer fills, resize and re-lay-out\ninto a larger ring at amortized ",[415,5153,5155],{"className":5154},[418],[415,5156,5158],{"className":5157,"ariaHidden":423},[422],[415,5159,5161,5164,5167,5170,5173],{"className":5160},[427],[415,5162],{"className":5163,"style":616},[431],[415,5165,621],{"className":5166,"style":620},[436,437],[415,5168,626],{"className":5169},[625],[415,5171,511],{"className":5172},[436],[415,5174,634],{"className":5175},[633],", exactly as for the dynamic array.)",[835,5178,5180,5395],{"className":5179},[838,839],[841,5181,5185],{"xmlns":843,"width":5182,"height":5183,"viewBox":5184},"311.158","205.805","-75 -75 233.369 154.354",[848,5186,5187,5190,5197,5200,5207,5219,5231,5243,5255,5258,5265,5268,5275,5282,5285,5289,5296,5299,5302],{"stroke":850,"style":851},[861,5188],{"fill":854,"d":5189},"M55.074-60.689c0-6.286-5.095-11.381-11.381-11.381s-11.381 5.095-11.381 11.381 5.095 11.381 11.38 11.381c6.287 0 11.382-5.095 11.382-11.38Zm-11.381 0",[848,5191,5193],{"transform":5192},"translate(-1.993 -60.34)",[861,5194],{"d":5195,"fill":850,"stroke":850,"className":5196,"style":910},"M45.682 2.047Q45.047 2.047 44.683 1.702Q44.318 1.357 44.183 0.832Q44.048 0.307 44.048-0.318Q44.048-1.343 44.404-2.042Q44.759-2.741 45.682-2.741Q46.609-2.741 46.961-2.042Q47.313-1.343 47.313-0.318Q47.313 0.307 47.178 0.832Q47.043 1.357 46.680 1.702Q46.318 2.047 45.682 2.047M45.682 1.822Q46.120 1.822 46.333 1.447Q46.547 1.073 46.597 0.606Q46.646 0.140 46.646-0.438Q46.646-0.991 46.597-1.419Q46.547-1.846 46.335-2.181Q46.123-2.516 45.682-2.516Q45.340-2.516 45.137-2.309Q44.934-2.102 44.847-1.790Q44.759-1.477 44.737-1.161Q44.715-0.844 44.715-0.438Q44.715-0.021 44.737 0.321Q44.759 0.663 44.848 1.011Q44.937 1.360 45.142 1.591Q45.347 1.822 45.682 1.822",[865],[861,5198],{"fill":854,"d":5199},"M99.46-42.48c0-6.285-5.095-11.38-11.381-11.38s-11.381 5.095-11.381 11.38c0 6.287 5.095 11.382 11.381 11.382S99.46-36.193 99.46-42.48Zm-11.381 0",[848,5201,5203],{"transform":5202},"translate(42.393 -42.13)",[861,5204],{"d":5205,"fill":850,"stroke":850,"className":5206,"style":910},"M47.019 1.907L44.489 1.907L44.489 1.627Q45.457 1.627 45.457 1.418L45.457-2.201Q45.064-2.013 44.442-2.013L44.442-2.294Q44.859-2.294 45.223-2.395Q45.587-2.495 45.843-2.741L45.969-2.741Q46.034-2.724 46.051-2.656L46.051 1.418Q46.051 1.627 47.019 1.627",[865],[848,5208,5209,5212],{"fill":1570},[861,5210],{"d":5211},"M117.67 1.907c0-6.286-5.096-11.381-11.381-11.381S94.908-4.38 94.908 1.907s5.095 11.381 11.38 11.381S117.67 8.193 117.67 1.907Zm-11.381 0",[848,5213,5215],{"transform":5214},"translate(60.603 2.256)",[861,5216],{"d":5217,"fill":850,"stroke":850,"className":5218,"style":910},"M47.019 1.907L44.134 1.907L44.134 1.705Q44.134 1.675 44.161 1.647L45.409 0.430Q45.481 0.355 45.523 0.313Q45.566 0.270 45.645 0.191Q46.058-0.222 46.289-0.580Q46.520-0.937 46.520-1.361Q46.520-1.593 46.441-1.796Q46.362-2 46.221-2.150Q46.079-2.301 45.884-2.381Q45.689-2.461 45.457-2.461Q45.146-2.461 44.888-2.302Q44.630-2.143 44.500-1.866L44.520-1.866Q44.688-1.866 44.795-1.755Q44.903-1.644 44.903-1.480Q44.903-1.323 44.794-1.210Q44.684-1.097 44.520-1.097Q44.360-1.097 44.247-1.210Q44.134-1.323 44.134-1.480Q44.134-1.856 44.342-2.143Q44.551-2.430 44.886-2.586Q45.221-2.741 45.576-2.741Q46-2.741 46.380-2.583Q46.759-2.424 46.993-2.107Q47.227-1.791 47.227-1.361Q47.227-1.050 47.087-0.781Q46.947-0.513 46.742-0.308Q46.537-0.103 46.174 0.179Q45.812 0.461 45.703 0.557L44.848 1.285L45.491 1.285Q45.754 1.285 46.043 1.283Q46.332 1.282 46.550 1.273Q46.769 1.264 46.786 1.247Q46.848 1.182 46.885 1.015Q46.923 0.847 46.961 0.605L47.227 0.605",[865],[848,5220,5221,5224],{"fill":1570},[861,5222],{"d":5223},"M99.46 46.293c0-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.381S99.46 52.58 99.46 46.294Zm-11.381 0",[848,5225,5227],{"transform":5226},"translate(42.393 46.642)",[861,5228],{"d":5229,"fill":850,"stroke":850,"className":5230,"style":910},"M44.489 1.360Q44.609 1.517 44.800 1.616Q44.992 1.716 45.207 1.755Q45.422 1.794 45.645 1.794Q45.942 1.794 46.137 1.639Q46.332 1.483 46.422 1.229Q46.513 0.974 46.513 0.690Q46.513 0.396 46.421 0.145Q46.328-0.106 46.130-0.262Q45.932-0.417 45.638-0.417L45.122-0.417Q45.094-0.417 45.069-0.443Q45.043-0.468 45.043-0.492L45.043-0.564Q45.043-0.595 45.069-0.617Q45.094-0.639 45.122-0.639L45.563-0.670Q45.925-0.670 46.145-1.027Q46.366-1.385 46.366-1.774Q46.366-2.102 46.171-2.306Q45.976-2.509 45.645-2.509Q45.358-2.509 45.105-2.425Q44.852-2.342 44.688-2.154Q44.835-2.154 44.935-2.039Q45.036-1.925 45.036-1.774Q45.036-1.624 44.930-1.514Q44.824-1.405 44.667-1.405Q44.506-1.405 44.397-1.514Q44.288-1.624 44.288-1.774Q44.288-2.099 44.496-2.318Q44.705-2.536 45.021-2.639Q45.337-2.741 45.645-2.741Q45.963-2.741 46.291-2.637Q46.619-2.533 46.846-2.311Q47.073-2.089 47.073-1.774Q47.073-1.340 46.786-1.015Q46.499-0.691 46.065-0.544Q46.376-0.479 46.656-0.313Q46.937-0.147 47.114 0.111Q47.292 0.369 47.292 0.690Q47.292 1.100 47.048 1.410Q46.803 1.719 46.422 1.883Q46.041 2.047 45.645 2.047Q45.276 2.047 44.918 1.934Q44.561 1.822 44.317 1.572Q44.072 1.323 44.072 0.953Q44.072 0.782 44.189 0.670Q44.305 0.557 44.476 0.557Q44.585 0.557 44.676 0.608Q44.766 0.659 44.821 0.752Q44.876 0.844 44.876 0.953Q44.876 1.121 44.763 1.240Q44.650 1.360 44.489 1.360",[865],[848,5232,5233,5236],{"fill":1570},[861,5234],{"d":5235},"M55.074 64.503c0-6.286-5.095-11.381-11.381-11.381s-11.381 5.095-11.381 11.381 5.095 11.381 11.38 11.381c6.287 0 11.382-5.095 11.382-11.381Zm-11.381 0",[848,5237,5239],{"transform":5238},"translate(-1.993 64.852)",[861,5240],{"d":5241,"fill":850,"stroke":850,"className":5242,"style":910},"M46.010 0.759L43.966 0.759L43.966 0.478L46.297-2.694Q46.332-2.741 46.397-2.741L46.533-2.741Q46.578-2.741 46.605-2.714Q46.632-2.687 46.632-2.642L46.632 0.478L47.395 0.478L47.395 0.759L46.632 0.759L46.632 1.418Q46.632 1.627 47.388 1.627L47.388 1.907L45.255 1.907L45.255 1.627Q46.010 1.627 46.010 1.418L46.010 0.759M46.058-1.966L44.267 0.478L46.058 0.478",[865],[848,5244,5245,5248],{"fill":1570},[861,5246],{"d":5247},"M10.688 46.293c0-6.285-5.096-11.38-11.381-11.38s-11.381 5.095-11.381 11.38S-6.98 57.674-.694 57.674s11.382-5.095 11.382-11.38Zm-11.381 0",[848,5249,5251],{"transform":5250},"translate(-46.38 46.642)",[861,5252],{"d":5253,"fill":850,"stroke":850,"className":5254,"style":910},"M44.500 1.145L44.469 1.145Q44.606 1.442 44.903 1.618Q45.200 1.794 45.528 1.794Q45.891 1.794 46.118 1.616Q46.345 1.439 46.439 1.150Q46.533 0.861 46.533 0.499Q46.533 0.184 46.479-0.101Q46.424-0.386 46.251-0.592Q46.079-0.797 45.764-0.797Q45.491-0.797 45.308-0.730Q45.125-0.663 45.021-0.574Q44.917-0.486 44.821-0.376Q44.725-0.267 44.681-0.257L44.602-0.257Q44.530-0.274 44.513-0.345L44.513-2.663Q44.513-2.697 44.537-2.719Q44.561-2.741 44.595-2.741L44.623-2.741Q44.910-2.625 45.178-2.571Q45.446-2.516 45.723-2.516Q46-2.516 46.270-2.571Q46.540-2.625 46.820-2.741L46.844-2.741Q46.879-2.741 46.902-2.718Q46.926-2.694 46.926-2.663L46.926-2.594Q46.926-2.567 46.906-2.547Q46.632-2.232 46.248-2.056Q45.863-1.880 45.450-1.880Q45.111-1.880 44.794-1.966L44.794-0.684Q45.190-1.019 45.764-1.019Q46.168-1.019 46.504-0.809Q46.841-0.598 47.034-0.246Q47.227 0.106 47.227 0.506Q47.227 0.837 47.087 1.123Q46.947 1.408 46.703 1.618Q46.458 1.828 46.156 1.938Q45.853 2.047 45.535 2.047Q45.176 2.047 44.850 1.883Q44.524 1.719 44.329 1.427Q44.134 1.135 44.134 0.772Q44.134 0.622 44.240 0.516Q44.346 0.410 44.500 0.410Q44.653 0.410 44.758 0.514Q44.862 0.618 44.862 0.772Q44.862 0.929 44.758 1.037Q44.653 1.145 44.500 1.145",[865],[861,5256],{"fill":854,"d":5257},"M-7.522 1.907c0-6.286-5.095-11.381-11.381-11.381S-30.284-4.38-30.284 1.907s5.095 11.381 11.38 11.381c6.287 0 11.382-5.095 11.382-11.381Zm-11.381 0",[848,5259,5261],{"transform":5260},"translate(-64.589 2.256)",[861,5262],{"d":5263,"fill":850,"stroke":850,"className":5264,"style":910},"M45.682 2.047Q45.224 2.047 44.906 1.832Q44.589 1.616 44.407 1.264Q44.226 0.912 44.149 0.492Q44.072 0.072 44.072-0.356Q44.072-0.940 44.325-1.496Q44.578-2.051 45.048-2.396Q45.518-2.741 46.116-2.741Q46.526-2.741 46.810-2.543Q47.094-2.345 47.094-1.942Q47.094-1.846 47.048-1.767Q47.002-1.689 46.921-1.644Q46.841-1.600 46.752-1.600Q46.605-1.600 46.504-1.697Q46.403-1.795 46.403-1.942Q46.403-2.072 46.494-2.179Q46.585-2.287 46.718-2.287Q46.530-2.509 46.116-2.509Q45.802-2.509 45.528-2.345Q45.255-2.181 45.088-1.907Q44.900-1.617 44.835-1.251Q44.770-0.885 44.770-0.431Q44.920-0.725 45.185-0.903Q45.450-1.080 45.764-1.080Q46.195-1.080 46.544-0.874Q46.892-0.667 47.092-0.311Q47.292 0.044 47.292 0.471Q47.292 0.916 47.075 1.276Q46.858 1.637 46.485 1.842Q46.113 2.047 45.682 2.047M45.682 1.794Q46.058 1.794 46.262 1.611Q46.465 1.428 46.528 1.145Q46.591 0.861 46.591 0.471Q46.591 0.085 46.537-0.195Q46.482-0.475 46.287-0.667Q46.092-0.858 45.723-0.858Q45.433-0.858 45.221-0.682Q45.009-0.506 44.901-0.233Q44.794 0.041 44.794 0.324L44.794 0.465L44.794 0.506Q44.794 1.011 45.005 1.403Q45.217 1.794 45.682 1.794",[865],[861,5266],{"fill":854,"d":5267},"M10.688-42.48c0-6.285-5.096-11.38-11.381-11.38s-11.381 5.095-11.381 11.38c0 6.287 5.095 11.382 11.38 11.382s11.382-5.095 11.382-11.381Zm-11.381 0",[848,5269,5271],{"transform":5270},"translate(-46.38 -42.13)",[861,5272],{"d":5273,"fill":850,"stroke":850,"className":5274,"style":910},"M45.129 1.699Q45.129 1.193 45.258 0.685Q45.388 0.178 45.626-0.284Q45.863-0.745 46.198-1.166L46.844-1.979L46.031-1.979Q45.446-1.979 45.050-1.971Q44.653-1.962 44.630-1.942Q44.527-1.825 44.448-1.299L44.182-1.299L44.428-2.823L44.694-2.823L44.694-2.803Q44.694-2.735 44.770-2.692Q44.845-2.649 44.923-2.642Q45.115-2.618 45.310-2.612Q45.505-2.605 45.696-2.603Q45.887-2.601 46.086-2.601L47.507-2.601L47.507-2.413Q47.497-2.365 47.487-2.355L46.431-1.032Q46.212-0.759 46.089-0.446Q45.966-0.134 45.908 0.215Q45.850 0.564 45.836 0.895Q45.822 1.227 45.822 1.699Q45.822 1.849 45.723 1.948Q45.624 2.047 45.477 2.047Q45.327 2.047 45.228 1.948Q45.129 1.849 45.129 1.699",[865],[848,5276,5278],{"transform":5277},"translate(91.096 2.43)",[861,5279],{"d":5280,"fill":850,"stroke":850,"className":5281,"style":910},"M44.219 1.746Q44.219 1.705 44.226 1.681L45.217-2.314Q45.255-2.410 45.255-2.502Q45.255-2.594 44.821-2.594Q44.735-2.622 44.735-2.707L44.763-2.817Q44.770-2.858 44.841-2.875L45.822-2.950Q45.867-2.950 45.896-2.924Q45.925-2.899 45.925-2.847L45.375-0.619Q45.600-0.882 45.884-1.031Q46.168-1.179 46.485-1.179Q46.902-1.179 47.155-0.983Q47.408-0.786 47.408-0.390Q47.408 0.061 46.954 1.179Q46.879 1.374 46.879 1.521Q46.879 1.753 47.046 1.753Q47.323 1.753 47.516 1.476Q47.709 1.199 47.788 0.878Q47.812 0.817 47.866 0.817L47.976 0.817Q48.010 0.817 48.032 0.842Q48.054 0.868 48.054 0.899Q48.054 0.912 48.047 0.926Q47.986 1.176 47.846 1.417Q47.706 1.657 47.495 1.816Q47.285 1.975 47.032 1.975Q46.749 1.975 46.547 1.813Q46.345 1.651 46.345 1.381Q46.345 1.258 46.397 1.131Q46.602 0.612 46.733 0.207Q46.865-0.198 46.865-0.486Q46.865-0.694 46.769-0.826Q46.673-0.957 46.472-0.957Q46.051-0.957 45.737-0.670Q45.422-0.383 45.204 0.051L44.783 1.733Q44.753 1.835 44.659 1.905Q44.565 1.975 44.462 1.975Q44.363 1.975 44.291 1.912Q44.219 1.849 44.219 1.746M49.418 0.940Q49.418 1.275 49.591 1.514Q49.763 1.753 50.091 1.753Q50.543 1.753 50.953 1.587Q51.363 1.422 51.630 1.087Q51.647 1.059 51.694 1.059Q51.742 1.059 51.788 1.109Q51.835 1.158 51.835 1.206Q51.835 1.237 51.814 1.264Q51.524 1.630 51.062 1.803Q50.601 1.975 50.078 1.975Q49.715 1.975 49.427 1.801Q49.138 1.627 48.981 1.328Q48.823 1.029 48.823 0.659Q48.823 0.270 48.987-0.069Q49.151-0.407 49.439-0.656Q49.726-0.906 50.086-1.043Q50.447-1.179 50.826-1.179Q51.035-1.179 51.231-1.114Q51.428-1.050 51.561-0.911Q51.694-0.773 51.694-0.564Q51.694-0.250 51.465-0.063Q51.236 0.123 50.884 0.205Q50.532 0.287 50.218 0.306Q49.903 0.324 49.531 0.324L49.510 0.324Q49.418 0.694 49.418 0.940M49.565 0.102Q49.856 0.102 50.124 0.089Q50.392 0.075 50.683 0.013Q50.973-0.048 51.170-0.188Q51.366-0.328 51.366-0.557Q51.366-0.749 51.192-0.853Q51.018-0.957 50.806-0.957Q50.348-0.957 50.028-0.662Q49.709-0.366 49.565 0.102M53.653 1.975Q53.328 1.975 53.084 1.818Q52.839 1.661 52.708 1.396Q52.576 1.131 52.576 0.806Q52.576 0.338 52.829-0.125Q53.082-0.588 53.506-0.884Q53.930-1.179 54.401-1.179Q54.617-1.179 54.803-1.075Q54.989-0.971 55.109-0.786Q55.133-0.899 55.227-0.973Q55.321-1.046 55.437-1.046Q55.540-1.046 55.608-0.985Q55.676-0.923 55.676-0.824Q55.676-0.766 55.670-0.739L55.188 1.179Q55.160 1.336 55.160 1.425Q55.160 1.552 55.212 1.652Q55.263 1.753 55.382 1.753Q55.605 1.753 55.717 1.500Q55.830 1.247 55.916 0.878Q55.940 0.817 55.991 0.817L56.104 0.817Q56.138 0.817 56.160 0.846Q56.182 0.875 56.182 0.899Q56.182 0.912 56.175 0.926Q55.912 1.975 55.369 1.975Q55.119 1.975 54.911 1.852Q54.702 1.729 54.634 1.500Q54.159 1.975 53.653 1.975M53.667 1.753Q53.940 1.753 54.191 1.569Q54.443 1.384 54.634 1.117L55.003-0.363Q54.965-0.523 54.885-0.660Q54.805-0.797 54.678-0.877Q54.552-0.957 54.388-0.957Q54.179-0.957 53.993-0.833Q53.807-0.708 53.668-0.516Q53.530-0.325 53.444-0.123Q53.332 0.171 53.248 0.516Q53.164 0.861 53.164 1.111Q53.164 1.367 53.292 1.560Q53.421 1.753 53.667 1.753M57.987 1.975Q57.662 1.975 57.418 1.818Q57.173 1.661 57.042 1.396Q56.910 1.131 56.910 0.806Q56.910 0.338 57.163-0.125Q57.416-0.588 57.840-0.884Q58.264-1.179 58.735-1.179Q58.951-1.179 59.137-1.075Q59.323-0.971 59.443-0.786L59.822-2.314Q59.857-2.417 59.857-2.502Q59.857-2.594 59.422-2.594Q59.337-2.622 59.337-2.707L59.368-2.817Q59.395-2.864 59.443-2.875L60.424-2.950Q60.462-2.950 60.496-2.923Q60.530-2.895 60.530-2.847L59.522 1.179Q59.494 1.336 59.494 1.425Q59.494 1.552 59.546 1.652Q59.597 1.753 59.716 1.753Q59.939 1.753 60.051 1.500Q60.164 1.247 60.250 0.878Q60.274 0.817 60.325 0.817L60.438 0.817Q60.472 0.817 60.494 0.846Q60.516 0.875 60.516 0.899Q60.516 0.912 60.509 0.926Q60.246 1.975 59.703 1.975Q59.453 1.975 59.245 1.852Q59.036 1.729 58.968 1.500Q58.493 1.975 57.987 1.975M58.001 1.753Q58.274 1.753 58.525 1.569Q58.776 1.384 58.968 1.117L59.337-0.363Q59.299-0.523 59.219-0.660Q59.139-0.797 59.012-0.877Q58.886-0.957 58.722-0.957Q58.513-0.957 58.327-0.833Q58.141-0.708 58.002-0.516Q57.864-0.325 57.778-0.123Q57.666 0.171 57.582 0.516Q57.498 0.861 57.498 1.111Q57.498 1.367 57.626 1.560Q57.755 1.753 58.001 1.753",[865],[861,5283],{"fill":854,"d":5284},"M131.256 1.907H118.27",[861,5286],{"fill":854,"d":5287,"style":5288},"M120.15 4.307c-.38-1.44-1.227-2.12-2.08-2.4.853-.28 1.7-.96 2.08-2.4","stroke-linecap:round;stroke-linejoin:round",[848,5290,5292],{"transform":5291},"translate(-105.963 2.43)",[861,5293],{"d":5294,"fill":850,"stroke":850,"className":5295,"style":910},"M44.336 1.319Q44.336 1.217 44.360 1.131L44.848-0.831L44.066-0.831Q43.973-0.855 43.973-0.944L44.001-1.053Q44.018-1.097 44.086-1.111L44.917-1.111L45.197-2.208Q45.228-2.321 45.320-2.395Q45.412-2.468 45.528-2.468Q45.621-2.468 45.693-2.405Q45.764-2.342 45.764-2.242Q45.764-2.195 45.757-2.174L45.491-1.111L46.270-1.111Q46.352-1.084 46.352-1.005L46.325-0.892Q46.318-0.848 46.250-0.831L45.422-0.831L44.917 1.179Q44.889 1.336 44.889 1.425Q44.889 1.552 44.942 1.652Q44.995 1.753 45.115 1.753Q45.422 1.753 45.677 1.487Q45.932 1.220 46.065 0.885Q46.099 0.817 46.144 0.817L46.256 0.817Q46.291 0.817 46.311 0.842Q46.332 0.868 46.332 0.899Q46.332 0.912 46.325 0.926Q46.215 1.199 46.039 1.437Q45.863 1.675 45.619 1.825Q45.375 1.975 45.101 1.975Q44.794 1.975 44.565 1.796Q44.336 1.616 44.336 1.319M48.201 1.975Q47.877 1.975 47.632 1.818Q47.388 1.661 47.256 1.396Q47.125 1.131 47.125 0.806Q47.125 0.338 47.378-0.125Q47.630-0.588 48.054-0.884Q48.478-1.179 48.950-1.179Q49.165-1.179 49.351-1.075Q49.538-0.971 49.657-0.786Q49.681-0.899 49.775-0.973Q49.869-1.046 49.985-1.046Q50.088-1.046 50.156-0.985Q50.225-0.923 50.225-0.824Q50.225-0.766 50.218-0.739L49.736 1.179Q49.709 1.336 49.709 1.425Q49.709 1.552 49.760 1.652Q49.811 1.753 49.931 1.753Q50.153 1.753 50.266 1.500Q50.379 1.247 50.464 0.878Q50.488 0.817 50.539 0.817L50.652 0.817Q50.686 0.817 50.708 0.846Q50.731 0.875 50.731 0.899Q50.731 0.912 50.724 0.926Q50.461 1.975 49.917 1.975Q49.668 1.975 49.459 1.852Q49.251 1.729 49.182 1.500Q48.707 1.975 48.201 1.975M48.215 1.753Q48.488 1.753 48.740 1.569Q48.991 1.384 49.182 1.117L49.551-0.363Q49.514-0.523 49.433-0.660Q49.353-0.797 49.227-0.877Q49.100-0.957 48.936-0.957Q48.728-0.957 48.541-0.833Q48.355-0.708 48.217-0.516Q48.078-0.325 47.993-0.123Q47.880 0.171 47.796 0.516Q47.713 0.861 47.713 1.111Q47.713 1.367 47.841 1.560Q47.969 1.753 48.215 1.753M51.814 1.381Q51.814 1.234 51.865 1.131L52.453-0.383Q52.528-0.585 52.528-0.725Q52.528-0.957 52.368-0.957Q52.088-0.957 51.898-0.686Q51.708-0.414 51.619-0.082Q51.609-0.017 51.547-0.017L51.438-0.017Q51.407-0.017 51.383-0.048Q51.360-0.079 51.360-0.103L51.360-0.130Q51.428-0.390 51.568-0.627Q51.708-0.865 51.918-1.022Q52.129-1.179 52.381-1.179Q52.563-1.179 52.716-1.108Q52.870-1.036 52.966-0.899Q53.062-0.762 53.062-0.585Q53.062-0.438 53.010-0.332L52.422 1.179Q52.347 1.346 52.347 1.521Q52.347 1.753 52.508 1.753Q52.785 1.753 52.978 1.476Q53.171 1.199 53.250 0.878Q53.274 0.817 53.328 0.817L53.438 0.817Q53.472 0.817 53.494 0.842Q53.516 0.868 53.516 0.899Q53.516 0.912 53.509 0.926Q53.448 1.176 53.308 1.417Q53.168 1.657 52.957 1.816Q52.747 1.975 52.494 1.975Q52.217 1.975 52.016 1.813Q51.814 1.651 51.814 1.381M52.628-2.335Q52.628-2.489 52.756-2.612Q52.884-2.735 53.041-2.735Q53.154-2.735 53.238-2.654Q53.321-2.574 53.321-2.454Q53.321-2.297 53.193-2.176Q53.065-2.054 52.908-2.054Q52.795-2.054 52.711-2.135Q52.628-2.215 52.628-2.335M54.299 1.319Q54.299 1.227 54.319 1.145L55.181-2.314Q55.215-2.417 55.215-2.502Q55.215-2.594 54.781-2.594Q54.699-2.622 54.699-2.707L54.726-2.817Q54.733-2.858 54.801-2.875L55.782-2.950Q55.820-2.950 55.854-2.923Q55.888-2.895 55.888-2.847L54.880 1.179Q54.853 1.336 54.853 1.425Q54.853 1.552 54.904 1.652Q54.955 1.753 55.075 1.753Q55.198 1.753 55.290 1.659Q55.382 1.565 55.434 1.440Q55.485 1.316 55.535 1.140Q55.584 0.964 55.601 0.878Q55.625 0.817 55.676 0.817L55.789 0.817Q55.823 0.817 55.846 0.846Q55.868 0.875 55.868 0.899Q55.868 0.912 55.861 0.926Q55.755 1.353 55.572 1.664Q55.389 1.975 55.061 1.975Q54.754 1.975 54.526 1.794Q54.299 1.613 54.299 1.319",[865],[861,5297],{"fill":854,"d":5298},"M-45.98 1.907h15.096",[861,5300],{"fill":854,"d":5301,"style":5288},"M-32.764-.493c.38 1.44 1.227 2.12 2.08 2.4-.853.28-1.7.96-2.08 2.4",[848,5303,5304,5311,5317,5323,5329,5335,5341,5347,5353,5359,5365,5371,5377,5383,5389],{"stroke":854,"fontSize":913},[848,5305,5307],{"transform":5306},"translate(-32.24 9.556)",[861,5308],{"d":5309,"fill":850,"stroke":850,"className":5310,"style":910},"M48.386-15.628Q48.386-15.949 48.511-16.238Q48.636-16.527 48.862-16.750Q49.087-16.974 49.383-17.094Q49.678-17.214 49.996-17.214Q50.324-17.214 50.586-17.114Q50.847-17.015 51.023-16.833Q51.199-16.650 51.293-16.392Q51.387-16.134 51.387-15.802Q51.387-15.710 51.305-15.689L49.050-15.689L49.050-15.628Q49.050-15.040 49.333-14.657Q49.617-14.274 50.184-14.274Q50.506-14.274 50.774-14.467Q51.042-14.660 51.131-14.975Q51.138-15.016 51.213-15.030L51.305-15.030Q51.387-15.006 51.387-14.934Q51.387-14.927 51.381-14.900Q51.268-14.503 50.897-14.264Q50.526-14.025 50.102-14.025Q49.665-14.025 49.265-14.233Q48.865-14.442 48.626-14.809Q48.386-15.176 48.386-15.628M49.056-15.898L50.871-15.898Q50.871-16.175 50.774-16.427Q50.676-16.680 50.478-16.836Q50.280-16.991 49.996-16.991Q49.719-16.991 49.506-16.833Q49.292-16.674 49.174-16.419Q49.056-16.164 49.056-15.898M53.657-14.093L52.023-14.093L52.023-14.373Q52.252-14.373 52.401-14.407Q52.550-14.442 52.550-14.582L52.550-16.431Q52.550-16.701 52.442-16.762Q52.334-16.824 52.023-16.824L52.023-17.104L53.083-17.179L53.083-16.530Q53.254-16.838 53.558-17.009Q53.862-17.179 54.207-17.179Q54.713-17.179 54.997-16.956Q55.280-16.732 55.280-16.236L55.280-14.582Q55.280-14.445 55.429-14.409Q55.578-14.373 55.803-14.373L55.803-14.093L54.173-14.093L54.173-14.373Q54.402-14.373 54.551-14.407Q54.699-14.442 54.699-14.582L54.699-16.222Q54.699-16.557 54.580-16.757Q54.460-16.957 54.146-16.957Q53.876-16.957 53.642-16.821Q53.407-16.684 53.269-16.450Q53.131-16.216 53.131-15.942L53.131-14.582Q53.131-14.445 53.281-14.409Q53.431-14.373 53.657-14.373L53.657-14.093M58.015-14.025Q57.584-14.025 57.208-14.237Q56.832-14.448 56.612-14.809Q56.391-15.170 56.391-15.604Q56.391-16.048 56.629-16.409Q56.866-16.769 57.253-16.974Q57.639-17.179 58.080-17.179Q58.398-17.179 58.681-17.024Q58.965-16.868 59.150-16.592L59.396-17.179L59.632-17.179L59.632-13.225Q59.632-13.088 59.782-13.052Q59.932-13.016 60.158-13.016L60.158-12.736L58.528-12.736L58.528-13.016Q58.753-13.016 58.902-13.051Q59.050-13.085 59.050-13.225L59.050-14.486Q58.852-14.267 58.581-14.146Q58.309-14.025 58.015-14.025M58.066-14.247Q58.398-14.247 58.669-14.452Q58.941-14.657 59.081-14.982L59.081-16.116Q59.023-16.339 58.892-16.521Q58.760-16.704 58.570-16.815Q58.381-16.926 58.155-16.926Q57.827-16.926 57.576-16.730Q57.324-16.533 57.191-16.226Q57.058-15.918 57.058-15.597Q57.058-15.296 57.174-14.980Q57.290-14.664 57.519-14.455Q57.748-14.247 58.066-14.247M61.166-14.927L61.166-16.431Q61.166-16.701 61.059-16.762Q60.951-16.824 60.640-16.824L60.640-17.104L61.747-17.179L61.747-14.947L61.747-14.927Q61.747-14.647 61.799-14.503Q61.850-14.360 61.992-14.303Q62.134-14.247 62.421-14.247Q62.674-14.247 62.879-14.387Q63.084-14.527 63.200-14.753Q63.316-14.978 63.316-15.228L63.316-16.431Q63.316-16.701 63.208-16.762Q63.101-16.824 62.790-16.824L62.790-17.104L63.897-17.179L63.897-14.766Q63.897-14.575 63.950-14.493Q64.003-14.411 64.104-14.392Q64.205-14.373 64.420-14.373L64.420-14.093L63.343-14.025L63.343-14.589Q63.234-14.407 63.089-14.284Q62.944-14.161 62.757-14.093Q62.571-14.025 62.369-14.025Q61.166-14.025 61.166-14.927M64.967-15.628Q64.967-15.949 65.092-16.238Q65.217-16.527 65.442-16.750Q65.668-16.974 65.963-17.094Q66.259-17.214 66.577-17.214Q66.905-17.214 67.166-17.114Q67.428-17.015 67.604-16.833Q67.780-16.650 67.874-16.392Q67.968-16.134 67.968-15.802Q67.968-15.710 67.886-15.689L65.630-15.689L65.630-15.628Q65.630-15.040 65.914-14.657Q66.197-14.274 66.765-14.274Q67.086-14.274 67.354-14.467Q67.623-14.660 67.712-14.975Q67.718-15.016 67.794-15.030L67.886-15.030Q67.968-15.006 67.968-14.934Q67.968-14.927 67.961-14.900Q67.848-14.503 67.478-14.264Q67.107-14.025 66.683-14.025Q66.245-14.025 65.845-14.233Q65.446-14.442 65.206-14.809Q64.967-15.176 64.967-15.628M65.637-15.898L67.452-15.898Q67.452-16.175 67.354-16.427Q67.257-16.680 67.059-16.836Q66.861-16.991 66.577-16.991Q66.300-16.991 66.086-16.833Q65.873-16.674 65.755-16.419Q65.637-16.164 65.637-15.898M69.130-14.927L69.130-16.431Q69.130-16.701 69.022-16.762Q68.915-16.824 68.604-16.824L68.604-17.104L69.711-17.179L69.711-14.947L69.711-14.927Q69.711-14.647 69.762-14.503Q69.814-14.360 69.956-14.303Q70.097-14.247 70.384-14.247Q70.637-14.247 70.842-14.387Q71.048-14.527 71.164-14.753Q71.280-14.978 71.280-15.228L71.280-16.431Q71.280-16.701 71.172-16.762Q71.065-16.824 70.754-16.824L70.754-17.104L71.861-17.179L71.861-14.766Q71.861-14.575 71.914-14.493Q71.967-14.411 72.068-14.392Q72.169-14.373 72.384-14.373L72.384-14.093L71.307-14.025L71.307-14.589Q71.198-14.407 71.053-14.284Q70.907-14.161 70.721-14.093Q70.535-14.025 70.333-14.025Q69.130-14.025 69.130-14.927M72.931-15.628Q72.931-15.949 73.056-16.238Q73.180-16.527 73.406-16.750Q73.632-16.974 73.927-17.094Q74.223-17.214 74.541-17.214Q74.869-17.214 75.130-17.114Q75.392-17.015 75.568-16.833Q75.744-16.650 75.838-16.392Q75.932-16.134 75.932-15.802Q75.932-15.710 75.850-15.689L73.594-15.689L73.594-15.628Q73.594-15.040 73.878-14.657Q74.161-14.274 74.729-14.274Q75.050-14.274 75.318-14.467Q75.587-14.660 75.675-14.975Q75.682-15.016 75.758-15.030L75.850-15.030Q75.932-15.006 75.932-14.934Q75.932-14.927 75.925-14.900Q75.812-14.503 75.441-14.264Q75.071-14.025 74.647-14.025Q74.209-14.025 73.809-14.233Q73.409-14.442 73.170-14.809Q72.931-15.176 72.931-15.628M73.601-15.898L75.416-15.898Q75.416-16.175 75.318-16.427Q75.221-16.680 75.023-16.836Q74.824-16.991 74.541-16.991Q74.264-16.991 74.050-16.833Q73.837-16.674 73.719-16.419Q73.601-16.164 73.601-15.898",[865],[848,5312,5313],{"transform":5306},[861,5314],{"d":5315,"fill":850,"stroke":850,"className":5316,"style":910},"M79.298-14.821Q79.298-15.153 79.521-15.380Q79.745-15.607 80.089-15.735Q80.432-15.864 80.805-15.916Q81.177-15.969 81.482-15.969L81.482-16.222Q81.482-16.427 81.374-16.607Q81.266-16.786 81.085-16.889Q80.904-16.991 80.696-16.991Q80.289-16.991 80.053-16.899Q80.142-16.862 80.188-16.778Q80.234-16.694 80.234-16.592Q80.234-16.496 80.188-16.417Q80.142-16.339 80.061-16.294Q79.981-16.250 79.892-16.250Q79.742-16.250 79.641-16.347Q79.540-16.445 79.540-16.592Q79.540-17.214 80.696-17.214Q80.907-17.214 81.157-17.150Q81.406-17.087 81.608-16.968Q81.810-16.848 81.936-16.663Q82.063-16.479 82.063-16.236L82.063-14.660Q82.063-14.544 82.124-14.448Q82.186-14.353 82.299-14.353Q82.408-14.353 82.473-14.447Q82.538-14.541 82.538-14.660L82.538-15.108L82.804-15.108L82.804-14.660Q82.804-14.390 82.577-14.225Q82.350-14.059 82.070-14.059Q81.861-14.059 81.724-14.213Q81.588-14.366 81.564-14.582Q81.417-14.315 81.135-14.170Q80.853-14.025 80.528-14.025Q80.251-14.025 79.967-14.100Q79.684-14.175 79.491-14.354Q79.298-14.534 79.298-14.821M79.913-14.821Q79.913-14.647 80.014-14.517Q80.114-14.387 80.270-14.317Q80.425-14.247 80.590-14.247Q80.808-14.247 81.017-14.344Q81.225-14.442 81.353-14.623Q81.482-14.804 81.482-15.030L81.482-15.758Q81.157-15.758 80.791-15.667Q80.425-15.576 80.169-15.364Q79.913-15.153 79.913-14.821M83.748-14.934L83.748-16.831L83.109-16.831L83.109-17.053Q83.426-17.053 83.644-17.263Q83.861-17.473 83.961-17.783Q84.062-18.092 84.062-18.400L84.329-18.400L84.329-17.111L85.405-17.111L85.405-16.831L84.329-16.831L84.329-14.947Q84.329-14.671 84.433-14.472Q84.537-14.274 84.797-14.274Q84.954-14.274 85.060-14.378Q85.166-14.483 85.216-14.636Q85.265-14.790 85.265-14.947L85.265-15.361L85.532-15.361L85.532-14.934Q85.532-14.708 85.433-14.498Q85.334-14.288 85.149-14.156Q84.965-14.025 84.736-14.025Q84.298-14.025 84.023-14.262Q83.748-14.500 83.748-14.934",[865],[848,5318,5319],{"transform":5306},[861,5320],{"d":5321,"fill":850,"stroke":850,"className":5322,"style":910},"M89.374-14.681Q89.374-14.783 89.398-14.869L89.886-16.831L89.104-16.831Q89.011-16.855 89.011-16.944L89.039-17.053Q89.056-17.097 89.124-17.111L89.955-17.111L90.235-18.208Q90.266-18.321 90.358-18.395Q90.450-18.468 90.566-18.468Q90.659-18.468 90.731-18.405Q90.802-18.342 90.802-18.242Q90.802-18.195 90.795-18.174L90.529-17.111L91.308-17.111Q91.390-17.084 91.390-17.005L91.363-16.892Q91.356-16.848 91.288-16.831L90.460-16.831L89.955-14.821Q89.927-14.664 89.927-14.575Q89.927-14.448 89.980-14.348Q90.033-14.247 90.153-14.247Q90.460-14.247 90.715-14.513Q90.970-14.780 91.103-15.115Q91.137-15.183 91.182-15.183L91.294-15.183Q91.329-15.183 91.349-15.158Q91.370-15.132 91.370-15.101Q91.370-15.088 91.363-15.074Q91.253-14.801 91.077-14.563Q90.901-14.325 90.657-14.175Q90.413-14.025 90.139-14.025Q89.832-14.025 89.603-14.204Q89.374-14.384 89.374-14.681M93.239-14.025Q92.915-14.025 92.670-14.182Q92.426-14.339 92.294-14.604Q92.163-14.869 92.163-15.194Q92.163-15.662 92.416-16.125Q92.668-16.588 93.092-16.884Q93.516-17.179 93.988-17.179Q94.203-17.179 94.389-17.075Q94.576-16.971 94.695-16.786Q94.719-16.899 94.813-16.973Q94.907-17.046 95.023-17.046Q95.126-17.046 95.194-16.985Q95.263-16.923 95.263-16.824Q95.263-16.766 95.256-16.739L94.774-14.821Q94.747-14.664 94.747-14.575Q94.747-14.448 94.798-14.348Q94.849-14.247 94.969-14.247Q95.191-14.247 95.304-14.500Q95.417-14.753 95.502-15.122Q95.526-15.183 95.577-15.183L95.690-15.183Q95.724-15.183 95.746-15.154Q95.769-15.125 95.769-15.101Q95.769-15.088 95.762-15.074Q95.499-14.025 94.955-14.025Q94.706-14.025 94.497-14.148Q94.289-14.271 94.220-14.500Q93.745-14.025 93.239-14.025M93.253-14.247Q93.526-14.247 93.778-14.431Q94.029-14.616 94.220-14.883L94.589-16.363Q94.552-16.523 94.471-16.660Q94.391-16.797 94.265-16.877Q94.138-16.957 93.974-16.957Q93.766-16.957 93.579-16.833Q93.393-16.708 93.255-16.516Q93.116-16.325 93.031-16.123Q92.918-15.829 92.834-15.484Q92.751-15.139 92.751-14.889Q92.751-14.633 92.879-14.440Q93.007-14.247 93.253-14.247M96.852-14.619Q96.852-14.766 96.903-14.869L97.491-16.383Q97.566-16.585 97.566-16.725Q97.566-16.957 97.406-16.957Q97.126-16.957 96.936-16.686Q96.746-16.414 96.657-16.082Q96.647-16.017 96.585-16.017L96.476-16.017Q96.445-16.017 96.421-16.048Q96.398-16.079 96.398-16.103L96.398-16.130Q96.466-16.390 96.606-16.627Q96.746-16.865 96.956-17.022Q97.167-17.179 97.419-17.179Q97.601-17.179 97.754-17.108Q97.908-17.036 98.004-16.899Q98.100-16.762 98.100-16.585Q98.100-16.438 98.048-16.332L97.460-14.821Q97.385-14.654 97.385-14.479Q97.385-14.247 97.546-14.247Q97.823-14.247 98.016-14.524Q98.209-14.801 98.288-15.122Q98.312-15.183 98.366-15.183L98.476-15.183Q98.510-15.183 98.532-15.158Q98.554-15.132 98.554-15.101Q98.554-15.088 98.547-15.074Q98.486-14.824 98.346-14.583Q98.206-14.343 97.995-14.184Q97.785-14.025 97.532-14.025Q97.255-14.025 97.054-14.187Q96.852-14.349 96.852-14.619M97.666-18.335Q97.666-18.489 97.794-18.612Q97.922-18.735 98.079-18.735Q98.192-18.735 98.276-18.654Q98.359-18.574 98.359-18.454Q98.359-18.297 98.231-18.176Q98.103-18.054 97.946-18.054Q97.833-18.054 97.749-18.135Q97.666-18.215 97.666-18.335M99.337-14.681Q99.337-14.773 99.357-14.855L100.219-18.314Q100.253-18.417 100.253-18.502Q100.253-18.594 99.819-18.594Q99.737-18.622 99.737-18.707L99.764-18.817Q99.771-18.858 99.839-18.875L100.820-18.950Q100.858-18.950 100.892-18.923Q100.926-18.895 100.926-18.847L99.918-14.821Q99.891-14.664 99.891-14.575Q99.891-14.448 99.942-14.348Q99.993-14.247 100.113-14.247Q100.236-14.247 100.328-14.341Q100.420-14.435 100.472-14.560Q100.523-14.684 100.573-14.860Q100.622-15.036 100.639-15.122Q100.663-15.183 100.714-15.183L100.827-15.183Q100.861-15.183 100.884-15.154Q100.906-15.125 100.906-15.101Q100.906-15.088 100.899-15.074Q100.793-14.647 100.610-14.336Q100.427-14.025 100.099-14.025Q99.792-14.025 99.564-14.206Q99.337-14.387 99.337-14.681",[865],[848,5324,5325],{"transform":5306},[861,5326],{"d":5327,"fill":850,"stroke":850,"className":5328,"style":910},"M102.301-12.863Q102.301-12.897 102.329-12.924Q102.599-13.153 102.748-13.476Q102.896-13.799 102.896-14.155L102.896-14.192Q102.787-14.093 102.623-14.093Q102.442-14.093 102.322-14.213Q102.202-14.332 102.202-14.513Q102.202-14.688 102.322-14.807Q102.442-14.927 102.623-14.927Q102.879-14.927 102.999-14.688Q103.118-14.448 103.118-14.155Q103.118-13.755 102.949-13.384Q102.780-13.013 102.483-12.757Q102.452-12.736 102.425-12.736Q102.384-12.736 102.342-12.777Q102.301-12.818 102.301-12.863",[865],[848,5330,5331],{"transform":5306},[861,5332],{"d":5333,"fill":850,"stroke":850,"className":5334,"style":910},"M47.449-7.604Q47.449-7.942 47.590-8.233Q47.730-8.523 47.974-8.737Q48.218-8.950 48.523-9.065Q48.827-9.179 49.152-9.179Q49.422-9.179 49.685-9.080Q49.948-8.981 50.139-8.803L50.139-10.201Q50.139-10.471 50.032-10.533Q49.924-10.594 49.613-10.594L49.613-10.875L50.690-10.950L50.690-6.766Q50.690-6.578 50.744-6.495Q50.799-6.411 50.900-6.392Q51.001-6.373 51.216-6.373L51.216-6.093L50.109-6.025L50.109-6.442Q49.692-6.025 49.066-6.025Q48.635-6.025 48.263-6.237Q47.890-6.448 47.670-6.809Q47.449-7.170 47.449-7.604M49.124-6.247Q49.333-6.247 49.519-6.319Q49.705-6.390 49.859-6.527Q50.013-6.664 50.109-6.842L50.109-8.451Q50.023-8.598 49.878-8.718Q49.733-8.838 49.563-8.897Q49.394-8.957 49.213-8.957Q48.653-8.957 48.384-8.568Q48.116-8.178 48.116-7.597Q48.116-7.026 48.350-6.636Q48.584-6.247 49.124-6.247M51.824-7.628Q51.824-7.949 51.949-8.238Q52.074-8.527 52.300-8.750Q52.525-8.974 52.821-9.094Q53.116-9.214 53.434-9.214Q53.762-9.214 54.024-9.114Q54.285-9.015 54.461-8.833Q54.637-8.650 54.731-8.392Q54.825-8.134 54.825-7.802Q54.825-7.710 54.743-7.689L52.488-7.689L52.488-7.628Q52.488-7.040 52.771-6.657Q53.055-6.274 53.622-6.274Q53.944-6.274 54.212-6.467Q54.480-6.660 54.569-6.975Q54.576-7.016 54.651-7.030L54.743-7.030Q54.825-7.006 54.825-6.934Q54.825-6.927 54.819-6.900Q54.706-6.503 54.335-6.264Q53.964-6.025 53.540-6.025Q53.103-6.025 52.703-6.233Q52.303-6.442 52.064-6.809Q51.824-7.176 51.824-7.628M52.494-7.898L54.309-7.898Q54.309-8.175 54.212-8.427Q54.114-8.680 53.916-8.836Q53.718-8.991 53.434-8.991Q53.157-8.991 52.944-8.833Q52.730-8.674 52.612-8.419Q52.494-8.164 52.494-7.898M57.037-6.025Q56.606-6.025 56.230-6.237Q55.854-6.448 55.634-6.809Q55.413-7.170 55.413-7.604Q55.413-8.048 55.651-8.409Q55.888-8.769 56.275-8.974Q56.661-9.179 57.102-9.179Q57.420-9.179 57.703-9.024Q57.987-8.868 58.172-8.592L58.418-9.179L58.654-9.179L58.654-5.225Q58.654-5.088 58.804-5.052Q58.954-5.016 59.180-5.016L59.180-4.736L57.550-4.736L57.550-5.016Q57.775-5.016 57.924-5.051Q58.072-5.085 58.072-5.225L58.072-6.486Q57.874-6.267 57.603-6.146Q57.331-6.025 57.037-6.025M57.088-6.247Q57.420-6.247 57.691-6.452Q57.963-6.657 58.103-6.982L58.103-8.116Q58.045-8.339 57.914-8.521Q57.782-8.704 57.592-8.815Q57.403-8.926 57.177-8.926Q56.849-8.926 56.598-8.730Q56.346-8.533 56.213-8.226Q56.080-7.918 56.080-7.597Q56.080-7.296 56.196-6.980Q56.312-6.664 56.541-6.455Q56.770-6.247 57.088-6.247M60.188-6.927L60.188-8.431Q60.188-8.701 60.081-8.762Q59.973-8.824 59.662-8.824L59.662-9.104L60.769-9.179L60.769-6.947L60.769-6.927Q60.769-6.647 60.821-6.503Q60.872-6.360 61.014-6.303Q61.156-6.247 61.443-6.247Q61.696-6.247 61.901-6.387Q62.106-6.527 62.222-6.753Q62.338-6.978 62.338-7.228L62.338-8.431Q62.338-8.701 62.230-8.762Q62.123-8.824 61.812-8.824L61.812-9.104L62.919-9.179L62.919-6.766Q62.919-6.575 62.972-6.493Q63.025-6.411 63.126-6.392Q63.227-6.373 63.442-6.373L63.442-6.093L62.365-6.025L62.365-6.589Q62.256-6.407 62.111-6.284Q61.966-6.161 61.779-6.093Q61.593-6.025 61.391-6.025Q60.188-6.025 60.188-6.927M63.989-7.628Q63.989-7.949 64.114-8.238Q64.239-8.527 64.464-8.750Q64.690-8.974 64.985-9.094Q65.281-9.214 65.599-9.214Q65.927-9.214 66.188-9.114Q66.450-9.015 66.626-8.833Q66.802-8.650 66.896-8.392Q66.990-8.134 66.990-7.802Q66.990-7.710 66.908-7.689L64.652-7.689L64.652-7.628Q64.652-7.040 64.936-6.657Q65.219-6.274 65.787-6.274Q66.108-6.274 66.376-6.467Q66.645-6.660 66.734-6.975Q66.740-7.016 66.816-7.030L66.908-7.030Q66.990-7.006 66.990-6.934Q66.990-6.927 66.983-6.900Q66.870-6.503 66.500-6.264Q66.129-6.025 65.705-6.025Q65.267-6.025 64.867-6.233Q64.468-6.442 64.228-6.809Q63.989-7.176 63.989-7.628M64.659-7.898L66.474-7.898Q66.474-8.175 66.376-8.427Q66.279-8.680 66.081-8.836Q65.883-8.991 65.599-8.991Q65.322-8.991 65.108-8.833Q64.895-8.674 64.777-8.419Q64.659-8.164 64.659-7.898M68.152-6.927L68.152-8.431Q68.152-8.701 68.044-8.762Q67.937-8.824 67.626-8.824L67.626-9.104L68.733-9.179L68.733-6.947L68.733-6.927Q68.733-6.647 68.784-6.503Q68.836-6.360 68.978-6.303Q69.119-6.247 69.406-6.247Q69.659-6.247 69.864-6.387Q70.070-6.527 70.186-6.753Q70.302-6.978 70.302-7.228L70.302-8.431Q70.302-8.701 70.194-8.762Q70.087-8.824 69.776-8.824L69.776-9.104L70.883-9.179L70.883-6.766Q70.883-6.575 70.936-6.493Q70.989-6.411 71.090-6.392Q71.191-6.373 71.406-6.373L71.406-6.093L70.329-6.025L70.329-6.589Q70.220-6.407 70.075-6.284Q69.929-6.161 69.743-6.093Q69.557-6.025 69.355-6.025Q68.152-6.025 68.152-6.927M71.953-7.628Q71.953-7.949 72.078-8.238Q72.202-8.527 72.428-8.750Q72.654-8.974 72.949-9.094Q73.245-9.214 73.563-9.214Q73.891-9.214 74.152-9.114Q74.414-9.015 74.590-8.833Q74.766-8.650 74.860-8.392Q74.954-8.134 74.954-7.802Q74.954-7.710 74.872-7.689L72.616-7.689L72.616-7.628Q72.616-7.040 72.900-6.657Q73.183-6.274 73.751-6.274Q74.072-6.274 74.340-6.467Q74.609-6.660 74.697-6.975Q74.704-7.016 74.780-7.030L74.872-7.030Q74.954-7.006 74.954-6.934Q74.954-6.927 74.947-6.900Q74.834-6.503 74.463-6.264Q74.093-6.025 73.669-6.025Q73.231-6.025 72.831-6.233Q72.431-6.442 72.192-6.809Q71.953-7.176 71.953-7.628M72.623-7.898L74.438-7.898Q74.438-8.175 74.340-8.427Q74.243-8.680 74.045-8.836Q73.846-8.991 73.563-8.991Q73.286-8.991 73.072-8.833Q72.859-8.674 72.741-8.419Q72.623-8.164 72.623-7.898",[865],[848,5336,5337],{"transform":5306},[861,5338],{"d":5339,"fill":850,"stroke":850,"className":5340,"style":910},"M78.321-6.821Q78.321-7.153 78.544-7.380Q78.768-7.607 79.112-7.735Q79.455-7.864 79.828-7.916Q80.200-7.969 80.505-7.969L80.505-8.222Q80.505-8.427 80.397-8.607Q80.289-8.786 80.108-8.889Q79.927-8.991 79.719-8.991Q79.312-8.991 79.076-8.899Q79.165-8.862 79.211-8.778Q79.257-8.694 79.257-8.592Q79.257-8.496 79.211-8.417Q79.165-8.339 79.084-8.294Q79.004-8.250 78.915-8.250Q78.765-8.250 78.664-8.347Q78.563-8.445 78.563-8.592Q78.563-9.214 79.719-9.214Q79.930-9.214 80.180-9.150Q80.429-9.087 80.631-8.968Q80.833-8.848 80.959-8.663Q81.086-8.479 81.086-8.236L81.086-6.660Q81.086-6.544 81.147-6.448Q81.209-6.353 81.322-6.353Q81.431-6.353 81.496-6.447Q81.561-6.541 81.561-6.660L81.561-7.108L81.827-7.108L81.827-6.660Q81.827-6.390 81.600-6.225Q81.373-6.059 81.093-6.059Q80.884-6.059 80.747-6.213Q80.611-6.366 80.587-6.582Q80.440-6.315 80.158-6.170Q79.876-6.025 79.551-6.025Q79.274-6.025 78.990-6.100Q78.707-6.175 78.514-6.354Q78.321-6.534 78.321-6.821M78.936-6.821Q78.936-6.647 79.037-6.517Q79.137-6.387 79.293-6.317Q79.448-6.247 79.613-6.247Q79.831-6.247 80.040-6.344Q80.248-6.442 80.376-6.623Q80.505-6.804 80.505-7.030L80.505-7.758Q80.180-7.758 79.814-7.667Q79.448-7.576 79.192-7.364Q78.936-7.153 78.936-6.821M82.771-6.934L82.771-8.831L82.132-8.831L82.132-9.053Q82.449-9.053 82.667-9.263Q82.884-9.473 82.984-9.783Q83.085-10.092 83.085-10.400L83.352-10.400L83.352-9.111L84.428-9.111L84.428-8.831L83.352-8.831L83.352-6.947Q83.352-6.671 83.456-6.472Q83.560-6.274 83.820-6.274Q83.977-6.274 84.083-6.378Q84.189-6.483 84.239-6.636Q84.288-6.790 84.288-6.947L84.288-7.361L84.555-7.361L84.555-6.934Q84.555-6.708 84.456-6.498Q84.357-6.288 84.172-6.156Q83.988-6.025 83.759-6.025Q83.321-6.025 83.046-6.262Q82.771-6.500 82.771-6.934",[865],[848,5342,5343],{"transform":5306},[861,5344],{"d":5345,"fill":850,"stroke":850,"className":5346,"style":910},"M88.279-6.254Q88.279-6.295 88.286-6.319L89.277-10.314Q89.315-10.410 89.315-10.502Q89.315-10.594 88.881-10.594Q88.795-10.622 88.795-10.707L88.823-10.817Q88.830-10.858 88.901-10.875L89.882-10.950Q89.927-10.950 89.956-10.924Q89.985-10.899 89.985-10.847L89.435-8.619Q89.660-8.882 89.944-9.031Q90.228-9.179 90.545-9.179Q90.962-9.179 91.215-8.983Q91.468-8.786 91.468-8.390Q91.468-7.939 91.014-6.821Q90.939-6.626 90.939-6.479Q90.939-6.247 91.106-6.247Q91.383-6.247 91.576-6.524Q91.769-6.801 91.848-7.122Q91.872-7.183 91.926-7.183L92.036-7.183Q92.070-7.183 92.092-7.158Q92.114-7.132 92.114-7.101Q92.114-7.088 92.107-7.074Q92.046-6.824 91.906-6.583Q91.766-6.343 91.555-6.184Q91.345-6.025 91.092-6.025Q90.809-6.025 90.607-6.187Q90.405-6.349 90.405-6.619Q90.405-6.742 90.457-6.869Q90.662-7.388 90.793-7.793Q90.925-8.198 90.925-8.486Q90.925-8.694 90.829-8.826Q90.733-8.957 90.532-8.957Q90.111-8.957 89.797-8.670Q89.482-8.383 89.264-7.949L88.843-6.267Q88.813-6.165 88.719-6.095Q88.625-6.025 88.522-6.025Q88.423-6.025 88.351-6.088Q88.279-6.151 88.279-6.254M93.478-7.060Q93.478-6.725 93.651-6.486Q93.823-6.247 94.151-6.247Q94.603-6.247 95.013-6.413Q95.423-6.578 95.690-6.913Q95.707-6.941 95.754-6.941Q95.802-6.941 95.848-6.891Q95.895-6.842 95.895-6.794Q95.895-6.763 95.874-6.736Q95.584-6.370 95.122-6.197Q94.661-6.025 94.138-6.025Q93.775-6.025 93.487-6.199Q93.198-6.373 93.041-6.672Q92.883-6.971 92.883-7.341Q92.883-7.730 93.047-8.069Q93.211-8.407 93.499-8.656Q93.786-8.906 94.146-9.043Q94.507-9.179 94.886-9.179Q95.095-9.179 95.291-9.114Q95.488-9.050 95.621-8.911Q95.754-8.773 95.754-8.564Q95.754-8.250 95.525-8.063Q95.296-7.877 94.944-7.795Q94.592-7.713 94.278-7.694Q93.963-7.676 93.591-7.676L93.570-7.676Q93.478-7.306 93.478-7.060M93.625-7.898Q93.916-7.898 94.184-7.911Q94.452-7.925 94.743-7.987Q95.033-8.048 95.230-8.188Q95.426-8.328 95.426-8.557Q95.426-8.749 95.252-8.853Q95.078-8.957 94.866-8.957Q94.408-8.957 94.088-8.662Q93.769-8.366 93.625-7.898M97.713-6.025Q97.388-6.025 97.144-6.182Q96.899-6.339 96.768-6.604Q96.636-6.869 96.636-7.194Q96.636-7.662 96.889-8.125Q97.142-8.588 97.566-8.884Q97.990-9.179 98.461-9.179Q98.677-9.179 98.863-9.075Q99.049-8.971 99.169-8.786Q99.193-8.899 99.287-8.973Q99.381-9.046 99.497-9.046Q99.600-9.046 99.668-8.985Q99.736-8.923 99.736-8.824Q99.736-8.766 99.730-8.739L99.248-6.821Q99.220-6.664 99.220-6.575Q99.220-6.448 99.272-6.348Q99.323-6.247 99.442-6.247Q99.665-6.247 99.777-6.500Q99.890-6.753 99.976-7.122Q100-7.183 100.051-7.183L100.164-7.183Q100.198-7.183 100.220-7.154Q100.242-7.125 100.242-7.101Q100.242-7.088 100.235-7.074Q99.972-6.025 99.429-6.025Q99.179-6.025 98.971-6.148Q98.762-6.271 98.694-6.500Q98.219-6.025 97.713-6.025M97.727-6.247Q98-6.247 98.251-6.431Q98.503-6.616 98.694-6.883L99.063-8.363Q99.025-8.523 98.945-8.660Q98.865-8.797 98.738-8.877Q98.612-8.957 98.448-8.957Q98.239-8.957 98.053-8.833Q97.867-8.708 97.728-8.516Q97.590-8.325 97.504-8.123Q97.392-7.829 97.308-7.484Q97.224-7.139 97.224-6.889Q97.224-6.633 97.352-6.440Q97.481-6.247 97.727-6.247M102.047-6.025Q101.722-6.025 101.478-6.182Q101.233-6.339 101.102-6.604Q100.970-6.869 100.970-7.194Q100.970-7.662 101.223-8.125Q101.476-8.588 101.900-8.884Q102.324-9.179 102.795-9.179Q103.011-9.179 103.197-9.075Q103.383-8.971 103.503-8.786L103.882-10.314Q103.917-10.417 103.917-10.502Q103.917-10.594 103.482-10.594Q103.397-10.622 103.397-10.707L103.428-10.817Q103.455-10.864 103.503-10.875L104.484-10.950Q104.522-10.950 104.556-10.923Q104.590-10.895 104.590-10.847L103.582-6.821Q103.554-6.664 103.554-6.575Q103.554-6.448 103.606-6.348Q103.657-6.247 103.776-6.247Q103.999-6.247 104.111-6.500Q104.224-6.753 104.310-7.122Q104.334-7.183 104.385-7.183L104.498-7.183Q104.532-7.183 104.554-7.154Q104.576-7.125 104.576-7.101Q104.576-7.088 104.569-7.074Q104.306-6.025 103.763-6.025Q103.513-6.025 103.305-6.148Q103.096-6.271 103.028-6.500Q102.553-6.025 102.047-6.025M102.061-6.247Q102.334-6.247 102.585-6.431Q102.836-6.616 103.028-6.883L103.397-8.363Q103.359-8.523 103.279-8.660Q103.199-8.797 103.072-8.877Q102.946-8.957 102.782-8.957Q102.573-8.957 102.387-8.833Q102.201-8.708 102.062-8.516Q101.924-8.325 101.838-8.123Q101.726-7.829 101.642-7.484Q101.558-7.139 101.558-6.889Q101.558-6.633 101.686-6.440Q101.815-6.247 102.061-6.247",[865],[848,5348,5349],{"transform":5306},[861,5350],{"d":5351,"fill":850,"stroke":850,"className":5352,"style":910},"M45.624 1.907L44.072 1.907L44.072 1.627Q44.298 1.627 44.447 1.593Q44.595 1.558 44.595 1.418L44.595-0.431Q44.595-0.619 44.547-0.703Q44.500-0.786 44.402-0.805Q44.305-0.824 44.093-0.824L44.093-1.104L45.149-1.179L45.149 1.418Q45.149 1.558 45.281 1.593Q45.412 1.627 45.624 1.627L45.624 1.907M44.353-2.400Q44.353-2.571 44.476-2.690Q44.599-2.810 44.770-2.810Q44.937-2.810 45.060-2.690Q45.183-2.571 45.183-2.400Q45.183-2.225 45.060-2.102Q44.937-1.979 44.770-1.979Q44.599-1.979 44.476-2.102Q44.353-2.225 44.353-2.400M47.952 1.907L46.318 1.907L46.318 1.627Q46.547 1.627 46.696 1.593Q46.844 1.558 46.844 1.418L46.844-0.431Q46.844-0.701 46.737-0.762Q46.629-0.824 46.318-0.824L46.318-1.104L47.378-1.179L47.378-0.530Q47.548-0.838 47.853-1.009Q48.157-1.179 48.502-1.179Q49.008-1.179 49.292-0.956Q49.575-0.732 49.575-0.236L49.575 1.418Q49.575 1.555 49.724 1.591Q49.873 1.627 50.098 1.627L50.098 1.907L48.468 1.907L48.468 1.627Q48.697 1.627 48.846 1.593Q48.994 1.558 48.994 1.418L48.994-0.222Q48.994-0.557 48.875-0.757Q48.755-0.957 48.441-0.957Q48.171-0.957 47.936-0.821Q47.702-0.684 47.564-0.450Q47.425-0.216 47.425 0.058L47.425 1.418Q47.425 1.555 47.576 1.591Q47.726 1.627 47.952 1.627L47.952 1.907M50.686 0.396Q50.686 0.058 50.826-0.233Q50.966-0.523 51.211-0.737Q51.455-0.950 51.759-1.065Q52.064-1.179 52.388-1.179Q52.658-1.179 52.922-1.080Q53.185-0.981 53.376-0.803L53.376-2.201Q53.376-2.471 53.268-2.533Q53.161-2.594 52.850-2.594L52.850-2.875L53.926-2.950L53.926 1.234Q53.926 1.422 53.981 1.505Q54.036 1.589 54.137 1.608Q54.237 1.627 54.453 1.627L54.453 1.907L53.345 1.975L53.345 1.558Q52.928 1.975 52.303 1.975Q51.872 1.975 51.500 1.763Q51.127 1.552 50.907 1.191Q50.686 0.830 50.686 0.396M52.361 1.753Q52.569 1.753 52.756 1.681Q52.942 1.610 53.096 1.473Q53.250 1.336 53.345 1.158L53.345-0.451Q53.260-0.598 53.115-0.718Q52.969-0.838 52.800-0.897Q52.631-0.957 52.450-0.957Q51.889-0.957 51.621-0.568Q51.353-0.178 51.353 0.403Q51.353 0.974 51.587 1.364Q51.821 1.753 52.361 1.753M55.061 0.372Q55.061 0.051 55.186-0.238Q55.311-0.527 55.536-0.750Q55.762-0.974 56.058-1.094Q56.353-1.214 56.671-1.214Q56.999-1.214 57.261-1.114Q57.522-1.015 57.698-0.833Q57.874-0.650 57.968-0.392Q58.062-0.134 58.062 0.198Q58.062 0.290 57.980 0.311L55.724 0.311L55.724 0.372Q55.724 0.960 56.008 1.343Q56.292 1.726 56.859 1.726Q57.180 1.726 57.449 1.533Q57.717 1.340 57.806 1.025Q57.813 0.984 57.888 0.970L57.980 0.970Q58.062 0.994 58.062 1.066Q58.062 1.073 58.055 1.100Q57.943 1.497 57.572 1.736Q57.201 1.975 56.777 1.975Q56.339 1.975 55.940 1.767Q55.540 1.558 55.300 1.191Q55.061 0.824 55.061 0.372M55.731 0.102L57.546 0.102Q57.546-0.175 57.449-0.427Q57.351-0.680 57.153-0.836Q56.955-0.991 56.671-0.991Q56.394-0.991 56.181-0.833Q55.967-0.674 55.849-0.419Q55.731-0.164 55.731 0.102M59.833 1.907L58.510 1.907L58.510 1.627Q59.070 1.627 59.450 1.227L60.164 0.430L59.252-0.619Q59.115-0.766 58.966-0.798Q58.818-0.831 58.551-0.831L58.551-1.111L60.051-1.111L60.051-0.831Q59.860-0.831 59.860-0.697Q59.860-0.667 59.891-0.619L60.485 0.065L60.926-0.431Q61.039-0.561 61.039-0.677Q61.039-0.739 61.002-0.785Q60.964-0.831 60.906-0.831L60.906-1.111L62.222-1.111L62.222-0.831Q61.661-0.831 61.282-0.431L60.660 0.270L61.654 1.418Q61.754 1.517 61.854 1.562Q61.955 1.606 62.066 1.616Q62.177 1.627 62.355 1.627L62.355 1.907L60.861 1.907L60.861 1.627Q60.926 1.627 60.986 1.593Q61.046 1.558 61.046 1.493Q61.046 1.446 61.015 1.418L60.339 0.632L59.805 1.227Q59.693 1.357 59.693 1.473Q59.693 1.538 59.734 1.582Q59.775 1.627 59.833 1.627",[865],[848,5354,5355],{"transform":5306},[861,5356],{"d":5357,"fill":850,"stroke":850,"className":5358,"style":910},"M67.686 3.657Q67.136 3.257 66.765 2.702Q66.394 2.146 66.213 1.500Q66.032 0.854 66.032 0.157Q66.032-0.356 66.132-0.851Q66.233-1.347 66.438-1.798Q66.643-2.249 66.956-2.641Q67.269-3.032 67.686-3.336Q67.696-3.340 67.703-3.341Q67.710-3.343 67.720-3.343L67.788-3.343Q67.823-3.343 67.845-3.319Q67.867-3.295 67.867-3.258Q67.867-3.213 67.840-3.196Q67.491-2.895 67.238-2.511Q66.985-2.126 66.833-1.685Q66.681-1.244 66.609-0.788Q66.537-0.332 66.537 0.157Q66.537 1.158 66.847 2.045Q67.156 2.932 67.840 3.517Q67.867 3.534 67.867 3.578Q67.867 3.616 67.845 3.640Q67.823 3.664 67.788 3.664L67.720 3.664Q67.713 3.660 67.705 3.659Q67.696 3.657 67.686 3.657",[865],[848,5360,5361],{"transform":5306},[861,5362],{"d":5363,"fill":850,"stroke":850,"className":5364,"style":910},"M69.136 1.381Q69.136 1.234 69.187 1.131L69.775-0.383Q69.850-0.585 69.850-0.725Q69.850-0.957 69.690-0.957Q69.409-0.957 69.220-0.686Q69.030-0.414 68.941-0.082Q68.931-0.017 68.869-0.017L68.760-0.017Q68.729-0.017 68.705-0.048Q68.681-0.079 68.681-0.103L68.681-0.130Q68.750-0.390 68.890-0.627Q69.030-0.865 69.240-1.022Q69.450-1.179 69.703-1.179Q69.885-1.179 70.038-1.108Q70.192-1.036 70.288-0.899Q70.384-0.762 70.384-0.585Q70.384-0.438 70.332-0.332L69.744 1.179Q69.669 1.346 69.669 1.521Q69.669 1.753 69.830 1.753Q70.107 1.753 70.300 1.476Q70.493 1.199 70.572 0.878Q70.596 0.817 70.650 0.817L70.760 0.817Q70.794 0.817 70.816 0.842Q70.838 0.868 70.838 0.899Q70.838 0.912 70.831 0.926Q70.770 1.176 70.630 1.417Q70.490 1.657 70.279 1.816Q70.069 1.975 69.816 1.975Q69.539 1.975 69.338 1.813Q69.136 1.651 69.136 1.381M69.950-2.335Q69.950-2.489 70.078-2.612Q70.206-2.735 70.363-2.735Q70.476-2.735 70.560-2.654Q70.643-2.574 70.643-2.454Q70.643-2.297 70.515-2.176Q70.387-2.054 70.230-2.054Q70.117-2.054 70.033-2.135Q69.950-2.215 69.950-2.335",[865],[848,5366,5367],{"transform":5306},[861,5368],{"d":5369,"fill":850,"stroke":850,"className":5370,"style":910},"M74.094 2.587L74.094 0.331L71.845 0.331Q71.777 0.321 71.731 0.275Q71.685 0.229 71.685 0.157Q71.685 0.013 71.845-0.010L74.094-0.010L74.094-2.266Q74.105-2.335 74.151-2.381Q74.197-2.427 74.269-2.427Q74.412-2.427 74.436-2.266L74.436-0.010L76.678-0.010Q76.839 0.013 76.839 0.157Q76.839 0.229 76.793 0.275Q76.747 0.321 76.678 0.331L74.436 0.331L74.436 2.587Q74.412 2.748 74.269 2.748Q74.197 2.748 74.151 2.702Q74.105 2.656 74.094 2.587",[865],[848,5372,5373],{"transform":5306},[861,5374],{"d":5375,"fill":850,"stroke":850,"className":5376,"style":910},"M80.661 1.907L78.131 1.907L78.131 1.627Q79.099 1.627 79.099 1.418L79.099-2.201Q78.706-2.013 78.084-2.013L78.084-2.294Q78.501-2.294 78.865-2.395Q79.229-2.495 79.485-2.741L79.611-2.741Q79.676-2.724 79.693-2.656L79.693 1.418Q79.693 1.627 80.661 1.627L80.661 1.907M81.953 3.664L81.884 3.664Q81.850 3.664 81.828 3.638Q81.806 3.613 81.806 3.578Q81.806 3.534 81.836 3.517Q82.192 3.213 82.441 2.823Q82.691 2.433 82.843 2.001Q82.995 1.569 83.065 1.100Q83.135 0.632 83.135 0.157Q83.135-0.322 83.065-0.788Q82.995-1.255 82.841-1.690Q82.688-2.126 82.436-2.514Q82.185-2.902 81.836-3.196Q81.806-3.213 81.806-3.258Q81.806-3.292 81.828-3.317Q81.850-3.343 81.884-3.343L81.953-3.343Q81.963-3.343 81.971-3.341Q81.980-3.340 81.990-3.336Q82.534-2.936 82.906-2.383Q83.279-1.829 83.460-1.183Q83.641-0.537 83.641 0.157Q83.641 0.858 83.460 1.505Q83.279 2.153 82.905 2.707Q82.530 3.261 81.990 3.657Q81.980 3.657 81.971 3.659Q81.963 3.660 81.953 3.664",[865],[848,5378,5379],{"transform":5306},[861,5380],{"d":5381,"fill":850,"stroke":850,"className":5382,"style":910},"M88.718 1.907L87.084 1.907L87.084 1.627Q87.313 1.627 87.462 1.593Q87.611 1.558 87.611 1.418L87.611-0.431Q87.611-0.701 87.503-0.762Q87.395-0.824 87.084-0.824L87.084-1.104L88.144-1.179L88.144-0.530Q88.315-0.838 88.619-1.009Q88.923-1.179 89.268-1.179Q89.668-1.179 89.945-1.039Q90.222-0.899 90.307-0.551Q90.475-0.844 90.774-1.012Q91.073-1.179 91.418-1.179Q91.924-1.179 92.208-0.956Q92.492-0.732 92.492-0.236L92.492 1.418Q92.492 1.555 92.640 1.591Q92.789 1.627 93.014 1.627L93.014 1.907L91.384 1.907L91.384 1.627Q91.610 1.627 91.760 1.591Q91.910 1.555 91.910 1.418L91.910-0.222Q91.910-0.557 91.791-0.757Q91.671-0.957 91.357-0.957Q91.087-0.957 90.853-0.821Q90.618-0.684 90.480-0.450Q90.342-0.216 90.342 0.058L90.342 1.418Q90.342 1.555 90.490 1.591Q90.639 1.627 90.865 1.627L90.865 1.907L89.234 1.907L89.234 1.627Q89.463 1.627 89.612 1.593Q89.761 1.558 89.761 1.418L89.761-0.222Q89.761-0.557 89.641-0.757Q89.521-0.957 89.207-0.957Q88.937-0.957 88.703-0.821Q88.469-0.684 88.330-0.450Q88.192-0.216 88.192 0.058L88.192 1.418Q88.192 1.555 88.342 1.591Q88.493 1.627 88.718 1.627L88.718 1.907M93.561 0.424Q93.561 0.082 93.696-0.217Q93.831-0.516 94.071-0.740Q94.310-0.964 94.628-1.089Q94.946-1.214 95.277-1.214Q95.722-1.214 96.121-0.998Q96.521-0.783 96.755-0.405Q96.990-0.028 96.990 0.424Q96.990 0.765 96.848 1.049Q96.706 1.333 96.462 1.540Q96.217 1.746 95.908 1.861Q95.598 1.975 95.277 1.975Q94.847 1.975 94.445 1.774Q94.043 1.572 93.802 1.220Q93.561 0.868 93.561 0.424M95.277 1.726Q95.879 1.726 96.103 1.348Q96.326 0.970 96.326 0.338Q96.326-0.274 96.092-0.633Q95.858-0.991 95.277-0.991Q94.224-0.991 94.224 0.338Q94.224 0.970 94.450 1.348Q94.676 1.726 95.277 1.726",[865],[848,5384,5385],{"transform":5306},[861,5386],{"d":5387,"fill":850,"stroke":850,"className":5388,"style":910},"M97.807 0.396Q97.807 0.058 97.948-0.233Q98.088-0.523 98.332-0.737Q98.576-0.950 98.881-1.065Q99.185-1.179 99.510-1.179Q99.780-1.179 100.043-1.080Q100.306-0.981 100.497-0.803L100.497-2.201Q100.497-2.471 100.390-2.533Q100.282-2.594 99.971-2.594L99.971-2.875L101.048-2.950L101.048 1.234Q101.048 1.422 101.102 1.505Q101.157 1.589 101.258 1.608Q101.359 1.627 101.574 1.627L101.574 1.907L100.467 1.975L100.467 1.558Q100.050 1.975 99.424 1.975Q98.993 1.975 98.621 1.763Q98.248 1.552 98.028 1.191Q97.807 0.830 97.807 0.396M99.482 1.753Q99.691 1.753 99.877 1.681Q100.063 1.610 100.217 1.473Q100.371 1.336 100.467 1.158L100.467-0.451Q100.381-0.598 100.236-0.718Q100.091-0.838 99.921-0.897Q99.752-0.957 99.571-0.957Q99.011-0.957 98.742-0.568Q98.474-0.178 98.474 0.403Q98.474 0.974 98.708 1.364Q98.942 1.753 99.482 1.753",[865],[848,5390,5391],{"transform":5306},[861,5392],{"d":5393,"fill":850,"stroke":850,"className":5394,"style":910},"M104.565 0.830Q104.565 0.389 104.868 0.068Q105.170-0.253 105.622-0.445L105.382-0.585Q105.112-0.745 104.946-1.003Q104.781-1.261 104.781-1.559Q104.781-1.911 104.986-2.183Q105.191-2.454 105.512-2.598Q105.833-2.741 106.175-2.741Q106.497-2.741 106.820-2.625Q107.143-2.509 107.354-2.268Q107.566-2.027 107.566-1.692Q107.566-1.330 107.322-1.067Q107.078-0.803 106.698-0.626L107.098-0.390Q107.293-0.277 107.452-0.108Q107.611 0.061 107.698 0.270Q107.785 0.478 107.785 0.711Q107.785 1.114 107.551 1.418Q107.317 1.722 106.943 1.885Q106.568 2.047 106.175 2.047Q105.789 2.047 105.420 1.910Q105.051 1.774 104.808 1.497Q104.565 1.220 104.565 0.830M105.013 0.830Q105.013 1.117 105.182 1.340Q105.352 1.562 105.620 1.678Q105.888 1.794 106.175 1.794Q106.613 1.794 106.975 1.577Q107.337 1.360 107.337 0.953Q107.337 0.752 107.209 0.574Q107.081 0.396 106.903 0.297L105.881-0.298Q105.642-0.188 105.444-0.022Q105.246 0.143 105.129 0.359Q105.013 0.574 105.013 0.830M105.536-1.299L106.456-0.766Q106.763-0.926 106.965-1.159Q107.166-1.391 107.166-1.692Q107.166-1.931 107.021-2.121Q106.876-2.311 106.644-2.410Q106.411-2.509 106.175-2.509Q105.953-2.509 105.724-2.439Q105.495-2.369 105.338-2.212Q105.181-2.054 105.181-1.825Q105.181-1.511 105.536-1.299",[865],[1032,5396,5398,5399,5414,5415,3542,5439,5460,5461,5476,5477,692],{"className":5397},[1035],"A circular buffer of capacity ",[415,5400,5402],{"className":5401},[418],[415,5403,5405],{"className":5404,"ariaHidden":423},[422],[415,5406,5408,5411],{"className":5407},[427],[415,5409],{"className":5410,"style":1739},[431],[415,5412,1759],{"className":5413},[436]," holding four elements: ",[415,5416,5418],{"className":5417},[418],[415,5419,5421],{"className":5420,"ariaHidden":423},[422],[415,5422,5424,5427,5430,5433,5436],{"className":5423},[427],[415,5425],{"className":5426,"style":3169},[431],[415,5428,3173],{"className":5429},[436,437],[415,5431,3148],{"className":5432},[436,437],[415,5434,385],{"className":5435},[436,437],[415,5437,3183],{"className":5438},[436,437],[415,5440,5442],{"className":5441},[418],[415,5443,5445],{"className":5444,"ariaHidden":423},[422],[415,5446,5448,5451,5454,5457],{"className":5447},[427],[415,5449],{"className":5450,"style":3169},[431],[415,5452,3155],{"className":5453},[436,437],[415,5455,4842],{"className":5456},[436,437],[415,5458,3688],{"className":5459,"style":3687},[436,437]," chase each other around the ring, and advancing past slot ",[415,5462,5464],{"className":5463},[418],[415,5465,5467],{"className":5466,"ariaHidden":423},[422],[415,5468,5470,5473],{"className":5469},[427],[415,5471],{"className":5472,"style":1739},[431],[415,5474,913],{"className":5475},[436]," wraps to slot ",[415,5478,5480],{"className":5479},[418],[415,5481,5483],{"className":5482,"ariaHidden":423},[422],[415,5484,5486,5489],{"className":5485},[427],[415,5487],{"className":5488,"style":1739},[431],[415,5490,4752],{"className":5491},[436],[381,5493,409,5494,5497,5498,5502,5503,5527,5528,5531,5532,5535],{},[394,5495,5496],{},"deque"," (double-ended queue, pronounced ",[5499,5500,5501],"q",{},"deck",") generalizes both: it supports\n",[415,5504,5506],{"className":5505},[418],[415,5507,5509],{"className":5508,"ariaHidden":423},[422],[415,5510,5512,5515,5518,5521,5524],{"className":5511},[427],[415,5513],{"className":5514,"style":616},[431],[415,5516,621],{"className":5517,"style":620},[436,437],[415,5519,626],{"className":5520},[625],[415,5522,511],{"className":5523},[436],[415,5525,634],{"className":5526},[633]," insert and delete at ",[700,5529,5530],{},"both"," ends. A deque used at one end only is a stack;\nused to push at one end and pop at the other, it is a queue, so the deque\nsubsumes everything in this lesson. A doubly linked list with a head and tail\nsentinel implements a deque directly, and a circular buffer with both indices\nmovable in either direction does too; the ",[700,5533,5534],{},"Design Circular Deque"," problem asks for\nexactly the latter.",[403,5537,5539],{"id":5538},"takeaways","Takeaways",[516,5541,5542,5651,5847,5881,5960],{},[519,5543,5544,5545,5547,5548,5572,5573,5597,5598,5600,5601,5625,5626,5650],{},"Every container is either ",[394,5546,412],{}," (an array — ",[415,5549,5551],{"className":5550},[418],[415,5552,5554],{"className":5553,"ariaHidden":423},[422],[415,5555,5557,5560,5563,5566,5569],{"className":5556},[427],[415,5558],{"className":5559,"style":616},[431],[415,5561,621],{"className":5562,"style":620},[436,437],[415,5564,626],{"className":5565},[625],[415,5567,511],{"className":5568},[436],[415,5570,634],{"className":5571},[633]," random access by\naddress arithmetic, cache-friendly, ",[415,5574,5576],{"className":5575},[418],[415,5577,5579],{"className":5578,"ariaHidden":423},[422],[415,5580,5582,5585,5588,5591,5594],{"className":5581},[427],[415,5583],{"className":5584,"style":616},[431],[415,5586,621],{"className":5587,"style":620},[436,437],[415,5589,626],{"className":5590},[625],[415,5592,438],{"className":5593},[436,437],[415,5595,634],{"className":5596},[633]," to splice) or ",[394,5599,496],{}," (nodes\njoined by pointers — ",[415,5602,5604],{"className":5603},[418],[415,5605,5607],{"className":5606,"ariaHidden":423},[422],[415,5608,5610,5613,5616,5619,5622],{"className":5609},[427],[415,5611],{"className":5612,"style":616},[431],[415,5614,621],{"className":5615,"style":620},[436,437],[415,5617,626],{"className":5618},[625],[415,5620,511],{"className":5621},[436],[415,5623,634],{"className":5624},[633]," splice given the node, ",[415,5627,5629],{"className":5628},[418],[415,5630,5632],{"className":5631,"ariaHidden":423},[422],[415,5633,5635,5638,5641,5644,5647],{"className":5634},[427],[415,5636],{"className":5637,"style":616},[431],[415,5639,621],{"className":5640,"style":620},[436,437],[415,5642,626],{"className":5643},[625],[415,5645,438],{"className":5646},[436,437],[415,5648,634],{"className":5649},[633]," to index, a pointer of\noverhead per element). The choice is a trade, not a winner.",[519,5652,409,5653,5655,5656,5683,5684,5687,5688,5703,5704,5821,5822,5846],{},[394,5654,1259],{}," appends in ",[394,5657,5658,5659],{},"amortized ",[415,5660,5662],{"className":5661},[418],[415,5663,5665],{"className":5664,"ariaHidden":423},[422],[415,5666,5668,5671,5674,5677,5680],{"className":5667},[427],[415,5669],{"className":5670,"style":616},[431],[415,5672,621],{"className":5673,"style":620},[436,437],[415,5675,626],{"className":5676},[625],[415,5678,511],{"className":5679},[436],[415,5681,634],{"className":5682},[633]," by ",[394,5685,5686],{},"doubling"," capacity on\noverflow: the aggregate copy cost over ",[415,5689,5691],{"className":5690},[418],[415,5692,5694],{"className":5693,"ariaHidden":423},[422],[415,5695,5697,5700],{"className":5696},[427],[415,5698],{"className":5699,"style":432},[431],[415,5701,438],{"className":5702},[436,437]," appends is ",[415,5705,5707],{"className":5706},[418],[415,5708,5710,5728,5746,5764,5809],{"className":5709,"ariaHidden":423},[422],[415,5711,5713,5716,5719,5722,5725],{"className":5712},[427],[415,5714],{"className":5715,"style":2265},[431],[415,5717,511],{"className":5718},[436],[415,5720],{"className":5721,"style":566},[565],[415,5723,571],{"className":5724},[570],[415,5726],{"className":5727,"style":566},[565],[415,5729,5731,5734,5737,5740,5743],{"className":5730},[427],[415,5732],{"className":5733,"style":2265},[431],[415,5735,1966],{"className":5736},[436],[415,5738],{"className":5739,"style":566},[565],[415,5741,571],{"className":5742},[570],[415,5744],{"className":5745,"style":566},[565],[415,5747,5749,5752,5755,5758,5761],{"className":5748},[427],[415,5750],{"className":5751,"style":2320},[431],[415,5753,2324],{"className":5754},[1994],[415,5756],{"className":5757,"style":566},[565],[415,5759,571],{"className":5760},[570],[415,5762],{"className":5763,"style":566},[565],[415,5765,5767,5771,5800,5803,5806],{"className":5766},[427],[415,5768],{"className":5769,"style":5770},[431],"height:0.8882em;vertical-align:-0.0391em;",[415,5772,5774,5777],{"className":5773},[436],[415,5775,1966],{"className":5776},[436],[415,5778,5780],{"className":5779},[2019],[415,5781,5783],{"className":5782},[2023],[415,5784,5786],{"className":5785},[2027],[415,5787,5789],{"className":5788,"style":2009},[2031],[415,5790,5791,5794],{"style":2034},[415,5792],{"className":5793,"style":2039},[2038],[415,5795,5797],{"className":5796},[2043,2044,2045,2046],[415,5798,2051],{"className":5799,"style":2050},[436,437,2046],[415,5801],{"className":5802,"style":2228},[565],[415,5804,2570],{"className":5805},[1294],[415,5807],{"className":5808,"style":2228},[565],[415,5810,5812,5815,5818],{"className":5811},[427],[415,5813],{"className":5814,"style":1739},[431],[415,5816,1966],{"className":5817},[436],[415,5819,438],{"className":5820},[436,437],". The\nworst-case single append is still ",[415,5823,5825],{"className":5824},[418],[415,5826,5828],{"className":5827,"ariaHidden":423},[422],[415,5829,5831,5834,5837,5840,5843],{"className":5830},[427],[415,5832],{"className":5833,"style":616},[431],[415,5835,621],{"className":5836,"style":620},[436,437],[415,5838,626],{"className":5839},[625],[415,5841,438],{"className":5842},[436,437],[415,5844,634],{"className":5845},[633]," on the resize step.",[519,5848,409,5849,5852,5853,5877,5878,5880],{},[394,5850,5851],{},"doubly linked list"," inserts and deletes in ",[415,5854,5856],{"className":5855},[418],[415,5857,5859],{"className":5858,"ariaHidden":423},[422],[415,5860,5862,5865,5868,5871,5874],{"className":5861},[427],[415,5863],{"className":5864,"style":616},[431],[415,5866,621],{"className":5867,"style":620},[436,437],[415,5869,626],{"className":5870},[625],[415,5872,511],{"className":5873},[436],[415,5875,634],{"className":5876},[633]," given the node; a\n",[394,5879,3666],{}," node erases the boundary cases so delete is two pointer writes.",[519,5882,409,5883,3209,5885,5887,5888,5934,5935,5959],{},[394,5884,4170],{},[394,5886,4174],{}," (",[415,5889,5891],{"className":5890},[418],[415,5892,5894],{"className":5893,"ariaHidden":423},[422],[415,5895,5897,5900,5909,5913,5922,5925],{"className":5896},[427],[415,5898],{"className":5899,"style":616},[431],[415,5901,5903],{"className":5902},[1843,1844],[415,5904,5906],{"className":5905},[436,1848],[415,5907,4197],{"className":5908},[436],[415,5910,5912],{"className":5911},[436],"\u002F",[415,5914,5916],{"className":5915},[1843,1844],[415,5917,5919],{"className":5918},[436,1848],[415,5920,4221],{"className":5921},[436],[415,5923,5912],{"className":5924},[436],[415,5926,5928],{"className":5927},[1843,1844],[415,5929,5931],{"className":5930},[436,1848],[415,5932,4244],{"className":5933},[436],", all ",[415,5936,5938],{"className":5937},[418],[415,5939,5941],{"className":5940,"ariaHidden":423},[422],[415,5942,5944,5947,5950,5953,5956],{"className":5943},[427],[415,5945],{"className":5946,"style":616},[431],[415,5948,621],{"className":5949,"style":620},[436,437],[415,5951,626],{"className":5952},[625],[415,5954,511],{"className":5955},[436],[415,5957,634],{"className":5958},[633],")\nand underlies the call stack, DFS, expression evaluation, and bracket matching.",[519,5961,409,5962,3209,5964,5966,5967,5969,5970,3835,5994,6015,6016,6049,6050,6074,6075,6077,6078,6102],{},[394,5963,4408],{},[394,5965,4412],{},", implemented as a ",[394,5968,4781],{}," with ",[415,5971,5973],{"className":5972},[418],[415,5974,5976],{"className":5975,"ariaHidden":423},[422],[415,5977,5979,5982,5985,5988,5991],{"className":5978},[427],[415,5980],{"className":5981,"style":3169},[431],[415,5983,3173],{"className":5984},[436,437],[415,5986,3148],{"className":5987},[436,437],[415,5989,385],{"className":5990},[436,437],[415,5992,3183],{"className":5993},[436,437],[415,5995,5997],{"className":5996},[418],[415,5998,6000],{"className":5999,"ariaHidden":423},[422],[415,6001,6003,6006,6009,6012],{"className":6002},[427],[415,6004],{"className":6005,"style":3169},[431],[415,6007,3155],{"className":6008},[436,437],[415,6010,4842],{"className":6011},[436,437],[415,6013,3688],{"className":6014,"style":3687},[436,437]," indices advanced ",[415,6017,6019],{"className":6018},[418],[415,6020,6022],{"className":6021,"ariaHidden":423},[422],[415,6023,6025,6028,6031,6040,6043,6046],{"className":6024},[427],[415,6026],{"className":6027,"style":3169},[431],[415,6029],{"className":6030,"style":4950},[565],[415,6032,6034],{"className":6033},[436],[415,6035,6037],{"className":6036},[436],[415,6038,4963],{"className":6039},[436,2168],[415,6041],{"className":6042,"style":4950},[565],[415,6044],{"className":6045,"style":1064},[565],[415,6047,4798],{"className":6048},[436,437]," for ",[415,6051,6053],{"className":6052},[418],[415,6054,6056],{"className":6055,"ariaHidden":423},[422],[415,6057,6059,6062,6065,6068,6071],{"className":6058},[427],[415,6060],{"className":6061,"style":616},[431],[415,6063,621],{"className":6064,"style":620},[436,437],[415,6066,626],{"className":6067},[625],[415,6069,511],{"className":6070},[436],[415,6072,634],{"className":6073},[633]," ends; the ",[394,6076,5496],{}," generalizes\nboth stack and queue to ",[415,6079,6081],{"className":6080},[418],[415,6082,6084],{"className":6083,"ariaHidden":423},[422],[415,6085,6087,6090,6093,6096,6099],{"className":6086},[427],[415,6088],{"className":6089,"style":616},[431],[415,6091,621],{"className":6092,"style":620},[436,437],[415,6094,626],{"className":6095},[625],[415,6097,511],{"className":6098},[436],[415,6100,634],{"className":6101},[633]," operations at either end.",[6104,6105,6108,6113],"section",{"className":6106,"dataFootnotes":376},[6107],"footnotes",[403,6109,6112],{"className":6110,"id":509},[6111],"sr-only","Footnotes",[6114,6115,6116,6130,6167,6178],"ol",{},[519,6117,6119,6122,6123],{"id":6118},"user-content-fn-skiena-contig",[394,6120,6121],{},"Skiena",", §3.1–3.2, Contiguous vs. Linked Structures: the array-vs-pointer trade-off and its consequences for access, splicing, and locality. ",[385,6124,6129],{"href":6125,"ariaLabel":6126,"className":6127,"dataFootnoteBackref":376},"#user-content-fnref-skiena-contig","Back to reference 1",[6128],"data-footnote-backref","↩",[519,6131,6133,6136,6137,6161,6162],{"id":6132},"user-content-fn-clrs-amort",[394,6134,6135],{},"CLRS",", Ch. 10, Elementary Data Structures (with the amortized analysis of Ch. 16): geometric doubling gives ",[415,6138,6140],{"className":6139},[418],[415,6141,6143],{"className":6142,"ariaHidden":423},[422],[415,6144,6146,6149,6152,6155,6158],{"className":6145},[427],[415,6147],{"className":6148,"style":616},[431],[415,6150,621],{"className":6151,"style":620},[436,437],[415,6153,626],{"className":6154},[625],[415,6156,511],{"className":6157},[436],[415,6159,634],{"className":6160},[633]," amortized table append. ",[385,6163,6129],{"href":6164,"ariaLabel":6165,"className":6166,"dataFootnoteBackref":376},"#user-content-fnref-clrs-amort","Back to reference 2",[6128],[519,6168,6170,6172,6173],{"id":6169},"user-content-fn-clrs-list",[394,6171,6135],{},", Ch. 10, Elementary Data Structures (§10.2): doubly linked lists and the sentinel that removes boundary cases from insert\u002Fdelete. ",[385,6174,6129],{"href":6175,"ariaLabel":6176,"className":6177,"dataFootnoteBackref":376},"#user-content-fnref-clrs-list","Back to reference 3",[6128],[519,6179,6181,6183,6184,6217,6218],{"id":6180},"user-content-fn-clrs-queue",[394,6182,6135],{},", Ch. 10, Elementary Data Structures (§10.1): stacks and the circular-array queue with head\u002Ftail indices taken ",[415,6185,6187],{"className":6186},[418],[415,6188,6190],{"className":6189,"ariaHidden":423},[422],[415,6191,6193,6196,6199,6208,6211,6214],{"className":6192},[427],[415,6194],{"className":6195,"style":3169},[431],[415,6197],{"className":6198,"style":4950},[565],[415,6200,6202],{"className":6201},[436],[415,6203,6205],{"className":6204},[436],[415,6206,4963],{"className":6207},[436,2168],[415,6209],{"className":6210,"style":4950},[565],[415,6212],{"className":6213,"style":1064},[565],[415,6215,4798],{"className":6216},[436,437],". ",[385,6219,6129],{"href":6220,"ariaLabel":6221,"className":6222,"dataFootnoteBackref":376},"#user-content-fnref-clrs-queue","Back to reference 4",[6128],[6224,6225,6226],"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":6228},[6229,6230,6231,6232,6233,6234,6235],{"id":405,"depth":18,"text":406},{"id":1189,"depth":18,"text":1190},{"id":3096,"depth":18,"text":3097},{"id":4164,"depth":18,"text":4165},{"id":4402,"depth":18,"text":4403},{"id":5538,"depth":18,"text":5539},{"id":509,"depth":18,"text":6112},"Before we can balance trees or hash keys, we need the raw material they are made\nof. Every data structure in this course (every tree, heap, hash table, and graph) is ultimately stored one of two ways, and the choice echoes through everything\nbuilt on top of it. You can lay the elements out contiguously, packed\nshoulder-to-shoulder in one block of memory, or you can scatter them and stitch\nthem together with pointers. This first lesson works out the two strategies\nand the four ordered containers (array, linked list, stack, queue) that the\nrest of the module assumes you already own.","md",{"moduleNumber":73,"lessonNumber":6,"order":6239},401,true,[6242,6246,6248,6251,6255],{"title":6243,"slug":6244,"difficulty":6245},"Reverse Linked List","reverse-linked-list","Easy",{"title":4398,"slug":6247,"difficulty":6245},"valid-parentheses",{"title":6249,"slug":6250,"difficulty":6245},"Implement Queue using Stacks","implement-queue-using-stacks",{"title":6252,"slug":6253,"difficulty":6254},"LRU Cache","lru-cache","Medium",{"title":5534,"slug":6256,"difficulty":6254},"design-circular-deque","---\ntitle: Elementary Data Structures\nmodule: Data Structures\nmoduleNumber: 4\nlessonNumber: 1\norder: 401\nsummary: >-\n  Every container is built one of two ways: **contiguous** in an array, or\n  **linked** through pointers. We trade cache-friendly random access against\n  $O(1)$ splicing, derive the **amortized $O(1)$** append of a doubling dynamic\n  array, and assemble the two ordered access disciplines — the LIFO **stack** and\n  the FIFO **queue** (with its generalization, the **deque**) — on top of both.\ntopics: [Linear Structures]\nsources:\n  - book: CLRS\n    ref: \"Ch. 10 — Elementary Data Structures\"\n  - book: Skiena\n    ref: \"§3.1–3.2 — Contiguous vs. Linked Structures\"\n  - book: Erickson\n    ref: \"Ch. — Basic Data Structures\"\npractice:\n  - title: 'Reverse Linked List'\n    slug: reverse-linked-list\n    difficulty: Easy\n  - title: 'Valid Parentheses'\n    slug: valid-parentheses\n    difficulty: Easy\n  - title: 'Implement Queue using Stacks'\n    slug: implement-queue-using-stacks\n    difficulty: Easy\n  - title: 'LRU Cache'\n    slug: lru-cache\n    difficulty: Medium\n  - title: 'Design Circular Deque'\n    slug: design-circular-deque\n    difficulty: Medium\n---\n\nBefore we can balance trees or hash keys, we need the raw material they are made\nof. Every data structure in this course (every tree, [heap](\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort), [hash table](\u002Falgorithms\u002Fdata-structures\u002Fhash-tables), and graph) is ultimately stored one of two ways, and the choice echoes through everything\nbuilt on top of it. You can lay the elements out **contiguously**, packed\nshoulder-to-shoulder in one block of memory, or you can scatter them and stitch\nthem together with **pointers**. This first lesson works out the two strategies\nand the four ordered containers (array, linked list, stack, queue) that the\nrest of the module assumes you already own.\n\n## Two ways to store a sequence\n\nA **contiguous** structure stores its elements in a single block of memory, one\nafter another. An array of $n$ elements each of size $s$ occupies one run of $ns$\nbytes, so element $i$ lives at a known offset from the start. A **linked**\nstructure stores each element in its own separately-allocated **node** and uses a\npointer in each node to find the next; the nodes may sit anywhere in memory.[^skiena-contig]\n\nThe contrast is sharp, and it drives every later choice:\n\n- **Random access.** Contiguous wins outright. Element $i$ of an array is at\n  address $base + i \\cdot s$, computed with one multiply-add, so indexing is\n  $O(1)$. In a linked list there is no address arithmetic; to reach the $i$-th\n  node you must follow $i$ pointers, which is $O(n)$.\n- **Splicing.** Linked wins outright. To insert or delete an element _given a\n  pointer to its node_, a linked list rewires a constant number of pointers in\n  $O(1)$; an array must shift every later element to keep the block contiguous,\n  which is $O(n)$.\n- **Cache locality.** Contiguous wins. A modern CPU reads memory in cache lines\n  and prefetches sequentially, so a linear scan of an array is far faster than\n  chasing pointers across scattered nodes, even though both are $\\Theta(n)$\n  comparisons. Constant factors, not [asymptotics](\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis), yet they are large.\n- **Space overhead.** Linked pays per-element: every node carries one or two\n  pointers besides its key. An array pays nothing per element but may reserve\n  unused capacity (below).\n\n> **Intuition.** Contiguous storage _is_ the random-access machine's native\n> idiom — an array is just addressable memory with a type. Linked storage buys\n> $O(1)$ structural edits by giving up the address arithmetic, paying with a\n> pointer per node and a cache miss per hop.\n\n$$\n% caption: The same sequence $\\langle 9,16,4\\rangle$ stored two ways. Contiguous: one\n%          block, element $i$ at $base + i\\cdot s$, so indexing is address arithmetic.\n%          Linked: three separately-allocated nodes scattered in memory, each pointing to\n%          the next, so reaching element $i$ means following $i$ pointers.\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum width=10mm, minimum height=8mm, font=\\small},\n  node8\u002F.style={draw, minimum width=8mm, minimum height=8mm, font=\\small},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % contiguous\n  \\node[font=\\small, anchor=east] at (-0.4,0) {contiguous};\n  \\node[cell] (a0) at (0,0) {$9$};\n  \\node[cell, right=0mm of a0] (a1) {$16$};\n  \\node[cell, right=0mm of a1] (a2) {$4$};\n  \\node[font=\\scriptsize, below=0.5mm of a0] {$base$};\n  \\node[font=\\scriptsize, below=0.5mm of a1] {$+s$};\n  \\node[font=\\scriptsize, below=0.5mm of a2] {$+2s$};\n  % linked: scattered nodes\n  \\begin{scope}[yshift=-2.2cm]\n    \\node[font=\\small, anchor=east] at (-0.4,0) {linked};\n    \\node[node8] (b0) at (0.2,0.3) {$9$};\n    \\node[node8] (b1) at (2.4,-0.4) {$16$};\n    \\node[node8] (b2) at (4.3,0.2) {$4$};\n    \\draw[->, acc] (b0.east) to[bend right=18] (b1.north west);\n    \\draw[->, acc] (b1.east) to[bend left=18] (b2.south west);\n    \\node[font=\\scriptsize] (hd) at (-1.1,0.3) {head};\n    \\draw[->, acc] (hd) -- (b0.west);\n    \\node[font=\\scriptsize] at (5.7,0.2) {nil};\n    \\draw[->, acc] (b2.east) -- (5.35,0.2);\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\n## Arrays and dynamic arrays\n\nA fixed-size **array** is the contiguous structure in its purest form: allocate\n$n$ slots up front, index any of them in $O(1)$. Its limitation is exactly that\n$n$ is fixed at allocation. Real programs rarely know the final size in advance,\nso we want a structure that grows.\n\nA **dynamic array** (C++ `vector`, Python `list`, Java `ArrayList`) keeps a\ncontiguous backing block of some **capacity** $\\ge$ the current **size**, and\nappends into the spare room. When the block fills, it allocates a _larger_ block,\ncopies the elements over, and frees the old one. The design decision that matters is\n_how much_ larger, and the answer is to **double** the capacity.\n\n```algorithm\ncaption: $\\textsc{Append}(A, x)$ — push $x$, doubling the backing block on overflow\nif $size(A) = capacity(A)$ then\n  $cap' \\gets \\max(1, 2 \\cdot capacity(A))$\n  allocate new block $B$ of capacity $cap'$\n  copy $A[0\\,..\\,size(A)-1]$ into $B$ \u002F\u002F the $O(n)$ resize\n  free old block; $store(A) \\gets B$; $capacity(A) \\gets cap'$\n$A[size(A)] \\gets x$\n$size(A) \\gets size(A) + 1$\n```\n\nA single append is usually $O(1)$, writing into spare room and bumping the size, but\nthe appends that trigger a resize cost $\\Theta(n)$ because they copy the whole\narray. The worst case of one operation is therefore $O(n)$. Yet the _average_\ncost over a sequence of appends is $O(1)$, and this is worth proving.\n\n$$\n% caption: A resize on overflow. The full block of capacity $4$ cannot take a fifth\n%          element, so a new block of capacity $8$ is allocated, the four elements are\n%          copied over (the $\\Theta(n)$ step, red), $x$ is written into the first spare\n%          slot, and the old block is freed. The four trailing slots are\n%          reserved-but-unused capacity.\n\\begin{tikzpicture}[\n  >=stealth,\n  cell\u002F.style={draw, minimum width=8mm, minimum height=8mm, font=\\small},\n  empty\u002F.style={draw, minimum width=8mm, minimum height=8mm}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % old full block (capacity 4, size 4)\n  \\node[font=\\small, anchor=east] at (-0.3,0) {old, full};\n  \\node[cell] (o0) at (0,0) {$9$};\n  \\node[cell, right=0mm of o0] (o1) {$16$};\n  \\node[cell, right=0mm of o1] (o2) {$4$};\n  \\node[cell, right=0mm of o2] (o3) {$7$};\n  \\node[font=\\scriptsize, right=2mm of o3] {capacity $4$: full};\n  % new block (capacity 8)\n  \\begin{scope}[yshift=-2.0cm]\n    \\node[font=\\small, anchor=east] at (-0.3,0) {new};\n    \\node[cell, fill=acc!15] (n0) at (0,0) {$9$};\n    \\node[cell, fill=acc!15, right=0mm of n0] (n1) {$16$};\n    \\node[cell, fill=acc!15, right=0mm of n1] (n2) {$4$};\n    \\node[cell, fill=acc!15, right=0mm of n2] (n3) {$7$};\n    \\node[cell, draw=acc, very thick, right=0mm of n3] (n4) {$x$};\n    \\node[empty, right=0mm of n4] (n5) {};\n    \\node[empty, right=0mm of n5] (n6) {};\n    \\node[empty, right=0mm of n6] (n7) {};\n    \\node[font=\\scriptsize, below=0.5mm of n1.south east] {capacity $8$};\n    \\node[font=\\scriptsize, below=0.5mm of n6.south] {spare};\n  \\end{scope}\n  % copy arrows (the O(n) step)\n  \\foreach \\i in {0,1,2,3} {\n    \\draw[->, red!75!black] (o\\i.south) -- (n\\i.north);\n  }\n  \\node[font=\\scriptsize, red!75!black, align=center] at (5.3,-1.0) {copy $4$\\\\elements};\n\\end{tikzpicture}\n$$\n\n> **Lemma (amortized append).** Starting from an empty dynamic array, any sequence\n> of $n$ $\\textsc{Append}$ operations runs in $O(n)$ total time, i.e. $O(1)$\n> **amortized** per append.\n\n> **Proof (aggregate method).** Ignore the cheap per-append writes (clearly $O(n)$\n> total) and count only the copying done by resizes. Doubling from empty, resizes\n> happen when the size passes $1, 2, 4, 8, \\dots$, and the resize at size $2^k$\n> copies $2^k$ elements. Across $n$ appends the largest resize is at most $2^{\\lceil\n> \\log_2 n\\rceil}\\le 2n$, so the total copying cost is\n>\n> $$\n> 1 + 2 + 4 + \\dots + 2^{\\lfloor \\log_2 n\\rfloor}\n> \\;=\\; 2^{\\lfloor \\log_2 n\\rfloor + 1} - 1 \\;\u003C\\; 2n.\n> $$\n>\n> Total work is therefore $O(n)$ for the $n$ appends, or $O(1)$ amortized each.\n> $\\qed$\n\nThe geometric growth is what makes this work: each resize is twice as expensive\nas the last but happens half as often, so the costs telescope into a constant per\noperation. Growing by a _fixed_ increment instead of doubling would make the same\n$n$ appends cost $\\Theta(n^2)$. The price of amortized $O(1)$ is twofold: an\noccasional latency spike on the doubling step, and up to $2\\times$ wasted capacity\nright after a resize.[^clrs-amort]\n\n$$\n% caption: Doubling growth over $16$ appends: the capacity staircase (accent) jumps\n%          $1\\!\\to\\!2\\!\\to\\!4\\!\\to\\!8\\!\\to\\!16$, while the size (filled) rises by one each\n%          append. Each jump is a $\\Theta(n)$ copy, and the gap above the fill is the\n%          reserved-but-unused capacity.\n\\begin{tikzpicture}[>=stealth, x=0.46cm, y=0.2cm]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\draw[->] (0,0) -- (17.5,0) node[right, font=\\small] {appends $n$};\n  \\draw[->] (0,0) -- (0,18) node[above, font=\\small] {slots};\n  \\foreach \\y in {1,2,4,8,16} {\n    \\draw[black!18] (0,\\y) -- (16,\\y);\n    \\node[font=\\scriptsize, left=1mm] at (0,\\y) {\\y};\n  }\n  % size bars: height = n after n-th append\n  \\foreach \\n in {1,...,16} {\n    \\fill[acc!22] ({\\n-0.82},0) rectangle ({\\n-0.18},\\n);\n  }\n  % capacity staircase\n  \\draw[acc, very thick]\n    (0,1) -- (1,1) -- (1,2) -- (2,2) -- (2,4) -- (4,4)\n    -- (4,8) -- (8,8) -- (8,16) -- (16,16);\n  \\node[acc, font=\\scriptsize, above left] at (8,16) {capacity};\n\\end{tikzpicture}\n$$\n\n## Linked lists\n\nA **linked list** threads elements through pointers. In a **singly linked list**\neach node stores a $key$ and a $next$ pointer to its successor; a $head$ pointer\nnames the first node and the last node's $next$ is $\\text{nil}$. A **doubly linked\nlist** adds a $prev$ pointer, so the list can be traversed in both directions and\na node can be removed knowing only itself.\n\n$$\n% caption: A doubly linked list; deleting the middle node is $O(1)$ pointer splicing\n\\begin{tikzpicture}[\n  >=stealth,\n  node distance=12mm,\n  cell\u002F.style={draw, minimum height=8mm, minimum width=7mm, inner sep=2pt},\n  key\u002F.style={draw, minimum height=8mm, minimum width=8mm, inner sep=2pt, font=\\small}]\n  % node A: [prev | key | next]\n  \\node[cell] (ap) {};\n  \\node[key, right=0mm of ap] (ak) {$9$};\n  \\node[cell, right=0mm of ak] (an) {};\n  % node B\n  \\node[cell, right=12mm of an] (bp) {};\n  \\node[key, right=0mm of bp] (bk) {$16$};\n  \\node[cell, right=0mm of bk] (bn) {};\n  % node C\n  \\node[cell, right=12mm of bn] (cp) {};\n  \\node[key, right=0mm of cp] (ck) {$4$};\n  \\node[cell, right=0mm of ck] (cn) {};\n  % head pointer\n  \\node (head) [above=8mm of ak] {\\small\\textit{head}};\n  \\draw[->] (head) -- (ak.north);\n  % forward next pointers: straight horizontal arrows in the gap, riding the upper half\n  \\draw[->] ([yshift=2.2pt]an.east) -- ([yshift=2.2pt]bp.west);\n  \\draw[->] ([yshift=2.2pt]bn.east) -- ([yshift=2.2pt]cp.west);\n  % backward prev pointers: straight horizontal arrows, riding the lower half\n  \\draw[->] ([yshift=-2.2pt]bp.west) -- ([yshift=-2.2pt]an.east);\n  \\draw[->] ([yshift=-2.2pt]cp.west) -- ([yshift=-2.2pt]bn.east);\n  % nil grounds\n  \\node (lnil) [left=10mm of ap] {\\small nil};\n  \\node (rnil) [right=10mm of cn] {\\small nil};\n  \\draw[->] (ap.center) -- (lnil.east);\n  \\draw[->] (cn.center) -- (rnil.west);\n\\end{tikzpicture}\n$$\n\nThe complexities follow directly from the pointer structure:\n\n- **Insert \u002F delete given the node.** $O(1)$. To delete node $x$ from a doubly\n  linked list, set $next(prev(x)) \\gets next(x)$ and $prev(next(x)) \\gets\n  prev(x)$, a constant number of pointer writes, no shifting. This is the linked\n  list's signature advantage over an array.\n- **Search by key, or index by position.** $O(n)$. There is no address\n  arithmetic; you must walk the chain.\n\nThe boundary cases (deleting the head, deleting the tail, operating on an empty\nlist) force `nil` checks that clutter the code. A standard trick removes them: a\n**sentinel** is a dummy node that is always present and never holds real data. Wrap\nthe list into a ring around one sentinel $nil$, with $next(nil)$ the first real\nnode and $prev(nil)$ the last; now _every_ node has a real predecessor and\nsuccessor, and delete needs no special cases.[^clrs-list]\n\n```algorithm\ncaption: $\\textsc{List-Delete}(x)$ — remove $x$ from a doubly linked list (sentinel form)\n$next(prev(x)) \\gets next(x)$\n$prev(next(x)) \\gets prev(x)$\n```\n\nWith a sentinel there are no `nil` guards: even at the ends, $prev(x)$ and\n$next(x)$ point at real nodes (possibly the sentinel itself), so the two\nassignments always make sense.\n\n| operation | array | linked list |\n| --- | --- | --- |\n| index \u002F random access | $O(1)$ | $O(n)$ |\n| search (unsorted) | $O(n)$ | $O(n)$ |\n| insert\u002Fdelete at known position | $O(n)$ shift | $O(1)$ splice |\n| insert\u002Fdelete at end | $O(1)$ amortized | $O(1)$ |\n| cache locality | excellent | poor |\n| extra space per element | none | 1–2 pointers |\n\nNeither structure dominates: choose contiguous when you index and scan, linked\nwhen you splice in the middle and never need the $i$-th element by number.\n\n## Stacks: last in, first out\n\nA **stack** restricts access to one discipline: **LIFO**, last in, first out.\nOnly the most recently inserted element is reachable. The operations are\n$\\textsc{Push}$ (add to the top), $\\textsc{Pop}$ (remove the top), and\n$\\textsc{Peek}$ (read the top without removing) — all $O(1)$.\n\nA stack is trivial to back with a dynamic array: keep a $top$ index, push by\nwriting $A[top]$ and incrementing, pop by decrementing. (Amortized $O(1)$ if it\nmust grow.) Equally, a singly linked list with push\u002Fpop at the head is a stack\nwith worst-case $O(1)$ operations and no resize spikes.\n\nStacks appear wherever computation is _nested_: the **call stack** that holds\nfunction activation records, **depth-first search**, evaluating arithmetic\nexpressions, and matching brackets. For brackets, push each opener, then pop and\ncheck on each closer, accepting iff the stack ends empty. That last pattern is the\n_Valid Parentheses_ problem, and it is a stack in one line of intuition.\n\n## Queues and deques: first in, first out\n\nA **queue** enforces the opposite discipline: **FIFO**, first in, first out, like\na line at a counter. $\\textsc{Enqueue}$ adds at the **tail**; $\\textsc{Dequeue}$\nremoves from the **head**. Both are $O(1)$.\n\n$$\n% caption: A stack is LIFO (one end, the top); a queue is FIFO (insert at tail, remove at\n%          head)\n\\begin{tikzpicture}[\n  >=stealth,\n  box\u002F.style={draw, minimum width=10mm, minimum height=7mm, inner sep=2pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % --- STACK: vertical, top marked ---\n  \\begin{scope}\n    \\node[box] (s2) at (0,0) {$c$};\n    \\node[box] (s1) at (0,-0.72) {$b$};\n    \\node[box] (s0) at (0,-1.44) {$a$};\n    \\node[font=\\small] at (0,-2.3) {stack (LIFO)};\n    \\node[font=\\small, acc, right=3mm of s2] (top) {top};\n    \\draw[->, acc] (top.west) -- (s2.east);\n    \\draw[->, thick] (-1.4,0.55) -- node[above, font=\\footnotesize] {push} (-0.55,0.1);\n    \\draw[->, thick] (-0.55,-0.1) -- node[below, font=\\footnotesize] {pop} (-1.4,-0.55);\n  \\end{scope}\n  % --- QUEUE: horizontal, head\u002Ftail marked ---\n  \\begin{scope}[xshift=4.2cm]\n    \\node[box] (q0) at (0,0) {$a$};\n    \\node[box, right=0mm of q0] (q1) {$b$};\n    \\node[box, right=0mm of q1] (q2) {$c$};\n    \\node[font=\\small] at (1.0,-1.0) {queue (FIFO)};\n    \\node[font=\\small, acc, above=4mm of q0] (head) {head};\n    \\node[font=\\small, acc, above=4mm of q2] (tail) {tail};\n    \\draw[->, acc] (head.south) -- (q0.north);\n    \\draw[->, acc] (tail.south) -- (q2.north);\n    \\draw[->, thick] (q0.west) -- node[below, font=\\footnotesize] {dequeue} (-1.3,0);\n    \\draw[->, thick] (3.3,0) -- node[below, font=\\footnotesize] {enqueue} (q2.east);\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\nBacking a queue with an array needs care: if we always dequeued from index $0$ we\nwould shift the whole array each time, $O(n)$. The fix is a **circular buffer**.\nKeep a fixed array of capacity $m$ and two indices, $head$ and $tail$; enqueue\nwrites $A[tail]$ and advances $tail \\gets (tail + 1) \\bmod m$, dequeue reads\n$A[head]$ and advances $head \\gets (head + 1) \\bmod m$. The indices chase each\nother around the ring, reusing freed slots, so both operations stay $O(1)$ with no\nshifting and no wasted scanning.[^clrs-queue] (When the buffer fills, resize and re-lay-out\ninto a larger ring at amortized $O(1)$, exactly as for the dynamic array.)\n\n$$\n% caption: A circular buffer of capacity $8$ holding four elements: $head$ and $tail$\n%          chase each other around the ring, and advancing past slot $7$ wraps to slot\n%          $0$.\n\\begin{tikzpicture}[slot\u002F.style={draw, circle, minimum size=8mm, font=\\scriptsize}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[slot] (s0) at (0,2.2) {0};\n  \\node[slot] (s1) at (1.56,1.56) {1};\n  \\node[slot, fill=acc!18] (s2) at (2.2,0) {2};\n  \\node[slot, fill=acc!18] (s3) at (1.56,-1.56) {3};\n  \\node[slot, fill=acc!18] (s4) at (0,-2.2) {4};\n  \\node[slot, fill=acc!18] (s5) at (-1.56,-1.56) {5};\n  \\node[slot] (s6) at (-2.2,0) {6};\n  \\node[slot] (s7) at (-1.56,1.56) {7};\n  \\node[font=\\scriptsize] (hl) at (3.5,0) {$head$}; \\draw[->] (hl) -- (s2);\n  \\node[font=\\scriptsize] (tl) at (-3.5,0) {$tail$}; \\draw[->] (tl) -- (s6);\n  \\node[font=\\scriptsize, align=center] at (0,0) {enqueue at $tail$,\\\\dequeue at $head$\\\\index $(i{+}1)\\bmod 8$};\n\\end{tikzpicture}\n$$\n\nA **deque** (double-ended queue, pronounced \"deck\") generalizes both: it supports\n$O(1)$ insert and delete at _both_ ends. A deque used at one end only is a stack;\nused to push at one end and pop at the other, it is a queue, so the deque\nsubsumes everything in this lesson. A doubly linked list with a head and tail\nsentinel implements a deque directly, and a circular buffer with both indices\nmovable in either direction does too; the _Design Circular Deque_ problem asks for\nexactly the latter.\n\n## Takeaways\n\n- Every container is either **contiguous** (an array — $O(1)$ random access by\n  address arithmetic, cache-friendly, $O(n)$ to splice) or **linked** (nodes\n  joined by pointers — $O(1)$ splice given the node, $O(n)$ to index, a pointer of\n  overhead per element). The choice is a trade, not a winner.\n- A **dynamic array** appends in **amortized $O(1)$** by **doubling** capacity on\n  overflow: the aggregate copy cost over $n$ appends is $1+2+\\dots+2^k \u003C 2n$. The\n  worst-case single append is still $O(n)$ on the resize step.\n- A **doubly linked list** inserts and deletes in $O(1)$ given the node; a\n  **sentinel** node erases the boundary cases so delete is two pointer writes.\n- A **stack** is **LIFO** ($\\textsc{Push}\u002F\\textsc{Pop}\u002F\\textsc{Peek}$, all $O(1)$)\n  and underlies the call stack, DFS, expression evaluation, and bracket matching.\n- A **queue** is **FIFO**, implemented as a **circular buffer** with $head$ and\n  $tail$ indices advanced $\\bmod\\,m$ for $O(1)$ ends; the **deque** generalizes\n  both stack and queue to $O(1)$ operations at either end.\n\n[^skiena-contig]: **Skiena**, §3.1–3.2, Contiguous vs. Linked Structures: the array-vs-pointer trade-off and its consequences for access, splicing, and locality.\n[^clrs-amort]: **CLRS**, Ch. 10, Elementary Data Structures (with the amortized analysis of Ch. 16): geometric doubling gives $O(1)$ amortized table append.\n[^clrs-list]: **CLRS**, Ch. 10, Elementary Data Structures (§10.2): doubly linked lists and the sentinel that removes boundary cases from insert\u002Fdelete.\n[^clrs-queue]: **CLRS**, Ch. 10, Elementary Data Structures (§10.1): stacks and the circular-array queue with head\u002Ftail indices taken $\\bmod\\,m$.\n",{"text":6259,"minutes":6260,"time":6261,"words":6262},"8 min read",7.825,469500,1565,{"title":77,"description":6236},[6265,6267,6269],{"book":6135,"ref":6266},"Ch. 10 — Elementary Data Structures",{"book":6121,"ref":6268},"§3.1–3.2 — Contiguous vs. Linked Structures",{"book":6270,"ref":6271},"Erickson","Ch. — Basic Data Structures","available","01.algorithms\u002F04.data-structures\u002F01.elementary-structures",[80],"2rzr6nT2S9k0FazlURuu5WBG-s3lrm6yWTf3UuTcv_U",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":6277,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":6278,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":6279,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":6280,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":6281,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":6282,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":6283,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":6284,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":6285,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":6262,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":6286,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":6287,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":6288,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":6289,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":6290,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":6291,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":6292,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":6293,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":6294,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":6295,"\u002Falgorithms\u002Fsequences\u002Ftries":6296,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":6297,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":6298,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":6299,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":6300,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":6301,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":6302,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":6303,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":6304,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":6305,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":6306,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":6307,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":6308,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":6309,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":6310,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":6311,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":6312,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":6313,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":6314,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":6315,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":6316,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":6317,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":6318,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":6319,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":6320,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":6321,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":6322,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":6292,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":6323,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":6324,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":6325,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":6326,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":6308,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":6327,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":6328,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":6288,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":6329,"\u002Falgorithms":6330,"\u002Ftheory-of-computation":6331,"\u002Fcomputer-architecture":6331,"\u002Fphysical-computing":6331,"\u002Fdatabases":6331,"\u002Fdeep-learning":6331},1763,2107,1738,2628,1723,2048,1697,1044,1542,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":6333,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":6334,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":6335,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":6336,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":6337,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":6338,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":6339,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":6340,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":6341,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":6342,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":6343,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":6344,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":6345,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":6346,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":6347,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":6348,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":6349,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":6350,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":6351,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":6352,"\u002Falgorithms\u002Fsequences\u002Ftries":6353,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":6354,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":6355,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":6356,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":6357,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":6358,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":6359,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":6360,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":6361,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":6362,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":6363,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":6364,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":6365,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":6366,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":6367,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":6368,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":6369,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":6370,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":6371,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":6372,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":6373,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":6374,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":6375,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":6376,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":6377,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":6378,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":6379,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":6380,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":6381,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":6382,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":6383,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":6384,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":6385,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":6386,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":6387,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":6388,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":6389,"\u002Falgorithms":6390,"\u002Ftheory-of-computation":6393,"\u002Fcomputer-architecture":6396,"\u002Fphysical-computing":6399,"\u002Fdatabases":6402,"\u002Fdeep-learning":6405},{"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":6391,"title":6392,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":6394,"title":6395,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":6397,"title":6398,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":6400,"title":6401,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":6403,"title":6404,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":6406,"title":6407,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560522073]