[{"data":1,"prerenderedAt":9802},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":374,"course-wordcounts":9670,"ref-card-index":9726},[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":125,"blurb":376,"body":377,"description":9633,"extension":9634,"meta":9635,"module":121,"navigation":9637,"path":126,"practice":9638,"rawbody":9652,"readingTime":9653,"seo":9658,"sources":9659,"status":9666,"stem":9667,"summary":129,"topics":9668,"__hash__":9669},"course\u002F01.algorithms\u002F05.sequences\u002F01.two-pointers-and-windows.md","",{"type":378,"value":379,"toc":9625},"minimark",[380,547,552,938,1084,1449,1457,1860,2540,2712,2930,3324,3328,3417,3479,3524,3581,4008,4012,4050,4396,4495,4633,4830,4966,5016,5054,5188,5232,5332,5336,5373,5656,5824,6010,6458,6698,7138,7183,7319,7751,8226,8519,8907,8911,9538,9621],[381,382,383,384,387,388,466,467,470,471,474,475,503,504,528,529,539,540],"p",{},"We open a new module on ",[385,386,122],"strong",{}," (arrays and strings), and the first thing\nto learn is a way of thinking that recurs everywhere in it. A great many array\nquestions have an obvious brute-force answer that examines every pair or every\nsubarray: two nested loops, ",[389,390,393],"span",{"className":391},[392],"katex",[389,394,398],{"className":395,"ariaHidden":397},[396],"katex-html","true",[389,399,402,407,412,417,461],{"className":400},[401],"base",[389,403],{"className":404,"style":406},[405],"strut","height:1.0641em;vertical-align:-0.25em;",[389,408,411],{"className":409},[410],"mord","Θ",[389,413,416],{"className":414},[415],"mopen","(",[389,418,420,425],{"className":419},[410],[389,421,424],{"className":422},[410,423],"mathnormal","n",[389,426,429],{"className":427},[428],"msupsub",[389,430,433],{"className":431},[432],"vlist-t",[389,434,437],{"className":435},[436],"vlist-r",[389,438,442],{"className":439,"style":441},[440],"vlist","height:0.8141em;",[389,443,445,450],{"style":444},"top:-3.063em;margin-right:0.05em;",[389,446],{"className":447,"style":449},[448],"pstrut","height:2.7em;",[389,451,457],{"className":452},[453,454,455,456],"sizing","reset-size6","size3","mtight",[389,458,460],{"className":459},[410,456],"2",[389,462,465],{"className":463},[464],"mclose",")"," work. The techniques in this lesson\nshare a single trick for collapsing that quadratic scan into a ",[385,468,469],{},"single linear\npass",". Instead of re-examining the array from scratch at each step, we maintain\na small amount of state (one or two indices, a window, a running sum) together\nwith an ",[385,472,473],{},"invariant"," that this state always tells us something true. Each step\nadvances an index and patches the invariant in ",[389,476,478],{"className":477},[392],[389,479,481],{"className":480,"ariaHidden":397},[396],[389,482,484,488,493,496,500],{"className":483},[401],[389,485],{"className":486,"style":487},[405],"height:1em;vertical-align:-0.25em;",[389,489,492],{"className":490,"style":491},[410,423],"margin-right:0.0278em;","O",[389,494,416],{"className":495},[415],[389,497,499],{"className":498},[410],"1",[389,501,465],{"className":502},[464],", so the whole pass is\n",[389,505,507],{"className":506},[392],[389,508,510],{"className":509,"ariaHidden":397},[396],[389,511,513,516,519,522,525],{"className":512},[401],[389,514],{"className":515,"style":487},[405],[389,517,492],{"className":518,"style":491},[410,423],[389,520,416],{"className":521},[415],[389,523,424],{"className":524},[410,423],[389,526,465],{"className":527},[464],".",[530,531,532],"sup",{},[533,534,499],"a",{"href":535,"ariaDescribedBy":536,"dataFootnoteRef":376,"id":538},"#user-content-fn-erickson-amortize",[537],"footnote-label","user-content-fnref-erickson-amortize"," The art is choosing the invariant. The loop-invariant\ndiscipline from our first algorithm, establish it, maintain it, read off the\nanswer at termination, is exactly the reasoning we use to prove these correct.",[530,541,542],{},[533,543,460],{"href":544,"ariaDescribedBy":545,"dataFootnoteRef":376,"id":546},"#user-content-fn-clrs-invariant",[537],"user-content-fnref-clrs-invariant",[548,549,551],"h2",{"id":550},"two-pointers-opposite-ends","Two pointers, opposite ends",[381,553,554,555,558,559,623,624,665,666,740,741,756,757,848,849,884,885,937],{},"The cleanest instance lives on a ",[385,556,557],{},"sorted"," array. Suppose ",[389,560,562],{"className":561},[392],[389,563,565,610],{"className":564,"ariaHidden":397},[396],[389,566,568,571,574,578,582,587,592,595,598,602,607],{"className":567},[401],[389,569],{"className":570,"style":487},[405],[389,572,533],{"className":573},[410,423],[389,575,577],{"className":576},[415],"[",[389,579,581],{"className":580},[410],"0",[389,583],{"className":584,"style":586},[585],"mspace","margin-right:0.1667em;",[389,588,591],{"className":589},[590],"minner","…",[389,593],{"className":594,"style":586},[585],[389,596,424],{"className":597},[410,423],[389,599],{"className":600,"style":601},[585],"margin-right:0.2222em;",[389,603,606],{"className":604},[605],"mbin","−",[389,608],{"className":609,"style":601},[585],[389,611,613,616,619],{"className":612},[401],[389,614],{"className":615,"style":487},[405],[389,617,499],{"className":618},[410],[389,620,622],{"className":621},[464],"]"," is\nsorted ascending and we want indices ",[389,625,627],{"className":626},[392],[389,628,630,654],{"className":629,"ariaHidden":397},[396],[389,631,633,637,642,646,651],{"className":632},[401],[389,634],{"className":635,"style":636},[405],"height:0.7335em;vertical-align:-0.0391em;",[389,638,641],{"className":639,"style":640},[410,423],"margin-right:0.0197em;","l",[389,643],{"className":644,"style":645},[585],"margin-right:0.2778em;",[389,647,650],{"className":648},[649],"mrel","\u003C",[389,652],{"className":653,"style":645},[585],[389,655,657,661],{"className":656},[401],[389,658],{"className":659,"style":660},[405],"height:0.4306em;",[389,662,664],{"className":663,"style":491},[410,423],"r"," with ",[389,667,669],{"className":668},[392],[389,670,672,700,728],{"className":671,"ariaHidden":397},[396],[389,673,675,678,681,684,687,690,693,697],{"className":674},[401],[389,676],{"className":677,"style":487},[405],[389,679,533],{"className":680},[410,423],[389,682,577],{"className":683},[415],[389,685,641],{"className":686,"style":640},[410,423],[389,688,622],{"className":689},[464],[389,691],{"className":692,"style":601},[585],[389,694,696],{"className":695},[605],"+",[389,698],{"className":699,"style":601},[585],[389,701,703,706,709,712,715,718,721,725],{"className":702},[401],[389,704],{"className":705,"style":487},[405],[389,707,533],{"className":708},[410,423],[389,710,577],{"className":711},[415],[389,713,664],{"className":714,"style":491},[410,423],[389,716,622],{"className":717},[464],[389,719],{"className":720,"style":645},[585],[389,722,724],{"className":723},[649],"=",[389,726],{"className":727,"style":645},[585],[389,729,731,735],{"className":730},[401],[389,732],{"className":733,"style":734},[405],"height:0.6833em;",[389,736,739],{"className":737,"style":738},[410,423],"margin-right:0.1389em;","T"," for a target\n",[389,742,744],{"className":743},[392],[389,745,747],{"className":746,"ariaHidden":397},[396],[389,748,750,753],{"className":749},[401],[389,751],{"className":752,"style":734},[405],[389,754,739],{"className":755,"style":738},[410,423],". Brute force tries all ",[389,758,760],{"className":759},[392],[389,761,763],{"className":762,"ariaHidden":397},[396],[389,764,766,770],{"className":765},[401],[389,767],{"className":768,"style":769},[405],"height:1.2em;vertical-align:-0.35em;",[389,771,773,783,842],{"className":772},[410],[389,774,778],{"className":775,"style":777},[415,776],"delimcenter","top:0em;",[389,779,416],{"className":780},[781,782],"delimsizing","size1",[389,784,787],{"className":785},[786],"mfrac",[389,788,791,833],{"className":789},[432,790],"vlist-t2",[389,792,794,828],{"className":793},[436],[389,795,798,813],{"className":796,"style":797},[440],"height:0.7454em;",[389,799,801,804],{"style":800},"top:-2.355em;",[389,802],{"className":803,"style":449},[448],[389,805,807],{"className":806},[453,454,455,456],[389,808,810],{"className":809},[410,456],[389,811,460],{"className":812},[410,456],[389,814,816,819],{"style":815},"top:-3.144em;",[389,817],{"className":818,"style":449},[448],[389,820,822],{"className":821},[453,454,455,456],[389,823,825],{"className":824},[410,456],[389,826,424],{"className":827},[410,423,456],[389,829,832],{"className":830},[831],"vlist-s","​",[389,834,836],{"className":835},[436],[389,837,840],{"className":838,"style":839},[440],"height:0.345em;",[389,841],{},[389,843,845],{"className":844,"style":777},[464,776],[389,846,465],{"className":847},[781,782]," pairs. Instead, place one pointer at\neach end, ",[389,850,852],{"className":851},[392],[389,853,855,874],{"className":854,"ariaHidden":397},[396],[389,856,858,862,865,868,871],{"className":857},[401],[389,859],{"className":860,"style":861},[405],"height:0.6944em;",[389,863,641],{"className":864,"style":640},[410,423],[389,866],{"className":867,"style":645},[585],[389,869,724],{"className":870},[649],[389,872],{"className":873,"style":645},[585],[389,875,877,881],{"className":876},[401],[389,878],{"className":879,"style":880},[405],"height:0.6444em;",[389,882,581],{"className":883},[410]," and ",[389,886,888],{"className":887},[392],[389,889,891,909,928],{"className":890,"ariaHidden":397},[396],[389,892,894,897,900,903,906],{"className":893},[401],[389,895],{"className":896,"style":660},[405],[389,898,664],{"className":899,"style":491},[410,423],[389,901],{"className":902,"style":645},[585],[389,904,724],{"className":905},[649],[389,907],{"className":908,"style":645},[585],[389,910,912,916,919,922,925],{"className":911},[401],[389,913],{"className":914,"style":915},[405],"height:0.6667em;vertical-align:-0.0833em;",[389,917,424],{"className":918},[410,423],[389,920],{"className":921,"style":601},[585],[389,923,606],{"className":924},[605],[389,926],{"className":927,"style":601},[585],[389,929,931,934],{"className":930},[401],[389,932],{"className":933,"style":880},[405],[389,935,499],{"className":936},[410],", and let them converge:",[939,940,942],"callout",{"type":941},"lemma",[381,943,944,947,948,665,983,1017,1018,1053,1054,528],{},[385,945,946],{},"Invariant."," No pair ",[389,949,951],{"className":950},[392],[389,952,954],{"className":953,"ariaHidden":397},[396],[389,955,957,960,963,967,972,975,980],{"className":956},[401],[389,958],{"className":959,"style":487},[405],[389,961,416],{"className":962},[415],[389,964,966],{"className":965},[410,423],"i",[389,968,971],{"className":969},[970],"mpunct",",",[389,973],{"className":974,"style":586},[585],[389,976,979],{"className":977,"style":978},[410,423],"margin-right:0.0572em;","j",[389,981,465],{"className":982},[464],[389,984,986],{"className":985},[392],[389,987,989,1008],{"className":988,"ariaHidden":397},[396],[389,990,992,996,999,1002,1005],{"className":991},[401],[389,993],{"className":994,"style":995},[405],"height:0.6986em;vertical-align:-0.0391em;",[389,997,966],{"className":998},[410,423],[389,1000],{"className":1001,"style":645},[585],[389,1003,650],{"className":1004},[649],[389,1006],{"className":1007,"style":645},[585],[389,1009,1011,1014],{"className":1010},[401],[389,1012],{"className":1013,"style":861},[405],[389,1015,641],{"className":1016,"style":640},[410,423]," or ",[389,1019,1021],{"className":1020},[392],[389,1022,1024,1044],{"className":1023,"ariaHidden":397},[396],[389,1025,1027,1031,1034,1037,1041],{"className":1026},[401],[389,1028],{"className":1029,"style":1030},[405],"height:0.854em;vertical-align:-0.1944em;",[389,1032,979],{"className":1033,"style":978},[410,423],[389,1035],{"className":1036,"style":645},[585],[389,1038,1040],{"className":1039},[649],">",[389,1042],{"className":1043,"style":645},[585],[389,1045,1047,1050],{"className":1046},[401],[389,1048],{"className":1049,"style":660},[405],[389,1051,664],{"className":1052,"style":491},[410,423]," can be the answer.\nEquivalently, if a solution exists, it lies in the window ",[389,1055,1057],{"className":1056},[392],[389,1058,1060],{"className":1059,"ariaHidden":397},[396],[389,1061,1063,1066,1069,1072,1075,1078,1081],{"className":1062},[401],[389,1064],{"className":1065,"style":487},[405],[389,1067,577],{"className":1068},[415],[389,1070,641],{"className":1071,"style":640},[410,423],[389,1073,971],{"className":1074},[970],[389,1076],{"className":1077,"style":586},[585],[389,1079,664],{"className":1080,"style":491},[410,423],[389,1082,622],{"className":1083},[464],[381,1085,1086,1087,1157,1158,1191,1192,1226,1227,1251,1252,1256,1257,1308,1309,1333,1334,1358,1359,1374,1375,1408,1409,1433,1434,528],{},"At each step we look at ",[389,1088,1090],{"className":1089},[392],[389,1091,1093,1112,1139],{"className":1092,"ariaHidden":397},[396],[389,1094,1096,1099,1103,1106,1109],{"className":1095},[401],[389,1097],{"className":1098,"style":660},[405],[389,1100,1102],{"className":1101},[410,423],"s",[389,1104],{"className":1105,"style":645},[585],[389,1107,724],{"className":1108},[649],[389,1110],{"className":1111,"style":645},[585],[389,1113,1115,1118,1121,1124,1127,1130,1133,1136],{"className":1114},[401],[389,1116],{"className":1117,"style":487},[405],[389,1119,533],{"className":1120},[410,423],[389,1122,577],{"className":1123},[415],[389,1125,641],{"className":1126,"style":640},[410,423],[389,1128,622],{"className":1129},[464],[389,1131],{"className":1132,"style":601},[585],[389,1134,696],{"className":1135},[605],[389,1137],{"className":1138,"style":601},[585],[389,1140,1142,1145,1148,1151,1154],{"className":1141},[401],[389,1143],{"className":1144,"style":487},[405],[389,1146,533],{"className":1147},[410,423],[389,1149,577],{"className":1150},[415],[389,1152,664],{"className":1153,"style":491},[410,423],[389,1155,622],{"className":1156},[464],". If ",[389,1159,1161],{"className":1160},[392],[389,1162,1164,1182],{"className":1163,"ariaHidden":397},[396],[389,1165,1167,1170,1173,1176,1179],{"className":1166},[401],[389,1168],{"className":1169,"style":660},[405],[389,1171,1102],{"className":1172},[410,423],[389,1174],{"className":1175,"style":645},[585],[389,1177,724],{"className":1178},[649],[389,1180],{"className":1181,"style":645},[585],[389,1183,1185,1188],{"className":1184},[401],[389,1186],{"className":1187,"style":734},[405],[389,1189,739],{"className":1190,"style":738},[410,423]," we are done. If ",[389,1193,1195],{"className":1194},[392],[389,1196,1198,1217],{"className":1197,"ariaHidden":397},[396],[389,1199,1201,1205,1208,1211,1214],{"className":1200},[401],[389,1202],{"className":1203,"style":1204},[405],"height:0.5782em;vertical-align:-0.0391em;",[389,1206,1102],{"className":1207},[410,423],[389,1209],{"className":1210,"style":645},[585],[389,1212,650],{"className":1213},[649],[389,1215],{"className":1216,"style":645},[585],[389,1218,1220,1223],{"className":1219},[401],[389,1221],{"className":1222,"style":734},[405],[389,1224,739],{"className":1225,"style":738},[410,423],",\nthen ",[389,1228,1230],{"className":1229},[392],[389,1231,1233],{"className":1232,"ariaHidden":397},[396],[389,1234,1236,1239,1242,1245,1248],{"className":1235},[401],[389,1237],{"className":1238,"style":487},[405],[389,1240,533],{"className":1241},[410,423],[389,1243,577],{"className":1244},[415],[389,1246,641],{"className":1247,"style":640},[410,423],[389,1249,622],{"className":1250},[464]," paired with ",[1253,1254,1255],"em",{},"anything still available"," is too small. Since ",[389,1258,1260],{"className":1259},[392],[389,1261,1263,1290],{"className":1262,"ariaHidden":397},[396],[389,1264,1266,1269,1272,1275,1278,1281,1284,1287],{"className":1265},[401],[389,1267],{"className":1268,"style":487},[405],[389,1270,533],{"className":1271},[410,423],[389,1273,577],{"className":1274},[415],[389,1276,641],{"className":1277,"style":640},[410,423],[389,1279,622],{"className":1280},[464],[389,1282],{"className":1283,"style":601},[585],[389,1285,696],{"className":1286},[605],[389,1288],{"className":1289,"style":601},[585],[389,1291,1293,1296,1299,1302,1305],{"className":1292},[401],[389,1294],{"className":1295,"style":487},[405],[389,1297,533],{"className":1298},[410,423],[389,1300,577],{"className":1301},[415],[389,1303,664],{"className":1304,"style":491},[410,423],[389,1306,622],{"className":1307},[464],"\nis the largest sum involving ",[389,1310,1312],{"className":1311},[392],[389,1313,1315],{"className":1314,"ariaHidden":397},[396],[389,1316,1318,1321,1324,1327,1330],{"className":1317},[401],[389,1319],{"className":1320,"style":487},[405],[389,1322,533],{"className":1323},[410,423],[389,1325,577],{"className":1326},[415],[389,1328,641],{"className":1329,"style":640},[410,423],[389,1331,622],{"className":1332},[464]," in the window and it already fell short,\n",[389,1335,1337],{"className":1336},[392],[389,1338,1340],{"className":1339,"ariaHidden":397},[396],[389,1341,1343,1346,1349,1352,1355],{"className":1342},[401],[389,1344],{"className":1345,"style":487},[405],[389,1347,533],{"className":1348},[410,423],[389,1350,577],{"className":1351},[415],[389,1353,641],{"className":1354,"style":640},[410,423],[389,1356,622],{"className":1357},[464]," cannot be part of any solution, and we discard it by advancing ",[389,1360,1362],{"className":1361},[392],[389,1363,1365],{"className":1364,"ariaHidden":397},[396],[389,1366,1368,1371],{"className":1367},[401],[389,1369],{"className":1370,"style":861},[405],[389,1372,641],{"className":1373,"style":640},[410,423],". The\ncase ",[389,1376,1378],{"className":1377},[392],[389,1379,1381,1399],{"className":1380,"ariaHidden":397},[396],[389,1382,1384,1387,1390,1393,1396],{"className":1383},[401],[389,1385],{"className":1386,"style":1204},[405],[389,1388,1102],{"className":1389},[410,423],[389,1391],{"className":1392,"style":645},[585],[389,1394,1040],{"className":1395},[649],[389,1397],{"className":1398,"style":645},[585],[389,1400,1402,1405],{"className":1401},[401],[389,1403],{"className":1404,"style":734},[405],[389,1406,739],{"className":1407,"style":738},[410,423]," is symmetric: ",[389,1410,1412],{"className":1411},[392],[389,1413,1415],{"className":1414,"ariaHidden":397},[396],[389,1416,1418,1421,1424,1427,1430],{"className":1417},[401],[389,1419],{"className":1420,"style":487},[405],[389,1422,533],{"className":1423},[410,423],[389,1425,577],{"className":1426},[415],[389,1428,664],{"className":1429,"style":491},[410,423],[389,1431,622],{"className":1432},[464]," is too large to pair with anything remaining,\nso we drop it by decrementing ",[389,1435,1437],{"className":1436},[392],[389,1438,1440],{"className":1439,"ariaHidden":397},[396],[389,1441,1443,1446],{"className":1442},[401],[389,1444],{"className":1445,"style":660},[405],[389,1447,664],{"className":1448,"style":491},[410,423],[939,1450,1451],{"type":941},[381,1452,1453,1456],{},[385,1454,1455],{},"Lemma."," Each move preserves the invariant: the discarded index belongs to no\nsolution, so removing it loses no answer.",[939,1458,1460],{"type":1459},"proof",[381,1461,1462,1465,1466,1553,1554,665,1569,1621,1622,1673,1674,1761,1762,1786,1787,1802,1803,1836,1837],{},[385,1463,1464],{},"Proof."," Suppose ",[389,1467,1469],{"className":1468},[392],[389,1470,1472,1490,1517,1544],{"className":1471,"ariaHidden":397},[396],[389,1473,1475,1478,1481,1484,1487],{"className":1474},[401],[389,1476],{"className":1477,"style":660},[405],[389,1479,1102],{"className":1480},[410,423],[389,1482],{"className":1483,"style":645},[585],[389,1485,724],{"className":1486},[649],[389,1488],{"className":1489,"style":645},[585],[389,1491,1493,1496,1499,1502,1505,1508,1511,1514],{"className":1492},[401],[389,1494],{"className":1495,"style":487},[405],[389,1497,533],{"className":1498},[410,423],[389,1500,577],{"className":1501},[415],[389,1503,641],{"className":1504,"style":640},[410,423],[389,1506,622],{"className":1507},[464],[389,1509],{"className":1510,"style":601},[585],[389,1512,696],{"className":1513},[605],[389,1515],{"className":1516,"style":601},[585],[389,1518,1520,1523,1526,1529,1532,1535,1538,1541],{"className":1519},[401],[389,1521],{"className":1522,"style":487},[405],[389,1524,533],{"className":1525},[410,423],[389,1527,577],{"className":1528},[415],[389,1530,664],{"className":1531,"style":491},[410,423],[389,1533,622],{"className":1534},[464],[389,1536],{"className":1537,"style":645},[585],[389,1539,650],{"className":1540},[649],[389,1542],{"className":1543,"style":645},[585],[389,1545,1547,1550],{"className":1546},[401],[389,1548],{"className":1549,"style":734},[405],[389,1551,739],{"className":1552,"style":738},[410,423],". For any ",[389,1555,1557],{"className":1556},[392],[389,1558,1560],{"className":1559,"ariaHidden":397},[396],[389,1561,1563,1566],{"className":1562},[401],[389,1564],{"className":1565,"style":1030},[405],[389,1567,979],{"className":1568,"style":978},[410,423],[389,1570,1572],{"className":1571},[392],[389,1573,1575,1593,1612],{"className":1574,"ariaHidden":397},[396],[389,1576,1578,1581,1584,1587,1590],{"className":1577},[401],[389,1579],{"className":1580,"style":636},[405],[389,1582,641],{"className":1583,"style":640},[410,423],[389,1585],{"className":1586,"style":645},[585],[389,1588,650],{"className":1589},[649],[389,1591],{"className":1592,"style":645},[585],[389,1594,1596,1599,1602,1605,1609],{"className":1595},[401],[389,1597],{"className":1598,"style":1030},[405],[389,1600,979],{"className":1601,"style":978},[410,423],[389,1603],{"className":1604,"style":645},[585],[389,1606,1608],{"className":1607},[649],"≤",[389,1610],{"className":1611,"style":645},[585],[389,1613,1615,1618],{"className":1614},[401],[389,1616],{"className":1617,"style":660},[405],[389,1619,664],{"className":1620,"style":491},[410,423]," we have\n",[389,1623,1625],{"className":1624},[392],[389,1626,1628,1655],{"className":1627,"ariaHidden":397},[396],[389,1629,1631,1634,1637,1640,1643,1646,1649,1652],{"className":1630},[401],[389,1632],{"className":1633,"style":487},[405],[389,1635,533],{"className":1636},[410,423],[389,1638,577],{"className":1639},[415],[389,1641,979],{"className":1642,"style":978},[410,423],[389,1644,622],{"className":1645},[464],[389,1647],{"className":1648,"style":645},[585],[389,1650,1608],{"className":1651},[649],[389,1653],{"className":1654,"style":645},[585],[389,1656,1658,1661,1664,1667,1670],{"className":1657},[401],[389,1659],{"className":1660,"style":487},[405],[389,1662,533],{"className":1663},[410,423],[389,1665,577],{"className":1666},[415],[389,1668,664],{"className":1669,"style":491},[410,423],[389,1671,622],{"className":1672},[464]," (sortedness), hence ",[389,1675,1677],{"className":1676},[392],[389,1678,1680,1707,1734,1752],{"className":1679,"ariaHidden":397},[396],[389,1681,1683,1686,1689,1692,1695,1698,1701,1704],{"className":1682},[401],[389,1684],{"className":1685,"style":487},[405],[389,1687,533],{"className":1688},[410,423],[389,1690,577],{"className":1691},[415],[389,1693,641],{"className":1694,"style":640},[410,423],[389,1696,622],{"className":1697},[464],[389,1699],{"className":1700,"style":601},[585],[389,1702,696],{"className":1703},[605],[389,1705],{"className":1706,"style":601},[585],[389,1708,1710,1713,1716,1719,1722,1725,1728,1731],{"className":1709},[401],[389,1711],{"className":1712,"style":487},[405],[389,1714,533],{"className":1715},[410,423],[389,1717,577],{"className":1718},[415],[389,1720,979],{"className":1721,"style":978},[410,423],[389,1723,622],{"className":1724},[464],[389,1726],{"className":1727,"style":645},[585],[389,1729,1608],{"className":1730},[649],[389,1732],{"className":1733,"style":645},[585],[389,1735,1737,1740,1743,1746,1749],{"className":1736},[401],[389,1738],{"className":1739,"style":1204},[405],[389,1741,1102],{"className":1742},[410,423],[389,1744],{"className":1745,"style":645},[585],[389,1747,650],{"className":1748},[649],[389,1750],{"className":1751,"style":645},[585],[389,1753,1755,1758],{"className":1754},[401],[389,1756],{"className":1757,"style":734},[405],[389,1759,739],{"className":1760,"style":738},[410,423],". So ",[389,1763,1765],{"className":1764},[392],[389,1766,1768],{"className":1767,"ariaHidden":397},[396],[389,1769,1771,1774,1777,1780,1783],{"className":1770},[401],[389,1772],{"className":1773,"style":487},[405],[389,1775,533],{"className":1776},[410,423],[389,1778,577],{"className":1779},[415],[389,1781,641],{"className":1782,"style":640},[410,423],[389,1784,622],{"className":1785},[464]," forms no\nvalid pair within the window, and advancing ",[389,1788,1790],{"className":1789},[392],[389,1791,1793],{"className":1792,"ariaHidden":397},[396],[389,1794,1796,1799],{"className":1795},[401],[389,1797],{"className":1798,"style":861},[405],[389,1800,641],{"className":1801,"style":640},[410,423]," discards only non-solutions.\nThe case ",[389,1804,1806],{"className":1805},[392],[389,1807,1809,1827],{"className":1808,"ariaHidden":397},[396],[389,1810,1812,1815,1818,1821,1824],{"className":1811},[401],[389,1813],{"className":1814,"style":1204},[405],[389,1816,1102],{"className":1817},[410,423],[389,1819],{"className":1820,"style":645},[585],[389,1822,1040],{"className":1823},[649],[389,1825],{"className":1826,"style":645},[585],[389,1828,1830,1833],{"className":1829},[401],[389,1831],{"className":1832,"style":734},[405],[389,1834,739],{"className":1835,"style":738},[410,423]," is symmetric. ",[389,1838,1840],{"className":1839},[392],[389,1841,1843],{"className":1842,"ariaHidden":397},[396],[389,1844,1846,1850],{"className":1845},[401],[389,1847],{"className":1848,"style":1849},[405],"height:0.675em;",[389,1851,1855],{"className":1852},[1853,1854],"enclosing","qed",[389,1856,1859],{"className":1857},[410,1858],"amsrm","□",[1861,1862,1866,2270],"figure",{"className":1863},[1864,1865],"tikz-figure","tikz-diagram-rendered",[1867,1868,1873],"svg",{"xmlns":1869,"width":1870,"height":1871,"viewBox":1872},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","288.204","137.257","-75 -75 216.153 102.943",[1874,1875,1878,1883,1892,1900,1903,1910,1917,1920,1927,1934,1937,1944,1951,1954,1961,1968,1971,1978,1985,1990,2050,2065,2086,2107,2126,2144,2153,2175,2198,2221,2241,2261],"g",{"stroke":1876,"style":1877},"currentColor","stroke-miterlimit:10;stroke-width:.4",[1879,1880],"path",{"fill":1881,"d":1882},"none","M-20.23-37.338H2.534V-60.1h-22.762Z",[1874,1884,1886],{"transform":1885},"translate(-2.312 2.9)",[1879,1887],{"d":1888,"fill":1876,"stroke":1876,"className":1889,"style":1891},"M-4.941-48.719L-7.973-48.719L-7.973-49.035Q-6.822-49.035-6.822-49.330L-6.822-54.054Q-7.310-53.821-8.031-53.821L-8.031-54.137Q-6.901-54.137-6.339-54.713L-6.194-54.713Q-6.159-54.713-6.126-54.680Q-6.093-54.647-6.093-54.612L-6.093-49.330Q-6.093-49.035-4.941-49.035",[1890],"tikz-text","stroke-width:0.270",[1874,1893,1895],{"transform":1894},"translate(-2.125 -15.063)",[1879,1896],{"d":1897,"fill":1876,"stroke":1876,"className":1898,"style":1899},"M-6.727-48.551Q-7.430-48.551-7.830-48.951Q-8.231-49.352-8.375-49.961Q-8.520-50.571-8.520-51.270Q-8.520-51.793-8.450-52.256Q-8.379-52.719-8.186-53.131Q-7.993-53.543-7.635-53.791Q-7.278-54.039-6.727-54.039Q-6.176-54.039-5.819-53.791Q-5.461-53.543-5.270-53.133Q-5.078-52.723-5.008-52.254Q-4.938-51.785-4.938-51.270Q-4.938-50.571-5.080-49.963Q-5.223-49.356-5.623-48.953Q-6.024-48.551-6.727-48.551M-6.727-48.809Q-6.254-48.809-6.022-49.244Q-5.789-49.680-5.735-50.219Q-5.680-50.758-5.680-51.399Q-5.680-52.395-5.864-53.088Q-6.047-53.782-6.727-53.782Q-7.094-53.782-7.315-53.543Q-7.536-53.305-7.631-52.948Q-7.727-52.590-7.752-52.219Q-7.778-51.848-7.778-51.399Q-7.778-50.758-7.723-50.219Q-7.668-49.680-7.436-49.244Q-7.203-48.809-6.727-48.809",[1890],"stroke-width:0.240",[1879,1901],{"fill":1881,"d":1902},"M6.8-37.338h22.763V-60.1H6.801Z",[1874,1904,1906],{"transform":1905},"translate(24.718 2.9)",[1879,1907],{"d":1908,"fill":1876,"stroke":1876,"className":1909,"style":1891},"M-7.947-49.440L-7.991-49.440Q-7.789-49.123-7.402-48.965Q-7.015-48.807-6.589-48.807Q-6.053-48.807-5.814-49.242Q-5.574-49.677-5.574-50.257Q-5.574-50.837-5.820-51.277Q-6.066-51.716-6.598-51.716L-7.218-51.716Q-7.244-51.716-7.277-51.745Q-7.310-51.773-7.310-51.795L-7.310-51.896Q-7.310-51.927-7.281-51.951Q-7.253-51.975-7.218-51.975L-6.699-52.015Q-6.233-52.015-5.987-52.487Q-5.741-52.960-5.741-53.478Q-5.741-53.905-5.954-54.179Q-6.167-54.454-6.589-54.454Q-6.932-54.454-7.257-54.324Q-7.582-54.195-7.767-53.940L-7.741-53.940Q-7.538-53.940-7.402-53.799Q-7.266-53.658-7.266-53.461Q-7.266-53.263-7.400-53.129Q-7.534-52.995-7.732-52.995Q-7.934-52.995-8.072-53.129Q-8.211-53.263-8.211-53.461Q-8.211-54.050-7.708-54.381Q-7.204-54.713-6.589-54.713Q-6.211-54.713-5.809-54.573Q-5.407-54.432-5.139-54.153Q-4.871-53.874-4.871-53.478Q-4.871-52.929-5.225-52.492Q-5.578-52.054-6.119-51.870Q-5.728-51.791-5.383-51.567Q-5.038-51.343-4.827-51.002Q-4.616-50.661-4.616-50.266Q-4.616-49.884-4.779-49.561Q-4.941-49.238-5.233-49.002Q-5.526-48.767-5.873-48.644Q-6.220-48.521-6.589-48.521Q-7.037-48.521-7.468-48.682Q-7.899-48.842-8.180-49.169Q-8.461-49.497-8.461-49.954Q-8.461-50.169-8.314-50.312Q-8.167-50.455-7.947-50.455Q-7.736-50.455-7.591-50.310Q-7.446-50.165-7.446-49.954Q-7.446-49.743-7.593-49.591Q-7.741-49.440-7.947-49.440",[1890],[1874,1911,1913],{"transform":1912},"translate(24.905 -15.063)",[1879,1914],{"d":1915,"fill":1876,"stroke":1876,"className":1916,"style":1899},"M-5.254-48.719L-8.047-48.719L-8.047-49.016Q-6.985-49.016-6.985-49.278L-6.985-53.446Q-7.414-53.231-8.094-53.231L-8.094-53.528Q-7.075-53.528-6.559-54.039L-6.414-54.039Q-6.340-54.020-6.321-53.942L-6.321-49.278Q-6.321-49.016-5.254-49.016",[1890],[1879,1918],{"fill":1881,"d":1919},"M33.83-37.338h22.763V-60.1H33.831Z",[1874,1921,1923],{"transform":1922},"translate(51.748 2.9)",[1879,1924],{"d":1925,"fill":1876,"stroke":1876,"className":1926,"style":1891},"M-6.150-50.196L-8.589-50.196L-8.589-50.512L-5.763-54.660Q-5.719-54.713-5.653-54.713L-5.499-54.713Q-5.460-54.713-5.427-54.680Q-5.394-54.647-5.394-54.603L-5.394-50.512L-4.493-50.512L-4.493-50.196L-5.394-50.196L-5.394-49.330Q-5.394-49.035-4.493-49.035L-4.493-48.719L-7.046-48.719L-7.046-49.035Q-6.686-49.035-6.418-49.090Q-6.150-49.145-6.150-49.330L-6.150-50.196M-6.093-53.685L-8.255-50.512L-6.093-50.512",[1890],[1874,1928,1930],{"transform":1929},"translate(51.935 -15.063)",[1879,1931],{"d":1932,"fill":1876,"stroke":1876,"className":1933,"style":1899},"M-5.262-48.719L-8.422-48.719L-8.422-48.926Q-8.422-48.953-8.399-48.985L-7.047-50.383Q-6.668-50.770-6.420-51.059Q-6.172-51.348-5.998-51.705Q-5.825-52.063-5.825-52.453Q-5.825-52.801-5.957-53.094Q-6.090-53.387-6.344-53.565Q-6.598-53.742-6.953-53.742Q-7.313-53.742-7.604-53.547Q-7.895-53.352-8.039-53.024L-7.985-53.024Q-7.801-53.024-7.676-52.903Q-7.551-52.782-7.551-52.590Q-7.551-52.410-7.676-52.282Q-7.801-52.153-7.985-52.153Q-8.164-52.153-8.293-52.282Q-8.422-52.410-8.422-52.590Q-8.422-52.992-8.202-53.328Q-7.981-53.664-7.616-53.852Q-7.250-54.039-6.848-54.039Q-6.368-54.039-5.952-53.852Q-5.536-53.664-5.284-53.303Q-5.032-52.942-5.032-52.453Q-5.032-52.094-5.186-51.791Q-5.340-51.489-5.592-51.229Q-5.844-50.969-6.194-50.684Q-6.543-50.399-6.711-50.246L-7.641-49.407L-6.926-49.407Q-5.551-49.407-5.512-49.446Q-5.442-49.524-5.399-49.709Q-5.356-49.895-5.313-50.184L-5.032-50.184",[1890],[1879,1935],{"fill":1881,"d":1936},"M60.86-37.338h22.763V-60.1H60.861Z",[1874,1938,1940],{"transform":1939},"translate(78.778 2.9)",[1879,1941],{"d":1942,"fill":1876,"stroke":1876,"className":1943,"style":1891},"M-6.536-48.521Q-7.270-48.521-7.701-49.002Q-8.132-49.484-8.296-50.176Q-8.461-50.868-8.461-51.615Q-8.461-52.344-8.169-53.067Q-7.877-53.790-7.323-54.252Q-6.769-54.713-6.022-54.713Q-5.526-54.713-5.190-54.447Q-4.853-54.181-4.853-53.698Q-4.853-53.518-4.981-53.390Q-5.108-53.263-5.284-53.263Q-5.464-53.263-5.594-53.388Q-5.723-53.513-5.723-53.698Q-5.723-53.812-5.666-53.916Q-5.609-54.019-5.508-54.078Q-5.407-54.137-5.284-54.137Q-5.280-54.137-5.275-54.135Q-5.271-54.133-5.266-54.129Q-5.381-54.296-5.589-54.375Q-5.798-54.454-6.022-54.454Q-6.466-54.454-6.824-54.153Q-7.182-53.852-7.371-53.399Q-7.604-52.793-7.604-51.760Q-7.433-52.125-7.132-52.353Q-6.831-52.582-6.444-52.582Q-6.040-52.582-5.695-52.415Q-5.350-52.248-5.113-51.967Q-4.875-51.685-4.746-51.323Q-4.616-50.960-4.616-50.556Q-4.616-50.011-4.860-49.545Q-5.104-49.079-5.543-48.800Q-5.983-48.521-6.536-48.521M-6.536-48.807Q-6.075-48.807-5.840-49.064Q-5.605-49.321-5.539-49.695Q-5.473-50.068-5.473-50.538L-5.473-50.573Q-5.473-51.061-5.530-51.426Q-5.587-51.791-5.816-52.054Q-6.044-52.318-6.488-52.318Q-6.857-52.318-7.108-52.074Q-7.358-51.830-7.473-51.466Q-7.587-51.101-7.587-50.754Q-7.587-50.635-7.578-50.573Q-7.578-50.556-7.580-50.545Q-7.582-50.534-7.587-50.521Q-7.587-49.870-7.349-49.339Q-7.112-48.807-6.536-48.807",[1890],[1874,1945,1947],{"transform":1946},"translate(78.965 -15.063)",[1879,1948],{"d":1949,"fill":1876,"stroke":1876,"className":1950,"style":1899},"M-8.055-49.352Q-7.864-49.078-7.508-48.951Q-7.153-48.824-6.770-48.824Q-6.434-48.824-6.225-49.010Q-6.016-49.196-5.920-49.489Q-5.825-49.782-5.825-50.094Q-5.825-50.418-5.922-50.713Q-6.020-51.008-6.233-51.192Q-6.446-51.375-6.778-51.375L-7.344-51.375Q-7.375-51.375-7.405-51.405Q-7.434-51.434-7.434-51.461L-7.434-51.543Q-7.434-51.578-7.405-51.604Q-7.375-51.629-7.344-51.629L-6.864-51.664Q-6.578-51.664-6.381-51.869Q-6.184-52.074-6.088-52.369Q-5.993-52.664-5.993-52.942Q-5.993-53.321-6.192-53.559Q-6.391-53.797-6.770-53.797Q-7.090-53.797-7.379-53.690Q-7.668-53.582-7.832-53.360Q-7.653-53.360-7.530-53.233Q-7.407-53.106-7.407-52.934Q-7.407-52.762-7.532-52.637Q-7.657-52.512-7.832-52.512Q-8.004-52.512-8.129-52.637Q-8.254-52.762-8.254-52.934Q-8.254-53.301-8.030-53.549Q-7.805-53.797-7.465-53.918Q-7.125-54.039-6.770-54.039Q-6.422-54.039-6.059-53.918Q-5.696-53.797-5.448-53.547Q-5.200-53.297-5.200-52.942Q-5.200-52.457-5.518-52.074Q-5.836-51.692-6.313-51.520Q-5.762-51.410-5.362-51.024Q-4.961-50.637-4.961-50.102Q-4.961-49.645-5.225-49.289Q-5.489-48.934-5.911-48.742Q-6.332-48.551-6.770-48.551Q-7.180-48.551-7.573-48.686Q-7.965-48.821-8.231-49.106Q-8.496-49.391-8.496-49.809Q-8.496-50.004-8.364-50.133Q-8.231-50.262-8.039-50.262Q-7.914-50.262-7.811-50.203Q-7.707-50.145-7.645-50.039Q-7.582-49.934-7.582-49.809Q-7.582-49.614-7.717-49.483Q-7.852-49.352-8.055-49.352",[1890],[1879,1952],{"fill":1881,"d":1953},"M87.89-37.338h22.763V-60.1H87.891Z",[1874,1955,1957],{"transform":1956},"translate(105.808 2.9)",[1879,1958],{"d":1959,"fill":1876,"stroke":1876,"className":1960,"style":1891},"M-8.461-50.086Q-8.461-50.644-8.101-51.057Q-7.741-51.470-7.165-51.742L-7.534-51.975Q-7.837-52.177-8.024-52.507Q-8.211-52.837-8.211-53.193Q-8.211-53.847-7.705-54.280Q-7.200-54.713-6.536-54.713Q-6.137-54.713-5.752-54.553Q-5.368-54.392-5.119-54.087Q-4.871-53.782-4.871-53.364Q-4.871-52.533-5.939-51.975L-5.385-51.628Q-5.038-51.400-4.827-51.031Q-4.616-50.661-4.616-50.248Q-4.616-49.870-4.774-49.552Q-4.932-49.233-5.209-49Q-5.486-48.767-5.829-48.644Q-6.172-48.521-6.536-48.521Q-7.002-48.521-7.448-48.708Q-7.894-48.895-8.178-49.249Q-8.461-49.602-8.461-50.086M-7.938-50.086Q-7.938-49.541-7.519-49.174Q-7.099-48.807-6.536-48.807Q-6.207-48.807-5.882-48.939Q-5.556-49.071-5.348-49.325Q-5.139-49.580-5.139-49.923Q-5.139-50.187-5.275-50.411Q-5.411-50.635-5.644-50.789L-6.888-51.571Q-7.349-51.334-7.644-50.947Q-7.938-50.560-7.938-50.086M-7.327-52.841L-6.211-52.138Q-5.987-52.261-5.783-52.450Q-5.578-52.639-5.458-52.872Q-5.337-53.105-5.337-53.364Q-5.337-53.672-5.508-53.922Q-5.680-54.173-5.956-54.313Q-6.233-54.454-6.545-54.454Q-6.994-54.454-7.367-54.208Q-7.741-53.962-7.741-53.535Q-7.741-53.131-7.327-52.841",[1890],[1874,1962,1964],{"transform":1963},"translate(105.995 -15.063)",[1879,1965],{"d":1966,"fill":1876,"stroke":1876,"className":1967,"style":1899},"M-6.368-50.032L-8.610-50.032L-8.610-50.328L-6.039-53.985Q-6-54.039-5.938-54.039L-5.793-54.039Q-5.743-54.039-5.711-54.008Q-5.680-53.977-5.680-53.926L-5.680-50.328L-4.848-50.328L-4.848-50.032L-5.680-50.032L-5.680-49.278Q-5.680-49.016-4.856-49.016L-4.856-48.719L-7.192-48.719L-7.192-49.016Q-6.368-49.016-6.368-49.278L-6.368-50.032M-6.313-53.133L-8.282-50.328L-6.313-50.328",[1890],[1879,1969],{"fill":1881,"d":1970},"M114.92-37.338h22.763V-60.1h-22.762Z",[1874,1972,1974],{"transform":1973},"translate(130.525 2.9)",[1879,1975],{"d":1976,"fill":1876,"stroke":1876,"className":1977,"style":1891},"M-4.941-48.719L-7.973-48.719L-7.973-49.035Q-6.822-49.035-6.822-49.330L-6.822-54.054Q-7.310-53.821-8.031-53.821L-8.031-54.137Q-6.901-54.137-6.339-54.713L-6.194-54.713Q-6.159-54.713-6.126-54.680Q-6.093-54.647-6.093-54.612L-6.093-49.330Q-6.093-49.035-4.941-49.035L-4.941-48.719M-0.323-48.719L-3.355-48.719L-3.355-49.035Q-2.203-49.035-2.203-49.330L-2.203-54.054Q-2.691-53.821-3.412-53.821L-3.412-54.137Q-2.283-54.137-1.720-54.713L-1.575-54.713Q-1.540-54.713-1.507-54.680Q-1.474-54.647-1.474-54.612L-1.474-49.330Q-1.474-49.035-0.323-49.035",[1890],[1874,1979,1981],{"transform":1980},"translate(133.025 -15.063)",[1879,1982],{"d":1983,"fill":1876,"stroke":1876,"className":1984,"style":1899},"M-8.008-49.598L-8.071-49.598Q-7.930-49.246-7.606-49.035Q-7.282-48.824-6.895-48.824Q-6.301-48.824-6.051-49.258Q-5.801-49.692-5.801-50.328Q-5.801-50.922-5.971-51.369Q-6.141-51.817-6.641-51.817Q-6.938-51.817-7.143-51.737Q-7.348-51.657-7.450-51.565Q-7.551-51.473-7.666-51.340Q-7.782-51.207-7.832-51.192L-7.903-51.192Q-7.989-51.215-8.008-51.293L-8.008-53.942Q-7.977-54.039-7.903-54.039Q-7.887-54.039-7.879-54.037Q-7.871-54.035-7.864-54.032Q-7.278-53.782-6.680-53.782Q-6.098-53.782-5.481-54.039L-5.457-54.039Q-5.414-54.039-5.387-54.014Q-5.360-53.989-5.360-53.949L-5.360-53.871Q-5.360-53.840-5.383-53.817Q-5.680-53.465-6.102-53.268Q-6.524-53.071-6.985-53.071Q-7.332-53.071-7.711-53.176L-7.711-51.680Q-7.493-51.875-7.217-51.973Q-6.942-52.071-6.641-52.071Q-6.184-52.071-5.815-51.823Q-5.446-51.574-5.239-51.170Q-5.032-50.766-5.032-50.321Q-5.032-49.832-5.287-49.424Q-5.543-49.016-5.975-48.783Q-6.407-48.551-6.895-48.551Q-7.289-48.551-7.645-48.742Q-8-48.934-8.211-49.268Q-8.422-49.602-8.422-50.016Q-8.422-50.196-8.305-50.309Q-8.188-50.422-8.008-50.422Q-7.891-50.422-7.799-50.369Q-7.707-50.317-7.655-50.225Q-7.602-50.133-7.602-50.016Q-7.602-49.832-7.715-49.715Q-7.828-49.598-8.008-49.598",[1890],[1879,1986],{"fill":1881,"stroke":1987,"d":1988,"style":1989},"var(--tk-accent)","M32.408-35.492v-26.453a1 1 0 0 1 1-1h52.06a1 1 0 0 1 1 1v26.453a1 1 0 0 1-1 1h-52.06a1 1 0 0 1-1-1Zm54.06-27.453","stroke-width:1.2",[1874,1991,1992],{"fill":1987,"stroke":1987},[1874,1993,1995,2002,2008,2014,2020,2026,2032,2038,2044],{"fill":1987,"stroke":1881,"fontSize":1994},"8",[1874,1996,1998],{"transform":1997},"translate(30.956 31.875)",[1879,1999],{"d":2000,"fill":1987,"stroke":1987,"className":2001,"style":1899},"M-7.344-48.641Q-7.700-48.641-7.969-48.821Q-8.239-49-8.379-49.295Q-8.520-49.590-8.520-49.949Q-8.520-50.336-8.358-50.750Q-8.196-51.164-7.912-51.502Q-7.629-51.840-7.260-52.043Q-6.891-52.246-6.489-52.246Q-5.996-52.246-5.719-51.797Q-5.688-51.930-5.584-52.012Q-5.481-52.094-5.352-52.094Q-5.239-52.094-5.159-52.024Q-5.078-51.953-5.078-51.840Q-5.078-51.813-5.094-51.750L-5.649-49.551Q-5.688-49.305-5.688-49.254Q-5.688-48.895-5.442-48.895Q-5.297-48.895-5.196-49.002Q-5.094-49.110-5.030-49.264Q-4.965-49.418-4.916-49.608Q-4.868-49.797-4.848-49.895Q-4.821-49.965-4.758-49.965L-4.657-49.965Q-4.618-49.965-4.592-49.932Q-4.567-49.899-4.567-49.871Q-4.567-49.856-4.575-49.840Q-4.688-49.348-4.887-48.994Q-5.086-48.641-5.457-48.641Q-5.739-48.641-5.965-48.783Q-6.192-48.926-6.274-49.184Q-6.496-48.942-6.770-48.791Q-7.043-48.641-7.344-48.641M-7.328-48.895Q-7.118-48.895-6.909-49.008Q-6.700-49.121-6.530-49.295Q-6.360-49.469-6.231-49.664Q-6.243-49.649-6.252-49.635Q-6.262-49.621-6.274-49.606L-5.840-51.328Q-5.879-51.508-5.965-51.658Q-6.051-51.809-6.188-51.901Q-6.325-51.992-6.504-51.992Q-6.840-51.992-7.112-51.711Q-7.383-51.430-7.543-51.055Q-7.668-50.735-7.766-50.315Q-7.864-49.895-7.864-49.614Q-7.864-49.324-7.731-49.110Q-7.598-48.895-7.328-48.895",[1890],[1874,2003,2004],{"transform":1997},[1879,2005],{"d":2006,"fill":1987,"stroke":1987,"className":2007,"style":1899},"M-2.165-46.719L-3.341-46.719L-3.341-54.719L-2.165-54.719L-2.165-54.352L-2.974-54.352L-2.974-47.086L-2.165-47.086L-2.165-46.719M1.612-48.719L-1.548-48.719L-1.548-48.926Q-1.548-48.953-1.524-48.985L-0.173-50.383Q0.206-50.770 0.454-51.059Q0.702-51.348 0.876-51.705Q1.050-52.063 1.050-52.453Q1.050-52.801 0.917-53.094Q0.784-53.387 0.530-53.565Q0.276-53.742-0.079-53.742Q-0.438-53.742-0.729-53.547Q-1.021-53.352-1.165-53.024L-1.110-53.024Q-0.927-53.024-0.802-52.903Q-0.677-52.782-0.677-52.590Q-0.677-52.410-0.802-52.282Q-0.927-52.153-1.110-52.153Q-1.290-52.153-1.419-52.282Q-1.548-52.410-1.548-52.590Q-1.548-52.992-1.327-53.328Q-1.106-53.664-0.741-53.852Q-0.376-54.039 0.026-54.039Q0.507-54.039 0.923-53.852Q1.339-53.664 1.591-53.303Q1.843-52.942 1.843-52.453Q1.843-52.094 1.688-51.791Q1.534-51.489 1.282-51.229Q1.030-50.969 0.681-50.684Q0.331-50.399 0.163-50.246L-0.767-49.407L-0.052-49.407Q1.323-49.407 1.362-49.446Q1.433-49.524 1.476-49.709Q1.519-49.895 1.562-50.184L1.843-50.184L1.612-48.719M3.632-46.719L2.456-46.719L2.456-47.086L3.265-47.086L3.265-54.352L2.456-54.352L2.456-54.719L3.632-54.719",[1890],[1874,2009,2010],{"transform":1997},[1879,2011],{"d":2012,"fill":1987,"stroke":1987,"className":2013,"style":1899},"M9.649-50.535L7.176-50.535Q7.098-50.547 7.049-50.596Q7.001-50.645 7.001-50.719Q7.001-50.793 7.049-50.842Q7.098-50.891 7.176-50.903L9.649-50.903L9.649-53.383Q9.676-53.551 9.833-53.551Q9.907-53.551 9.956-53.502Q10.005-53.453 10.016-53.383L10.016-50.903L12.489-50.903Q12.657-50.871 12.657-50.719Q12.657-50.567 12.489-50.535L10.016-50.535L10.016-48.055Q10.005-47.985 9.956-47.936Q9.907-47.887 9.833-47.887Q9.676-47.887 9.649-48.055",[1890],[1874,2015,2016],{"transform":1997},[1879,2017],{"d":2018,"fill":1987,"stroke":1987,"className":2019,"style":1899},"M16.532-48.641Q16.176-48.641 15.907-48.821Q15.637-49 15.497-49.295Q15.356-49.590 15.356-49.949Q15.356-50.336 15.518-50.750Q15.680-51.164 15.964-51.502Q16.247-51.840 16.616-52.043Q16.985-52.246 17.387-52.246Q17.880-52.246 18.157-51.797Q18.188-51.930 18.292-52.012Q18.395-52.094 18.524-52.094Q18.637-52.094 18.717-52.024Q18.798-51.953 18.798-51.840Q18.798-51.813 18.782-51.750L18.227-49.551Q18.188-49.305 18.188-49.254Q18.188-48.895 18.434-48.895Q18.579-48.895 18.680-49.002Q18.782-49.110 18.846-49.264Q18.911-49.418 18.960-49.608Q19.008-49.797 19.028-49.895Q19.055-49.965 19.118-49.965L19.219-49.965Q19.258-49.965 19.284-49.932Q19.309-49.899 19.309-49.871Q19.309-49.856 19.301-49.840Q19.188-49.348 18.989-48.994Q18.790-48.641 18.419-48.641Q18.137-48.641 17.911-48.783Q17.684-48.926 17.602-49.184Q17.380-48.942 17.106-48.791Q16.833-48.641 16.532-48.641M16.548-48.895Q16.758-48.895 16.967-49.008Q17.176-49.121 17.346-49.295Q17.516-49.469 17.645-49.664Q17.633-49.649 17.624-49.635Q17.614-49.621 17.602-49.606L18.036-51.328Q17.997-51.508 17.911-51.658Q17.825-51.809 17.688-51.901Q17.551-51.992 17.372-51.992Q17.036-51.992 16.764-51.711Q16.493-51.430 16.333-51.055Q16.208-50.735 16.110-50.315Q16.012-49.895 16.012-49.614Q16.012-49.324 16.145-49.110Q16.278-48.895 16.548-48.895",[1890],[1874,2021,2022],{"transform":1997},[1879,2023],{"d":2024,"fill":1987,"stroke":1987,"className":2025,"style":1899},"M21.711-46.719L20.535-46.719L20.535-54.719L21.711-54.719L21.711-54.352L20.902-54.352L20.902-47.086L21.711-47.086L21.711-46.719M22.695-49.352Q22.887-49.078 23.242-48.951Q23.598-48.824 23.980-48.824Q24.316-48.824 24.525-49.010Q24.734-49.196 24.830-49.489Q24.926-49.782 24.926-50.094Q24.926-50.418 24.828-50.713Q24.730-51.008 24.518-51.192Q24.305-51.375 23.973-51.375L23.406-51.375Q23.375-51.375 23.346-51.405Q23.316-51.434 23.316-51.461L23.316-51.543Q23.316-51.578 23.346-51.604Q23.375-51.629 23.406-51.629L23.887-51.664Q24.172-51.664 24.369-51.869Q24.566-52.074 24.662-52.369Q24.758-52.664 24.758-52.942Q24.758-53.321 24.559-53.559Q24.359-53.797 23.980-53.797Q23.660-53.797 23.371-53.690Q23.082-53.582 22.918-53.360Q23.098-53.360 23.221-53.233Q23.344-53.106 23.344-52.934Q23.344-52.762 23.219-52.637Q23.094-52.512 22.918-52.512Q22.746-52.512 22.621-52.637Q22.496-52.762 22.496-52.934Q22.496-53.301 22.721-53.549Q22.945-53.797 23.285-53.918Q23.625-54.039 23.980-54.039Q24.328-54.039 24.691-53.918Q25.055-53.797 25.303-53.547Q25.551-53.297 25.551-52.942Q25.551-52.457 25.232-52.074Q24.914-51.692 24.438-51.520Q24.988-51.410 25.389-51.024Q25.789-50.637 25.789-50.102Q25.789-49.645 25.525-49.289Q25.262-48.934 24.840-48.742Q24.418-48.551 23.980-48.551Q23.570-48.551 23.178-48.686Q22.785-48.821 22.520-49.106Q22.254-49.391 22.254-49.809Q22.254-50.004 22.387-50.133Q22.520-50.262 22.711-50.262Q22.836-50.262 22.939-50.203Q23.043-50.145 23.105-50.039Q23.168-49.934 23.168-49.809Q23.168-49.614 23.033-49.483Q22.898-49.352 22.695-49.352M27.508-46.719L26.332-46.719L26.332-47.086L27.141-47.086L27.141-54.352L26.332-54.352L26.332-54.719L27.508-54.719",[1890],[1874,2027,2028],{"transform":1997},[1879,2029],{"d":2030,"fill":1987,"stroke":1987,"className":2031,"style":1899},"M36.838-49.696L31.525-49.696Q31.447-49.703 31.398-49.752Q31.350-49.801 31.350-49.879Q31.350-49.949 31.397-50Q31.443-50.051 31.525-50.063L36.838-50.063Q36.912-50.051 36.959-50Q37.006-49.949 37.006-49.879Q37.006-49.801 36.957-49.752Q36.908-49.703 36.838-49.696M36.838-51.383L31.525-51.383Q31.447-51.391 31.398-51.440Q31.350-51.489 31.350-51.567Q31.350-51.637 31.397-51.688Q31.443-51.739 31.525-51.750L36.838-51.750Q36.912-51.739 36.959-51.688Q37.006-51.637 37.006-51.567Q37.006-51.489 36.957-51.440Q36.908-51.391 36.838-51.383",[1890],[1874,2033,2034],{"transform":1997},[1879,2035],{"d":2036,"fill":1987,"stroke":1987,"className":2037,"style":1899},"M43.443-48.719L40.650-48.719L40.650-49.016Q41.712-49.016 41.712-49.278L41.712-53.446Q41.283-53.231 40.603-53.231L40.603-53.528Q41.622-53.528 42.138-54.039L42.283-54.039Q42.357-54.020 42.376-53.942L42.376-49.278Q42.376-49.016 43.443-49.016L43.443-48.719M46.216-48.551Q45.513-48.551 45.113-48.951Q44.712-49.352 44.568-49.961Q44.423-50.571 44.423-51.270Q44.423-51.793 44.494-52.256Q44.564-52.719 44.757-53.131Q44.951-53.543 45.308-53.791Q45.665-54.039 46.216-54.039Q46.767-54.039 47.124-53.791Q47.482-53.543 47.673-53.133Q47.865-52.723 47.935-52.254Q48.005-51.785 48.005-51.270Q48.005-50.571 47.863-49.963Q47.720-49.356 47.320-48.953Q46.919-48.551 46.216-48.551M46.216-48.809Q46.689-48.809 46.921-49.244Q47.154-49.680 47.208-50.219Q47.263-50.758 47.263-51.399Q47.263-52.395 47.079-53.088Q46.896-53.782 46.216-53.782Q45.849-53.782 45.628-53.543Q45.408-53.305 45.312-52.948Q45.216-52.590 45.191-52.219Q45.165-51.848 45.165-51.399Q45.165-50.758 45.220-50.219Q45.275-49.680 45.507-49.244Q45.740-48.809 46.216-48.809",[1890],[1874,2039,2040],{"transform":1997},[1879,2041],{"d":2042,"fill":1987,"stroke":1987,"className":2043,"style":1899},"M56.671-49.696L51.358-49.696Q51.280-49.703 51.231-49.752Q51.183-49.801 51.183-49.879Q51.183-49.949 51.230-50Q51.276-50.051 51.358-50.063L56.671-50.063Q56.745-50.051 56.792-50Q56.839-49.949 56.839-49.879Q56.839-49.801 56.790-49.752Q56.741-49.703 56.671-49.696M56.671-51.383L51.358-51.383Q51.280-51.391 51.231-51.440Q51.183-51.489 51.183-51.567Q51.183-51.637 51.230-51.688Q51.276-51.739 51.358-51.750L56.671-51.750Q56.745-51.739 56.792-51.688Q56.839-51.637 56.839-51.567Q56.839-51.489 56.790-51.440Q56.741-51.391 56.671-51.383",[1890],[1874,2045,2046],{"transform":1997},[1879,2047],{"d":2048,"fill":1987,"stroke":1987,"className":2049,"style":1899},"M60.242-48.848L60.269-48.949Q60.312-49.008 60.363-49.016Q61.058-49.016 61.277-49.063Q61.456-49.110 61.499-49.321L62.578-53.641Q62.620-53.813 62.620-53.840Q62.620-53.887 62.370-53.887L61.835-53.887Q61.277-53.887 60.980-53.733Q60.683-53.578 60.531-53.295Q60.378-53.012 60.171-52.407Q60.128-52.344 60.074-52.336L59.995-52.336Q59.898-52.364 59.898-52.446Q59.898-52.453 59.906-52.496L60.468-54.117Q60.499-54.172 60.562-54.184L65.562-54.184Q65.660-54.157 65.660-54.063L65.417-52.438Q65.398-52.360 65.316-52.336L65.234-52.336Q65.140-52.364 65.140-52.461Q65.210-53.012 65.218-53.231Q65.218-53.660 64.984-53.774Q64.749-53.887 64.249-53.887L63.722-53.887Q63.550-53.887 63.488-53.873Q63.425-53.860 63.392-53.801Q63.359-53.742 63.316-53.582L62.234-49.262Q62.226-49.231 62.226-49.176Q62.226-49.125 62.245-49.100Q62.265-49.074 62.316-49.055Q62.523-49.016 63.187-49.016Q63.285-48.985 63.285-48.895L63.257-48.789Q63.226-48.731 63.163-48.719L60.339-48.719Q60.304-48.719 60.273-48.760Q60.242-48.801 60.242-48.848",[1890],[1874,2051,2052,2059],{"stroke":1881,"fontSize":1994},[1874,2053,2055],{"transform":2054},"translate(-47.006 52.937)",[1879,2056],{"d":2057,"fill":1876,"stroke":1876,"className":2058,"style":1899},"M-8.055-49.199Q-7.840-48.895-7.176-48.895Q-6.746-48.895-6.389-49.096Q-6.032-49.297-6.032-49.696Q-6.032-49.899-6.192-50.022Q-6.352-50.145-6.559-50.184L-7.024-50.270Q-7.340-50.340-7.555-50.547Q-7.770-50.754-7.770-51.063Q-7.770-51.426-7.565-51.698Q-7.360-51.969-7.030-52.108Q-6.700-52.246-6.344-52.246Q-5.957-52.246-5.647-52.078Q-5.336-51.910-5.336-51.559Q-5.336-51.367-5.442-51.227Q-5.547-51.086-5.735-51.086Q-5.844-51.086-5.926-51.158Q-6.008-51.231-6.008-51.344Q-6.008-51.489-5.911-51.598Q-5.813-51.707-5.672-51.727Q-5.762-51.871-5.953-51.932Q-6.145-51.992-6.360-51.992Q-6.692-51.992-6.965-51.821Q-7.239-51.649-7.239-51.336Q-7.239-51.180-7.127-51.086Q-7.016-50.992-6.840-50.949L-6.383-50.864Q-6.008-50.793-5.756-50.561Q-5.504-50.328-5.504-49.965Q-5.504-49.692-5.649-49.424Q-5.793-49.157-6.032-48.977Q-6.508-48.641-7.192-48.641Q-7.469-48.641-7.750-48.713Q-8.032-48.785-8.223-48.959Q-8.414-49.133-8.414-49.414Q-8.414-49.637-8.286-49.801Q-8.157-49.965-7.938-49.965Q-7.793-49.965-7.705-49.883Q-7.618-49.801-7.618-49.664Q-7.618-49.485-7.748-49.342Q-7.879-49.199-8.055-49.199",[1890],[1874,2060,2061],{"transform":2054},[1879,2062],{"d":2063,"fill":1876,"stroke":1876,"className":2064,"style":1899},"M-1.837-49.184Q-1.837-49.367-1.701-49.504Q-1.564-49.641-1.372-49.641Q-1.181-49.641-1.048-49.508Q-0.915-49.375-0.915-49.184Q-0.915-48.985-1.048-48.852Q-1.181-48.719-1.372-48.719Q-1.564-48.719-1.701-48.856Q-1.837-48.992-1.837-49.184M-1.837-51.711Q-1.837-51.895-1.701-52.032Q-1.564-52.168-1.372-52.168Q-1.181-52.168-1.048-52.035Q-0.915-51.903-0.915-51.711Q-0.915-51.512-1.048-51.379Q-1.181-51.246-1.372-51.246Q-1.564-51.246-1.701-51.383Q-1.837-51.520-1.837-51.711",[1890],[1874,2066,2067,2074,2080],{"stroke":1881,"fontSize":1994},[1874,2068,2070],{"transform":2069},"translate(-14.651 53.54)",[1879,2071],{"d":2072,"fill":1876,"stroke":1876,"className":2073,"style":1899},"M-5.254-48.719L-8.047-48.719L-8.047-49.016Q-6.985-49.016-6.985-49.278L-6.985-53.446Q-7.414-53.231-8.094-53.231L-8.094-53.528Q-7.075-53.528-6.559-54.039L-6.414-54.039Q-6.340-54.020-6.321-53.942L-6.321-49.278Q-6.321-49.016-5.254-49.016L-5.254-48.719M-1.016-48.719L-4.176-48.719L-4.176-48.926Q-4.176-48.953-4.153-48.985L-2.801-50.383Q-2.422-50.770-2.174-51.059Q-1.926-51.348-1.752-51.705Q-1.578-52.063-1.578-52.453Q-1.578-52.801-1.711-53.094Q-1.844-53.387-2.098-53.565Q-2.352-53.742-2.707-53.742Q-3.067-53.742-3.358-53.547Q-3.649-53.352-3.793-53.024L-3.739-53.024Q-3.555-53.024-3.430-52.903Q-3.305-52.782-3.305-52.590Q-3.305-52.410-3.430-52.282Q-3.555-52.153-3.739-52.153Q-3.918-52.153-4.047-52.282Q-4.176-52.410-4.176-52.590Q-4.176-52.992-3.955-53.328Q-3.735-53.664-3.369-53.852Q-3.004-54.039-2.602-54.039Q-2.121-54.039-1.705-53.852Q-1.289-53.664-1.037-53.303Q-0.786-52.942-0.786-52.453Q-0.786-52.094-0.940-51.791Q-1.094-51.489-1.346-51.229Q-1.598-50.969-1.948-50.684Q-2.297-50.399-2.465-50.246L-3.395-49.407L-2.680-49.407Q-1.305-49.407-1.266-49.446Q-1.196-49.524-1.153-49.709Q-1.110-49.895-1.067-50.184L-0.786-50.184",[1890],[1874,2075,2076],{"transform":2069},[1879,2077],{"d":2078,"fill":1876,"stroke":1876,"className":2079,"style":1899},"M0.363-48.391Q0.363-48.496 0.476-48.559L4.933-50.719L0.468-52.887Q0.363-52.926 0.363-53.047Q0.363-53.125 0.416-53.178Q0.468-53.231 0.547-53.231Q0.566-53.231 0.629-53.215L5.445-50.887Q5.539-50.832 5.539-50.719Q5.539-50.614 5.437-50.551L0.629-48.223Q0.566-48.207 0.547-48.207Q0.468-48.207 0.416-48.260Q0.363-48.313 0.363-48.391",[1890],[1874,2081,2082],{"transform":2069},[1879,2083],{"d":2084,"fill":1876,"stroke":1876,"className":2085,"style":1899},"M9.857-48.719L7.064-48.719L7.064-49.016Q8.126-49.016 8.126-49.278L8.126-53.446Q7.697-53.231 7.017-53.231L7.017-53.528Q8.036-53.528 8.552-54.039L8.697-54.039Q8.771-54.020 8.790-53.942L8.790-49.278Q8.790-49.016 9.857-49.016L9.857-48.719M12.630-48.551Q11.927-48.551 11.527-48.951Q11.126-49.352 10.982-49.961Q10.837-50.571 10.837-51.270Q10.837-51.793 10.908-52.256Q10.978-52.719 11.171-53.131Q11.365-53.543 11.722-53.791Q12.079-54.039 12.630-54.039Q13.181-54.039 13.538-53.791Q13.896-53.543 14.087-53.133Q14.279-52.723 14.349-52.254Q14.419-51.785 14.419-51.270Q14.419-50.571 14.277-49.963Q14.134-49.356 13.734-48.953Q13.333-48.551 12.630-48.551M12.630-48.809Q13.103-48.809 13.335-49.244Q13.568-49.680 13.622-50.219Q13.677-50.758 13.677-51.399Q13.677-52.395 13.493-53.088Q13.310-53.782 12.630-53.782Q12.263-53.782 12.042-53.543Q11.822-53.305 11.726-52.948Q11.630-52.590 11.605-52.219Q11.579-51.848 11.579-51.399Q11.579-50.758 11.634-50.219Q11.689-49.680 11.921-49.244Q12.154-48.809 12.630-48.809",[1890],[1874,2087,2088,2095,2101],{"stroke":1881,"fontSize":1994},[1874,2089,2091],{"transform":2090},"translate(21.617 53.54)",[1879,2092],{"d":2093,"fill":1876,"stroke":1876,"className":2094,"style":1899},"M-7.856-49.063Q-7.625-48.824-7.078-48.824Q-6.825-48.824-6.602-48.948Q-6.379-49.071-6.209-49.287Q-6.039-49.504-5.946-49.735Q-5.821-50.047-5.782-50.387Q-5.743-50.727-5.743-51.176Q-5.911-50.844-6.194-50.649Q-6.477-50.453-6.817-50.453Q-7.180-50.453-7.493-50.598Q-7.805-50.742-8.028-50.994Q-8.250-51.246-8.373-51.573Q-8.496-51.899-8.496-52.254Q-8.496-52.750-8.254-53.160Q-8.012-53.571-7.594-53.805Q-7.176-54.039-6.680-54.039Q-5.723-54.039-5.342-53.209Q-4.961-52.379-4.961-51.305Q-4.961-50.672-5.211-50.028Q-5.461-49.383-5.944-48.967Q-6.426-48.551-7.078-48.551Q-7.582-48.551-7.932-48.768Q-8.282-48.985-8.282-49.453Q-8.282-49.621-8.168-49.735Q-8.055-49.848-7.887-49.848Q-7.782-49.848-7.690-49.797Q-7.598-49.746-7.547-49.655Q-7.496-49.563-7.496-49.453Q-7.496-49.305-7.598-49.184Q-7.700-49.063-7.856-49.063M-6.778-50.711Q-6.446-50.711-6.213-50.922Q-5.981-51.133-5.869-51.455Q-5.758-51.778-5.758-52.094Q-5.758-52.192-5.770-52.246Q-5.766-52.254-5.762-52.266Q-5.758-52.278-5.758-52.285Q-5.758-52.528-5.801-52.791Q-5.844-53.055-5.946-53.283Q-6.047-53.512-6.229-53.655Q-6.411-53.797-6.680-53.797Q-7.114-53.797-7.340-53.576Q-7.567-53.356-7.639-53.024Q-7.711-52.692-7.711-52.254Q-7.711-51.809-7.655-51.487Q-7.598-51.164-7.393-50.938Q-7.188-50.711-6.778-50.711",[1890],[1874,2096,2097],{"transform":2090},[1879,2098],{"d":2099,"fill":1876,"stroke":1876,"className":2100,"style":1899},"M1.035-48.223L-3.782-50.559Q-3.887-50.598-3.887-50.719Q-3.887-50.824-3.774-50.887L1.035-53.215Q1.082-53.231 1.105-53.231Q1.179-53.231 1.234-53.176Q1.289-53.121 1.289-53.047Q1.289-52.942 1.187-52.879L-3.278-50.719L1.195-48.551Q1.238-48.532 1.263-48.489Q1.289-48.446 1.289-48.391Q1.289-48.317 1.234-48.262Q1.179-48.207 1.105-48.207Q1.082-48.207 1.035-48.223",[1890],[1874,2102,2103],{"transform":2090},[1879,2104],{"d":2105,"fill":1876,"stroke":1876,"className":2106,"style":1899},"M5.607-48.719L2.814-48.719L2.814-49.016Q3.876-49.016 3.876-49.278L3.876-53.446Q3.447-53.231 2.767-53.231L2.767-53.528Q3.786-53.528 4.302-54.039L4.447-54.039Q4.521-54.020 4.540-53.942L4.540-49.278Q4.540-49.016 5.607-49.016L5.607-48.719M8.380-48.551Q7.677-48.551 7.277-48.951Q6.876-49.352 6.732-49.961Q6.587-50.571 6.587-51.270Q6.587-51.793 6.658-52.256Q6.728-52.719 6.921-53.131Q7.115-53.543 7.472-53.791Q7.829-54.039 8.380-54.039Q8.931-54.039 9.288-53.791Q9.646-53.543 9.837-53.133Q10.029-52.723 10.099-52.254Q10.169-51.785 10.169-51.270Q10.169-50.571 10.027-49.963Q9.884-49.356 9.484-48.953Q9.083-48.551 8.380-48.551M8.380-48.809Q8.853-48.809 9.085-49.244Q9.318-49.680 9.372-50.219Q9.427-50.758 9.427-51.399Q9.427-52.395 9.243-53.088Q9.060-53.782 8.380-53.782Q8.013-53.782 7.792-53.543Q7.572-53.305 7.476-52.948Q7.380-52.590 7.355-52.219Q7.329-51.848 7.329-51.399Q7.329-50.758 7.384-50.219Q7.439-49.680 7.671-49.244Q7.904-48.809 8.380-48.809",[1890],[1874,2108,2109,2116,2121],{"stroke":1881,"fontSize":1994},[1874,2110,2112],{"transform":2111},"translate(53.636 53.54)",[1879,2113],{"d":2114,"fill":1876,"stroke":1876,"className":2115,"style":1899},"M-5.254-48.719L-8.047-48.719L-8.047-49.016Q-6.985-49.016-6.985-49.278L-6.985-53.446Q-7.414-53.231-8.094-53.231L-8.094-53.528Q-7.075-53.528-6.559-54.039L-6.414-54.039Q-6.340-54.020-6.321-53.942L-6.321-49.278Q-6.321-49.016-5.254-49.016L-5.254-48.719M-1.008-48.719L-3.801-48.719L-3.801-49.016Q-2.739-49.016-2.739-49.278L-2.739-53.446Q-3.168-53.231-3.848-53.231L-3.848-53.528Q-2.828-53.528-2.313-54.039L-2.168-54.039Q-2.094-54.020-2.075-53.942L-2.075-49.278Q-2.075-49.016-1.008-49.016",[1890],[1874,2117,2118],{"transform":2111},[1879,2119],{"d":2078,"fill":1876,"stroke":1876,"className":2120,"style":1899},[1890],[1874,2122,2123],{"transform":2111},[1879,2124],{"d":2084,"fill":1876,"stroke":1876,"className":2125,"style":1899},[1890],[1874,2127,2128,2134,2139],{"stroke":1881,"fontSize":1994},[1874,2129,2131],{"transform":2130},"translate(89.904 53.54)",[1879,2132],{"d":2093,"fill":1876,"stroke":1876,"className":2133,"style":1899},[1890],[1874,2135,2136],{"transform":2130},[1879,2137],{"d":2099,"fill":1876,"stroke":1876,"className":2138,"style":1899},[1890],[1874,2140,2141],{"transform":2130},[1879,2142],{"d":2105,"fill":1876,"stroke":1876,"className":2143,"style":1899},[1890],[1874,2145,2146],{"fill":1987,"stroke":1987},[1874,2147,2149],{"transform":2148},"translate(129.478 53.793)",[1879,2150],{"d":2151,"fill":1987,"stroke":1987,"className":2152,"style":1899},"M-5.254-48.719L-8.047-48.719L-8.047-49.016Q-6.985-49.016-6.985-49.278L-6.985-53.446Q-7.414-53.231-8.094-53.231L-8.094-53.528Q-7.075-53.528-6.559-54.039L-6.414-54.039Q-6.340-54.020-6.321-53.942L-6.321-49.278Q-6.321-49.016-5.254-49.016L-5.254-48.719M-2.481-48.551Q-3.184-48.551-3.584-48.951Q-3.985-49.352-4.129-49.961Q-4.274-50.571-4.274-51.270Q-4.274-51.793-4.203-52.256Q-4.133-52.719-3.940-53.131Q-3.746-53.543-3.389-53.791Q-3.032-54.039-2.481-54.039Q-1.930-54.039-1.573-53.791Q-1.215-53.543-1.024-53.133Q-0.832-52.723-0.762-52.254Q-0.692-51.785-0.692-51.270Q-0.692-50.571-0.834-49.963Q-0.977-49.356-1.377-48.953Q-1.778-48.551-2.481-48.551M-2.481-48.809Q-2.008-48.809-1.776-49.244Q-1.543-49.680-1.489-50.219Q-1.434-50.758-1.434-51.399Q-1.434-52.395-1.618-53.088Q-1.801-53.782-2.481-53.782Q-2.848-53.782-3.069-53.543Q-3.289-53.305-3.385-52.948Q-3.481-52.590-3.506-52.219Q-3.532-51.848-3.532-51.399Q-3.532-50.758-3.477-50.219Q-3.422-49.680-3.190-49.244Q-2.957-48.809-2.481-48.809",[1890],[1874,2154,2156,2163,2169],{"stroke":1881,"fontFamily":2155,"fontSize":1994},"cmr8",[1874,2157,2159],{"transform":2158},"translate(-53.422 68.586)",[1879,2160],{"d":2161,"fill":1876,"stroke":1876,"className":2162,"style":1899},"M-6.680-48.719L-8.536-48.719L-8.536-49.016Q-8.262-49.016-8.094-49.063Q-7.926-49.110-7.926-49.278L-7.926-51.414Q-7.926-51.629-7.989-51.725Q-8.051-51.821-8.170-51.842Q-8.289-51.864-8.536-51.864L-8.536-52.160L-7.344-52.246L-7.344-51.512Q-7.231-51.727-7.037-51.895Q-6.844-52.063-6.606-52.155Q-6.368-52.246-6.114-52.246Q-5.153-52.246-4.977-51.535Q-4.793-51.864-4.465-52.055Q-4.137-52.246-3.758-52.246Q-2.582-52.246-2.582-51.168L-2.582-49.278Q-2.582-49.110-2.414-49.063Q-2.246-49.016-1.977-49.016L-1.977-48.719L-3.832-48.719L-3.832-49.016Q-3.559-49.016-3.391-49.061Q-3.223-49.106-3.223-49.278L-3.223-51.153Q-3.223-51.539-3.348-51.766Q-3.473-51.992-3.825-51.992Q-4.129-51.992-4.385-51.830Q-4.641-51.668-4.789-51.399Q-4.938-51.129-4.938-50.832L-4.938-49.278Q-4.938-49.110-4.768-49.063Q-4.598-49.016-4.328-49.016L-4.328-48.719L-6.184-48.719L-6.184-49.016Q-5.911-49.016-5.743-49.063Q-5.575-49.110-5.575-49.278L-5.575-51.153Q-5.575-51.539-5.700-51.766Q-5.825-51.992-6.176-51.992Q-6.481-51.992-6.737-51.830Q-6.993-51.668-7.141-51.399Q-7.289-51.129-7.289-50.832L-7.289-49.278Q-7.289-49.110-7.119-49.063Q-6.950-49.016-6.680-49.016L-6.680-48.719M-1.532-50.414Q-1.532-50.918-1.276-51.350Q-1.020-51.782-0.584-52.033Q-0.149-52.285 0.351-52.285Q0.738-52.285 1.080-52.141Q1.422-51.996 1.683-51.735Q1.945-51.473 2.088-51.137Q2.230-50.801 2.230-50.414Q2.230-49.922 1.966-49.512Q1.703-49.102 1.273-48.871Q0.843-48.641 0.351-48.641Q-0.141-48.641-0.575-48.873Q-1.008-49.106-1.270-49.514Q-1.532-49.922-1.532-50.414M0.351-48.918Q0.808-48.918 1.060-49.141Q1.312-49.364 1.400-49.715Q1.488-50.067 1.488-50.512Q1.488-50.942 1.394-51.280Q1.300-51.617 1.047-51.824Q0.793-52.032 0.351-52.032Q-0.297-52.032-0.541-51.615Q-0.786-51.199-0.786-50.512Q-0.786-50.067-0.698-49.715Q-0.610-49.364-0.358-49.141Q-0.106-48.918 0.351-48.918",[1890],[1874,2164,2165],{"transform":2158},[1879,2166],{"d":2167,"fill":1876,"stroke":1876,"className":2168,"style":1899},"M4.288-48.750L3.065-51.606Q2.983-51.782 2.839-51.826Q2.694-51.871 2.425-51.871L2.425-52.168L4.136-52.168L4.136-51.871Q3.714-51.871 3.714-51.688Q3.714-51.653 3.729-51.606L4.675-49.414L5.515-51.391Q5.554-51.469 5.554-51.559Q5.554-51.699 5.448-51.785Q5.343-51.871 5.202-51.871L5.202-52.168L6.554-52.168L6.554-51.871Q6.030-51.871 5.815-51.391L4.690-48.750Q4.628-48.641 4.522-48.641L4.456-48.641Q4.343-48.641 4.288-48.750",[1890],[1874,2170,2171],{"transform":2158},[1879,2172],{"d":2173,"fill":1876,"stroke":1876,"className":2174,"style":1899},"M6.737-50.473Q6.737-50.953 6.970-51.369Q7.202-51.785 7.612-52.035Q8.022-52.285 8.499-52.285Q9.229-52.285 9.628-51.844Q10.026-51.403 10.026-50.672Q10.026-50.567 9.933-50.543L7.483-50.543L7.483-50.473Q7.483-50.063 7.604-49.707Q7.726-49.352 7.997-49.135Q8.269-48.918 8.698-48.918Q9.061-48.918 9.358-49.147Q9.655-49.375 9.757-49.727Q9.765-49.774 9.851-49.789L9.933-49.789Q10.026-49.762 10.026-49.680Q10.026-49.672 10.019-49.641Q9.956-49.414 9.817-49.231Q9.679-49.047 9.487-48.914Q9.296-48.782 9.077-48.711Q8.858-48.641 8.620-48.641Q8.249-48.641 7.911-48.778Q7.573-48.914 7.306-49.166Q7.038-49.418 6.888-49.758Q6.737-50.098 6.737-50.473M7.491-50.782L9.452-50.782Q9.452-51.086 9.351-51.377Q9.249-51.668 9.032-51.850Q8.815-52.032 8.499-52.032Q8.198-52.032 7.968-51.844Q7.737-51.657 7.614-51.365Q7.491-51.074 7.491-50.782M10.995-49.184Q10.995-49.367 11.132-49.504Q11.269-49.641 11.460-49.641Q11.651-49.641 11.784-49.508Q11.917-49.375 11.917-49.184Q11.917-48.985 11.784-48.852Q11.651-48.719 11.460-48.719Q11.269-48.719 11.132-48.856Q10.995-48.992 10.995-49.184M10.995-51.711Q10.995-51.895 11.132-52.032Q11.269-52.168 11.460-52.168Q11.651-52.168 11.784-52.035Q11.917-51.903 11.917-51.711Q11.917-51.512 11.784-51.379Q11.651-51.246 11.460-51.246Q11.269-51.246 11.132-51.383Q10.995-51.520 10.995-51.711",[1890],[1874,2176,2177],{"fill":1987,"stroke":1987},[1874,2178,2179,2186,2192],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,2180,2182],{"transform":2181},"translate(-11.493 68.864)",[1879,2183],{"d":2184,"fill":1987,"stroke":1987,"className":2185,"style":1899},"M-8.153-48.895Q-8.149-48.914-8.147-48.928Q-8.145-48.942-8.145-48.965L-7.551-51.336Q-7.512-51.492-7.512-51.629Q-7.512-51.778-7.565-51.885Q-7.618-51.992-7.750-51.992Q-7.930-51.992-8.049-51.823Q-8.168-51.653-8.225-51.467Q-8.282-51.282-8.352-50.992Q-8.364-50.918-8.434-50.918L-8.536-50.918Q-8.571-50.918-8.598-50.953Q-8.625-50.989-8.625-51.016L-8.625-51.047Q-8.539-51.379-8.446-51.621Q-8.352-51.864-8.176-52.055Q-8-52.246-7.735-52.246Q-7.450-52.246-7.217-52.098Q-6.985-51.949-6.918-51.696Q-6.711-51.949-6.442-52.098Q-6.172-52.246-5.856-52.246Q-5.676-52.246-5.520-52.174Q-5.364-52.102-5.270-51.965Q-5.176-51.828-5.176-51.649Q-5.176-51.434-5.309-51.276Q-5.442-51.117-5.649-51.117Q-5.782-51.117-5.875-51.201Q-5.969-51.285-5.969-51.422Q-5.969-51.598-5.848-51.731Q-5.727-51.864-5.559-51.887Q-5.692-51.992-5.871-51.992Q-6.219-51.992-6.489-51.756Q-6.758-51.520-6.953-51.160L-7.512-48.926Q-7.543-48.801-7.649-48.721Q-7.754-48.641-7.879-48.641Q-7.989-48.641-8.071-48.711Q-8.153-48.782-8.153-48.895",[1890],[1874,2187,2188],{"transform":2181},[1879,2189],{"d":2190,"fill":1987,"stroke":1987,"className":2191,"style":1899},"M0.943-50.535L-3.889-50.535Q-3.963-50.547-4.014-50.596Q-4.065-50.645-4.065-50.719Q-4.065-50.871-3.889-50.903L0.943-50.903Q1.111-50.875 1.111-50.719Q1.111-50.563 0.943-50.535",[1890],[1874,2193,2194],{"transform":2181},[1879,2195],{"d":2196,"fill":1987,"stroke":1987,"className":2197,"style":1899},"M7.554-50.535L2.722-50.535Q2.648-50.547 2.597-50.596Q2.546-50.645 2.546-50.719Q2.546-50.871 2.722-50.903L7.554-50.903Q7.722-50.875 7.722-50.719Q7.722-50.563 7.554-50.535",[1890],[1874,2199,2200],{"fill":1987,"stroke":1987},[1874,2201,2202,2209,2215],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,2203,2205],{"transform":2204},"translate(23.371 69.225)",[1879,2206],{"d":2207,"fill":1987,"stroke":1987,"className":2208,"style":1899},"M-8.504-49.391Q-8.504-49.496-8.481-49.590L-7.489-53.567Q-7.450-53.754-7.450-53.782Q-7.450-53.887-7.946-53.887Q-8.039-53.918-8.039-54.016L-8.016-54.117Q-8.008-54.164-7.926-54.184L-6.825-54.270Q-6.782-54.270-6.743-54.239Q-6.703-54.207-6.703-54.153L-7.856-49.551Q-7.895-49.305-7.895-49.254Q-7.895-48.895-7.649-48.895Q-7.473-48.895-7.358-49.065Q-7.243-49.235-7.188-49.420Q-7.133-49.606-7.063-49.895Q-7.036-49.965-6.977-49.965L-6.871-49.965Q-6.832-49.965-6.809-49.936Q-6.786-49.907-6.786-49.871Q-6.786-49.856-6.793-49.840Q-6.911-49.332-7.102-48.987Q-7.293-48.641-7.664-48.641Q-8.008-48.641-8.256-48.848Q-8.504-49.055-8.504-49.391",[1890],[1874,2210,2211],{"transform":2204},[1879,2212],{"d":2213,"fill":1987,"stroke":1987,"className":2214,"style":1899},"M-3.095-50.535L-5.568-50.535Q-5.646-50.547-5.695-50.596Q-5.743-50.645-5.743-50.719Q-5.743-50.793-5.695-50.842Q-5.646-50.891-5.568-50.903L-3.095-50.903L-3.095-53.383Q-3.068-53.551-2.911-53.551Q-2.837-53.551-2.788-53.502Q-2.739-53.453-2.728-53.383L-2.728-50.903L-0.255-50.903Q-0.087-50.871-0.087-50.719Q-0.087-50.567-0.255-50.535L-2.728-50.535L-2.728-48.055Q-2.739-47.985-2.788-47.936Q-2.837-47.887-2.911-47.887Q-3.068-47.887-3.095-48.055",[1890],[1874,2216,2217],{"transform":2204},[1879,2218],{"d":2219,"fill":1987,"stroke":1987,"className":2220,"style":1899},"M3.516-50.535L1.043-50.535Q0.965-50.547 0.916-50.596Q0.868-50.645 0.868-50.719Q0.868-50.793 0.916-50.842Q0.965-50.891 1.043-50.903L3.516-50.903L3.516-53.383Q3.543-53.551 3.700-53.551Q3.774-53.551 3.823-53.502Q3.872-53.453 3.883-53.383L3.883-50.903L6.356-50.903Q6.524-50.871 6.524-50.719Q6.524-50.567 6.356-50.535L3.883-50.535L3.883-48.055Q3.872-47.985 3.823-47.936Q3.774-47.887 3.700-47.887Q3.543-47.887 3.516-48.055",[1890],[1874,2222,2223],{"fill":1987,"stroke":1987},[1874,2224,2225,2231,2236],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,2226,2228],{"transform":2227},"translate(56.794 68.864)",[1879,2229],{"d":2184,"fill":1987,"stroke":1987,"className":2230,"style":1899},[1890],[1874,2232,2233],{"transform":2227},[1879,2234],{"d":2190,"fill":1987,"stroke":1987,"className":2235,"style":1899},[1890],[1874,2237,2238],{"transform":2227},[1879,2239],{"d":2196,"fill":1987,"stroke":1987,"className":2240,"style":1899},[1890],[1874,2242,2243],{"fill":1987,"stroke":1987},[1874,2244,2245,2251,2256],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,2246,2248],{"transform":2247},"translate(91.657 69.225)",[1879,2249],{"d":2207,"fill":1987,"stroke":1987,"className":2250,"style":1899},[1890],[1874,2252,2253],{"transform":2247},[1879,2254],{"d":2213,"fill":1987,"stroke":1987,"className":2255,"style":1899},[1890],[1874,2257,2258],{"transform":2247},[1879,2259],{"d":2219,"fill":1987,"stroke":1987,"className":2260,"style":1899},[1890],[1874,2262,2263],{"fill":1987,"stroke":1987},[1874,2264,2266],{"transform":2265},"translate(124.992 69.642)",[1879,2267],{"d":2268,"fill":1987,"stroke":1987,"className":2269,"style":1899},"M-6.793-48.641Q-7.274-48.641-7.682-48.885Q-8.090-49.129-8.328-49.543Q-8.567-49.957-8.567-50.446Q-8.567-50.938-8.309-51.354Q-8.051-51.770-7.619-52.008Q-7.188-52.246-6.696-52.246Q-6.075-52.246-5.625-51.809L-5.625-53.438Q-5.625-53.653-5.688-53.748Q-5.750-53.844-5.868-53.865Q-5.985-53.887-6.231-53.887L-6.231-54.184L-5.008-54.270L-5.008-49.461Q-5.008-49.250-4.946-49.155Q-4.883-49.059-4.766-49.037Q-4.649-49.016-4.399-49.016L-4.399-48.719L-5.649-48.641L-5.649-49.125Q-6.114-48.641-6.793-48.641M-6.727-48.895Q-6.387-48.895-6.094-49.086Q-5.801-49.278-5.649-49.574L-5.649-51.407Q-5.797-51.680-6.059-51.836Q-6.321-51.992-6.633-51.992Q-7.258-51.992-7.541-51.545Q-7.825-51.098-7.825-50.438Q-7.825-49.793-7.573-49.344Q-7.321-48.895-6.727-48.895M-3.891-50.414Q-3.891-50.918-3.635-51.350Q-3.379-51.782-2.944-52.033Q-2.508-52.285-2.008-52.285Q-1.621-52.285-1.280-52.141Q-0.938-51.996-0.676-51.735Q-0.414-51.473-0.272-51.137Q-0.129-50.801-0.129-50.414Q-0.129-49.922-0.393-49.512Q-0.657-49.102-1.086-48.871Q-1.516-48.641-2.008-48.641Q-2.500-48.641-2.934-48.873Q-3.368-49.106-3.629-49.514Q-3.891-49.922-3.891-50.414M-2.008-48.918Q-1.551-48.918-1.299-49.141Q-1.047-49.364-0.959-49.715Q-0.871-50.067-0.871-50.512Q-0.871-50.942-0.965-51.280Q-1.059-51.617-1.313-51.824Q-1.567-52.032-2.008-52.032Q-2.657-52.032-2.901-51.615Q-3.145-51.199-3.145-50.512Q-3.145-50.067-3.057-49.715Q-2.969-49.364-2.717-49.141Q-2.465-48.918-2.008-48.918M2.285-48.719L0.429-48.719L0.429-49.016Q0.703-49.016 0.871-49.063Q1.039-49.110 1.039-49.278L1.039-51.414Q1.039-51.629 0.976-51.725Q0.914-51.821 0.795-51.842Q0.675-51.864 0.429-51.864L0.429-52.160L1.621-52.246L1.621-51.512Q1.734-51.727 1.927-51.895Q2.121-52.063 2.359-52.155Q2.597-52.246 2.851-52.246Q4.019-52.246 4.019-51.168L4.019-49.278Q4.019-49.110 4.189-49.063Q4.359-49.016 4.629-49.016L4.629-48.719L2.773-48.719L2.773-49.016Q3.047-49.016 3.214-49.063Q3.382-49.110 3.382-49.278L3.382-51.153Q3.382-51.535 3.261-51.764Q3.140-51.992 2.789-51.992Q2.476-51.992 2.222-51.830Q1.968-51.668 1.822-51.399Q1.675-51.129 1.675-50.832L1.675-49.278Q1.675-49.110 1.845-49.063Q2.015-49.016 2.285-49.016L2.285-48.719M5.074-50.473Q5.074-50.953 5.306-51.369Q5.539-51.785 5.949-52.035Q6.359-52.285 6.836-52.285Q7.566-52.285 7.964-51.844Q8.363-51.403 8.363-50.672Q8.363-50.567 8.269-50.543L5.820-50.543L5.820-50.473Q5.820-50.063 5.941-49.707Q6.062-49.352 6.334-49.135Q6.605-48.918 7.035-48.918Q7.398-48.918 7.695-49.147Q7.992-49.375 8.093-49.727Q8.101-49.774 8.187-49.789L8.269-49.789Q8.363-49.762 8.363-49.680Q8.363-49.672 8.355-49.641Q8.293-49.414 8.154-49.231Q8.015-49.047 7.824-48.914Q7.632-48.782 7.414-48.711Q7.195-48.641 6.957-48.641Q6.586-48.641 6.248-48.778Q5.910-48.914 5.642-49.166Q5.375-49.418 5.224-49.758Q5.074-50.098 5.074-50.473M5.828-50.782L7.789-50.782Q7.789-51.086 7.687-51.377Q7.586-51.668 7.369-51.850Q7.152-52.032 6.836-52.032Q6.535-52.032 6.304-51.844Q6.074-51.657 5.951-51.365Q5.828-51.074 5.828-50.782",[1890],[2271,2272,2275,2276,2348,2349,2383,2384,2453,2454,2469,2470,2539],"figcaption",{"className":2273},[2274],"tikz-cap","Converging pointers on sorted ",[389,2277,2279],{"className":2278},[392],[389,2280,2282],{"className":2281,"ariaHidden":397},[396],[389,2283,2285,2288,2292,2295,2298,2301,2305,2308,2311,2315,2318,2321,2325,2328,2331,2334,2337,2340,2344],{"className":2284},[401],[389,2286],{"className":2287,"style":487},[405],[389,2289,2291],{"className":2290},[415],"⟨",[389,2293,499],{"className":2294},[410],[389,2296,971],{"className":2297},[970],[389,2299],{"className":2300,"style":586},[585],[389,2302,2304],{"className":2303},[410],"3",[389,2306,971],{"className":2307},[970],[389,2309],{"className":2310,"style":586},[585],[389,2312,2314],{"className":2313},[410],"4",[389,2316,971],{"className":2317},[970],[389,2319],{"className":2320,"style":586},[585],[389,2322,2324],{"className":2323},[410],"6",[389,2326,971],{"className":2327},[970],[389,2329],{"className":2330,"style":586},[585],[389,2332,1994],{"className":2333},[410],[389,2335,971],{"className":2336},[970],[389,2338],{"className":2339,"style":586},[585],[389,2341,2343],{"className":2342},[410],"11",[389,2345,2347],{"className":2346},[464],"⟩",", target ",[389,2350,2352],{"className":2351},[392],[389,2353,2355,2373],{"className":2354,"ariaHidden":397},[396],[389,2356,2358,2361,2364,2367,2370],{"className":2357},[401],[389,2359],{"className":2360,"style":734},[405],[389,2362,739],{"className":2363,"style":738},[410,423],[389,2365],{"className":2366,"style":645},[585],[389,2368,724],{"className":2369},[649],[389,2371],{"className":2372,"style":645},[585],[389,2374,2376,2379],{"className":2375},[401],[389,2377],{"className":2378,"style":880},[405],[389,2380,2382],{"className":2381},[410],"10",". Each step compares ",[389,2385,2387],{"className":2386},[392],[389,2388,2390,2408,2435],{"className":2389,"ariaHidden":397},[396],[389,2391,2393,2396,2399,2402,2405],{"className":2392},[401],[389,2394],{"className":2395,"style":660},[405],[389,2397,1102],{"className":2398},[410,423],[389,2400],{"className":2401,"style":645},[585],[389,2403,724],{"className":2404},[649],[389,2406],{"className":2407,"style":645},[585],[389,2409,2411,2414,2417,2420,2423,2426,2429,2432],{"className":2410},[401],[389,2412],{"className":2413,"style":487},[405],[389,2415,533],{"className":2416},[410,423],[389,2418,577],{"className":2419},[415],[389,2421,641],{"className":2422,"style":640},[410,423],[389,2424,622],{"className":2425},[464],[389,2427],{"className":2428,"style":601},[585],[389,2430,696],{"className":2431},[605],[389,2433],{"className":2434,"style":601},[585],[389,2436,2438,2441,2444,2447,2450],{"className":2437},[401],[389,2439],{"className":2440,"style":487},[405],[389,2442,533],{"className":2443},[410,423],[389,2445,577],{"className":2446},[415],[389,2448,664],{"className":2449,"style":491},[410,423],[389,2451,622],{"className":2452},[464]," to ",[389,2455,2457],{"className":2456},[392],[389,2458,2460],{"className":2459,"ariaHidden":397},[396],[389,2461,2463,2466],{"className":2462},[401],[389,2464],{"className":2465,"style":734},[405],[389,2467,739],{"className":2468,"style":738},[410,423]," and discards one end; the pair ",[389,2471,2473],{"className":2472},[392],[389,2474,2476,2503,2530],{"className":2475,"ariaHidden":397},[396],[389,2477,2479,2482,2485,2488,2491,2494,2497,2500],{"className":2478},[401],[389,2480],{"className":2481,"style":487},[405],[389,2483,533],{"className":2484},[410,423],[389,2486,577],{"className":2487},[415],[389,2489,460],{"className":2490},[410],[389,2492,622],{"className":2493},[464],[389,2495],{"className":2496,"style":601},[585],[389,2498,696],{"className":2499},[605],[389,2501],{"className":2502,"style":601},[585],[389,2504,2506,2509,2512,2515,2518,2521,2524,2527],{"className":2505},[401],[389,2507],{"className":2508,"style":487},[405],[389,2510,533],{"className":2511},[410,423],[389,2513,577],{"className":2514},[415],[389,2516,2304],{"className":2517},[410],[389,2519,622],{"className":2520},[464],[389,2522],{"className":2523,"style":645},[585],[389,2525,724],{"className":2526},[649],[389,2528],{"className":2529,"style":645},[585],[389,2531,2533,2536],{"className":2532},[401],[389,2534],{"className":2535,"style":880},[405],[389,2537,2382],{"className":2538},[410]," is found in five steps",[381,2541,2542,2543,2576,2577,2610,2611,2635,2636,2660,2661,2664,2665,2667,2668,2711],{},"The pointers start ",[389,2544,2546],{"className":2545},[392],[389,2547,2549,2567],{"className":2548,"ariaHidden":397},[396],[389,2550,2552,2555,2558,2561,2564],{"className":2551},[401],[389,2553],{"className":2554,"style":915},[405],[389,2556,424],{"className":2557},[410,423],[389,2559],{"className":2560,"style":601},[585],[389,2562,606],{"className":2563},[605],[389,2565],{"className":2566,"style":601},[585],[389,2568,2570,2573],{"className":2569},[401],[389,2571],{"className":2572,"style":880},[405],[389,2574,499],{"className":2575},[410]," apart and each step closes the gap by one, so the loop\nruns at most ",[389,2578,2580],{"className":2579},[392],[389,2581,2583,2601],{"className":2582,"ariaHidden":397},[396],[389,2584,2586,2589,2592,2595,2598],{"className":2585},[401],[389,2587],{"className":2588,"style":915},[405],[389,2590,424],{"className":2591},[410,423],[389,2593],{"className":2594,"style":601},[585],[389,2596,606],{"className":2597},[605],[389,2599],{"className":2600,"style":601},[585],[389,2602,2604,2607],{"className":2603},[401],[389,2605],{"className":2606,"style":880},[405],[389,2608,499],{"className":2609},[410]," times: ",[389,2612,2614],{"className":2613},[392],[389,2615,2617],{"className":2616,"ariaHidden":397},[396],[389,2618,2620,2623,2626,2629,2632],{"className":2619},[401],[389,2621],{"className":2622,"style":487},[405],[389,2624,492],{"className":2625,"style":491},[410,423],[389,2627,416],{"className":2628},[415],[389,2630,424],{"className":2631},[410,423],[389,2633,465],{"className":2634},[464]," time, ",[389,2637,2639],{"className":2638},[392],[389,2640,2642],{"className":2641,"ariaHidden":397},[396],[389,2643,2645,2648,2651,2654,2657],{"className":2644},[401],[389,2646],{"className":2647,"style":487},[405],[389,2649,492],{"className":2650,"style":491},[410,423],[389,2652,416],{"className":2653},[415],[389,2655,499],{"className":2656},[410],[389,2658,465],{"className":2659},[464]," space. This is exactly ",[385,2662,2663],{},"Two Sum\nII"," on a sorted input, and the reason ",[533,2666,52],{"href":56}," first (",[389,2669,2671],{"className":2670},[392],[389,2672,2674],{"className":2673,"ariaHidden":397},[396],[389,2675,2677,2680,2683,2686,2689,2692,2702,2705,2708],{"className":2676},[401],[389,2678],{"className":2679,"style":487},[405],[389,2681,492],{"className":2682,"style":491},[410,423],[389,2684,416],{"className":2685},[415],[389,2687,424],{"className":2688},[410,423],[389,2690],{"className":2691,"style":586},[585],[389,2693,2696],{"className":2694},[2695],"mop",[389,2697,2701],{"className":2698,"style":2700},[410,2699],"mathrm","margin-right:0.0139em;","log",[389,2703],{"className":2704,"style":586},[585],[389,2706,424],{"className":2707},[410,423],[389,2709,465],{"className":2710},[464],") can beat a\nhash table when the array is already sorted or space is tight.",[381,2713,2714,2715,2718,2719,2773,2774,884,2789,2804,2805,2901,2902,2905,2906,528],{},"The same converging-pointers move solves ",[385,2716,2717],{},"Container With Most Water",": with\nheights ",[389,2720,2722],{"className":2721},[392],[389,2723,2725,2761],{"className":2724,"ariaHidden":397},[396],[389,2726,2728,2731,2734,2737,2740,2743,2746,2749,2752,2755,2758],{"className":2727},[401],[389,2729],{"className":2730,"style":487},[405],[389,2732,533],{"className":2733},[410,423],[389,2735,577],{"className":2736},[415],[389,2738,581],{"className":2739},[410],[389,2741],{"className":2742,"style":586},[585],[389,2744,591],{"className":2745},[590],[389,2747],{"className":2748,"style":586},[585],[389,2750,424],{"className":2751},[410,423],[389,2753],{"className":2754,"style":601},[585],[389,2756,606],{"className":2757},[605],[389,2759],{"className":2760,"style":601},[585],[389,2762,2764,2767,2770],{"className":2763},[401],[389,2765],{"className":2766,"style":487},[405],[389,2768,499],{"className":2769},[410],[389,2771,622],{"className":2772},[464],", the area between walls ",[389,2775,2777],{"className":2776},[392],[389,2778,2780],{"className":2779,"ariaHidden":397},[396],[389,2781,2783,2786],{"className":2782},[401],[389,2784],{"className":2785,"style":861},[405],[389,2787,641],{"className":2788,"style":640},[410,423],[389,2790,2792],{"className":2791},[392],[389,2793,2795],{"className":2794,"ariaHidden":397},[396],[389,2796,2798,2801],{"className":2797},[401],[389,2799],{"className":2800,"style":660},[405],[389,2802,664],{"className":2803,"style":491},[410,423]," is\n",[389,2806,2808],{"className":2807},[392],[389,2809,2811,2832,2854],{"className":2810,"ariaHidden":397},[396],[389,2812,2814,2817,2820,2823,2826,2829],{"className":2813},[401],[389,2815],{"className":2816,"style":487},[405],[389,2818,416],{"className":2819},[415],[389,2821,664],{"className":2822,"style":491},[410,423],[389,2824],{"className":2825,"style":601},[585],[389,2827,606],{"className":2828},[605],[389,2830],{"className":2831,"style":601},[585],[389,2833,2835,2838,2841,2844,2847,2851],{"className":2834},[401],[389,2836],{"className":2837,"style":487},[405],[389,2839,641],{"className":2840,"style":640},[410,423],[389,2842,465],{"className":2843},[464],[389,2845],{"className":2846,"style":601},[585],[389,2848,2850],{"className":2849},[605],"⋅",[389,2852],{"className":2853,"style":601},[585],[389,2855,2857,2860,2867,2870,2873,2876,2879,2882,2885,2888,2891,2894,2897],{"className":2856},[401],[389,2858],{"className":2859,"style":487},[405],[389,2861,2863],{"className":2862},[2695],[389,2864,2866],{"className":2865},[410,2699],"min",[389,2868,416],{"className":2869},[415],[389,2871,533],{"className":2872},[410,423],[389,2874,577],{"className":2875},[415],[389,2877,641],{"className":2878,"style":640},[410,423],[389,2880,622],{"className":2881},[464],[389,2883,971],{"className":2884},[970],[389,2886],{"className":2887,"style":586},[585],[389,2889,533],{"className":2890},[410,423],[389,2892,577],{"className":2893},[415],[389,2895,664],{"className":2896,"style":491},[410,423],[389,2898,2900],{"className":2899},[464],"])",". We start at the widest pair and always advance the\npointer at the ",[1253,2903,2904],{},"shorter"," wall. Moving the taller one can only shrink the width\nwithout ever raising the binding height, so it can never improve on the current\nbest. The shorter wall, by contrast, might be replaced by a taller one. One pass,\n",[389,2907,2909],{"className":2908},[392],[389,2910,2912],{"className":2911,"ariaHidden":397},[396],[389,2913,2915,2918,2921,2924,2927],{"className":2914},[401],[389,2916],{"className":2917,"style":487},[405],[389,2919,492],{"className":2920,"style":491},[410,423],[389,2922,416],{"className":2923},[415],[389,2925,424],{"className":2926},[410,423],[389,2928,465],{"className":2929},[464],[1861,2931,2933,3169],{"className":2932},[1864,1865],[1867,2934,2938],{"xmlns":1869,"width":2935,"height":2936,"viewBox":2937},"327.973","209.066","-75 -75 245.979 156.799",[1874,2939,2940,2945,2954,2957,2966,2969,2978,2981,2990,2993,3002,3005,3014,3018,3021,3030,3039,3089,3161],{"stroke":1876,"style":1877},[1879,2941],{"fill":1881,"stroke":2942,"d":2943,"style":2944},"var(--tk-line)","M-48.532 52.922V14.51","stroke-width:.8",[1874,2946,2947],{"fill":2942,"stroke":2942},[1874,2948,2950],{"transform":2949},"translate(-2.125 12.536)",[1879,2951],{"d":2952,"fill":2942,"stroke":2942,"className":2953,"style":1899},"M-46.411 53.090Q-47.114 53.090-47.514 52.690Q-47.915 52.289-48.059 51.680Q-48.204 51.070-48.204 50.371Q-48.204 49.848-48.134 49.385Q-48.063 48.922-47.870 48.510Q-47.677 48.098-47.319 47.850Q-46.962 47.602-46.411 47.602Q-45.860 47.602-45.503 47.850Q-45.145 48.098-44.954 48.508Q-44.762 48.918-44.692 49.387Q-44.622 49.856-44.622 50.371Q-44.622 51.070-44.764 51.678Q-44.907 52.285-45.307 52.688Q-45.708 53.090-46.411 53.090M-46.411 52.832Q-45.938 52.832-45.706 52.397Q-45.473 51.961-45.419 51.422Q-45.364 50.883-45.364 50.242Q-45.364 49.246-45.548 48.553Q-45.731 47.859-46.411 47.859Q-46.778 47.859-46.999 48.098Q-47.219 48.336-47.315 48.693Q-47.411 49.051-47.436 49.422Q-47.462 49.793-47.462 50.242Q-47.462 50.883-47.407 51.422Q-47.352 51.961-47.120 52.397Q-46.887 52.832-46.411 52.832",[1890],[1879,2955],{"fill":1881,"stroke":2942,"d":2956,"style":2944},"M-11.543 52.922v-89.626",[1874,2958,2959],{"fill":2942,"stroke":2942},[1874,2960,2962],{"transform":2961},"translate(34.864 12.536)",[1879,2963],{"d":2964,"fill":2942,"stroke":2942,"className":2965,"style":1899},"M-44.938 52.922L-47.731 52.922L-47.731 52.625Q-46.669 52.625-46.669 52.363L-46.669 48.195Q-47.098 48.410-47.778 48.410L-47.778 48.113Q-46.759 48.113-46.243 47.602L-46.098 47.602Q-46.024 47.621-46.005 47.699L-46.005 52.363Q-46.005 52.625-44.938 52.625",[1890],[1879,2967],{"fill":1881,"stroke":2942,"d":2968,"style":2944},"M25.446 52.922V27.315",[1874,2970,2971],{"fill":2942,"stroke":2942},[1874,2972,2974],{"transform":2973},"translate(71.852 12.536)",[1879,2975],{"d":2976,"fill":2942,"stroke":2942,"className":2977,"style":1899},"M-44.946 52.922L-48.106 52.922L-48.106 52.715Q-48.106 52.688-48.083 52.656L-46.731 51.258Q-46.352 50.871-46.104 50.582Q-45.856 50.293-45.682 49.936Q-45.509 49.578-45.509 49.188Q-45.509 48.840-45.641 48.547Q-45.774 48.254-46.028 48.076Q-46.282 47.899-46.637 47.899Q-46.997 47.899-47.288 48.094Q-47.579 48.289-47.723 48.617L-47.669 48.617Q-47.485 48.617-47.360 48.738Q-47.235 48.859-47.235 49.051Q-47.235 49.231-47.360 49.359Q-47.485 49.488-47.669 49.488Q-47.848 49.488-47.977 49.359Q-48.106 49.231-48.106 49.051Q-48.106 48.649-47.886 48.313Q-47.665 47.977-47.300 47.789Q-46.934 47.602-46.532 47.602Q-46.052 47.602-45.636 47.789Q-45.219 47.977-44.968 48.338Q-44.716 48.699-44.716 49.188Q-44.716 49.547-44.870 49.850Q-45.024 50.152-45.276 50.412Q-45.528 50.672-45.878 50.957Q-46.227 51.242-46.395 51.395L-47.325 52.234L-46.610 52.234Q-45.235 52.234-45.196 52.195Q-45.126 52.117-45.083 51.932Q-45.040 51.746-44.997 51.457L-44.716 51.457",[1890],[1879,2979],{"fill":1881,"stroke":2942,"d":2980,"style":2944},"M62.434 52.922v-64.018",[1874,2982,2983],{"fill":2942,"stroke":2942},[1874,2984,2986],{"transform":2985},"translate(108.84 12.536)",[1879,2987],{"d":2988,"fill":2942,"stroke":2942,"className":2989,"style":1899},"M-47.739 52.289Q-47.548 52.563-47.192 52.690Q-46.837 52.817-46.454 52.817Q-46.118 52.817-45.909 52.631Q-45.700 52.445-45.604 52.152Q-45.509 51.859-45.509 51.547Q-45.509 51.223-45.606 50.928Q-45.704 50.633-45.917 50.449Q-46.130 50.266-46.462 50.266L-47.028 50.266Q-47.059 50.266-47.089 50.236Q-47.118 50.207-47.118 50.180L-47.118 50.098Q-47.118 50.063-47.089 50.037Q-47.059 50.012-47.028 50.012L-46.548 49.977Q-46.262 49.977-46.065 49.772Q-45.868 49.567-45.772 49.272Q-45.677 48.977-45.677 48.699Q-45.677 48.320-45.876 48.082Q-46.075 47.844-46.454 47.844Q-46.774 47.844-47.063 47.951Q-47.352 48.059-47.516 48.281Q-47.337 48.281-47.214 48.408Q-47.091 48.535-47.091 48.707Q-47.091 48.879-47.216 49.004Q-47.341 49.129-47.516 49.129Q-47.688 49.129-47.813 49.004Q-47.938 48.879-47.938 48.707Q-47.938 48.340-47.714 48.092Q-47.489 47.844-47.149 47.723Q-46.809 47.602-46.454 47.602Q-46.106 47.602-45.743 47.723Q-45.380 47.844-45.132 48.094Q-44.884 48.344-44.884 48.699Q-44.884 49.184-45.202 49.567Q-45.520 49.949-45.997 50.121Q-45.446 50.231-45.046 50.617Q-44.645 51.004-44.645 51.539Q-44.645 51.996-44.909 52.352Q-45.173 52.707-45.594 52.899Q-46.016 53.090-46.454 53.090Q-46.864 53.090-47.257 52.955Q-47.649 52.820-47.915 52.535Q-48.180 52.250-48.180 51.832Q-48.180 51.637-48.048 51.508Q-47.915 51.379-47.723 51.379Q-47.598 51.379-47.495 51.438Q-47.391 51.496-47.329 51.602Q-47.266 51.707-47.266 51.832Q-47.266 52.027-47.401 52.158Q-47.536 52.289-47.739 52.289",[1890],[1879,2991],{"fill":1881,"stroke":2942,"d":2992,"style":2944},"M99.423 52.922v-102.43",[1874,2994,2995],{"fill":2942,"stroke":2942},[1874,2996,2998],{"transform":2997},"translate(145.83 12.536)",[1879,2999],{"d":3000,"fill":2942,"stroke":2942,"className":3001,"style":1899},"M-46.052 51.609L-48.294 51.609L-48.294 51.313L-45.723 47.656Q-45.684 47.602-45.622 47.602L-45.477 47.602Q-45.427 47.602-45.395 47.633Q-45.364 47.664-45.364 47.715L-45.364 51.313L-44.532 51.313L-44.532 51.609L-45.364 51.609L-45.364 52.363Q-45.364 52.625-44.540 52.625L-44.540 52.922L-46.876 52.922L-46.876 52.625Q-46.052 52.625-46.052 52.363L-46.052 51.609M-45.997 48.508L-47.966 51.313L-45.997 51.313",[1890],[1879,3003],{"fill":1881,"stroke":2942,"d":3004,"style":2944},"M136.412 52.922V1.707",[1874,3006,3007],{"fill":2942,"stroke":2942},[1874,3008,3010],{"transform":3009},"translate(182.818 12.536)",[1879,3011],{"d":3012,"fill":2942,"stroke":2942,"className":3013,"style":1899},"M-47.692 52.043L-47.755 52.043Q-47.614 52.395-47.290 52.606Q-46.966 52.817-46.579 52.817Q-45.985 52.817-45.735 52.383Q-45.485 51.949-45.485 51.313Q-45.485 50.719-45.655 50.272Q-45.825 49.824-46.325 49.824Q-46.622 49.824-46.827 49.904Q-47.032 49.984-47.134 50.076Q-47.235 50.168-47.350 50.301Q-47.466 50.434-47.516 50.449L-47.587 50.449Q-47.673 50.426-47.692 50.348L-47.692 47.699Q-47.661 47.602-47.587 47.602Q-47.571 47.602-47.563 47.604Q-47.555 47.606-47.548 47.609Q-46.962 47.859-46.364 47.859Q-45.782 47.859-45.165 47.602L-45.141 47.602Q-45.098 47.602-45.071 47.627Q-45.044 47.652-45.044 47.692L-45.044 47.770Q-45.044 47.801-45.067 47.824Q-45.364 48.176-45.786 48.373Q-46.208 48.570-46.669 48.570Q-47.016 48.570-47.395 48.465L-47.395 49.961Q-47.177 49.766-46.901 49.668Q-46.626 49.570-46.325 49.570Q-45.868 49.570-45.499 49.818Q-45.130 50.067-44.923 50.471Q-44.716 50.875-44.716 51.320Q-44.716 51.809-44.971 52.217Q-45.227 52.625-45.659 52.858Q-46.091 53.090-46.579 53.090Q-46.973 53.090-47.329 52.899Q-47.684 52.707-47.895 52.373Q-48.106 52.039-48.106 51.625Q-48.106 51.445-47.989 51.332Q-47.872 51.219-47.692 51.219Q-47.575 51.219-47.483 51.272Q-47.391 51.324-47.339 51.416Q-47.286 51.508-47.286 51.625Q-47.286 51.809-47.399 51.926Q-47.512 52.043-47.692 52.043",[1890],[1879,3015],{"fill":3016,"stroke":1881,"d":3017},"var(--tk-soft-accent)","M-48.532 52.922V14.51h184.943v38.41ZM136.411 14.51",[1879,3019],{"fill":1881,"stroke":1987,"d":3020,"style":1989},"M-48.532 52.922V14.51h184.943v38.41ZM-48.532 52.922V14.51M136.411 52.922V1.707",[1874,3022,3023],{"fill":1987,"stroke":1987},[1874,3024,3026],{"transform":3025},"translate(-1.316 12.736)",[1879,3027],{"d":3028,"fill":1987,"stroke":1987,"className":3029,"style":1899},"M-48.188 52.250Q-48.188 52.145-48.165 52.051L-47.173 48.074Q-47.134 47.887-47.134 47.859Q-47.134 47.754-47.630 47.754Q-47.723 47.723-47.723 47.625L-47.700 47.524Q-47.692 47.477-47.610 47.457L-46.509 47.371Q-46.466 47.371-46.427 47.402Q-46.387 47.434-46.387 47.488L-47.540 52.090Q-47.579 52.336-47.579 52.387Q-47.579 52.746-47.333 52.746Q-47.157 52.746-47.042 52.576Q-46.927 52.406-46.872 52.221Q-46.817 52.035-46.747 51.746Q-46.719 51.676-46.661 51.676L-46.555 51.676Q-46.516 51.676-46.493 51.705Q-46.469 51.734-46.469 51.770Q-46.469 51.785-46.477 51.801Q-46.594 52.309-46.786 52.654Q-46.977 53-47.348 53Q-47.692 53-47.940 52.793Q-48.188 52.586-48.188 52.250",[1890],[1874,3031,3032],{"fill":1987,"stroke":1987},[1874,3033,3035],{"transform":3034},"translate(182.907 11.68)",[1879,3036],{"d":3037,"fill":1987,"stroke":1987,"className":3038,"style":1899},"M-47.837 52.746Q-47.833 52.727-47.831 52.713Q-47.829 52.699-47.829 52.676L-47.235 50.305Q-47.196 50.149-47.196 50.012Q-47.196 49.863-47.249 49.756Q-47.302 49.649-47.434 49.649Q-47.614 49.649-47.733 49.818Q-47.852 49.988-47.909 50.174Q-47.966 50.359-48.036 50.649Q-48.048 50.723-48.118 50.723L-48.219 50.723Q-48.255 50.723-48.282 50.688Q-48.309 50.652-48.309 50.625L-48.309 50.594Q-48.223 50.262-48.130 50.020Q-48.036 49.777-47.860 49.586Q-47.684 49.395-47.419 49.395Q-47.134 49.395-46.901 49.543Q-46.669 49.692-46.602 49.945Q-46.395 49.692-46.126 49.543Q-45.856 49.395-45.540 49.395Q-45.360 49.395-45.204 49.467Q-45.048 49.539-44.954 49.676Q-44.860 49.813-44.860 49.992Q-44.860 50.207-44.993 50.365Q-45.126 50.524-45.333 50.524Q-45.466 50.524-45.559 50.440Q-45.653 50.356-45.653 50.219Q-45.653 50.043-45.532 49.910Q-45.411 49.777-45.243 49.754Q-45.376 49.649-45.555 49.649Q-45.903 49.649-46.173 49.885Q-46.442 50.121-46.637 50.481L-47.196 52.715Q-47.227 52.840-47.333 52.920Q-47.438 53-47.563 53Q-47.673 53-47.755 52.930Q-47.837 52.859-47.837 52.746",[1890],[1874,3040,3041,3044],{"fill":3016,"stroke":1987},[1879,3042],{"fill":3016,"stroke":1881,"d":3043},"M11.505 37.936h64.87v-8.155h-64.87Z",[1874,3045,3046,3053,3059,3065,3071,3077,3083],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,3047,3049],{"transform":3048},"translate(61.537 -16.486)",[1879,3050],{"d":3051,"fill":1987,"stroke":1987,"className":3052,"style":1899},"M-48.196 52.090Q-48.196 51.606-47.794 51.311Q-47.391 51.016-46.841 50.897Q-46.290 50.777-45.798 50.777L-45.798 50.488Q-45.798 50.262-45.913 50.055Q-46.028 49.848-46.225 49.729Q-46.423 49.609-46.653 49.609Q-47.079 49.609-47.364 49.715Q-47.294 49.742-47.247 49.797Q-47.200 49.852-47.175 49.922Q-47.149 49.992-47.149 50.067Q-47.149 50.172-47.200 50.264Q-47.251 50.356-47.343 50.406Q-47.434 50.457-47.540 50.457Q-47.645 50.457-47.737 50.406Q-47.829 50.356-47.880 50.264Q-47.930 50.172-47.930 50.067Q-47.930 49.649-47.542 49.502Q-47.153 49.356-46.653 49.356Q-46.321 49.356-45.968 49.486Q-45.614 49.617-45.386 49.871Q-45.157 50.125-45.157 50.473L-45.157 52.274Q-45.157 52.406-45.085 52.516Q-45.012 52.625-44.884 52.625Q-44.759 52.625-44.690 52.520Q-44.622 52.414-44.622 52.274L-44.622 51.762L-44.341 51.762L-44.341 52.274Q-44.341 52.477-44.458 52.635Q-44.575 52.793-44.757 52.877Q-44.938 52.961-45.141 52.961Q-45.372 52.961-45.524 52.789Q-45.677 52.617-45.708 52.387Q-45.868 52.668-46.177 52.834Q-46.485 53-46.837 53Q-47.348 53-47.772 52.777Q-48.196 52.555-48.196 52.090M-47.509 52.090Q-47.509 52.375-47.282 52.561Q-47.055 52.746-46.762 52.746Q-46.516 52.746-46.292 52.629Q-46.067 52.512-45.932 52.309Q-45.798 52.106-45.798 51.852L-45.798 51.020Q-46.063 51.020-46.348 51.074Q-46.634 51.129-46.905 51.258Q-47.177 51.387-47.343 51.594Q-47.509 51.801-47.509 52.090M-42.040 52.922L-44.020 52.922L-44.020 52.625Q-43.751 52.625-43.583 52.580Q-43.415 52.535-43.415 52.363L-43.415 50.227Q-43.415 50.012-43.477 49.916Q-43.540 49.820-43.657 49.799Q-43.774 49.777-44.020 49.777L-44.020 49.481L-42.852 49.395L-42.852 50.180Q-42.774 49.969-42.622 49.783Q-42.469 49.598-42.270 49.496Q-42.071 49.395-41.844 49.395Q-41.598 49.395-41.407 49.539Q-41.216 49.684-41.216 49.914Q-41.216 50.070-41.321 50.180Q-41.427 50.289-41.583 50.289Q-41.739 50.289-41.848 50.180Q-41.958 50.070-41.958 49.914Q-41.958 49.754-41.852 49.649Q-42.177 49.649-42.391 49.877Q-42.606 50.106-42.702 50.445Q-42.798 50.785-42.798 51.090L-42.798 52.363Q-42.798 52.531-42.571 52.578Q-42.344 52.625-42.040 52.625L-42.040 52.922M-40.735 51.168Q-40.735 50.688-40.503 50.272Q-40.270 49.856-39.860 49.606Q-39.450 49.356-38.973 49.356Q-38.243 49.356-37.844 49.797Q-37.446 50.238-37.446 50.969Q-37.446 51.074-37.540 51.098L-39.989 51.098L-39.989 51.168Q-39.989 51.578-39.868 51.934Q-39.747 52.289-39.475 52.506Q-39.204 52.723-38.774 52.723Q-38.411 52.723-38.114 52.494Q-37.817 52.266-37.716 51.914Q-37.708 51.867-37.622 51.852L-37.540 51.852Q-37.446 51.879-37.446 51.961Q-37.446 51.969-37.454 52Q-37.516 52.227-37.655 52.410Q-37.794 52.594-37.985 52.727Q-38.177 52.859-38.395 52.930Q-38.614 53-38.852 53Q-39.223 53-39.561 52.863Q-39.899 52.727-40.167 52.475Q-40.434 52.223-40.585 51.883Q-40.735 51.543-40.735 51.168M-39.981 50.859L-38.020 50.859Q-38.020 50.555-38.122 50.264Q-38.223 49.973-38.440 49.791Q-38.657 49.609-38.973 49.609Q-39.274 49.609-39.505 49.797Q-39.735 49.984-39.858 50.276Q-39.981 50.567-39.981 50.859M-36.860 52.090Q-36.860 51.606-36.458 51.311Q-36.055 51.016-35.505 50.897Q-34.954 50.777-34.462 50.777L-34.462 50.488Q-34.462 50.262-34.577 50.055Q-34.692 49.848-34.889 49.729Q-35.087 49.609-35.317 49.609Q-35.743 49.609-36.028 49.715Q-35.958 49.742-35.911 49.797Q-35.864 49.852-35.839 49.922Q-35.813 49.992-35.813 50.067Q-35.813 50.172-35.864 50.264Q-35.915 50.356-36.007 50.406Q-36.098 50.457-36.204 50.457Q-36.309 50.457-36.401 50.406Q-36.493 50.356-36.544 50.264Q-36.594 50.172-36.594 50.067Q-36.594 49.649-36.206 49.502Q-35.817 49.356-35.317 49.356Q-34.985 49.356-34.632 49.486Q-34.278 49.617-34.050 49.871Q-33.821 50.125-33.821 50.473L-33.821 52.274Q-33.821 52.406-33.749 52.516Q-33.677 52.625-33.548 52.625Q-33.423 52.625-33.354 52.520Q-33.286 52.414-33.286 52.274L-33.286 51.762L-33.005 51.762L-33.005 52.274Q-33.005 52.477-33.122 52.635Q-33.239 52.793-33.421 52.877Q-33.602 52.961-33.805 52.961Q-34.036 52.961-34.188 52.789Q-34.341 52.617-34.372 52.387Q-34.532 52.668-34.841 52.834Q-35.149 53-35.501 53Q-36.012 53-36.436 52.777Q-36.860 52.555-36.860 52.090M-36.173 52.090Q-36.173 52.375-35.946 52.561Q-35.719 52.746-35.427 52.746Q-35.180 52.746-34.956 52.629Q-34.731 52.512-34.596 52.309Q-34.462 52.106-34.462 51.852L-34.462 51.020Q-34.727 51.020-35.012 51.074Q-35.298 51.129-35.569 51.258Q-35.841 51.387-36.007 51.594Q-36.173 51.801-36.173 52.090",[1890],[1874,3054,3055],{"transform":3048},[1879,3056],{"d":3057,"fill":1987,"stroke":1987,"className":3058,"style":1899},"M-24.147 51.945L-29.460 51.945Q-29.538 51.938-29.587 51.889Q-29.635 51.840-29.635 51.762Q-29.635 51.692-29.588 51.641Q-29.542 51.590-29.460 51.578L-24.147 51.578Q-24.073 51.590-24.026 51.641Q-23.979 51.692-23.979 51.762Q-23.979 51.840-24.028 51.889Q-24.077 51.938-24.147 51.945M-24.147 50.258L-29.460 50.258Q-29.538 50.250-29.587 50.201Q-29.635 50.152-29.635 50.074Q-29.635 50.004-29.588 49.953Q-29.542 49.902-29.460 49.891L-24.147 49.891Q-24.073 49.902-24.026 49.953Q-23.979 50.004-23.979 50.074Q-23.979 50.152-24.028 50.201Q-24.077 50.250-24.147 50.258",[1890],[1874,3060,3061],{"transform":3048},[1879,3062],{"d":3063,"fill":1987,"stroke":1987,"className":3064,"style":1899},"M-20.295 52.043L-20.358 52.043Q-20.217 52.395-19.893 52.606Q-19.569 52.817-19.182 52.817Q-18.588 52.817-18.338 52.383Q-18.088 51.949-18.088 51.313Q-18.088 50.719-18.258 50.272Q-18.428 49.824-18.928 49.824Q-19.225 49.824-19.430 49.904Q-19.635 49.984-19.737 50.076Q-19.838 50.168-19.953 50.301Q-20.069 50.434-20.119 50.449L-20.190 50.449Q-20.276 50.426-20.295 50.348L-20.295 47.699Q-20.264 47.602-20.190 47.602Q-20.174 47.602-20.166 47.604Q-20.158 47.606-20.151 47.609Q-19.565 47.859-18.967 47.859Q-18.385 47.859-17.768 47.602L-17.744 47.602Q-17.701 47.602-17.674 47.627Q-17.647 47.652-17.647 47.692L-17.647 47.770Q-17.647 47.801-17.670 47.824Q-17.967 48.176-18.389 48.373Q-18.811 48.570-19.272 48.570Q-19.619 48.570-19.998 48.465L-19.998 49.961Q-19.780 49.766-19.504 49.668Q-19.229 49.570-18.928 49.570Q-18.471 49.570-18.102 49.818Q-17.733 50.067-17.526 50.471Q-17.319 50.875-17.319 51.320Q-17.319 51.809-17.574 52.217Q-17.830 52.625-18.262 52.858Q-18.694 53.090-19.182 53.090Q-19.576 53.090-19.932 52.899Q-20.287 52.707-20.498 52.373Q-20.709 52.039-20.709 51.625Q-20.709 51.445-20.592 51.332Q-20.475 51.219-20.295 51.219Q-20.178 51.219-20.086 51.272Q-19.994 51.324-19.942 51.416Q-19.889 51.508-19.889 51.625Q-19.889 51.809-20.002 51.926Q-20.115 52.043-20.295 52.043",[1890],[1874,3066,3067],{"transform":3048},[1879,3068],{"d":3069,"fill":1987,"stroke":1987,"className":3070,"style":1899},"M-14.277 50.914Q-14.277 50.731-14.141 50.594Q-14.004 50.457-13.812 50.457Q-13.621 50.457-13.488 50.590Q-13.355 50.723-13.355 50.914Q-13.355 51.106-13.492 51.242Q-13.629 51.379-13.812 51.379Q-13.996 51.379-14.137 51.238Q-14.277 51.098-14.277 50.914",[1890],[1874,3072,3073],{"transform":3048},[1879,3074],{"d":3075,"fill":1987,"stroke":1987,"className":3076,"style":1899},"M-9.953 52.289Q-9.762 52.563-9.406 52.690Q-9.051 52.817-8.668 52.817Q-8.332 52.817-8.123 52.631Q-7.914 52.445-7.818 52.152Q-7.723 51.859-7.723 51.547Q-7.723 51.223-7.820 50.928Q-7.918 50.633-8.131 50.449Q-8.344 50.266-8.676 50.266L-9.242 50.266Q-9.273 50.266-9.303 50.236Q-9.332 50.207-9.332 50.180L-9.332 50.098Q-9.332 50.063-9.303 50.037Q-9.273 50.012-9.242 50.012L-8.762 49.977Q-8.476 49.977-8.279 49.772Q-8.082 49.567-7.986 49.272Q-7.891 48.977-7.891 48.699Q-7.891 48.320-8.090 48.082Q-8.289 47.844-8.668 47.844Q-8.988 47.844-9.277 47.951Q-9.566 48.059-9.730 48.281Q-9.551 48.281-9.428 48.408Q-9.305 48.535-9.305 48.707Q-9.305 48.879-9.430 49.004Q-9.555 49.129-9.730 49.129Q-9.902 49.129-10.027 49.004Q-10.152 48.879-10.152 48.707Q-10.152 48.340-9.928 48.092Q-9.703 47.844-9.363 47.723Q-9.023 47.602-8.668 47.602Q-8.320 47.602-7.957 47.723Q-7.594 47.844-7.346 48.094Q-7.098 48.344-7.098 48.699Q-7.098 49.184-7.416 49.567Q-7.734 49.949-8.211 50.121Q-7.660 50.231-7.260 50.617Q-6.859 51.004-6.859 51.539Q-6.859 51.996-7.123 52.352Q-7.387 52.707-7.809 52.899Q-8.230 53.090-8.668 53.090Q-9.078 53.090-9.471 52.955Q-9.863 52.820-10.129 52.535Q-10.394 52.250-10.394 51.832Q-10.394 51.637-10.262 51.508Q-10.129 51.379-9.937 51.379Q-9.812 51.379-9.709 51.438Q-9.605 51.496-9.543 51.602Q-9.480 51.707-9.480 51.832Q-9.480 52.027-9.615 52.158Q-9.750 52.289-9.953 52.289",[1890],[1874,3078,3079],{"transform":3048},[1879,3080],{"d":3081,"fill":1987,"stroke":1987,"className":3082,"style":1899},"M1.826 51.945L-3.487 51.945Q-3.565 51.938-3.614 51.889Q-3.662 51.840-3.662 51.762Q-3.662 51.692-3.615 51.641Q-3.569 51.590-3.487 51.578L1.826 51.578Q1.900 51.590 1.947 51.641Q1.994 51.692 1.994 51.762Q1.994 51.840 1.945 51.889Q1.896 51.938 1.826 51.945M1.826 50.258L-3.487 50.258Q-3.565 50.250-3.614 50.201Q-3.662 50.152-3.662 50.074Q-3.662 50.004-3.615 49.953Q-3.569 49.902-3.487 49.891L1.826 49.891Q1.900 49.902 1.947 49.953Q1.994 50.004 1.994 50.074Q1.994 50.152 1.945 50.201Q1.896 50.250 1.826 50.258",[1890],[1874,3084,3085],{"transform":3048},[1879,3086],{"d":3087,"fill":1987,"stroke":1987,"className":3088,"style":1899},"M8.431 52.922L5.638 52.922L5.638 52.625Q6.700 52.625 6.700 52.363L6.700 48.195Q6.271 48.410 5.591 48.410L5.591 48.113Q6.610 48.113 7.126 47.602L7.271 47.602Q7.345 47.621 7.364 47.699L7.364 52.363Q7.364 52.625 8.431 52.625L8.431 52.922M9.923 52.043L9.860 52.043Q10.001 52.395 10.325 52.606Q10.649 52.817 11.036 52.817Q11.630 52.817 11.880 52.383Q12.130 51.949 12.130 51.313Q12.130 50.719 11.960 50.272Q11.790 49.824 11.290 49.824Q10.993 49.824 10.788 49.904Q10.583 49.984 10.482 50.076Q10.380 50.168 10.265 50.301Q10.149 50.434 10.099 50.449L10.028 50.449Q9.942 50.426 9.923 50.348L9.923 47.699Q9.954 47.602 10.028 47.602Q10.044 47.602 10.052 47.604Q10.060 47.606 10.067 47.609Q10.653 47.859 11.251 47.859Q11.833 47.859 12.450 47.602L12.474 47.602Q12.517 47.602 12.544 47.627Q12.571 47.652 12.571 47.692L12.571 47.770Q12.571 47.801 12.548 47.824Q12.251 48.176 11.829 48.373Q11.407 48.570 10.946 48.570Q10.599 48.570 10.220 48.465L10.220 49.961Q10.439 49.766 10.714 49.668Q10.989 49.570 11.290 49.570Q11.747 49.570 12.116 49.818Q12.485 50.067 12.692 50.471Q12.899 50.875 12.899 51.320Q12.899 51.809 12.644 52.217Q12.388 52.625 11.956 52.858Q11.524 53.090 11.036 53.090Q10.642 53.090 10.286 52.899Q9.931 52.707 9.720 52.373Q9.509 52.039 9.509 51.625Q9.509 51.445 9.626 51.332Q9.743 51.219 9.923 51.219Q10.040 51.219 10.132 51.272Q10.224 51.324 10.276 51.416Q10.329 51.508 10.329 51.625Q10.329 51.809 10.216 51.926Q10.103 52.043 9.923 52.043",[1890],[1874,3090,3092],{"fill":3091,"stroke":3091},"var(--tk-warn)",[1874,3093,3094,3101,3107,3113,3119,3125,3131,3137,3143,3149,3155],{"fill":3091,"stroke":1881,"fontSize":1994},[1874,3095,3097],{"transform":3096},"translate(26.682 -94.74)",[1879,3098],{"d":3099,"fill":3091,"stroke":3091,"className":3100,"style":1899},"M-47.028 53Q-47.384 53-47.653 52.820Q-47.923 52.641-48.063 52.346Q-48.204 52.051-48.204 51.692Q-48.204 51.305-48.042 50.891Q-47.880 50.477-47.596 50.139Q-47.313 49.801-46.944 49.598Q-46.575 49.395-46.173 49.395Q-45.680 49.395-45.403 49.844Q-45.372 49.711-45.268 49.629Q-45.165 49.547-45.036 49.547Q-44.923 49.547-44.843 49.617Q-44.762 49.688-44.762 49.801Q-44.762 49.828-44.778 49.891L-45.333 52.090Q-45.372 52.336-45.372 52.387Q-45.372 52.746-45.126 52.746Q-44.981 52.746-44.880 52.639Q-44.778 52.531-44.714 52.377Q-44.649 52.223-44.600 52.033Q-44.552 51.844-44.532 51.746Q-44.505 51.676-44.442 51.676L-44.341 51.676Q-44.302 51.676-44.276 51.709Q-44.251 51.742-44.251 51.770Q-44.251 51.785-44.259 51.801Q-44.372 52.293-44.571 52.647Q-44.770 53-45.141 53Q-45.423 53-45.649 52.858Q-45.876 52.715-45.958 52.457Q-46.180 52.699-46.454 52.850Q-46.727 53-47.028 53M-47.012 52.746Q-46.802 52.746-46.593 52.633Q-46.384 52.520-46.214 52.346Q-46.044 52.172-45.915 51.977Q-45.927 51.992-45.936 52.006Q-45.946 52.020-45.958 52.035L-45.524 50.313Q-45.563 50.133-45.649 49.983Q-45.735 49.832-45.872 49.740Q-46.009 49.649-46.188 49.649Q-46.524 49.649-46.796 49.930Q-47.067 50.211-47.227 50.586Q-47.352 50.906-47.450 51.326Q-47.548 51.746-47.548 52.027Q-47.548 52.317-47.415 52.531Q-47.282 52.746-47.012 52.746",[1890],[1874,3102,3103],{"transform":3096},[1879,3104],{"d":3105,"fill":3091,"stroke":3091,"className":3106,"style":1899},"M-41.849 54.922L-43.025 54.922L-43.025 46.922L-41.849 46.922L-41.849 47.289L-42.658 47.289L-42.658 54.555L-41.849 54.555",[1890],[1874,3108,3109],{"transform":3096},[1879,3110],{"d":3111,"fill":3091,"stroke":3091,"className":3112,"style":1899},"M-41.312 52.250Q-41.312 52.145-41.289 52.051L-40.297 48.074Q-40.258 47.887-40.258 47.859Q-40.258 47.754-40.754 47.754Q-40.847 47.723-40.847 47.625L-40.824 47.524Q-40.816 47.477-40.734 47.457L-39.633 47.371Q-39.590 47.371-39.551 47.402Q-39.511 47.434-39.511 47.488L-40.664 52.090Q-40.703 52.336-40.703 52.387Q-40.703 52.746-40.457 52.746Q-40.281 52.746-40.166 52.576Q-40.051 52.406-39.996 52.221Q-39.941 52.035-39.871 51.746Q-39.843 51.676-39.785 51.676L-39.679 51.676Q-39.640 51.676-39.617 51.705Q-39.593 51.734-39.593 51.770Q-39.593 51.785-39.601 51.801Q-39.718 52.309-39.910 52.654Q-40.101 53-40.472 53Q-40.816 53-41.064 52.793Q-41.312 52.586-41.312 52.250",[1890],[1874,3114,3115],{"transform":3096},[1879,3116],{"d":3117,"fill":3091,"stroke":3091,"className":3118,"style":1899},"M-37.665 54.922L-38.840 54.922L-38.840 54.555L-38.032 54.555L-38.032 47.289L-38.840 47.289L-38.840 46.922L-37.665 46.922",[1890],[1874,3120,3121],{"transform":3096},[1879,3122],{"d":3123,"fill":3091,"stroke":3091,"className":3124,"style":1899},"M-30.701 51.945L-36.014 51.945Q-36.092 51.938-36.141 51.889Q-36.189 51.840-36.189 51.762Q-36.189 51.692-36.142 51.641Q-36.096 51.590-36.014 51.578L-30.701 51.578Q-30.627 51.590-30.580 51.641Q-30.533 51.692-30.533 51.762Q-30.533 51.840-30.582 51.889Q-30.631 51.938-30.701 51.945M-30.701 50.258L-36.014 50.258Q-36.092 50.250-36.141 50.201Q-36.189 50.152-36.189 50.074Q-36.189 50.004-36.142 49.953Q-36.096 49.902-36.014 49.891L-30.701 49.891Q-30.627 49.902-30.580 49.953Q-30.533 50.004-30.533 50.074Q-30.533 50.152-30.582 50.201Q-30.631 50.250-30.701 50.258",[1890],[1874,3126,3127],{"transform":3096},[1879,3128],{"d":3129,"fill":3091,"stroke":3091,"className":3130,"style":1899},"M-29.258 52.289Q-29.067 52.563-28.711 52.690Q-28.356 52.817-27.973 52.817Q-27.637 52.817-27.428 52.631Q-27.219 52.445-27.123 52.152Q-27.028 51.859-27.028 51.547Q-27.028 51.223-27.125 50.928Q-27.223 50.633-27.436 50.449Q-27.649 50.266-27.981 50.266L-28.547 50.266Q-28.578 50.266-28.608 50.236Q-28.637 50.207-28.637 50.180L-28.637 50.098Q-28.637 50.063-28.608 50.037Q-28.578 50.012-28.547 50.012L-28.067 49.977Q-27.781 49.977-27.584 49.772Q-27.387 49.567-27.291 49.272Q-27.196 48.977-27.196 48.699Q-27.196 48.320-27.395 48.082Q-27.594 47.844-27.973 47.844Q-28.293 47.844-28.582 47.951Q-28.871 48.059-29.035 48.281Q-28.856 48.281-28.733 48.408Q-28.610 48.535-28.610 48.707Q-28.610 48.879-28.735 49.004Q-28.860 49.129-29.035 49.129Q-29.207 49.129-29.332 49.004Q-29.457 48.879-29.457 48.707Q-29.457 48.340-29.233 48.092Q-29.008 47.844-28.668 47.723Q-28.328 47.602-27.973 47.602Q-27.625 47.602-27.262 47.723Q-26.899 47.844-26.651 48.094Q-26.403 48.344-26.403 48.699Q-26.403 49.184-26.721 49.567Q-27.039 49.949-27.516 50.121Q-26.965 50.231-26.565 50.617Q-26.164 51.004-26.164 51.539Q-26.164 51.996-26.428 52.352Q-26.692 52.707-27.113 52.899Q-27.535 53.090-27.973 53.090Q-28.383 53.090-28.776 52.955Q-29.168 52.820-29.434 52.535Q-29.699 52.250-29.699 51.832Q-29.699 51.637-29.567 51.508Q-29.434 51.379-29.242 51.379Q-29.117 51.379-29.014 51.438Q-28.910 51.496-28.848 51.602Q-28.785 51.707-28.785 51.832Q-28.785 52.027-28.920 52.158Q-29.055 52.289-29.258 52.289",[1890],[1874,3132,3133],{"transform":3096},[1879,3134],{"d":3135,"fill":3091,"stroke":3091,"className":3136,"style":1899},"M-21.816 52.922L-22.097 52.922L-22.097 48.203Q-22.097 47.988-22.159 47.893Q-22.222 47.797-22.339 47.776Q-22.456 47.754-22.702 47.754L-22.702 47.457L-21.480 47.371L-21.480 49.859Q-21.003 49.395-20.304 49.395Q-19.823 49.395-19.415 49.639Q-19.007 49.883-18.771 50.297Q-18.534 50.711-18.534 51.195Q-18.534 51.570-18.683 51.899Q-18.831 52.227-19.101 52.479Q-19.370 52.731-19.714 52.865Q-20.058 53-20.417 53Q-20.738 53-21.036 52.852Q-21.335 52.703-21.542 52.442L-21.816 52.922M-21.456 50.250L-21.456 52.090Q-21.304 52.387-21.044 52.567Q-20.784 52.746-20.472 52.746Q-20.046 52.746-19.779 52.527Q-19.511 52.309-19.396 51.963Q-19.280 51.617-19.280 51.195Q-19.280 50.547-19.529 50.098Q-19.777 49.649-20.374 49.649Q-20.710 49.649-20.999 49.807Q-21.288 49.965-21.456 50.250M-16.152 52.922L-17.929 52.922L-17.929 52.625Q-17.655 52.625-17.488 52.578Q-17.320 52.531-17.320 52.363L-17.320 50.227Q-17.320 50.012-17.376 49.916Q-17.433 49.820-17.546 49.799Q-17.659 49.777-17.905 49.777L-17.905 49.481L-16.706 49.395L-16.706 52.363Q-16.706 52.531-16.560 52.578Q-16.413 52.625-16.152 52.625L-16.152 52.922M-17.593 48Q-17.593 47.809-17.458 47.678Q-17.323 47.547-17.128 47.547Q-17.007 47.547-16.904 47.609Q-16.800 47.672-16.738 47.776Q-16.675 47.879-16.675 48Q-16.675 48.195-16.806 48.330Q-16.937 48.465-17.128 48.465Q-17.327 48.465-17.460 48.332Q-17.593 48.199-17.593 48M-13.722 52.922L-15.577 52.922L-15.577 52.625Q-15.304 52.625-15.136 52.578Q-14.968 52.531-14.968 52.363L-14.968 50.227Q-14.968 50.012-15.030 49.916Q-15.093 49.820-15.212 49.799Q-15.331 49.777-15.577 49.777L-15.577 49.481L-14.386 49.395L-14.386 50.129Q-14.273 49.914-14.079 49.746Q-13.886 49.578-13.648 49.486Q-13.409 49.395-13.155 49.395Q-11.988 49.395-11.988 50.473L-11.988 52.363Q-11.988 52.531-11.818 52.578Q-11.648 52.625-11.378 52.625L-11.378 52.922L-13.234 52.922L-13.234 52.625Q-12.960 52.625-12.792 52.578Q-12.624 52.531-12.624 52.363L-12.624 50.488Q-12.624 50.106-12.745 49.877Q-12.866 49.649-13.218 49.649Q-13.530 49.649-13.784 49.811Q-14.038 49.973-14.185 50.242Q-14.331 50.512-14.331 50.809L-14.331 52.363Q-14.331 52.531-14.161 52.578Q-13.991 52.625-13.722 52.625L-13.722 52.922M-9.116 53Q-9.597 53-10.005 52.756Q-10.413 52.512-10.652 52.098Q-10.890 51.684-10.890 51.195Q-10.890 50.703-10.632 50.287Q-10.374 49.871-9.943 49.633Q-9.511 49.395-9.019 49.395Q-8.398 49.395-7.948 49.832L-7.948 48.203Q-7.948 47.988-8.011 47.893Q-8.073 47.797-8.191 47.776Q-8.308 47.754-8.554 47.754L-8.554 47.457L-7.331 47.371L-7.331 52.180Q-7.331 52.391-7.269 52.486Q-7.206 52.582-7.089 52.604Q-6.972 52.625-6.722 52.625L-6.722 52.922L-7.972 53L-7.972 52.516Q-8.437 53-9.116 53M-9.050 52.746Q-8.710 52.746-8.417 52.555Q-8.124 52.363-7.972 52.067L-7.972 50.234Q-8.120 49.961-8.382 49.805Q-8.644 49.649-8.956 49.649Q-9.581 49.649-9.864 50.096Q-10.148 50.543-10.148 51.203Q-10.148 51.848-9.896 52.297Q-9.644 52.746-9.050 52.746M-6.171 52.914L-6.171 51.692Q-6.171 51.664-6.140 51.633Q-6.109 51.602-6.085 51.602L-5.980 51.602Q-5.909 51.602-5.894 51.664Q-5.831 51.984-5.693 52.225Q-5.554 52.465-5.322 52.606Q-5.089 52.746-4.780 52.746Q-4.542 52.746-4.333 52.686Q-4.124 52.625-3.988 52.477Q-3.851 52.328-3.851 52.082Q-3.851 51.828-4.062 51.662Q-4.273 51.496-4.542 51.442L-5.163 51.328Q-5.570 51.250-5.870 50.994Q-6.171 50.738-6.171 50.363Q-6.171 49.996-5.970 49.774Q-5.769 49.551-5.445 49.453Q-5.120 49.356-4.780 49.356Q-4.316 49.356-4.019 49.563L-3.796 49.379Q-3.773 49.356-3.741 49.356L-3.691 49.356Q-3.659 49.356-3.632 49.383Q-3.605 49.410-3.605 49.442L-3.605 50.426Q-3.605 50.457-3.630 50.486Q-3.655 50.516-3.691 50.516L-3.796 50.516Q-3.831 50.516-3.859 50.488Q-3.886 50.461-3.886 50.426Q-3.886 50.027-4.138 49.807Q-4.390 49.586-4.788 49.586Q-5.144 49.586-5.427 49.709Q-5.710 49.832-5.710 50.137Q-5.710 50.356-5.509 50.488Q-5.308 50.621-5.062 50.664L-4.437 50.777Q-4.007 50.867-3.698 51.164Q-3.390 51.461-3.390 51.875Q-3.390 52.445-3.788 52.723Q-4.187 53-4.780 53Q-5.331 53-5.683 52.664L-5.980 52.977Q-6.003 53-6.038 53L-6.085 53Q-6.109 53-6.140 52.969Q-6.171 52.938-6.171 52.914",[1890],[1874,3138,3139],{"transform":3096},[1879,3140],{"d":3141,"fill":3091,"stroke":3091,"className":3142,"style":1899},"M5.426 51.945L0.394 51.945Q0.316 51.938 0.267 51.889Q0.219 51.840 0.219 51.762Q0.219 51.692 0.266 51.641Q0.312 51.590 0.394 51.578L5.824 51.578Q6.074 51.379 6.355 51.211Q6.637 51.043 6.930 50.922Q6.328 50.668 5.824 50.258L0.394 50.258Q0.316 50.250 0.267 50.201Q0.219 50.152 0.219 50.074Q0.219 50.004 0.266 49.953Q0.312 49.902 0.394 49.891L5.426 49.891Q4.957 49.410 4.648 48.785Q4.641 48.754 4.641 48.746Q4.641 48.660 4.738 48.633L4.906 48.633Q4.969 48.645 5.004 48.699Q5.266 49.231 5.674 49.660Q6.082 50.090 6.603 50.383Q7.125 50.676 7.707 50.817Q7.769 50.828 7.769 50.922Q7.769 51.016 7.707 51.027Q7.125 51.168 6.603 51.461Q6.082 51.754 5.674 52.184Q5.266 52.613 5.004 53.145Q4.969 53.199 4.906 53.211L4.738 53.211Q4.641 53.184 4.641 53.098Q4.641 53.090 4.648 53.059Q4.953 52.442 5.426 51.945",[1890],[1874,3144,3145],{"transform":3096},[1879,3146],{"d":3147,"fill":3091,"stroke":3091,"className":3148,"style":1899},"M11.416 52.090Q11.416 51.606 11.818 51.311Q12.221 51.016 12.771 50.897Q13.322 50.777 13.814 50.777L13.814 50.488Q13.814 50.262 13.699 50.055Q13.584 49.848 13.387 49.729Q13.189 49.609 12.959 49.609Q12.533 49.609 12.248 49.715Q12.318 49.742 12.365 49.797Q12.412 49.852 12.437 49.922Q12.463 49.992 12.463 50.067Q12.463 50.172 12.412 50.264Q12.361 50.356 12.269 50.406Q12.178 50.457 12.072 50.457Q11.967 50.457 11.875 50.406Q11.783 50.356 11.732 50.264Q11.682 50.172 11.682 50.067Q11.682 49.649 12.070 49.502Q12.459 49.356 12.959 49.356Q13.291 49.356 13.644 49.486Q13.998 49.617 14.226 49.871Q14.455 50.125 14.455 50.473L14.455 52.274Q14.455 52.406 14.527 52.516Q14.600 52.625 14.728 52.625Q14.853 52.625 14.922 52.520Q14.990 52.414 14.990 52.274L14.990 51.762L15.271 51.762L15.271 52.274Q15.271 52.477 15.154 52.635Q15.037 52.793 14.855 52.877Q14.674 52.961 14.471 52.961Q14.240 52.961 14.088 52.789Q13.935 52.617 13.904 52.387Q13.744 52.668 13.435 52.834Q13.127 53 12.775 53Q12.264 53 11.840 52.777Q11.416 52.555 11.416 52.090M12.103 52.090Q12.103 52.375 12.330 52.561Q12.557 52.746 12.850 52.746Q13.096 52.746 13.320 52.629Q13.545 52.512 13.680 52.309Q13.814 52.106 13.814 51.852L13.814 51.020Q13.549 51.020 13.264 51.074Q12.978 51.129 12.707 51.258Q12.435 51.387 12.269 51.594Q12.103 51.801 12.103 52.090M17.381 53Q16.900 53 16.492 52.756Q16.084 52.512 15.846 52.098Q15.607 51.684 15.607 51.195Q15.607 50.703 15.865 50.287Q16.123 49.871 16.555 49.633Q16.986 49.395 17.478 49.395Q18.100 49.395 18.549 49.832L18.549 48.203Q18.549 47.988 18.486 47.893Q18.424 47.797 18.307 47.776Q18.189 47.754 17.943 47.754L17.943 47.457L19.166 47.371L19.166 52.180Q19.166 52.391 19.228 52.486Q19.291 52.582 19.408 52.604Q19.525 52.625 19.775 52.625L19.775 52.922L18.525 53L18.525 52.516Q18.060 53 17.381 53M17.447 52.746Q17.787 52.746 18.080 52.555Q18.373 52.363 18.525 52.067L18.525 50.234Q18.377 49.961 18.115 49.805Q17.853 49.649 17.541 49.649Q16.916 49.649 16.633 50.096Q16.350 50.543 16.350 51.203Q16.350 51.848 16.601 52.297Q16.853 52.746 17.447 52.746M22.084 52.891L20.861 50.035Q20.779 49.859 20.635 49.815Q20.490 49.770 20.221 49.770L20.221 49.473L21.932 49.473L21.932 49.770Q21.510 49.770 21.510 49.953Q21.510 49.988 21.525 50.035L22.471 52.227L23.310 50.250Q23.350 50.172 23.350 50.082Q23.350 49.942 23.244 49.856Q23.139 49.770 22.998 49.770L22.998 49.473L24.350 49.473L24.350 49.770Q23.826 49.770 23.611 50.250L22.486 52.891Q22.424 53 22.318 53L22.252 53Q22.139 53 22.084 52.891",[1890],[1874,3150,3151],{"transform":3096},[1879,3152],{"d":3153,"fill":3091,"stroke":3091,"className":3154,"style":1899},"M24.402 52.090Q24.402 51.606 24.804 51.311Q25.207 51.016 25.757 50.897Q26.308 50.777 26.800 50.777L26.800 50.488Q26.800 50.262 26.685 50.055Q26.570 49.848 26.373 49.729Q26.175 49.609 25.945 49.609Q25.519 49.609 25.234 49.715Q25.304 49.742 25.351 49.797Q25.398 49.852 25.423 49.922Q25.449 49.992 25.449 50.067Q25.449 50.172 25.398 50.264Q25.347 50.356 25.255 50.406Q25.164 50.457 25.058 50.457Q24.953 50.457 24.861 50.406Q24.769 50.356 24.718 50.264Q24.668 50.172 24.668 50.067Q24.668 49.649 25.056 49.502Q25.445 49.356 25.945 49.356Q26.277 49.356 26.630 49.486Q26.984 49.617 27.212 49.871Q27.441 50.125 27.441 50.473L27.441 52.274Q27.441 52.406 27.513 52.516Q27.586 52.625 27.714 52.625Q27.839 52.625 27.908 52.520Q27.976 52.414 27.976 52.274L27.976 51.762L28.257 51.762L28.257 52.274Q28.257 52.477 28.140 52.635Q28.023 52.793 27.841 52.877Q27.660 52.961 27.457 52.961Q27.226 52.961 27.074 52.789Q26.921 52.617 26.890 52.387Q26.730 52.668 26.421 52.834Q26.113 53 25.761 53Q25.250 53 24.826 52.777Q24.402 52.555 24.402 52.090M25.089 52.090Q25.089 52.375 25.316 52.561Q25.543 52.746 25.836 52.746Q26.082 52.746 26.306 52.629Q26.531 52.512 26.666 52.309Q26.800 52.106 26.800 51.852L26.800 51.020Q26.535 51.020 26.250 51.074Q25.964 51.129 25.693 51.258Q25.421 51.387 25.255 51.594Q25.089 51.801 25.089 52.090M30.480 52.922L28.625 52.922L28.625 52.625Q28.898 52.625 29.066 52.578Q29.234 52.531 29.234 52.363L29.234 50.227Q29.234 50.012 29.171 49.916Q29.109 49.820 28.990 49.799Q28.871 49.777 28.625 49.777L28.625 49.481L29.816 49.395L29.816 50.129Q29.929 49.914 30.123 49.746Q30.316 49.578 30.554 49.486Q30.793 49.395 31.046 49.395Q32.214 49.395 32.214 50.473L32.214 52.363Q32.214 52.531 32.384 52.578Q32.554 52.625 32.824 52.625L32.824 52.922L30.968 52.922L30.968 52.625Q31.242 52.625 31.410 52.578Q31.578 52.531 31.578 52.363L31.578 50.488Q31.578 50.106 31.457 49.877Q31.336 49.649 30.984 49.649Q30.671 49.649 30.418 49.811Q30.164 49.973 30.017 50.242Q29.871 50.512 29.871 50.809L29.871 52.363Q29.871 52.531 30.041 52.578Q30.211 52.625 30.480 52.625L30.480 52.922M33.312 51.195Q33.312 50.699 33.562 50.274Q33.812 49.848 34.232 49.602Q34.652 49.356 35.152 49.356Q35.691 49.356 36.082 49.481Q36.472 49.606 36.472 50.020Q36.472 50.125 36.421 50.217Q36.371 50.309 36.279 50.359Q36.187 50.410 36.078 50.410Q35.972 50.410 35.880 50.359Q35.789 50.309 35.738 50.217Q35.687 50.125 35.687 50.020Q35.687 49.797 35.855 49.692Q35.632 49.633 35.160 49.633Q34.863 49.633 34.648 49.772Q34.433 49.910 34.302 50.141Q34.171 50.371 34.113 50.641Q34.054 50.910 34.054 51.195Q34.054 51.590 34.187 51.940Q34.320 52.289 34.591 52.506Q34.863 52.723 35.261 52.723Q35.636 52.723 35.912 52.506Q36.187 52.289 36.289 51.930Q36.304 51.867 36.367 51.867L36.472 51.867Q36.507 51.867 36.533 51.895Q36.558 51.922 36.558 51.961L36.558 51.984Q36.425 52.465 36.041 52.733Q35.656 53 35.152 53Q34.789 53 34.455 52.863Q34.121 52.727 33.861 52.477Q33.601 52.227 33.457 51.891Q33.312 51.555 33.312 51.195M37.046 51.168Q37.046 50.688 37.279 50.272Q37.511 49.856 37.921 49.606Q38.332 49.356 38.808 49.356Q39.539 49.356 39.937 49.797Q40.336 50.238 40.336 50.969Q40.336 51.074 40.242 51.098L37.793 51.098L37.793 51.168Q37.793 51.578 37.914 51.934Q38.035 52.289 38.306 52.506Q38.578 52.723 39.007 52.723Q39.371 52.723 39.668 52.494Q39.964 52.266 40.066 51.914Q40.074 51.867 40.160 51.852L40.242 51.852Q40.336 51.879 40.336 51.961Q40.336 51.969 40.328 52Q40.265 52.227 40.127 52.410Q39.988 52.594 39.796 52.727Q39.605 52.859 39.386 52.930Q39.168 53 38.929 53Q38.558 53 38.220 52.863Q37.882 52.727 37.615 52.475Q37.347 52.223 37.197 51.883Q37.046 51.543 37.046 51.168M37.800 50.859L39.761 50.859Q39.761 50.555 39.660 50.264Q39.558 49.973 39.341 49.791Q39.125 49.609 38.808 49.609Q38.507 49.609 38.277 49.797Q38.046 49.984 37.923 50.276Q37.800 50.567 37.800 50.859",[1890],[1874,3156,3157],{"transform":3096},[1879,3158],{"d":3159,"fill":3091,"stroke":3091,"className":3160,"style":1899},"M43.772 52.250Q43.772 52.145 43.795 52.051L44.787 48.074Q44.826 47.887 44.826 47.859Q44.826 47.754 44.330 47.754Q44.237 47.723 44.237 47.625L44.260 47.524Q44.268 47.477 44.350 47.457L45.451 47.371Q45.494 47.371 45.533 47.402Q45.573 47.434 45.573 47.488L44.420 52.090Q44.381 52.336 44.381 52.387Q44.381 52.746 44.627 52.746Q44.803 52.746 44.918 52.576Q45.033 52.406 45.088 52.221Q45.143 52.035 45.213 51.746Q45.240 51.676 45.299 51.676L45.405 51.676Q45.444 51.676 45.467 51.705Q45.490 51.734 45.490 51.770Q45.490 51.785 45.483 51.801Q45.365 52.309 45.174 52.654Q44.983 53 44.612 53Q44.268 53 44.020 52.793Q43.772 52.586 43.772 52.250",[1890],[1874,3162,3163,3166],{"fill":3091,"stroke":3091,"style":2944},[1879,3164],{"fill":1881,"d":3165},"M-8.698-35.282C-26-20.763-34.363-10.058-43.124 7.906",[1879,3167],{"stroke":1881,"d":3168},"m-44.264 10.243 3.693-2.827-2.553.49-1.186-2.314",[2271,3170,3172,3173,3257,3258,3291,3292,3307,3308,3323],{"className":3171},[2274],"Container With Most Water: the area is ",[389,3174,3176],{"className":3175},[392],[389,3177,3179,3212],{"className":3178,"ariaHidden":397},[396],[389,3180,3182,3185,3188,3191,3197,3200,3203,3206,3209],{"className":3181},[401],[389,3183],{"className":3184,"style":487},[405],[389,3186,416],{"className":3187},[415],[389,3189,664],{"className":3190,"style":491},[410,423],[389,3192,3194],{"className":3193},[410],[389,3195,606],{"className":3196},[410],[389,3198,641],{"className":3199,"style":640},[410,423],[389,3201,465],{"className":3202},[464],[389,3204],{"className":3205,"style":601},[585],[389,3207,2850],{"className":3208},[605],[389,3210],{"className":3211,"style":601},[585],[389,3213,3215,3218,3224,3227,3230,3233,3236,3239,3242,3245,3248,3251,3254],{"className":3214},[401],[389,3216],{"className":3217,"style":487},[405],[389,3219,3221],{"className":3220},[2695],[389,3222,2866],{"className":3223},[410,2699],[389,3225,416],{"className":3226},[415],[389,3228,533],{"className":3229},[410,423],[389,3231,577],{"className":3232},[415],[389,3234,641],{"className":3235,"style":640},[410,423],[389,3237,622],{"className":3238},[464],[389,3240,971],{"className":3241},[970],[389,3243],{"className":3244,"style":586},[585],[389,3246,533],{"className":3247},[410,423],[389,3249,577],{"className":3250},[415],[389,3252,664],{"className":3253,"style":491},[410,423],[389,3255,2900],{"className":3256},[464],", bound by the shorter wall (here ",[389,3259,3261],{"className":3260},[392],[389,3262,3264],{"className":3263,"ariaHidden":397},[396],[389,3265,3267,3270,3273,3276,3279,3282,3288],{"className":3266},[401],[389,3268],{"className":3269,"style":487},[405],[389,3271,533],{"className":3272},[410,423],[389,3274,577],{"className":3275},[415],[389,3277,641],{"className":3278,"style":640},[410,423],[389,3280,622],{"className":3281},[464],[389,3283,3285],{"className":3284},[410],[389,3286,724],{"className":3287},[649],[389,3289,2304],{"className":3290},[410],"). Moving the taller wall ",[389,3293,3295],{"className":3294},[392],[389,3296,3298],{"className":3297,"ariaHidden":397},[396],[389,3299,3301,3304],{"className":3300},[401],[389,3302],{"className":3303,"style":660},[405],[389,3305,664],{"className":3306,"style":491},[410,423]," inward only loses width at the same height, so we advance the shorter wall ",[389,3309,3311],{"className":3310},[392],[389,3312,3314],{"className":3313,"ariaHidden":397},[396],[389,3315,3317,3320],{"className":3316},[401],[389,3318],{"className":3319,"style":861},[405],[389,3321,641],{"className":3322,"style":640},[410,423]," instead",[548,3325,3327],{"id":3326},"two-pointers-same-direction-fastslow","Two pointers, same direction (fast\u002Fslow)",[381,3329,3330,3331,3334,3335,3338,3339,3356,3357,3338,3360,3375,3376,3391,3392,3416],{},"A second flavor sends both pointers the ",[1253,3332,3333],{},"same"," way at different speeds. The\ncanonical use is rewriting an array in place: a ",[385,3336,3337],{},"write"," pointer ",[389,3340,3342],{"className":3341},[392],[389,3343,3345],{"className":3344,"ariaHidden":397},[396],[389,3346,3348,3351],{"className":3347},[401],[389,3349],{"className":3350,"style":660},[405],[389,3352,3355],{"className":3353,"style":3354},[410,423],"margin-right:0.0269em;","w"," trails a\n",[385,3358,3359],{},"read",[389,3361,3363],{"className":3362},[392],[389,3364,3366],{"className":3365,"ariaHidden":397},[396],[389,3367,3369,3372],{"className":3368},[401],[389,3370],{"className":3371,"style":660},[405],[389,3373,664],{"className":3374,"style":491},[410,423],", and ",[389,3377,3379],{"className":3378},[392],[389,3380,3382],{"className":3381,"ariaHidden":397},[396],[389,3383,3385,3388],{"className":3384},[401],[389,3386],{"className":3387,"style":660},[405],[389,3389,3355],{"className":3390,"style":3354},[410,423]," only advances when ",[389,3393,3395],{"className":3394},[392],[389,3396,3398],{"className":3397,"ariaHidden":397},[396],[389,3399,3401,3404,3407,3410,3413],{"className":3400},[401],[389,3402],{"className":3403,"style":487},[405],[389,3405,533],{"className":3406},[410,423],[389,3408,577],{"className":3409},[415],[389,3411,664],{"className":3412,"style":491},[410,423],[389,3414,622],{"className":3415},[464]," is an element we want to\nkeep. To remove duplicates from a sorted array:",[939,3418,3419],{"type":941},[381,3420,3421,3423,3424,3478],{},[385,3422,946],{}," ",[389,3425,3427],{"className":3426},[392],[389,3428,3430,3466],{"className":3429,"ariaHidden":397},[396],[389,3431,3433,3436,3439,3442,3445,3448,3451,3454,3457,3460,3463],{"className":3432},[401],[389,3434],{"className":3435,"style":487},[405],[389,3437,533],{"className":3438},[410,423],[389,3440,577],{"className":3441},[415],[389,3443,581],{"className":3444},[410],[389,3446],{"className":3447,"style":586},[585],[389,3449,591],{"className":3450},[590],[389,3452],{"className":3453,"style":586},[585],[389,3455,3355],{"className":3456,"style":3354},[410,423],[389,3458],{"className":3459,"style":601},[585],[389,3461,606],{"className":3462},[605],[389,3464],{"className":3465,"style":601},[585],[389,3467,3469,3472,3475],{"className":3468},[401],[389,3470],{"className":3471,"style":487},[405],[389,3473,499],{"className":3474},[410],[389,3476,622],{"className":3477},[464]," holds the de-duplicated prefix of everything\nread so far, in order.",[3480,3481,3485],"pre",{"className":3482,"code":3483,"language":3484,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Dedup}(a)$ — compact a sorted array in place, returning new length\n$w \\gets 1$\nfor $r \\gets 1$ to $n-1$ do\n  if $a[r] \\ne a[w-1]$ then\n    $a[w] \\gets a[r]$\n    $w \\gets w + 1$\nreturn $w$\n","algorithm",[3486,3487,3488,3494,3499,3504,3509,3514,3519],"code",{"__ignoreMap":376},[389,3489,3491],{"class":3490,"line":6},"line",[389,3492,3493],{},"caption: $\\textsc{Dedup}(a)$ — compact a sorted array in place, returning new length\n",[389,3495,3496],{"class":3490,"line":18},[389,3497,3498],{},"$w \\gets 1$\n",[389,3500,3501],{"class":3490,"line":24},[389,3502,3503],{},"for $r \\gets 1$ to $n-1$ do\n",[389,3505,3506],{"class":3490,"line":73},[389,3507,3508],{},"  if $a[r] \\ne a[w-1]$ then\n",[389,3510,3511],{"class":3490,"line":102},[389,3512,3513],{},"    $a[w] \\gets a[r]$\n",[389,3515,3516],{"class":3490,"line":108},[389,3517,3518],{},"    $w \\gets w + 1$\n",[389,3520,3521],{"class":3490,"line":116},[389,3522,3523],{},"return $w$\n",[381,3525,3526,3527,3551,3552,3576,3577,3580],{},"The read pointer scans every element once and the write pointer never overtakes\nit, so the routine is ",[389,3528,3530],{"className":3529},[392],[389,3531,3533],{"className":3532,"ariaHidden":397},[396],[389,3534,3536,3539,3542,3545,3548],{"className":3535},[401],[389,3537],{"className":3538,"style":487},[405],[389,3540,492],{"className":3541,"style":491},[410,423],[389,3543,416],{"className":3544},[415],[389,3546,424],{"className":3547},[410,423],[389,3549,465],{"className":3550},[464]," time and ",[389,3553,3555],{"className":3554},[392],[389,3556,3558],{"className":3557,"ariaHidden":397},[396],[389,3559,3561,3564,3567,3570,3573],{"className":3560},[401],[389,3562],{"className":3563,"style":487},[405],[389,3565,492],{"className":3566,"style":491},[410,423],[389,3568,416],{"className":3569},[415],[389,3571,499],{"className":3572},[410],[389,3574,465],{"className":3575},[464]," extra space; it overwrites the input\nrather than allocating output. The same trailing-write pattern underlies in-place\n",[385,3578,3579],{},"partition"," (the core of quicksort and quickselect): a write pointer marks the\nboundary between elements already placed below the pivot and the rest.",[1861,3582,3584,3789],{"className":3583},[1864,1865],[1867,3585,3589],{"xmlns":1869,"width":3586,"height":3587,"viewBox":3588},"186.774","132.640","-75 -75 140.081 99.480",[1874,3590,3591,3594,3600,3606,3609,3615,3622,3625,3632,3639,3642,3649,3656,3659,3665,3672,3675,3698,3707,3715,3722,3730],{"stroke":1876,"style":1877},[1879,3592],{"fill":1881,"d":3593},"M-63.58-37.338h22.761V-60.1H-63.58Z",[1874,3595,3596],{"transform":1885},[1879,3597],{"d":3598,"fill":1876,"stroke":1876,"className":3599,"style":1891},"M-48.293-48.719L-51.325-48.719L-51.325-49.035Q-50.174-49.035-50.174-49.330L-50.174-54.054Q-50.662-53.821-51.383-53.821L-51.383-54.137Q-50.253-54.137-49.691-54.713L-49.546-54.713Q-49.511-54.713-49.478-54.680Q-49.445-54.647-49.445-54.612L-49.445-49.330Q-49.445-49.035-48.293-49.035",[1890],[1874,3601,3602],{"transform":1894},[1879,3603],{"d":3604,"fill":1876,"stroke":1876,"className":3605,"style":1899},"M-50.079-48.551Q-50.782-48.551-51.182-48.951Q-51.583-49.352-51.727-49.961Q-51.872-50.571-51.872-51.270Q-51.872-51.793-51.802-52.256Q-51.731-52.719-51.538-53.131Q-51.345-53.543-50.987-53.791Q-50.630-54.039-50.079-54.039Q-49.528-54.039-49.171-53.791Q-48.813-53.543-48.622-53.133Q-48.430-52.723-48.360-52.254Q-48.290-51.785-48.290-51.270Q-48.290-50.571-48.432-49.963Q-48.575-49.356-48.975-48.953Q-49.376-48.551-50.079-48.551M-50.079-48.809Q-49.606-48.809-49.374-49.244Q-49.141-49.680-49.087-50.219Q-49.032-50.758-49.032-51.399Q-49.032-52.395-49.216-53.088Q-49.399-53.782-50.079-53.782Q-50.446-53.782-50.667-53.543Q-50.888-53.305-50.983-52.948Q-51.079-52.590-51.104-52.219Q-51.130-51.848-51.130-51.399Q-51.130-50.758-51.075-50.219Q-51.020-49.680-50.788-49.244Q-50.555-48.809-50.079-48.809",[1890],[1879,3607],{"fill":1881,"d":3608},"M-37.974-37.338h22.763V-60.1h-22.763Z",[1874,3610,3612],{"transform":3611},"translate(23.295 2.9)",[1879,3613],{"d":3598,"fill":1876,"stroke":1876,"className":3614,"style":1891},[1890],[1874,3616,3618],{"transform":3617},"translate(23.482 -15.063)",[1879,3619],{"d":3620,"fill":1876,"stroke":1876,"className":3621,"style":1899},"M-48.606-48.719L-51.399-48.719L-51.399-49.016Q-50.337-49.016-50.337-49.278L-50.337-53.446Q-50.766-53.231-51.446-53.231L-51.446-53.528Q-50.427-53.528-49.911-54.039L-49.766-54.039Q-49.692-54.020-49.673-53.942L-49.673-49.278Q-49.673-49.016-48.606-49.016",[1890],[1879,3623],{"fill":1881,"d":3624},"M-12.366-37.338h22.762V-60.1h-22.762Z",[1874,3626,3628],{"transform":3627},"translate(48.902 2.9)",[1879,3629],{"d":3630,"fill":1876,"stroke":1876,"className":3631,"style":1891},"M-48.293-48.719L-51.743-48.719L-51.743-48.952Q-51.743-48.965-51.712-48.996L-50.258-50.573Q-49.792-51.070-49.539-51.375Q-49.286-51.681-49.095-52.092Q-48.904-52.503-48.904-52.942Q-48.904-53.531-49.227-53.964Q-49.550-54.397-50.130-54.397Q-50.394-54.397-50.640-54.287Q-50.886-54.177-51.062-53.990Q-51.238-53.803-51.334-53.553L-51.255-53.553Q-51.053-53.553-50.910-53.417Q-50.767-53.281-50.767-53.065Q-50.767-52.859-50.910-52.720Q-51.053-52.582-51.255-52.582Q-51.457-52.582-51.600-52.725Q-51.743-52.867-51.743-53.065Q-51.743-53.527-51.506-53.900Q-51.268-54.274-50.868-54.493Q-50.469-54.713-50.020-54.713Q-49.497-54.713-49.043-54.498Q-48.588-54.282-48.315-53.883Q-48.043-53.483-48.043-52.942Q-48.043-52.547-48.214-52.193Q-48.386-51.839-48.651-51.560Q-48.917-51.281-49.368-50.896Q-49.818-50.512-49.897-50.437L-50.921-49.475L-50.104-49.475Q-49.453-49.475-49.016-49.486Q-48.579-49.497-48.548-49.519Q-48.478-49.602-48.423-49.842Q-48.368-50.081-48.328-50.349L-48.043-50.349",[1890],[1874,3633,3635],{"transform":3634},"translate(49.09 -15.063)",[1879,3636],{"d":3637,"fill":1876,"stroke":1876,"className":3638,"style":1899},"M-48.614-48.719L-51.774-48.719L-51.774-48.926Q-51.774-48.953-51.751-48.985L-50.399-50.383Q-50.020-50.770-49.772-51.059Q-49.524-51.348-49.350-51.705Q-49.177-52.063-49.177-52.453Q-49.177-52.801-49.309-53.094Q-49.442-53.387-49.696-53.565Q-49.950-53.742-50.305-53.742Q-50.665-53.742-50.956-53.547Q-51.247-53.352-51.391-53.024L-51.337-53.024Q-51.153-53.024-51.028-52.903Q-50.903-52.782-50.903-52.590Q-50.903-52.410-51.028-52.282Q-51.153-52.153-51.337-52.153Q-51.516-52.153-51.645-52.282Q-51.774-52.410-51.774-52.590Q-51.774-52.992-51.554-53.328Q-51.333-53.664-50.968-53.852Q-50.602-54.039-50.200-54.039Q-49.720-54.039-49.304-53.852Q-48.888-53.664-48.636-53.303Q-48.384-52.942-48.384-52.453Q-48.384-52.094-48.538-51.791Q-48.692-51.489-48.944-51.229Q-49.196-50.969-49.546-50.684Q-49.895-50.399-50.063-50.246L-50.993-49.407L-50.278-49.407Q-48.903-49.407-48.864-49.446Q-48.794-49.524-48.751-49.709Q-48.708-49.895-48.665-50.184L-48.384-50.184",[1890],[1879,3640],{"fill":1881,"d":3641},"M13.241-37.338h22.762V-60.1H13.241Z",[1874,3643,3645],{"transform":3644},"translate(74.51 2.9)",[1879,3646],{"d":3647,"fill":1876,"stroke":1876,"className":3648,"style":1891},"M-51.299-49.440L-51.343-49.440Q-51.141-49.123-50.754-48.965Q-50.367-48.807-49.941-48.807Q-49.405-48.807-49.166-49.242Q-48.926-49.677-48.926-50.257Q-48.926-50.837-49.172-51.277Q-49.418-51.716-49.950-51.716L-50.570-51.716Q-50.596-51.716-50.629-51.745Q-50.662-51.773-50.662-51.795L-50.662-51.896Q-50.662-51.927-50.633-51.951Q-50.605-51.975-50.570-51.975L-50.051-52.015Q-49.585-52.015-49.339-52.487Q-49.093-52.960-49.093-53.478Q-49.093-53.905-49.306-54.179Q-49.519-54.454-49.941-54.454Q-50.284-54.454-50.609-54.324Q-50.934-54.195-51.119-53.940L-51.093-53.940Q-50.890-53.940-50.754-53.799Q-50.618-53.658-50.618-53.461Q-50.618-53.263-50.752-53.129Q-50.886-52.995-51.084-52.995Q-51.286-52.995-51.424-53.129Q-51.563-53.263-51.563-53.461Q-51.563-54.050-51.060-54.381Q-50.556-54.713-49.941-54.713Q-49.563-54.713-49.161-54.573Q-48.759-54.432-48.491-54.153Q-48.223-53.874-48.223-53.478Q-48.223-52.929-48.577-52.492Q-48.930-52.054-49.471-51.870Q-49.080-51.791-48.735-51.567Q-48.390-51.343-48.179-51.002Q-47.968-50.661-47.968-50.266Q-47.968-49.884-48.131-49.561Q-48.293-49.238-48.585-49.002Q-48.878-48.767-49.225-48.644Q-49.572-48.521-49.941-48.521Q-50.389-48.521-50.820-48.682Q-51.251-48.842-51.532-49.169Q-51.813-49.497-51.813-49.954Q-51.813-50.169-51.666-50.312Q-51.519-50.455-51.299-50.455Q-51.088-50.455-50.943-50.310Q-50.798-50.165-50.798-49.954Q-50.798-49.743-50.945-49.591Q-51.093-49.440-51.299-49.440",[1890],[1874,3650,3652],{"transform":3651},"translate(74.697 -15.063)",[1879,3653],{"d":3654,"fill":1876,"stroke":1876,"className":3655,"style":1899},"M-51.407-49.352Q-51.216-49.078-50.860-48.951Q-50.505-48.824-50.122-48.824Q-49.786-48.824-49.577-49.010Q-49.368-49.196-49.272-49.489Q-49.177-49.782-49.177-50.094Q-49.177-50.418-49.274-50.713Q-49.372-51.008-49.585-51.192Q-49.798-51.375-50.130-51.375L-50.696-51.375Q-50.727-51.375-50.757-51.405Q-50.786-51.434-50.786-51.461L-50.786-51.543Q-50.786-51.578-50.757-51.604Q-50.727-51.629-50.696-51.629L-50.216-51.664Q-49.930-51.664-49.733-51.869Q-49.536-52.074-49.440-52.369Q-49.345-52.664-49.345-52.942Q-49.345-53.321-49.544-53.559Q-49.743-53.797-50.122-53.797Q-50.442-53.797-50.731-53.690Q-51.020-53.582-51.184-53.360Q-51.005-53.360-50.882-53.233Q-50.759-53.106-50.759-52.934Q-50.759-52.762-50.884-52.637Q-51.009-52.512-51.184-52.512Q-51.356-52.512-51.481-52.637Q-51.606-52.762-51.606-52.934Q-51.606-53.301-51.382-53.549Q-51.157-53.797-50.817-53.918Q-50.477-54.039-50.122-54.039Q-49.774-54.039-49.411-53.918Q-49.048-53.797-48.800-53.547Q-48.552-53.297-48.552-52.942Q-48.552-52.457-48.870-52.074Q-49.188-51.692-49.665-51.520Q-49.114-51.410-48.714-51.024Q-48.313-50.637-48.313-50.102Q-48.313-49.645-48.577-49.289Q-48.841-48.934-49.263-48.742Q-49.684-48.551-50.122-48.551Q-50.532-48.551-50.925-48.686Q-51.317-48.821-51.583-49.106Q-51.848-49.391-51.848-49.809Q-51.848-50.004-51.716-50.133Q-51.583-50.262-51.391-50.262Q-51.266-50.262-51.163-50.203Q-51.059-50.145-50.997-50.039Q-50.934-49.934-50.934-49.809Q-50.934-49.614-51.069-49.483Q-51.204-49.352-51.407-49.352",[1890],[1879,3657],{"fill":1881,"d":3658},"M38.848-37.338h22.763V-60.1H38.848Z",[1874,3660,3662],{"transform":3661},"translate(100.117 2.9)",[1879,3663],{"d":3647,"fill":1876,"stroke":1876,"className":3664,"style":1891},[1890],[1874,3666,3668],{"transform":3667},"translate(100.304 -15.063)",[1879,3669],{"d":3670,"fill":1876,"stroke":1876,"className":3671,"style":1899},"M-49.720-50.032L-51.962-50.032L-51.962-50.328L-49.391-53.985Q-49.352-54.039-49.290-54.039L-49.145-54.039Q-49.095-54.039-49.063-54.008Q-49.032-53.977-49.032-53.926L-49.032-50.328L-48.200-50.328L-48.200-50.032L-49.032-50.032L-49.032-49.278Q-49.032-49.016-48.208-49.016L-48.208-48.719L-50.544-48.719L-50.544-49.016Q-49.720-49.016-49.720-49.278L-49.720-50.032M-49.665-53.133L-51.634-50.328L-49.665-50.328",[1890],[1879,3673],{"fill":1881,"stroke":1987,"d":3674,"style":1989},"M-65.003-35.492v-26.453a1 1 0 0 1 1-1h49.215a1 1 0 0 1 1 1v26.453a1 1 0 0 1-1 1h-49.215a1 1 0 0 1-1-1Zm51.215-27.453",[1874,3676,3677],{"fill":1987,"stroke":1987},[1874,3678,3679,3686,3692],{"fill":1987,"stroke":1881,"fontFamily":2155,"fontSize":1994},[1874,3680,3682],{"transform":3681},"translate(-7.151 29.03)",[1879,3683],{"d":3684,"fill":1987,"stroke":1987,"className":3685,"style":1899},"M-50.138-48.719L-51.934-48.719L-51.934-49.016Q-51.665-49.016-51.497-49.061Q-51.329-49.106-51.329-49.278L-51.329-53.438Q-51.329-53.653-51.391-53.748Q-51.454-53.844-51.571-53.865Q-51.688-53.887-51.934-53.887L-51.934-54.184L-50.712-54.270L-50.712-50.504L-49.614-51.391Q-49.407-51.571-49.407-51.719Q-49.407-51.785-49.460-51.828Q-49.513-51.871-49.583-51.871L-49.583-52.168L-48.048-52.168L-48.048-51.871Q-48.579-51.871-49.177-51.391L-49.786-50.895L-48.712-49.496Q-48.575-49.321-48.468-49.213Q-48.360-49.106-48.225-49.061Q-48.091-49.016-47.864-49.016L-47.864-48.719L-49.489-48.719L-49.489-49.016Q-49.247-49.016-49.247-49.168Q-49.247-49.246-49.290-49.317Q-49.333-49.387-49.415-49.496L-50.216-50.543L-50.743-50.117L-50.743-49.278Q-50.743-49.110-50.575-49.063Q-50.407-49.016-50.138-49.016",[1890],[1874,3687,3688],{"transform":3681},[1879,3689],{"d":3690,"fill":1987,"stroke":1987,"className":3691,"style":1899},"M-47.712-50.473Q-47.712-50.953-47.479-51.369Q-47.247-51.785-46.837-52.035Q-46.427-52.285-45.950-52.285Q-45.220-52.285-44.821-51.844Q-44.423-51.403-44.423-50.672Q-44.423-50.567-44.516-50.543L-46.966-50.543L-46.966-50.473Q-46.966-50.063-46.845-49.707Q-46.723-49.352-46.452-49.135Q-46.180-48.918-45.751-48.918Q-45.388-48.918-45.091-49.147Q-44.794-49.375-44.692-49.727Q-44.684-49.774-44.598-49.789L-44.516-49.789Q-44.423-49.762-44.423-49.680Q-44.423-49.672-44.430-49.641Q-44.493-49.414-44.632-49.231Q-44.770-49.047-44.962-48.914Q-45.153-48.782-45.372-48.711Q-45.591-48.641-45.829-48.641Q-46.200-48.641-46.538-48.778Q-46.876-48.914-47.143-49.166Q-47.411-49.418-47.561-49.758Q-47.712-50.098-47.712-50.473M-46.958-50.782L-44.997-50.782Q-44.997-51.086-45.098-51.377Q-45.200-51.668-45.417-51.850Q-45.634-52.032-45.950-52.032Q-46.251-52.032-46.481-51.844Q-46.712-51.657-46.835-51.365Q-46.958-51.074-46.958-50.782M-42.052-47.168L-43.907-47.168L-43.907-47.461Q-43.638-47.461-43.470-47.506Q-43.302-47.551-43.302-47.727L-43.302-51.551Q-43.302-51.758-43.458-51.811Q-43.614-51.864-43.907-51.864L-43.907-52.160L-42.684-52.246L-42.684-51.782Q-42.454-52.004-42.139-52.125Q-41.825-52.246-41.485-52.246Q-41.013-52.246-40.608-52Q-40.204-51.754-39.971-51.338Q-39.739-50.922-39.739-50.446Q-39.739-50.071-39.888-49.742Q-40.036-49.414-40.305-49.162Q-40.575-48.910-40.919-48.776Q-41.263-48.641-41.622-48.641Q-41.911-48.641-42.182-48.762Q-42.454-48.883-42.661-49.094L-42.661-47.727Q-42.661-47.551-42.493-47.506Q-42.325-47.461-42.052-47.461L-42.052-47.168M-42.661-51.383L-42.661-49.543Q-42.509-49.254-42.247-49.074Q-41.985-48.895-41.677-48.895Q-41.391-48.895-41.169-49.033Q-40.946-49.172-40.794-49.403Q-40.641-49.633-40.563-49.905Q-40.485-50.176-40.485-50.446Q-40.485-50.778-40.610-51.135Q-40.735-51.492-40.983-51.729Q-41.231-51.965-41.579-51.965Q-41.903-51.965-42.198-51.809Q-42.493-51.653-42.661-51.383M-38.591-49.680L-38.591-51.871L-39.294-51.871L-39.294-52.125Q-38.938-52.125-38.696-52.358Q-38.454-52.590-38.343-52.938Q-38.231-53.285-38.231-53.641L-37.950-53.641L-37.950-52.168L-36.774-52.168L-36.774-51.871L-37.950-51.871L-37.950-49.696Q-37.950-49.375-37.831-49.147Q-37.712-48.918-37.430-48.918Q-37.251-48.918-37.134-49.041Q-37.016-49.164-36.964-49.344Q-36.911-49.524-36.911-49.696L-36.911-50.168L-36.630-50.168L-36.630-49.680Q-36.630-49.426-36.735-49.186Q-36.841-48.946-37.038-48.793Q-37.235-48.641-37.493-48.641Q-37.809-48.641-38.061-48.764Q-38.313-48.887-38.452-49.121Q-38.591-49.356-38.591-49.680",[1890],[1874,3693,3694],{"transform":3681},[1879,3695],{"d":3696,"fill":1987,"stroke":1987,"className":3697,"style":1899},"M-31.190-47.168L-33.045-47.168L-33.045-47.461Q-32.776-47.461-32.608-47.506Q-32.440-47.551-32.440-47.727L-32.440-51.551Q-32.440-51.758-32.596-51.811Q-32.752-51.864-33.045-51.864L-33.045-52.160L-31.823-52.246L-31.823-51.782Q-31.592-52.004-31.278-52.125Q-30.963-52.246-30.623-52.246Q-30.151-52.246-29.747-52Q-29.342-51.754-29.110-51.338Q-28.877-50.922-28.877-50.446Q-28.877-50.071-29.026-49.742Q-29.174-49.414-29.444-49.162Q-29.713-48.910-30.057-48.776Q-30.401-48.641-30.760-48.641Q-31.049-48.641-31.321-48.762Q-31.592-48.883-31.799-49.094L-31.799-47.727Q-31.799-47.551-31.631-47.506Q-31.463-47.461-31.190-47.461L-31.190-47.168M-31.799-51.383L-31.799-49.543Q-31.647-49.254-31.385-49.074Q-31.123-48.895-30.815-48.895Q-30.530-48.895-30.307-49.033Q-30.084-49.172-29.932-49.403Q-29.780-49.633-29.702-49.905Q-29.623-50.176-29.623-50.446Q-29.623-50.778-29.748-51.135Q-29.873-51.492-30.122-51.729Q-30.370-51.965-30.717-51.965Q-31.041-51.965-31.336-51.809Q-31.631-51.653-31.799-51.383M-26.346-48.719L-28.327-48.719L-28.327-49.016Q-28.057-49.016-27.889-49.061Q-27.721-49.106-27.721-49.278L-27.721-51.414Q-27.721-51.629-27.784-51.725Q-27.846-51.821-27.963-51.842Q-28.081-51.864-28.327-51.864L-28.327-52.160L-27.159-52.246L-27.159-51.461Q-27.081-51.672-26.928-51.858Q-26.776-52.043-26.577-52.145Q-26.377-52.246-26.151-52.246Q-25.905-52.246-25.713-52.102Q-25.522-51.957-25.522-51.727Q-25.522-51.571-25.627-51.461Q-25.733-51.352-25.889-51.352Q-26.045-51.352-26.155-51.461Q-26.264-51.571-26.264-51.727Q-26.264-51.887-26.159-51.992Q-26.483-51.992-26.698-51.764Q-26.913-51.535-27.008-51.196Q-27.104-50.856-27.104-50.551L-27.104-49.278Q-27.104-49.110-26.877-49.063Q-26.651-49.016-26.346-49.016L-26.346-48.719M-25.041-50.473Q-25.041-50.953-24.809-51.369Q-24.577-51.785-24.166-52.035Q-23.756-52.285-23.280-52.285Q-22.549-52.285-22.151-51.844Q-21.752-51.403-21.752-50.672Q-21.752-50.567-21.846-50.543L-24.295-50.543L-24.295-50.473Q-24.295-50.063-24.174-49.707Q-24.053-49.352-23.782-49.135Q-23.510-48.918-23.081-48.918Q-22.717-48.918-22.420-49.147Q-22.123-49.375-22.022-49.727Q-22.014-49.774-21.928-49.789L-21.846-49.789Q-21.752-49.762-21.752-49.680Q-21.752-49.672-21.760-49.641Q-21.823-49.414-21.961-49.231Q-22.100-49.047-22.291-48.914Q-22.483-48.782-22.702-48.711Q-22.920-48.641-23.159-48.641Q-23.530-48.641-23.868-48.778Q-24.206-48.914-24.473-49.166Q-24.741-49.418-24.891-49.758Q-25.041-50.098-25.041-50.473M-24.288-50.782L-22.327-50.782Q-22.327-51.086-22.428-51.377Q-22.530-51.668-22.747-51.850Q-22.963-52.032-23.280-52.032Q-23.581-52.032-23.811-51.844Q-24.041-51.657-24.165-51.365Q-24.288-51.074-24.288-50.782M-19.405-48.719L-21.237-48.719L-21.237-49.016Q-20.967-49.016-20.799-49.061Q-20.631-49.106-20.631-49.278L-20.631-51.871L-21.272-51.871L-21.272-52.168L-20.631-52.168L-20.631-53.102Q-20.631-53.516-20.323-53.797Q-20.014-54.078-19.569-54.215Q-19.123-54.352-18.717-54.352Q-18.315-54.352-17.997-54.125Q-17.678-53.899-17.678-53.512Q-17.678-53.336-17.791-53.223Q-17.905-53.110-18.077-53.110Q-18.252-53.110-18.366-53.223Q-18.479-53.336-18.479-53.512Q-18.479-53.657-18.389-53.766Q-18.299-53.875-18.166-53.903Q-18.452-54.094-18.799-54.094Q-19.096-54.094-19.383-53.973Q-19.670-53.852-19.854-53.619Q-20.038-53.387-20.038-53.086L-20.038-52.168L-18.885-52.168L-17.663-52.262L-17.663-49.278Q-17.663-49.110-17.495-49.063Q-17.327-49.016-17.053-49.016L-17.053-48.719L-18.885-48.719L-18.885-49.016Q-18.616-49.016-18.448-49.061Q-18.280-49.106-18.280-49.278L-18.280-51.438Q-18.280-51.645-18.327-51.744Q-18.373-51.844-18.549-51.871L-20.014-51.871L-20.014-49.278Q-20.014-49.110-19.846-49.063Q-19.678-49.016-19.405-49.016L-19.405-48.719M-15.159-48.719L-16.655-48.719L-16.655-49.016Q-16.022-49.016-15.600-49.496L-14.831-50.407L-15.823-51.606Q-15.979-51.785-16.141-51.828Q-16.303-51.871-16.608-51.871L-16.608-52.168L-14.920-52.168L-14.920-51.871Q-15.014-51.871-15.090-51.828Q-15.166-51.785-15.166-51.696Q-15.166-51.653-15.135-51.606L-14.479-50.817L-13.998-51.391Q-13.881-51.528-13.881-51.664Q-13.881-51.754-13.932-51.813Q-13.983-51.871-14.065-51.871L-14.065-52.168L-12.577-52.168L-12.577-51.871Q-13.213-51.871-13.623-51.391L-14.303-50.590L-13.217-49.278Q-13.057-49.102-12.897-49.059Q-12.737-49.016-12.432-49.016L-12.432-48.719L-14.120-48.719L-14.120-49.016Q-14.030-49.016-13.952-49.059Q-13.873-49.102-13.873-49.192Q-13.873-49.215-13.905-49.278L-14.647-50.184L-15.233-49.496Q-15.350-49.360-15.350-49.223Q-15.350-49.137-15.299-49.076Q-15.248-49.016-15.159-49.016",[1890],[1874,3699,3700],{"fill":1987,"stroke":1987},[1874,3701,3703],{"transform":3702},"translate(74.607 47.462)",[1879,3704],{"d":3705,"fill":1987,"stroke":1987,"className":3706,"style":1891},"M-51.462-48.890Q-51.462-48.943-51.453-48.978L-50.785-51.646Q-50.732-51.844-50.732-52.041Q-50.732-52.437-50.996-52.437Q-51.282-52.437-51.416-52.114Q-51.550-51.791-51.668-51.285Q-51.686-51.202-51.761-51.202L-51.866-51.202Q-51.914-51.202-51.936-51.241Q-51.958-51.281-51.958-51.321Q-51.796-51.940-51.596-52.318Q-51.396-52.696-50.974-52.696Q-50.666-52.696-50.420-52.522Q-50.174-52.349-50.104-52.059Q-49.603-52.696-48.935-52.696Q-48.636-52.696-48.416-52.520Q-48.197-52.344-48.197-52.050Q-48.197-51.817-48.344-51.646Q-48.491-51.474-48.715-51.474Q-48.856-51.474-48.961-51.567Q-49.067-51.659-49.067-51.804Q-49.067-52.002-48.933-52.149Q-48.799-52.296-48.601-52.318Q-48.737-52.437-48.952-52.437Q-49.629-52.437-50.148-51.492L-50.776-48.943Q-50.807-48.807-50.923-48.712Q-51.040-48.618-51.176-48.618Q-51.295-48.618-51.378-48.693Q-51.462-48.767-51.462-48.890",[1890],[1874,3708,3709,3712],{"fill":1987,"stroke":1987,"style":2944},[1879,3710],{"fill":1881,"d":3711},"M24.623-8.665v-25.873",[1879,3713],{"stroke":1881,"d":3714},"m24.622-37.138-2.08 4.16 2.08-1.56 2.08 1.56",[1874,3716,3718],{"transform":3717},"translate(48.058 47.247)",[1879,3719],{"d":3720,"fill":1876,"stroke":1876,"className":3721,"style":1899},"M-51.255-49.688Q-51.255-49.930-51.182-50.205Q-51.110-50.481-50.989-50.803Q-50.868-51.125-50.786-51.336Q-50.696-51.559-50.696-51.742Q-50.696-51.992-50.864-51.992Q-51.180-51.992-51.389-51.686Q-51.598-51.379-51.704-50.992Q-51.716-50.918-51.786-50.918L-51.888-50.918Q-51.923-50.918-51.950-50.953Q-51.977-50.989-51.977-51.016L-51.977-51.047Q-51.852-51.508-51.555-51.877Q-51.259-52.246-50.848-52.246Q-50.653-52.246-50.479-52.162Q-50.305-52.078-50.204-51.926Q-50.102-51.774-50.102-51.567Q-50.102-51.414-50.161-51.278Q-50.239-51.078-50.323-50.865Q-50.407-50.653-50.481-50.428Q-50.555-50.203-50.602-49.990Q-50.649-49.778-50.649-49.590Q-50.649-49.274-50.470-49.084Q-50.290-48.895-49.970-48.895Q-49.548-48.895-49.255-49.512Q-49.263-49.567-49.263-49.672Q-49.263-49.895-49.200-50.133L-48.766-51.879Q-48.731-52.004-48.628-52.086Q-48.524-52.168-48.399-52.168Q-48.286-52.168-48.208-52.098Q-48.130-52.028-48.130-51.910Q-48.130-51.887-48.145-51.824L-48.575-50.078Q-48.649-49.758-48.649-49.567Q-48.649-49.258-48.495-49.076Q-48.341-48.895-48.040-48.895Q-47.684-48.895-47.450-49.170Q-47.216-49.446-47.048-49.856Q-46.989-49.996-46.921-50.201Q-46.852-50.407-46.805-50.608Q-46.759-50.809-46.759-50.942Q-46.759-51.168-46.827-51.280Q-46.895-51.391-47.040-51.553Q-47.184-51.715-47.184-51.817Q-47.184-51.989-47.044-52.121Q-46.903-52.254-46.743-52.254Q-46.528-52.254-46.436-52.067Q-46.345-51.879-46.345-51.641Q-46.345-51.317-46.487-50.750Q-46.630-50.184-46.774-49.832Q-46.973-49.328-47.284-48.985Q-47.595-48.641-48.048-48.641Q-48.403-48.641-48.700-48.760Q-48.997-48.879-49.145-49.153Q-49.485-48.641-49.985-48.641Q-50.544-48.641-50.899-48.895Q-51.255-49.149-51.255-49.688",[1890],[1874,3723,3724,3727],{"style":2944},[1879,3725],{"fill":1881,"d":3726},"M-.985-8.45v-26.088",[1879,3728],{"stroke":1881,"d":3729},"m-.985-37.138-2.08 4.16 2.08-1.56 2.08 1.56",[1874,3731,3732],{"fill":1987,"stroke":1987},[1874,3733,3734,3741,3747,3753,3759,3765,3771,3777,3783],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,3735,3737],{"transform":3736},"translate(22.342 64.596)",[1879,3738],{"d":3739,"fill":1987,"stroke":1987,"className":3740,"style":1899},"M-50.696-48.641Q-51.052-48.641-51.321-48.821Q-51.591-49-51.731-49.295Q-51.872-49.590-51.872-49.949Q-51.872-50.336-51.710-50.750Q-51.548-51.164-51.264-51.502Q-50.981-51.840-50.612-52.043Q-50.243-52.246-49.841-52.246Q-49.348-52.246-49.071-51.797Q-49.040-51.930-48.936-52.012Q-48.833-52.094-48.704-52.094Q-48.591-52.094-48.511-52.024Q-48.430-51.953-48.430-51.840Q-48.430-51.813-48.446-51.750L-49.001-49.551Q-49.040-49.305-49.040-49.254Q-49.040-48.895-48.794-48.895Q-48.649-48.895-48.548-49.002Q-48.446-49.110-48.382-49.264Q-48.317-49.418-48.268-49.608Q-48.220-49.797-48.200-49.895Q-48.173-49.965-48.110-49.965L-48.009-49.965Q-47.970-49.965-47.944-49.932Q-47.919-49.899-47.919-49.871Q-47.919-49.856-47.927-49.840Q-48.040-49.348-48.239-48.994Q-48.438-48.641-48.809-48.641Q-49.091-48.641-49.317-48.783Q-49.544-48.926-49.626-49.184Q-49.848-48.942-50.122-48.791Q-50.395-48.641-50.696-48.641M-50.680-48.895Q-50.470-48.895-50.261-49.008Q-50.052-49.121-49.882-49.295Q-49.712-49.469-49.583-49.664Q-49.595-49.649-49.604-49.635Q-49.614-49.621-49.626-49.606L-49.192-51.328Q-49.231-51.508-49.317-51.658Q-49.403-51.809-49.540-51.901Q-49.677-51.992-49.856-51.992Q-50.192-51.992-50.464-51.711Q-50.735-51.430-50.895-51.055Q-51.020-50.735-51.118-50.315Q-51.216-49.895-51.216-49.614Q-51.216-49.324-51.083-49.110Q-50.950-48.895-50.680-48.895",[1890],[1874,3742,3743],{"transform":3736},[1879,3744],{"d":3745,"fill":1987,"stroke":1987,"className":3746,"style":1899},"M-45.517-46.719L-46.693-46.719L-46.693-54.719L-45.517-54.719L-45.517-54.352L-46.326-54.352L-46.326-47.086L-45.517-47.086L-45.517-46.719M-44.533-49.352Q-44.341-49.078-43.986-48.951Q-43.630-48.824-43.248-48.824Q-42.912-48.824-42.703-49.010Q-42.494-49.196-42.398-49.489Q-42.302-49.782-42.302-50.094Q-42.302-50.418-42.400-50.713Q-42.498-51.008-42.710-51.192Q-42.923-51.375-43.255-51.375L-43.822-51.375Q-43.853-51.375-43.882-51.405Q-43.912-51.434-43.912-51.461L-43.912-51.543Q-43.912-51.578-43.882-51.604Q-43.853-51.629-43.822-51.629L-43.341-51.664Q-43.056-51.664-42.859-51.869Q-42.662-52.074-42.566-52.369Q-42.470-52.664-42.470-52.942Q-42.470-53.321-42.669-53.559Q-42.869-53.797-43.248-53.797Q-43.568-53.797-43.857-53.690Q-44.146-53.582-44.310-53.360Q-44.130-53.360-44.007-53.233Q-43.884-53.106-43.884-52.934Q-43.884-52.762-44.009-52.637Q-44.134-52.512-44.310-52.512Q-44.482-52.512-44.607-52.637Q-44.732-52.762-44.732-52.934Q-44.732-53.301-44.507-53.549Q-44.283-53.797-43.943-53.918Q-43.603-54.039-43.248-54.039Q-42.900-54.039-42.537-53.918Q-42.173-53.797-41.925-53.547Q-41.677-53.297-41.677-52.942Q-41.677-52.457-41.996-52.074Q-42.314-51.692-42.790-51.520Q-42.240-51.410-41.839-51.024Q-41.439-50.637-41.439-50.102Q-41.439-49.645-41.703-49.289Q-41.966-48.934-42.388-48.742Q-42.810-48.551-43.248-48.551Q-43.658-48.551-44.050-48.686Q-44.443-48.821-44.708-49.106Q-44.974-49.391-44.974-49.809Q-44.974-50.004-44.841-50.133Q-44.708-50.262-44.517-50.262Q-44.392-50.262-44.289-50.203Q-44.185-50.145-44.123-50.039Q-44.060-49.934-44.060-49.809Q-44.060-49.614-44.195-49.483Q-44.330-49.352-44.533-49.352M-39.720-46.719L-40.896-46.719L-40.896-47.086L-40.087-47.086L-40.087-54.352L-40.896-54.352L-40.896-54.719L-39.720-54.719",[1890],[1874,3748,3749],{"transform":3736},[1879,3750],{"d":3751,"fill":1987,"stroke":1987,"className":3752,"style":1899},"M-38.001-48.391Q-38.001-48.496-37.888-48.559L-33.431-50.719L-37.896-52.887Q-38.001-52.926-38.001-53.047Q-38.001-53.125-37.948-53.178Q-37.896-53.231-37.817-53.231Q-37.798-53.231-37.735-53.215L-32.919-50.887Q-32.825-50.832-32.825-50.719Q-32.825-50.614-32.927-50.551L-37.735-48.223Q-37.798-48.207-37.817-48.207Q-37.896-48.207-37.948-48.260Q-38.001-48.313-38.001-48.391",[1890],[1874,3754,3755],{"transform":3736},[1879,3756],{"d":3757,"fill":1987,"stroke":1987,"className":3758,"style":1899},"M-30.597-48.641Q-30.953-48.641-31.222-48.821Q-31.492-49-31.632-49.295Q-31.773-49.590-31.773-49.949Q-31.773-50.336-31.611-50.750Q-31.449-51.164-31.165-51.502Q-30.882-51.840-30.513-52.043Q-30.144-52.246-29.742-52.246Q-29.249-52.246-28.972-51.797Q-28.941-51.930-28.837-52.012Q-28.734-52.094-28.605-52.094Q-28.492-52.094-28.412-52.024Q-28.331-51.953-28.331-51.840Q-28.331-51.813-28.347-51.750L-28.902-49.551Q-28.941-49.305-28.941-49.254Q-28.941-48.895-28.695-48.895Q-28.550-48.895-28.449-49.002Q-28.347-49.110-28.283-49.264Q-28.218-49.418-28.169-49.608Q-28.121-49.797-28.101-49.895Q-28.074-49.965-28.011-49.965L-27.910-49.965Q-27.871-49.965-27.845-49.932Q-27.820-49.899-27.820-49.871Q-27.820-49.856-27.828-49.840Q-27.941-49.348-28.140-48.994Q-28.339-48.641-28.710-48.641Q-28.992-48.641-29.218-48.783Q-29.445-48.926-29.527-49.184Q-29.749-48.942-30.023-48.791Q-30.296-48.641-30.597-48.641M-30.581-48.895Q-30.371-48.895-30.162-49.008Q-29.953-49.121-29.783-49.295Q-29.613-49.469-29.484-49.664Q-29.496-49.649-29.505-49.635Q-29.515-49.621-29.527-49.606L-29.093-51.328Q-29.132-51.508-29.218-51.658Q-29.304-51.809-29.441-51.901Q-29.578-51.992-29.757-51.992Q-30.093-51.992-30.365-51.711Q-30.636-51.430-30.796-51.055Q-30.921-50.735-31.019-50.315Q-31.117-49.895-31.117-49.614Q-31.117-49.324-30.984-49.110Q-30.851-48.895-30.581-48.895",[1890],[1874,3760,3761],{"transform":3736},[1879,3762],{"d":3763,"fill":1987,"stroke":1987,"className":3764,"style":1899},"M-25.418-46.719L-26.594-46.719L-26.594-54.719L-25.418-54.719L-25.418-54.352L-26.227-54.352L-26.227-47.086L-25.418-47.086L-25.418-46.719M-21.633-48.719L-24.426-48.719L-24.426-49.016Q-23.363-49.016-23.363-49.278L-23.363-53.446Q-23.793-53.231-24.473-53.231L-24.473-53.528Q-23.453-53.528-22.938-54.039L-22.793-54.039Q-22.719-54.020-22.699-53.942L-22.699-49.278Q-22.699-49.016-21.633-49.016L-21.633-48.719M-19.621-46.719L-20.797-46.719L-20.797-47.086L-19.988-47.086L-19.988-54.352L-20.797-54.352L-20.797-54.719L-19.621-54.719L-19.621-46.719M-17.902-49.184Q-17.902-49.367-17.766-49.504Q-17.629-49.641-17.438-49.641Q-17.246-49.641-17.113-49.508Q-16.981-49.375-16.981-49.184Q-16.981-48.985-17.113-48.852Q-17.246-48.719-17.438-48.719Q-17.629-48.719-17.766-48.856Q-17.902-48.992-17.902-49.184M-17.902-51.711Q-17.902-51.895-17.766-52.032Q-17.629-52.168-17.438-52.168Q-17.246-52.168-17.113-52.035Q-16.981-51.903-16.981-51.711Q-16.981-51.512-17.113-51.379Q-17.246-51.246-17.438-51.246Q-17.629-51.246-17.766-51.383Q-17.902-51.520-17.902-51.711",[1890],[1874,3766,3767],{"transform":3736},[1879,3768],{"d":3769,"fill":1987,"stroke":1987,"className":3770,"style":1899},"M-10.651-48.750L-11.721-51.606Q-11.787-51.785-11.918-51.828Q-12.049-51.871-12.307-51.871L-12.307-52.168L-10.627-52.168L-10.627-51.871Q-11.077-51.871-11.077-51.672Q-11.073-51.657-11.071-51.639Q-11.069-51.621-11.069-51.606L-10.276-49.512L-9.565-51.422Q-9.600-51.516-9.600-51.561Q-9.600-51.606-9.635-51.606Q-9.702-51.785-9.832-51.828Q-9.963-51.871-10.217-51.871L-10.217-52.168L-8.627-52.168L-8.627-51.871Q-9.077-51.871-9.077-51.672Q-9.073-51.653-9.071-51.635Q-9.069-51.617-9.069-51.606L-8.237-49.391L-7.483-51.391Q-7.459-51.449-7.459-51.520Q-7.459-51.680-7.596-51.776Q-7.733-51.871-7.901-51.871L-7.901-52.168L-6.514-52.168L-6.514-51.871Q-6.748-51.871-6.926-51.744Q-7.104-51.617-7.186-51.391L-8.170-48.750Q-8.225-48.641-8.338-48.641L-8.397-48.641Q-8.510-48.641-8.553-48.750L-9.412-51.024L-10.268-48.750Q-10.307-48.641-10.428-48.641L-10.483-48.641Q-10.596-48.641-10.651-48.750M-4.092-48.719L-6.073-48.719L-6.073-49.016Q-5.803-49.016-5.635-49.061Q-5.467-49.106-5.467-49.278L-5.467-51.414Q-5.467-51.629-5.530-51.725Q-5.592-51.821-5.709-51.842Q-5.827-51.864-6.073-51.864L-6.073-52.160L-4.905-52.246L-4.905-51.461Q-4.827-51.672-4.674-51.858Q-4.522-52.043-4.323-52.145Q-4.123-52.246-3.897-52.246Q-3.651-52.246-3.459-52.102Q-3.268-51.957-3.268-51.727Q-3.268-51.571-3.373-51.461Q-3.479-51.352-3.635-51.352Q-3.791-51.352-3.901-51.461Q-4.010-51.571-4.010-51.727Q-4.010-51.887-3.905-51.992Q-4.229-51.992-4.444-51.764Q-4.659-51.535-4.754-51.196Q-4.850-50.856-4.850-50.551L-4.850-49.278Q-4.850-49.110-4.623-49.063Q-4.397-49.016-4.092-49.016L-4.092-48.719M-0.928-48.719L-2.705-48.719L-2.705-49.016Q-2.432-49.016-2.264-49.063Q-2.096-49.110-2.096-49.278L-2.096-51.414Q-2.096-51.629-2.153-51.725Q-2.209-51.821-2.323-51.842Q-2.436-51.864-2.682-51.864L-2.682-52.160L-1.483-52.246L-1.483-49.278Q-1.483-49.110-1.336-49.063Q-1.190-49.016-0.928-49.016L-0.928-48.719M-2.370-53.641Q-2.370-53.832-2.235-53.963Q-2.100-54.094-1.905-54.094Q-1.784-54.094-1.680-54.032Q-1.577-53.969-1.514-53.865Q-1.452-53.762-1.452-53.641Q-1.452-53.446-1.582-53.311Q-1.713-53.176-1.905-53.176Q-2.104-53.176-2.237-53.309Q-2.370-53.442-2.370-53.641M0.197-49.680L0.197-51.871L-0.506-51.871L-0.506-52.125Q-0.151-52.125 0.091-52.358Q0.334-52.590 0.445-52.938Q0.556-53.285 0.556-53.641L0.838-53.641L0.838-52.168L2.013-52.168L2.013-51.871L0.838-51.871L0.838-49.696Q0.838-49.375 0.957-49.147Q1.076-48.918 1.357-48.918Q1.537-48.918 1.654-49.041Q1.771-49.164 1.824-49.344Q1.877-49.524 1.877-49.696L1.877-50.168L2.158-50.168L2.158-49.680Q2.158-49.426 2.052-49.186Q1.947-48.946 1.750-48.793Q1.552-48.641 1.295-48.641Q0.978-48.641 0.726-48.764Q0.474-48.887 0.336-49.121Q0.197-49.356 0.197-49.680M2.877-50.473Q2.877-50.953 3.109-51.369Q3.341-51.785 3.752-52.035Q4.162-52.285 4.638-52.285Q5.369-52.285 5.767-51.844Q6.166-51.403 6.166-50.672Q6.166-50.567 6.072-50.543L3.623-50.543L3.623-50.473Q3.623-50.063 3.744-49.707Q3.865-49.352 4.136-49.135Q4.408-48.918 4.838-48.918Q5.201-48.918 5.498-49.147Q5.795-49.375 5.896-49.727Q5.904-49.774 5.990-49.789L6.072-49.789Q6.166-49.762 6.166-49.680Q6.166-49.672 6.158-49.641Q6.095-49.414 5.957-49.231Q5.818-49.047 5.627-48.914Q5.435-48.782 5.216-48.711Q4.998-48.641 4.759-48.641Q4.388-48.641 4.050-48.778Q3.713-48.914 3.445-49.166Q3.177-49.418 3.027-49.758Q2.877-50.098 2.877-50.473M3.630-50.782L5.591-50.782Q5.591-51.086 5.490-51.377Q5.388-51.668 5.171-51.850Q4.955-52.032 4.638-52.032Q4.338-52.032 4.107-51.844Q3.877-51.657 3.754-51.365Q3.630-51.074 3.630-50.782M7.240-47.313Q7.240-47.336 7.271-47.383Q7.564-47.645 7.730-48.012Q7.896-48.379 7.896-48.766L7.896-48.824Q7.767-48.719 7.599-48.719Q7.408-48.719 7.271-48.852Q7.134-48.985 7.134-49.184Q7.134-49.375 7.271-49.508Q7.408-49.641 7.599-49.641Q7.900-49.641 8.025-49.371Q8.150-49.102 8.150-48.766Q8.150-48.317 7.968-47.903Q7.787-47.489 7.447-47.192Q7.423-47.168 7.384-47.168Q7.338-47.168 7.289-47.213Q7.240-47.258 7.240-47.313",[1890],[1874,3772,3773],{"transform":3736},[1879,3774],{"d":3775,"fill":1987,"stroke":1987,"className":3776,"style":1899},"M12.561-49.688Q12.561-49.930 12.634-50.205Q12.706-50.481 12.827-50.803Q12.948-51.125 13.030-51.336Q13.120-51.559 13.120-51.742Q13.120-51.992 12.952-51.992Q12.636-51.992 12.427-51.686Q12.218-51.379 12.112-50.992Q12.100-50.918 12.030-50.918L11.928-50.918Q11.893-50.918 11.866-50.953Q11.839-50.989 11.839-51.016L11.839-51.047Q11.964-51.508 12.261-51.877Q12.557-52.246 12.968-52.246Q13.163-52.246 13.337-52.162Q13.511-52.078 13.612-51.926Q13.714-51.774 13.714-51.567Q13.714-51.414 13.655-51.278Q13.577-51.078 13.493-50.865Q13.409-50.653 13.335-50.428Q13.261-50.203 13.214-49.990Q13.167-49.778 13.167-49.590Q13.167-49.274 13.346-49.084Q13.526-48.895 13.846-48.895Q14.268-48.895 14.561-49.512Q14.553-49.567 14.553-49.672Q14.553-49.895 14.616-50.133L15.050-51.879Q15.085-52.004 15.188-52.086Q15.292-52.168 15.417-52.168Q15.530-52.168 15.608-52.098Q15.686-52.028 15.686-51.910Q15.686-51.887 15.671-51.824L15.241-50.078Q15.167-49.758 15.167-49.567Q15.167-49.258 15.321-49.076Q15.475-48.895 15.776-48.895Q16.132-48.895 16.366-49.170Q16.600-49.446 16.768-49.856Q16.827-49.996 16.895-50.201Q16.964-50.407 17.011-50.608Q17.057-50.809 17.057-50.942Q17.057-51.168 16.989-51.280Q16.921-51.391 16.776-51.553Q16.632-51.715 16.632-51.817Q16.632-51.989 16.772-52.121Q16.913-52.254 17.073-52.254Q17.288-52.254 17.380-52.067Q17.471-51.879 17.471-51.641Q17.471-51.317 17.329-50.750Q17.186-50.184 17.042-49.832Q16.843-49.328 16.532-48.985Q16.221-48.641 15.768-48.641Q15.413-48.641 15.116-48.760Q14.819-48.879 14.671-49.153Q14.331-48.641 13.831-48.641Q13.272-48.641 12.917-48.895Q12.561-49.149 12.561-49.688",[1890],[1874,3778,3779],{"transform":3736},[1879,3780],{"d":3781,"fill":1987,"stroke":1987,"className":3782,"style":1899},"M21.051-50.535L18.578-50.535Q18.500-50.547 18.451-50.596Q18.403-50.645 18.403-50.719Q18.403-50.793 18.451-50.842Q18.500-50.891 18.578-50.903L21.051-50.903L21.051-53.383Q21.078-53.551 21.235-53.551Q21.309-53.551 21.358-53.502Q21.407-53.453 21.418-53.383L21.418-50.903L23.891-50.903Q24.059-50.871 24.059-50.719Q24.059-50.567 23.891-50.535L21.418-50.535L21.418-48.055Q21.407-47.985 21.358-47.936Q21.309-47.887 21.235-47.887Q21.078-47.887 21.051-48.055",[1890],[1874,3784,3785],{"transform":3736},[1879,3786],{"d":3787,"fill":1987,"stroke":1987,"className":3788,"style":1899},"M27.663-50.535L25.190-50.535Q25.112-50.547 25.063-50.596Q25.015-50.645 25.015-50.719Q25.015-50.793 25.063-50.842Q25.112-50.891 25.190-50.903L27.663-50.903L27.663-53.383Q27.690-53.551 27.847-53.551Q27.921-53.551 27.970-53.502Q28.019-53.453 28.030-53.383L28.030-50.903L30.503-50.903Q30.671-50.871 30.671-50.719Q30.671-50.567 30.503-50.535L28.030-50.535L28.030-48.055Q28.019-47.985 27.970-47.936Q27.921-47.887 27.847-47.887Q27.690-47.887 27.663-48.055",[1890],[2271,3790,3792,3793,3808,3809,3824,3825,3926,3927,3976,3977,4007],{"className":3791},[2274],"Fast\u002Fslow dedup on a sorted array: write index ",[389,3794,3796],{"className":3795},[392],[389,3797,3799],{"className":3798,"ariaHidden":397},[396],[389,3800,3802,3805],{"className":3801},[401],[389,3803],{"className":3804,"style":660},[405],[389,3806,3355],{"className":3807,"style":3354},[410,423]," trails read ",[389,3810,3812],{"className":3811},[392],[389,3813,3815],{"className":3814,"ariaHidden":397},[396],[389,3816,3818,3821],{"className":3817},[401],[389,3819],{"className":3820,"style":660},[405],[389,3822,664],{"className":3823,"style":491},[410,423],", advancing only when ",[389,3826,3828],{"className":3827},[392],[389,3829,3831,3899],{"className":3830,"ariaHidden":397},[396],[389,3832,3834,3837,3840,3843,3846,3849,3852,3896],{"className":3833},[401],[389,3835],{"className":3836,"style":487},[405],[389,3838,533],{"className":3839},[410,423],[389,3841,577],{"className":3842},[415],[389,3844,664],{"className":3845,"style":491},[410,423],[389,3847,622],{"className":3848},[464],[389,3850],{"className":3851,"style":645},[585],[389,3853,3855,3889,3893],{"className":3854},[649],[389,3856,3858],{"className":3857},[649],[389,3859,3862],{"className":3860},[410,3861],"vbox",[389,3863,3866],{"className":3864},[3865],"thinbox",[389,3867,3870,3874,3885],{"className":3868},[3869],"rlap",[389,3871],{"className":3872,"style":3873},[405],"height:0.8889em;vertical-align:-0.1944em;",[389,3875,3878],{"className":3876},[3877],"inner",[389,3879,3881],{"className":3880},[410],[389,3882,3884],{"className":3883},[649],"",[389,3886],{"className":3887},[3888],"fix",[389,3890],{"className":3891},[585,3892],"nobreak",[389,3894,724],{"className":3895},[649],[389,3897],{"className":3898,"style":645},[585],[389,3900,3902,3905,3908,3911,3914,3920,3923],{"className":3901},[401],[389,3903],{"className":3904,"style":487},[405],[389,3906,533],{"className":3907},[410,423],[389,3909,577],{"className":3910},[415],[389,3912,3355],{"className":3913,"style":3354},[410,423],[389,3915,3917],{"className":3916},[410],[389,3918,606],{"className":3919},[410],[389,3921,499],{"className":3922},[410],[389,3924,622],{"className":3925},[464],", so ",[389,3928,3930],{"className":3929},[392],[389,3931,3933],{"className":3932,"ariaHidden":397},[396],[389,3934,3936,3939,3942,3945,3948,3951,3958,3961,3964,3970,3973],{"className":3935},[401],[389,3937],{"className":3938,"style":487},[405],[389,3940,533],{"className":3941},[410,423],[389,3943,577],{"className":3944},[415],[389,3946,581],{"className":3947},[410],[389,3949],{"className":3950,"style":586},[585],[389,3952,3954],{"className":3953},[590],[389,3955,3957],{"className":3956},[970],"..",[389,3959],{"className":3960,"style":586},[585],[389,3962,3355],{"className":3963,"style":3354},[410,423],[389,3965,3967],{"className":3966},[410],[389,3968,606],{"className":3969},[410],[389,3971,499],{"className":3972},[410],[389,3974,622],{"className":3975},[464]," holds the compacted prefix ",[389,3978,3980],{"className":3979},[392],[389,3981,3983],{"className":3982,"ariaHidden":397},[396],[389,3984,3986,3989,3992,3995,3998,4001,4004],{"className":3985},[401],[389,3987],{"className":3988,"style":487},[405],[389,3990,2291],{"className":3991},[415],[389,3993,499],{"className":3994},[410],[389,3996,971],{"className":3997},[970],[389,3999],{"className":4000,"style":586},[585],[389,4002,460],{"className":4003},[410],[389,4005,2347],{"className":4006},[464]," so far",[548,4009,4011],{"id":4010},"sliding-windows","Sliding windows",[381,4013,4014,4015,4018,4019,4049],{},"A ",[385,4016,4017],{},"window"," is a contiguous range ",[389,4020,4022],{"className":4021},[392],[389,4023,4025],{"className":4024,"ariaHidden":397},[396],[389,4026,4028,4031,4034,4037,4040,4043,4046],{"className":4027},[401],[389,4029],{"className":4030,"style":487},[405],[389,4032,577],{"className":4033},[415],[389,4035,641],{"className":4036,"style":640},[410,423],[389,4038,971],{"className":4039},[970],[389,4041],{"className":4042,"style":586},[585],[389,4044,664],{"className":4045,"style":491},[410,423],[389,4047,622],{"className":4048},[464]," that we slide rightward across the\narray while keeping it consistent with some property. Two regimes appear.",[381,4051,4052,4072,4073,4088,4089,2453,4119,4186,4187,4292,4293,4317,4318,4370,4371,4395],{},[385,4053,4054,4055,528],{},"Fixed size ",[389,4056,4058],{"className":4057},[392],[389,4059,4061],{"className":4060,"ariaHidden":397},[396],[389,4062,4064,4067],{"className":4063},[401],[389,4065],{"className":4066,"style":861},[405],[389,4068,4071],{"className":4069,"style":4070},[410,423],"margin-right:0.0315em;","k"," To compute, say, every window's sum, we do not re-add ",[389,4074,4076],{"className":4075},[392],[389,4077,4079],{"className":4078,"ariaHidden":397},[396],[389,4080,4082,4085],{"className":4081},[401],[389,4083],{"className":4084,"style":861},[405],[389,4086,4071],{"className":4087,"style":4070},[410,423],"\nelements each time. We add the entering element and subtract the leaving one:\nwhen the window advances from ",[389,4090,4092],{"className":4091},[392],[389,4093,4095],{"className":4094,"ariaHidden":397},[396],[389,4096,4098,4101,4104,4107,4110,4113,4116],{"className":4097},[401],[389,4099],{"className":4100,"style":487},[405],[389,4102,577],{"className":4103},[415],[389,4105,641],{"className":4106,"style":640},[410,423],[389,4108,971],{"className":4109},[970],[389,4111],{"className":4112,"style":586},[585],[389,4114,664],{"className":4115,"style":491},[410,423],[389,4117,622],{"className":4118},[464],[389,4120,4122],{"className":4121},[392],[389,4123,4125,4146,4174],{"className":4124,"ariaHidden":397},[396],[389,4126,4128,4131,4134,4137,4140,4143],{"className":4127},[401],[389,4129],{"className":4130,"style":487},[405],[389,4132,577],{"className":4133},[415],[389,4135,641],{"className":4136,"style":640},[410,423],[389,4138],{"className":4139,"style":601},[585],[389,4141,696],{"className":4142},[605],[389,4144],{"className":4145,"style":601},[585],[389,4147,4149,4153,4156,4159,4162,4165,4168,4171],{"className":4148},[401],[389,4150],{"className":4151,"style":4152},[405],"height:0.8389em;vertical-align:-0.1944em;",[389,4154,499],{"className":4155},[410],[389,4157,971],{"className":4158},[970],[389,4160],{"className":4161,"style":586},[585],[389,4163,664],{"className":4164,"style":491},[410,423],[389,4166],{"className":4167,"style":601},[585],[389,4169,696],{"className":4170},[605],[389,4172],{"className":4173,"style":601},[585],[389,4175,4177,4180,4183],{"className":4176},[401],[389,4178],{"className":4179,"style":487},[405],[389,4181,499],{"className":4182},[410],[389,4184,622],{"className":4185},[464],", update\n",[389,4188,4190],{"className":4189},[392],[389,4191,4193,4216,4229,4253,4274],{"className":4192,"ariaHidden":397},[396],[389,4194,4196,4199,4207,4210],{"className":4195},[401],[389,4197],{"className":4198,"style":915},[405],[389,4200,4203],{"className":4201},[410,4202],"text",[389,4204,4206],{"className":4205},[410],"sum",[389,4208],{"className":4209,"style":645},[585],[389,4211,4213],{"className":4212},[649],[389,4214,696],{"className":4215},[410],[389,4217,4219,4223,4226],{"className":4218},[401],[389,4220],{"className":4221,"style":4222},[405],"height:0.3669em;",[389,4224,724],{"className":4225},[649],[389,4227],{"className":4228,"style":645},[585],[389,4230,4232,4235,4238,4241,4244,4247,4250],{"className":4231},[401],[389,4233],{"className":4234,"style":487},[405],[389,4236,533],{"className":4237},[410,423],[389,4239,577],{"className":4240},[415],[389,4242,664],{"className":4243,"style":491},[410,423],[389,4245],{"className":4246,"style":601},[585],[389,4248,696],{"className":4249},[605],[389,4251],{"className":4252,"style":601},[585],[389,4254,4256,4259,4262,4265,4268,4271],{"className":4255},[401],[389,4257],{"className":4258,"style":487},[405],[389,4260,499],{"className":4261},[410],[389,4263,622],{"className":4264},[464],[389,4266],{"className":4267,"style":601},[585],[389,4269,606],{"className":4270},[605],[389,4272],{"className":4273,"style":601},[585],[389,4275,4277,4280,4283,4286,4289],{"className":4276},[401],[389,4278],{"className":4279,"style":487},[405],[389,4281,533],{"className":4282},[410,423],[389,4284,577],{"className":4285},[415],[389,4287,641],{"className":4288,"style":640},[410,423],[389,4290,622],{"className":4291},[464],". Each slide is ",[389,4294,4296],{"className":4295},[392],[389,4297,4299],{"className":4298,"ariaHidden":397},[396],[389,4300,4302,4305,4308,4311,4314],{"className":4301},[401],[389,4303],{"className":4304,"style":487},[405],[389,4306,492],{"className":4307,"style":491},[410,423],[389,4309,416],{"className":4310},[415],[389,4312,499],{"className":4313},[410],[389,4315,465],{"className":4316},[464],", so all ",[389,4319,4321],{"className":4320},[392],[389,4322,4324,4342,4361],{"className":4323,"ariaHidden":397},[396],[389,4325,4327,4330,4333,4336,4339],{"className":4326},[401],[389,4328],{"className":4329,"style":915},[405],[389,4331,424],{"className":4332},[410,423],[389,4334],{"className":4335,"style":601},[585],[389,4337,606],{"className":4338},[605],[389,4340],{"className":4341,"style":601},[585],[389,4343,4345,4349,4352,4355,4358],{"className":4344},[401],[389,4346],{"className":4347,"style":4348},[405],"height:0.7778em;vertical-align:-0.0833em;",[389,4350,4071],{"className":4351,"style":4070},[410,423],[389,4353],{"className":4354,"style":601},[585],[389,4356,696],{"className":4357},[605],[389,4359],{"className":4360,"style":601},[585],[389,4362,4364,4367],{"className":4363},[401],[389,4365],{"className":4366,"style":880},[405],[389,4368,499],{"className":4369},[410],"\nwindows cost ",[389,4372,4374],{"className":4373},[392],[389,4375,4377],{"className":4376,"ariaHidden":397},[396],[389,4378,4380,4383,4386,4389,4392],{"className":4379},[401],[389,4381],{"className":4382,"style":487},[405],[389,4384,492],{"className":4385,"style":491},[410,423],[389,4387,416],{"className":4388},[415],[389,4390,424],{"className":4391},[410,423],[389,4393,465],{"className":4394},[464]," total.",[381,4397,4398,4401,4402,2453,4417,4420,4421,4424,4425,2453,4440,4443,4444,4494],{},[385,4399,4400],{},"Variable size."," Here the window grows and shrinks to stay feasible. The\npattern: advance ",[389,4403,4405],{"className":4404},[392],[389,4406,4408],{"className":4407,"ariaHidden":397},[396],[389,4409,4411,4414],{"className":4410},[401],[389,4412],{"className":4413,"style":660},[405],[389,4415,664],{"className":4416,"style":491},[410,423],[1253,4418,4419],{},"expand"," the window greedily; whenever the window\n",[1253,4422,4423],{},"violates"," its constraint, advance ",[389,4426,4428],{"className":4427},[392],[389,4429,4431],{"className":4430,"ariaHidden":397},[396],[389,4432,4434,4437],{"className":4433},[401],[389,4435],{"className":4436,"style":861},[405],[389,4438,641],{"className":4439,"style":640},[410,423],[1253,4441,4442],{},"shrink"," it until the constraint holds\nagain. The double loop looks ",[389,4445,4447],{"className":4446},[392],[389,4448,4450],{"className":4449,"ariaHidden":397},[396],[389,4451,4453,4456,4459,4462,4491],{"className":4452},[401],[389,4454],{"className":4455,"style":406},[405],[389,4457,492],{"className":4458,"style":491},[410,423],[389,4460,416],{"className":4461},[415],[389,4463,4465,4468],{"className":4464},[410],[389,4466,424],{"className":4467},[410,423],[389,4469,4471],{"className":4470},[428],[389,4472,4474],{"className":4473},[432],[389,4475,4477],{"className":4476},[436],[389,4478,4480],{"className":4479,"style":441},[440],[389,4481,4482,4485],{"style":444},[389,4483],{"className":4484,"style":449},[448],[389,4486,4488],{"className":4487},[453,454,455,456],[389,4489,460],{"className":4490},[410,456],[389,4492,465],{"className":4493},[464],", but it is not:",[939,4496,4497],{"type":941},[381,4498,4499,4502,4503,884,4518,4533,4534,4549,4550,4565,4566,4581,4582,4597,4598,4622,4623,4626,4627],{},[385,4500,4501],{},"Lemma (Amortized bound)."," Across the whole run, ",[389,4504,4506],{"className":4505},[392],[389,4507,4509],{"className":4508,"ariaHidden":397},[396],[389,4510,4512,4515],{"className":4511},[401],[389,4513],{"className":4514,"style":861},[405],[389,4516,641],{"className":4517,"style":640},[410,423],[389,4519,4521],{"className":4520},[392],[389,4522,4524],{"className":4523,"ariaHidden":397},[396],[389,4525,4527,4530],{"className":4526},[401],[389,4528],{"className":4529,"style":660},[405],[389,4531,664],{"className":4532,"style":491},[410,423]," each advance from ",[389,4535,4537],{"className":4536},[392],[389,4538,4540],{"className":4539,"ariaHidden":397},[396],[389,4541,4543,4546],{"className":4542},[401],[389,4544],{"className":4545,"style":880},[405],[389,4547,581],{"className":4548},[410]," to\n",[389,4551,4553],{"className":4552},[392],[389,4554,4556],{"className":4555,"ariaHidden":397},[396],[389,4557,4559,4562],{"className":4558},[401],[389,4560],{"className":4561,"style":660},[405],[389,4563,424],{"className":4564},[410,423]," and never retreat. Every index is added to the window exactly once (when ",[389,4567,4569],{"className":4568},[392],[389,4570,4572],{"className":4571,"ariaHidden":397},[396],[389,4573,4575,4578],{"className":4574},[401],[389,4576],{"className":4577,"style":660},[405],[389,4579,664],{"className":4580,"style":491},[410,423],"\npasses it) and removed at most once (when ",[389,4583,4585],{"className":4584},[392],[389,4586,4588],{"className":4587,"ariaHidden":397},[396],[389,4589,4591,4594],{"className":4590},[401],[389,4592],{"className":4593,"style":861},[405],[389,4595,641],{"className":4596,"style":640},[410,423]," passes it), so the total work of\nboth pointers is ",[389,4599,4601],{"className":4600},[392],[389,4602,4604],{"className":4603,"ariaHidden":397},[396],[389,4605,4607,4610,4613,4616,4619],{"className":4606},[401],[389,4608],{"className":4609,"style":487},[405],[389,4611,492],{"className":4612,"style":491},[410,423],[389,4614,416],{"className":4615},[415],[389,4617,424],{"className":4618},[410,423],[389,4620,465],{"className":4621},[464],", even though the inner ",[3486,4624,4625],{},"while"," can run several times in\none outer step.",[530,4628,4629],{},[533,4630,499],{"href":535,"ariaDescribedBy":4631,"dataFootnoteRef":376,"id":4632},[537],"user-content-fnref-erickson-amortize-2",[1861,4634,4636,4771],{"className":4635},[1864,1865],[1867,4637,4641],{"xmlns":1869,"width":4638,"height":4639,"viewBox":4640},"260.219","85.697","-75 -75 195.164 64.273",[1874,4642,4643,4646,4652,4655,4662,4665,4672,4675,4681,4684,4691,4694,4700,4703,4709,4712,4718,4721,4730,4738,4746,4755,4763],{"stroke":1876,"style":1877},[1879,4644],{"fill":1881,"d":4645},"M-65.403-44.64h22.762v-22.762h-22.762Z",[1874,4647,4648],{"transform":1885},[1879,4649],{"d":4650,"fill":1876,"stroke":1876,"className":4651,"style":1891},"M-50.115-56.021L-53.565-56.021L-53.565-56.254Q-53.565-56.267-53.534-56.298L-52.080-57.875Q-51.614-58.372-51.361-58.677Q-51.108-58.983-50.917-59.394Q-50.726-59.805-50.726-60.244Q-50.726-60.833-51.049-61.266Q-51.372-61.699-51.952-61.699Q-52.216-61.699-52.462-61.589Q-52.708-61.479-52.884-61.292Q-53.060-61.105-53.156-60.855L-53.077-60.855Q-52.875-60.855-52.732-60.719Q-52.589-60.583-52.589-60.367Q-52.589-60.161-52.732-60.022Q-52.875-59.884-53.077-59.884Q-53.279-59.884-53.422-60.027Q-53.565-60.169-53.565-60.367Q-53.565-60.829-53.328-61.202Q-53.090-61.576-52.690-61.795Q-52.291-62.015-51.842-62.015Q-51.319-62.015-50.865-61.800Q-50.410-61.584-50.137-61.185Q-49.865-60.785-49.865-60.244Q-49.865-59.849-50.036-59.495Q-50.208-59.141-50.473-58.862Q-50.739-58.583-51.190-58.198Q-51.640-57.814-51.719-57.739L-52.743-56.777L-51.926-56.777Q-51.275-56.777-50.838-56.788Q-50.401-56.799-50.370-56.821Q-50.300-56.904-50.245-57.144Q-50.190-57.383-50.150-57.651L-49.865-57.651",[1890],[1879,4653],{"fill":1881,"d":4654},"M-42.641-44.64h22.762v-22.762H-42.64Z",[1874,4656,4658],{"transform":4657},"translate(20.45 2.9)",[1879,4659],{"d":4660,"fill":1876,"stroke":1876,"className":4661,"style":1891},"M-53.121-56.742L-53.165-56.742Q-52.963-56.425-52.576-56.267Q-52.189-56.109-51.763-56.109Q-51.227-56.109-50.988-56.544Q-50.748-56.979-50.748-57.559Q-50.748-58.139-50.994-58.579Q-51.240-59.018-51.772-59.018L-52.392-59.018Q-52.418-59.018-52.451-59.047Q-52.484-59.075-52.484-59.097L-52.484-59.198Q-52.484-59.229-52.455-59.253Q-52.427-59.277-52.392-59.277L-51.873-59.317Q-51.407-59.317-51.161-59.789Q-50.915-60.262-50.915-60.780Q-50.915-61.207-51.128-61.481Q-51.341-61.756-51.763-61.756Q-52.106-61.756-52.431-61.626Q-52.756-61.497-52.941-61.242L-52.915-61.242Q-52.712-61.242-52.576-61.101Q-52.440-60.960-52.440-60.763Q-52.440-60.565-52.574-60.431Q-52.708-60.297-52.906-60.297Q-53.108-60.297-53.246-60.431Q-53.385-60.565-53.385-60.763Q-53.385-61.352-52.882-61.683Q-52.378-62.015-51.763-62.015Q-51.385-62.015-50.983-61.875Q-50.581-61.734-50.313-61.455Q-50.045-61.176-50.045-60.780Q-50.045-60.231-50.399-59.794Q-50.752-59.356-51.293-59.172Q-50.902-59.093-50.557-58.869Q-50.212-58.645-50.001-58.304Q-49.790-57.963-49.790-57.568Q-49.790-57.186-49.953-56.863Q-50.115-56.540-50.407-56.304Q-50.700-56.069-51.047-55.946Q-51.394-55.823-51.763-55.823Q-52.211-55.823-52.642-55.984Q-53.073-56.144-53.354-56.471Q-53.635-56.799-53.635-57.256Q-53.635-57.471-53.488-57.614Q-53.341-57.757-53.121-57.757Q-52.910-57.757-52.765-57.612Q-52.620-57.467-52.620-57.256Q-52.620-57.045-52.767-56.893Q-52.915-56.742-53.121-56.742",[1890],[1879,4663],{"fill":1881,"d":4664},"M-19.879-44.64H2.883v-22.762h-22.762Z",[1874,4666,4668],{"transform":4667},"translate(43.212 2.9)",[1879,4669],{"d":4670,"fill":1876,"stroke":1876,"className":4671,"style":1891},"M-50.115-56.021L-53.147-56.021L-53.147-56.337Q-51.996-56.337-51.996-56.632L-51.996-61.356Q-52.484-61.123-53.205-61.123L-53.205-61.439Q-52.075-61.439-51.513-62.015L-51.368-62.015Q-51.333-62.015-51.300-61.982Q-51.267-61.949-51.267-61.914L-51.267-56.632Q-51.267-56.337-50.115-56.337",[1890],[1879,4673],{"fill":1881,"d":4674},"M2.883-44.64h22.762v-22.762H2.883Z",[1874,4676,4678],{"transform":4677},"translate(65.974 2.9)",[1879,4679],{"d":4650,"fill":1876,"stroke":1876,"className":4680,"style":1891},[1890],[1879,4682],{"fill":1881,"d":4683},"M25.645-44.64h22.763v-22.762H25.645Z",[1874,4685,4687],{"transform":4686},"translate(88.736 2.9)",[1879,4688],{"d":4689,"fill":1876,"stroke":1876,"className":4690,"style":1891},"M-51.324-57.498L-53.763-57.498L-53.763-57.814L-50.937-61.962Q-50.893-62.015-50.827-62.015L-50.673-62.015Q-50.634-62.015-50.601-61.982Q-50.568-61.949-50.568-61.905L-50.568-57.814L-49.667-57.814L-49.667-57.498L-50.568-57.498L-50.568-56.632Q-50.568-56.337-49.667-56.337L-49.667-56.021L-52.220-56.021L-52.220-56.337Q-51.860-56.337-51.592-56.392Q-51.324-56.447-51.324-56.632L-51.324-57.498M-51.267-60.987L-53.429-57.814L-51.267-57.814",[1890],[1879,4692],{"fill":1881,"d":4693},"M48.408-44.64H71.17v-22.762H48.408Z",[1874,4695,4697],{"transform":4696},"translate(111.498 2.9)",[1879,4698],{"d":4660,"fill":1876,"stroke":1876,"className":4699,"style":1891},[1890],[1879,4701],{"fill":1881,"d":4702},"M71.17-44.64h22.762v-22.762H71.17Z",[1874,4704,4706],{"transform":4705},"translate(134.26 2.9)",[1879,4707],{"d":4670,"fill":1876,"stroke":1876,"className":4708,"style":1891},[1890],[1879,4710],{"fill":1881,"d":4711},"M93.932-44.64h22.762v-22.762H93.932Z",[1874,4713,4715],{"transform":4714},"translate(157.023 2.9)",[1879,4716],{"d":4650,"fill":1876,"stroke":1876,"className":4717,"style":1891},[1890],[1879,4719],{"fill":1881,"stroke":1987,"d":4720,"style":1989},"M-19.88-41.372V-70.67a1 1 0 0 1 1-1h66.288a1 1 0 0 1 1 1v29.298a1 1 0 0 1-1 1H-18.88a1 1 0 0 1-1-1ZM48.409-71.67",[1874,4722,4723],{"fill":1987,"stroke":1987},[1874,4724,4726],{"transform":4725},"translate(44.07 38.69)",[1879,4727],{"d":4728,"fill":1987,"stroke":1987,"className":4729,"style":1891},"M-53.635-56.759Q-53.635-56.887-53.609-57.019L-52.484-61.492Q-52.449-61.642-52.449-61.716Q-52.449-61.853-53.016-61.853Q-53.112-61.853-53.112-61.971Q-53.112-62.028-53.082-62.099Q-53.051-62.169-52.985-62.169L-51.763-62.266Q-51.710-62.266-51.678-62.237Q-51.645-62.209-51.645-62.160L-51.645-62.125L-52.932-56.975Q-52.932-56.935-52.959-56.794Q-52.985-56.654-52.985-56.579Q-52.985-56.184-52.726-56.184Q-52.449-56.184-52.319-56.500Q-52.189-56.816-52.062-57.335Q-52.031-57.414-51.970-57.414L-51.860-57.414Q-51.816-57.414-51.794-57.381Q-51.772-57.348-51.772-57.300Q-51.921-56.693-52.119-56.307Q-52.317-55.920-52.743-55.920Q-52.994-55.920-53.196-56.025Q-53.398-56.131-53.517-56.322Q-53.635-56.513-53.635-56.759",[1890],[1874,4731,4732,4735],{"fill":1987,"stroke":1987,"style":2944},[1879,4733],{"fill":1881,"d":4734},"M-8.498-27.113V-41.84",[1879,4736],{"stroke":1881,"d":4737},"m-8.498-44.44-2.08 4.16 2.08-1.56 2.08 1.56",[1874,4739,4740,4743],{"fill":1987,"stroke":1987,"style":2944},[1879,4741],{"fill":1881,"d":4742},"M2.883-20.455h25.853",[1879,4744],{"stroke":1881,"d":4745},"m31.336-20.455-4.16-2.08 1.56 2.08-1.56 2.08",[1874,4747,4748],{"fill":1987,"stroke":1987},[1874,4749,4751],{"transform":4750},"translate(88.833 37.503)",[1879,4752],{"d":4753,"fill":1987,"stroke":1987,"className":4754,"style":1891},"M-53.284-56.192Q-53.284-56.245-53.275-56.280L-52.607-58.948Q-52.554-59.146-52.554-59.343Q-52.554-59.739-52.818-59.739Q-53.104-59.739-53.238-59.416Q-53.372-59.093-53.490-58.587Q-53.508-58.504-53.583-58.504L-53.688-58.504Q-53.736-58.504-53.758-58.543Q-53.780-58.583-53.780-58.623Q-53.618-59.242-53.418-59.620Q-53.218-59.998-52.796-59.998Q-52.488-59.998-52.242-59.824Q-51.996-59.651-51.926-59.361Q-51.425-59.998-50.757-59.998Q-50.458-59.998-50.238-59.822Q-50.019-59.646-50.019-59.352Q-50.019-59.119-50.166-58.948Q-50.313-58.776-50.537-58.776Q-50.678-58.776-50.783-58.869Q-50.889-58.961-50.889-59.106Q-50.889-59.304-50.755-59.451Q-50.621-59.598-50.423-59.620Q-50.559-59.739-50.774-59.739Q-51.451-59.739-51.970-58.794L-52.598-56.245Q-52.629-56.109-52.745-56.014Q-52.862-55.920-52.998-55.920Q-53.117-55.920-53.200-55.995Q-53.284-56.069-53.284-56.192",[1890],[1874,4756,4757,4760],{"fill":1987,"stroke":1987,"style":2944},[1879,4758],{"fill":1881,"d":4759},"M37.026-25.925V-41.84",[1879,4761],{"stroke":1881,"d":4762},"m37.026-44.44-2.08 4.16 2.08-1.56 2.08 1.56",[1874,4764,4765,4768],{"fill":1987,"stroke":1987,"style":2944},[1879,4766],{"fill":1881,"d":4767},"M48.408-20.455H74.26",[1879,4769],{"stroke":1881,"d":4770},"m76.86-20.455-4.16-2.08 1.56 2.08-1.56 2.08",[2271,4772,4774,4775,884,4790,4805,4806],{"className":4773},[2274],"A variable window slides across the array; ",[389,4776,4778],{"className":4777},[392],[389,4779,4781],{"className":4780,"ariaHidden":397},[396],[389,4782,4784,4787],{"className":4783},[401],[389,4785],{"className":4786,"style":861},[405],[389,4788,641],{"className":4789,"style":640},[410,423],[389,4791,4793],{"className":4792},[392],[389,4794,4796],{"className":4795,"ariaHidden":397},[396],[389,4797,4799,4802],{"className":4798},[401],[389,4800],{"className":4801,"style":660},[405],[389,4803,664],{"className":4804,"style":491},[410,423]," each move only rightward, so the pass is amortized ",[389,4807,4809],{"className":4808},[392],[389,4810,4812],{"className":4811,"ariaHidden":397},[396],[389,4813,4815,4818,4821,4824,4827],{"className":4814},[401],[389,4816],{"className":4817,"style":487},[405],[389,4819,492],{"className":4820,"style":491},[410,423],[389,4822,416],{"className":4823},[415],[389,4825,424],{"className":4826},[410,423],[389,4828,465],{"className":4829},[464],[381,4831,4832,4866,4867,4882,4883,4898,4899,4902,4903,4918,4919,4934,4935,4950,4951,528],{},[385,4833,4834,4835,528],{},"Worked: smallest subarray with sum ",[389,4836,4838],{"className":4837},[392],[389,4839,4841,4855],{"className":4840,"ariaHidden":397},[396],[389,4842,4844,4848,4852],{"className":4843},[401],[389,4845],{"className":4846,"style":4847},[405],"height:0.7719em;vertical-align:-0.136em;",[389,4849,4851],{"className":4850},[649],"≥",[389,4853],{"className":4854,"style":645},[585],[389,4856,4858,4861],{"className":4857},[401],[389,4859],{"className":4860,"style":734},[405],[389,4862,4865],{"className":4863,"style":4864},[410,423],"margin-right:0.0576em;","S"," Given positive integers and a\ntarget ",[389,4868,4870],{"className":4869},[392],[389,4871,4873],{"className":4872,"ariaHidden":397},[396],[389,4874,4876,4879],{"className":4875},[401],[389,4877],{"className":4878,"style":734},[405],[389,4880,4865],{"className":4881,"style":4864},[410,423],", find the shortest contiguous subarray whose sum is at least ",[389,4884,4886],{"className":4885},[392],[389,4887,4889],{"className":4888,"ariaHidden":397},[396],[389,4890,4892,4895],{"className":4891},[401],[389,4893],{"className":4894,"style":734},[405],[389,4896,4865],{"className":4897,"style":4864},[410,423],"\n(",[385,4900,4901],{},"Minimum Size Subarray Sum","). Keep a running window sum; expand ",[389,4904,4906],{"className":4905},[392],[389,4907,4909],{"className":4908,"ariaHidden":397},[396],[389,4910,4912,4915],{"className":4911},[401],[389,4913],{"className":4914,"style":660},[405],[389,4916,664],{"className":4917,"style":491},[410,423]," to grow it,\nand the moment the sum reaches ",[389,4920,4922],{"className":4921},[392],[389,4923,4925],{"className":4924,"ariaHidden":397},[396],[389,4926,4928,4931],{"className":4927},[401],[389,4929],{"className":4930,"style":734},[405],[389,4932,4865],{"className":4933,"style":4864},[410,423],", shrink from ",[389,4936,4938],{"className":4937},[392],[389,4939,4941],{"className":4940,"ariaHidden":397},[396],[389,4942,4944,4947],{"className":4943},[401],[389,4945],{"className":4946,"style":861},[405],[389,4948,641],{"className":4949,"style":640},[410,423]," to find the tightest window\nending at ",[389,4952,4954],{"className":4953},[392],[389,4955,4957],{"className":4956,"ariaHidden":397},[396],[389,4958,4960,4963],{"className":4959},[401],[389,4961],{"className":4962,"style":660},[405],[389,4964,664],{"className":4965,"style":491},[410,423],[3480,4967,4969],{"className":3482,"code":4968,"language":3484,"meta":376,"style":376},"caption: $\\textsc{MinSubarray}(a, S)$ — shortest window with sum $\\ge S$, in $O(n)$\n$l \\gets 0,\\ \\ \\text{sum} \\gets 0,\\ \\ \\text{best} \\gets \\infty$\nfor $r \\gets 0$ to $n-1$ do\n  $\\text{sum} \\gets \\text{sum} + a[r]$\n  while $\\text{sum} \\ge S$ do\n    $\\text{best} \\gets \\min(\\text{best},\\ r - l + 1)$\n    $\\text{sum} \\gets \\text{sum} - a[l]$\n    $l \\gets l + 1$\nreturn $(\\text{best} = \\infty)\\ ?\\ 0 : \\text{best}$\n",[3486,4970,4971,4976,4981,4986,4991,4996,5001,5006,5011],{"__ignoreMap":376},[389,4972,4973],{"class":3490,"line":6},[389,4974,4975],{},"caption: $\\textsc{MinSubarray}(a, S)$ — shortest window with sum $\\ge S$, in $O(n)$\n",[389,4977,4978],{"class":3490,"line":18},[389,4979,4980],{},"$l \\gets 0,\\ \\ \\text{sum} \\gets 0,\\ \\ \\text{best} \\gets \\infty$\n",[389,4982,4983],{"class":3490,"line":24},[389,4984,4985],{},"for $r \\gets 0$ to $n-1$ do\n",[389,4987,4988],{"class":3490,"line":73},[389,4989,4990],{},"  $\\text{sum} \\gets \\text{sum} + a[r]$\n",[389,4992,4993],{"class":3490,"line":102},[389,4994,4995],{},"  while $\\text{sum} \\ge S$ do\n",[389,4997,4998],{"class":3490,"line":108},[389,4999,5000],{},"    $\\text{best} \\gets \\min(\\text{best},\\ r - l + 1)$\n",[389,5002,5003],{"class":3490,"line":116},[389,5004,5005],{},"    $\\text{sum} \\gets \\text{sum} - a[l]$\n",[389,5007,5008],{"class":3490,"line":196},[389,5009,5010],{},"    $l \\gets l + 1$\n",[389,5012,5013],{"class":3490,"line":202},[389,5014,5015],{},"return $(\\text{best} = \\infty)\\ ?\\ 0 : \\text{best}$\n",[381,5017,5018,5019,5034,5035,5037,5038,5053],{},"Because all entries are positive, the window sum is monotone in width, so once it\ndrops below ",[389,5020,5022],{"className":5021},[392],[389,5023,5025],{"className":5024,"ariaHidden":397},[396],[389,5026,5028,5031],{"className":5027},[401],[389,5029],{"className":5030,"style":734},[405],[389,5032,4865],{"className":5033,"style":4864},[410,423]," no further shrinking helps — the ",[3486,5036,4625],{}," exits and ",[389,5039,5041],{"className":5040},[392],[389,5042,5044],{"className":5043,"ariaHidden":397},[396],[389,5045,5047,5050],{"className":5046},[401],[389,5048],{"className":5049,"style":660},[405],[389,5051,664],{"className":5052,"style":491},[410,423]," moves on.",[381,5055,5056,5059,5060,5063,5064,5067,5068,5083,5084,5108,5109,5136,5137,5140,5141,5156,5157,5187],{},[385,5057,5058],{},"Worked: longest substring without repeats."," For ",[385,5061,5062],{},"Longest Substring Without\nRepeating Characters",", the window must contain no duplicate character. We keep a\nmap ",[3486,5065,5066],{},"last[c]"," of the most recent index of each character. Expand ",[389,5069,5071],{"className":5070},[392],[389,5072,5074],{"className":5073,"ariaHidden":397},[396],[389,5075,5077,5080],{"className":5076},[401],[389,5078],{"className":5079,"style":660},[405],[389,5081,664],{"className":5082,"style":491},[410,423],"; if ",[389,5085,5087],{"className":5086},[392],[389,5088,5090],{"className":5089,"ariaHidden":397},[396],[389,5091,5093,5096,5099,5102,5105],{"className":5092},[401],[389,5094],{"className":5095,"style":487},[405],[389,5097,533],{"className":5098},[410,423],[389,5100,577],{"className":5101},[415],[389,5103,664],{"className":5104,"style":491},[410,423],[389,5106,622],{"className":5107},[464],"\nwas last seen at a position ",[389,5110,5112],{"className":5111},[392],[389,5113,5115,5127],{"className":5114,"ariaHidden":397},[396],[389,5116,5118,5121,5124],{"className":5117},[401],[389,5119],{"className":5120,"style":4847},[405],[389,5122,4851],{"className":5123},[649],[389,5125],{"className":5126,"style":645},[585],[389,5128,5130,5133],{"className":5129},[401],[389,5131],{"className":5132,"style":861},[405],[389,5134,641],{"className":5135,"style":640},[410,423],", that occurrence is ",[1253,5138,5139],{},"inside"," the window, so we\njump ",[389,5142,5144],{"className":5143},[392],[389,5145,5147],{"className":5146,"ariaHidden":397},[396],[389,5148,5150,5153],{"className":5149},[401],[389,5151],{"className":5152,"style":861},[405],[389,5154,641],{"className":5155,"style":640},[410,423]," to one past it. The window ",[389,5158,5160],{"className":5159},[392],[389,5161,5163],{"className":5162,"ariaHidden":397},[396],[389,5164,5166,5169,5172,5175,5178,5181,5184],{"className":5165},[401],[389,5167],{"className":5168,"style":487},[405],[389,5170,577],{"className":5171},[415],[389,5173,641],{"className":5174,"style":640},[410,423],[389,5176,971],{"className":5177},[970],[389,5179],{"className":5180,"style":586},[585],[389,5182,664],{"className":5183,"style":491},[410,423],[389,5185,622],{"className":5186},[464]," is always duplicate-free, and we\ntrack its maximum length.",[3480,5189,5191],{"className":3482,"code":5190,"language":3484,"meta":376,"style":376},"caption: $\\textsc{LongestUnique}(a)$ — longest duplicate-free window, in $O(n)$\n$l \\gets 0,\\ \\ \\text{best} \\gets 0,\\ \\ \\text{last} \\gets \\{\\}$\nfor $r \\gets 0$ to $n-1$ do\n  if $a[r] \\in \\text{last}$ and $\\text{last}[a[r]] \\ge l$ then\n    $l \\gets \\text{last}[a[r]] + 1$\n  $\\text{last}[a[r]] \\gets r$\n  $\\text{best} \\gets \\max(\\text{best},\\ r - l + 1)$\nreturn $\\text{best}$\n",[3486,5192,5193,5198,5203,5207,5212,5217,5222,5227],{"__ignoreMap":376},[389,5194,5195],{"class":3490,"line":6},[389,5196,5197],{},"caption: $\\textsc{LongestUnique}(a)$ — longest duplicate-free window, in $O(n)$\n",[389,5199,5200],{"class":3490,"line":18},[389,5201,5202],{},"$l \\gets 0,\\ \\ \\text{best} \\gets 0,\\ \\ \\text{last} \\gets \\{\\}$\n",[389,5204,5205],{"class":3490,"line":24},[389,5206,4985],{},[389,5208,5209],{"class":3490,"line":73},[389,5210,5211],{},"  if $a[r] \\in \\text{last}$ and $\\text{last}[a[r]] \\ge l$ then\n",[389,5213,5214],{"class":3490,"line":102},[389,5215,5216],{},"    $l \\gets \\text{last}[a[r]] + 1$\n",[389,5218,5219],{"class":3490,"line":108},[389,5220,5221],{},"  $\\text{last}[a[r]] \\gets r$\n",[389,5223,5224],{"class":3490,"line":116},[389,5225,5226],{},"  $\\text{best} \\gets \\max(\\text{best},\\ r - l + 1)$\n",[389,5228,5229],{"class":3490,"line":196},[389,5230,5231],{},"return $\\text{best}$\n",[381,5233,5234,5235,3375,5250,5265,5266,3551,5290,5316,5317,528],{},"Each character is visited once by ",[389,5236,5238],{"className":5237},[392],[389,5239,5241],{"className":5240,"ariaHidden":397},[396],[389,5242,5244,5247],{"className":5243},[401],[389,5245],{"className":5246,"style":660},[405],[389,5248,664],{"className":5249,"style":491},[410,423],[389,5251,5253],{"className":5252},[392],[389,5254,5256],{"className":5255,"ariaHidden":397},[396],[389,5257,5259,5262],{"className":5258},[401],[389,5260],{"className":5261,"style":861},[405],[389,5263,641],{"className":5264,"style":640},[410,423]," only moves forward, so this is\n",[389,5267,5269],{"className":5268},[392],[389,5270,5272],{"className":5271,"ariaHidden":397},[396],[389,5273,5275,5278,5281,5284,5287],{"className":5274},[401],[389,5276],{"className":5277,"style":487},[405],[389,5279,492],{"className":5280,"style":491},[410,423],[389,5282,416],{"className":5283},[415],[389,5285,424],{"className":5286},[410,423],[389,5288,465],{"className":5289},[464],[389,5291,5293],{"className":5292},[392],[389,5294,5296],{"className":5295,"ariaHidden":397},[396],[389,5297,5299,5302,5305,5308,5313],{"className":5298},[401],[389,5300],{"className":5301,"style":487},[405],[389,5303,492],{"className":5304,"style":491},[410,423],[389,5306,416],{"className":5307},[415],[389,5309,5312],{"className":5310,"style":5311},[410,423],"margin-right:0.0359em;","σ",[389,5314,465],{"className":5315},[464]," space for an alphabet of size ",[389,5318,5320],{"className":5319},[392],[389,5321,5323],{"className":5322,"ariaHidden":397},[396],[389,5324,5326,5329],{"className":5325},[401],[389,5327],{"className":5328,"style":660},[405],[389,5330,5312],{"className":5331,"style":5311},[410,423],[548,5333,5335],{"id":5334},"prefix-sums","Prefix sums",[381,5337,5338,5339,5343,5344,5347,5348,5372],{},"The sliding window assumed we could update a sum incrementally. ",[533,5340,5341],{"href":115},[385,5342,5335],{},"\ngeneralize this to answer ",[1253,5345,5346],{},"any"," range-sum query in ",[389,5349,5351],{"className":5350},[392],[389,5352,5354],{"className":5353,"ariaHidden":397},[396],[389,5355,5357,5360,5363,5366,5369],{"className":5356},[401],[389,5358],{"className":5359,"style":487},[405],[389,5361,492],{"className":5362,"style":491},[410,423],[389,5364,416],{"className":5365},[415],[389,5367,499],{"className":5368},[410],[389,5370,465],{"className":5371},[464]," after a linear\nprecompute. Define",[389,5374,5377],{"className":5375},[5376],"katex-display",[389,5378,5380],{"className":5379},[392],[389,5381,5383,5411,5451,5478,5505,5524,5548,5569],{"className":5382,"ariaHidden":397},[396],[389,5384,5386,5389,5393,5396,5399,5402,5405,5408],{"className":5385},[401],[389,5387],{"className":5388,"style":487},[405],[389,5390,5392],{"className":5391,"style":738},[410,423],"P",[389,5394,577],{"className":5395},[415],[389,5397,581],{"className":5398},[410],[389,5400,622],{"className":5401},[464],[389,5403],{"className":5404,"style":645},[585],[389,5406,724],{"className":5407},[649],[389,5409],{"className":5410,"style":645},[585],[389,5412,5414,5417,5420,5423,5427,5430,5433,5436,5439,5442,5445,5448],{"className":5413},[401],[389,5415],{"className":5416,"style":487},[405],[389,5418,581],{"className":5419},[410],[389,5421,971],{"className":5422},[970],[389,5424],{"className":5425,"style":5426},[585],"margin-right:2em;",[389,5428],{"className":5429,"style":586},[585],[389,5431,5392],{"className":5432,"style":738},[410,423],[389,5434,577],{"className":5435},[415],[389,5437,966],{"className":5438},[410,423],[389,5440,622],{"className":5441},[464],[389,5443],{"className":5444,"style":645},[585],[389,5446,724],{"className":5447},[649],[389,5449],{"className":5450,"style":645},[585],[389,5452,5454,5457,5460,5463,5466,5469,5472,5475],{"className":5453},[401],[389,5455],{"className":5456,"style":487},[405],[389,5458,533],{"className":5459},[410,423],[389,5461,577],{"className":5462},[415],[389,5464,581],{"className":5465},[410],[389,5467,622],{"className":5468},[464],[389,5470],{"className":5471,"style":601},[585],[389,5473,696],{"className":5474},[605],[389,5476],{"className":5477,"style":601},[585],[389,5479,5481,5484,5487,5490,5493,5496,5499,5502],{"className":5480},[401],[389,5482],{"className":5483,"style":487},[405],[389,5485,533],{"className":5486},[410,423],[389,5488,577],{"className":5489},[415],[389,5491,499],{"className":5492},[410],[389,5494,622],{"className":5495},[464],[389,5497],{"className":5498,"style":601},[585],[389,5500,696],{"className":5501},[605],[389,5503],{"className":5504,"style":601},[585],[389,5506,5508,5511,5515,5518,5521],{"className":5507},[401],[389,5509],{"className":5510,"style":915},[405],[389,5512,5514],{"className":5513},[590],"⋯",[389,5516],{"className":5517,"style":601},[585],[389,5519,696],{"className":5520},[605],[389,5522],{"className":5523,"style":601},[585],[389,5525,5527,5530,5533,5536,5539,5542,5545],{"className":5526},[401],[389,5528],{"className":5529,"style":487},[405],[389,5531,533],{"className":5532},[410,423],[389,5534,577],{"className":5535},[415],[389,5537,966],{"className":5538},[410,423],[389,5540],{"className":5541,"style":601},[585],[389,5543,606],{"className":5544},[605],[389,5546],{"className":5547,"style":601},[585],[389,5549,5551,5554,5557,5560,5563,5566],{"className":5550},[401],[389,5552],{"className":5553,"style":487},[405],[389,5555,499],{"className":5556},[410],[389,5558,622],{"className":5559},[464],[389,5561],{"className":5562,"style":645},[585],[389,5564,724],{"className":5565},[649],[389,5567],{"className":5568,"style":645},[585],[389,5570,5572,5576,5638,5641,5644,5647,5650,5653],{"className":5571},[401],[389,5573],{"className":5574,"style":5575},[405],"height:2.4638em;vertical-align:-1.4138em;",[389,5577,5580],{"className":5578},[2695,5579],"op-limits",[389,5581,5583,5629],{"className":5582},[432,790],[389,5584,5586,5626],{"className":5585},[436],[389,5587,5590,5612],{"className":5588,"style":5589},[440],"height:1.05em;",[389,5591,5593,5597],{"style":5592},"top:-1.8723em;margin-left:0em;",[389,5594],{"className":5595,"style":5596},[448],"height:3.05em;",[389,5598,5600],{"className":5599},[453,454,455,456],[389,5601,5603,5606,5609],{"className":5602},[410,456],[389,5604,979],{"className":5605,"style":978},[410,423,456],[389,5607,650],{"className":5608},[649,456],[389,5610,966],{"className":5611},[410,423,456],[389,5613,5615,5618],{"style":5614},"top:-3.05em;",[389,5616],{"className":5617,"style":5596},[448],[389,5619,5620],{},[389,5621,5625],{"className":5622},[2695,5623,5624],"op-symbol","large-op","∑",[389,5627,832],{"className":5628},[831],[389,5630,5632],{"className":5631},[436],[389,5633,5636],{"className":5634,"style":5635},[440],"height:1.4138em;",[389,5637],{},[389,5639],{"className":5640,"style":586},[585],[389,5642,533],{"className":5643},[410,423],[389,5645,577],{"className":5646},[415],[389,5648,979],{"className":5649,"style":978},[410,423],[389,5651,622],{"className":5652},[464],[389,5654,971],{"className":5655},[970],[381,5657,5658,5659,5674,5675,5708,5709,5823],{},"so ",[389,5660,5662],{"className":5661},[392],[389,5663,5665],{"className":5664,"ariaHidden":397},[396],[389,5666,5668,5671],{"className":5667},[401],[389,5669],{"className":5670,"style":734},[405],[389,5672,5392],{"className":5673,"style":738},[410,423]," has length ",[389,5676,5678],{"className":5677},[392],[389,5679,5681,5699],{"className":5680,"ariaHidden":397},[396],[389,5682,5684,5687,5690,5693,5696],{"className":5683},[401],[389,5685],{"className":5686,"style":915},[405],[389,5688,424],{"className":5689},[410,423],[389,5691],{"className":5692,"style":601},[585],[389,5694,696],{"className":5695},[605],[389,5697],{"className":5698,"style":601},[585],[389,5700,5702,5705],{"className":5701},[401],[389,5703],{"className":5704,"style":880},[405],[389,5706,499],{"className":5707},[410]," and is built in one pass: ",[389,5710,5712],{"className":5711},[392],[389,5713,5715,5742,5766,5787,5811],{"className":5714,"ariaHidden":397},[396],[389,5716,5718,5721,5724,5727,5730,5733,5736,5739],{"className":5717},[401],[389,5719],{"className":5720,"style":487},[405],[389,5722,5392],{"className":5723,"style":738},[410,423],[389,5725,577],{"className":5726},[415],[389,5728,966],{"className":5729},[410,423],[389,5731,622],{"className":5732},[464],[389,5734],{"className":5735,"style":645},[585],[389,5737,724],{"className":5738},[649],[389,5740],{"className":5741,"style":645},[585],[389,5743,5745,5748,5751,5754,5757,5760,5763],{"className":5744},[401],[389,5746],{"className":5747,"style":487},[405],[389,5749,5392],{"className":5750,"style":738},[410,423],[389,5752,577],{"className":5753},[415],[389,5755,966],{"className":5756},[410,423],[389,5758],{"className":5759,"style":601},[585],[389,5761,606],{"className":5762},[605],[389,5764],{"className":5765,"style":601},[585],[389,5767,5769,5772,5775,5778,5781,5784],{"className":5768},[401],[389,5770],{"className":5771,"style":487},[405],[389,5773,499],{"className":5774},[410],[389,5776,622],{"className":5777},[464],[389,5779],{"className":5780,"style":601},[585],[389,5782,696],{"className":5783},[605],[389,5785],{"className":5786,"style":601},[585],[389,5788,5790,5793,5796,5799,5802,5805,5808],{"className":5789},[401],[389,5791],{"className":5792,"style":487},[405],[389,5794,533],{"className":5795},[410,423],[389,5797,577],{"className":5798},[415],[389,5800,966],{"className":5801},[410,423],[389,5803],{"className":5804,"style":601},[585],[389,5806,606],{"className":5807},[605],[389,5809],{"className":5810,"style":601},[585],[389,5812,5814,5817,5820],{"className":5813},[401],[389,5815],{"className":5816,"style":487},[405],[389,5818,499],{"className":5819},[410],[389,5821,622],{"className":5822},[464],". Then\nthe sum of any subarray telescopes:",[389,5825,5827],{"className":5826},[5376],[389,5828,5830],{"className":5829},[392],[389,5831,5833,5872,5899,5917,5944,5968,5989],{"className":5832,"ariaHidden":397},[396],[389,5834,5836,5839,5845,5848,5851,5854,5857,5860,5863,5866,5869],{"className":5835},[401],[389,5837],{"className":5838,"style":487},[405],[389,5840,5842],{"className":5841},[410,4202],[389,5843,4206],{"className":5844},[410],[389,5846,416],{"className":5847},[415],[389,5849,641],{"className":5850,"style":640},[410,423],[389,5852,971],{"className":5853},[970],[389,5855],{"className":5856,"style":586},[585],[389,5858,664],{"className":5859,"style":491},[410,423],[389,5861,465],{"className":5862},[464],[389,5864],{"className":5865,"style":645},[585],[389,5867,724],{"className":5868},[649],[389,5870],{"className":5871,"style":645},[585],[389,5873,5875,5878,5881,5884,5887,5890,5893,5896],{"className":5874},[401],[389,5876],{"className":5877,"style":487},[405],[389,5879,533],{"className":5880},[410,423],[389,5882,577],{"className":5883},[415],[389,5885,641],{"className":5886,"style":640},[410,423],[389,5888,622],{"className":5889},[464],[389,5891],{"className":5892,"style":601},[585],[389,5894,696],{"className":5895},[605],[389,5897],{"className":5898,"style":601},[585],[389,5900,5902,5905,5908,5911,5914],{"className":5901},[401],[389,5903],{"className":5904,"style":915},[405],[389,5906,5514],{"className":5907},[590],[389,5909],{"className":5910,"style":601},[585],[389,5912,696],{"className":5913},[605],[389,5915],{"className":5916,"style":601},[585],[389,5918,5920,5923,5926,5929,5932,5935,5938,5941],{"className":5919},[401],[389,5921],{"className":5922,"style":487},[405],[389,5924,533],{"className":5925},[410,423],[389,5927,577],{"className":5928},[415],[389,5930,664],{"className":5931,"style":491},[410,423],[389,5933,622],{"className":5934},[464],[389,5936],{"className":5937,"style":645},[585],[389,5939,724],{"className":5940},[649],[389,5942],{"className":5943,"style":645},[585],[389,5945,5947,5950,5953,5956,5959,5962,5965],{"className":5946},[401],[389,5948],{"className":5949,"style":487},[405],[389,5951,5392],{"className":5952,"style":738},[410,423],[389,5954,577],{"className":5955},[415],[389,5957,664],{"className":5958,"style":491},[410,423],[389,5960],{"className":5961,"style":601},[585],[389,5963,696],{"className":5964},[605],[389,5966],{"className":5967,"style":601},[585],[389,5969,5971,5974,5977,5980,5983,5986],{"className":5970},[401],[389,5972],{"className":5973,"style":487},[405],[389,5975,499],{"className":5976},[410],[389,5978,622],{"className":5979},[464],[389,5981],{"className":5982,"style":601},[585],[389,5984,606],{"className":5985},[605],[389,5987],{"className":5988,"style":601},[585],[389,5990,5992,5995,5998,6001,6004,6007],{"className":5991},[401],[389,5993],{"className":5994,"style":487},[405],[389,5996,5392],{"className":5997,"style":738},[410,423],[389,5999,577],{"className":6000},[415],[389,6002,641],{"className":6003,"style":640},[410,423],[389,6005,622],{"className":6006},[464],[389,6008,528],{"className":6009},[410],[1861,6011,6013,6245],{"className":6012},[1864,1865],[1867,6014,6018],{"xmlns":1869,"width":6015,"height":6016,"viewBox":6017},"265.397","138.745","-75 -75 199.047 104.059",[1874,6019,6020,6027,6030,6037,6040,6047,6050,6057,6060,6066,6069,6076,6079,6086,6093,6096,6103,6106,6112,6123,6126,6133,6136,6142,6154,6157,6164,6167],{"stroke":1876,"style":1877},[1874,6021,6023],{"transform":6022},"translate(-33.748 1.937)",[1879,6024],{"d":6025,"fill":1876,"stroke":1876,"className":6026,"style":1891},"M-25.755-31.616Q-26.151-31.616-26.437-31.820Q-26.722-32.025-26.869-32.359Q-27.017-32.693-27.017-33.084Q-27.017-33.519-26.843-33.980Q-26.669-34.442-26.357-34.833Q-26.045-35.224-25.635-35.459Q-25.224-35.694-24.784-35.694Q-24.516-35.694-24.299-35.556Q-24.081-35.417-23.949-35.171Q-23.910-35.321-23.802-35.417Q-23.694-35.514-23.554-35.514Q-23.431-35.514-23.347-35.441Q-23.264-35.369-23.264-35.246Q-23.264-35.193-23.273-35.162L-23.892-32.671Q-23.949-32.473-23.949-32.275Q-23.949-31.880-23.686-31.880Q-23.400-31.880-23.266-32.203Q-23.132-32.526-23.013-33.031Q-23.004-33.062-22.980-33.086Q-22.956-33.110-22.921-33.110L-22.815-33.110Q-22.767-33.110-22.745-33.077Q-22.723-33.044-22.723-32.996Q-22.837-32.565-22.928-32.312Q-23.018-32.060-23.211-31.838Q-23.404-31.616-23.703-31.616Q-24.011-31.616-24.259-31.787Q-24.507-31.959-24.578-32.249Q-24.833-31.963-25.129-31.790Q-25.426-31.616-25.755-31.616M-25.738-31.880Q-25.408-31.880-25.098-32.121Q-24.789-32.363-24.578-32.679Q-24.569-32.688-24.569-32.706L-24.072-34.670Q-24.129-34.987-24.321-35.211Q-24.512-35.435-24.802-35.435Q-25.171-35.435-25.470-35.116Q-25.769-34.798-25.936-34.389Q-26.072-34.042-26.197-33.532Q-26.322-33.022-26.322-32.697Q-26.322-32.372-26.184-32.126Q-26.045-31.880-25.738-31.880",[1890],[1879,6028],{"fill":1881,"d":6029},"M-27.377-20.335h22.762v-22.763h-22.762Z",[1874,6031,6033],{"transform":6032},"translate(9.068 2.9)",[1879,6034],{"d":6035,"fill":1876,"stroke":1876,"className":6036,"style":1891},"M-26.476-32.438L-26.520-32.438Q-26.318-32.121-25.931-31.963Q-25.544-31.805-25.118-31.805Q-24.582-31.805-24.343-32.240Q-24.103-32.675-24.103-33.255Q-24.103-33.835-24.349-34.275Q-24.595-34.714-25.127-34.714L-25.747-34.714Q-25.773-34.714-25.806-34.743Q-25.839-34.771-25.839-34.793L-25.839-34.894Q-25.839-34.925-25.810-34.949Q-25.782-34.973-25.747-34.973L-25.228-35.013Q-24.762-35.013-24.516-35.485Q-24.270-35.958-24.270-36.476Q-24.270-36.903-24.483-37.177Q-24.696-37.452-25.118-37.452Q-25.461-37.452-25.786-37.322Q-26.111-37.193-26.296-36.938L-26.270-36.938Q-26.067-36.938-25.931-36.797Q-25.795-36.656-25.795-36.459Q-25.795-36.261-25.929-36.127Q-26.063-35.993-26.261-35.993Q-26.463-35.993-26.601-36.127Q-26.740-36.261-26.740-36.459Q-26.740-37.048-26.237-37.379Q-25.733-37.711-25.118-37.711Q-24.740-37.711-24.338-37.571Q-23.936-37.430-23.668-37.151Q-23.400-36.872-23.400-36.476Q-23.400-35.927-23.754-35.490Q-24.107-35.052-24.648-34.868Q-24.257-34.789-23.912-34.565Q-23.567-34.341-23.356-34Q-23.145-33.659-23.145-33.264Q-23.145-32.882-23.308-32.559Q-23.470-32.236-23.762-32Q-24.055-31.765-24.402-31.642Q-24.749-31.519-25.118-31.519Q-25.566-31.519-25.997-31.680Q-26.428-31.840-26.709-32.167Q-26.990-32.495-26.990-32.952Q-26.990-33.167-26.843-33.310Q-26.696-33.453-26.476-33.453Q-26.265-33.453-26.120-33.308Q-25.975-33.163-25.975-32.952Q-25.975-32.741-26.122-32.589Q-26.270-32.438-26.476-32.438",[1890],[1879,6038],{"fill":1881,"d":6039},"M-4.615-20.335h22.762v-22.763H-4.615Z",[1874,6041,6043],{"transform":6042},"translate(31.83 2.9)",[1879,6044],{"d":6045,"fill":1876,"stroke":1876,"className":6046,"style":1891},"M-23.470-31.717L-26.502-31.717L-26.502-32.033Q-25.351-32.033-25.351-32.328L-25.351-37.052Q-25.839-36.819-26.560-36.819L-26.560-37.135Q-25.430-37.135-24.868-37.711L-24.723-37.711Q-24.688-37.711-24.655-37.678Q-24.622-37.645-24.622-37.610L-24.622-32.328Q-24.622-32.033-23.470-32.033",[1890],[1879,6048],{"fill":1881,"d":6049},"M18.148-20.335H40.91v-22.763H18.148Z",[1874,6051,6053],{"transform":6052},"translate(54.593 2.9)",[1879,6054],{"d":6055,"fill":1876,"stroke":1876,"className":6056,"style":1891},"M-24.679-33.194L-27.118-33.194L-27.118-33.510L-24.292-37.658Q-24.248-37.711-24.182-37.711L-24.028-37.711Q-23.989-37.711-23.956-37.678Q-23.923-37.645-23.923-37.601L-23.923-33.510L-23.022-33.510L-23.022-33.194L-23.923-33.194L-23.923-32.328Q-23.923-32.033-23.022-32.033L-23.022-31.717L-25.575-31.717L-25.575-32.033Q-25.215-32.033-24.947-32.088Q-24.679-32.143-24.679-32.328L-24.679-33.194M-24.622-36.683L-26.784-33.510L-24.622-33.510",[1890],[1879,6058],{"fill":1881,"d":6059},"M40.91-20.335h22.762v-22.763H40.91Z",[1874,6061,6063],{"transform":6062},"translate(77.355 2.9)",[1879,6064],{"d":6045,"fill":1876,"stroke":1876,"className":6065,"style":1891},[1890],[1879,6067],{"fill":1881,"d":6068},"M63.672-20.335h22.762v-22.763H63.672Z",[1874,6070,6072],{"transform":6071},"translate(100.118 2.9)",[1879,6073],{"d":6074,"fill":1876,"stroke":1876,"className":6075,"style":1891},"M-26.551-32.723Q-26.410-32.310-26.050-32.058Q-25.689-31.805-25.254-31.805Q-24.802-31.805-24.536-32.058Q-24.270-32.310-24.167-32.695Q-24.064-33.079-24.064-33.536Q-24.064-35.237-24.973-35.237Q-25.294-35.237-25.523-35.143Q-25.751-35.048-25.881-34.929Q-26.010-34.811-26.122-34.672Q-26.234-34.534-26.270-34.525L-26.353-34.525Q-26.397-34.525-26.428-34.556Q-26.459-34.587-26.459-34.635L-26.459-37.632Q-26.459-37.663-26.423-37.687Q-26.388-37.711-26.362-37.711L-26.322-37.711Q-25.689-37.421-25.017-37.421Q-24.345-37.421-23.703-37.711L-23.677-37.711Q-23.646-37.711-23.613-37.689Q-23.580-37.667-23.580-37.632L-23.580-37.531Q-23.580-37.527-23.589-37.509Q-23.598-37.491-23.598-37.487Q-23.914-37.092-24.384-36.870Q-24.855-36.648-25.351-36.648Q-25.760-36.648-26.142-36.758L-26.142-35.039Q-25.685-35.496-24.973-35.496Q-24.463-35.496-24.064-35.215Q-23.664-34.934-23.442-34.479Q-23.220-34.024-23.220-33.519Q-23.220-32.969-23.499-32.510Q-23.778-32.051-24.244-31.785Q-24.710-31.519-25.254-31.519Q-25.694-31.519-26.078-31.746Q-26.463-31.972-26.691-32.352Q-26.920-32.732-26.920-33.176Q-26.920-33.369-26.788-33.501Q-26.656-33.633-26.459-33.633Q-26.327-33.633-26.223-33.574Q-26.120-33.514-26.061-33.411Q-26.002-33.308-26.002-33.176Q-26.002-32.978-26.129-32.846Q-26.256-32.715-26.459-32.715Q-26.520-32.715-26.551-32.723",[1890],[1879,6077],{"fill":1881,"d":6078},"M86.434-20.335h22.762v-22.763H86.434Z",[1874,6080,6082],{"transform":6081},"translate(122.88 2.9)",[1879,6083],{"d":6084,"fill":1876,"stroke":1876,"className":6085,"style":1891},"M-26.314-32.104Q-26.067-31.805-25.461-31.805Q-25.180-31.805-24.940-31.943Q-24.701-32.082-24.523-32.304Q-24.345-32.526-24.235-32.789Q-24.002-33.365-24.002-34.481Q-24.169-34.116-24.474-33.892Q-24.780-33.668-25.162-33.668Q-25.698-33.668-26.114-33.947Q-26.529-34.226-26.760-34.692Q-26.990-35.158-26.990-35.685Q-26.990-36.098-26.843-36.467Q-26.696-36.837-26.432-37.113Q-26.169-37.390-25.799-37.551Q-25.430-37.711-25.017-37.711Q-24.459-37.711-24.085-37.419Q-23.712-37.127-23.508-36.663Q-23.303-36.199-23.224-35.683Q-23.145-35.167-23.145-34.635Q-23.145-33.919-23.413-33.196Q-23.681-32.473-24.204-31.996Q-24.727-31.519-25.452-31.519Q-26.002-31.519-26.379-31.768Q-26.757-32.016-26.757-32.534Q-26.757-32.653-26.700-32.756Q-26.643-32.860-26.542-32.919Q-26.441-32.978-26.314-32.978Q-26.129-32.978-26.006-32.846Q-25.883-32.715-25.883-32.534Q-25.883-32.359-26.010-32.231Q-26.138-32.104-26.314-32.104M-25.118-33.932Q-24.749-33.932-24.501-34.174Q-24.252-34.415-24.136-34.773Q-24.020-35.132-24.020-35.505Q-24.020-35.615-24.028-35.668Q-24.024-35.681-24.022-35.692Q-24.020-35.703-24.020-35.720Q-24.020-36.375-24.235-36.914Q-24.450-37.452-25.017-37.452Q-25.377-37.452-25.606-37.302Q-25.835-37.153-25.951-36.896Q-26.067-36.639-26.100-36.358Q-26.133-36.076-26.133-35.703L-26.133-35.668Q-26.133-35.342-26.107-35.055Q-26.081-34.767-25.982-34.508Q-25.883-34.248-25.672-34.090Q-25.461-33.932-25.118-33.932",[1890],[1874,6087,6089],{"transform":6088},"translate(-34.893 48.6)",[1879,6090],{"d":6091,"fill":1876,"stroke":1876,"className":6092,"style":1891},"M-24.490-31.717L-26.889-31.717Q-26.929-31.717-26.960-31.757Q-26.990-31.796-26.990-31.836Q-26.990-31.897-26.957-31.965Q-26.924-32.033-26.863-32.033Q-26.362-32.033-26.133-32.086Q-26.015-32.130-25.936-32.363L-24.714-37.280Q-24.696-37.368-24.696-37.412Q-24.696-37.478-24.723-37.496Q-24.894-37.549-25.426-37.549Q-25.531-37.549-25.531-37.667Q-25.531-37.729-25.498-37.797Q-25.465-37.865-25.404-37.865L-22.249-37.865Q-21.818-37.865-21.403-37.713Q-20.987-37.562-20.721-37.250Q-20.456-36.938-20.456-36.485Q-20.456-35.909-20.871-35.457Q-21.286-35.004-21.908-34.756Q-22.530-34.508-23.092-34.508L-24.586-34.508L-25.136-32.301Q-25.153-32.258-25.153-32.165Q-25.153-32.104-25.127-32.086Q-24.956-32.033-24.424-32.033Q-24.380-32.033-24.354-32Q-24.327-31.967-24.327-31.924Q-24.327-31.717-24.490-31.717M-23.940-37.215L-24.543-34.793L-23.246-34.793Q-22.846-34.793-22.477-34.907Q-22.108-35.022-21.871-35.272Q-21.633-35.501-21.486-35.923Q-21.339-36.344-21.339-36.714Q-21.339-37.175-21.695-37.362Q-22.051-37.549-22.561-37.549L-23.470-37.549Q-23.730-37.549-23.804-37.502Q-23.879-37.456-23.940-37.215",[1890],[1879,6094],{"fill":1881,"d":6095},"M-38.758 25.19h22.762V2.426h-22.762Z",[1874,6097,6099],{"transform":6098},"translate(-2.312 48.425)",[1879,6100],{"d":6101,"fill":1876,"stroke":1876,"className":6102,"style":1891},"M-25.065-31.519Q-26.190-31.519-26.604-32.416Q-27.017-33.312-27.017-34.587Q-27.017-35.360-26.867-36.059Q-26.718-36.758-26.283-37.234Q-25.848-37.711-25.065-37.711Q-24.288-37.711-23.853-37.232Q-23.418-36.753-23.268-36.057Q-23.119-35.360-23.119-34.587Q-23.119-33.308-23.532-32.414Q-23.945-31.519-25.065-31.519M-25.065-31.779Q-24.547-31.779-24.296-32.290Q-24.046-32.802-23.989-33.413Q-23.932-34.024-23.932-34.732Q-23.932-35.417-23.989-35.977Q-24.046-36.538-24.299-36.995Q-24.551-37.452-25.065-37.452Q-25.470-37.452-25.707-37.175Q-25.944-36.898-26.052-36.457Q-26.160-36.015-26.184-35.622Q-26.208-35.228-26.208-34.732Q-26.208-34.226-26.184-33.798Q-26.160-33.369-26.052-32.886Q-25.944-32.403-25.705-32.091Q-25.465-31.779-25.065-31.779",[1890],[1879,6104],{"fill":1881,"d":6105},"M-15.996 25.19H6.766V2.426h-22.762Z",[1874,6107,6109],{"transform":6108},"translate(20.45 48.425)",[1879,6110],{"d":6035,"fill":1876,"stroke":1876,"className":6111,"style":1891},[1890],[1874,6113,6114,6117],{"fill":1987,"stroke":1987,"style":1989},[1879,6115],{"fill":1881,"d":6116},"M6.767 25.19h22.762V2.426H6.767Z",[1874,6118,6120],{"transform":6119},"translate(43.212 48.425)",[1879,6121],{"d":6055,"fill":1987,"stroke":1987,"className":6122,"style":1891},[1890],[1879,6124],{"fill":1881,"d":6125},"M29.528 25.19h22.763V2.426H29.528Z",[1874,6127,6129],{"transform":6128},"translate(65.974 48.425)",[1879,6130],{"d":6131,"fill":1876,"stroke":1876,"className":6132,"style":1891},"M-26.990-33.084Q-26.990-33.642-26.630-34.055Q-26.270-34.468-25.694-34.740L-26.063-34.973Q-26.366-35.175-26.553-35.505Q-26.740-35.835-26.740-36.191Q-26.740-36.845-26.234-37.278Q-25.729-37.711-25.065-37.711Q-24.666-37.711-24.281-37.551Q-23.897-37.390-23.648-37.085Q-23.400-36.779-23.400-36.362Q-23.400-35.531-24.468-34.973L-23.914-34.626Q-23.567-34.398-23.356-34.029Q-23.145-33.659-23.145-33.246Q-23.145-32.868-23.303-32.550Q-23.461-32.231-23.738-31.998Q-24.015-31.765-24.358-31.642Q-24.701-31.519-25.065-31.519Q-25.531-31.519-25.977-31.706Q-26.423-31.893-26.707-32.247Q-26.990-32.600-26.990-33.084M-26.467-33.084Q-26.467-32.539-26.048-32.172Q-25.628-31.805-25.065-31.805Q-24.736-31.805-24.411-31.937Q-24.085-32.069-23.877-32.323Q-23.668-32.578-23.668-32.921Q-23.668-33.185-23.804-33.409Q-23.940-33.633-24.173-33.787L-25.417-34.569Q-25.878-34.332-26.173-33.945Q-26.467-33.558-26.467-33.084M-25.856-35.839L-24.740-35.136Q-24.516-35.259-24.312-35.448Q-24.107-35.637-23.987-35.870Q-23.866-36.103-23.866-36.362Q-23.866-36.670-24.037-36.920Q-24.209-37.171-24.485-37.311Q-24.762-37.452-25.074-37.452Q-25.523-37.452-25.896-37.206Q-26.270-36.960-26.270-36.533Q-26.270-36.129-25.856-35.839",[1890],[1879,6134],{"fill":1881,"d":6135},"M52.29 25.19h22.763V2.426H52.29Z",[1874,6137,6139],{"transform":6138},"translate(88.736 48.425)",[1879,6140],{"d":6084,"fill":1876,"stroke":1876,"className":6141,"style":1891},[1890],[1874,6143,6144,6147],{"fill":1987,"stroke":1987,"style":1989},[1879,6145],{"fill":1881,"d":6146},"M75.053 25.19h22.762V2.426H75.053Z",[1874,6148,6150],{"transform":6149},"translate(109.186 48.425)",[1879,6151],{"d":6152,"fill":1987,"stroke":1987,"className":6153,"style":1891},"M-23.470-31.717L-26.502-31.717L-26.502-32.033Q-25.351-32.033-25.351-32.328L-25.351-37.052Q-25.839-36.819-26.560-36.819L-26.560-37.135Q-25.430-37.135-24.868-37.711L-24.723-37.711Q-24.688-37.711-24.655-37.678Q-24.622-37.645-24.622-37.610L-24.622-32.328Q-24.622-32.033-23.470-32.033L-23.470-31.717M-20.060-33.194L-22.499-33.194L-22.499-33.510L-19.673-37.658Q-19.629-37.711-19.564-37.711L-19.410-37.711Q-19.370-37.711-19.337-37.678Q-19.304-37.645-19.304-37.601L-19.304-33.510L-18.403-33.510L-18.403-33.194L-19.304-33.194L-19.304-32.328Q-19.304-32.033-18.403-32.033L-18.403-31.717L-20.957-31.717L-20.957-32.033Q-20.596-32.033-20.328-32.088Q-20.060-32.143-20.060-32.328L-20.060-33.194M-20.003-36.683L-22.165-33.510L-20.003-33.510",[1890],[1879,6155],{"fill":1881,"d":6156},"M97.815 25.19h22.762V2.426H97.815Z",[1874,6158,6160],{"transform":6159},"translate(131.948 48.425)",[1879,6161],{"d":6162,"fill":1876,"stroke":1876,"className":6163,"style":1891},"M-23.470-31.717L-26.920-31.717L-26.920-31.950Q-26.920-31.963-26.889-31.994L-25.435-33.571Q-24.969-34.068-24.716-34.373Q-24.463-34.679-24.272-35.090Q-24.081-35.501-24.081-35.940Q-24.081-36.529-24.404-36.962Q-24.727-37.395-25.307-37.395Q-25.571-37.395-25.817-37.285Q-26.063-37.175-26.239-36.988Q-26.415-36.801-26.511-36.551L-26.432-36.551Q-26.230-36.551-26.087-36.415Q-25.944-36.279-25.944-36.063Q-25.944-35.857-26.087-35.718Q-26.230-35.580-26.432-35.580Q-26.634-35.580-26.777-35.723Q-26.920-35.865-26.920-36.063Q-26.920-36.525-26.683-36.898Q-26.445-37.272-26.045-37.491Q-25.646-37.711-25.197-37.711Q-24.674-37.711-24.220-37.496Q-23.765-37.280-23.492-36.881Q-23.220-36.481-23.220-35.940Q-23.220-35.545-23.391-35.191Q-23.563-34.837-23.828-34.558Q-24.094-34.279-24.545-33.894Q-24.995-33.510-25.074-33.435L-26.098-32.473L-25.281-32.473Q-24.630-32.473-24.193-32.484Q-23.756-32.495-23.725-32.517Q-23.655-32.600-23.600-32.840Q-23.545-33.079-23.505-33.347L-23.220-33.347L-23.470-31.717M-21.857-32.438L-21.901-32.438Q-21.699-32.121-21.313-31.963Q-20.926-31.805-20.500-31.805Q-19.963-31.805-19.724-32.240Q-19.484-32.675-19.484-33.255Q-19.484-33.835-19.731-34.275Q-19.977-34.714-20.508-34.714L-21.128-34.714Q-21.154-34.714-21.187-34.743Q-21.220-34.771-21.220-34.793L-21.220-34.894Q-21.220-34.925-21.192-34.949Q-21.163-34.973-21.128-34.973L-20.609-35.013Q-20.144-35.013-19.898-35.485Q-19.651-35.958-19.651-36.476Q-19.651-36.903-19.865-37.177Q-20.078-37.452-20.500-37.452Q-20.842-37.452-21.168-37.322Q-21.493-37.193-21.677-36.938L-21.651-36.938Q-21.449-36.938-21.313-36.797Q-21.176-36.656-21.176-36.459Q-21.176-36.261-21.310-36.127Q-21.444-35.993-21.642-35.993Q-21.844-35.993-21.983-36.127Q-22.121-36.261-22.121-36.459Q-22.121-37.048-21.618-37.379Q-21.115-37.711-20.500-37.711Q-20.122-37.711-19.720-37.571Q-19.317-37.430-19.049-37.151Q-18.781-36.872-18.781-36.476Q-18.781-35.927-19.135-35.490Q-19.489-35.052-20.029-34.868Q-19.638-34.789-19.293-34.565Q-18.948-34.341-18.737-34Q-18.526-33.659-18.526-33.264Q-18.526-32.882-18.689-32.559Q-18.852-32.236-19.144-32Q-19.436-31.765-19.783-31.642Q-20.130-31.519-20.500-31.519Q-20.948-31.519-21.378-31.680Q-21.809-31.840-22.090-32.167Q-22.372-32.495-22.372-32.952Q-22.372-33.167-22.224-33.310Q-22.077-33.453-21.857-33.453Q-21.647-33.453-21.502-33.308Q-21.356-33.163-21.356-32.952Q-21.356-32.741-21.504-32.589Q-21.651-32.438-21.857-32.438",[1890],[1879,6165],{"fill":1881,"stroke":1987,"d":6166,"style":2944},"M18.148-48.788v-5.69h68.286v5.69",[1874,6168,6169],{"fill":1987,"stroke":1987},[1874,6170,6172,6179,6185,6191,6197,6203,6209,6215,6221,6227,6233,6239],{"fill":1987,"stroke":1881,"fontSize":6171},"9",[1874,6173,6175],{"transform":6174},"translate(21.577 -30.47)",[1879,6176],{"d":6177,"fill":1987,"stroke":1987,"className":6178,"style":1891},"M-27.069-31.699L-27.069-33.141Q-27.069-33.172-27.041-33.196Q-27.012-33.220-26.981-33.220L-26.872-33.220Q-26.836-33.220-26.814-33.198Q-26.793-33.176-26.784-33.141Q-26.524-31.880-25.558-31.880Q-25.131-31.880-24.837-32.064Q-24.543-32.249-24.543-32.653Q-24.543-32.947-24.773-33.143Q-25.004-33.339-25.316-33.400L-25.918-33.519Q-26.384-33.607-26.727-33.890Q-27.069-34.174-27.069-34.613Q-27.069-35.206-26.632-35.479Q-26.195-35.751-25.558-35.751Q-25.079-35.751-24.731-35.505L-24.481-35.729Q-24.424-35.751-24.424-35.751L-24.371-35.751Q-24.345-35.751-24.312-35.725Q-24.279-35.698-24.279-35.668L-24.279-34.508Q-24.279-34.477-24.314-34.450Q-24.349-34.424-24.371-34.424L-24.481-34.424Q-24.503-34.424-24.536-34.453Q-24.569-34.481-24.569-34.508Q-24.569-34.973-24.835-35.244Q-25.101-35.514-25.566-35.514Q-25.971-35.514-26.274-35.369Q-26.577-35.224-26.577-34.868Q-26.577-34.622-26.360-34.468Q-26.142-34.314-25.865-34.257L-25.237-34.130Q-24.920-34.068-24.650-33.901Q-24.380-33.734-24.213-33.468Q-24.046-33.202-24.046-32.886Q-24.046-32.244-24.472-31.930Q-24.898-31.616-25.558-31.616Q-25.830-31.616-26.096-31.710Q-26.362-31.805-26.542-31.994L-26.863-31.655Q-26.880-31.616-26.929-31.616L-26.981-31.616Q-27.003-31.616-27.036-31.644Q-27.069-31.673-27.069-31.699M-22.745-32.789L-22.745-34.776Q-22.745-35.017-22.815-35.125Q-22.886-35.233-23.020-35.257Q-23.154-35.281-23.435-35.281L-23.435-35.597L-22.042-35.694L-22.042-32.824Q-22.042-32.446-21.996-32.260Q-21.950-32.073-21.778-31.976Q-21.607-31.880-21.251-31.880Q-20.917-31.880-20.678-32.071Q-20.438-32.262-20.313-32.565Q-20.188-32.868-20.188-33.185L-20.188-34.776Q-20.188-35.017-20.258-35.125Q-20.328-35.233-20.462-35.257Q-20.596-35.281-20.882-35.281L-20.882-35.597L-19.484-35.694L-19.484-32.534Q-19.484-32.297-19.414-32.189Q-19.344-32.082-19.210-32.058Q-19.076-32.033-18.794-32.033L-18.794-31.717L-20.161-31.616L-20.161-32.337Q-20.328-32.011-20.634-31.814Q-20.939-31.616-21.295-31.616Q-21.954-31.616-22.350-31.886Q-22.745-32.156-22.745-32.789M-16.210-31.717L-18.298-31.717L-18.298-32.033Q-17.990-32.033-17.799-32.086Q-17.608-32.139-17.608-32.328L-17.608-34.776Q-17.608-35.017-17.678-35.125Q-17.749-35.233-17.883-35.257Q-18.017-35.281-18.298-35.281L-18.298-35.597L-16.958-35.694L-16.958-34.859Q-16.760-35.237-16.399-35.466Q-16.039-35.694-15.617-35.694Q-14.571-35.694-14.387-34.885Q-14.185-35.255-13.826-35.474Q-13.468-35.694-13.051-35.694Q-12.427-35.694-12.102-35.400Q-11.776-35.105-11.776-34.481L-11.776-32.328Q-11.776-32.139-11.583-32.086Q-11.390-32.033-11.082-32.033L-11.082-31.717L-13.169-31.717L-13.169-32.033Q-12.862-32.033-12.669-32.086Q-12.475-32.139-12.475-32.328L-12.475-34.446Q-12.475-34.877-12.603-35.156Q-12.730-35.435-13.117-35.435Q-13.460-35.435-13.743-35.246Q-14.026-35.057-14.182-34.745Q-14.338-34.433-14.338-34.086L-14.338-32.328Q-14.338-32.139-14.147-32.086Q-13.956-32.033-13.648-32.033L-13.648-31.717L-15.736-31.717L-15.736-32.033Q-15.424-32.033-15.233-32.086Q-15.042-32.139-15.042-32.328L-15.042-34.446Q-15.042-34.705-15.085-34.927Q-15.129-35.149-15.274-35.292Q-15.419-35.435-15.679-35.435Q-16.215-35.435-16.560-35.028Q-16.905-34.622-16.905-34.086L-16.905-32.328Q-16.905-32.139-16.711-32.086Q-16.518-32.033-16.210-32.033",[1890],[1874,6180,6181],{"transform":6174},[1879,6182],{"d":6183,"fill":1987,"stroke":1987,"className":6184,"style":1891},"M-8.029-29.476Q-8.534-29.863-8.903-30.368Q-9.273-30.873-9.516-31.473Q-9.760-32.073-9.875-32.690Q-9.989-33.308-9.989-33.967Q-9.989-34.626-9.875-35.241Q-9.760-35.857-9.521-36.450Q-9.281-37.043-8.908-37.553Q-8.534-38.063-8.029-38.449Q-7.994-38.467-7.972-38.467L-7.893-38.467Q-7.805-38.467-7.805-38.366Q-7.805-38.331-7.840-38.296Q-8.402-37.773-8.747-37.067Q-9.092-36.362-9.240-35.580Q-9.387-34.798-9.387-33.967Q-9.387-33.343-9.308-32.759Q-9.229-32.174-9.051-31.607Q-8.873-31.040-8.574-30.539Q-8.275-30.038-7.840-29.630Q-7.805-29.594-7.805-29.555Q-7.805-29.458-7.893-29.458L-7.972-29.458Q-7.994-29.458-8.029-29.476M-3.384-31.717L-6.834-31.717L-6.834-31.950Q-6.834-31.963-6.803-31.994L-5.348-33.571Q-4.882-34.068-4.630-34.373Q-4.377-34.679-4.186-35.090Q-3.995-35.501-3.995-35.940Q-3.995-36.529-4.318-36.962Q-4.641-37.395-5.221-37.395Q-5.485-37.395-5.731-37.285Q-5.977-37.175-6.152-36.988Q-6.328-36.801-6.425-36.551L-6.346-36.551Q-6.144-36.551-6.001-36.415Q-5.858-36.279-5.858-36.063Q-5.858-35.857-6.001-35.718Q-6.144-35.580-6.346-35.580Q-6.548-35.580-6.691-35.723Q-6.834-35.865-6.834-36.063Q-6.834-36.525-6.596-36.898Q-6.359-37.272-5.959-37.491Q-5.559-37.711-5.111-37.711Q-4.588-37.711-4.133-37.496Q-3.678-37.280-3.406-36.881Q-3.133-36.481-3.133-35.940Q-3.133-35.545-3.305-35.191Q-3.476-34.837-3.742-34.558Q-4.008-34.279-4.458-33.894Q-4.909-33.510-4.988-33.435L-6.012-32.473L-5.194-32.473Q-4.544-32.473-4.107-32.484Q-3.670-32.495-3.639-32.517Q-3.569-32.600-3.514-32.840Q-3.459-33.079-3.419-33.347L-3.133-33.347",[1890],[1874,6186,6187],{"transform":6174},[1879,6188],{"d":6189,"fill":1987,"stroke":1987,"className":6190,"style":1891},"M-1.758-30.113Q-1.758-30.153-1.723-30.188Q-1.398-30.500-1.218-30.906Q-1.037-31.313-1.037-31.761L-1.037-31.844Q-1.178-31.717-1.380-31.717Q-1.525-31.717-1.639-31.783Q-1.754-31.849-1.820-31.961Q-1.886-32.073-1.886-32.222Q-1.886-32.442-1.745-32.583Q-1.604-32.723-1.380-32.723Q-1.059-32.723-0.919-32.425Q-0.778-32.126-0.778-31.761Q-0.778-31.251-0.982-30.796Q-1.187-30.342-1.552-29.990Q-1.587-29.972-1.613-29.972Q-1.670-29.972-1.714-30.016Q-1.758-30.060-1.758-30.113",[1890],[1874,6192,6193],{"transform":6174},[1879,6194],{"d":6195,"fill":1987,"stroke":1987,"className":6196,"style":1891},"M4.150-33.194L1.711-33.194L1.711-33.510L4.537-37.658Q4.581-37.711 4.647-37.711L4.801-37.711Q4.840-37.711 4.873-37.678Q4.906-37.645 4.906-37.601L4.906-33.510L5.807-33.510L5.807-33.194L4.906-33.194L4.906-32.328Q4.906-32.033 5.807-32.033L5.807-31.717L3.254-31.717L3.254-32.033Q3.614-32.033 3.882-32.088Q4.150-32.143 4.150-32.328L4.150-33.194M4.207-36.683L2.045-33.510L4.207-33.510L4.207-36.683M6.756-29.458L6.673-29.458Q6.585-29.458 6.585-29.555Q6.585-29.594 6.620-29.630Q7.455-30.403 7.815-31.537Q8.176-32.671 8.176-33.967Q8.176-34.587 8.097-35.178Q8.017-35.769 7.837-36.327Q7.657-36.885 7.356-37.393Q7.055-37.900 6.620-38.296Q6.585-38.331 6.585-38.366Q6.585-38.467 6.673-38.467L6.756-38.467Q6.774-38.467 6.809-38.449Q7.314-38.067 7.688-37.553Q8.061-37.039 8.299-36.461Q8.536-35.883 8.652-35.255Q8.769-34.626 8.769-33.967Q8.769-33.308 8.652-32.677Q8.536-32.047 8.296-31.462Q8.057-30.878 7.686-30.368Q7.314-29.858 6.809-29.476Q6.774-29.458 6.756-29.458",[1890],[1874,6198,6199],{"transform":6174},[1879,6200],{"d":6201,"fill":1987,"stroke":1987,"className":6202,"style":1891},"M18.744-32.860L12.938-32.860Q12.859-32.873 12.809-32.923Q12.758-32.974 12.758-33.049Q12.758-33.198 12.938-33.246L18.744-33.246Q18.915-33.194 18.915-33.049Q18.915-32.895 18.744-32.860M18.744-34.688L12.938-34.688Q12.758-34.718 12.758-34.877Q12.758-35.026 12.938-35.074L18.744-35.074Q18.915-35.022 18.915-34.877Q18.915-34.723 18.744-34.688",[1890],[1874,6204,6205],{"transform":6174},[1879,6206],{"d":6207,"fill":1987,"stroke":1987,"className":6208,"style":1891},"M24.895-31.717L22.496-31.717Q22.456-31.717 22.425-31.757Q22.395-31.796 22.395-31.836Q22.395-31.897 22.428-31.965Q22.461-32.033 22.522-32.033Q23.023-32.033 23.252-32.086Q23.370-32.130 23.449-32.363L24.671-37.280Q24.689-37.368 24.689-37.412Q24.689-37.478 24.662-37.496Q24.491-37.549 23.959-37.549Q23.854-37.549 23.854-37.667Q23.854-37.729 23.887-37.797Q23.920-37.865 23.981-37.865L27.136-37.865Q27.567-37.865 27.982-37.713Q28.398-37.562 28.664-37.250Q28.929-36.938 28.929-36.485Q28.929-35.909 28.514-35.457Q28.099-35.004 27.477-34.756Q26.855-34.508 26.293-34.508L24.799-34.508L24.249-32.301Q24.232-32.258 24.232-32.165Q24.232-32.104 24.258-32.086Q24.429-32.033 24.961-32.033Q25.005-32.033 25.031-32Q25.058-31.967 25.058-31.924Q25.058-31.717 24.895-31.717M25.445-37.215L24.842-34.793L26.139-34.793Q26.539-34.793 26.908-34.907Q27.277-35.022 27.514-35.272Q27.752-35.501 27.899-35.923Q28.046-36.344 28.046-36.714Q28.046-37.175 27.690-37.362Q27.334-37.549 26.824-37.549L25.915-37.549Q25.655-37.549 25.581-37.502Q25.506-37.456 25.445-37.215",[1890],[1874,6210,6211],{"transform":6174},[1879,6212],{"d":6213,"fill":1987,"stroke":1987,"className":6214,"style":1891},"M31.558-29.467L30.279-29.467L30.279-38.467L31.558-38.467L31.558-38.080L30.666-38.080L30.666-29.854L31.558-29.854L31.558-29.467M32.591-32.723Q32.731-32.310 33.092-32.058Q33.452-31.805 33.887-31.805Q34.340-31.805 34.605-32.058Q34.871-32.310 34.975-32.695Q35.078-33.079 35.078-33.536Q35.078-35.237 34.168-35.237Q33.847-35.237 33.619-35.143Q33.390-35.048 33.261-34.929Q33.131-34.811 33.019-34.672Q32.907-34.534 32.872-34.525L32.788-34.525Q32.744-34.525 32.714-34.556Q32.683-34.587 32.683-34.635L32.683-37.632Q32.683-37.663 32.718-37.687Q32.753-37.711 32.780-37.711L32.819-37.711Q33.452-37.421 34.124-37.421Q34.797-37.421 35.438-37.711L35.465-37.711Q35.495-37.711 35.528-37.689Q35.561-37.667 35.561-37.632L35.561-37.531Q35.561-37.527 35.552-37.509Q35.544-37.491 35.544-37.487Q35.227-37.092 34.757-36.870Q34.287-36.648 33.790-36.648Q33.382-36.648 32.999-36.758L32.999-35.039Q33.456-35.496 34.168-35.496Q34.678-35.496 35.078-35.215Q35.478-34.934 35.700-34.479Q35.922-34.024 35.922-33.519Q35.922-32.969 35.643-32.510Q35.364-32.051 34.898-31.785Q34.432-31.519 33.887-31.519Q33.448-31.519 33.063-31.746Q32.678-31.972 32.450-32.352Q32.221-32.732 32.221-33.176Q32.221-33.369 32.353-33.501Q32.485-33.633 32.683-33.633Q32.815-33.633 32.918-33.574Q33.021-33.514 33.081-33.411Q33.140-33.308 33.140-33.176Q33.140-32.978 33.012-32.846Q32.885-32.715 32.683-32.715Q32.621-32.715 32.591-32.723M37.860-29.467L36.581-29.467L36.581-29.854L37.473-29.854L37.473-38.080L36.581-38.080L36.581-38.467L37.860-38.467",[1890],[1874,6216,6217],{"transform":6174},[1879,6218],{"d":6219,"fill":1987,"stroke":1987,"className":6220,"style":1891},"M47.253-33.769L41.971-33.769Q41.896-33.782 41.843-33.835Q41.790-33.888 41.790-33.967Q41.790-34.033 41.845-34.088Q41.900-34.143 41.971-34.156L47.253-34.156Q47.323-34.143 47.374-34.092Q47.424-34.042 47.424-33.967Q47.424-33.800 47.253-33.769",[1890],[1874,6222,6223],{"transform":6174},[1879,6224],{"d":6225,"fill":1987,"stroke":1987,"className":6226,"style":1891},"M53.154-31.717L50.755-31.717Q50.715-31.717 50.684-31.757Q50.654-31.796 50.654-31.836Q50.654-31.897 50.687-31.965Q50.720-32.033 50.781-32.033Q51.282-32.033 51.511-32.086Q51.629-32.130 51.708-32.363L52.930-37.280Q52.948-37.368 52.948-37.412Q52.948-37.478 52.921-37.496Q52.750-37.549 52.218-37.549Q52.113-37.549 52.113-37.667Q52.113-37.729 52.146-37.797Q52.179-37.865 52.240-37.865L55.395-37.865Q55.826-37.865 56.241-37.713Q56.657-37.562 56.923-37.250Q57.188-36.938 57.188-36.485Q57.188-35.909 56.773-35.457Q56.358-35.004 55.736-34.756Q55.114-34.508 54.552-34.508L53.058-34.508L52.508-32.301Q52.491-32.258 52.491-32.165Q52.491-32.104 52.517-32.086Q52.688-32.033 53.220-32.033Q53.264-32.033 53.290-32Q53.317-31.967 53.317-31.924Q53.317-31.717 53.154-31.717M53.704-37.215L53.101-34.793L54.398-34.793Q54.798-34.793 55.167-34.907Q55.536-35.022 55.773-35.272Q56.011-35.501 56.158-35.923Q56.305-36.344 56.305-36.714Q56.305-37.175 55.949-37.362Q55.593-37.549 55.083-37.549L54.174-37.549Q53.914-37.549 53.840-37.502Q53.765-37.456 53.704-37.215",[1890],[1874,6228,6229],{"transform":6174},[1879,6230],{"d":6231,"fill":1987,"stroke":1987,"className":6232,"style":1891},"M59.818-29.467L58.539-29.467L58.539-38.467L59.818-38.467L59.818-38.080L58.926-38.080L58.926-29.854L59.818-29.854L59.818-29.467M63.931-31.717L60.481-31.717L60.481-31.950Q60.481-31.963 60.512-31.994L61.967-33.571Q62.433-34.068 62.685-34.373Q62.938-34.679 63.129-35.090Q63.320-35.501 63.320-35.940Q63.320-36.529 62.997-36.962Q62.674-37.395 62.094-37.395Q61.831-37.395 61.584-37.285Q61.338-37.175 61.163-36.988Q60.987-36.801 60.890-36.551L60.969-36.551Q61.171-36.551 61.314-36.415Q61.457-36.279 61.457-36.063Q61.457-35.857 61.314-35.718Q61.171-35.580 60.969-35.580Q60.767-35.580 60.624-35.723Q60.481-35.865 60.481-36.063Q60.481-36.525 60.719-36.898Q60.956-37.272 61.356-37.491Q61.756-37.711 62.204-37.711Q62.727-37.711 63.182-37.496Q63.637-37.280 63.909-36.881Q64.182-36.481 64.182-35.940Q64.182-35.545 64.010-35.191Q63.839-34.837 63.573-34.558Q63.307-34.279 62.857-33.894Q62.406-33.510 62.327-33.435L61.303-32.473L62.121-32.473Q62.771-32.473 63.208-32.484Q63.645-32.495 63.676-32.517Q63.747-32.600 63.802-32.840Q63.856-33.079 63.896-33.347L64.182-33.347L63.931-31.717M66.120-29.467L64.841-29.467L64.841-29.854L65.733-29.854L65.733-38.080L64.841-38.080L64.841-38.467L66.120-38.467",[1890],[1874,6234,6235],{"transform":6174},[1879,6236],{"d":6237,"fill":1987,"stroke":1987,"className":6238,"style":1891},"M76.291-32.860L70.485-32.860Q70.406-32.873 70.356-32.923Q70.305-32.974 70.305-33.049Q70.305-33.198 70.485-33.246L76.291-33.246Q76.462-33.194 76.462-33.049Q76.462-32.895 76.291-32.860M76.291-34.688L70.485-34.688Q70.305-34.718 70.305-34.877Q70.305-35.026 70.485-35.074L76.291-35.074Q76.462-35.022 76.462-34.877Q76.462-34.723 76.291-34.688",[1890],[1874,6240,6241],{"transform":6174},[1879,6242],{"d":6243,"fill":1987,"stroke":1987,"className":6244,"style":1891},"M83.462-31.717L80.430-31.717L80.430-32.033Q81.581-32.033 81.581-32.328L81.581-37.052Q81.093-36.819 80.372-36.819L80.372-37.135Q81.502-37.135 82.064-37.711L82.209-37.711Q82.244-37.711 82.277-37.678Q82.310-37.645 82.310-37.610L82.310-32.328Q82.310-32.033 83.462-32.033L83.462-31.717M86.485-31.519Q85.360-31.519 84.947-32.416Q84.534-33.312 84.534-34.587Q84.534-35.360 84.683-36.059Q84.833-36.758 85.268-37.234Q85.703-37.711 86.485-37.711Q87.263-37.711 87.698-37.232Q88.133-36.753 88.283-36.057Q88.432-35.360 88.432-34.587Q88.432-33.308 88.019-32.414Q87.606-31.519 86.485-31.519M86.485-31.779Q87.004-31.779 87.254-32.290Q87.505-32.802 87.562-33.413Q87.619-34.024 87.619-34.732Q87.619-35.417 87.562-35.977Q87.505-36.538 87.252-36.995Q86.999-37.452 86.485-37.452Q86.081-37.452 85.844-37.175Q85.606-36.898 85.499-36.457Q85.391-36.015 85.367-35.622Q85.343-35.228 85.343-34.732Q85.343-34.226 85.367-33.798Q85.391-33.369 85.499-32.886Q85.606-32.403 85.846-32.091Q86.085-31.779 86.485-31.779",[1890],[2271,6246,6248,6249,6358,6359],{"className":6247},[2274],"With ",[389,6250,6252],{"className":6251},[392],[389,6253,6255,6282],{"className":6254,"ariaHidden":397},[396],[389,6256,6258,6261,6264,6267,6270,6273,6276,6279],{"className":6257},[401],[389,6259],{"className":6260,"style":487},[405],[389,6262,5392],{"className":6263,"style":738},[410,423],[389,6265,577],{"className":6266},[415],[389,6268,966],{"className":6269},[410,423],[389,6271,622],{"className":6272},[464],[389,6274],{"className":6275,"style":645},[585],[389,6277,724],{"className":6278},[649],[389,6280],{"className":6281,"style":645},[585],[389,6283,6285,6289,6343,6346,6349,6352,6355],{"className":6284},[401],[389,6286],{"className":6287,"style":6288},[405],"height:1.1858em;vertical-align:-0.4358em;",[389,6290,6292,6297],{"className":6291},[2695],[389,6293,5625],{"className":6294,"style":6296},[2695,5623,6295],"small-op","position:relative;top:0em;",[389,6298,6300],{"className":6299},[428],[389,6301,6303,6334],{"className":6302},[432,790],[389,6304,6306,6331],{"className":6305},[436],[389,6307,6310],{"className":6308,"style":6309},[440],"height:0.162em;",[389,6311,6313,6316],{"style":6312},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[389,6314],{"className":6315,"style":449},[448],[389,6317,6319],{"className":6318},[453,454,455,456],[389,6320,6322,6325,6328],{"className":6321},[410,456],[389,6323,979],{"className":6324,"style":978},[410,423,456],[389,6326,650],{"className":6327},[649,456],[389,6329,966],{"className":6330},[410,423,456],[389,6332,832],{"className":6333},[831],[389,6335,6337],{"className":6336},[436],[389,6338,6341],{"className":6339,"style":6340},[440],"height:0.4358em;",[389,6342],{},[389,6344],{"className":6345,"style":586},[585],[389,6347,533],{"className":6348},[410,423],[389,6350,577],{"className":6351},[415],[389,6353,979],{"className":6354,"style":978},[410,423],[389,6356,622],{"className":6357},[464],", any range sum is the difference of two prefix entries: ",[389,6360,6362],{"className":6361},[392],[389,6363,6365,6404,6440],{"className":6364,"ariaHidden":397},[396],[389,6366,6368,6371,6377,6380,6383,6386,6389,6392,6395,6398,6401],{"className":6367},[401],[389,6369],{"className":6370,"style":487},[405],[389,6372,6374],{"className":6373},[410,4202],[389,6375,4206],{"className":6376},[410],[389,6378,416],{"className":6379},[415],[389,6381,641],{"className":6382,"style":640},[410,423],[389,6384,971],{"className":6385},[970],[389,6387],{"className":6388,"style":586},[585],[389,6390,664],{"className":6391,"style":491},[410,423],[389,6393,465],{"className":6394},[464],[389,6396],{"className":6397,"style":645},[585],[389,6399,724],{"className":6400},[649],[389,6402],{"className":6403,"style":645},[585],[389,6405,6407,6410,6413,6416,6419,6425,6428,6431,6434,6437],{"className":6406},[401],[389,6408],{"className":6409,"style":487},[405],[389,6411,5392],{"className":6412,"style":738},[410,423],[389,6414,577],{"className":6415},[415],[389,6417,664],{"className":6418,"style":491},[410,423],[389,6420,6422],{"className":6421},[410],[389,6423,696],{"className":6424},[410],[389,6426,499],{"className":6427},[410],[389,6429,622],{"className":6430},[464],[389,6432],{"className":6433,"style":601},[585],[389,6435,606],{"className":6436},[605],[389,6438],{"className":6439,"style":601},[585],[389,6441,6443,6446,6449,6452,6455],{"className":6442},[401],[389,6444],{"className":6445,"style":487},[405],[389,6447,5392],{"className":6448,"style":738},[410,423],[389,6450,577],{"className":6451},[415],[389,6453,641],{"className":6454,"style":640},[410,423],[389,6456,622],{"className":6457},[464],[381,6459,6460,6461,884,6503,6547,6548,6563,6564,6697],{},"The highlighted entries are ",[389,6462,6464],{"className":6463},[392],[389,6465,6467,6494],{"className":6466,"ariaHidden":397},[396],[389,6468,6470,6473,6476,6479,6482,6485,6488,6491],{"className":6469},[401],[389,6471],{"className":6472,"style":487},[405],[389,6474,5392],{"className":6475,"style":738},[410,423],[389,6477,577],{"className":6478},[415],[389,6480,460],{"className":6481},[410],[389,6483,622],{"className":6484},[464],[389,6486],{"className":6487,"style":645},[585],[389,6489,724],{"className":6490},[649],[389,6492],{"className":6493,"style":645},[585],[389,6495,6497,6500],{"className":6496},[401],[389,6498],{"className":6499,"style":880},[405],[389,6501,2314],{"className":6502},[410],[389,6504,6506],{"className":6505},[392],[389,6507,6509,6537],{"className":6508,"ariaHidden":397},[396],[389,6510,6512,6515,6518,6521,6525,6528,6531,6534],{"className":6511},[401],[389,6513],{"className":6514,"style":487},[405],[389,6516,5392],{"className":6517,"style":738},[410,423],[389,6519,577],{"className":6520},[415],[389,6522,6524],{"className":6523},[410],"5",[389,6526,622],{"className":6527},[464],[389,6529],{"className":6530,"style":645},[585],[389,6532,724],{"className":6533},[649],[389,6535],{"className":6536,"style":645},[585],[389,6538,6540,6543],{"className":6539},[401],[389,6541],{"className":6542,"style":880},[405],[389,6544,6546],{"className":6545},[410],"14","; their difference ",[389,6549,6551],{"className":6550},[392],[389,6552,6554],{"className":6553,"ariaHidden":397},[396],[389,6555,6557,6560],{"className":6556},[401],[389,6558],{"className":6559,"style":880},[405],[389,6561,2382],{"className":6562},[410]," is\nexactly ",[389,6565,6567],{"className":6566},[392],[389,6568,6570,6597,6624,6651,6670,6688],{"className":6569,"ariaHidden":397},[396],[389,6571,6573,6576,6579,6582,6585,6588,6591,6594],{"className":6572},[401],[389,6574],{"className":6575,"style":487},[405],[389,6577,533],{"className":6578},[410,423],[389,6580,577],{"className":6581},[415],[389,6583,460],{"className":6584},[410],[389,6586,622],{"className":6587},[464],[389,6589],{"className":6590,"style":601},[585],[389,6592,696],{"className":6593},[605],[389,6595],{"className":6596,"style":601},[585],[389,6598,6600,6603,6606,6609,6612,6615,6618,6621],{"className":6599},[401],[389,6601],{"className":6602,"style":487},[405],[389,6604,533],{"className":6605},[410,423],[389,6607,577],{"className":6608},[415],[389,6610,2304],{"className":6611},[410],[389,6613,622],{"className":6614},[464],[389,6616],{"className":6617,"style":601},[585],[389,6619,696],{"className":6620},[605],[389,6622],{"className":6623,"style":601},[585],[389,6625,6627,6630,6633,6636,6639,6642,6645,6648],{"className":6626},[401],[389,6628],{"className":6629,"style":487},[405],[389,6631,533],{"className":6632},[410,423],[389,6634,577],{"className":6635},[415],[389,6637,2314],{"className":6638},[410],[389,6640,622],{"className":6641},[464],[389,6643],{"className":6644,"style":645},[585],[389,6646,724],{"className":6647},[649],[389,6649],{"className":6650,"style":645},[585],[389,6652,6654,6658,6661,6664,6667],{"className":6653},[401],[389,6655],{"className":6656,"style":6657},[405],"height:0.7278em;vertical-align:-0.0833em;",[389,6659,2314],{"className":6660},[410],[389,6662],{"className":6663,"style":601},[585],[389,6665,696],{"className":6666},[605],[389,6668],{"className":6669,"style":601},[585],[389,6671,6673,6676,6679,6682,6685],{"className":6672},[401],[389,6674],{"className":6675,"style":6657},[405],[389,6677,499],{"className":6678},[410],[389,6680],{"className":6681,"style":601},[585],[389,6683,696],{"className":6684},[605],[389,6686],{"className":6687,"style":601},[585],[389,6689,6691,6694],{"className":6690},[401],[389,6692],{"className":6693,"style":880},[405],[389,6695,6524],{"className":6696},[410],". One subtraction, no rescanning.",[381,6699,6700,6730,6731,6781,6782,6806,6807,6810,6811,6841,6842,6857,6858,6945,6946,7033,7034,7076,7077,7137],{},[385,6701,6702,6703,528],{},"Counting subarrays with sum ",[389,6704,6706],{"className":6705},[392],[389,6707,6709,6721],{"className":6708,"ariaHidden":397},[396],[389,6710,6712,6715,6718],{"className":6711},[401],[389,6713],{"className":6714,"style":4222},[405],[389,6716,724],{"className":6717},[649],[389,6719],{"className":6720,"style":645},[585],[389,6722,6724,6727],{"className":6723},[401],[389,6725],{"className":6726,"style":861},[405],[389,6728,4071],{"className":6729,"style":4070},[410,423]," Prefix sums turn a ",[389,6732,6734],{"className":6733},[392],[389,6735,6737],{"className":6736,"ariaHidden":397},[396],[389,6738,6740,6743,6746,6749,6778],{"className":6739},[401],[389,6741],{"className":6742,"style":406},[405],[389,6744,411],{"className":6745},[410],[389,6747,416],{"className":6748},[415],[389,6750,6752,6755],{"className":6751},[410],[389,6753,424],{"className":6754},[410,423],[389,6756,6758],{"className":6757},[428],[389,6759,6761],{"className":6760},[432],[389,6762,6764],{"className":6763},[436],[389,6765,6767],{"className":6766,"style":441},[440],[389,6768,6769,6772],{"style":444},[389,6770],{"className":6771,"style":449},[448],[389,6773,6775],{"className":6774},[453,454,455,456],[389,6776,460],{"className":6777},[410,456],[389,6779,465],{"className":6780},[464]," subarray\nscan into ",[389,6783,6785],{"className":6784},[392],[389,6786,6788],{"className":6787,"ariaHidden":397},[396],[389,6789,6791,6794,6797,6800,6803],{"className":6790},[401],[389,6792],{"className":6793,"style":487},[405],[389,6795,492],{"className":6796,"style":491},[410,423],[389,6798,416],{"className":6799},[415],[389,6801,424],{"className":6802},[410,423],[389,6804,465],{"className":6805},[464]," for ",[385,6808,6809],{},"Subarray Sum Equals K",". A subarray ",[389,6812,6814],{"className":6813},[392],[389,6815,6817],{"className":6816,"ariaHidden":397},[396],[389,6818,6820,6823,6826,6829,6832,6835,6838],{"className":6819},[401],[389,6821],{"className":6822,"style":487},[405],[389,6824,416],{"className":6825},[415],[389,6827,966],{"className":6828},[410,423],[389,6830,971],{"className":6831},[970],[389,6833],{"className":6834,"style":586},[585],[389,6836,979],{"className":6837,"style":978},[410,423],[389,6839,465],{"className":6840},[464]," has sum ",[389,6843,6845],{"className":6844},[392],[389,6846,6848],{"className":6847,"ariaHidden":397},[396],[389,6849,6851,6854],{"className":6850},[401],[389,6852],{"className":6853,"style":861},[405],[389,6855,4071],{"className":6856,"style":4070},[410,423],"\niff ",[389,6859,6861],{"className":6860},[392],[389,6862,6864,6888,6909,6936],{"className":6863,"ariaHidden":397},[396],[389,6865,6867,6870,6873,6876,6879,6882,6885],{"className":6866},[401],[389,6868],{"className":6869,"style":487},[405],[389,6871,5392],{"className":6872,"style":738},[410,423],[389,6874,577],{"className":6875},[415],[389,6877,979],{"className":6878,"style":978},[410,423],[389,6880],{"className":6881,"style":601},[585],[389,6883,696],{"className":6884},[605],[389,6886],{"className":6887,"style":601},[585],[389,6889,6891,6894,6897,6900,6903,6906],{"className":6890},[401],[389,6892],{"className":6893,"style":487},[405],[389,6895,499],{"className":6896},[410],[389,6898,622],{"className":6899},[464],[389,6901],{"className":6902,"style":601},[585],[389,6904,606],{"className":6905},[605],[389,6907],{"className":6908,"style":601},[585],[389,6910,6912,6915,6918,6921,6924,6927,6930,6933],{"className":6911},[401],[389,6913],{"className":6914,"style":487},[405],[389,6916,5392],{"className":6917,"style":738},[410,423],[389,6919,577],{"className":6920},[415],[389,6922,966],{"className":6923},[410,423],[389,6925,622],{"className":6926},[464],[389,6928],{"className":6929,"style":645},[585],[389,6931,724],{"className":6932},[649],[389,6934],{"className":6935,"style":645},[585],[389,6937,6939,6942],{"className":6938},[401],[389,6940],{"className":6941,"style":861},[405],[389,6943,4071],{"className":6944,"style":4070},[410,423],", i.e. ",[389,6947,6949],{"className":6948},[392],[389,6950,6952,6979,7003,7024],{"className":6951,"ariaHidden":397},[396],[389,6953,6955,6958,6961,6964,6967,6970,6973,6976],{"className":6954},[401],[389,6956],{"className":6957,"style":487},[405],[389,6959,5392],{"className":6960,"style":738},[410,423],[389,6962,577],{"className":6963},[415],[389,6965,966],{"className":6966},[410,423],[389,6968,622],{"className":6969},[464],[389,6971],{"className":6972,"style":645},[585],[389,6974,724],{"className":6975},[649],[389,6977],{"className":6978,"style":645},[585],[389,6980,6982,6985,6988,6991,6994,6997,7000],{"className":6981},[401],[389,6983],{"className":6984,"style":487},[405],[389,6986,5392],{"className":6987,"style":738},[410,423],[389,6989,577],{"className":6990},[415],[389,6992,979],{"className":6993,"style":978},[410,423],[389,6995],{"className":6996,"style":601},[585],[389,6998,696],{"className":6999},[605],[389,7001],{"className":7002,"style":601},[585],[389,7004,7006,7009,7012,7015,7018,7021],{"className":7005},[401],[389,7007],{"className":7008,"style":487},[405],[389,7010,499],{"className":7011},[410],[389,7013,622],{"className":7014},[464],[389,7016],{"className":7017,"style":601},[585],[389,7019,606],{"className":7020},[605],[389,7022],{"className":7023,"style":601},[585],[389,7025,7027,7030],{"className":7026},[401],[389,7028],{"className":7029,"style":861},[405],[389,7031,4071],{"className":7032,"style":4070},[410,423],". So as we sweep a running prefix\n",[389,7035,7037],{"className":7036},[392],[389,7038,7040,7064],{"className":7039,"ariaHidden":397},[396],[389,7041,7043,7046,7049,7052,7055,7058,7061],{"className":7042},[401],[389,7044],{"className":7045,"style":487},[405],[389,7047,5392],{"className":7048,"style":738},[410,423],[389,7050,577],{"className":7051},[415],[389,7053,979],{"className":7054,"style":978},[410,423],[389,7056],{"className":7057,"style":601},[585],[389,7059,696],{"className":7060},[605],[389,7062],{"className":7063,"style":601},[585],[389,7065,7067,7070,7073],{"className":7066},[401],[389,7068],{"className":7069,"style":487},[405],[389,7071,499],{"className":7072},[410],[389,7074,622],{"className":7075},[464]," left to right, the number of valid left endpoints is the number of\nearlier prefixes equal to ",[389,7078,7080],{"className":7079},[392],[389,7081,7083,7107,7128],{"className":7082,"ariaHidden":397},[396],[389,7084,7086,7089,7092,7095,7098,7101,7104],{"className":7085},[401],[389,7087],{"className":7088,"style":487},[405],[389,7090,5392],{"className":7091,"style":738},[410,423],[389,7093,577],{"className":7094},[415],[389,7096,979],{"className":7097,"style":978},[410,423],[389,7099],{"className":7100,"style":601},[585],[389,7102,696],{"className":7103},[605],[389,7105],{"className":7106,"style":601},[585],[389,7108,7110,7113,7116,7119,7122,7125],{"className":7109},[401],[389,7111],{"className":7112,"style":487},[405],[389,7114,499],{"className":7115},[410],[389,7117,622],{"className":7118},[464],[389,7120],{"className":7121,"style":601},[585],[389,7123,606],{"className":7124},[605],[389,7126],{"className":7127,"style":601},[585],[389,7129,7131,7134],{"className":7130},[401],[389,7132],{"className":7133,"style":861},[405],[389,7135,4071],{"className":7136,"style":4070},[410,423],". Keep a hash map of prefix-value\nfrequencies seen so far:",[3480,7139,7141],{"className":3482,"code":7140,"language":3484,"meta":376,"style":376},"caption: $\\textsc{CountSubarrays}(a, k)$ — number of subarrays summing to $k$, in $O(n)$\n$\\text{count} \\gets 0,\\ \\ \\text{prefix} \\gets 0$\n$\\text{freq} \\gets \\{\\,0 : 1\\,\\}$ \u002F\u002F empty prefix seen once\nfor $j \\gets 0$ to $n-1$ do\n  $\\text{prefix} \\gets \\text{prefix} + a[j]$\n  $\\text{count} \\gets \\text{count} + \\text{freq}[\\text{prefix} - k]$ \u002F\u002F 0 if absent\n  $\\text{freq}[\\text{prefix}] \\gets \\text{freq}[\\text{prefix}] + 1$\nreturn $\\text{count}$\n",[3486,7142,7143,7148,7153,7158,7163,7168,7173,7178],{"__ignoreMap":376},[389,7144,7145],{"class":3490,"line":6},[389,7146,7147],{},"caption: $\\textsc{CountSubarrays}(a, k)$ — number of subarrays summing to $k$, in $O(n)$\n",[389,7149,7150],{"class":3490,"line":18},[389,7151,7152],{},"$\\text{count} \\gets 0,\\ \\ \\text{prefix} \\gets 0$\n",[389,7154,7155],{"class":3490,"line":24},[389,7156,7157],{},"$\\text{freq} \\gets \\{\\,0 : 1\\,\\}$ \u002F\u002F empty prefix seen once\n",[389,7159,7160],{"class":3490,"line":73},[389,7161,7162],{},"for $j \\gets 0$ to $n-1$ do\n",[389,7164,7165],{"class":3490,"line":102},[389,7166,7167],{},"  $\\text{prefix} \\gets \\text{prefix} + a[j]$\n",[389,7169,7170],{"class":3490,"line":108},[389,7171,7172],{},"  $\\text{count} \\gets \\text{count} + \\text{freq}[\\text{prefix} - k]$ \u002F\u002F 0 if absent\n",[389,7174,7175],{"class":3490,"line":116},[389,7176,7177],{},"  $\\text{freq}[\\text{prefix}] \\gets \\text{freq}[\\text{prefix}] + 1$\n",[389,7179,7180],{"class":3490,"line":196},[389,7181,7182],{},"return $\\text{count}$\n",[381,7184,7185,7186,665,7189,7231,7232,7247,7248,7290,7291,7315,7316,7318],{},"Seeding ",[3486,7187,7188],{},"freq",[389,7190,7192],{"className":7191},[392],[389,7193,7195,7218],{"className":7194,"ariaHidden":397},[396],[389,7196,7198,7201,7205,7208,7211,7215],{"className":7197},[401],[389,7199],{"className":7200,"style":487},[405],[389,7202,7204],{"className":7203},[415],"{",[389,7206,581],{"className":7207},[410],[389,7209],{"className":7210,"style":645},[585],[389,7212,7214],{"className":7213},[649],":",[389,7216],{"className":7217,"style":645},[585],[389,7219,7221,7224,7227],{"className":7220},[401],[389,7222],{"className":7223,"style":487},[405],[389,7225,499],{"className":7226},[410],[389,7228,7230],{"className":7229},[464],"}"," accounts for subarrays that start at index ",[389,7233,7235],{"className":7234},[392],[389,7236,7238],{"className":7237,"ariaHidden":397},[396],[389,7239,7241,7244],{"className":7240},[401],[389,7242],{"className":7243,"style":880},[405],[389,7245,581],{"className":7246},[410],"\n(those need ",[389,7249,7251],{"className":7250},[392],[389,7252,7254,7281],{"className":7253,"ariaHidden":397},[396],[389,7255,7257,7260,7263,7266,7269,7272,7275,7278],{"className":7256},[401],[389,7258],{"className":7259,"style":487},[405],[389,7261,5392],{"className":7262,"style":738},[410,423],[389,7264,577],{"className":7265},[415],[389,7267,966],{"className":7268},[410,423],[389,7270,622],{"className":7271},[464],[389,7273],{"className":7274,"style":645},[585],[389,7276,724],{"className":7277},[649],[389,7279],{"className":7280,"style":645},[585],[389,7282,7284,7287],{"className":7283},[401],[389,7285],{"className":7286,"style":880},[405],[389,7288,581],{"className":7289},[410],"). One pass, ",[389,7292,7294],{"className":7293},[392],[389,7295,7297],{"className":7296,"ariaHidden":397},[396],[389,7298,7300,7303,7306,7309,7312],{"className":7299},[401],[389,7301],{"className":7302,"style":487},[405],[389,7304,492],{"className":7305,"style":491},[410,423],[389,7307,416],{"className":7308},[415],[389,7310,424],{"className":7311},[410,423],[389,7313,465],{"className":7314},[464]," time and space. Note this works for\n",[1253,7317,5346],{}," integers, positive or negative, unlike the sliding window, which needed\npositivity for monotonicity.",[381,7320,7321,7324,7325,7328,7329,7345,7346,7382,7383,7399,7400,7454,7455,7527,7528,7552,7553,7568,7569,7665,7666,7682,7683,7725,7726,528],{},[385,7322,7323],{},"Difference arrays, the dual."," To apply many ",[1253,7326,7327],{},"range updates"," \"add ",[389,7330,7332],{"className":7331},[392],[389,7333,7335],{"className":7334,"ariaHidden":397},[396],[389,7336,7338,7341],{"className":7337},[401],[389,7339],{"className":7340,"style":660},[405],[389,7342,7344],{"className":7343,"style":5311},[410,423],"v"," to every\n",[389,7347,7349],{"className":7348},[392],[389,7350,7352],{"className":7351,"ariaHidden":397},[396],[389,7353,7355,7358,7361,7364,7367,7370,7373,7376,7379],{"className":7354},[401],[389,7356],{"className":7357,"style":487},[405],[389,7359,533],{"className":7360},[410,423],[389,7362,577],{"className":7363},[415],[389,7365,966],{"className":7366},[410,423],[389,7368],{"className":7369,"style":586},[585],[389,7371,591],{"className":7372},[590],[389,7374],{"className":7375,"style":586},[585],[389,7377,979],{"className":7378,"style":978},[410,423],[389,7380,622],{"className":7381},[464],"\" and only then read the array, invert the relationship. Keep a\ndifference array ",[389,7384,7386],{"className":7385},[392],[389,7387,7389],{"className":7388,"ariaHidden":397},[396],[389,7390,7392,7395],{"className":7391},[401],[389,7393],{"className":7394,"style":734},[405],[389,7396,7398],{"className":7397,"style":491},[410,423],"D"," and for each update do ",[389,7401,7403],{"className":7402},[392],[389,7404,7406,7433,7445],{"className":7405,"ariaHidden":397},[396],[389,7407,7409,7412,7415,7418,7421,7424,7427],{"className":7408},[401],[389,7410],{"className":7411,"style":487},[405],[389,7413,7398],{"className":7414,"style":491},[410,423],[389,7416,577],{"className":7417},[415],[389,7419,966],{"className":7420},[410,423],[389,7422,622],{"className":7423},[464],[389,7425],{"className":7426,"style":645},[585],[389,7428,7430],{"className":7429},[649],[389,7431,696],{"className":7432},[410],[389,7434,7436,7439,7442],{"className":7435},[401],[389,7437],{"className":7438,"style":4222},[405],[389,7440,724],{"className":7441},[649],[389,7443],{"className":7444,"style":645},[585],[389,7446,7448,7451],{"className":7447},[401],[389,7449],{"className":7450,"style":660},[405],[389,7452,7344],{"className":7453,"style":5311},[410,423]," and\n",[389,7456,7458],{"className":7457},[392],[389,7459,7461,7485,7506,7518],{"className":7460,"ariaHidden":397},[396],[389,7462,7464,7467,7470,7473,7476,7479,7482],{"className":7463},[401],[389,7465],{"className":7466,"style":487},[405],[389,7468,7398],{"className":7469,"style":491},[410,423],[389,7471,577],{"className":7472},[415],[389,7474,979],{"className":7475,"style":978},[410,423],[389,7477],{"className":7478,"style":601},[585],[389,7480,696],{"className":7481},[605],[389,7483],{"className":7484,"style":601},[585],[389,7486,7488,7491,7494,7497,7500],{"className":7487},[401],[389,7489],{"className":7490,"style":487},[405],[389,7492,499],{"className":7493},[410],[389,7495,622],{"className":7496},[464],[389,7498],{"className":7499,"style":645},[585],[389,7501,7503],{"className":7502},[649],[389,7504,606],{"className":7505},[410],[389,7507,7509,7512,7515],{"className":7508},[401],[389,7510],{"className":7511,"style":4222},[405],[389,7513,724],{"className":7514},[649],[389,7516],{"className":7517,"style":645},[585],[389,7519,7521,7524],{"className":7520},[401],[389,7522],{"className":7523,"style":660},[405],[389,7525,7344],{"className":7526,"style":5311},[410,423],", two ",[389,7529,7531],{"className":7530},[392],[389,7532,7534],{"className":7533,"ariaHidden":397},[396],[389,7535,7537,7540,7543,7546,7549],{"className":7536},[401],[389,7538],{"className":7539,"style":487},[405],[389,7541,492],{"className":7542,"style":491},[410,423],[389,7544,416],{"className":7545},[415],[389,7547,499],{"className":7548},[410],[389,7550,465],{"className":7551},[464]," touches. A single prefix-sum pass over ",[389,7554,7556],{"className":7555},[392],[389,7557,7559],{"className":7558,"ariaHidden":397},[396],[389,7560,7562,7565],{"className":7561},[401],[389,7563],{"className":7564,"style":734},[405],[389,7566,7398],{"className":7567,"style":491},[410,423]," at\nthe end materializes the final array, since ",[389,7570,7572],{"className":7571},[392],[389,7573,7575,7602,7629,7647],{"className":7574,"ariaHidden":397},[396],[389,7576,7578,7581,7584,7587,7590,7593,7596,7599],{"className":7577},[401],[389,7579],{"className":7580,"style":487},[405],[389,7582,533],{"className":7583},[410,423],[389,7585,577],{"className":7586},[415],[389,7588,966],{"className":7589},[410,423],[389,7591,622],{"className":7592},[464],[389,7594],{"className":7595,"style":645},[585],[389,7597,724],{"className":7598},[649],[389,7600],{"className":7601,"style":645},[585],[389,7603,7605,7608,7611,7614,7617,7620,7623,7626],{"className":7604},[401],[389,7606],{"className":7607,"style":487},[405],[389,7609,7398],{"className":7610,"style":491},[410,423],[389,7612,577],{"className":7613},[415],[389,7615,581],{"className":7616},[410],[389,7618,622],{"className":7619},[464],[389,7621],{"className":7622,"style":601},[585],[389,7624,696],{"className":7625},[605],[389,7627],{"className":7628,"style":601},[585],[389,7630,7632,7635,7638,7641,7644],{"className":7631},[401],[389,7633],{"className":7634,"style":915},[405],[389,7636,5514],{"className":7637},[590],[389,7639],{"className":7640,"style":601},[585],[389,7642,696],{"className":7643},[605],[389,7645],{"className":7646,"style":601},[585],[389,7648,7650,7653,7656,7659,7662],{"className":7649},[401],[389,7651],{"className":7652,"style":487},[405],[389,7654,7398],{"className":7655,"style":491},[410,423],[389,7657,577],{"className":7658},[415],[389,7660,966],{"className":7661},[410,423],[389,7663,622],{"className":7664},[464],". Thus\n",[389,7667,7669],{"className":7668},[392],[389,7670,7672],{"className":7671,"ariaHidden":397},[396],[389,7673,7675,7678],{"className":7674},[401],[389,7676],{"className":7677,"style":660},[405],[389,7679,7681],{"className":7680},[410,423],"m"," range-adds cost ",[389,7684,7686],{"className":7685},[392],[389,7687,7689,7713],{"className":7688,"ariaHidden":397},[396],[389,7690,7692,7695,7698,7701,7704,7707,7710],{"className":7691},[401],[389,7693],{"className":7694,"style":487},[405],[389,7696,492],{"className":7697,"style":491},[410,423],[389,7699,416],{"className":7700},[415],[389,7702,7681],{"className":7703},[410,423],[389,7705],{"className":7706,"style":601},[585],[389,7708,696],{"className":7709},[605],[389,7711],{"className":7712,"style":601},[585],[389,7714,7716,7719,7722],{"className":7715},[401],[389,7717],{"className":7718,"style":487},[405],[389,7720,424],{"className":7721},[410,423],[389,7723,465],{"className":7724},[464]," instead of ",[389,7727,7729],{"className":7728},[392],[389,7730,7732],{"className":7731,"ariaHidden":397},[396],[389,7733,7735,7738,7741,7744,7748],{"className":7734},[401],[389,7736],{"className":7737,"style":487},[405],[389,7739,492],{"className":7740,"style":491},[410,423],[389,7742,416],{"className":7743},[415],[389,7745,7747],{"className":7746},[410,423],"mn",[389,7749,465],{"className":7750},[464],[1861,7752,7754,8020],{"className":7753},[1864,1865],[1867,7755,7758],{"xmlns":1869,"width":7756,"height":3587,"viewBox":7757},"268.480","-75 -75 201.360 99.480",[1874,7759,7760,7767,7770,7776,7782,7785,7790,7796,7799,7804,7810,7813,7819,7825,7837,7843,7863,7869,7876,7887,7899,7910,7921,7932,7943],{"stroke":1876,"style":1877},[1874,7761,7763],{"transform":7762},"translate(-37.748 2.733)",[1879,7764],{"d":7765,"fill":1876,"stroke":1876,"className":7766,"style":1899},"M-20.227-48.719L-23.153-48.719Q-23.250-48.750-23.250-48.848L-23.227-48.949Q-23.192-49.004-23.129-49.016Q-22.688-49.016-22.530-49.055Q-22.371-49.094-22.328-49.321L-21.250-53.641Q-21.227-53.711-21.227-53.774Q-21.227-53.836-21.289-53.856Q-21.434-53.887-21.856-53.887Q-21.961-53.914-21.961-54.016L-21.930-54.117Q-21.899-54.172-21.840-54.184L-18.856-54.184Q-18.274-54.184-17.821-53.914Q-17.368-53.645-17.120-53.176Q-16.871-52.707-16.871-52.125Q-16.871-51.492-17.143-50.881Q-17.414-50.270-17.891-49.782Q-18.368-49.293-18.979-49.006Q-19.590-48.719-20.227-48.719M-21.649-49.063Q-21.649-49.016-21.403-49.016L-20.360-49.016Q-19.375-49.016-18.610-49.742Q-18.391-49.961-18.207-50.289Q-18.024-50.617-17.895-50.981Q-17.766-51.344-17.696-51.721Q-17.625-52.098-17.625-52.407Q-17.625-52.860-17.813-53.198Q-18-53.535-18.348-53.711Q-18.696-53.887-19.145-53.887L-20.129-53.887Q-20.301-53.887-20.364-53.873Q-20.426-53.860-20.459-53.801Q-20.493-53.742-20.536-53.582L-21.618-49.262Q-21.649-49.137-21.649-49.063",[1890],[1879,7768],{"fill":1881,"d":7769},"M-35.022-37.338h22.762V-60.1h-22.762Z",[1874,7771,7772],{"transform":1885},[1879,7773],{"d":7774,"fill":1876,"stroke":1876,"className":7775,"style":1891},"M-21.329-48.521Q-22.454-48.521-22.868-49.418Q-23.281-50.314-23.281-51.589Q-23.281-52.362-23.131-53.061Q-22.982-53.760-22.547-54.236Q-22.112-54.713-21.329-54.713Q-20.552-54.713-20.117-54.234Q-19.682-53.755-19.532-53.059Q-19.383-52.362-19.383-51.589Q-19.383-50.310-19.796-49.416Q-20.209-48.521-21.329-48.521M-21.329-48.781Q-20.811-48.781-20.560-49.292Q-20.310-49.804-20.253-50.415Q-20.196-51.026-20.196-51.734Q-20.196-52.419-20.253-52.979Q-20.310-53.540-20.563-53.997Q-20.815-54.454-21.329-54.454Q-21.734-54.454-21.971-54.177Q-22.208-53.900-22.316-53.459Q-22.424-53.017-22.448-52.624Q-22.472-52.230-22.472-51.734Q-22.472-51.228-22.448-50.800Q-22.424-50.371-22.316-49.888Q-22.208-49.405-21.969-49.093Q-21.729-48.781-21.329-48.781",[1890],[1874,7777,7778],{"transform":1894},[1879,7779],{"d":7780,"fill":1876,"stroke":1876,"className":7781,"style":1899},"M-21.520-48.551Q-22.223-48.551-22.623-48.951Q-23.024-49.352-23.168-49.961Q-23.313-50.571-23.313-51.270Q-23.313-51.793-23.243-52.256Q-23.172-52.719-22.979-53.131Q-22.786-53.543-22.428-53.791Q-22.071-54.039-21.520-54.039Q-20.969-54.039-20.612-53.791Q-20.254-53.543-20.063-53.133Q-19.871-52.723-19.801-52.254Q-19.731-51.785-19.731-51.270Q-19.731-50.571-19.873-49.963Q-20.016-49.356-20.416-48.953Q-20.817-48.551-21.520-48.551M-21.520-48.809Q-21.047-48.809-20.815-49.244Q-20.582-49.680-20.528-50.219Q-20.473-50.758-20.473-51.399Q-20.473-52.395-20.657-53.088Q-20.840-53.782-21.520-53.782Q-21.887-53.782-22.108-53.543Q-22.328-53.305-22.424-52.948Q-22.520-52.590-22.545-52.219Q-22.571-51.848-22.571-51.399Q-22.571-50.758-22.516-50.219Q-22.461-49.680-22.229-49.244Q-21.996-48.809-21.520-48.809",[1890],[1879,7783],{"fill":1881,"d":7784},"M19.038-37.338H41.8V-60.1H19.038Z",[1874,7786,7787],{"transform":1922},[1879,7788],{"d":7774,"fill":1876,"stroke":1876,"className":7789,"style":1891},[1890],[1874,7791,7792],{"transform":1929},[1879,7793],{"d":7794,"fill":1876,"stroke":1876,"className":7795,"style":1899},"M-20.055-48.719L-23.215-48.719L-23.215-48.926Q-23.215-48.953-23.192-48.985L-21.840-50.383Q-21.461-50.770-21.213-51.059Q-20.965-51.348-20.791-51.705Q-20.618-52.063-20.618-52.453Q-20.618-52.801-20.750-53.094Q-20.883-53.387-21.137-53.565Q-21.391-53.742-21.746-53.742Q-22.106-53.742-22.397-53.547Q-22.688-53.352-22.832-53.024L-22.778-53.024Q-22.594-53.024-22.469-52.903Q-22.344-52.782-22.344-52.590Q-22.344-52.410-22.469-52.282Q-22.594-52.153-22.778-52.153Q-22.957-52.153-23.086-52.282Q-23.215-52.410-23.215-52.590Q-23.215-52.992-22.995-53.328Q-22.774-53.664-22.409-53.852Q-22.043-54.039-21.641-54.039Q-21.161-54.039-20.745-53.852Q-20.328-53.664-20.077-53.303Q-19.825-52.942-19.825-52.453Q-19.825-52.094-19.979-51.791Q-20.133-51.489-20.385-51.229Q-20.637-50.969-20.987-50.684Q-21.336-50.399-21.504-50.246L-22.434-49.407L-21.719-49.407Q-20.344-49.407-20.305-49.446Q-20.235-49.524-20.192-49.709Q-20.149-49.895-20.106-50.184L-19.825-50.184",[1890],[1879,7797],{"fill":1881,"d":7798},"M46.068-37.338H68.83V-60.1H46.068Z",[1874,7800,7801],{"transform":1939},[1879,7802],{"d":7774,"fill":1876,"stroke":1876,"className":7803,"style":1891},[1890],[1874,7805,7806],{"transform":1946},[1879,7807],{"d":7808,"fill":1876,"stroke":1876,"className":7809,"style":1899},"M-22.848-49.352Q-22.657-49.078-22.301-48.951Q-21.946-48.824-21.563-48.824Q-21.227-48.824-21.018-49.010Q-20.809-49.196-20.713-49.489Q-20.618-49.782-20.618-50.094Q-20.618-50.418-20.715-50.713Q-20.813-51.008-21.026-51.192Q-21.239-51.375-21.571-51.375L-22.137-51.375Q-22.168-51.375-22.198-51.405Q-22.227-51.434-22.227-51.461L-22.227-51.543Q-22.227-51.578-22.198-51.604Q-22.168-51.629-22.137-51.629L-21.657-51.664Q-21.371-51.664-21.174-51.869Q-20.977-52.074-20.881-52.369Q-20.786-52.664-20.786-52.942Q-20.786-53.321-20.985-53.559Q-21.184-53.797-21.563-53.797Q-21.883-53.797-22.172-53.690Q-22.461-53.582-22.625-53.360Q-22.446-53.360-22.323-53.233Q-22.200-53.106-22.200-52.934Q-22.200-52.762-22.325-52.637Q-22.450-52.512-22.625-52.512Q-22.797-52.512-22.922-52.637Q-23.047-52.762-23.047-52.934Q-23.047-53.301-22.823-53.549Q-22.598-53.797-22.258-53.918Q-21.918-54.039-21.563-54.039Q-21.215-54.039-20.852-53.918Q-20.489-53.797-20.241-53.547Q-19.993-53.297-19.993-52.942Q-19.993-52.457-20.311-52.074Q-20.629-51.692-21.106-51.520Q-20.555-51.410-20.155-51.024Q-19.754-50.637-19.754-50.102Q-19.754-49.645-20.018-49.289Q-20.282-48.934-20.703-48.742Q-21.125-48.551-21.563-48.551Q-21.973-48.551-22.366-48.686Q-22.758-48.821-23.024-49.106Q-23.289-49.391-23.289-49.809Q-23.289-50.004-23.157-50.133Q-23.024-50.262-22.832-50.262Q-22.707-50.262-22.604-50.203Q-22.500-50.145-22.438-50.039Q-22.375-49.934-22.375-49.809Q-22.375-49.614-22.510-49.483Q-22.645-49.352-22.848-49.352",[1890],[1879,7811],{"fill":1881,"d":7812},"M100.128-37.338h22.762V-60.1h-22.762Z",[1874,7814,7816],{"transform":7815},"translate(132.838 2.9)",[1879,7817],{"d":7774,"fill":1876,"stroke":1876,"className":7818,"style":1891},[1890],[1874,7820,7821],{"transform":1980},[1879,7822],{"d":7823,"fill":1876,"stroke":1876,"className":7824,"style":1899},"M-22.801-49.598L-22.864-49.598Q-22.723-49.246-22.399-49.035Q-22.075-48.824-21.688-48.824Q-21.094-48.824-20.844-49.258Q-20.594-49.692-20.594-50.328Q-20.594-50.922-20.764-51.369Q-20.934-51.817-21.434-51.817Q-21.731-51.817-21.936-51.737Q-22.141-51.657-22.243-51.565Q-22.344-51.473-22.459-51.340Q-22.575-51.207-22.625-51.192L-22.696-51.192Q-22.782-51.215-22.801-51.293L-22.801-53.942Q-22.770-54.039-22.696-54.039Q-22.680-54.039-22.672-54.037Q-22.664-54.035-22.657-54.032Q-22.071-53.782-21.473-53.782Q-20.891-53.782-20.274-54.039L-20.250-54.039Q-20.207-54.039-20.180-54.014Q-20.153-53.989-20.153-53.949L-20.153-53.871Q-20.153-53.840-20.176-53.817Q-20.473-53.465-20.895-53.268Q-21.317-53.071-21.778-53.071Q-22.125-53.071-22.504-53.176L-22.504-51.680Q-22.286-51.875-22.010-51.973Q-21.735-52.071-21.434-52.071Q-20.977-52.071-20.608-51.823Q-20.239-51.574-20.032-51.170Q-19.825-50.766-19.825-50.321Q-19.825-49.832-20.080-49.424Q-20.336-49.016-20.768-48.783Q-21.200-48.551-21.688-48.551Q-22.082-48.551-22.438-48.742Q-22.793-48.934-23.004-49.268Q-23.215-49.602-23.215-50.016Q-23.215-50.196-23.098-50.309Q-22.981-50.422-22.801-50.422Q-22.684-50.422-22.592-50.369Q-22.500-50.317-22.448-50.225Q-22.395-50.133-22.395-50.016Q-22.395-49.832-22.508-49.715Q-22.621-49.598-22.801-49.598",[1890],[1874,7826,7827,7830],{"stroke":1987,"style":1989},[1879,7828],{"fill":1881,"d":7829},"M-7.992-37.338H14.77V-60.1H-7.992Z",[1874,7831,7833],{"transform":7832},"translate(21.12 2.483)",[1879,7834],{"d":7835,"fill":1876,"stroke":1876,"className":7836,"style":1891},"M-20.240-48.042L-20.240-50.771L-22.947-50.771Q-23.127-50.802-23.127-50.969Q-23.127-51.035-23.076-51.090Q-23.026-51.145-22.947-51.158L-20.240-51.158L-20.240-53.887Q-20.226-53.962-20.172-54.008Q-20.117-54.054-20.042-54.054Q-19.972-54.054-19.919-54.006Q-19.866-53.957-19.853-53.887L-19.853-51.158L-17.141-51.158Q-16.970-51.123-16.970-50.969Q-16.970-50.806-17.141-50.771L-19.853-50.771L-19.853-48.042Q-19.888-47.871-20.042-47.871Q-20.112-47.871-20.169-47.919Q-20.226-47.968-20.240-48.042M-15.625-49.725Q-15.485-49.312-15.124-49.060Q-14.764-48.807-14.329-48.807Q-13.876-48.807-13.610-49.060Q-13.345-49.312-13.241-49.697Q-13.138-50.081-13.138-50.538Q-13.138-52.239-14.048-52.239Q-14.369-52.239-14.597-52.145Q-14.826-52.050-14.955-51.931Q-15.085-51.813-15.197-51.674Q-15.309-51.536-15.344-51.527L-15.428-51.527Q-15.472-51.527-15.502-51.558Q-15.533-51.589-15.533-51.637L-15.533-54.634Q-15.533-54.665-15.498-54.689Q-15.463-54.713-15.436-54.713L-15.397-54.713Q-14.764-54.423-14.092-54.423Q-13.419-54.423-12.778-54.713L-12.751-54.713Q-12.721-54.713-12.688-54.691Q-12.655-54.669-12.655-54.634L-12.655-54.533Q-12.655-54.529-12.663-54.511Q-12.672-54.493-12.672-54.489Q-12.989-54.094-13.459-53.872Q-13.929-53.650-14.426-53.650Q-14.834-53.650-15.217-53.760L-15.217-52.041Q-14.760-52.498-14.048-52.498Q-13.538-52.498-13.138-52.217Q-12.738-51.936-12.516-51.481Q-12.294-51.026-12.294-50.521Q-12.294-49.971-12.573-49.512Q-12.852-49.053-13.318-48.787Q-13.784-48.521-14.329-48.521Q-14.768-48.521-15.153-48.748Q-15.537-48.974-15.766-49.354Q-15.995-49.734-15.995-50.178Q-15.995-50.371-15.863-50.503Q-15.731-50.635-15.533-50.635Q-15.401-50.635-15.298-50.576Q-15.195-50.516-15.135-50.413Q-15.076-50.310-15.076-50.178Q-15.076-49.980-15.203-49.848Q-15.331-49.717-15.533-49.717Q-15.595-49.717-15.625-49.725",[1890],[1874,7838,7839],{"transform":1912},[1879,7840],{"d":7841,"fill":1876,"stroke":1876,"className":7842,"style":1899},"M-20.047-48.719L-22.840-48.719L-22.840-49.016Q-21.778-49.016-21.778-49.278L-21.778-53.446Q-22.207-53.231-22.887-53.231L-22.887-53.528Q-21.868-53.528-21.352-54.039L-21.207-54.039Q-21.133-54.020-21.114-53.942L-21.114-49.278Q-21.114-49.016-20.047-49.016",[1890],[1874,7844,7845,7848],{"stroke":1987,"style":1989},[1879,7846],{"fill":1881,"d":7847},"M73.098-37.338h22.763V-60.1H73.098Z",[1874,7849,7850,7857],{"stroke":1881,"fontSize":6171},[1874,7851,7853],{"transform":7852},"translate(102.21 2.483)",[1879,7854],{"d":7855,"fill":1876,"stroke":1876,"className":7856,"style":1891},"M-17.405-50.771L-22.687-50.771Q-22.762-50.784-22.815-50.837Q-22.868-50.890-22.868-50.969Q-22.868-51.035-22.813-51.090Q-22.758-51.145-22.687-51.158L-17.405-51.158Q-17.335-51.145-17.284-51.094Q-17.234-51.044-17.234-50.969Q-17.234-50.802-17.405-50.771",[1890],[1874,7858,7859],{"transform":7852},[1879,7860],{"d":7861,"fill":1876,"stroke":1876,"className":7862,"style":1891},"M-15.621-49.725Q-15.480-49.312-15.120-49.060Q-14.759-48.807-14.324-48.807Q-13.872-48.807-13.606-49.060Q-13.340-49.312-13.237-49.697Q-13.134-50.081-13.134-50.538Q-13.134-52.239-14.043-52.239Q-14.364-52.239-14.593-52.145Q-14.821-52.050-14.951-51.931Q-15.080-51.813-15.192-51.674Q-15.304-51.536-15.340-51.527L-15.423-51.527Q-15.467-51.527-15.498-51.558Q-15.529-51.589-15.529-51.637L-15.529-54.634Q-15.529-54.665-15.493-54.689Q-15.458-54.713-15.432-54.713L-15.392-54.713Q-14.759-54.423-14.087-54.423Q-13.415-54.423-12.773-54.713L-12.747-54.713Q-12.716-54.713-12.683-54.691Q-12.650-54.669-12.650-54.634L-12.650-54.533Q-12.650-54.529-12.659-54.511Q-12.668-54.493-12.668-54.489Q-12.984-54.094-13.454-53.872Q-13.925-53.650-14.421-53.650Q-14.830-53.650-15.212-53.760L-15.212-52.041Q-14.755-52.498-14.043-52.498Q-13.533-52.498-13.134-52.217Q-12.734-51.936-12.512-51.481Q-12.290-51.026-12.290-50.521Q-12.290-49.971-12.569-49.512Q-12.848-49.053-13.314-48.787Q-13.780-48.521-14.324-48.521Q-14.764-48.521-15.148-48.748Q-15.533-48.974-15.761-49.354Q-15.990-49.734-15.990-50.178Q-15.990-50.371-15.858-50.503Q-15.726-50.635-15.529-50.635Q-15.397-50.635-15.293-50.576Q-15.190-50.516-15.131-50.413Q-15.072-50.310-15.072-50.178Q-15.072-49.980-15.199-49.848Q-15.326-49.717-15.529-49.717Q-15.590-49.717-15.621-49.725",[1890],[1874,7864,7865],{"transform":1963},[1879,7866],{"d":7867,"fill":1876,"stroke":1876,"className":7868,"style":1899},"M-21.161-50.032L-23.403-50.032L-23.403-50.328L-20.832-53.985Q-20.793-54.039-20.731-54.039L-20.586-54.039Q-20.536-54.039-20.504-54.008Q-20.473-53.977-20.473-53.926L-20.473-50.328L-19.641-50.328L-19.641-50.032L-20.473-50.032L-20.473-49.278Q-20.473-49.016-19.649-49.016L-19.649-48.719L-21.985-48.719L-21.985-49.016Q-21.161-49.016-21.161-49.278L-21.161-50.032M-21.106-53.133L-23.075-50.328L-21.106-50.328",[1890],[1874,7870,7872],{"transform":7871},"translate(-38.63 44.68)",[1879,7873],{"d":7874,"fill":1876,"stroke":1876,"className":7875,"style":1899},"M-15.871-46.719L-23.067-46.719Q-23.168-46.742-23.168-46.832Q-23.168-46.883-23.137-46.903L-20.067-50.438L-23.137-54.383Q-23.164-54.422-23.168-54.446L-23.168-54.614Q-23.149-54.699-23.067-54.719L-15.871-54.719L-15.145-52.797L-15.426-52.797Q-15.629-53.344-16.069-53.674Q-16.508-54.004-17.057-54.147Q-17.606-54.289-18.125-54.321Q-18.645-54.352-19.368-54.352L-22.168-54.352L-19.395-50.789Q-19.368-50.758-19.368-50.719Q-19.368-50.672-19.395-50.641L-22.375-47.223L-19.313-47.223Q-18.598-47.223-18.063-47.258Q-17.528-47.293-16.996-47.436Q-16.465-47.578-16.041-47.905Q-15.618-48.231-15.426-48.774L-15.145-48.774",[1890],[1874,7877,7878,7881],{"fill":3016},[1879,7879],{"d":7880},"M-35.022 5.341h22.762V-17.42h-22.762Z",[1874,7882,7884],{"transform":7883},"translate(-2.312 45.58)",[1879,7885],{"d":7774,"fill":1876,"stroke":1876,"className":7886,"style":1891},[1890],[1874,7888,7889,7892],{"fill":3016},[1879,7890],{"d":7891},"M-7.992 5.341H14.77V-17.42H-7.992Z",[1874,7893,7895],{"transform":7894},"translate(24.718 45.58)",[1879,7896],{"d":7897,"fill":1876,"stroke":1876,"className":7898,"style":1891},"M-22.815-49.725Q-22.674-49.312-22.314-49.060Q-21.953-48.807-21.518-48.807Q-21.066-48.807-20.800-49.060Q-20.534-49.312-20.431-49.697Q-20.328-50.081-20.328-50.538Q-20.328-52.239-21.237-52.239Q-21.558-52.239-21.787-52.145Q-22.015-52.050-22.145-51.931Q-22.274-51.813-22.386-51.674Q-22.498-51.536-22.534-51.527L-22.617-51.527Q-22.661-51.527-22.692-51.558Q-22.723-51.589-22.723-51.637L-22.723-54.634Q-22.723-54.665-22.687-54.689Q-22.652-54.713-22.626-54.713L-22.586-54.713Q-21.953-54.423-21.281-54.423Q-20.609-54.423-19.967-54.713L-19.941-54.713Q-19.910-54.713-19.877-54.691Q-19.844-54.669-19.844-54.634L-19.844-54.533Q-19.844-54.529-19.853-54.511Q-19.862-54.493-19.862-54.489Q-20.178-54.094-20.648-53.872Q-21.119-53.650-21.615-53.650Q-22.024-53.650-22.406-53.760L-22.406-52.041Q-21.949-52.498-21.237-52.498Q-20.727-52.498-20.328-52.217Q-19.928-51.936-19.706-51.481Q-19.484-51.026-19.484-50.521Q-19.484-49.971-19.763-49.512Q-20.042-49.053-20.508-48.787Q-20.974-48.521-21.518-48.521Q-21.958-48.521-22.342-48.748Q-22.727-48.974-22.955-49.354Q-23.184-49.734-23.184-50.178Q-23.184-50.371-23.052-50.503Q-22.920-50.635-22.723-50.635Q-22.591-50.635-22.487-50.576Q-22.384-50.516-22.325-50.413Q-22.266-50.310-22.266-50.178Q-22.266-49.980-22.393-49.848Q-22.520-49.717-22.723-49.717Q-22.784-49.717-22.815-49.725",[1890],[1874,7900,7901,7904],{"fill":3016},[1879,7902],{"d":7903},"M19.038 5.341H41.8V-17.42H19.038Z",[1874,7905,7907],{"transform":7906},"translate(51.748 45.58)",[1879,7908],{"d":7897,"fill":1876,"stroke":1876,"className":7909,"style":1891},[1890],[1874,7911,7912,7915],{"fill":3016},[1879,7913],{"d":7914},"M46.068 5.341H68.83V-17.42H46.068Z",[1874,7916,7918],{"transform":7917},"translate(78.778 45.58)",[1879,7919],{"d":7897,"fill":1876,"stroke":1876,"className":7920,"style":1891},[1890],[1874,7922,7923,7926],{"fill":3016},[1879,7924],{"d":7925},"M73.098 5.341H95.86V-17.42H73.098Z",[1874,7927,7929],{"transform":7928},"translate(105.808 45.58)",[1879,7930],{"d":7774,"fill":1876,"stroke":1876,"className":7931,"style":1891},[1890],[1874,7933,7934,7937],{"fill":3016},[1879,7935],{"d":7936},"M100.128 5.341h22.762V-17.42h-22.762Z",[1874,7938,7940],{"transform":7939},"translate(132.838 45.58)",[1879,7941],{"d":7774,"fill":1876,"stroke":1876,"className":7942,"style":1891},[1890],[1874,7944,7945],{"fill":1987,"stroke":1987},[1874,7946,7947,7954,7960,7966,7972,7978,7984,7990,7996,8002,8008,8014],{"fill":1987,"stroke":1881,"fontSize":1994},[1874,7948,7950],{"transform":7949},"translate(-2.235 64.596)",[1879,7951],{"d":7952,"fill":1987,"stroke":1987,"className":7953,"style":1899},"M-21.520-47.168L-23.375-47.168L-23.375-47.461Q-23.106-47.461-22.938-47.506Q-22.770-47.551-22.770-47.727L-22.770-51.551Q-22.770-51.758-22.926-51.811Q-23.082-51.864-23.375-51.864L-23.375-52.160L-22.153-52.246L-22.153-51.782Q-21.922-52.004-21.608-52.125Q-21.293-52.246-20.953-52.246Q-20.481-52.246-20.077-52Q-19.672-51.754-19.440-51.338Q-19.207-50.922-19.207-50.446Q-19.207-50.071-19.356-49.742Q-19.504-49.414-19.774-49.162Q-20.043-48.910-20.387-48.776Q-20.731-48.641-21.090-48.641Q-21.379-48.641-21.651-48.762Q-21.922-48.883-22.129-49.094L-22.129-47.727Q-22.129-47.551-21.961-47.506Q-21.793-47.461-21.520-47.461L-21.520-47.168M-22.129-51.383L-22.129-49.543Q-21.977-49.254-21.715-49.074Q-21.453-48.895-21.145-48.895Q-20.860-48.895-20.637-49.033Q-20.414-49.172-20.262-49.403Q-20.110-49.633-20.032-49.905Q-19.953-50.176-19.953-50.446Q-19.953-50.778-20.078-51.135Q-20.203-51.492-20.452-51.729Q-20.700-51.965-21.047-51.965Q-21.371-51.965-21.666-51.809Q-21.961-51.653-22.129-51.383M-16.676-48.719L-18.657-48.719L-18.657-49.016Q-18.387-49.016-18.219-49.061Q-18.051-49.106-18.051-49.278L-18.051-51.414Q-18.051-51.629-18.114-51.725Q-18.176-51.821-18.293-51.842Q-18.411-51.864-18.657-51.864L-18.657-52.160L-17.489-52.246L-17.489-51.461Q-17.411-51.672-17.258-51.858Q-17.106-52.043-16.907-52.145Q-16.707-52.246-16.481-52.246Q-16.235-52.246-16.043-52.102Q-15.852-51.957-15.852-51.727Q-15.852-51.571-15.957-51.461Q-16.063-51.352-16.219-51.352Q-16.375-51.352-16.485-51.461Q-16.594-51.571-16.594-51.727Q-16.594-51.887-16.489-51.992Q-16.813-51.992-17.028-51.764Q-17.243-51.535-17.338-51.196Q-17.434-50.856-17.434-50.551L-17.434-49.278Q-17.434-49.110-17.207-49.063Q-16.981-49.016-16.676-49.016L-16.676-48.719M-15.371-50.473Q-15.371-50.953-15.139-51.369Q-14.907-51.785-14.496-52.035Q-14.086-52.285-13.610-52.285Q-12.879-52.285-12.481-51.844Q-12.082-51.403-12.082-50.672Q-12.082-50.567-12.176-50.543L-14.625-50.543L-14.625-50.473Q-14.625-50.063-14.504-49.707Q-14.383-49.352-14.112-49.135Q-13.840-48.918-13.411-48.918Q-13.047-48.918-12.750-49.147Q-12.453-49.375-12.352-49.727Q-12.344-49.774-12.258-49.789L-12.176-49.789Q-12.082-49.762-12.082-49.680Q-12.082-49.672-12.090-49.641Q-12.153-49.414-12.291-49.231Q-12.430-49.047-12.621-48.914Q-12.813-48.782-13.032-48.711Q-13.250-48.641-13.489-48.641Q-13.860-48.641-14.198-48.778Q-14.536-48.914-14.803-49.166Q-15.071-49.418-15.221-49.758Q-15.371-50.098-15.371-50.473M-14.618-50.782L-12.657-50.782Q-12.657-51.086-12.758-51.377Q-12.860-51.668-13.077-51.850Q-13.293-52.032-13.610-52.032Q-13.911-52.032-14.141-51.844Q-14.371-51.657-14.495-51.365Q-14.618-51.074-14.618-50.782M-9.735-48.719L-11.567-48.719L-11.567-49.016Q-11.297-49.016-11.129-49.061Q-10.961-49.106-10.961-49.278L-10.961-51.871L-11.602-51.871L-11.602-52.168L-10.961-52.168L-10.961-53.102Q-10.961-53.516-10.653-53.797Q-10.344-54.078-9.899-54.215Q-9.453-54.352-9.047-54.352Q-8.645-54.352-8.327-54.125Q-8.008-53.899-8.008-53.512Q-8.008-53.336-8.121-53.223Q-8.235-53.110-8.407-53.110Q-8.582-53.110-8.696-53.223Q-8.809-53.336-8.809-53.512Q-8.809-53.657-8.719-53.766Q-8.629-53.875-8.496-53.903Q-8.782-54.094-9.129-54.094Q-9.426-54.094-9.713-53.973Q-10-53.852-10.184-53.619Q-10.368-53.387-10.368-53.086L-10.368-52.168L-9.215-52.168L-7.993-52.262L-7.993-49.278Q-7.993-49.110-7.825-49.063Q-7.657-49.016-7.383-49.016L-7.383-48.719L-9.215-48.719L-9.215-49.016Q-8.946-49.016-8.778-49.061Q-8.610-49.106-8.610-49.278L-8.610-51.438Q-8.610-51.645-8.657-51.744Q-8.703-51.844-8.879-51.871L-10.344-51.871L-10.344-49.278Q-10.344-49.110-10.176-49.063Q-10.008-49.016-9.735-49.016L-9.735-48.719M-5.489-48.719L-6.985-48.719L-6.985-49.016Q-6.352-49.016-5.930-49.496L-5.161-50.407L-6.153-51.606Q-6.309-51.785-6.471-51.828Q-6.633-51.871-6.938-51.871L-6.938-52.168L-5.250-52.168L-5.250-51.871Q-5.344-51.871-5.420-51.828Q-5.496-51.785-5.496-51.696Q-5.496-51.653-5.465-51.606L-4.809-50.817L-4.328-51.391Q-4.211-51.528-4.211-51.664Q-4.211-51.754-4.262-51.813Q-4.313-51.871-4.395-51.871L-4.395-52.168L-2.907-52.168L-2.907-51.871Q-3.543-51.871-3.953-51.391L-4.633-50.590L-3.547-49.278Q-3.387-49.102-3.227-49.059Q-3.067-49.016-2.762-49.016L-2.762-48.719L-4.450-48.719L-4.450-49.016Q-4.360-49.016-4.282-49.059Q-4.203-49.102-4.203-49.192Q-4.203-49.215-4.235-49.278L-4.977-50.184L-5.563-49.496Q-5.680-49.360-5.680-49.223Q-5.680-49.137-5.629-49.076Q-5.578-49.016-5.489-49.016",[1890],[1874,7955,7956],{"transform":7949},[1879,7957],{"d":7958,"fill":1987,"stroke":1987,"className":7959,"style":1899},"M0.495-48.727L0.495-49.949Q0.495-49.977 0.527-50.008Q0.558-50.039 0.581-50.039L0.687-50.039Q0.757-50.039 0.773-49.977Q0.835-49.657 0.974-49.416Q1.112-49.176 1.345-49.035Q1.577-48.895 1.886-48.895Q2.124-48.895 2.333-48.955Q2.542-49.016 2.679-49.164Q2.816-49.313 2.816-49.559Q2.816-49.813 2.605-49.979Q2.394-50.145 2.124-50.199L1.503-50.313Q1.097-50.391 0.796-50.647Q0.495-50.903 0.495-51.278Q0.495-51.645 0.696-51.867Q0.898-52.090 1.222-52.188Q1.546-52.285 1.886-52.285Q2.351-52.285 2.648-52.078L2.870-52.262Q2.894-52.285 2.925-52.285L2.976-52.285Q3.007-52.285 3.034-52.258Q3.062-52.231 3.062-52.199L3.062-51.215Q3.062-51.184 3.036-51.155Q3.011-51.125 2.976-51.125L2.870-51.125Q2.835-51.125 2.808-51.153Q2.780-51.180 2.780-51.215Q2.780-51.614 2.528-51.834Q2.276-52.055 1.878-52.055Q1.523-52.055 1.239-51.932Q0.956-51.809 0.956-51.504Q0.956-51.285 1.157-51.153Q1.359-51.020 1.605-50.977L2.230-50.864Q2.659-50.774 2.968-50.477Q3.276-50.180 3.276-49.766Q3.276-49.196 2.878-48.918Q2.480-48.641 1.886-48.641Q1.335-48.641 0.984-48.977L0.687-48.664Q0.663-48.641 0.628-48.641L0.581-48.641Q0.558-48.641 0.527-48.672Q0.495-48.703 0.495-48.727M5.390-48.750L4.319-51.606Q4.253-51.785 4.122-51.828Q3.991-51.871 3.734-51.871L3.734-52.168L5.413-52.168L5.413-51.871Q4.964-51.871 4.964-51.672Q4.968-51.657 4.970-51.639Q4.972-51.621 4.972-51.606L5.765-49.512L6.476-51.422Q6.441-51.516 6.441-51.561Q6.441-51.606 6.405-51.606Q6.339-51.785 6.208-51.828Q6.077-51.871 5.823-51.871L5.823-52.168L7.413-52.168L7.413-51.871Q6.964-51.871 6.964-51.672Q6.968-51.653 6.970-51.635Q6.972-51.617 6.972-51.606L7.804-49.391L8.558-51.391Q8.581-51.449 8.581-51.520Q8.581-51.680 8.444-51.776Q8.308-51.871 8.140-51.871L8.140-52.168L9.527-52.168L9.527-51.871Q9.292-51.871 9.114-51.744Q8.937-51.617 8.855-51.391L7.870-48.750Q7.816-48.641 7.702-48.641L7.644-48.641Q7.530-48.641 7.487-48.750L6.628-51.024L5.773-48.750Q5.734-48.641 5.612-48.641L5.558-48.641Q5.444-48.641 5.390-48.750",[1890],[1874,7961,7962],{"transform":7949},[1879,7963],{"d":7964,"fill":1987,"stroke":1987,"className":7965,"style":1899},"M9.707-50.473Q9.707-50.953 9.940-51.369Q10.172-51.785 10.582-52.035Q10.992-52.285 11.469-52.285Q12.199-52.285 12.598-51.844Q12.996-51.403 12.996-50.672Q12.996-50.567 12.903-50.543L10.453-50.543L10.453-50.473Q10.453-50.063 10.574-49.707Q10.696-49.352 10.967-49.135Q11.239-48.918 11.668-48.918Q12.031-48.918 12.328-49.147Q12.625-49.375 12.727-49.727Q12.735-49.774 12.821-49.789L12.903-49.789Q12.996-49.762 12.996-49.680Q12.996-49.672 12.989-49.641Q12.926-49.414 12.787-49.231Q12.649-49.047 12.457-48.914Q12.266-48.782 12.047-48.711Q11.828-48.641 11.590-48.641Q11.219-48.641 10.881-48.778Q10.543-48.914 10.276-49.166Q10.008-49.418 9.858-49.758Q9.707-50.098 9.707-50.473M10.461-50.782L12.422-50.782Q12.422-51.086 12.321-51.377Q12.219-51.668 12.002-51.850Q11.785-52.032 11.469-52.032Q11.168-52.032 10.938-51.844Q10.707-51.657 10.584-51.365Q10.461-51.074 10.461-50.782M13.485-50.473Q13.485-50.953 13.717-51.369Q13.949-51.785 14.360-52.035Q14.770-52.285 15.246-52.285Q15.977-52.285 16.375-51.844Q16.774-51.403 16.774-50.672Q16.774-50.567 16.680-50.543L14.231-50.543L14.231-50.473Q14.231-50.063 14.352-49.707Q14.473-49.352 14.744-49.135Q15.016-48.918 15.446-48.918Q15.809-48.918 16.106-49.147Q16.403-49.375 16.504-49.727Q16.512-49.774 16.598-49.789L16.680-49.789Q16.774-49.762 16.774-49.680Q16.774-49.672 16.766-49.641Q16.703-49.414 16.565-49.231Q16.426-49.047 16.235-48.914Q16.043-48.782 15.824-48.711Q15.606-48.641 15.367-48.641Q14.996-48.641 14.658-48.778Q14.321-48.914 14.053-49.166Q13.785-49.418 13.635-49.758Q13.485-50.098 13.485-50.473M14.239-50.782L16.199-50.782Q16.199-51.086 16.098-51.377Q15.996-51.668 15.780-51.850Q15.563-52.032 15.246-52.032Q14.946-52.032 14.715-51.844Q14.485-51.657 14.362-51.365Q14.239-51.074 14.239-50.782M19.145-47.168L17.289-47.168L17.289-47.461Q17.559-47.461 17.727-47.506Q17.895-47.551 17.895-47.727L17.895-51.551Q17.895-51.758 17.739-51.811Q17.582-51.864 17.289-51.864L17.289-52.160L18.512-52.246L18.512-51.782Q18.742-52.004 19.057-52.125Q19.371-52.246 19.711-52.246Q20.184-52.246 20.588-52Q20.992-51.754 21.225-51.338Q21.457-50.922 21.457-50.446Q21.457-50.071 21.309-49.742Q21.160-49.414 20.891-49.162Q20.621-48.910 20.278-48.776Q19.934-48.641 19.574-48.641Q19.285-48.641 19.014-48.762Q18.742-48.883 18.535-49.094L18.535-47.727Q18.535-47.551 18.703-47.506Q18.871-47.461 19.145-47.461L19.145-47.168M18.535-51.383L18.535-49.543Q18.688-49.254 18.949-49.074Q19.211-48.895 19.520-48.895Q19.805-48.895 20.028-49.033Q20.250-49.172 20.403-49.403Q20.555-49.633 20.633-49.905Q20.711-50.176 20.711-50.446Q20.711-50.778 20.586-51.135Q20.461-51.492 20.213-51.729Q19.965-51.965 19.617-51.965Q19.293-51.965 18.998-51.809Q18.703-51.653 18.535-51.383",[1890],[1874,7967,7968],{"transform":7949},[1879,7969],{"d":7970,"fill":1987,"stroke":1987,"className":7971,"style":1899},"M30.261-49.696L25.229-49.696Q25.151-49.703 25.102-49.752Q25.054-49.801 25.054-49.879Q25.054-49.949 25.101-50Q25.147-50.051 25.229-50.063L30.659-50.063Q30.909-50.262 31.190-50.430Q31.472-50.598 31.765-50.719Q31.163-50.973 30.659-51.383L25.229-51.383Q25.151-51.391 25.102-51.440Q25.054-51.489 25.054-51.567Q25.054-51.637 25.101-51.688Q25.147-51.739 25.229-51.750L30.261-51.750Q29.792-52.231 29.483-52.856Q29.476-52.887 29.476-52.895Q29.476-52.981 29.573-53.008L29.741-53.008Q29.804-52.996 29.839-52.942Q30.101-52.410 30.509-51.981Q30.917-51.551 31.438-51.258Q31.960-50.965 32.542-50.824Q32.604-50.813 32.604-50.719Q32.604-50.625 32.542-50.614Q31.960-50.473 31.438-50.180Q30.917-49.887 30.509-49.457Q30.101-49.028 29.839-48.496Q29.804-48.442 29.741-48.430L29.573-48.430Q29.476-48.457 29.476-48.543Q29.476-48.551 29.483-48.582Q29.788-49.199 30.261-49.696",[1890],[1874,7973,7974],{"transform":7949},[1879,7975],{"d":7976,"fill":1987,"stroke":1987,"className":7977,"style":1899},"M39.035-50.535L36.562-50.535Q36.484-50.547 36.435-50.596Q36.387-50.645 36.387-50.719Q36.387-50.793 36.435-50.842Q36.484-50.891 36.562-50.903L39.035-50.903L39.035-53.383Q39.062-53.551 39.219-53.551Q39.293-53.551 39.342-53.502Q39.391-53.453 39.402-53.383L39.402-50.903L41.875-50.903Q42.043-50.871 42.043-50.719Q42.043-50.567 41.875-50.535L39.402-50.535L39.402-48.055Q39.391-47.985 39.342-47.936Q39.293-47.887 39.219-47.887Q39.062-47.887 39.035-48.055L39.035-50.535M43.363-49.598L43.301-49.598Q43.441-49.246 43.766-49.035Q44.090-48.824 44.477-48.824Q45.070-48.824 45.320-49.258Q45.570-49.692 45.570-50.328Q45.570-50.922 45.400-51.369Q45.230-51.817 44.730-51.817Q44.434-51.817 44.228-51.737Q44.023-51.657 43.922-51.565Q43.820-51.473 43.705-51.340Q43.590-51.207 43.539-51.192L43.469-51.192Q43.383-51.215 43.363-51.293L43.363-53.942Q43.394-54.039 43.469-54.039Q43.484-54.039 43.492-54.037Q43.500-54.035 43.508-54.032Q44.094-53.782 44.691-53.782Q45.273-53.782 45.891-54.039L45.914-54.039Q45.957-54.039 45.984-54.014Q46.012-53.989 46.012-53.949L46.012-53.871Q46.012-53.840 45.988-53.817Q45.691-53.465 45.269-53.268Q44.848-53.071 44.387-53.071Q44.039-53.071 43.660-53.176L43.660-51.680Q43.879-51.875 44.154-51.973Q44.430-52.071 44.730-52.071Q45.187-52.071 45.557-51.823Q45.926-51.574 46.133-51.170Q46.340-50.766 46.340-50.321Q46.340-49.832 46.084-49.424Q45.828-49.016 45.396-48.783Q44.965-48.551 44.477-48.551Q44.082-48.551 43.727-48.742Q43.371-48.934 43.160-49.268Q42.949-49.602 42.949-50.016Q42.949-50.196 43.066-50.309Q43.184-50.422 43.363-50.422Q43.480-50.422 43.572-50.369Q43.664-50.317 43.717-50.225Q43.769-50.133 43.769-50.016Q43.769-49.832 43.656-49.715Q43.543-49.598 43.363-49.598",[1890],[1874,7979,7980],{"transform":7949},[1879,7981],{"d":7982,"fill":1987,"stroke":1987,"className":7983,"style":1899},"M49.847-50.473Q49.847-50.953 50.080-51.369Q50.312-51.785 50.722-52.035Q51.132-52.285 51.609-52.285Q52.339-52.285 52.738-51.844Q53.136-51.403 53.136-50.672Q53.136-50.567 53.043-50.543L50.593-50.543L50.593-50.473Q50.593-50.063 50.714-49.707Q50.836-49.352 51.107-49.135Q51.379-48.918 51.808-48.918Q52.172-48.918 52.468-49.147Q52.765-49.375 52.867-49.727Q52.875-49.774 52.961-49.789L53.043-49.789Q53.136-49.762 53.136-49.680Q53.136-49.672 53.129-49.641Q53.066-49.414 52.927-49.231Q52.789-49.047 52.597-48.914Q52.406-48.782 52.187-48.711Q51.968-48.641 51.730-48.641Q51.359-48.641 51.021-48.778Q50.683-48.914 50.416-49.166Q50.148-49.418 49.998-49.758Q49.847-50.098 49.847-50.473M50.601-50.782L52.562-50.782Q52.562-51.086 52.461-51.377Q52.359-51.668 52.142-51.850Q51.925-52.032 51.609-52.032Q51.308-52.032 51.078-51.844Q50.847-51.657 50.724-51.365Q50.601-51.074 50.601-50.782M55.011-48.719L53.515-48.719L53.515-49.016Q54.148-49.016 54.570-49.496L55.339-50.407L54.347-51.606Q54.191-51.785 54.029-51.828Q53.867-51.871 53.562-51.871L53.562-52.168L55.250-52.168L55.250-51.871Q55.156-51.871 55.080-51.828Q55.004-51.785 55.004-51.696Q55.004-51.653 55.035-51.606L55.691-50.817L56.172-51.391Q56.289-51.528 56.289-51.664Q56.289-51.754 56.238-51.813Q56.187-51.871 56.105-51.871L56.105-52.168L57.593-52.168L57.593-51.871Q56.957-51.871 56.547-51.391L55.867-50.590L56.953-49.278Q57.113-49.102 57.273-49.059Q57.433-49.016 57.738-49.016L57.738-48.719L56.050-48.719L56.050-49.016Q56.140-49.016 56.218-49.059Q56.297-49.102 56.297-49.192Q56.297-49.215 56.265-49.278L55.523-50.184L54.937-49.496Q54.820-49.360 54.820-49.223Q54.820-49.137 54.871-49.076Q54.922-49.016 55.011-49.016L55.011-48.719M58.203-49.551Q58.203-50.035 58.605-50.330Q59.007-50.625 59.558-50.744Q60.109-50.864 60.601-50.864L60.601-51.153Q60.601-51.379 60.486-51.586Q60.371-51.793 60.173-51.912Q59.976-52.032 59.746-52.032Q59.320-52.032 59.035-51.926Q59.105-51.899 59.152-51.844Q59.199-51.789 59.224-51.719Q59.250-51.649 59.250-51.574Q59.250-51.469 59.199-51.377Q59.148-51.285 59.056-51.235Q58.964-51.184 58.859-51.184Q58.754-51.184 58.662-51.235Q58.570-51.285 58.519-51.377Q58.468-51.469 58.468-51.574Q58.468-51.992 58.857-52.139Q59.246-52.285 59.746-52.285Q60.078-52.285 60.431-52.155Q60.785-52.024 61.013-51.770Q61.242-51.516 61.242-51.168L61.242-49.367Q61.242-49.235 61.314-49.125Q61.386-49.016 61.515-49.016Q61.640-49.016 61.709-49.121Q61.777-49.227 61.777-49.367L61.777-49.879L62.058-49.879L62.058-49.367Q62.058-49.164 61.941-49.006Q61.824-48.848 61.642-48.764Q61.461-48.680 61.257-48.680Q61.027-48.680 60.875-48.852Q60.722-49.024 60.691-49.254Q60.531-48.973 60.222-48.807Q59.914-48.641 59.562-48.641Q59.050-48.641 58.627-48.864Q58.203-49.086 58.203-49.551M58.890-49.551Q58.890-49.266 59.117-49.080Q59.343-48.895 59.636-48.895Q59.882-48.895 60.107-49.012Q60.332-49.129 60.466-49.332Q60.601-49.535 60.601-49.789L60.601-50.621Q60.336-50.621 60.050-50.567Q59.765-50.512 59.494-50.383Q59.222-50.254 59.056-50.047Q58.890-49.840 58.890-49.551M62.394-50.446Q62.394-50.942 62.644-51.367Q62.894-51.793 63.314-52.039Q63.734-52.285 64.234-52.285Q64.773-52.285 65.164-52.160Q65.554-52.035 65.554-51.621Q65.554-51.516 65.504-51.424Q65.453-51.332 65.361-51.282Q65.269-51.231 65.160-51.231Q65.054-51.231 64.963-51.282Q64.871-51.332 64.820-51.424Q64.769-51.516 64.769-51.621Q64.769-51.844 64.937-51.949Q64.714-52.008 64.242-52.008Q63.945-52.008 63.730-51.869Q63.515-51.731 63.384-51.500Q63.254-51.270 63.195-51Q63.136-50.731 63.136-50.446Q63.136-50.051 63.269-49.701Q63.402-49.352 63.673-49.135Q63.945-48.918 64.343-48.918Q64.718-48.918 64.994-49.135Q65.269-49.352 65.371-49.711Q65.386-49.774 65.449-49.774L65.554-49.774Q65.589-49.774 65.615-49.746Q65.640-49.719 65.640-49.680L65.640-49.657Q65.507-49.176 65.123-48.908Q64.738-48.641 64.234-48.641Q63.871-48.641 63.537-48.778Q63.203-48.914 62.943-49.164Q62.683-49.414 62.539-49.750Q62.394-50.086 62.394-50.446M66.754-49.680L66.754-51.871L66.050-51.871L66.050-52.125Q66.406-52.125 66.648-52.358Q66.890-52.590 67.002-52.938Q67.113-53.285 67.113-53.641L67.394-53.641L67.394-52.168L68.570-52.168L68.570-51.871L67.394-51.871L67.394-49.696Q67.394-49.375 67.513-49.147Q67.632-48.918 67.914-48.918Q68.093-48.918 68.211-49.041Q68.328-49.164 68.380-49.344Q68.433-49.524 68.433-49.696L68.433-50.168L68.714-50.168L68.714-49.680Q68.714-49.426 68.609-49.186Q68.504-48.946 68.306-48.793Q68.109-48.641 67.851-48.641Q67.535-48.641 67.283-48.764Q67.031-48.887 66.892-49.121Q66.754-49.356 66.754-49.680M71.347-48.719L69.515-48.719L69.515-49.016Q69.789-49.016 69.957-49.063Q70.125-49.110 70.125-49.278L70.125-53.438Q70.125-53.653 70.062-53.748Q70-53.844 69.880-53.865Q69.761-53.887 69.515-53.887L69.515-54.184L70.738-54.270L70.738-49.278Q70.738-49.110 70.906-49.063Q71.074-49.016 71.347-49.016L71.347-48.719M72.211-47.422Q72.324-47.344 72.500-47.344Q72.789-47.344 73.009-47.557Q73.230-47.770 73.355-48.071L73.644-48.719L72.371-51.606Q72.289-51.782 72.144-51.826Q72-51.871 71.730-51.871L71.730-52.168L73.449-52.168L73.449-51.871Q73.027-51.871 73.027-51.688Q73.027-51.676 73.043-51.606L73.980-49.481L74.812-51.391Q74.851-51.481 74.851-51.559Q74.851-51.699 74.750-51.785Q74.648-51.871 74.507-51.871L74.507-52.168L75.859-52.168L75.859-51.871Q75.605-51.871 75.412-51.746Q75.218-51.621 75.113-51.391L73.668-48.071Q73.554-47.817 73.388-47.594Q73.222-47.371 72.994-47.229Q72.765-47.086 72.500-47.086Q72.203-47.086 71.963-47.278Q71.722-47.469 71.722-47.758Q71.722-47.914 71.828-48.016Q71.933-48.117 72.082-48.117Q72.187-48.117 72.267-48.071Q72.347-48.024 72.394-47.946Q72.441-47.867 72.441-47.758Q72.441-47.637 72.380-47.549Q72.320-47.461 72.211-47.422",[1890],[1874,7985,7986],{"transform":7949},[1879,7987],{"d":7988,"fill":1987,"stroke":1987,"className":7989,"style":1899},"M79.125-50.414Q79.125-50.918 79.381-51.350Q79.637-51.782 80.073-52.033Q80.508-52.285 81.008-52.285Q81.395-52.285 81.737-52.141Q82.078-51.996 82.340-51.735Q82.602-51.473 82.744-51.137Q82.887-50.801 82.887-50.414Q82.887-49.922 82.623-49.512Q82.360-49.102 81.930-48.871Q81.500-48.641 81.008-48.641Q80.516-48.641 80.082-48.873Q79.649-49.106 79.387-49.514Q79.125-49.922 79.125-50.414M81.008-48.918Q81.465-48.918 81.717-49.141Q81.969-49.364 82.057-49.715Q82.145-50.067 82.145-50.512Q82.145-50.942 82.051-51.280Q81.957-51.617 81.703-51.824Q81.450-52.032 81.008-52.032Q80.360-52.032 80.116-51.615Q79.871-51.199 79.871-50.512Q79.871-50.067 79.959-49.715Q80.047-49.364 80.299-49.141Q80.551-48.918 81.008-48.918M85.301-48.719L83.446-48.719L83.446-49.016Q83.719-49.016 83.887-49.063Q84.055-49.110 84.055-49.278L84.055-51.414Q84.055-51.629 83.992-51.725Q83.930-51.821 83.811-51.842Q83.692-51.864 83.446-51.864L83.446-52.160L84.637-52.246L84.637-51.512Q84.750-51.727 84.944-51.895Q85.137-52.063 85.375-52.155Q85.614-52.246 85.867-52.246Q87.035-52.246 87.035-51.168L87.035-49.278Q87.035-49.110 87.205-49.063Q87.375-49.016 87.645-49.016L87.645-48.719L85.789-48.719L85.789-49.016Q86.063-49.016 86.231-49.063Q86.399-49.110 86.399-49.278L86.399-51.153Q86.399-51.535 86.278-51.764Q86.157-51.992 85.805-51.992Q85.492-51.992 85.239-51.830Q84.985-51.668 84.838-51.399Q84.692-51.129 84.692-50.832L84.692-49.278Q84.692-49.110 84.862-49.063Q85.032-49.016 85.301-49.016",[1890],[1874,7991,7992],{"transform":7949},[1879,7993],{"d":7994,"fill":1987,"stroke":1987,"className":7995,"style":1899},"M92.197-48.641Q91.841-48.641 91.572-48.821Q91.302-49 91.162-49.295Q91.021-49.590 91.021-49.949Q91.021-50.336 91.183-50.750Q91.345-51.164 91.629-51.502Q91.912-51.840 92.281-52.043Q92.650-52.246 93.052-52.246Q93.545-52.246 93.822-51.797Q93.853-51.930 93.957-52.012Q94.060-52.094 94.189-52.094Q94.302-52.094 94.382-52.024Q94.463-51.953 94.463-51.840Q94.463-51.813 94.447-51.750L93.892-49.551Q93.853-49.305 93.853-49.254Q93.853-48.895 94.099-48.895Q94.244-48.895 94.345-49.002Q94.447-49.110 94.511-49.264Q94.576-49.418 94.625-49.608Q94.673-49.797 94.693-49.895Q94.720-49.965 94.783-49.965L94.884-49.965Q94.923-49.965 94.949-49.932Q94.974-49.899 94.974-49.871Q94.974-49.856 94.966-49.840Q94.853-49.348 94.654-48.994Q94.455-48.641 94.084-48.641Q93.802-48.641 93.576-48.783Q93.349-48.926 93.267-49.184Q93.045-48.942 92.771-48.791Q92.498-48.641 92.197-48.641M92.213-48.895Q92.423-48.895 92.632-49.008Q92.841-49.121 93.011-49.295Q93.181-49.469 93.310-49.664Q93.298-49.649 93.289-49.635Q93.279-49.621 93.267-49.606L93.701-51.328Q93.662-51.508 93.576-51.658Q93.490-51.809 93.353-51.901Q93.216-51.992 93.037-51.992Q92.701-51.992 92.429-51.711Q92.158-51.430 91.998-51.055Q91.873-50.735 91.775-50.315Q91.677-49.895 91.677-49.614Q91.677-49.324 91.810-49.110Q91.943-48.895 92.213-48.895",[1890],[1874,7997,7998],{"transform":7949},[1879,7999],{"d":8000,"fill":1987,"stroke":1987,"className":8001,"style":1899},"M97.375-46.719L96.199-46.719L96.199-54.719L97.375-54.719L97.375-54.352L96.566-54.352L96.566-47.086L97.375-47.086L97.375-46.719M101.160-48.719L98.367-48.719L98.367-49.016Q99.430-49.016 99.430-49.278L99.430-53.446Q99-53.231 98.320-53.231L98.320-53.528Q99.340-53.528 99.855-54.039L100-54.039Q100.074-54.020 100.094-53.942L100.094-49.278Q100.094-49.016 101.160-49.016",[1890],[1874,8003,8004],{"transform":7949},[1879,8005],{"d":8006,"fill":1987,"stroke":1987,"className":8007,"style":1899},"M103.954-49.184Q103.954-49.367 104.090-49.504Q104.227-49.641 104.419-49.641Q104.610-49.641 104.743-49.508Q104.876-49.375 104.876-49.184Q104.876-48.985 104.743-48.852Q104.610-48.719 104.419-48.719Q104.227-48.719 104.090-48.856Q103.954-48.992 103.954-49.184",[1890],[1874,8009,8010],{"transform":7949},[1879,8011],{"d":8012,"fill":1987,"stroke":1987,"className":8013,"style":1899},"M107.732-49.184Q107.732-49.367 107.868-49.504Q108.005-49.641 108.197-49.641Q108.388-49.641 108.521-49.508Q108.654-49.375 108.654-49.184Q108.654-48.985 108.521-48.852Q108.388-48.719 108.197-48.719Q108.005-48.719 107.868-48.856Q107.732-48.992 107.732-49.184",[1890],[1874,8015,8016],{"transform":7949},[1879,8017],{"d":8018,"fill":1987,"stroke":1987,"className":8019,"style":1899},"M111.584-49.352Q111.775-49.078 112.131-48.951Q112.486-48.824 112.869-48.824Q113.205-48.824 113.414-49.010Q113.623-49.196 113.719-49.489Q113.814-49.782 113.814-50.094Q113.814-50.418 113.717-50.713Q113.619-51.008 113.406-51.192Q113.193-51.375 112.861-51.375L112.295-51.375Q112.264-51.375 112.234-51.405Q112.205-51.434 112.205-51.461L112.205-51.543Q112.205-51.578 112.234-51.604Q112.264-51.629 112.295-51.629L112.775-51.664Q113.061-51.664 113.258-51.869Q113.455-52.074 113.551-52.369Q113.646-52.664 113.646-52.942Q113.646-53.321 113.447-53.559Q113.248-53.797 112.869-53.797Q112.549-53.797 112.260-53.690Q111.971-53.582 111.807-53.360Q111.986-53.360 112.109-53.233Q112.232-53.106 112.232-52.934Q112.232-52.762 112.107-52.637Q111.982-52.512 111.807-52.512Q111.635-52.512 111.510-52.637Q111.385-52.762 111.385-52.934Q111.385-53.301 111.609-53.549Q111.834-53.797 112.174-53.918Q112.514-54.039 112.869-54.039Q113.217-54.039 113.580-53.918Q113.943-53.797 114.191-53.547Q114.439-53.297 114.439-52.942Q114.439-52.457 114.121-52.074Q113.803-51.692 113.326-51.520Q113.877-51.410 114.277-51.024Q114.678-50.637 114.678-50.102Q114.678-49.645 114.414-49.289Q114.150-48.934 113.728-48.742Q113.307-48.551 112.869-48.551Q112.459-48.551 112.066-48.686Q111.674-48.821 111.408-49.106Q111.143-49.391 111.143-49.809Q111.143-50.004 111.275-50.133Q111.408-50.262 111.600-50.262Q111.725-50.262 111.828-50.203Q111.932-50.145 111.994-50.039Q112.057-49.934 112.057-49.809Q112.057-49.614 111.922-49.483Q111.787-49.352 111.584-49.352M116.396-46.719L115.221-46.719L115.221-47.086L116.029-47.086L116.029-54.352L115.221-54.352L115.221-54.719L116.396-54.719",[1890],[2271,8021,8023,8024,2453,8042,8081,8082,884,8133,8184,8185,8209,8210,8225],{"className":8022},[2274],"Difference array: range-add ",[389,8025,8027],{"className":8026},[392],[389,8028,8030],{"className":8029,"ariaHidden":397},[396],[389,8031,8033,8036,8039],{"className":8032},[401],[389,8034],{"className":8035,"style":6657},[405],[389,8037,696],{"className":8038},[410],[389,8040,6524],{"className":8041},[410],[389,8043,8045],{"className":8044},[392],[389,8046,8048],{"className":8047,"ariaHidden":397},[396],[389,8049,8051,8054,8057,8060,8063,8066,8072,8075,8078],{"className":8050},[401],[389,8052],{"className":8053,"style":487},[405],[389,8055,533],{"className":8056},[410,423],[389,8058,577],{"className":8059},[415],[389,8061,499],{"className":8062},[410],[389,8064],{"className":8065,"style":586},[585],[389,8067,8069],{"className":8068},[590],[389,8070,3957],{"className":8071},[970],[389,8073],{"className":8074,"style":586},[585],[389,8076,2304],{"className":8077},[410],[389,8079,622],{"className":8080},[464]," pokes ",[389,8083,8085],{"className":8084},[392],[389,8086,8088,8118],{"className":8087,"ariaHidden":397},[396],[389,8089,8091,8094,8097,8100,8103,8106,8109,8115],{"className":8090},[401],[389,8092],{"className":8093,"style":487},[405],[389,8095,7398],{"className":8096,"style":491},[410,423],[389,8098,577],{"className":8099},[415],[389,8101,499],{"className":8102},[410],[389,8104,622],{"className":8105},[464],[389,8107],{"className":8108,"style":645},[585],[389,8110,8112],{"className":8111},[649],[389,8113,696],{"className":8114},[410],[389,8116],{"className":8117,"style":645},[585],[389,8119,8121,8124,8130],{"className":8120},[401],[389,8122],{"className":8123,"style":880},[405],[389,8125,8127],{"className":8126},[410],[389,8128,724],{"className":8129},[649],[389,8131,6524],{"className":8132},[410],[389,8134,8136],{"className":8135},[392],[389,8137,8139,8169],{"className":8138,"ariaHidden":397},[396],[389,8140,8142,8145,8148,8151,8154,8157,8160,8166],{"className":8141},[401],[389,8143],{"className":8144,"style":487},[405],[389,8146,7398],{"className":8147,"style":491},[410,423],[389,8149,577],{"className":8150},[415],[389,8152,2314],{"className":8153},[410],[389,8155,622],{"className":8156},[464],[389,8158],{"className":8159,"style":645},[585],[389,8161,8163],{"className":8162},[649],[389,8164,606],{"className":8165},[410],[389,8167],{"className":8168,"style":645},[585],[389,8170,8172,8175,8181],{"className":8171},[401],[389,8173],{"className":8174,"style":880},[405],[389,8176,8178],{"className":8177},[410],[389,8179,724],{"className":8180},[649],[389,8182,6524],{"className":8183},[410]," (two ",[389,8186,8188],{"className":8187},[392],[389,8189,8191],{"className":8190,"ariaHidden":397},[396],[389,8192,8194,8197,8200,8203,8206],{"className":8193},[401],[389,8195],{"className":8196,"style":487},[405],[389,8198,492],{"className":8199,"style":491},[410,423],[389,8201,416],{"className":8202},[415],[389,8204,499],{"className":8205},[410],[389,8207,465],{"className":8208},[464]," touches); one prefix-sum sweep of ",[389,8211,8213],{"className":8212},[392],[389,8214,8216],{"className":8215,"ariaHidden":397},[396],[389,8217,8219,8222],{"className":8218},[401],[389,8220],{"className":8221,"style":734},[405],[389,8223,7398],{"className":8224,"style":491},[410,423]," then materializes the update",[381,8227,8228,8229,8232,8233,8494,8495,528],{},"Prefix sums extend to ",[385,8230,8231],{},"two\ndimensions"," as well: precompute ",[389,8234,8236],{"className":8235},[392],[389,8237,8239,8275],{"className":8238,"ariaHidden":397},[396],[389,8240,8242,8245,8248,8251,8254,8257,8260,8263,8266,8269,8272],{"className":8241},[401],[389,8243],{"className":8244,"style":487},[405],[389,8246,5392],{"className":8247,"style":738},[410,423],[389,8249,577],{"className":8250},[415],[389,8252,966],{"className":8253},[410,423],[389,8255,622],{"className":8256},[464],[389,8258,577],{"className":8259},[415],[389,8261,979],{"className":8262,"style":978},[410,423],[389,8264,622],{"className":8265},[464],[389,8267],{"className":8268,"style":645},[585],[389,8270,724],{"className":8271},[649],[389,8273],{"className":8274,"style":645},[585],[389,8276,8278,8282,8411,8414,8417,8420,8453,8456,8459,8491],{"className":8277},[401],[389,8279],{"className":8280,"style":8281},[405],"height:1.1877em;vertical-align:-0.4358em;",[389,8283,8285,8288],{"className":8284},[2695],[389,8286,5625],{"className":8287,"style":6296},[2695,5623,6295],[389,8289,8291],{"className":8290},[428],[389,8292,8294,8403],{"className":8293},[432,790],[389,8295,8297,8400],{"className":8296},[436],[389,8298,8301],{"className":8299,"style":8300},[440],"height:0.1783em;",[389,8302,8303,8306],{"style":6312},[389,8304],{"className":8305,"style":449},[448],[389,8307,8309],{"className":8308},[453,454,455,456],[389,8310,8312,8349,8352,8355,8358,8362,8394,8397],{"className":8311},[410,456],[389,8313,8315,8318],{"className":8314},[410,456],[389,8316,966],{"className":8317},[410,423,456],[389,8319,8321],{"className":8320},[428],[389,8322,8324],{"className":8323},[432],[389,8325,8327],{"className":8326},[436],[389,8328,8331],{"className":8329,"style":8330},[440],"height:0.6828em;",[389,8332,8334,8338],{"style":8333},"top:-2.786em;margin-right:0.0714em;",[389,8335],{"className":8336,"style":8337},[448],"height:2.5em;",[389,8339,8342],{"className":8340},[453,8341,782,456],"reset-size3",[389,8343,8345],{"className":8344},[410,456],[389,8346,8348],{"className":8347},[410,456],"′",[389,8350,650],{"className":8351},[649,456],[389,8353,966],{"className":8354},[410,423,456],[389,8356,971],{"className":8357},[970,456],[389,8359],{"className":8360,"style":8361},[585,456],"margin-right:0.1952em;",[389,8363,8365,8368],{"className":8364},[410,456],[389,8366,979],{"className":8367,"style":978},[410,423,456],[389,8369,8371],{"className":8370},[428],[389,8372,8374],{"className":8373},[432],[389,8375,8377],{"className":8376},[436],[389,8378,8380],{"className":8379,"style":8330},[440],[389,8381,8382,8385],{"style":8333},[389,8383],{"className":8384,"style":8337},[448],[389,8386,8388],{"className":8387},[453,8341,782,456],[389,8389,8391],{"className":8390},[410,456],[389,8392,8348],{"className":8393},[410,456],[389,8395,650],{"className":8396},[649,456],[389,8398,979],{"className":8399,"style":978},[410,423,456],[389,8401,832],{"className":8402},[831],[389,8404,8406],{"className":8405},[436],[389,8407,8409],{"className":8408,"style":6340},[440],[389,8410],{},[389,8412],{"className":8413,"style":586},[585],[389,8415,533],{"className":8416},[410,423],[389,8418,577],{"className":8419},[415],[389,8421,8423,8426],{"className":8422},[410],[389,8424,966],{"className":8425},[410,423],[389,8427,8429],{"className":8428},[428],[389,8430,8432],{"className":8431},[432],[389,8433,8435],{"className":8434},[436],[389,8436,8439],{"className":8437,"style":8438},[440],"height:0.7519em;",[389,8440,8441,8444],{"style":444},[389,8442],{"className":8443,"style":449},[448],[389,8445,8447],{"className":8446},[453,454,455,456],[389,8448,8450],{"className":8449},[410,456],[389,8451,8348],{"className":8452},[410,456],[389,8454,622],{"className":8455},[464],[389,8457,577],{"className":8458},[415],[389,8460,8462,8465],{"className":8461},[410],[389,8463,979],{"className":8464,"style":978},[410,423],[389,8466,8468],{"className":8467},[428],[389,8469,8471],{"className":8470},[432],[389,8472,8474],{"className":8473},[436],[389,8475,8477],{"className":8476,"style":8438},[440],[389,8478,8479,8482],{"style":444},[389,8480],{"className":8481,"style":449},[448],[389,8483,8485],{"className":8484},[453,454,455,456],[389,8486,8488],{"className":8487},[410,456],[389,8489,8348],{"className":8490},[410,456],[389,8492,622],{"className":8493},[464],", and any\naxis-aligned rectangle sum is recovered by inclusion–exclusion with four lookups\nin ",[389,8496,8498],{"className":8497},[392],[389,8499,8501],{"className":8500,"ariaHidden":397},[396],[389,8502,8504,8507,8510,8513,8516],{"className":8503},[401],[389,8505],{"className":8506,"style":487},[405],[389,8508,492],{"className":8509,"style":491},[410,423],[389,8511,416],{"className":8512},[415],[389,8514,499],{"className":8515},[410],[389,8517,465],{"className":8518},[464],[1861,8520,8522,8660],{"className":8521},[1864,1865],[1867,8523,8527],{"xmlns":1869,"width":8524,"height":8525,"viewBox":8526},"206.574","216.653","-75 -75 154.930 162.490",[1874,8528,8529,8533,8536,8538,8541,8548,8555,8562,8569,8578],{"stroke":1876,"style":1877},[1879,8530],{"fill":1881,"stroke":8531,"d":8532},"var(--tk-soft-neutral)","M-54.222 55.767v-113.81h113.81v113.81Zm113.81-113.81",[1879,8534],{"fill":3016,"stroke":1881,"d":8535},"M-14.389 33.005V-23.9h62.597v56.905ZM48.208-23.9",[1879,8537],{"fill":1881,"stroke":1987,"d":8535,"style":1989},[1879,8539],{"fill":1987,"stroke":1881,"d":8540},"M-12.789-23.9a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0M49.808-23.9a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0M-12.789 33.005a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0M49.808 33.005a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0m-1.6 0",[1874,8542,8544],{"transform":8543},"translate(29.537 -84.048)",[1879,8545],{"d":8546,"fill":1876,"stroke":1876,"className":8547,"style":1899},"M-52.253 55.767L-53.816 55.767Q-53.855 55.767-53.882 55.726Q-53.910 55.685-53.910 55.638L-53.886 55.537Q-53.843 55.478-53.788 55.470Q-53.464 55.470-53.222 55.326Q-53.077 55.240-52.960 55.087Q-52.843 54.935-52.796 54.896L-49.847 50.165Q-49.781 50.056-49.656 50.056L-49.574 50.056Q-49.460 50.056-49.437 50.165L-48.796 55.310Q-48.742 55.470-48.199 55.470Q-48.101 55.501-48.101 55.591L-48.124 55.697Q-48.160 55.755-48.222 55.767L-50.222 55.767Q-50.257 55.767-50.288 55.726Q-50.320 55.685-50.320 55.638L-50.292 55.537Q-50.261 55.482-50.199 55.470Q-49.605 55.470-49.574 55.263L-49.734 53.958L-51.894 53.958L-52.550 54.997Q-52.558 55.044-52.589 55.117Q-52.620 55.189-52.620 55.232Q-52.620 55.365-52.501 55.417Q-52.382 55.470-52.238 55.470Q-52.144 55.501-52.144 55.591L-52.167 55.697Q-52.199 55.755-52.253 55.767M-50.093 51.080L-51.710 53.662L-49.773 53.662",[1890],[1874,8549,8551],{"transform":8550},"translate(106.14 -84.048)",[1879,8552],{"d":8553,"fill":1876,"stroke":1876,"className":8554,"style":1899},"M-50.574 55.767L-53.718 55.767Q-53.816 55.736-53.816 55.638L-53.788 55.537Q-53.757 55.482-53.695 55.470Q-53.253 55.470-53.095 55.431Q-52.937 55.392-52.894 55.165L-51.816 50.845Q-51.788 50.779-51.788 50.712Q-51.788 50.654-51.855 50.630Q-51.999 50.599-52.421 50.599Q-52.527 50.572-52.527 50.470L-52.495 50.369Q-52.460 50.310-52.406 50.302L-49.445 50.302Q-49.081 50.302-48.718 50.419Q-48.355 50.537-48.113 50.790Q-47.870 51.044-47.870 51.423Q-47.870 51.822-48.140 52.134Q-48.410 52.447-48.806 52.644Q-49.202 52.841-49.589 52.912Q-49.066 52.966-48.675 53.261Q-48.285 53.556-48.285 54.048Q-48.285 54.427-48.503 54.747Q-48.722 55.068-49.066 55.290Q-49.410 55.513-49.814 55.640Q-50.218 55.767-50.574 55.767M-52.245 55.423Q-52.245 55.470-51.999 55.470L-50.734 55.470Q-50.331 55.470-49.951 55.271Q-49.570 55.072-49.331 54.726Q-49.093 54.380-49.093 53.982Q-49.093 53.580-49.351 53.318Q-49.609 53.056-50.015 53.056L-51.671 53.056L-52.214 55.224Q-52.245 55.349-52.245 55.423M-51.132 50.904L-51.605 52.798L-50.300 52.798Q-49.925 52.798-49.542 52.619Q-49.160 52.439-48.908 52.119Q-48.656 51.798-48.656 51.415Q-48.656 51.048-48.902 50.824Q-49.148 50.599-49.519 50.599L-50.726 50.599Q-50.898 50.599-50.960 50.613Q-51.023 50.626-51.056 50.685Q-51.089 50.744-51.132 50.904",[1890],[1874,8556,8558],{"transform":8557},"translate(29.409 -12.916)",[1879,8559],{"d":8560,"fill":1876,"stroke":1876,"className":8561,"style":1899},"M-53.007 53.966Q-53.007 54.466-52.800 54.845Q-52.593 55.224-52.210 55.431Q-51.827 55.638-51.327 55.638Q-50.808 55.638-50.320 55.390Q-49.831 55.142-49.480 54.714Q-49.128 54.287-49.007 53.790Q-48.992 53.728-48.917 53.728L-48.816 53.728Q-48.781 53.728-48.753 53.755Q-48.726 53.783-48.726 53.822Q-48.726 53.830-48.734 53.845Q-48.878 54.427-49.294 54.908Q-49.710 55.388-50.283 55.662Q-50.855 55.935-51.452 55.935Q-52.109 55.935-52.648 55.656Q-53.187 55.376-53.492 54.869Q-53.796 54.361-53.796 53.705Q-53.796 53.013-53.478 52.361Q-53.160 51.708-52.613 51.205Q-52.066 50.701-51.398 50.417Q-50.730 50.134-50.054 50.134Q-49.624 50.134-49.259 50.316Q-48.894 50.497-48.663 50.837L-48.023 50.158Q-47.999 50.134-47.964 50.134L-47.917 50.134Q-47.878 50.134-47.855 50.162Q-47.831 50.189-47.831 50.232L-47.831 50.255L-48.367 52.376Q-48.382 52.447-48.445 52.447L-48.566 52.447Q-48.656 52.447-48.656 52.341Q-48.628 52.165-48.628 51.974Q-48.628 51.552-48.786 51.201Q-48.945 50.849-49.249 50.640Q-49.554 50.431-49.984 50.431Q-50.636 50.431-51.199 50.734Q-51.761 51.037-52.163 51.554Q-52.566 52.072-52.786 52.703Q-53.007 53.333-53.007 53.966",[1890],[1874,8563,8565],{"transform":8564},"translate(105.938 -12.916)",[1879,8566],{"d":8567,"fill":1876,"stroke":1876,"className":8568,"style":1899},"M-50.808 55.767L-53.734 55.767Q-53.831 55.736-53.831 55.638L-53.808 55.537Q-53.773 55.482-53.710 55.470Q-53.269 55.470-53.111 55.431Q-52.952 55.392-52.910 55.165L-51.831 50.845Q-51.808 50.775-51.808 50.712Q-51.808 50.650-51.870 50.630Q-52.015 50.599-52.437 50.599Q-52.542 50.572-52.542 50.470L-52.511 50.369Q-52.480 50.314-52.421 50.302L-49.437 50.302Q-48.855 50.302-48.402 50.572Q-47.949 50.841-47.701 51.310Q-47.452 51.779-47.452 52.361Q-47.452 52.994-47.724 53.605Q-47.995 54.216-48.472 54.705Q-48.949 55.193-49.560 55.480Q-50.171 55.767-50.808 55.767M-52.230 55.423Q-52.230 55.470-51.984 55.470L-50.941 55.470Q-49.956 55.470-49.191 54.744Q-48.972 54.525-48.788 54.197Q-48.605 53.869-48.476 53.505Q-48.347 53.142-48.277 52.765Q-48.206 52.388-48.206 52.080Q-48.206 51.626-48.394 51.288Q-48.581 50.951-48.929 50.775Q-49.277 50.599-49.726 50.599L-50.710 50.599Q-50.882 50.599-50.945 50.613Q-51.007 50.626-51.040 50.685Q-51.074 50.744-51.117 50.904L-52.199 55.224Q-52.230 55.349-52.230 55.423",[1890],[1874,8570,8571],{"fill":1987,"stroke":1987},[1874,8572,8574],{"transform":8573},"translate(60.74 -50.27)",[1879,8575],{"d":8576,"fill":1987,"stroke":1987,"className":8577,"style":1899},"M-49.765 57.318L-51.620 57.318L-51.620 57.025Q-51.351 57.025-51.183 56.980Q-51.015 56.935-51.015 56.759L-51.015 55.310Q-51.218 55.556-51.519 55.701Q-51.820 55.845-52.152 55.845Q-52.636 55.845-53.048 55.603Q-53.460 55.361-53.701 54.949Q-53.941 54.537-53.941 54.040Q-53.941 53.544-53.685 53.130Q-53.429 52.716-52.999 52.478Q-52.570 52.240-52.077 52.240Q-51.722 52.240-51.415 52.419Q-51.109 52.599-50.917 52.912L-50.628 52.240L-50.374 52.240L-50.374 56.759Q-50.374 56.935-50.206 56.980Q-50.038 57.025-49.765 57.025L-49.765 57.318M-52.093 55.591Q-51.726 55.591-51.433 55.359Q-51.140 55.126-50.992 54.767L-50.992 53.431Q-51.085 53.048-51.359 52.785Q-51.632 52.521-52.007 52.521Q-52.367 52.521-52.640 52.751Q-52.913 52.982-53.056 53.339Q-53.199 53.697-53.199 54.048Q-53.199 54.384-53.074 54.746Q-52.949 55.107-52.697 55.349Q-52.445 55.591-52.093 55.591M-48.820 54.814L-48.820 53.072Q-48.820 52.857-48.882 52.761Q-48.945 52.665-49.064 52.644Q-49.183 52.622-49.429 52.622L-49.429 52.326L-48.183 52.240L-48.183 54.790L-48.183 54.814Q-48.183 55.126-48.128 55.288Q-48.074 55.451-47.923 55.521Q-47.773 55.591-47.452 55.591Q-47.023 55.591-46.749 55.253Q-46.476 54.915-46.476 54.470L-46.476 53.072Q-46.476 52.857-46.538 52.761Q-46.601 52.665-46.720 52.644Q-46.839 52.622-47.085 52.622L-47.085 52.326L-45.839 52.240L-45.839 55.025Q-45.839 55.236-45.777 55.331Q-45.714 55.427-45.595 55.449Q-45.476 55.470-45.230 55.470L-45.230 55.767L-46.452 55.845L-46.452 55.224Q-46.620 55.513-46.902 55.679Q-47.183 55.845-47.503 55.845Q-48.820 55.845-48.820 54.814M-44.785 54.013Q-44.785 53.533-44.552 53.117Q-44.320 52.701-43.910 52.451Q-43.499 52.201-43.023 52.201Q-42.292 52.201-41.894 52.642Q-41.495 53.083-41.495 53.814Q-41.495 53.919-41.589 53.943L-44.038 53.943L-44.038 54.013Q-44.038 54.423-43.917 54.779Q-43.796 55.134-43.525 55.351Q-43.253 55.568-42.824 55.568Q-42.460 55.568-42.163 55.339Q-41.867 55.111-41.765 54.759Q-41.757 54.712-41.671 54.697L-41.589 54.697Q-41.495 54.724-41.495 54.806Q-41.495 54.814-41.503 54.845Q-41.566 55.072-41.704 55.255Q-41.843 55.439-42.035 55.572Q-42.226 55.705-42.445 55.775Q-42.663 55.845-42.902 55.845Q-43.273 55.845-43.611 55.708Q-43.949 55.572-44.216 55.320Q-44.484 55.068-44.634 54.728Q-44.785 54.388-44.785 54.013M-44.031 53.705L-42.070 53.705Q-42.070 53.400-42.171 53.109Q-42.273 52.818-42.490 52.636Q-42.706 52.455-43.023 52.455Q-43.324 52.455-43.554 52.642Q-43.785 52.830-43.908 53.121Q-44.031 53.412-44.031 53.705M-38.999 55.767L-40.980 55.767L-40.980 55.470Q-40.710 55.470-40.542 55.425Q-40.374 55.380-40.374 55.208L-40.374 53.072Q-40.374 52.857-40.437 52.761Q-40.499 52.665-40.617 52.644Q-40.734 52.622-40.980 52.622L-40.980 52.326L-39.812 52.240L-39.812 53.025Q-39.734 52.814-39.581 52.628Q-39.429 52.443-39.230 52.341Q-39.031 52.240-38.804 52.240Q-38.558 52.240-38.367 52.384Q-38.175 52.529-38.175 52.759Q-38.175 52.915-38.281 53.025Q-38.386 53.134-38.542 53.134Q-38.699 53.134-38.808 53.025Q-38.917 52.915-38.917 52.759Q-38.917 52.599-38.812 52.494Q-39.136 52.494-39.351 52.722Q-39.566 52.951-39.661 53.290Q-39.757 53.630-39.757 53.935L-39.757 55.208Q-39.757 55.376-39.531 55.423Q-39.304 55.470-38.999 55.470L-38.999 55.767M-37.277 57.064Q-37.163 57.142-36.988 57.142Q-36.699 57.142-36.478 56.929Q-36.257 56.716-36.132 56.415L-35.843 55.767L-37.117 52.880Q-37.199 52.705-37.343 52.660Q-37.488 52.615-37.757 52.615L-37.757 52.318L-36.038 52.318L-36.038 52.615Q-36.460 52.615-36.460 52.798Q-36.460 52.810-36.445 52.880L-35.507 55.005L-34.675 53.095Q-34.636 53.005-34.636 52.927Q-34.636 52.787-34.738 52.701Q-34.839 52.615-34.980 52.615L-34.980 52.318L-33.628 52.318L-33.628 52.615Q-33.882 52.615-34.076 52.740Q-34.269 52.865-34.374 53.095L-35.820 56.415Q-35.933 56.669-36.099 56.892Q-36.265 57.115-36.493 57.257Q-36.722 57.400-36.988 57.400Q-37.285 57.400-37.525 57.208Q-37.765 57.017-37.765 56.728Q-37.765 56.572-37.660 56.470Q-37.554 56.369-37.406 56.369Q-37.300 56.369-37.220 56.415Q-37.140 56.462-37.093 56.540Q-37.046 56.619-37.046 56.728Q-37.046 56.849-37.107 56.937Q-37.167 57.025-37.277 57.064",[1890],[1874,8579,8580,8587,8593,8599,8606,8612,8618,8624,8630,8636,8642,8648,8654],{"stroke":1881},[1874,8581,8583],{"transform":8582},"translate(4.652 17.71)",[1879,8584],{"d":8585,"fill":1876,"stroke":1876,"className":8586,"style":1899},"M-53.941 55.759L-53.941 54.537Q-53.941 54.509-53.910 54.478Q-53.878 54.447-53.855 54.447L-53.749 54.447Q-53.679 54.447-53.663 54.509Q-53.601 54.830-53.462 55.070Q-53.324 55.310-53.091 55.451Q-52.859 55.591-52.550 55.591Q-52.312 55.591-52.103 55.531Q-51.894 55.470-51.757 55.322Q-51.620 55.173-51.620 54.927Q-51.620 54.673-51.831 54.507Q-52.042 54.341-52.312 54.287L-52.933 54.173Q-53.339 54.095-53.640 53.839Q-53.941 53.583-53.941 53.208Q-53.941 52.841-53.740 52.619Q-53.538 52.396-53.214 52.298Q-52.890 52.201-52.550 52.201Q-52.085 52.201-51.788 52.408L-51.566 52.224Q-51.542 52.201-51.511 52.201L-51.460 52.201Q-51.429 52.201-51.402 52.228Q-51.374 52.255-51.374 52.287L-51.374 53.271Q-51.374 53.302-51.400 53.331Q-51.425 53.361-51.460 53.361L-51.566 53.361Q-51.601 53.361-51.628 53.333Q-51.656 53.306-51.656 53.271Q-51.656 52.872-51.908 52.652Q-52.160 52.431-52.558 52.431Q-52.913 52.431-53.197 52.554Q-53.480 52.677-53.480 52.982Q-53.480 53.201-53.279 53.333Q-53.077 53.466-52.831 53.509L-52.206 53.622Q-51.777 53.712-51.468 54.009Q-51.160 54.306-51.160 54.720Q-51.160 55.290-51.558 55.568Q-51.956 55.845-52.550 55.845Q-53.101 55.845-53.452 55.509L-53.749 55.822Q-53.773 55.845-53.808 55.845L-53.855 55.845Q-53.878 55.845-53.910 55.814Q-53.941 55.783-53.941 55.759M-49.949 54.814L-49.949 53.072Q-49.949 52.857-50.011 52.761Q-50.074 52.665-50.193 52.644Q-50.312 52.622-50.558 52.622L-50.558 52.326L-49.312 52.240L-49.312 54.790L-49.312 54.814Q-49.312 55.126-49.257 55.288Q-49.202 55.451-49.052 55.521Q-48.902 55.591-48.581 55.591Q-48.152 55.591-47.878 55.253Q-47.605 54.915-47.605 54.470L-47.605 53.072Q-47.605 52.857-47.667 52.761Q-47.730 52.665-47.849 52.644Q-47.968 52.622-48.214 52.622L-48.214 52.326L-46.968 52.240L-46.968 55.025Q-46.968 55.236-46.906 55.331Q-46.843 55.427-46.724 55.449Q-46.605 55.470-46.359 55.470L-46.359 55.767L-47.581 55.845L-47.581 55.224Q-47.749 55.513-48.031 55.679Q-48.312 55.845-48.632 55.845Q-49.949 55.845-49.949 54.814M-43.984 55.767L-45.839 55.767L-45.839 55.470Q-45.566 55.470-45.398 55.423Q-45.230 55.376-45.230 55.208L-45.230 53.072Q-45.230 52.857-45.292 52.761Q-45.355 52.665-45.474 52.644Q-45.593 52.622-45.839 52.622L-45.839 52.326L-44.648 52.240L-44.648 52.974Q-44.535 52.759-44.341 52.591Q-44.148 52.423-43.910 52.331Q-43.671 52.240-43.417 52.240Q-42.456 52.240-42.281 52.951Q-42.097 52.622-41.769 52.431Q-41.441 52.240-41.062 52.240Q-39.886 52.240-39.886 53.318L-39.886 55.208Q-39.886 55.376-39.718 55.423Q-39.550 55.470-39.281 55.470L-39.281 55.767L-41.136 55.767L-41.136 55.470Q-40.863 55.470-40.695 55.425Q-40.527 55.380-40.527 55.208L-40.527 53.333Q-40.527 52.947-40.652 52.720Q-40.777 52.494-41.128 52.494Q-41.433 52.494-41.689 52.656Q-41.945 52.818-42.093 53.087Q-42.242 53.357-42.242 53.654L-42.242 55.208Q-42.242 55.376-42.072 55.423Q-41.902 55.470-41.632 55.470L-41.632 55.767L-43.488 55.767L-43.488 55.470Q-43.214 55.470-43.046 55.423Q-42.878 55.376-42.878 55.208L-42.878 53.333Q-42.878 52.947-43.003 52.720Q-43.128 52.494-43.480 52.494Q-43.785 52.494-44.040 52.656Q-44.296 52.818-44.445 53.087Q-44.593 53.357-44.593 53.654L-44.593 55.208Q-44.593 55.376-44.423 55.423Q-44.253 55.470-43.984 55.470",[1890],[1874,8588,8589],{"transform":8582},[1879,8590],{"d":8591,"fill":1876,"stroke":1876,"className":8592,"style":1899},"M-30.742 54.790L-36.055 54.790Q-36.133 54.783-36.182 54.734Q-36.230 54.685-36.230 54.607Q-36.230 54.537-36.183 54.486Q-36.137 54.435-36.055 54.423L-30.742 54.423Q-30.668 54.435-30.621 54.486Q-30.574 54.537-30.574 54.607Q-30.574 54.685-30.623 54.734Q-30.672 54.783-30.742 54.790M-30.742 53.103L-36.055 53.103Q-36.133 53.095-36.182 53.046Q-36.230 52.997-36.230 52.919Q-36.230 52.849-36.183 52.798Q-36.137 52.747-36.055 52.736L-30.742 52.736Q-30.668 52.747-30.621 52.798Q-30.574 52.849-30.574 52.919Q-30.574 52.997-30.623 53.046Q-30.672 53.095-30.742 53.103",[1890],[1874,8594,8595],{"transform":8582},[1879,8596],{"d":8597,"fill":1876,"stroke":1876,"className":8598,"style":1899},"M-25.082 55.767L-27.242 55.767Q-27.277 55.767-27.308 55.726Q-27.339 55.685-27.339 55.638L-27.316 55.537Q-27.304 55.486-27.218 55.470Q-26.777 55.470-26.619 55.431Q-26.460 55.392-26.418 55.165L-25.339 50.845Q-25.316 50.775-25.316 50.712Q-25.316 50.650-25.378 50.630Q-25.523 50.599-25.945 50.599Q-26.050 50.572-26.050 50.470L-26.019 50.369Q-26.011 50.322-25.929 50.302L-23.066 50.302Q-22.671 50.302-22.289 50.437Q-21.906 50.572-21.654 50.851Q-21.402 51.130-21.402 51.537Q-21.402 51.935-21.630 52.263Q-21.859 52.591-22.232 52.824Q-22.605 53.056-23.029 53.179Q-23.453 53.302-23.820 53.302L-25.203 53.302L-25.683 55.224Q-25.699 55.318-25.699 55.361Q-25.699 55.419-25.632 55.439Q-25.492 55.470-25.066 55.470Q-24.968 55.497-24.968 55.591L-24.996 55.697Q-25.003 55.747-25.082 55.767M-24.625 50.904L-25.156 53.033L-23.953 53.033Q-23.097 53.033-22.675 52.599Q-22.539 52.462-22.431 52.247Q-22.324 52.033-22.267 51.790Q-22.210 51.548-22.210 51.353Q-22.210 50.927-22.543 50.763Q-22.875 50.599-23.347 50.599L-24.218 50.599Q-24.390 50.599-24.453 50.613Q-24.515 50.626-24.548 50.685Q-24.582 50.744-24.625 50.904",[1890],[1874,8600,8601],{"transform":8582},[1879,8602],{"d":8603,"fill":1876,"stroke":1876,"className":8604,"style":8605},"M-19.376 57.112L-21.752 57.112Q-21.790 57.112-21.814 57.078Q-21.837 57.045-21.837 57.009Q-21.817 56.927-21.800 56.895Q-21.784 56.863-21.729 56.854Q-21.380 56.854-21.219 56.819Q-21.146 56.799-21.111 56.673L-20.302 53.429Q-20.290 53.365-20.290 53.350Q-20.290 53.309-20.314 53.303Q-20.387 53.286-20.510 53.279Q-20.633 53.271-20.794 53.271Q-20.829 53.271-20.853 53.237Q-20.876 53.204-20.876 53.169Q-20.856 53.087-20.840 53.054Q-20.823 53.022-20.768 53.013L-18.351 53.013Q-17.879 53.013-17.498 53.210Q-17.117 53.406-16.898 53.772Q-16.678 54.138-16.678 54.604Q-16.678 55.105-16.908 55.562Q-17.138 56.019-17.529 56.368Q-17.920 56.716-18.402 56.914Q-18.884 57.112-19.376 57.112M-20.554 56.837Q-20.498 56.854-20.361 56.854L-19.479 56.854Q-19.200 56.854-18.937 56.788Q-18.673 56.722-18.430 56.589Q-18.187 56.456-17.996 56.265Q-17.788 56.057-17.627 55.741Q-17.466 55.425-17.381 55.071Q-17.296 54.718-17.296 54.411Q-17.296 53.854-17.654 53.563Q-18.011 53.271-18.585 53.271L-19.420 53.271Q-19.531 53.271-19.580 53.280Q-19.628 53.289-19.662 53.327Q-19.695 53.365-19.719 53.453L-20.530 56.699Q-20.554 56.793-20.554 56.837",[1890],"stroke-width:0.180",[1874,8607,8608],{"transform":8582},[1879,8609],{"d":8610,"fill":1876,"stroke":1876,"className":8611,"style":1899},"M-8.049 53.951L-12.881 53.951Q-12.956 53.939-13.006 53.890Q-13.057 53.841-13.057 53.767Q-13.057 53.615-12.881 53.583L-8.049 53.583Q-7.881 53.611-7.881 53.767Q-7.881 53.923-8.049 53.951",[1890],[1874,8613,8614],{"transform":8582},[1879,8615],{"d":8616,"fill":1876,"stroke":1876,"className":8617,"style":1899},"M-2.620 55.767L-4.780 55.767Q-4.815 55.767-4.846 55.726Q-4.877 55.685-4.877 55.638L-4.854 55.537Q-4.842 55.486-4.756 55.470Q-4.315 55.470-4.157 55.431Q-3.998 55.392-3.955 55.165L-2.877 50.845Q-2.854 50.775-2.854 50.712Q-2.854 50.650-2.916 50.630Q-3.061 50.599-3.483 50.599Q-3.588 50.572-3.588 50.470L-3.557 50.369Q-3.549 50.322-3.467 50.302L-0.604 50.302Q-0.209 50.302 0.173 50.437Q0.556 50.572 0.808 50.851Q1.060 51.130 1.060 51.537Q1.060 51.935 0.832 52.263Q0.603 52.591 0.230 52.824Q-0.143 53.056-0.567 53.179Q-0.991 53.302-1.358 53.302L-2.741 53.302L-3.221 55.224Q-3.237 55.318-3.237 55.361Q-3.237 55.419-3.170 55.439Q-3.030 55.470-2.604 55.470Q-2.506 55.497-2.506 55.591L-2.534 55.697Q-2.541 55.747-2.620 55.767M-2.163 50.904L-2.694 53.033L-1.491 53.033Q-0.635 53.033-0.213 52.599Q-0.077 52.462 0.031 52.247Q0.138 52.033 0.195 51.790Q0.252 51.548 0.252 51.353Q0.252 50.927-0.080 50.763Q-0.413 50.599-0.885 50.599L-1.756 50.599Q-1.928 50.599-1.991 50.613Q-2.053 50.626-2.086 50.685Q-2.120 50.744-2.163 50.904",[1890],[1874,8619,8620],{"transform":8582},[1879,8621],{"d":8622,"fill":1876,"stroke":1876,"className":8623,"style":8605},"M3.276 57.112L0.716 57.112Q0.678 57.112 0.654 57.078Q0.631 57.045 0.631 57.009Q0.651 56.927 0.667 56.895Q0.684 56.863 0.739 56.854Q1.088 56.854 1.249 56.819Q1.322 56.799 1.357 56.673L2.166 53.429Q2.178 53.365 2.178 53.350Q2.178 53.309 2.154 53.303Q2.081 53.286 1.958 53.279Q1.835 53.271 1.674 53.271Q1.639 53.271 1.615 53.237Q1.592 53.204 1.592 53.169Q1.612 53.087 1.628 53.054Q1.644 53.022 1.700 53.013L4.111 53.013Q4.313 53.013 4.545 53.062Q4.776 53.110 4.975 53.211Q5.175 53.312 5.299 53.479Q5.424 53.646 5.424 53.872Q5.424 54.165 5.207 54.399Q4.990 54.633 4.669 54.777Q4.349 54.921 4.056 54.970Q4.252 54.991 4.434 55.048Q4.615 55.105 4.776 55.215Q4.937 55.325 5.034 55.479Q5.131 55.633 5.131 55.829Q5.131 56.116 4.937 56.365Q4.744 56.614 4.460 56.787Q3.921 57.112 3.276 57.112M1.896 56.837Q1.952 56.854 2.090 56.854L3.150 56.854Q3.446 56.854 3.760 56.721Q4.073 56.588 4.275 56.346Q4.477 56.104 4.477 55.797Q4.477 55.580 4.369 55.420Q4.261 55.260 4.079 55.175Q3.897 55.091 3.686 55.091L2.324 55.091L1.920 56.699Q1.896 56.793 1.896 56.837M2.731 53.453L2.377 54.874L3.452 54.874Q3.730 54.874 4.048 54.751Q4.366 54.628 4.580 54.402Q4.794 54.176 4.794 53.883Q4.794 53.687 4.687 53.550Q4.580 53.412 4.406 53.341Q4.231 53.271 4.044 53.271L3.030 53.271Q2.919 53.271 2.871 53.280Q2.822 53.289 2.788 53.327Q2.755 53.365 2.731 53.453",[1890],[1874,8625,8626],{"transform":8582},[1879,8627],{"d":8628,"fill":1876,"stroke":1876,"className":8629,"style":1899},"M14.075 53.951L9.243 53.951Q9.168 53.939 9.118 53.890Q9.067 53.841 9.067 53.767Q9.067 53.615 9.243 53.583L14.075 53.583Q14.243 53.611 14.243 53.767Q14.243 53.923 14.075 53.951",[1890],[1874,8631,8632],{"transform":8582},[1879,8633],{"d":8634,"fill":1876,"stroke":1876,"className":8635,"style":1899},"M19.504 55.767L17.344 55.767Q17.309 55.767 17.278 55.726Q17.247 55.685 17.247 55.638L17.270 55.537Q17.282 55.486 17.368 55.470Q17.809 55.470 17.967 55.431Q18.126 55.392 18.169 55.165L19.247 50.845Q19.270 50.775 19.270 50.712Q19.270 50.650 19.208 50.630Q19.063 50.599 18.641 50.599Q18.536 50.572 18.536 50.470L18.567 50.369Q18.575 50.322 18.657 50.302L21.520 50.302Q21.915 50.302 22.297 50.437Q22.680 50.572 22.932 50.851Q23.184 51.130 23.184 51.537Q23.184 51.935 22.956 52.263Q22.727 52.591 22.354 52.824Q21.981 53.056 21.557 53.179Q21.133 53.302 20.766 53.302L19.383 53.302L18.903 55.224Q18.887 55.318 18.887 55.361Q18.887 55.419 18.954 55.439Q19.094 55.470 19.520 55.470Q19.618 55.497 19.618 55.591L19.590 55.697Q19.583 55.747 19.504 55.767M19.961 50.904L19.430 53.033L20.633 53.033Q21.489 53.033 21.911 52.599Q22.047 52.462 22.155 52.247Q22.262 52.033 22.319 51.790Q22.376 51.548 22.376 51.353Q22.376 50.927 22.044 50.763Q21.711 50.599 21.239 50.599L20.368 50.599Q20.196 50.599 20.133 50.613Q20.071 50.626 20.038 50.685Q20.004 50.744 19.961 50.904",[1890],[1874,8637,8638],{"transform":8582},[1879,8639],{"d":8640,"fill":1876,"stroke":1876,"className":8641,"style":8605},"M23.408 55.685Q23.408 56.101 23.594 56.393Q23.780 56.684 24.107 56.832Q24.433 56.980 24.838 56.980Q25.134 56.980 25.438 56.878Q25.743 56.775 25.995 56.596Q26.247 56.418 26.433 56.163Q26.619 55.908 26.692 55.618Q26.716 55.577 26.757 55.571L26.853 55.571Q26.930 55.591 26.930 55.653Q26.930 55.659 26.924 55.685Q26.815 56.136 26.468 56.492Q26.121 56.848 25.652 57.043Q25.183 57.238 24.718 57.238Q24.328 57.238 23.974 57.122Q23.619 57.007 23.345 56.784Q23.071 56.561 22.913 56.239Q22.755 55.917 22.755 55.515Q22.755 54.979 23.020 54.497Q23.285 54.015 23.726 53.654Q24.167 53.292 24.702 53.090Q25.236 52.887 25.761 52.887Q26.103 52.887 26.417 53.024Q26.730 53.160 26.930 53.415L27.428 52.911Q27.445 52.896 27.483 52.887L27.524 52.887Q27.603 52.908 27.603 52.978L27.202 54.581Q27.179 54.625 27.129 54.633L27.020 54.633Q26.950 54.613 26.950 54.537Q26.962 54.466 26.962 54.317Q26.962 53.986 26.820 53.718Q26.678 53.450 26.421 53.298Q26.165 53.145 25.834 53.145Q25.324 53.145 24.885 53.346Q24.445 53.547 24.110 53.907Q23.774 54.267 23.591 54.726Q23.408 55.184 23.408 55.685",[1890],[1874,8643,8644],{"transform":8582},[1879,8645],{"d":8646,"fill":1876,"stroke":1876,"className":8647,"style":1899},"M33.473 53.951L31 53.951Q30.922 53.939 30.873 53.890Q30.825 53.841 30.825 53.767Q30.825 53.693 30.873 53.644Q30.922 53.595 31 53.583L33.473 53.583L33.473 51.103Q33.500 50.935 33.657 50.935Q33.731 50.935 33.780 50.984Q33.829 51.033 33.840 51.103L33.840 53.583L36.313 53.583Q36.481 53.615 36.481 53.767Q36.481 53.919 36.313 53.951L33.840 53.951L33.840 56.431Q33.829 56.501 33.780 56.550Q33.731 56.599 33.657 56.599Q33.500 56.599 33.473 56.431",[1890],[1874,8649,8650],{"transform":8582},[1879,8651],{"d":8652,"fill":1876,"stroke":1876,"className":8653,"style":1899},"M41.500 55.767L39.340 55.767Q39.305 55.767 39.274 55.726Q39.243 55.685 39.243 55.638L39.266 55.537Q39.278 55.486 39.364 55.470Q39.805 55.470 39.963 55.431Q40.122 55.392 40.164 55.165L41.243 50.845Q41.266 50.775 41.266 50.712Q41.266 50.650 41.204 50.630Q41.059 50.599 40.637 50.599Q40.532 50.572 40.532 50.470L40.563 50.369Q40.571 50.322 40.653 50.302L43.516 50.302Q43.911 50.302 44.293 50.437Q44.676 50.572 44.928 50.851Q45.180 51.130 45.180 51.537Q45.180 51.935 44.952 52.263Q44.723 52.591 44.350 52.824Q43.977 53.056 43.553 53.179Q43.129 53.302 42.762 53.302L41.379 53.302L40.899 55.224Q40.883 55.318 40.883 55.361Q40.883 55.419 40.950 55.439Q41.090 55.470 41.516 55.470Q41.614 55.497 41.614 55.591L41.586 55.697Q41.579 55.747 41.500 55.767M41.957 50.904L41.426 53.033L42.629 53.033Q43.485 53.033 43.907 52.599Q44.043 52.462 44.151 52.247Q44.258 52.033 44.315 51.790Q44.372 51.548 44.372 51.353Q44.372 50.927 44.039 50.763Q43.707 50.599 43.235 50.599L42.364 50.599Q42.192 50.599 42.129 50.613Q42.067 50.626 42.034 50.685Q42 50.744 41.957 50.904",[1890],[1874,8655,8656],{"transform":8582},[1879,8657],{"d":8658,"fill":1876,"stroke":1876,"className":8659,"style":8605},"M45.970 57.112L44.751 57.112Q44.713 57.112 44.692 57.080Q44.672 57.048 44.672 57.009Q44.678 56.992 44.682 56.966Q44.686 56.939 44.699 56.913Q44.713 56.886 44.727 56.873Q44.742 56.860 44.774 56.854Q45.272 56.854 45.524 56.470Q45.530 56.465 45.556 56.447L47.883 52.917Q47.912 52.873 47.954 52.851Q47.997 52.829 48.038 52.829L48.123 52.829Q48.164 52.829 48.196 52.852Q48.228 52.876 48.237 52.917L48.849 56.746Q48.896 56.854 49.330 56.854Q49.368 56.854 49.390 56.885Q49.412 56.916 49.412 56.957Q49.388 57.056 49.371 57.084Q49.353 57.112 49.280 57.112L47.710 57.112Q47.631 57.112 47.631 57.009Q47.654 56.919 47.664 56.891Q47.675 56.863 47.733 56.854Q48.190 56.854 48.214 56.728L48.064 55.773L46.274 55.773L45.776 56.535Q45.723 56.620 45.723 56.693Q45.723 56.854 46.016 56.854Q46.101 56.854 46.101 56.957Q46.084 57.053 46.065 57.083Q46.046 57.112 45.970 57.112M47.716 53.596L46.444 55.515L48.020 55.515",[1890],[2271,8661,8663,8664,8890,8891,8906],{"className":8662},[2274],"2-D prefix sums: the sum over the shaded rectangle is ",[389,8665,8667],{"className":8666},[392],[389,8668,8670,8729,8786,8843],{"className":8669,"ariaHidden":397},[396],[389,8671,8673,8677,8720,8723,8726],{"className":8672},[401],[389,8674],{"className":8675,"style":8676},[405],"height:0.8333em;vertical-align:-0.15em;",[389,8678,8680,8683],{"className":8679},[410],[389,8681,5392],{"className":8682,"style":738},[410,423],[389,8684,8686],{"className":8685},[428],[389,8687,8689,8711],{"className":8688},[432,790],[389,8690,8692,8708],{"className":8691},[436],[389,8693,8696],{"className":8694,"style":8695},[440],"height:0.3283em;",[389,8697,8699,8702],{"style":8698},"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;",[389,8700],{"className":8701,"style":449},[448],[389,8703,8705],{"className":8704},[453,454,455,456],[389,8706,7398],{"className":8707,"style":491},[410,423,456],[389,8709,832],{"className":8710},[831],[389,8712,8714],{"className":8713},[436],[389,8715,8718],{"className":8716,"style":8717},[440],"height:0.15em;",[389,8719],{},[389,8721],{"className":8722,"style":601},[585],[389,8724,606],{"className":8725},[605],[389,8727],{"className":8728,"style":601},[585],[389,8730,8732,8735,8777,8780,8783],{"className":8731},[401],[389,8733],{"className":8734,"style":8676},[405],[389,8736,8738,8741],{"className":8737},[410],[389,8739,5392],{"className":8740,"style":738},[410,423],[389,8742,8744],{"className":8743},[428],[389,8745,8747,8769],{"className":8746},[432,790],[389,8748,8750,8766],{"className":8749},[436],[389,8751,8753],{"className":8752,"style":8695},[440],[389,8754,8755,8758],{"style":8698},[389,8756],{"className":8757,"style":449},[448],[389,8759,8761],{"className":8760},[453,454,455,456],[389,8762,8765],{"className":8763,"style":8764},[410,423,456],"margin-right:0.0502em;","B",[389,8767,832],{"className":8768},[831],[389,8770,8772],{"className":8771},[436],[389,8773,8775],{"className":8774,"style":8717},[440],[389,8776],{},[389,8778],{"className":8779,"style":601},[585],[389,8781,606],{"className":8782},[605],[389,8784],{"className":8785,"style":601},[585],[389,8787,8789,8792,8834,8837,8840],{"className":8788},[401],[389,8790],{"className":8791,"style":8676},[405],[389,8793,8795,8798],{"className":8794},[410],[389,8796,5392],{"className":8797,"style":738},[410,423],[389,8799,8801],{"className":8800},[428],[389,8802,8804,8826],{"className":8803},[432,790],[389,8805,8807,8823],{"className":8806},[436],[389,8808,8810],{"className":8809,"style":8695},[440],[389,8811,8812,8815],{"style":8698},[389,8813],{"className":8814,"style":449},[448],[389,8816,8818],{"className":8817},[453,454,455,456],[389,8819,8822],{"className":8820,"style":8821},[410,423,456],"margin-right:0.0715em;","C",[389,8824,832],{"className":8825},[831],[389,8827,8829],{"className":8828},[436],[389,8830,8832],{"className":8831,"style":8717},[440],[389,8833],{},[389,8835],{"className":8836,"style":601},[585],[389,8838,696],{"className":8839},[605],[389,8841],{"className":8842,"style":601},[585],[389,8844,8846,8849],{"className":8845},[401],[389,8847],{"className":8848,"style":8676},[405],[389,8850,8852,8855],{"className":8851},[410],[389,8853,5392],{"className":8854,"style":738},[410,423],[389,8856,8858],{"className":8857},[428],[389,8859,8861,8882],{"className":8860},[432,790],[389,8862,8864,8879],{"className":8863},[436],[389,8865,8867],{"className":8866,"style":8695},[440],[389,8868,8869,8872],{"style":8698},[389,8870],{"className":8871,"style":449},[448],[389,8873,8875],{"className":8874},[453,454,455,456],[389,8876,8878],{"className":8877},[410,423,456],"A",[389,8880,832],{"className":8881},[831],[389,8883,8885],{"className":8884},[436],[389,8886,8888],{"className":8887,"style":8717},[440],[389,8889],{}," — subtract the two overhanging strips, then add back corner ",[389,8892,8894],{"className":8893},[392],[389,8895,8897],{"className":8896,"ariaHidden":397},[396],[389,8898,8900,8903],{"className":8899},[401],[389,8901],{"className":8902,"style":734},[405],[389,8904,8878],{"className":8905},[410,423]," which both subtractions removed twice",[548,8908,8910],{"id":8909},"takeaways","Takeaways",[8912,8913,8914,9029,9084,9145,9210,9444],"ul",{},[8915,8916,8917,8918,8968,8969,8993,8994,8996,8997,9021,9022],"li",{},"These idioms all replace a ",[389,8919,8921],{"className":8920},[392],[389,8922,8924],{"className":8923,"ariaHidden":397},[396],[389,8925,8927,8930,8933,8936,8965],{"className":8926},[401],[389,8928],{"className":8929,"style":406},[405],[389,8931,411],{"className":8932},[410],[389,8934,416],{"className":8935},[415],[389,8937,8939,8942],{"className":8938},[410],[389,8940,424],{"className":8941},[410,423],[389,8943,8945],{"className":8944},[428],[389,8946,8948],{"className":8947},[432],[389,8949,8951],{"className":8950},[436],[389,8952,8954],{"className":8953,"style":441},[440],[389,8955,8956,8959],{"style":444},[389,8957],{"className":8958,"style":449},[448],[389,8960,8962],{"className":8961},[453,454,455,456],[389,8963,460],{"className":8964},[410,456],[389,8966,465],{"className":8967},[464]," pair-or-subarray scan with a single\n",[389,8970,8972],{"className":8971},[392],[389,8973,8975],{"className":8974,"ariaHidden":397},[396],[389,8976,8978,8981,8984,8987,8990],{"className":8977},[401],[389,8979],{"className":8980,"style":487},[405],[389,8982,492],{"className":8983,"style":491},[410,423],[389,8985,416],{"className":8986},[415],[389,8988,424],{"className":8989},[410,423],[389,8991,465],{"className":8992},[464]," pass by maintaining an ",[385,8995,473],{}," as indices advance and patching it\nin ",[389,8998,9000],{"className":8999},[392],[389,9001,9003],{"className":9002,"ariaHidden":397},[396],[389,9004,9006,9009,9012,9015,9018],{"className":9005},[401],[389,9007],{"className":9008,"style":487},[405],[389,9010,492],{"className":9011,"style":491},[410,423],[389,9013,416],{"className":9014},[415],[389,9016,499],{"className":9017},[410],[389,9019,465],{"className":9020},[464]," per step.",[530,9023,9024],{},[533,9025,2304],{"href":9026,"ariaDescribedBy":9027,"dataFootnoteRef":376,"id":9028},"#user-content-fn-skiena-array",[537],"user-content-fnref-skiena-array",[8915,9030,9031,9034,9035,2635,9059,9083],{},[385,9032,9033],{},"Two pointers from opposite ends"," solve sorted-array pair problems (Two Sum II,\nContainer With Most Water): the move that discards an index provably discards no\nsolution, giving ",[389,9036,9038],{"className":9037},[392],[389,9039,9041],{"className":9040,"ariaHidden":397},[396],[389,9042,9044,9047,9050,9053,9056],{"className":9043},[401],[389,9045],{"className":9046,"style":487},[405],[389,9048,492],{"className":9049,"style":491},[410,423],[389,9051,416],{"className":9052},[415],[389,9054,424],{"className":9055},[410,423],[389,9057,465],{"className":9058},[464],[389,9060,9062],{"className":9061},[392],[389,9063,9065],{"className":9064,"ariaHidden":397},[396],[389,9066,9068,9071,9074,9077,9080],{"className":9067},[401],[389,9069],{"className":9070,"style":487},[405],[389,9072,492],{"className":9073,"style":491},[410,423],[389,9075,416],{"className":9076},[415],[389,9078,499],{"className":9079},[410],[389,9081,465],{"className":9082},[464]," space.",[8915,9085,9086,9089,9090,9092,9093,9095,9096,3551,9120,9144],{},[385,9087,9088],{},"Fast\u002Fslow pointers"," (a trailing ",[385,9091,3337],{}," behind a ",[385,9094,3359],{},") rewrite an array\nin place, dedup or partition, in ",[389,9097,9099],{"className":9098},[392],[389,9100,9102],{"className":9101,"ariaHidden":397},[396],[389,9103,9105,9108,9111,9114,9117],{"className":9104},[401],[389,9106],{"className":9107,"style":487},[405],[389,9109,492],{"className":9110,"style":491},[410,423],[389,9112,416],{"className":9113},[415],[389,9115,424],{"className":9116},[410,423],[389,9118,465],{"className":9119},[464],[389,9121,9123],{"className":9122},[392],[389,9124,9126],{"className":9125,"ariaHidden":397},[396],[389,9127,9129,9132,9135,9138,9141],{"className":9128},[401],[389,9130],{"className":9131,"style":487},[405],[389,9133,492],{"className":9134,"style":491},[410,423],[389,9136,416],{"className":9137},[415],[389,9139,499],{"className":9140},[410],[389,9142,465],{"className":9143},[464]," extra space.",[8915,9146,4014,9147,9150,9151,9166,9167,9182,9183,3423,9186,528],{},[385,9148,9149],{},"sliding window"," expands ",[389,9152,9154],{"className":9153},[392],[389,9155,9157],{"className":9156,"ariaHidden":397},[396],[389,9158,9160,9163],{"className":9159},[401],[389,9161],{"className":9162,"style":660},[405],[389,9164,664],{"className":9165,"style":491},[410,423]," and shrinks ",[389,9168,9170],{"className":9169},[392],[389,9171,9173],{"className":9172,"ariaHidden":397},[396],[389,9174,9176,9179],{"className":9175},[401],[389,9177],{"className":9178,"style":861},[405],[389,9180,641],{"className":9181,"style":640},[410,423]," to keep a property; since each\nindex enters and leaves the window once, the nested loop is ",[385,9184,9185],{},"amortized",[389,9187,9189],{"className":9188},[392],[389,9190,9192],{"className":9191,"ariaHidden":397},[396],[389,9193,9195,9198,9201,9204,9207],{"className":9194},[401],[389,9196],{"className":9197,"style":487},[405],[389,9199,492],{"className":9200,"style":491},[410,423],[389,9202,416],{"className":9203},[415],[389,9205,424],{"className":9206},[410,423],[389,9208,465],{"className":9209},[464],[8915,9211,9212,3423,9214,9317,9318,9378,9379,9403,9404,9378,9419,9443],{},[385,9213,5335],{},[389,9215,9217],{"className":9216},[392],[389,9218,9220,9247],{"className":9219,"ariaHidden":397},[396],[389,9221,9223,9226,9229,9232,9235,9238,9241,9244],{"className":9222},[401],[389,9224],{"className":9225,"style":487},[405],[389,9227,5392],{"className":9228,"style":738},[410,423],[389,9230,577],{"className":9231},[415],[389,9233,966],{"className":9234},[410,423],[389,9236,622],{"className":9237},[464],[389,9239],{"className":9240,"style":645},[585],[389,9242,724],{"className":9243},[649],[389,9245],{"className":9246,"style":645},[585],[389,9248,9250,9253,9302,9305,9308,9311,9314],{"className":9249},[401],[389,9251],{"className":9252,"style":6288},[405],[389,9254,9256,9259],{"className":9255},[2695],[389,9257,5625],{"className":9258,"style":6296},[2695,5623,6295],[389,9260,9262],{"className":9261},[428],[389,9263,9265,9294],{"className":9264},[432,790],[389,9266,9268,9291],{"className":9267},[436],[389,9269,9271],{"className":9270,"style":6309},[440],[389,9272,9273,9276],{"style":6312},[389,9274],{"className":9275,"style":449},[448],[389,9277,9279],{"className":9278},[453,454,455,456],[389,9280,9282,9285,9288],{"className":9281},[410,456],[389,9283,979],{"className":9284,"style":978},[410,423,456],[389,9286,650],{"className":9287},[649,456],[389,9289,966],{"className":9290},[410,423,456],[389,9292,832],{"className":9293},[831],[389,9295,9297],{"className":9296},[436],[389,9298,9300],{"className":9299,"style":6340},[440],[389,9301],{},[389,9303],{"className":9304,"style":586},[585],[389,9306,533],{"className":9307},[410,423],[389,9309,577],{"className":9310},[415],[389,9312,979],{"className":9313,"style":978},[410,423],[389,9315,622],{"className":9316},[464]," answer any range sum as ",[389,9319,9321],{"className":9320},[392],[389,9322,9324,9360],{"className":9323,"ariaHidden":397},[396],[389,9325,9327,9330,9333,9336,9339,9345,9348,9351,9354,9357],{"className":9326},[401],[389,9328],{"className":9329,"style":487},[405],[389,9331,5392],{"className":9332,"style":738},[410,423],[389,9334,577],{"className":9335},[415],[389,9337,664],{"className":9338,"style":491},[410,423],[389,9340,9342],{"className":9341},[410],[389,9343,696],{"className":9344},[410],[389,9346,499],{"className":9347},[410],[389,9349,622],{"className":9350},[464],[389,9352],{"className":9353,"style":601},[585],[389,9355,606],{"className":9356},[605],[389,9358],{"className":9359,"style":601},[585],[389,9361,9363,9366,9369,9372,9375],{"className":9362},[401],[389,9364],{"className":9365,"style":487},[405],[389,9367,5392],{"className":9368,"style":738},[410,423],[389,9370,577],{"className":9371},[415],[389,9373,641],{"className":9374,"style":640},[410,423],[389,9376,622],{"className":9377},[464]," in\n",[389,9380,9382],{"className":9381},[392],[389,9383,9385],{"className":9384,"ariaHidden":397},[396],[389,9386,9388,9391,9394,9397,9400],{"className":9387},[401],[389,9389],{"className":9390,"style":487},[405],[389,9392,492],{"className":9393,"style":491},[410,423],[389,9395,416],{"className":9396},[415],[389,9398,499],{"className":9399},[410],[389,9401,465],{"className":9402},[464],", and a hash map of prefix frequencies counts subarrays with sum ",[389,9405,9407],{"className":9406},[392],[389,9408,9410],{"className":9409,"ariaHidden":397},[396],[389,9411,9413,9416],{"className":9412},[401],[389,9414],{"className":9415,"style":861},[405],[389,9417,4071],{"className":9418,"style":4070},[410,423],[389,9420,9422],{"className":9421},[392],[389,9423,9425],{"className":9424,"ariaHidden":397},[396],[389,9426,9428,9431,9434,9437,9440],{"className":9427},[401],[389,9429],{"className":9430,"style":487},[405],[389,9432,492],{"className":9433,"style":491},[410,423],[389,9435,416],{"className":9436},[415],[389,9438,424],{"className":9439},[410,423],[389,9441,465],{"className":9442},[464],", even with negative numbers.",[8915,9445,9446,9447,9450,9451,9466,9467,9509,9510,9513,9514,528],{},"The ",[385,9448,9449],{},"difference-array"," dual turns ",[389,9452,9454],{"className":9453},[392],[389,9455,9457],{"className":9456,"ariaHidden":397},[396],[389,9458,9460,9463],{"className":9459},[401],[389,9461],{"className":9462,"style":660},[405],[389,9464,7681],{"className":9465},[410,423]," range-adds into ",[389,9468,9470],{"className":9469},[392],[389,9471,9473,9497],{"className":9472,"ariaHidden":397},[396],[389,9474,9476,9479,9482,9485,9488,9491,9494],{"className":9475},[401],[389,9477],{"className":9478,"style":487},[405],[389,9480,492],{"className":9481,"style":491},[410,423],[389,9483,416],{"className":9484},[415],[389,9486,7681],{"className":9487},[410,423],[389,9489],{"className":9490,"style":601},[585],[389,9492,696],{"className":9493},[605],[389,9495],{"className":9496,"style":601},[585],[389,9498,9500,9503,9506],{"className":9499},[401],[389,9501],{"className":9502,"style":487},[405],[389,9504,424],{"className":9505},[410,423],[389,9507,465],{"className":9508},[464],", and prefix\nsums generalize to ",[385,9511,9512],{},"2-D"," rectangle queries in ",[389,9515,9517],{"className":9516},[392],[389,9518,9520],{"className":9519,"ariaHidden":397},[396],[389,9521,9523,9526,9529,9532,9535],{"className":9522},[401],[389,9524],{"className":9525,"style":487},[405],[389,9527,492],{"className":9528,"style":491},[410,423],[389,9530,416],{"className":9531},[415],[389,9533,499],{"className":9534},[410],[389,9536,465],{"className":9537},[464],[9539,9540,9543,9548],"section",{"className":9541,"dataFootnotes":376},[9542],"footnotes",[548,9544,9547],{"className":9545,"id":537},[9546],"sr-only","Footnotes",[9549,9550,9551,9597,9609],"ol",{},[8915,9552,9554,9557,9558,9582,9583,3423,9590],{"id":9553},"user-content-fn-erickson-amortize",[385,9555,9556],{},"Erickson",", Ch. — Arrays and Amortization: the amortized argument that a two-pointer window, though nested, does ",[389,9559,9561],{"className":9560},[392],[389,9562,9564],{"className":9563,"ariaHidden":397},[396],[389,9565,9567,9570,9573,9576,9579],{"className":9566},[401],[389,9568],{"className":9569,"style":487},[405],[389,9571,492],{"className":9572,"style":491},[410,423],[389,9574,416],{"className":9575},[415],[389,9577,424],{"className":9578},[410,423],[389,9580,465],{"className":9581},[464]," total work because each index is enqueued and dequeued once. ",[533,9584,9589],{"href":9585,"ariaLabel":9586,"className":9587,"dataFootnoteBackref":376},"#user-content-fnref-erickson-amortize","Back to reference 1",[9588],"data-footnote-backref","↩",[533,9591,9589,9595],{"href":9592,"ariaLabel":9593,"className":9594,"dataFootnoteBackref":376},"#user-content-fnref-erickson-amortize-2","Back to reference 1-2",[9588],[530,9596,460],{},[8915,9598,9600,9603,9604],{"id":9599},"user-content-fn-clrs-invariant",[385,9601,9602],{},"CLRS",", Ch. 2 — Getting Started (§2.1): the loop-invariant method (initialization, maintenance, termination) used here to prove each pointer scheme correct. ",[533,9605,9589],{"href":9606,"ariaLabel":9607,"className":9608,"dataFootnoteBackref":376},"#user-content-fnref-clrs-invariant","Back to reference 2",[9588],[8915,9610,9612,9615,9616],{"id":9611},"user-content-fn-skiena-array",[385,9613,9614],{},"Skiena",", § — Sorting & array techniques: two-pointer and windowing idioms on sorted arrays as the linear-time alternative to a quadratic scan. ",[533,9617,9589],{"href":9618,"ariaLabel":9619,"className":9620,"dataFootnoteBackref":376},"#user-content-fnref-skiena-array","Back to reference 3",[9588],[9622,9623,9624],"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":9626},[9627,9628,9629,9630,9631,9632],{"id":550,"depth":18,"text":551},{"id":3326,"depth":18,"text":3327},{"id":4010,"depth":18,"text":4011},{"id":5334,"depth":18,"text":5335},{"id":8909,"depth":18,"text":8910},{"id":537,"depth":18,"text":9547},"We open a new module on sequences (arrays and strings), and the first thing\nto learn is a way of thinking that recurs everywhere in it. A great many array\nquestions have an obvious brute-force answer that examines every pair or every\nsubarray: two nested loops, Θ(n2) work. The techniques in this lesson\nshare a single trick for collapsing that quadratic scan into a single linear\npass. Instead of re-examining the array from scratch at each step, we maintain\na small amount of state (one or two indices, a window, a running sum) together\nwith an invariant that this state always tells us something true. Each step\nadvances an index and patches the invariant in O(1), so the whole pass is\nO(n).1 The art is choosing the invariant. The loop-invariant\ndiscipline from our first algorithm, establish it, maintain it, read off the\nanswer at termination, is exactly the reasoning we use to prove these correct.2","md",{"moduleNumber":102,"lessonNumber":6,"order":9636},501,true,[9639,9643,9645,9648,9650],{"title":9640,"slug":9641,"difficulty":9642},"Two Sum II - Input Array Is Sorted","two-sum-ii-input-array-is-sorted","Medium",{"title":2717,"slug":9644,"difficulty":9642},"container-with-most-water",{"title":9646,"slug":9647,"difficulty":9642},"Longest Substring Without Repeating Characters","longest-substring-without-repeating-characters",{"title":4901,"slug":9649,"difficulty":9642},"minimum-size-subarray-sum",{"title":6809,"slug":9651,"difficulty":9642},"subarray-sum-equals-k","---\ntitle: Two Pointers, Sliding Windows & Prefix Sums\nmodule: Sequences & Strings\nmoduleNumber: 5\nlessonNumber: 1\norder: 501\nsummary: >-\n  A family of array idioms that collapse an obvious $O(n^2)$ scan into a single\n  $O(n)$ pass by maintaining an invariant as indices move. We meet two pointers\n  (converging on a sorted array, and a fast\u002Fslow pair for in-place rewriting),\n  the sliding window (fixed and variable size, amortized $O(n)$), and prefix\n  sums, which answer any range-sum in $O(1)$ and count subarrays summing to $k$.\ntopics: [Array Techniques]\nsources:\n  - book: Skiena\n    ref: \"§ — Sorting & array techniques\"\n  - book: Erickson\n    ref: \"Ch. — Arrays and Amortization\"\n  - book: CLRS\n    ref: \"Ch. 2 — Getting Started\"\npractice:\n  - title: 'Two Sum II - Input Array Is Sorted'\n    slug: two-sum-ii-input-array-is-sorted\n    difficulty: Medium\n  - title: 'Container With Most Water'\n    slug: container-with-most-water\n    difficulty: Medium\n  - title: 'Longest Substring Without Repeating Characters'\n    slug: longest-substring-without-repeating-characters\n    difficulty: Medium\n  - title: 'Minimum Size Subarray Sum'\n    slug: minimum-size-subarray-sum\n    difficulty: Medium\n  - title: 'Subarray Sum Equals K'\n    slug: subarray-sum-equals-k\n    difficulty: Medium\n---\n\nWe open a new module on **sequences** (arrays and strings), and the first thing\nto learn is a way of thinking that recurs everywhere in it. A great many array\nquestions have an obvious brute-force answer that examines every pair or every\nsubarray: two nested loops, $\\Theta(n^2)$ work. The techniques in this lesson\nshare a single trick for collapsing that quadratic scan into a **single linear\npass**. Instead of re-examining the array from scratch at each step, we maintain\na small amount of state (one or two indices, a window, a running sum) together\nwith an **invariant** that this state always tells us something true. Each step\nadvances an index and patches the invariant in $O(1)$, so the whole pass is\n$O(n)$.[^erickson-amortize] The art is choosing the invariant. The loop-invariant\ndiscipline from our first algorithm, establish it, maintain it, read off the\nanswer at termination, is exactly the reasoning we use to prove these correct.[^clrs-invariant]\n\n## Two pointers, opposite ends\n\nThe cleanest instance lives on a **sorted** array. Suppose $a[0\\ldots n-1]$ is\nsorted ascending and we want indices $l \u003C r$ with $a[l] + a[r] = T$ for a target\n$T$. Brute force tries all $\\binom{n}{2}$ pairs. Instead, place one pointer at\neach end, $l = 0$ and $r = n-1$, and let them converge:\n\n> **Invariant.** No pair $(i, j)$ with $i \u003C l$ or $j > r$ can be the answer.\n> Equivalently, if a solution exists, it lies in the window $[l, r]$.\n\nAt each step we look at $s = a[l] + a[r]$. If $s = T$ we are done. If $s \u003C T$,\nthen $a[l]$ paired with _anything still available_ is too small. Since $a[l] + a[r]$\nis the largest sum involving $a[l]$ in the window and it already fell short,\n$a[l]$ cannot be part of any solution, and we discard it by advancing $l$. The\ncase $s > T$ is symmetric: $a[r]$ is too large to pair with anything remaining,\nso we drop it by decrementing $r$.\n\n> **Lemma.** Each move preserves the invariant: the discarded index belongs to no\n> solution, so removing it loses no answer.\n>\n\n> **Proof.** Suppose $s = a[l] + a[r] \u003C T$. For any $j$ with $l \u003C j \\le r$ we have\n> $a[j] \\le a[r]$ (sortedness), hence $a[l] + a[j] \\le s \u003C T$. So $a[l]$ forms no\n> valid pair within the window, and advancing $l$ discards only non-solutions.\n> The case $s > T$ is symmetric. $\\qed$\n\n$$\n% caption: Converging pointers on sorted $\\langle 1,3,4,6,8,11\\rangle$, target $T=10$. Each step compares $s=a[l]+a[r]$ to $T$ and discards one end; the pair $a[2]+a[3]=10$ is found in five steps\n\\begin{tikzpicture}[>=stealth, font=\\small]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\i\u002F\\v in {0\u002F1,1\u002F3,2\u002F4,3\u002F6,4\u002F8,5\u002F11} {\n    \\node[draw, minimum size=8mm, inner sep=1pt] (a\\i) at (\\i*0.95,0) {$\\v$};\n    \\node[font=\\footnotesize] at (\\i*0.95,0.62) {\\i};\n  }\n  \\draw[acc, very thick, rounded corners=1pt] (1.45,-0.5) rectangle (3.35,0.5);\n  \\node[font=\\footnotesize, acc] at (2.4,-1.05) {$a[2]+a[3]=10=T$};\n  \\node[font=\\footnotesize] at (-1.5,-1.8) {$s:$};\n  \\node[font=\\footnotesize] at (-0.1,-1.8) {$12{>}10$};\n  \\node[font=\\footnotesize] at (1.1,-1.8) {$9{\u003C}10$};\n  \\node[font=\\footnotesize] at (2.3,-1.8) {$11{>}10$};\n  \\node[font=\\footnotesize] at (3.5,-1.8) {$9{\u003C}10$};\n  \\node[font=\\footnotesize, acc] at (4.7,-1.8) {$10$};\n  \\node[font=\\footnotesize] at (-1.5,-2.35) {move:};\n  \\node[font=\\footnotesize, acc] at (-0.1,-2.35) {$r{-}{-}$};\n  \\node[font=\\footnotesize, acc] at (1.1,-2.35) {$l{+}{+}$};\n  \\node[font=\\footnotesize, acc] at (2.3,-2.35) {$r{-}{-}$};\n  \\node[font=\\footnotesize, acc] at (3.5,-2.35) {$l{+}{+}$};\n  \\node[font=\\footnotesize, acc] at (4.7,-2.35) {done};\n\\end{tikzpicture}\n$$\n\nThe pointers start $n-1$ apart and each step closes the gap by one, so the loop\nruns at most $n-1$ times: $O(n)$ time, $O(1)$ space. This is exactly **Two Sum\nII** on a sorted input, and the reason [sorting](\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort) first ($O(n \\log n)$) can beat a\nhash table when the array is already sorted or space is tight.\n\nThe same converging-pointers move solves **Container With Most Water**: with\nheights $a[0\\ldots n-1]$, the area between walls $l$ and $r$ is\n$(r - l)\\cdot\\min(a[l], a[r])$. We start at the widest pair and always advance the\npointer at the _shorter_ wall. Moving the taller one can only shrink the width\nwithout ever raising the binding height, so it can never improve on the current\nbest. The shorter wall, by contrast, might be replaced by a taller one. One pass,\n$O(n)$.\n\n$$\n% caption: Container With Most Water: the area is $(r{-}l)\\cdot\\min(a[l],a[r])$, bound by the shorter wall (here $a[l]{=}3$). Moving the taller wall $r$ inward only loses width at the same height, so we advance the shorter wall $l$ instead\n\\begin{tikzpicture}[>=stealth, font=\\small]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\useasboundingbox (-0.6,-0.9) rectangle (7.6,4.4);\n  % heights a = [3,7,2,5,8,4], walls l=0 (h=3), r=5 (h=4)\n  \\foreach \\i\u002F\\h in {0\u002F3,1\u002F7,2\u002F2,3\u002F5,4\u002F8,5\u002F4} {\n    \\draw[black!55, thick] (\\i*1.3,0) -- (\\i*1.3,\\h*0.45);\n    \\node[font=\\footnotesize, black!60] at (\\i*1.3,-0.35) {\\i};\n  }\n  % water rectangle between l=0 and r=5, height = min(3,4)*0.45 = 3*0.45\n  \\fill[acc!15] (0,0) rectangle (6.5,1.35);\n  \\draw[acc, very thick] (0,0) rectangle (6.5,1.35);\n  % emphasize the two walls\n  \\draw[acc, very thick] (0,0) -- (0,1.35);\n  \\draw[acc, very thick] (6.5,0) -- (6.5,1.8);\n  \\node[acc, font=\\footnotesize] at (0,-0.35) {$l$};\n  \\node[acc, font=\\footnotesize] at (6.5,-0.35) {$r$};\n  \\node[acc, font=\\footnotesize, fill=acc!15, inner sep=1.5pt] at (3.25,0.67) {area $=5\\cdot 3=15$};\n  % binding height annotation\n  \\node[font=\\footnotesize, red!75!black, align=center] at (2.6,3.4)\n    {$a[l]{=}3$ binds $\\Rightarrow$ advance $l$};\n  \\draw[->, red!75!black, thick] (1.4,3.1) to[bend right=12] (0.15,1.5);\n\\end{tikzpicture}\n$$\n\n## Two pointers, same direction (fast\u002Fslow)\n\nA second flavor sends both pointers the _same_ way at different speeds. The\ncanonical use is rewriting an array in place: a **write** pointer $w$ trails a\n**read** pointer $r$, and $w$ only advances when $a[r]$ is an element we want to\nkeep. To remove duplicates from a sorted array:\n\n> **Invariant.** $a[0 \\ldots w-1]$ holds the de-duplicated prefix of everything\n> read so far, in order.\n\n```algorithm\ncaption: $\\textsc{Dedup}(a)$ — compact a sorted array in place, returning new length\n$w \\gets 1$\nfor $r \\gets 1$ to $n-1$ do\n  if $a[r] \\ne a[w-1]$ then\n    $a[w] \\gets a[r]$\n    $w \\gets w + 1$\nreturn $w$\n```\n\nThe read pointer scans every element once and the write pointer never overtakes\nit, so the routine is $O(n)$ time and $O(1)$ extra space; it overwrites the input\nrather than allocating output. The same trailing-write pattern underlies in-place\n**partition** (the core of quicksort and quickselect): a write pointer marks the\nboundary between elements already placed below the pivot and the rest.\n\n$$\n% caption: Fast\u002Fslow dedup on a sorted array: write index $w$ trails read $r$, advancing only when $a[r]\\ne a[w{-}1]$, so $a[0\\mathinner{\\ldotp\\ldotp} w{-}1]$ holds the compacted prefix $\\langle 1,2\\rangle$ so far\n\\begin{tikzpicture}[>=stealth, font=\\small]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\i\u002F\\v in {0\u002F1,1\u002F1,2\u002F2,3\u002F3,4\u002F3} {\n    \\node[draw, minimum size=8mm, inner sep=1pt] (a\\i) at (\\i*0.9,0) {$\\v$};\n    \\node[font=\\footnotesize] at (\\i*0.9,0.62) {\\i};\n  }\n  \\draw[acc, very thick, rounded corners=1pt] (-0.45,-0.5) rectangle (1.35,0.5);\n  \\node[acc, font=\\footnotesize] at (0.45,-0.95) {kept prefix};\n  \\node[acc] (rr) at (2.7,-1.6) {$r$};\n  \\draw[->, acc, thick] (rr.north) -- (a3.south);\n  \\node[font=\\footnotesize] (ww) at (1.8,-1.6) {$w$};\n  \\draw[->, thick] (ww.north) -- (a2.south);\n  \\node[font=\\footnotesize, acc] at (2.25,-2.2) {$a[3]{>}a[1]$: write, $w{+}{+}$};\n\\end{tikzpicture}\n$$\n\n## Sliding windows\n\nA **window** is a contiguous range $[l, r]$ that we slide rightward across the\narray while keeping it consistent with some property. Two regimes appear.\n\n**Fixed size $k$.** To compute, say, every window's sum, we do not re-add $k$\nelements each time. We add the entering element and subtract the leaving one:\nwhen the window advances from $[l, r]$ to $[l+1, r+1]$, update\n$\\text{sum} \\mathrel{+}= a[r+1] - a[l]$. Each slide is $O(1)$, so all $n - k + 1$\nwindows cost $O(n)$ total.\n\n**Variable size.** Here the window grows and shrinks to stay feasible. The\npattern: advance $r$ to _expand_ the window greedily; whenever the window\n_violates_ its constraint, advance $l$ to _shrink_ it until the constraint holds\nagain. The double loop looks $O(n^2)$, but it is not:\n\n> **Lemma (Amortized bound).** Across the whole run, $l$ and $r$ each advance from $0$ to\n> $n$ and never retreat. Every index is added to the window exactly once (when $r$\n> passes it) and removed at most once (when $l$ passes it), so the total work of\n> both pointers is $O(n)$, even though the inner `while` can run several times in\n> one outer step.[^erickson-amortize]\n\n$$\n% caption: A variable window slides across the array; $l$ and $r$ each move only rightward, so the pass is amortized $O(n)$\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum size=8mm, inner sep=1pt, font=\\small},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[cell] (c0) at (0,0) {$2$};\n  \\node[cell] (c1) at (0.8,0) {$3$};\n  \\node[cell] (c2) at (1.6,0) {$1$};\n  \\node[cell] (c3) at (2.4,0) {$2$};\n  \\node[cell] (c4) at (3.2,0) {$4$};\n  \\node[cell] (c5) at (4.0,0) {$3$};\n  \\node[cell] (c6) at (4.8,0) {$1$};\n  \\node[cell] (c7) at (5.6,0) {$2$};\n  % highlight window over c2..c4\n  \\draw[acc, very thick, rounded corners=1pt]\n    (1.2,-0.55) rectangle (3.6,0.55);\n  % l pointer under left edge of window\n  \\node[acc, font=\\small] (ll) at (1.6,-1.25) {$l$};\n  \\draw[->, acc, thick] (ll.north) -- (c2.south);\n  \\draw[->, acc, thick] (2.0,-1.25) -- (3.0,-1.25);\n  % r pointer under right edge of window\n  \\node[acc, font=\\small] (rr) at (3.2,-1.25) {$r$};\n  \\draw[->, acc, thick] (rr.north) -- (c4.south);\n  \\draw[->, acc, thick] (3.6,-1.25) -- (4.6,-1.25);\n\\end{tikzpicture}\n$$\n\n**Worked: smallest subarray with sum $\\ge S$.** Given positive integers and a\ntarget $S$, find the shortest contiguous subarray whose sum is at least $S$\n(**Minimum Size Subarray Sum**). Keep a running window sum; expand $r$ to grow it,\nand the moment the sum reaches $S$, shrink from $l$ to find the tightest window\nending at $r$.\n\n```algorithm\ncaption: $\\textsc{MinSubarray}(a, S)$ — shortest window with sum $\\ge S$, in $O(n)$\n$l \\gets 0,\\ \\ \\text{sum} \\gets 0,\\ \\ \\text{best} \\gets \\infty$\nfor $r \\gets 0$ to $n-1$ do\n  $\\text{sum} \\gets \\text{sum} + a[r]$\n  while $\\text{sum} \\ge S$ do\n    $\\text{best} \\gets \\min(\\text{best},\\ r - l + 1)$\n    $\\text{sum} \\gets \\text{sum} - a[l]$\n    $l \\gets l + 1$\nreturn $(\\text{best} = \\infty)\\ ?\\ 0 : \\text{best}$\n```\n\nBecause all entries are positive, the window sum is monotone in width, so once it\ndrops below $S$ no further shrinking helps — the `while` exits and $r$ moves on.\n\n**Worked: longest substring without repeats.** For **Longest Substring Without\nRepeating Characters**, the window must contain no duplicate character. We keep a\nmap `last[c]` of the most recent index of each character. Expand $r$; if $a[r]$\nwas last seen at a position $\\ge l$, that occurrence is _inside_ the window, so we\njump $l$ to one past it. The window $[l, r]$ is always duplicate-free, and we\ntrack its maximum length.\n\n```algorithm\ncaption: $\\textsc{LongestUnique}(a)$ — longest duplicate-free window, in $O(n)$\n$l \\gets 0,\\ \\ \\text{best} \\gets 0,\\ \\ \\text{last} \\gets \\{\\}$\nfor $r \\gets 0$ to $n-1$ do\n  if $a[r] \\in \\text{last}$ and $\\text{last}[a[r]] \\ge l$ then\n    $l \\gets \\text{last}[a[r]] + 1$\n  $\\text{last}[a[r]] \\gets r$\n  $\\text{best} \\gets \\max(\\text{best},\\ r - l + 1)$\nreturn $\\text{best}$\n```\n\nEach character is visited once by $r$, and $l$ only moves forward, so this is\n$O(n)$ time and $O(\\sigma)$ space for an alphabet of size $\\sigma$.\n\n## Prefix sums\n\nThe sliding window assumed we could update a sum incrementally. [**Prefix sums**](\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees)\ngeneralize this to answer _any_ range-sum query in $O(1)$ after a linear\nprecompute. Define\n\n$$\nP[0] = 0, \\qquad P[i] = a[0] + a[1] + \\cdots + a[i-1] = \\sum_{j\u003Ci} a[j],\n$$\n\nso $P$ has length $n+1$ and is built in one pass: $P[i] = P[i-1] + a[i-1]$. Then\nthe sum of any subarray telescopes:\n\n$$\n\\text{sum}(l, r) = a[l] + \\cdots + a[r] = P[r+1] - P[l].\n$$\n\n$$\n% caption: With $P[i]=\\sum_{j\u003Ci}a[j]$, any range sum is the difference of two prefix entries: $\\text{sum}(l,r)=P[r{+}1]-P[l]$\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum size=8mm, inner sep=1pt, font=\\small},\n  pcell\u002F.style={draw, minimum size=8mm, inner sep=1pt, font=\\small},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % array a (6 cells), indices 0..5, sitting above gaps of P\n  \\node[font=\\small] at (-1.1,0) {$a$};\n  \\node[cell] (a0) at (0.4,0) {$3$};\n  \\node[cell] (a1) at (1.2,0) {$1$};\n  \\node[cell] (a2) at (2.0,0) {$4$};\n  \\node[cell] (a3) at (2.8,0) {$1$};\n  \\node[cell] (a4) at (3.6,0) {$5$};\n  \\node[cell] (a5) at (4.4,0) {$9$};\n  % prefix P (7 boundaries) below, aligned to cell edges\n  \\node[font=\\small] at (-1.1,-1.6) {$P$};\n  \\node[pcell] (p0) at (0.0,-1.6) {$0$};\n  \\node[pcell] (p1) at (0.8,-1.6) {$3$};\n  \\node[pcell, acc, very thick] (p2) at (1.6,-1.6) {$4$};\n  \\node[pcell] (p3) at (2.4,-1.6) {$8$};\n  \\node[pcell] (p4) at (3.2,-1.6) {$9$};\n  \\node[pcell, acc, very thick] (p5) at (4.0,-1.6) {$14$};\n  \\node[pcell] (p6) at (4.8,-1.6) {$23$};\n  % brace over a[2..4] showing the queried range\n  \\draw[acc, thick] (1.6,0.6) -- (1.6,0.8) -- (4.0,0.8) -- (4.0,0.6);\n  \\node[acc, font=\\small] at (2.8,1.15) {$\\text{sum}(2,4)=P[5]-P[2]=10$};\n\\end{tikzpicture}\n$$\n\nThe highlighted entries are $P[2]=4$ and $P[5]=14$; their difference $10$ is\nexactly $a[2]+a[3]+a[4] = 4+1+5$. One subtraction, no rescanning.\n\n**Counting subarrays with sum $= k$.** Prefix sums turn a $\\Theta(n^2)$ subarray\nscan into $O(n)$ for **Subarray Sum Equals K**. A subarray $(i, j)$ has sum $k$\niff $P[j+1] - P[i] = k$, i.e. $P[i] = P[j+1] - k$. So as we sweep a running prefix\n$P[j+1]$ left to right, the number of valid left endpoints is the number of\nearlier prefixes equal to $P[j+1] - k$. Keep a hash map of prefix-value\nfrequencies seen so far:\n\n```algorithm\ncaption: $\\textsc{CountSubarrays}(a, k)$ — number of subarrays summing to $k$, in $O(n)$\n$\\text{count} \\gets 0,\\ \\ \\text{prefix} \\gets 0$\n$\\text{freq} \\gets \\{\\,0 : 1\\,\\}$ \u002F\u002F empty prefix seen once\nfor $j \\gets 0$ to $n-1$ do\n  $\\text{prefix} \\gets \\text{prefix} + a[j]$\n  $\\text{count} \\gets \\text{count} + \\text{freq}[\\text{prefix} - k]$ \u002F\u002F 0 if absent\n  $\\text{freq}[\\text{prefix}] \\gets \\text{freq}[\\text{prefix}] + 1$\nreturn $\\text{count}$\n```\n\nSeeding `freq` with $\\{0 : 1\\}$ accounts for subarrays that start at index $0$\n(those need $P[i] = 0$). One pass, $O(n)$ time and space. Note this works for\n_any_ integers, positive or negative, unlike the sliding window, which needed\npositivity for monotonicity.\n\n**Difference arrays, the dual.** To apply many _range updates_ \"add $v$ to every\n$a[i \\ldots j]$\" and only then read the array, invert the relationship. Keep a\ndifference array $D$ and for each update do $D[i] \\mathrel{+}= v$ and\n$D[j+1] \\mathrel{-}= v$, two $O(1)$ touches. A single prefix-sum pass over $D$ at\nthe end materializes the final array, since $a[i] = D[0] + \\cdots + D[i]$. Thus\n$m$ range-adds cost $O(m + n)$ instead of $O(mn)$.\n\n$$\n% caption: Difference array: range-add $+5$ to $a[1\\mathinner{\\ldotp\\ldotp} 3]$ pokes $D[1]\\mathrel{+}{=}5$ and $D[4]\\mathrel{-}{=}5$ (two $O(1)$ touches); one prefix-sum sweep of $D$ then materializes the update\n\\begin{tikzpicture}[>=stealth, font=\\small]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[font=\\footnotesize] at (-1.2,0) {$D$};\n  \\foreach \\i\u002F\\v in {0\u002F0,2\u002F0,3\u002F0,5\u002F0} {\n    \\node[draw, minimum size=8mm, inner sep=1pt] (d\\i) at (\\i*0.95,0) {$\\v$};\n    \\node[font=\\footnotesize] at (\\i*0.95,0.62) {\\i};\n  }\n  \\node[draw=acc, very thick, minimum size=8mm, inner sep=1pt] (d1) at (0.95,0) {$+5$};\n  \\node[font=\\footnotesize] at (0.95,0.62) {1};\n  \\node[draw=acc, very thick, minimum size=8mm, inner sep=1pt] (d4) at (3.8,0) {$-5$};\n  \\node[font=\\footnotesize] at (3.8,0.62) {4};\n  \\node[font=\\footnotesize] at (-1.2,-1.5) {$\\sum$};\n  \\foreach \\i\u002F\\v in {0\u002F0,1\u002F5,2\u002F5,3\u002F5,4\u002F0,5\u002F0} {\n    \\node[draw, minimum size=8mm, inner sep=1pt, fill=acc!8] (s\\i) at (\\i*0.95,-1.5) {$\\v$};\n  }\n  \\node[font=\\footnotesize, acc] at (2.4,-2.2) {prefix sweep $\\Rightarrow$ $+5$ exactly on $a[1\\mathinner{\\ldotp\\ldotp} 3]$};\n\\end{tikzpicture}\n$$\n\nPrefix sums extend to **two\ndimensions** as well: precompute $P[i][j] = \\sum_{i'\u003Ci,\\,j'\u003Cj} a[i'][j']$, and any\naxis-aligned rectangle sum is recovered by inclusion–exclusion with four lookups\nin $O(1)$.\n\n$$\n% caption: 2-D prefix sums: the sum over the shaded rectangle is $P_D-P_B-P_C+P_A$ — subtract the two overhanging strips, then add back corner $A$ which both subtractions removed twice\n\\begin{tikzpicture}[>=stealth, font=\\small]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\useasboundingbox (-0.4,-1.0) rectangle (4.6,4.5);\n  % full grid region with origin top-left convention drawn bottom-up\n  \\draw[black!30] (0,0) rectangle (4,4);\n  % the four prefix corners A (top-left interior), B (top-right), C (bottom-left), D (bottom-right of query)\n  % query rectangle: from x=1.4..3.6, y=0.8..2.8 (shaded)\n  \\fill[acc!15] (1.4,0.8) rectangle (3.6,2.8);\n  \\draw[acc, very thick] (1.4,0.8) rectangle (3.6,2.8);\n  % corner dots labelled A,B,C,D measured from top-left of grid (0,4)\n  \\foreach \\x\u002F\\y\u002F\\lab in {1.4\u002F2.8\u002FA, 3.6\u002F2.8\u002FB, 1.4\u002F0.8\u002FC, 3.6\u002F0.8\u002FD} {\n    \\fill[acc] (\\x,\\y) circle (1.6pt);\n  }\n  \\node[font=\\footnotesize] at (1.15,3.05) {$A$};\n  \\node[font=\\footnotesize] at (3.85,3.05) {$B$};\n  \\node[font=\\footnotesize] at (1.15,0.55) {$C$};\n  \\node[font=\\footnotesize] at (3.85,0.55) {$D$};\n  \\node[acc, font=\\footnotesize] at (2.5,1.8) {query};\n  \\node[font=\\footnotesize, align=center] at (2.0,-0.55)\n    {$\\text{sum}=P_D-P_B-P_C+P_A$};\n\\end{tikzpicture}\n$$\n\n## Takeaways\n\n- These idioms all replace a $\\Theta(n^2)$ pair-or-subarray scan with a single\n  $O(n)$ pass by maintaining an **invariant** as indices advance and patching it\n  in $O(1)$ per step.[^skiena-array]\n- **Two pointers from opposite ends** solve sorted-array pair problems (Two Sum II,\n  Container With Most Water): the move that discards an index provably discards no\n  solution, giving $O(n)$ time, $O(1)$ space.\n- **Fast\u002Fslow pointers** (a trailing **write** behind a **read**) rewrite an array\n  in place, dedup or partition, in $O(n)$ time and $O(1)$ extra space.\n- A **sliding window** expands $r$ and shrinks $l$ to keep a property; since each\n  index enters and leaves the window once, the nested loop is **amortized** $O(n)$.\n- **Prefix sums** $P[i]=\\sum_{j\u003Ci}a[j]$ answer any range sum as $P[r{+}1]-P[l]$ in\n  $O(1)$, and a hash map of prefix frequencies counts subarrays with sum $k$ in\n  $O(n)$, even with negative numbers.\n- The **difference-array** dual turns $m$ range-adds into $O(m+n)$, and prefix\n  sums generalize to **2-D** rectangle queries in $O(1)$.\n\n[^erickson-amortize]: **Erickson**, Ch. — Arrays and Amortization: the amortized argument that a two-pointer window, though nested, does $O(n)$ total work because each index is enqueued and dequeued once.\n[^clrs-invariant]: **CLRS**, Ch. 2 — Getting Started (§2.1): the loop-invariant method (initialization, maintenance, termination) used here to prove each pointer scheme correct.\n[^skiena-array]: **Skiena**, § — Sorting & array techniques: two-pointer and windowing idioms on sorted arrays as the linear-time alternative to a quadratic scan.\n",{"text":9654,"minutes":9655,"time":9656,"words":9657},"8 min read",7.665,459900,1533,{"title":125,"description":9633},[9660,9662,9664],{"book":9614,"ref":9661},"§ — Sorting & array techniques",{"book":9556,"ref":9663},"Ch. — Arrays and Amortization",{"book":9602,"ref":9665},"Ch. 2 — Getting Started","available","01.algorithms\u002F05.sequences\u002F01.two-pointers-and-windows",[128],"4qHPdjg36Aeka9dGxH6UYFxqvjLcKwAFKyvj48Hfe1I",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":9671,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9672,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9673,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9674,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9675,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9676,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9677,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9678,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9679,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9680,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9681,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9682,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9683,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9684,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9685,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9686,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9657,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9687,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9688,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9689,"\u002Falgorithms\u002Fsequences\u002Ftries":9690,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9691,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9692,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9693,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9694,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9695,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9696,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9697,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9698,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9699,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9700,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9701,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9702,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9703,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9704,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9705,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9706,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9707,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9708,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9709,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9710,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9711,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9712,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9713,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9714,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9715,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9716,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9657,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9717,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9718,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9719,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9720,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9702,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9721,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9722,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9683,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9723,"\u002Falgorithms":9724,"\u002Ftheory-of-computation":9725,"\u002Fcomputer-architecture":9725,"\u002Fphysical-computing":9725,"\u002Fdatabases":9725,"\u002Fdeep-learning":9725},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1465,1971,1455,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":9727,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9728,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9729,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9730,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9731,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9732,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9733,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9734,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9735,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9736,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9737,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9738,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9739,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9740,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9741,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9742,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9743,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9744,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9745,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9746,"\u002Falgorithms\u002Fsequences\u002Ftries":9747,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9748,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9749,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9750,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9751,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9752,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9753,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9754,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9755,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9756,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9757,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9758,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9759,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9760,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9761,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9762,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9763,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9764,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9765,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9766,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9767,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9768,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9769,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9770,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9771,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9772,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9773,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9774,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9775,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9776,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9777,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9778,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9779,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9780,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9781,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9782,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9783,"\u002Falgorithms":9784,"\u002Ftheory-of-computation":9787,"\u002Fcomputer-architecture":9790,"\u002Fphysical-computing":9793,"\u002Fdatabases":9796,"\u002Fdeep-learning":9799},{"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":9785,"title":9786,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":9788,"title":9789,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":9791,"title":9792,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":9794,"title":9795,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":9797,"title":9798,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":9800,"title":9801,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781526655559]