[{"data":1,"prerenderedAt":9735},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":374,"course-wordcounts":9603,"ref-card-index":9659},[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":246,"blurb":376,"body":377,"description":9563,"extension":9564,"meta":9565,"module":231,"navigation":9567,"path":247,"practice":9568,"rawbody":9585,"readingTime":9586,"seo":9591,"sources":9592,"status":9599,"stem":9600,"summary":249,"topics":9601,"__hash__":9602},"course\u002F01.algorithms\u002F08.dynamic-programming\u002F03.longest-increasing-subsequence.md","",{"type":378,"value":379,"toc":9552},"minimark",[380,1073,1076,1439,1594,1650,1704,1809,1931,2082,2315,2426,3031,3261,3321,3461,3983,4226,4834,5373,5416,5423,5513,5682,5736,5813,5818,5847,5943,6370,6555,6614,6853,6952,7211,7215,7218,7551,8035,8134,8285,8731,8910,8923,8927,9417,9548],[381,382,383,384,388,389,393,394,437,438,441,442,652,653,860,861,864,865,868,869,981,982,1030,1031,1047,1048,1063,1064],"p",{},"The previous lesson aligned ",[385,386,387],"em",{},"two"," sequences. Now we ask a question about a\n",[390,391,392],"strong",{},"single"," one. Given an array ",[395,396,399],"span",{"className":397},[398],"katex",[395,400,404],{"className":401,"ariaHidden":403},[402],"katex-html","true",[395,405,408,413,419,424,428,432],{"className":406},[407],"base",[395,409],{"className":410,"style":412},[411],"strut","height:1em;vertical-align:-0.25em;",[395,414,418],{"className":415},[416,417],"mord","mathnormal","a",[395,420,423],{"className":421},[422],"mopen","[",[395,425,427],{"className":426},[416],"1..",[395,429,431],{"className":430},[416,417],"n",[395,433,436],{"className":434},[435],"mclose","]"," of numbers, a ",[390,439,440],{},"longest increasing\nsubsequence"," (LIS) is a longest set of positions ",[395,443,445],{"className":444},[398],[395,446,448,526,582,603],{"className":447,"ariaHidden":403},[402],[395,449,451,455,513,518,523],{"className":450},[407],[395,452],{"className":453,"style":454},[411],"height:0.8095em;vertical-align:-0.15em;",[395,456,458,462],{"className":457},[416],[395,459,461],{"className":460},[416,417],"i",[395,463,466],{"className":464},[465],"msupsub",[395,467,471,504],{"className":468},[469,470],"vlist-t","vlist-t2",[395,472,475,499],{"className":473},[474],"vlist-r",[395,476,480],{"className":477,"style":479},[478],"vlist","height:0.3011em;",[395,481,483,488],{"style":482},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[395,484],{"className":485,"style":487},[486],"pstrut","height:2.7em;",[395,489,495],{"className":490},[491,492,493,494],"sizing","reset-size6","size3","mtight",[395,496,498],{"className":497},[416,494],"1",[395,500,503],{"className":501},[502],"vlist-s","​",[395,505,507],{"className":506},[474],[395,508,511],{"className":509,"style":510},[478],"height:0.15em;",[395,512],{},[395,514],{"className":515,"style":517},[516],"mspace","margin-right:0.2778em;",[395,519,522],{"className":520},[521],"mrel","\u003C",[395,524],{"className":525,"style":517},[516],[395,527,529,532,573,576,579],{"className":528},[407],[395,530],{"className":531,"style":454},[411],[395,533,535,538],{"className":534},[416],[395,536,461],{"className":537},[416,417],[395,539,541],{"className":540},[465],[395,542,544,565],{"className":543},[469,470],[395,545,547,562],{"className":546},[474],[395,548,550],{"className":549,"style":479},[478],[395,551,552,555],{"style":482},[395,553],{"className":554,"style":487},[486],[395,556,558],{"className":557},[491,492,493,494],[395,559,561],{"className":560},[416,494],"2",[395,563,503],{"className":564},[502],[395,566,568],{"className":567},[474],[395,569,571],{"className":570,"style":510},[478],[395,572],{},[395,574],{"className":575,"style":517},[516],[395,577,522],{"className":578},[521],[395,580],{"className":581,"style":517},[516],[395,583,585,589,594,597,600],{"className":584},[407],[395,586],{"className":587,"style":588},[411],"height:0.5782em;vertical-align:-0.0391em;",[395,590,593],{"className":591},[592],"minner","⋯",[395,595],{"className":596,"style":517},[516],[395,598,522],{"className":599},[521],[395,601],{"className":602,"style":517},[516],[395,604,606,609],{"className":605},[407],[395,607],{"className":608,"style":454},[411],[395,610,612,615],{"className":611},[416],[395,613,461],{"className":614},[416,417],[395,616,618],{"className":617},[465],[395,619,621,644],{"className":620},[469,470],[395,622,624,641],{"className":623},[474],[395,625,628],{"className":626,"style":627},[478],"height:0.3361em;",[395,629,630,633],{"style":482},[395,631],{"className":632,"style":487},[486],[395,634,636],{"className":635},[491,492,493,494],[395,637,640],{"className":638,"style":639},[416,417,494],"margin-right:0.0315em;","k",[395,642,503],{"className":643},[502],[395,645,647],{"className":646},[474],[395,648,650],{"className":649,"style":510},[478],[395,651],{}," whose\nvalues strictly increase, ",[395,654,656],{"className":655},[398],[395,657,659,723,787,805],{"className":658,"ariaHidden":403},[402],[395,660,662,665,668,671,711,714,717,720],{"className":661},[407],[395,663],{"className":664,"style":412},[411],[395,666,418],{"className":667},[416,417],[395,669,423],{"className":670},[422],[395,672,674,677],{"className":673},[416],[395,675,461],{"className":676},[416,417],[395,678,680],{"className":679},[465],[395,681,683,703],{"className":682},[469,470],[395,684,686,700],{"className":685},[474],[395,687,689],{"className":688,"style":479},[478],[395,690,691,694],{"style":482},[395,692],{"className":693,"style":487},[486],[395,695,697],{"className":696},[491,492,493,494],[395,698,498],{"className":699},[416,494],[395,701,503],{"className":702},[502],[395,704,706],{"className":705},[474],[395,707,709],{"className":708,"style":510},[478],[395,710],{},[395,712,436],{"className":713},[435],[395,715],{"className":716,"style":517},[516],[395,718,522],{"className":719},[521],[395,721],{"className":722,"style":517},[516],[395,724,726,729,732,735,775,778,781,784],{"className":725},[407],[395,727],{"className":728,"style":412},[411],[395,730,418],{"className":731},[416,417],[395,733,423],{"className":734},[422],[395,736,738,741],{"className":737},[416],[395,739,461],{"className":740},[416,417],[395,742,744],{"className":743},[465],[395,745,747,767],{"className":746},[469,470],[395,748,750,764],{"className":749},[474],[395,751,753],{"className":752,"style":479},[478],[395,754,755,758],{"style":482},[395,756],{"className":757,"style":487},[486],[395,759,761],{"className":760},[491,492,493,494],[395,762,561],{"className":763},[416,494],[395,765,503],{"className":766},[502],[395,768,770],{"className":769},[474],[395,771,773],{"className":772,"style":510},[478],[395,774],{},[395,776,436],{"className":777},[435],[395,779],{"className":780,"style":517},[516],[395,782,522],{"className":783},[521],[395,785],{"className":786,"style":517},[516],[395,788,790,793,796,799,802],{"className":789},[407],[395,791],{"className":792,"style":588},[411],[395,794,593],{"className":795},[592],[395,797],{"className":798,"style":517},[516],[395,800,522],{"className":801},[521],[395,803],{"className":804,"style":517},[516],[395,806,808,811,814,817,857],{"className":807},[407],[395,809],{"className":810,"style":412},[411],[395,812,418],{"className":813},[416,417],[395,815,423],{"className":816},[422],[395,818,820,823],{"className":819},[416],[395,821,461],{"className":822},[416,417],[395,824,826],{"className":825},[465],[395,827,829,849],{"className":828},[469,470],[395,830,832,846],{"className":831},[474],[395,833,835],{"className":834,"style":627},[478],[395,836,837,840],{"style":482},[395,838],{"className":839,"style":487},[486],[395,841,843],{"className":842},[491,492,493,494],[395,844,640],{"className":845,"style":639},[416,417,494],[395,847,503],{"className":848},[502],[395,850,852],{"className":851},[474],[395,853,855],{"className":854,"style":510},[478],[395,856],{},[395,858,436],{"className":859},[435],". As with LCS, the\nword is ",[385,862,863],{},"subsequence",", not ",[385,866,867],{},"substring",": the chosen elements keep their original\norder but need not be contiguous. In ",[395,870,872],{"className":871},[398],[395,873,875,895],{"className":874,"ariaHidden":403},[402],[395,876,878,882,885,888,892],{"className":877},[407],[395,879],{"className":880,"style":881},[411],"height:0.4306em;",[395,883,418],{"className":884},[416,417],[395,886],{"className":887,"style":517},[516],[395,889,891],{"className":890},[521],"=",[395,893],{"className":894,"style":517},[516],[395,896,898,901,904,908,913,917,920,923,926,930,933,936,939,942,945,949,952,955,959,962,965,968,971,974,978],{"className":897},[407],[395,899],{"className":900,"style":412},[411],[395,902,423],{"className":903},[422],[395,905,907],{"className":906},[416],"3",[395,909,912],{"className":910},[911],"mpunct",",",[395,914],{"className":915,"style":916},[516],"margin-right:0.1667em;",[395,918,498],{"className":919},[416],[395,921,912],{"className":922},[911],[395,924],{"className":925,"style":916},[516],[395,927,929],{"className":928},[416],"4",[395,931,912],{"className":932},[911],[395,934],{"className":935,"style":916},[516],[395,937,498],{"className":938},[416],[395,940,912],{"className":941},[911],[395,943],{"className":944,"style":916},[516],[395,946,948],{"className":947},[416],"5",[395,950,912],{"className":951},[911],[395,953],{"className":954,"style":916},[516],[395,956,958],{"className":957},[416],"9",[395,960,912],{"className":961},[911],[395,963],{"className":964,"style":916},[516],[395,966,561],{"className":967},[416],[395,969,912],{"className":970},[911],[395,972],{"className":973,"style":916},[516],[395,975,977],{"className":976},[416],"6",[395,979,436],{"className":980},[435]," the\nsubsequence ",[395,983,985],{"className":984},[398],[395,986,988],{"className":987,"ariaHidden":403},[402],[395,989,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027],{"className":990},[407],[395,992],{"className":993,"style":412},[411],[395,995,423],{"className":996},[422],[395,998,907],{"className":999},[416],[395,1001,912],{"className":1002},[911],[395,1004],{"className":1005,"style":916},[516],[395,1007,929],{"className":1008},[416],[395,1010,912],{"className":1011},[911],[395,1013],{"className":1014,"style":916},[516],[395,1016,948],{"className":1017},[416],[395,1019,912],{"className":1020},[911],[395,1022],{"className":1023,"style":916},[516],[395,1025,958],{"className":1026},[416],[395,1028,436],{"className":1029},[435]," increases and has length ",[395,1032,1034],{"className":1033},[398],[395,1035,1037],{"className":1036,"ariaHidden":403},[402],[395,1038,1040,1044],{"className":1039},[407],[395,1041],{"className":1042,"style":1043},[411],"height:0.6444em;",[395,1045,929],{"className":1046},[416],", and no longer one exists,\nso the LIS length is ",[395,1049,1051],{"className":1050},[398],[395,1052,1054],{"className":1053,"ariaHidden":403},[402],[395,1055,1057,1060],{"className":1056},[407],[395,1058],{"className":1059,"style":1043},[411],[395,1061,929],{"className":1062},[416],".",[1065,1066,1067],"sup",{},[418,1068,498],{"href":1069,"ariaDescribedBy":1070,"dataFootnoteRef":376,"id":1072},"#user-content-fn-skiena-lis",[1071],"footnote-label","user-content-fnref-skiena-lis",[381,1074,1075],{},"Plot the values against their positions and an LIS is a longest chain of points\nthat climbs as it moves right, never stepping down:",[1077,1078,1082,1270],"figure",{"className":1079},[1080,1081],"tikz-figure","tikz-diagram-rendered",[1083,1084,1089],"svg",{"xmlns":1085,"width":1086,"height":1087,"viewBox":1088},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","313.689","166.475","-75 -75 235.267 124.856",[1090,1091,1094,1126,1151,1156,1162,1167,1172,1177,1183,1188,1193,1198,1208,1217,1226,1234,1243,1252,1261],"g",{"stroke":1092,"style":1093},"currentColor","stroke-miterlimit:10;stroke-width:.4",[1090,1095,1097,1102,1105],{"fill":1096,"stroke":1096},"var(--tk-line)",[1098,1099],"path",{"fill":1100,"d":1101},"none","M-52.708 39.793h170.202",[1098,1103],{"d":1104},"m120 39.793-3.585-1.351 1.179 1.35-1.179 1.351Z",[1090,1106,1107],{"fill":1092,"stroke":1092},[1090,1108,1111,1120],{"stroke":1100,"fontFamily":1109,"fontSize":1110},"cmr8","8",[1090,1112,1114],{"transform":1113},"translate(170.835 1.905)",[1098,1115],{"d":1116,"fill":1092,"stroke":1092,"className":1117,"style":1119},"M-44.612 41.344L-46.467 41.344L-46.467 41.051Q-46.198 41.051-46.030 41.006Q-45.862 40.961-45.862 40.785L-45.862 36.961Q-45.862 36.754-46.018 36.701Q-46.174 36.648-46.467 36.648L-46.467 36.352L-45.245 36.266L-45.245 36.730Q-45.014 36.508-44.700 36.387Q-44.385 36.266-44.045 36.266Q-43.573 36.266-43.169 36.512Q-42.764 36.758-42.532 37.174Q-42.299 37.590-42.299 38.066Q-42.299 38.441-42.448 38.770Q-42.596 39.098-42.866 39.350Q-43.135 39.602-43.479 39.736Q-43.823 39.871-44.182 39.871Q-44.471 39.871-44.743 39.750Q-45.014 39.629-45.221 39.418L-45.221 40.785Q-45.221 40.961-45.053 41.006Q-44.885 41.051-44.612 41.051L-44.612 41.344M-45.221 37.129L-45.221 38.969Q-45.069 39.258-44.807 39.438Q-44.545 39.617-44.237 39.617Q-43.952 39.617-43.729 39.479Q-43.506 39.340-43.354 39.109Q-43.202 38.879-43.124 38.607Q-43.045 38.336-43.045 38.066Q-43.045 37.734-43.170 37.377Q-43.295 37.020-43.544 36.783Q-43.792 36.547-44.139 36.547Q-44.463 36.547-44.758 36.703Q-45.053 36.859-45.221 37.129",[1118],"tikz-text","stroke-width:0.240",[1090,1121,1122],{"transform":1113},[1098,1123],{"d":1124,"fill":1092,"stroke":1092,"className":1125,"style":1119},"M-41.536 38.098Q-41.536 37.594-41.280 37.162Q-41.024 36.730-40.588 36.479Q-40.153 36.227-39.653 36.227Q-39.266 36.227-38.924 36.371Q-38.583 36.516-38.321 36.777Q-38.059 37.039-37.917 37.375Q-37.774 37.711-37.774 38.098Q-37.774 38.590-38.038 39Q-38.301 39.410-38.731 39.641Q-39.161 39.871-39.653 39.871Q-40.145 39.871-40.579 39.639Q-41.012 39.406-41.274 38.998Q-41.536 38.590-41.536 38.098M-39.653 39.594Q-39.196 39.594-38.944 39.371Q-38.692 39.148-38.604 38.797Q-38.516 38.445-38.516 38Q-38.516 37.570-38.610 37.232Q-38.704 36.895-38.958 36.688Q-39.212 36.480-39.653 36.480Q-40.301 36.480-40.545 36.897Q-40.790 37.313-40.790 38Q-40.790 38.445-40.702 38.797Q-40.614 39.148-40.362 39.371Q-40.110 39.594-39.653 39.594M-37.247 39.785L-37.247 38.563Q-37.247 38.535-37.215 38.504Q-37.184 38.473-37.161 38.473L-37.055 38.473Q-36.985 38.473-36.969 38.535Q-36.907 38.855-36.768 39.096Q-36.629 39.336-36.397 39.477Q-36.165 39.617-35.856 39.617Q-35.618 39.617-35.409 39.557Q-35.200 39.496-35.063 39.348Q-34.926 39.199-34.926 38.953Q-34.926 38.699-35.137 38.533Q-35.348 38.367-35.618 38.313L-36.239 38.199Q-36.645 38.121-36.946 37.865Q-37.247 37.609-37.247 37.234Q-37.247 36.867-37.045 36.645Q-36.844 36.422-36.520 36.324Q-36.196 36.227-35.856 36.227Q-35.391 36.227-35.094 36.434L-34.872 36.250Q-34.848 36.227-34.817 36.227L-34.766 36.227Q-34.735 36.227-34.708 36.254Q-34.680 36.281-34.680 36.313L-34.680 37.297Q-34.680 37.328-34.706 37.357Q-34.731 37.387-34.766 37.387L-34.872 37.387Q-34.907 37.387-34.934 37.359Q-34.962 37.332-34.962 37.297Q-34.962 36.898-35.213 36.678Q-35.465 36.457-35.864 36.457Q-36.219 36.457-36.503 36.580Q-36.786 36.703-36.786 37.008Q-36.786 37.227-36.585 37.359Q-36.383 37.492-36.137 37.535L-35.512 37.648Q-35.083 37.738-34.774 38.035Q-34.465 38.332-34.465 38.746Q-34.465 39.316-34.864 39.594Q-35.262 39.871-35.856 39.871Q-36.407 39.871-36.758 39.535L-37.055 39.848Q-37.079 39.871-37.114 39.871L-37.161 39.871Q-37.184 39.871-37.215 39.840Q-37.247 39.809-37.247 39.785M-32.079 39.793L-33.856 39.793L-33.856 39.496Q-33.583 39.496-33.415 39.449Q-33.247 39.402-33.247 39.234L-33.247 37.098Q-33.247 36.883-33.303 36.787Q-33.360 36.691-33.473 36.670Q-33.587 36.648-33.833 36.648L-33.833 36.352L-32.633 36.266L-32.633 39.234Q-32.633 39.402-32.487 39.449Q-32.340 39.496-32.079 39.496L-32.079 39.793M-33.520 34.871Q-33.520 34.680-33.385 34.549Q-33.251 34.418-33.055 34.418Q-32.934 34.418-32.831 34.480Q-32.727 34.543-32.665 34.647Q-32.602 34.750-32.602 34.871Q-32.602 35.066-32.733 35.201Q-32.864 35.336-33.055 35.336Q-33.254 35.336-33.387 35.203Q-33.520 35.070-33.520 34.871M-30.954 38.832L-30.954 36.641L-31.657 36.641L-31.657 36.387Q-31.301 36.387-31.059 36.154Q-30.817 35.922-30.706 35.574Q-30.594 35.227-30.594 34.871L-30.313 34.871L-30.313 36.344L-29.137 36.344L-29.137 36.641L-30.313 36.641L-30.313 38.816Q-30.313 39.137-30.194 39.365Q-30.075 39.594-29.794 39.594Q-29.614 39.594-29.497 39.471Q-29.379 39.348-29.327 39.168Q-29.274 38.988-29.274 38.816L-29.274 38.344L-28.993 38.344L-28.993 38.832Q-28.993 39.086-29.098 39.326Q-29.204 39.566-29.401 39.719Q-29.598 39.871-29.856 39.871Q-30.172 39.871-30.424 39.748Q-30.676 39.625-30.815 39.391Q-30.954 39.156-30.954 38.832M-26.415 39.793L-28.192 39.793L-28.192 39.496Q-27.919 39.496-27.751 39.449Q-27.583 39.402-27.583 39.234L-27.583 37.098Q-27.583 36.883-27.639 36.787Q-27.696 36.691-27.809 36.670Q-27.922 36.648-28.169 36.648L-28.169 36.352L-26.969 36.266L-26.969 39.234Q-26.969 39.402-26.823 39.449Q-26.676 39.496-26.415 39.496L-26.415 39.793M-27.856 34.871Q-27.856 34.680-27.721 34.549Q-27.587 34.418-27.391 34.418Q-27.270 34.418-27.167 34.480Q-27.063 34.543-27.001 34.647Q-26.938 34.750-26.938 34.871Q-26.938 35.066-27.069 35.201Q-27.200 35.336-27.391 35.336Q-27.590 35.336-27.723 35.203Q-27.856 35.070-27.856 34.871M-25.915 38.098Q-25.915 37.594-25.659 37.162Q-25.403 36.730-24.967 36.479Q-24.532 36.227-24.032 36.227Q-23.645 36.227-23.303 36.371Q-22.962 36.516-22.700 36.777Q-22.438 37.039-22.295 37.375Q-22.153 37.711-22.153 38.098Q-22.153 38.590-22.417 39Q-22.680 39.410-23.110 39.641Q-23.540 39.871-24.032 39.871Q-24.524 39.871-24.958 39.639Q-25.391 39.406-25.653 38.998Q-25.915 38.590-25.915 38.098M-24.032 39.594Q-23.575 39.594-23.323 39.371Q-23.071 39.148-22.983 38.797Q-22.895 38.445-22.895 38Q-22.895 37.570-22.989 37.232Q-23.083 36.895-23.337 36.688Q-23.590 36.480-24.032 36.480Q-24.680 36.480-24.924 36.897Q-25.169 37.313-25.169 38Q-25.169 38.445-25.081 38.797Q-24.993 39.148-24.741 39.371Q-24.489 39.594-24.032 39.594M-19.739 39.793L-21.594 39.793L-21.594 39.496Q-21.321 39.496-21.153 39.449Q-20.985 39.402-20.985 39.234L-20.985 37.098Q-20.985 36.883-21.047 36.787Q-21.110 36.691-21.229 36.670Q-21.348 36.648-21.594 36.648L-21.594 36.352L-20.403 36.266L-20.403 37Q-20.290 36.785-20.096 36.617Q-19.903 36.449-19.665 36.357Q-19.426 36.266-19.172 36.266Q-18.004 36.266-18.004 37.344L-18.004 39.234Q-18.004 39.402-17.835 39.449Q-17.665 39.496-17.395 39.496L-17.395 39.793L-19.251 39.793L-19.251 39.496Q-18.977 39.496-18.809 39.449Q-18.641 39.402-18.641 39.234L-18.641 37.359Q-18.641 36.977-18.762 36.748Q-18.883 36.520-19.235 36.520Q-19.547 36.520-19.801 36.682Q-20.055 36.844-20.202 37.113Q-20.348 37.383-20.348 37.680L-20.348 39.234Q-20.348 39.402-20.178 39.449Q-20.008 39.496-19.739 39.496",[1118],[1090,1127,1128,1131,1134],{"fill":1096,"stroke":1096},[1098,1129],{"fill":1100,"d":1130},"M-52.708 39.793v-96.566",[1098,1132],{"d":1133},"m-52.708-59.279-1.35 3.585 1.35-1.18 1.351 1.18Z",[1090,1135,1136],{"fill":1092,"stroke":1092},[1090,1137,1138,1145],{"stroke":1100,"fontFamily":1109,"fontSize":1110},[1090,1139,1141],{"transform":1140},"translate(-15.538 -103.174)",[1098,1142],{"d":1143,"fill":1092,"stroke":1092,"className":1144,"style":1119},"M-44.694 39.762L-45.917 36.906Q-45.999 36.730-46.143 36.686Q-46.288 36.641-46.557 36.641L-46.557 36.344L-44.846 36.344L-44.846 36.641Q-45.268 36.641-45.268 36.824Q-45.268 36.859-45.253 36.906L-44.307 39.098L-43.467 37.121Q-43.428 37.043-43.428 36.953Q-43.428 36.813-43.534 36.727Q-43.639 36.641-43.780 36.641L-43.780 36.344L-42.428 36.344L-42.428 36.641Q-42.952 36.641-43.167 37.121L-44.292 39.762Q-44.354 39.871-44.460 39.871L-44.526 39.871Q-44.639 39.871-44.694 39.762",[1118],[1090,1146,1147],{"transform":1140},[1098,1148],{"d":1149,"fill":1092,"stroke":1092,"className":1150,"style":1119},"M-42.383 38.961Q-42.383 38.477-41.981 38.182Q-41.578 37.887-41.028 37.768Q-40.477 37.648-39.985 37.648L-39.985 37.359Q-39.985 37.133-40.100 36.926Q-40.215 36.719-40.412 36.600Q-40.610 36.480-40.840 36.480Q-41.266 36.480-41.551 36.586Q-41.481 36.613-41.434 36.668Q-41.387 36.723-41.362 36.793Q-41.336 36.863-41.336 36.938Q-41.336 37.043-41.387 37.135Q-41.438 37.227-41.530 37.277Q-41.621 37.328-41.727 37.328Q-41.832 37.328-41.924 37.277Q-42.016 37.227-42.067 37.135Q-42.117 37.043-42.117 36.938Q-42.117 36.520-41.729 36.373Q-41.340 36.227-40.840 36.227Q-40.508 36.227-40.155 36.357Q-39.801 36.488-39.573 36.742Q-39.344 36.996-39.344 37.344L-39.344 39.145Q-39.344 39.277-39.272 39.387Q-39.199 39.496-39.071 39.496Q-38.946 39.496-38.877 39.391Q-38.809 39.285-38.809 39.145L-38.809 38.633L-38.528 38.633L-38.528 39.145Q-38.528 39.348-38.645 39.506Q-38.762 39.664-38.944 39.748Q-39.125 39.832-39.328 39.832Q-39.559 39.832-39.711 39.660Q-39.864 39.488-39.895 39.258Q-40.055 39.539-40.364 39.705Q-40.672 39.871-41.024 39.871Q-41.535 39.871-41.959 39.648Q-42.383 39.426-42.383 38.961M-41.696 38.961Q-41.696 39.246-41.469 39.432Q-41.242 39.617-40.949 39.617Q-40.703 39.617-40.479 39.500Q-40.254 39.383-40.119 39.180Q-39.985 38.977-39.985 38.723L-39.985 37.891Q-40.250 37.891-40.535 37.945Q-40.821 38-41.092 38.129Q-41.364 38.258-41.530 38.465Q-41.696 38.672-41.696 38.961M-36.321 39.793L-38.153 39.793L-38.153 39.496Q-37.879 39.496-37.711 39.449Q-37.543 39.402-37.543 39.234L-37.543 35.074Q-37.543 34.859-37.606 34.764Q-37.668 34.668-37.787 34.647Q-37.907 34.625-38.153 34.625L-38.153 34.328L-36.930 34.242L-36.930 39.234Q-36.930 39.402-36.762 39.449Q-36.594 39.496-36.321 39.496L-36.321 39.793M-35.192 38.840L-35.192 37.098Q-35.192 36.883-35.254 36.787Q-35.317 36.691-35.436 36.670Q-35.555 36.648-35.801 36.648L-35.801 36.352L-34.555 36.266L-34.555 38.816L-34.555 38.840Q-34.555 39.152-34.500 39.314Q-34.446 39.477-34.295 39.547Q-34.145 39.617-33.824 39.617Q-33.395 39.617-33.121 39.279Q-32.848 38.941-32.848 38.496L-32.848 37.098Q-32.848 36.883-32.910 36.787Q-32.973 36.691-33.092 36.670Q-33.211 36.648-33.457 36.648L-33.457 36.352L-32.211 36.266L-32.211 39.051Q-32.211 39.262-32.149 39.357Q-32.086 39.453-31.967 39.475Q-31.848 39.496-31.602 39.496L-31.602 39.793L-32.824 39.871L-32.824 39.250Q-32.992 39.539-33.274 39.705Q-33.555 39.871-33.875 39.871Q-35.192 39.871-35.192 38.840M-31.157 38.039Q-31.157 37.559-30.924 37.143Q-30.692 36.727-30.282 36.477Q-29.871 36.227-29.395 36.227Q-28.664 36.227-28.266 36.668Q-27.867 37.109-27.867 37.840Q-27.867 37.945-27.961 37.969L-30.410 37.969L-30.410 38.039Q-30.410 38.449-30.289 38.805Q-30.168 39.160-29.897 39.377Q-29.625 39.594-29.196 39.594Q-28.832 39.594-28.535 39.365Q-28.239 39.137-28.137 38.785Q-28.129 38.738-28.043 38.723L-27.961 38.723Q-27.867 38.750-27.867 38.832Q-27.867 38.840-27.875 38.871Q-27.938 39.098-28.076 39.281Q-28.215 39.465-28.407 39.598Q-28.598 39.730-28.817 39.801Q-29.035 39.871-29.274 39.871Q-29.645 39.871-29.983 39.734Q-30.321 39.598-30.588 39.346Q-30.856 39.094-31.006 38.754Q-31.157 38.414-31.157 38.039M-30.403 37.730L-28.442 37.730Q-28.442 37.426-28.543 37.135Q-28.645 36.844-28.862 36.662Q-29.078 36.480-29.395 36.480Q-29.696 36.480-29.926 36.668Q-30.157 36.855-30.280 37.147Q-30.403 37.438-30.403 37.730",[1118],[1098,1152],{"fill":1100,"stroke":1153,"d":1154,"style":1155},"var(--tk-accent)","m-26.816 10.771 39.834-9.674 39.834-9.674 19.917-38.695","stroke-width:1.2",[1090,1157,1159],{"fill":1158},"var(--tk-bg)",[1098,1160],{"d":1161},"M-4.899 30.119a2 2 0 1 0-4 0 2 2 0 0 0 4 0Zm-2 0",[1090,1163,1164],{"fill":1158},[1098,1165],{"d":1166},"M34.935 30.119a2 2 0 1 0-4 0 2 2 0 0 0 4 0Zm-2 0",[1090,1168,1169],{"fill":1158},[1098,1170],{"d":1171},"M94.686 20.445a2 2 0 1 0-4 0 2 2 0 0 0 4 0Zm-2 0",[1090,1173,1174],{"fill":1158},[1098,1175],{"d":1176},"M114.603-18.25a2 2 0 1 0-4 0 2 2 0 0 0 4 0Zm-2 0",[1090,1178,1180],{"fill":1179,"stroke":1153,"style":1155},"var(--tk-soft-accent)",[1098,1181],{"d":1182},"M-24.066 10.771a2.75 2.75 0 1 0-5.5 0 2.75 2.75 0 0 0 5.5 0Zm-2.75 0",[1090,1184,1185],{"fill":1179,"stroke":1153,"style":1155},[1098,1186],{"d":1187},"M15.768 1.097a2.75 2.75 0 1 0-5.5 0 2.75 2.75 0 0 0 5.5 0Zm-2.75 0",[1090,1189,1190],{"fill":1179,"stroke":1153,"style":1155},[1098,1191],{"d":1192},"M55.602-8.577a2.75 2.75 0 1 0-5.5 0 2.75 2.75 0 0 0 5.5 0Zm-2.75 0",[1090,1194,1195],{"fill":1179,"stroke":1153,"style":1155},[1098,1196],{"d":1197},"M75.519-47.272a2.75 2.75 0 1 0-5.5 0 2.75 2.75 0 0 0 5.5 0Zm-2.75 0",[1090,1199,1200],{"fill":1096,"stroke":1096},[1090,1201,1203],{"transform":1202},"translate(17.924 -34.555)",[1098,1204],{"d":1205,"fill":1096,"stroke":1096,"className":1206,"style":1207},"M-45.937 39.246Q-45.817 39.403-45.626 39.502Q-45.434 39.602-45.219 39.641Q-45.004 39.680-44.781 39.680Q-44.484 39.680-44.289 39.525Q-44.094 39.369-44.004 39.115Q-43.913 38.860-43.913 38.576Q-43.913 38.282-44.005 38.031Q-44.098 37.780-44.296 37.624Q-44.494 37.469-44.788 37.469L-45.304 37.469Q-45.332 37.469-45.357 37.443Q-45.383 37.418-45.383 37.394L-45.383 37.322Q-45.383 37.291-45.357 37.269Q-45.332 37.247-45.304 37.247L-44.863 37.216Q-44.501 37.216-44.281 36.859Q-44.060 36.501-44.060 36.112Q-44.060 35.784-44.255 35.580Q-44.450 35.377-44.781 35.377Q-45.068 35.377-45.321 35.461Q-45.574 35.544-45.738 35.732Q-45.591 35.732-45.491 35.847Q-45.390 35.961-45.390 36.112Q-45.390 36.262-45.496 36.372Q-45.602 36.481-45.759 36.481Q-45.920 36.481-46.029 36.372Q-46.138 36.262-46.138 36.112Q-46.138 35.787-45.930 35.568Q-45.721 35.350-45.405 35.247Q-45.089 35.145-44.781 35.145Q-44.463 35.145-44.135 35.249Q-43.807 35.353-43.580 35.575Q-43.353 35.797-43.353 36.112Q-43.353 36.546-43.640 36.871Q-43.927 37.195-44.361 37.342Q-44.050 37.407-43.770 37.573Q-43.489 37.739-43.312 37.997Q-43.134 38.255-43.134 38.576Q-43.134 38.986-43.378 39.296Q-43.623 39.605-44.004 39.769Q-44.385 39.933-44.781 39.933Q-45.150 39.933-45.508 39.820Q-45.865 39.708-46.109 39.458Q-46.354 39.209-46.354 38.839Q-46.354 38.668-46.237 38.556Q-46.121 38.443-45.950 38.443Q-45.841 38.443-45.750 38.494Q-45.660 38.545-45.605 38.638Q-45.550 38.730-45.550 38.839Q-45.550 39.007-45.663 39.126Q-45.776 39.246-45.937 39.246",[1118],"stroke-width:0.210",[1090,1209,1210],{"fill":1096,"stroke":1096},[1090,1211,1213],{"transform":1212},"translate(37.84 -15.207)",[1098,1214],{"d":1215,"fill":1096,"stroke":1096,"className":1216,"style":1207},"M-43.407 39.793L-45.937 39.793L-45.937 39.513Q-44.969 39.513-44.969 39.304L-44.969 35.685Q-45.362 35.873-45.984 35.873L-45.984 35.592Q-45.567 35.592-45.203 35.491Q-44.839 35.391-44.583 35.145L-44.457 35.145Q-44.392 35.162-44.375 35.230L-44.375 39.304Q-44.375 39.513-43.407 39.513",[1118],[1090,1218,1219],{"fill":1096,"stroke":1096},[1090,1220,1222],{"transform":1221},"translate(57.758 -44.229)",[1098,1223],{"d":1224,"fill":1096,"stroke":1096,"className":1225,"style":1207},"M-44.416 38.645L-46.460 38.645L-46.460 38.364L-44.129 35.192Q-44.094 35.145-44.029 35.145L-43.893 35.145Q-43.848 35.145-43.821 35.172Q-43.794 35.199-43.794 35.244L-43.794 38.364L-43.031 38.364L-43.031 38.645L-43.794 38.645L-43.794 39.304Q-43.794 39.513-43.038 39.513L-43.038 39.793L-45.171 39.793L-45.171 39.513Q-44.416 39.513-44.416 39.304L-44.416 38.645M-44.368 35.920L-46.159 38.364L-44.368 38.364",[1118],[1090,1227,1228],{"fill":1096,"stroke":1096},[1090,1229,1231],{"transform":1230},"translate(77.675 -15.207)",[1098,1232],{"d":1215,"fill":1096,"stroke":1096,"className":1233,"style":1207},[1118],[1090,1235,1236],{"fill":1096,"stroke":1096},[1090,1237,1239],{"transform":1238},"translate(97.592 -53.903)",[1098,1240],{"d":1241,"fill":1096,"stroke":1096,"className":1242,"style":1207},"M-45.926 39.031L-45.957 39.031Q-45.820 39.328-45.523 39.504Q-45.226 39.680-44.898 39.680Q-44.535 39.680-44.308 39.502Q-44.081 39.325-43.987 39.036Q-43.893 38.747-43.893 38.385Q-43.893 38.070-43.947 37.785Q-44.002 37.500-44.175 37.294Q-44.347 37.089-44.662 37.089Q-44.935 37.089-45.118 37.156Q-45.301 37.223-45.405 37.312Q-45.509 37.400-45.605 37.510Q-45.701 37.619-45.745 37.629L-45.824 37.629Q-45.896 37.612-45.913 37.541L-45.913 35.223Q-45.913 35.189-45.889 35.167Q-45.865 35.145-45.831 35.145L-45.803 35.145Q-45.516 35.261-45.248 35.315Q-44.980 35.370-44.703 35.370Q-44.426 35.370-44.156 35.315Q-43.886 35.261-43.606 35.145L-43.582 35.145Q-43.547 35.145-43.524 35.168Q-43.500 35.192-43.500 35.223L-43.500 35.292Q-43.500 35.319-43.520 35.339Q-43.794 35.654-44.178 35.830Q-44.563 36.006-44.976 36.006Q-45.315 36.006-45.632 35.920L-45.632 37.202Q-45.236 36.867-44.662 36.867Q-44.258 36.867-43.922 37.077Q-43.585 37.288-43.392 37.640Q-43.199 37.992-43.199 38.392Q-43.199 38.723-43.339 39.009Q-43.479 39.294-43.723 39.504Q-43.968 39.714-44.270 39.824Q-44.573 39.933-44.891 39.933Q-45.250 39.933-45.576 39.769Q-45.902 39.605-46.097 39.313Q-46.292 39.021-46.292 38.658Q-46.292 38.508-46.186 38.402Q-46.080 38.296-45.926 38.296Q-45.773 38.296-45.668 38.400Q-45.564 38.504-45.564 38.658Q-45.564 38.815-45.668 38.923Q-45.773 39.031-45.926 39.031",[1118],[1090,1244,1245],{"fill":1096,"stroke":1096},[1090,1246,1248],{"transform":1247},"translate(117.508 -92.598)",[1098,1249],{"d":1250,"fill":1096,"stroke":1096,"className":1251,"style":1207},"M-45.759 39.479Q-45.639 39.595-45.462 39.637Q-45.284 39.680-45.068 39.680Q-44.829 39.680-44.619 39.571Q-44.409 39.461-44.255 39.279Q-44.101 39.096-44.002 38.863Q-43.835 38.436-43.835 37.616Q-43.985 37.910-44.248 38.089Q-44.511 38.269-44.829 38.269Q-45.263 38.269-45.610 38.060Q-45.957 37.852-46.155 37.491Q-46.354 37.130-46.354 36.707Q-46.354 36.372-46.224 36.083Q-46.094 35.794-45.863 35.580Q-45.632 35.367-45.333 35.256Q-45.034 35.145-44.703 35.145Q-43.845 35.145-43.489 35.859Q-43.134 36.573-43.134 37.530Q-43.134 37.947-43.262 38.375Q-43.390 38.802-43.647 39.157Q-43.903 39.513-44.265 39.723Q-44.628 39.933-45.068 39.933Q-45.523 39.933-45.841 39.745Q-46.159 39.557-46.159 39.133Q-46.159 38.983-46.060 38.884Q-45.961 38.785-45.810 38.785Q-45.742 38.785-45.675 38.812Q-45.608 38.839-45.564 38.884Q-45.520 38.928-45.492 38.995Q-45.465 39.062-45.465 39.133Q-45.465 39.263-45.545 39.361Q-45.626 39.458-45.759 39.479M-44.788 38.043Q-44.494 38.043-44.279 37.865Q-44.064 37.688-43.956 37.412Q-43.848 37.137-43.848 36.847Q-43.848 36.802-43.850 36.775Q-43.852 36.748-43.855 36.713Q-43.852 36.703-43.850 36.696Q-43.848 36.689-43.848 36.679Q-43.848 36.177-44.046 35.777Q-44.245 35.377-44.703 35.377Q-45.270 35.377-45.463 35.736Q-45.656 36.095-45.656 36.707Q-45.656 37.093-45.602 37.376Q-45.547 37.660-45.352 37.852Q-45.157 38.043-44.788 38.043",[1118],[1090,1253,1254],{"fill":1096,"stroke":1096},[1090,1255,1257],{"transform":1256},"translate(137.425 -24.88)",[1098,1258],{"d":1259,"fill":1096,"stroke":1096,"className":1260,"style":1207},"M-43.407 39.793L-46.292 39.793L-46.292 39.591Q-46.292 39.561-46.265 39.533L-45.017 38.316Q-44.945 38.241-44.903 38.199Q-44.860 38.156-44.781 38.077Q-44.368 37.664-44.137 37.306Q-43.906 36.949-43.906 36.525Q-43.906 36.293-43.985 36.090Q-44.064 35.886-44.205 35.736Q-44.347 35.585-44.542 35.505Q-44.737 35.425-44.969 35.425Q-45.280 35.425-45.538 35.584Q-45.796 35.743-45.926 36.020L-45.906 36.020Q-45.738 36.020-45.631 36.131Q-45.523 36.242-45.523 36.406Q-45.523 36.563-45.632 36.676Q-45.742 36.789-45.906 36.789Q-46.066 36.789-46.179 36.676Q-46.292 36.563-46.292 36.406Q-46.292 36.030-46.084 35.743Q-45.875 35.456-45.540 35.300Q-45.205 35.145-44.850 35.145Q-44.426 35.145-44.046 35.303Q-43.667 35.462-43.433 35.779Q-43.199 36.095-43.199 36.525Q-43.199 36.836-43.339 37.105Q-43.479 37.373-43.684 37.578Q-43.889 37.783-44.252 38.065Q-44.614 38.347-44.723 38.443L-45.578 39.171L-44.935 39.171Q-44.672 39.171-44.383 39.169Q-44.094 39.168-43.876 39.159Q-43.657 39.150-43.640 39.133Q-43.578 39.068-43.541 38.901Q-43.503 38.733-43.465 38.491L-43.199 38.491",[1118],[1090,1262,1263],{"fill":1096,"stroke":1096},[1090,1264,1266],{"transform":1265},"translate(157.342 -63.576)",[1098,1267],{"d":1268,"fill":1096,"stroke":1096,"className":1269,"style":1207},"M-44.744 39.933Q-45.202 39.933-45.520 39.718Q-45.837 39.502-46.019 39.150Q-46.200 38.798-46.277 38.378Q-46.354 37.958-46.354 37.530Q-46.354 36.946-46.101 36.390Q-45.848 35.835-45.378 35.490Q-44.908 35.145-44.310 35.145Q-43.900 35.145-43.616 35.343Q-43.332 35.541-43.332 35.944Q-43.332 36.040-43.378 36.119Q-43.424 36.197-43.505 36.242Q-43.585 36.286-43.674 36.286Q-43.821 36.286-43.922 36.189Q-44.023 36.091-44.023 35.944Q-44.023 35.814-43.932 35.707Q-43.841 35.599-43.708 35.599Q-43.896 35.377-44.310 35.377Q-44.624 35.377-44.898 35.541Q-45.171 35.705-45.338 35.979Q-45.526 36.269-45.591 36.635Q-45.656 37.001-45.656 37.455Q-45.506 37.161-45.241 36.983Q-44.976 36.806-44.662 36.806Q-44.231 36.806-43.882 37.012Q-43.534 37.219-43.334 37.575Q-43.134 37.930-43.134 38.357Q-43.134 38.802-43.351 39.162Q-43.568 39.523-43.941 39.728Q-44.313 39.933-44.744 39.933M-44.744 39.680Q-44.368 39.680-44.164 39.497Q-43.961 39.314-43.898 39.031Q-43.835 38.747-43.835 38.357Q-43.835 37.971-43.889 37.691Q-43.944 37.411-44.139 37.219Q-44.334 37.028-44.703 37.028Q-44.993 37.028-45.205 37.204Q-45.417 37.380-45.525 37.653Q-45.632 37.927-45.632 38.210L-45.632 38.351L-45.632 38.392Q-45.632 38.897-45.420 39.289Q-45.209 39.680-44.744 39.680",[1118],[1271,1272,1275,1276,1378,1379,1422,1423,1438],"figcaption",{"className":1273},[1274],"tikz-cap","Values of ",[395,1277,1279],{"className":1278},[398],[395,1280,1282,1300],{"className":1281,"ariaHidden":403},[402],[395,1283,1285,1288,1291,1294,1297],{"className":1284},[407],[395,1286],{"className":1287,"style":881},[411],[395,1289,418],{"className":1290},[416,417],[395,1292],{"className":1293,"style":517},[516],[395,1295,891],{"className":1296},[521],[395,1298],{"className":1299,"style":517},[516],[395,1301,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375],{"className":1302},[407],[395,1304],{"className":1305,"style":412},[411],[395,1307,423],{"className":1308},[422],[395,1310,907],{"className":1311},[416],[395,1313,912],{"className":1314},[911],[395,1316],{"className":1317,"style":916},[516],[395,1319,498],{"className":1320},[416],[395,1322,912],{"className":1323},[911],[395,1325],{"className":1326,"style":916},[516],[395,1328,929],{"className":1329},[416],[395,1331,912],{"className":1332},[911],[395,1334],{"className":1335,"style":916},[516],[395,1337,498],{"className":1338},[416],[395,1340,912],{"className":1341},[911],[395,1343],{"className":1344,"style":916},[516],[395,1346,948],{"className":1347},[416],[395,1349,912],{"className":1350},[911],[395,1352],{"className":1353,"style":916},[516],[395,1355,958],{"className":1356},[416],[395,1358,912],{"className":1359},[911],[395,1361],{"className":1362,"style":916},[516],[395,1364,561],{"className":1365},[416],[395,1367,912],{"className":1368},[911],[395,1370],{"className":1371,"style":916},[516],[395,1373,977],{"className":1374},[416],[395,1376,436],{"className":1377},[435]," plotted against position. An LIS is a longest left-to-right chain that strictly rises; the highlighted path ",[395,1380,1382],{"className":1381},[398],[395,1383,1385],{"className":1384,"ariaHidden":403},[402],[395,1386,1388,1392,1395,1398,1401,1404,1407,1410,1413,1416,1419],{"className":1387},[407],[395,1389],{"className":1390,"style":1391},[411],"height:0.8389em;vertical-align:-0.1944em;",[395,1393,907],{"className":1394},[416],[395,1396,912],{"className":1397},[911],[395,1399],{"className":1400,"style":916},[516],[395,1402,929],{"className":1403},[416],[395,1405,912],{"className":1406},[911],[395,1408],{"className":1409,"style":916},[516],[395,1411,948],{"className":1412},[416],[395,1414,912],{"className":1415},[911],[395,1417],{"className":1418,"style":916},[516],[395,1420,958],{"className":1421},[416]," (length ",[395,1424,1426],{"className":1425},[398],[395,1427,1429],{"className":1428,"ariaHidden":403},[402],[395,1430,1432,1435],{"className":1431},[407],[395,1433],{"className":1434,"style":1043},[411],[395,1436,929],{"className":1437},[416],") is one such chain.",[381,1440,1441,1442,1485,1486,1489,1490,1546,1547,1590,1591,1063],{},"A brute-force scan over all ",[395,1443,1445],{"className":1444},[398],[395,1446,1448],{"className":1447,"ariaHidden":403},[402],[395,1449,1451,1455],{"className":1450},[407],[395,1452],{"className":1453,"style":1454},[411],"height:0.6644em;",[395,1456,1458,1461],{"className":1457},[416],[395,1459,561],{"className":1460},[416],[395,1462,1464],{"className":1463},[465],[395,1465,1467],{"className":1466},[469],[395,1468,1470],{"className":1469},[474],[395,1471,1473],{"className":1472,"style":1454},[478],[395,1474,1476,1479],{"style":1475},"top:-3.063em;margin-right:0.05em;",[395,1477],{"className":1478,"style":487},[486],[395,1480,1482],{"className":1481},[491,492,493,494],[395,1483,431],{"className":1484},[416,417,494]," subsequences is hopeless. But LIS has clean\noptimal substructure, the same ",[418,1487,1488],{"href":236},"optimal-substructure","\nlever behind every dynamic program, and it admits two algorithms worth knowing\nwell: a direct ",[395,1491,1493],{"className":1492},[398],[395,1494,1496],{"className":1495,"ariaHidden":403},[402],[395,1497,1499,1503,1508,1512,1542],{"className":1498},[407],[395,1500],{"className":1501,"style":1502},[411],"height:1.0641em;vertical-align:-0.25em;",[395,1504,1507],{"className":1505,"style":1506},[416,417],"margin-right:0.0278em;","O",[395,1509,1511],{"className":1510},[422],"(",[395,1513,1515,1518],{"className":1514},[416],[395,1516,431],{"className":1517},[416,417],[395,1519,1521],{"className":1520},[465],[395,1522,1524],{"className":1523},[469],[395,1525,1527],{"className":1526},[474],[395,1528,1531],{"className":1529,"style":1530},[478],"height:0.8141em;",[395,1532,1533,1536],{"style":1475},[395,1534],{"className":1535,"style":487},[486],[395,1537,1539],{"className":1538},[491,492,493,494],[395,1540,561],{"className":1541},[416,494],[395,1543,1545],{"className":1544},[435],")"," dynamic program, and a slicker ",[395,1548,1550],{"className":1549},[398],[395,1551,1553],{"className":1552,"ariaHidden":403},[402],[395,1554,1556,1559,1562,1565,1568,1571,1581,1584,1587],{"className":1555},[407],[395,1557],{"className":1558,"style":412},[411],[395,1560,1507],{"className":1561,"style":1506},[416,417],[395,1563,1511],{"className":1564},[422],[395,1566,431],{"className":1567},[416,417],[395,1569],{"className":1570,"style":916},[516],[395,1572,1575],{"className":1573},[1574],"mop",[395,1576,1580],{"className":1577,"style":1579},[416,1578],"mathrm","margin-right:0.0139em;","log",[395,1582],{"className":1583,"style":916},[516],[395,1585,431],{"className":1586},[416,417],[395,1588,1545],{"className":1589},[435]," method built\non ",[390,1592,1593],{},"patience sorting",[1595,1596,1598,1599,1649],"h2",{"id":1597},"the-on2-dynamic-program-subsequences-that-end-here","The ",[395,1600,1602],{"className":1601},[398],[395,1603,1605],{"className":1604,"ariaHidden":403},[402],[395,1606,1608,1611,1614,1617,1646],{"className":1607},[407],[395,1609],{"className":1610,"style":1502},[411],[395,1612,1507],{"className":1613,"style":1506},[416,417],[395,1615,1511],{"className":1616},[422],[395,1618,1620,1623],{"className":1619},[416],[395,1621,431],{"className":1622},[416,417],[395,1624,1626],{"className":1625},[465],[395,1627,1629],{"className":1628},[469],[395,1630,1632],{"className":1631},[474],[395,1633,1635],{"className":1634,"style":1530},[478],[395,1636,1637,1640],{"style":1475},[395,1638],{"className":1639,"style":487},[486],[395,1641,1643],{"className":1642},[491,492,493,494],[395,1644,561],{"className":1645},[416,494],[395,1647,1545],{"className":1648},[435]," dynamic program: subsequences that end here",[381,1651,1652,1653,1657,1658,1661,1662,1678,1679,1703],{},"The decisive modeling move, the analog of LCS's ",[1654,1655,1656],"q",{},"index by prefix,"," is to index\neach subproblem by the element its subsequence is forced to ",[390,1659,1660],{},"end at",". Anchoring\nthe endpoint is what makes the pieces compose: an increasing subsequence ending at\n",[395,1663,1665],{"className":1664},[398],[395,1666,1668],{"className":1667,"ariaHidden":403},[402],[395,1669,1671,1675],{"className":1670},[407],[395,1672],{"className":1673,"style":1674},[411],"height:0.6595em;",[395,1676,461],{"className":1677},[416,417]," is some shorter increasing subsequence ending at an earlier, smaller element,\nwith ",[395,1680,1682],{"className":1681},[398],[395,1683,1685],{"className":1684,"ariaHidden":403},[402],[395,1686,1688,1691,1694,1697,1700],{"className":1687},[407],[395,1689],{"className":1690,"style":412},[411],[395,1692,418],{"className":1693},[416,417],[395,1695,423],{"className":1696},[422],[395,1698,461],{"className":1699},[416,417],[395,1701,436],{"className":1702},[435]," tacked on.",[1705,1706,1708],"callout",{"type":1707},"definition",[381,1709,1710,1713,1714,1739,1740,1767,1768,1783,1784,1808],{},[390,1711,1712],{},"Definition (LIS subproblem)."," Let ",[395,1715,1717],{"className":1716},[398],[395,1718,1720],{"className":1719,"ariaHidden":403},[402],[395,1721,1723,1726,1730,1733,1736],{"className":1722},[407],[395,1724],{"className":1725,"style":412},[411],[395,1727,1729],{"className":1728},[416,417],"L",[395,1731,423],{"className":1732},[422],[395,1734,461],{"className":1735},[416,417],[395,1737,436],{"className":1738},[435]," be the length of the longest increasing subsequence of ",[395,1741,1743],{"className":1742},[398],[395,1744,1746],{"className":1745,"ariaHidden":403},[402],[395,1747,1749,1752,1755,1758,1761,1764],{"className":1748},[407],[395,1750],{"className":1751,"style":412},[411],[395,1753,418],{"className":1754},[416,417],[395,1756,423],{"className":1757},[422],[395,1759,427],{"className":1760},[416],[395,1762,461],{"className":1763},[416,417],[395,1765,436],{"className":1766},[435],"\nthat ends at index ",[395,1769,1771],{"className":1770},[398],[395,1772,1774],{"className":1773,"ariaHidden":403},[402],[395,1775,1777,1780],{"className":1776},[407],[395,1778],{"className":1779,"style":1674},[411],[395,1781,461],{"className":1782},[416,417]," (so it must include ",[395,1785,1787],{"className":1786},[398],[395,1788,1790],{"className":1789,"ariaHidden":403},[402],[395,1791,1793,1796,1799,1802,1805],{"className":1792},[407],[395,1794],{"className":1795,"style":412},[411],[395,1797,418],{"className":1798},[416,417],[395,1800,423],{"className":1801},[422],[395,1803,461],{"className":1804},[416,417],[395,1806,436],{"className":1807},[435],").",[381,1810,1811,1812,1815,1816,864,1906,1930],{},"Every increasing subsequence ends ",[385,1813,1814],{},"somewhere",", so the answer is\n",[395,1817,1819],{"className":1818},[398],[395,1820,1822],{"className":1821,"ariaHidden":403},[402],[395,1823,1825,1828,1891,1894,1897,1900,1903],{"className":1824},[407],[395,1826],{"className":1827,"style":412},[411],[395,1829,1831,1838],{"className":1830},[1574],[395,1832,1834],{"className":1833},[1574],[395,1835,1837],{"className":1836},[416,1578],"max",[395,1839,1841],{"className":1840},[465],[395,1842,1844,1882],{"className":1843},[469,470],[395,1845,1847,1879],{"className":1846},[474],[395,1848,1851],{"className":1849,"style":1850},[478],"height:0.3117em;",[395,1852,1854,1857],{"style":1853},"top:-2.55em;margin-right:0.05em;",[395,1855],{"className":1856,"style":487},[486],[395,1858,1860],{"className":1859},[491,492,493,494],[395,1861,1863,1866,1870,1873,1876],{"className":1862},[416,494],[395,1864,498],{"className":1865},[416,494],[395,1867,1869],{"className":1868},[521,494],"≤",[395,1871,461],{"className":1872},[416,417,494],[395,1874,1869],{"className":1875},[521,494],[395,1877,431],{"className":1878},[416,417,494],[395,1880,503],{"className":1881},[502],[395,1883,1885],{"className":1884},[474],[395,1886,1889],{"className":1887,"style":1888},[478],"height:0.2452em;",[395,1890],{},[395,1892],{"className":1893,"style":916},[516],[395,1895,1729],{"className":1896},[416,417],[395,1898,423],{"className":1899},[422],[395,1901,461],{"className":1902},[416,417],[395,1904,436],{"className":1905},[435],[395,1907,1909],{"className":1908},[398],[395,1910,1912],{"className":1911,"ariaHidden":403},[402],[395,1913,1915,1918,1921,1924,1927],{"className":1914},[407],[395,1916],{"className":1917,"style":412},[411],[395,1919,1729],{"className":1920},[416,417],[395,1922,423],{"className":1923},[422],[395,1925,431],{"className":1926},[416,417],[395,1928,436],{"className":1929},[435],", a small but important distinction from\nthe prefix DPs, where the answer sat in the last cell.",[381,1932,1933,1934,1949,1950,1986,1987,1990,1991,2015,2016,2031,2032,2056,2057,2081],{},"To extend a subsequence so that it ends at ",[395,1935,1937],{"className":1936},[398],[395,1938,1940],{"className":1939,"ariaHidden":403},[402],[395,1941,1943,1946],{"className":1942},[407],[395,1944],{"className":1945,"style":1674},[411],[395,1947,461],{"className":1948},[416,417],", look at all earlier indices ",[395,1951,1953],{"className":1952},[398],[395,1954,1956,1977],{"className":1955,"ariaHidden":403},[402],[395,1957,1959,1963,1968,1971,1974],{"className":1958},[407],[395,1960],{"className":1961,"style":1962},[411],"height:0.854em;vertical-align:-0.1944em;",[395,1964,1967],{"className":1965,"style":1966},[416,417],"margin-right:0.0572em;","j",[395,1969],{"className":1970,"style":517},[516],[395,1972,522],{"className":1973},[521],[395,1975],{"className":1976,"style":517},[516],[395,1978,1980,1983],{"className":1979},[407],[395,1981],{"className":1982,"style":1674},[411],[395,1984,461],{"className":1985},[416,417],"\nwhose value is ",[385,1988,1989],{},"smaller"," than ",[395,1992,1994],{"className":1993},[398],[395,1995,1997],{"className":1996,"ariaHidden":403},[402],[395,1998,2000,2003,2006,2009,2012],{"className":1999},[407],[395,2001],{"className":2002,"style":412},[411],[395,2004,418],{"className":2005},[416,417],[395,2007,423],{"className":2008},[422],[395,2010,461],{"className":2011},[416,417],[395,2013,436],{"className":2014},[435],"; any increasing subsequence ending at such a\n",[395,2017,2019],{"className":2018},[398],[395,2020,2022],{"className":2021,"ariaHidden":403},[402],[395,2023,2025,2028],{"className":2024},[407],[395,2026],{"className":2027,"style":1962},[411],[395,2029,1967],{"className":2030,"style":1966},[416,417]," can be lengthened by appending ",[395,2033,2035],{"className":2034},[398],[395,2036,2038],{"className":2037,"ariaHidden":403},[402],[395,2039,2041,2044,2047,2050,2053],{"className":2040},[407],[395,2042],{"className":2043,"style":412},[411],[395,2045,418],{"className":2046},[416,417],[395,2048,423],{"className":2049},[422],[395,2051,461],{"className":2052},[416,417],[395,2054,436],{"className":2055},[435],". We take the best such predecessor, or\nstart fresh with just ",[395,2058,2060],{"className":2059},[398],[395,2061,2063],{"className":2062,"ariaHidden":403},[402],[395,2064,2066,2069,2072,2075,2078],{"className":2065},[407],[395,2067],{"className":2068,"style":412},[411],[395,2070,418],{"className":2071},[416,417],[395,2073,423],{"className":2074},[422],[395,2076,461],{"className":2077},[416,417],[395,2079,436],{"className":2080},[435]," if none exists:",[395,2083,2086],{"className":2084},[2085],"katex-display",[395,2087,2089],{"className":2088},[398],[395,2090,2092,2119,2141,2190,2224,2242,2282],{"className":2091,"ariaHidden":403},[402],[395,2093,2095,2098,2101,2104,2107,2110,2113,2116],{"className":2094},[407],[395,2096],{"className":2097,"style":412},[411],[395,2099,1729],{"className":2100},[416,417],[395,2102,423],{"className":2103},[422],[395,2105,461],{"className":2106},[416,417],[395,2108,436],{"className":2109},[435],[395,2111],{"className":2112,"style":517},[516],[395,2114,891],{"className":2115},[521],[395,2117],{"className":2118,"style":517},[516],[395,2120,2122,2126,2129,2133,2138],{"className":2121},[407],[395,2123],{"className":2124,"style":2125},[411],"height:0.7278em;vertical-align:-0.0833em;",[395,2127,498],{"className":2128},[416],[395,2130],{"className":2131,"style":2132},[516],"margin-right:0.2222em;",[395,2134,2137],{"className":2135},[2136],"mbin","+",[395,2139],{"className":2140,"style":2132},[516],[395,2142,2144,2148,2154,2162,2166,2169,2173,2176,2180,2183,2187],{"className":2143},[407],[395,2145],{"className":2146,"style":2147},[411],"height:1.2em;vertical-align:-0.35em;",[395,2149,2151],{"className":2150},[1574],[395,2152,1837],{"className":2153},[416,1578],[395,2155,2157],{"className":2156},[422],[395,2158,1511],{"className":2159},[2160,2161],"delimsizing","size1",[395,2163,2165],{"className":2164},[422],"{",[395,2167],{"className":2168,"style":916},[516],[395,2170,2172],{"className":2171},[416],"0",[395,2174],{"className":2175,"style":916},[516],[395,2177,2179],{"className":2178},[435],"}",[395,2181],{"className":2182,"style":2132},[516],[395,2184,2186],{"className":2185},[2136],"∪",[395,2188],{"className":2189,"style":2132},[516],[395,2191,2193,2196,2199,2202,2205,2208,2211,2214,2217,2221],{"className":2192},[407],[395,2194],{"className":2195,"style":412},[411],[395,2197,2165],{"className":2198},[422],[395,2200],{"className":2201,"style":916},[516],[395,2203,1729],{"className":2204},[416,417],[395,2206,423],{"className":2207},[422],[395,2209,1967],{"className":2210,"style":1966},[416,417],[395,2212,436],{"className":2213},[435],[395,2215],{"className":2216,"style":517},[516],[395,2218,2220],{"className":2219},[521],":",[395,2222],{"className":2223,"style":517},[516],[395,2225,2227,2230,2233,2236,2239],{"className":2226},[407],[395,2228],{"className":2229,"style":1962},[411],[395,2231,1967],{"className":2232,"style":1966},[416,417],[395,2234],{"className":2235,"style":517},[516],[395,2237,522],{"className":2238},[521],[395,2240],{"className":2241,"style":517},[516],[395,2243,2245,2248,2251,2254,2258,2261,2264,2267,2270,2273,2276,2279],{"className":2244},[407],[395,2246],{"className":2247,"style":412},[411],[395,2249,461],{"className":2250},[416,417],[395,2252,912],{"className":2253},[911],[395,2255,2257],{"className":2256},[516]," ",[395,2259],{"className":2260,"style":916},[516],[395,2262,418],{"className":2263},[416,417],[395,2265,423],{"className":2266},[422],[395,2268,1967],{"className":2269,"style":1966},[416,417],[395,2271,436],{"className":2272},[435],[395,2274],{"className":2275,"style":517},[516],[395,2277,522],{"className":2278},[521],[395,2280],{"className":2281,"style":517},[516],[395,2283,2285,2288,2291,2294,2297,2300,2303,2306,2312],{"className":2284},[407],[395,2286],{"className":2287,"style":2147},[411],[395,2289,418],{"className":2290},[416,417],[395,2292,423],{"className":2293},[422],[395,2295,461],{"className":2296},[416,417],[395,2298,436],{"className":2299},[435],[395,2301],{"className":2302,"style":916},[516],[395,2304,2179],{"className":2305},[435],[395,2307,2309],{"className":2308},[435],[395,2310,1545],{"className":2311},[2160,2161],[395,2313,1063],{"className":2314},[416],[381,2316,1598,2317,2338,2339,2357,2358,2400,2401,2425],{},[395,2318,2320],{"className":2319},[398],[395,2321,2323],{"className":2322,"ariaHidden":403},[402],[395,2324,2326,2329,2332,2335],{"className":2325},[407],[395,2327],{"className":2328,"style":412},[411],[395,2330,2165],{"className":2331},[422],[395,2333,2172],{"className":2334},[416],[395,2336,2179],{"className":2337},[435]," guarantees the ",[395,2340,2342],{"className":2341},[398],[395,2343,2345],{"className":2344,"ariaHidden":403},[402],[395,2346,2348,2351],{"className":2347},[407],[395,2349],{"className":2350,"style":881},[411],[395,2352,2354],{"className":2353},[1574],[395,2355,1837],{"className":2356},[416,1578]," is defined and yields ",[395,2359,2361],{"className":2360},[398],[395,2362,2364,2391],{"className":2363,"ariaHidden":403},[402],[395,2365,2367,2370,2373,2376,2379,2382,2385,2388],{"className":2366},[407],[395,2368],{"className":2369,"style":412},[411],[395,2371,1729],{"className":2372},[416,417],[395,2374,423],{"className":2375},[422],[395,2377,461],{"className":2378},[416,417],[395,2380,436],{"className":2381},[435],[395,2383],{"className":2384,"style":517},[516],[395,2386,891],{"className":2387},[521],[395,2389],{"className":2390,"style":517},[516],[395,2392,2394,2397],{"className":2393},[407],[395,2395],{"className":2396,"style":1043},[411],[395,2398,498],{"className":2399},[416]," when no smaller\npredecessor exists: the subsequence consisting of ",[395,2402,2404],{"className":2403},[398],[395,2405,2407],{"className":2406,"ariaHidden":403},[402],[395,2408,2410,2413,2416,2419,2422],{"className":2409},[407],[395,2411],{"className":2412,"style":412},[411],[395,2414,418],{"className":2415},[416,417],[395,2417,423],{"className":2418},[422],[395,2420,461],{"className":2421},[416,417],[395,2423,436],{"className":2424},[435]," alone.",[1705,2427,2429],{"type":2428},"proof",[381,2430,2431,2449,2450,2474,2475,2508,2509,2527,2528,2543,2544,2590,2591,2631,2632,2653,2654,2669,2670,2703,2704,2755,2756,2771,2772,2787,2788,2856,2857,2923,2924,2939,2940,2964,2965,3007,3008],{},[390,2432,2433,2434,1808],{},"Correctness (induction on ",[395,2435,2437],{"className":2436},[398],[395,2438,2440],{"className":2439,"ariaHidden":403},[402],[395,2441,2443,2446],{"className":2442},[407],[395,2444],{"className":2445,"style":1674},[411],[395,2447,461],{"className":2448},[416,417]," Assume ",[395,2451,2453],{"className":2452},[398],[395,2454,2456],{"className":2455,"ariaHidden":403},[402],[395,2457,2459,2462,2465,2468,2471],{"className":2458},[407],[395,2460],{"className":2461,"style":412},[411],[395,2463,1729],{"className":2464},[416,417],[395,2466,423],{"className":2467},[422],[395,2469,1967],{"className":2470,"style":1966},[416,417],[395,2472,436],{"className":2473},[435]," is correct for every ",[395,2476,2478],{"className":2477},[398],[395,2479,2481,2499],{"className":2480,"ariaHidden":403},[402],[395,2482,2484,2487,2490,2493,2496],{"className":2483},[407],[395,2485],{"className":2486,"style":1962},[411],[395,2488,1967],{"className":2489,"style":1966},[416,417],[395,2491],{"className":2492,"style":517},[516],[395,2494,522],{"className":2495},[521],[395,2497],{"className":2498,"style":517},[516],[395,2500,2502,2505],{"className":2501},[407],[395,2503],{"className":2504,"style":1674},[411],[395,2506,461],{"className":2507},[416,417],".\nLet ",[395,2510,2512],{"className":2511},[398],[395,2513,2515],{"className":2514,"ariaHidden":403},[402],[395,2516,2518,2522],{"className":2517},[407],[395,2519],{"className":2520,"style":2521},[411],"height:0.6833em;",[395,2523,2526],{"className":2524,"style":2525},[416,417],"margin-right:0.0576em;","S"," be a longest increasing subsequence ending at ",[395,2529,2531],{"className":2530},[398],[395,2532,2534],{"className":2533,"ariaHidden":403},[402],[395,2535,2537,2540],{"className":2536},[407],[395,2538],{"className":2539,"style":1674},[411],[395,2541,461],{"className":2542},[416,417],". If ",[395,2545,2547],{"className":2546},[398],[395,2548,2550,2568],{"className":2549,"ariaHidden":403},[402],[395,2551,2553,2556,2559,2562,2565],{"className":2552},[407],[395,2554],{"className":2555,"style":2521},[411],[395,2557,2526],{"className":2558,"style":2525},[416,417],[395,2560],{"className":2561,"style":517},[516],[395,2563,891],{"className":2564},[521],[395,2566],{"className":2567,"style":517},[516],[395,2569,2571,2574,2577,2580,2583,2586],{"className":2570},[407],[395,2572],{"className":2573,"style":412},[411],[395,2575,1511],{"className":2576},[422],[395,2578,418],{"className":2579},[416,417],[395,2581,423],{"className":2582},[422],[395,2584,461],{"className":2585},[416,417],[395,2587,2589],{"className":2588},[435],"])"," then\n",[395,2592,2594],{"className":2593},[398],[395,2595,2597,2622],{"className":2596,"ariaHidden":403},[402],[395,2598,2600,2603,2607,2610,2613,2616,2619],{"className":2599},[407],[395,2601],{"className":2602,"style":412},[411],[395,2604,2606],{"className":2605},[416],"∣",[395,2608,2526],{"className":2609,"style":2525},[416,417],[395,2611,2606],{"className":2612},[416],[395,2614],{"className":2615,"style":517},[516],[395,2617,891],{"className":2618},[521],[395,2620],{"className":2621,"style":517},[516],[395,2623,2625,2628],{"className":2624},[407],[395,2626],{"className":2627,"style":1043},[411],[395,2629,498],{"className":2630},[416],", matched by the ",[395,2633,2635],{"className":2634},[398],[395,2636,2638],{"className":2637,"ariaHidden":403},[402],[395,2639,2641,2644,2647,2650],{"className":2640},[407],[395,2642],{"className":2643,"style":412},[411],[395,2645,2165],{"className":2646},[422],[395,2648,2172],{"className":2649},[416],[395,2651,2179],{"className":2652},[435]," branch. Otherwise ",[395,2655,2657],{"className":2656},[398],[395,2658,2660],{"className":2659,"ariaHidden":403},[402],[395,2661,2663,2666],{"className":2662},[407],[395,2664],{"className":2665,"style":2521},[411],[395,2667,2526],{"className":2668,"style":2525},[416,417]," has a second-to-last\nelement at some index ",[395,2671,2673],{"className":2672},[398],[395,2674,2676,2694],{"className":2675,"ariaHidden":403},[402],[395,2677,2679,2682,2685,2688,2691],{"className":2678},[407],[395,2680],{"className":2681,"style":1962},[411],[395,2683,1967],{"className":2684,"style":1966},[416,417],[395,2686],{"className":2687,"style":517},[516],[395,2689,522],{"className":2690},[521],[395,2692],{"className":2693,"style":517},[516],[395,2695,2697,2700],{"className":2696},[407],[395,2698],{"className":2699,"style":1674},[411],[395,2701,461],{"className":2702},[416,417]," with ",[395,2705,2707],{"className":2706},[398],[395,2708,2710,2737],{"className":2709,"ariaHidden":403},[402],[395,2711,2713,2716,2719,2722,2725,2728,2731,2734],{"className":2712},[407],[395,2714],{"className":2715,"style":412},[411],[395,2717,418],{"className":2718},[416,417],[395,2720,423],{"className":2721},[422],[395,2723,1967],{"className":2724,"style":1966},[416,417],[395,2726,436],{"className":2727},[435],[395,2729],{"className":2730,"style":517},[516],[395,2732,522],{"className":2733},[521],[395,2735],{"className":2736,"style":517},[516],[395,2738,2740,2743,2746,2749,2752],{"className":2739},[407],[395,2741],{"className":2742,"style":412},[411],[395,2744,418],{"className":2745},[416,417],[395,2747,423],{"className":2748},[422],[395,2750,461],{"className":2751},[416,417],[395,2753,436],{"className":2754},[435],", and ",[395,2757,2759],{"className":2758},[398],[395,2760,2762],{"className":2761,"ariaHidden":403},[402],[395,2763,2765,2768],{"className":2764},[407],[395,2766],{"className":2767,"style":2521},[411],[395,2769,2526],{"className":2770,"style":2525},[416,417]," minus its last element\nis an increasing subsequence ending at ",[395,2773,2775],{"className":2774},[398],[395,2776,2778],{"className":2777,"ariaHidden":403},[402],[395,2779,2781,2784],{"className":2780},[407],[395,2782],{"className":2783,"style":1962},[411],[395,2785,1967],{"className":2786,"style":1966},[416,417],", so ",[395,2789,2791],{"className":2790},[398],[395,2792,2794,2819,2838],{"className":2793,"ariaHidden":403},[402],[395,2795,2797,2800,2803,2806,2809,2812,2816],{"className":2796},[407],[395,2798],{"className":2799,"style":412},[411],[395,2801,2606],{"className":2802},[416],[395,2804,2526],{"className":2805,"style":2525},[416,417],[395,2807,2606],{"className":2808},[416],[395,2810],{"className":2811,"style":2132},[516],[395,2813,2815],{"className":2814},[2136],"−",[395,2817],{"className":2818,"style":2132},[516],[395,2820,2822,2826,2829,2832,2835],{"className":2821},[407],[395,2823],{"className":2824,"style":2825},[411],"height:0.7804em;vertical-align:-0.136em;",[395,2827,498],{"className":2828},[416],[395,2830],{"className":2831,"style":517},[516],[395,2833,1869],{"className":2834},[521],[395,2836],{"className":2837,"style":517},[516],[395,2839,2841,2844,2847,2850,2853],{"className":2840},[407],[395,2842],{"className":2843,"style":412},[411],[395,2845,1729],{"className":2846},[416,417],[395,2848,423],{"className":2849},[422],[395,2851,1967],{"className":2852,"style":1966},[416,417],[395,2854,436],{"className":2855},[435]," by the IH;\nhence ",[395,2858,2860],{"className":2859},[398],[395,2861,2863,2887,2914],{"className":2862,"ariaHidden":403},[402],[395,2864,2866,2869,2872,2875,2878,2881,2884],{"className":2865},[407],[395,2867],{"className":2868,"style":412},[411],[395,2870,2606],{"className":2871},[416],[395,2873,2526],{"className":2874,"style":2525},[416,417],[395,2876,2606],{"className":2877},[416],[395,2879],{"className":2880,"style":517},[516],[395,2882,1869],{"className":2883},[521],[395,2885],{"className":2886,"style":517},[516],[395,2888,2890,2893,2896,2899,2902,2905,2908,2911],{"className":2889},[407],[395,2891],{"className":2892,"style":412},[411],[395,2894,1729],{"className":2895},[416,417],[395,2897,423],{"className":2898},[422],[395,2900,1967],{"className":2901,"style":1966},[416,417],[395,2903,436],{"className":2904},[435],[395,2906],{"className":2907,"style":2132},[516],[395,2909,2137],{"className":2910},[2136],[395,2912],{"className":2913,"style":2132},[516],[395,2915,2917,2920],{"className":2916},[407],[395,2918],{"className":2919,"style":1043},[411],[395,2921,498],{"className":2922},[416],". Conversely, taking the longest subsequence ending at\nthe maximizing ",[395,2925,2927],{"className":2926},[398],[395,2928,2930],{"className":2929,"ariaHidden":403},[402],[395,2931,2933,2936],{"className":2932},[407],[395,2934],{"className":2935,"style":1962},[411],[395,2937,1967],{"className":2938,"style":1966},[416,417]," and appending ",[395,2941,2943],{"className":2942},[398],[395,2944,2946],{"className":2945,"ariaHidden":403},[402],[395,2947,2949,2952,2955,2958,2961],{"className":2948},[407],[395,2950],{"className":2951,"style":412},[411],[395,2953,418],{"className":2954},[416,417],[395,2956,423],{"className":2957},[422],[395,2959,461],{"className":2960},[416,417],[395,2962,436],{"className":2963},[435]," exhibits a valid subsequence of length\n",[395,2966,2968],{"className":2967},[398],[395,2969,2971,2998],{"className":2970,"ariaHidden":403},[402],[395,2972,2974,2977,2980,2983,2986,2989,2992,2995],{"className":2973},[407],[395,2975],{"className":2976,"style":412},[411],[395,2978,1729],{"className":2979},[416,417],[395,2981,423],{"className":2982},[422],[395,2984,1967],{"className":2985,"style":1966},[416,417],[395,2987,436],{"className":2988},[435],[395,2990],{"className":2991,"style":2132},[516],[395,2993,2137],{"className":2994},[2136],[395,2996],{"className":2997,"style":2132},[516],[395,2999,3001,3004],{"className":3000},[407],[395,3002],{"className":3003,"style":1043},[411],[395,3005,498],{"className":3006},[416],". Both directions give equality. ",[395,3009,3011],{"className":3010},[398],[395,3012,3014],{"className":3013,"ariaHidden":403},[402],[395,3015,3017,3021],{"className":3016},[407],[395,3018],{"className":3019,"style":3020},[411],"height:0.675em;",[395,3022,3026],{"className":3023},[3024,3025],"enclosing","qed",[395,3027,3030],{"className":3028},[416,3029],"amsrm","□",[381,3032,3033,3034,3058,3059,3093,3094,3235,3236,3260],{},"Each ",[395,3035,3037],{"className":3036},[398],[395,3038,3040],{"className":3039,"ariaHidden":403},[402],[395,3041,3043,3046,3049,3052,3055],{"className":3042},[407],[395,3044],{"className":3045,"style":412},[411],[395,3047,1729],{"className":3048},[416,417],[395,3050,423],{"className":3051},[422],[395,3053,461],{"className":3054},[416,417],[395,3056,436],{"className":3057},[435]," scans the ",[395,3060,3062],{"className":3061},[398],[395,3063,3065,3084],{"className":3064,"ariaHidden":403},[402],[395,3066,3068,3072,3075,3078,3081],{"className":3067},[407],[395,3069],{"className":3070,"style":3071},[411],"height:0.7429em;vertical-align:-0.0833em;",[395,3073,461],{"className":3074},[416,417],[395,3076],{"className":3077,"style":2132},[516],[395,3079,2815],{"className":3080},[2136],[395,3082],{"className":3083,"style":2132},[516],[395,3085,3087,3090],{"className":3086},[407],[395,3088],{"className":3089,"style":1043},[411],[395,3091,498],{"className":3092},[416]," earlier indices, so the fill is\n",[395,3095,3097],{"className":3096},[398],[395,3098,3100,3169,3190],{"className":3099,"ariaHidden":403},[402],[395,3101,3103,3107,3154,3157,3160,3163,3166],{"className":3102},[407],[395,3104],{"className":3105,"style":3106},[411],"height:1.0497em;vertical-align:-0.2997em;",[395,3108,3110,3117],{"className":3109},[1574],[395,3111,3116],{"className":3112,"style":3115},[1574,3113,3114],"op-symbol","small-op","position:relative;top:0em;","∑",[395,3118,3120],{"className":3119},[465],[395,3121,3123,3145],{"className":3122},[469,470],[395,3124,3126,3142],{"className":3125},[474],[395,3127,3130],{"className":3128,"style":3129},[478],"height:0.162em;",[395,3131,3133,3136],{"style":3132},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[395,3134],{"className":3135,"style":487},[486],[395,3137,3139],{"className":3138},[491,492,493,494],[395,3140,461],{"className":3141},[416,417,494],[395,3143,503],{"className":3144},[502],[395,3146,3148],{"className":3147},[474],[395,3149,3152],{"className":3150,"style":3151},[478],"height:0.2997em;",[395,3153],{},[395,3155,1511],{"className":3156},[422],[395,3158,461],{"className":3159},[416,417],[395,3161],{"className":3162,"style":2132},[516],[395,3164,2815],{"className":3165},[2136],[395,3167],{"className":3168,"style":2132},[516],[395,3170,3172,3175,3178,3181,3184,3187],{"className":3171},[407],[395,3173],{"className":3174,"style":412},[411],[395,3176,498],{"className":3177},[416],[395,3179,1545],{"className":3180},[435],[395,3182],{"className":3183,"style":517},[516],[395,3185,891],{"className":3186},[521],[395,3188],{"className":3189,"style":517},[516],[395,3191,3193,3196,3200,3203,3232],{"className":3192},[407],[395,3194],{"className":3195,"style":1502},[411],[395,3197,3199],{"className":3198},[416],"Θ",[395,3201,1511],{"className":3202},[422],[395,3204,3206,3209],{"className":3205},[416],[395,3207,431],{"className":3208},[416,417],[395,3210,3212],{"className":3211},[465],[395,3213,3215],{"className":3214},[469],[395,3216,3218],{"className":3217},[474],[395,3219,3221],{"className":3220,"style":1530},[478],[395,3222,3223,3226],{"style":1475},[395,3224],{"className":3225,"style":487},[486],[395,3227,3229],{"className":3228},[491,492,493,494],[395,3230,561],{"className":3231},[416,494],[395,3233,1545],{"className":3234},[435]," time and ",[395,3237,3239],{"className":3238},[398],[395,3240,3242],{"className":3241,"ariaHidden":403},[402],[395,3243,3245,3248,3251,3254,3257],{"className":3244},[407],[395,3246],{"className":3247,"style":412},[411],[395,3249,3199],{"className":3250},[416],[395,3252,1511],{"className":3253},[422],[395,3255,431],{"className":3256},[416,417],[395,3258,1545],{"className":3259},[435]," space.",[3262,3263,3267],"pre",{"className":3264,"code":3265,"language":3266,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{LIS-Quadratic}(a[1..n])$ — length and parent pointers\nnumber: 1\nfor $i \\gets 1$ to $n$ do\n  $L[i] \\gets 1$ ; $\\ \\mathit{prev}[i] \\gets \\text{nil}$ \u002F\u002F singleton\n  for $j \\gets 1$ to $i - 1$ do\n    if $a[j] \u003C a[i]$ and $L[j] + 1 > L[i]$ then\n      $L[i] \\gets L[j] + 1$\n      $\\mathit{prev}[i] \\gets j$ \u002F\u002F best predecessor\n$\\mathit{best} \\gets \\arg\\max_i L[i]$\nreturn $L[\\mathit{best}]$ and the chain $\\mathit{best}, \\mathit{prev}[\\mathit{best}], \\dots$\n","algorithm",[3268,3269,3270,3276,3281,3286,3291,3296,3301,3306,3311,3316],"code",{"__ignoreMap":376},[395,3271,3273],{"class":3272,"line":6},"line",[395,3274,3275],{},"caption: $\\textsc{LIS-Quadratic}(a[1..n])$ — length and parent pointers\n",[395,3277,3278],{"class":3272,"line":18},[395,3279,3280],{},"number: 1\n",[395,3282,3283],{"class":3272,"line":24},[395,3284,3285],{},"for $i \\gets 1$ to $n$ do\n",[395,3287,3288],{"class":3272,"line":73},[395,3289,3290],{},"  $L[i] \\gets 1$ ; $\\ \\mathit{prev}[i] \\gets \\text{nil}$ \u002F\u002F singleton\n",[395,3292,3293],{"class":3272,"line":102},[395,3294,3295],{},"  for $j \\gets 1$ to $i - 1$ do\n",[395,3297,3298],{"class":3272,"line":108},[395,3299,3300],{},"    if $a[j] \u003C a[i]$ and $L[j] + 1 > L[i]$ then\n",[395,3302,3303],{"class":3272,"line":116},[395,3304,3305],{},"      $L[i] \\gets L[j] + 1$\n",[395,3307,3308],{"class":3272,"line":196},[395,3309,3310],{},"      $\\mathit{prev}[i] \\gets j$ \u002F\u002F best predecessor\n",[395,3312,3313],{"class":3272,"line":202},[395,3314,3315],{},"$\\mathit{best} \\gets \\arg\\max_i L[i]$\n",[395,3317,3318],{"class":3272,"line":283},[395,3319,3320],{},"return $L[\\mathit{best}]$ and the chain $\\mathit{best}, \\mathit{prev}[\\mathit{best}], \\dots$\n",[381,3322,3323,3326,3327,3348,3349,3369,3370,3385,3386,3404,3405,3408,3409,3460],{},[390,3324,3325],{},"Reconstruction."," The ",[395,3328,3330],{"className":3329},[398],[395,3331,3333],{"className":3332,"ariaHidden":403},[402],[395,3334,3336,3340],{"className":3335},[407],[395,3337],{"className":3338,"style":3339},[411],"height:0.625em;vertical-align:-0.1944em;",[395,3341,3343],{"className":3342},[416],[395,3344,3347],{"className":3345},[416,3346],"mathit","prev"," array is a forest of parent pointers: to\nrecover an actual LIS, find the index ",[395,3350,3352],{"className":3351},[398],[395,3353,3355],{"className":3354,"ariaHidden":403},[402],[395,3356,3358,3362],{"className":3357},[407],[395,3359],{"className":3360,"style":3361},[411],"height:0.6944em;",[395,3363,3365],{"className":3364},[416],[395,3366,3368],{"className":3367},[416,3346],"best"," maximizing ",[395,3371,3373],{"className":3372},[398],[395,3374,3376],{"className":3375,"ariaHidden":403},[402],[395,3377,3379,3382],{"className":3378},[407],[395,3380],{"className":3381,"style":2521},[411],[395,3383,1729],{"className":3384},[416,417],", then follow\n",[395,3387,3389],{"className":3388},[398],[395,3390,3392],{"className":3391,"ariaHidden":403},[402],[395,3393,3395,3398],{"className":3394},[407],[395,3396],{"className":3397,"style":3339},[411],[395,3399,3401],{"className":3400},[416],[395,3402,3347],{"className":3403},[416,3346]," backwards until it hits ",[3268,3406,3407],{},"nil",", reversing the collected indices.\nThis costs ",[395,3410,3412],{"className":3411},[398],[395,3413,3415,3442],{"className":3414,"ariaHidden":403},[402],[395,3416,3418,3421,3424,3427,3430,3433,3436,3439],{"className":3417},[407],[395,3419],{"className":3420,"style":412},[411],[395,3422,1507],{"className":3423,"style":1506},[416,417],[395,3425,1511],{"className":3426},[422],[395,3428,640],{"className":3429,"style":639},[416,417],[395,3431,1545],{"className":3432},[435],[395,3434],{"className":3435,"style":517},[516],[395,3437,1869],{"className":3438},[521],[395,3440],{"className":3441,"style":517},[516],[395,3443,3445,3448,3451,3454,3457],{"className":3444},[407],[395,3446],{"className":3447,"style":412},[411],[395,3449,1507],{"className":3450,"style":1506},[416,417],[395,3452,1511],{"className":3453},[422],[395,3455,431],{"className":3456},[416,417],[395,3458,1545],{"className":3459},[435],", cheap beside the fill.",[1077,3462,3464,3737],{"className":3463},[1080,1081],[1083,3465,3469],{"xmlns":1085,"width":3466,"height":3467,"viewBox":3468},"356.420","108.023","-75 -75 267.315 81.017",[1090,3470,3471,3484,3487,3494,3506,3509,3515,3527,3539,3542,3549,3552,3559,3569,3578,3587,3596,3605,3614,3623,3632,3638,3644,3650,3656,3662,3668,3674,3680,3710,3720,3729],{"stroke":1092,"style":1093},[1090,3472,3473,3476],{"stroke":1153,"style":1155},[1098,3474],{"fill":1100,"d":3475},"M-35.932-33.96h25.607v-25.608h-25.607Z",[1090,3477,3479],{"transform":3478},"translate(-2.312 2.9)",[1098,3480],{"d":3481,"fill":1092,"stroke":1092,"className":3482,"style":3483},"M-22.227-47.486L-22.271-47.486Q-22.069-47.169-21.682-47.011Q-21.295-46.853-20.869-46.853Q-20.333-46.853-20.094-47.288Q-19.854-47.723-19.854-48.303Q-19.854-48.883-20.100-49.323Q-20.346-49.762-20.878-49.762L-21.498-49.762Q-21.524-49.762-21.557-49.791Q-21.590-49.819-21.590-49.841L-21.590-49.942Q-21.590-49.973-21.561-49.997Q-21.533-50.021-21.498-50.021L-20.979-50.061Q-20.513-50.061-20.267-50.533Q-20.021-51.006-20.021-51.524Q-20.021-51.951-20.234-52.225Q-20.447-52.500-20.869-52.500Q-21.212-52.500-21.537-52.370Q-21.862-52.241-22.047-51.986L-22.021-51.986Q-21.818-51.986-21.682-51.845Q-21.546-51.704-21.546-51.507Q-21.546-51.309-21.680-51.175Q-21.814-51.041-22.012-51.041Q-22.214-51.041-22.352-51.175Q-22.491-51.309-22.491-51.507Q-22.491-52.096-21.988-52.427Q-21.484-52.759-20.869-52.759Q-20.491-52.759-20.089-52.619Q-19.687-52.478-19.419-52.199Q-19.151-51.920-19.151-51.524Q-19.151-50.975-19.505-50.538Q-19.858-50.100-20.399-49.916Q-20.008-49.837-19.663-49.613Q-19.318-49.389-19.107-49.048Q-18.896-48.707-18.896-48.312Q-18.896-47.930-19.059-47.607Q-19.221-47.284-19.513-47.048Q-19.806-46.813-20.153-46.690Q-20.500-46.567-20.869-46.567Q-21.317-46.567-21.748-46.728Q-22.179-46.888-22.460-47.215Q-22.741-47.543-22.741-48Q-22.741-48.215-22.594-48.358Q-22.447-48.501-22.227-48.501Q-22.016-48.501-21.871-48.356Q-21.726-48.211-21.726-48Q-21.726-47.789-21.873-47.637Q-22.021-47.486-22.227-47.486",[1118],"stroke-width:0.270",[1098,3485],{"fill":1100,"d":3486},"M-7.48-33.96h25.608v-25.608H-7.479Z",[1090,3488,3490],{"transform":3489},"translate(26.14 2.9)",[1098,3491],{"d":3492,"fill":1092,"stroke":1092,"className":3493,"style":3483},"M-19.221-46.765L-22.253-46.765L-22.253-47.081Q-21.102-47.081-21.102-47.376L-21.102-52.100Q-21.590-51.867-22.311-51.867L-22.311-52.183Q-21.181-52.183-20.619-52.759L-20.474-52.759Q-20.439-52.759-20.406-52.726Q-20.373-52.693-20.373-52.658L-20.373-47.376Q-20.373-47.081-19.221-47.081",[1118],[1090,3495,3496,3499],{"stroke":1153,"style":1155},[1098,3497],{"fill":1100,"d":3498},"M20.973-33.96h25.608v-25.608H20.973Z",[1090,3500,3502],{"transform":3501},"translate(54.593 2.9)",[1098,3503],{"d":3504,"fill":1092,"stroke":1092,"className":3505,"style":3483},"M-20.430-48.242L-22.869-48.242L-22.869-48.558L-20.043-52.706Q-19.999-52.759-19.933-52.759L-19.779-52.759Q-19.740-52.759-19.707-52.726Q-19.674-52.693-19.674-52.649L-19.674-48.558L-18.773-48.558L-18.773-48.242L-19.674-48.242L-19.674-47.376Q-19.674-47.081-18.773-47.081L-18.773-46.765L-21.326-46.765L-21.326-47.081Q-20.966-47.081-20.698-47.136Q-20.430-47.191-20.430-47.376L-20.430-48.242M-20.373-51.731L-22.535-48.558L-20.373-48.558",[1118],[1098,3507],{"fill":1100,"d":3508},"M49.426-33.96h25.608v-25.608H49.426Z",[1090,3510,3512],{"transform":3511},"translate(83.046 2.9)",[1098,3513],{"d":3492,"fill":1092,"stroke":1092,"className":3514,"style":3483},[1118],[1090,3516,3517,3520],{"stroke":1153,"style":1155},[1098,3518],{"fill":1100,"d":3519},"M77.879-33.96h25.607v-25.608H77.88Z",[1090,3521,3523],{"transform":3522},"translate(111.498 2.9)",[1098,3524],{"d":3525,"fill":1092,"stroke":1092,"className":3526,"style":3483},"M-22.302-47.771Q-22.161-47.358-21.801-47.106Q-21.441-46.853-21.005-46.853Q-20.553-46.853-20.287-47.106Q-20.021-47.358-19.918-47.743Q-19.815-48.127-19.815-48.584Q-19.815-50.285-20.724-50.285Q-21.045-50.285-21.274-50.191Q-21.502-50.096-21.632-49.977Q-21.761-49.859-21.873-49.720Q-21.985-49.582-22.021-49.573L-22.104-49.573Q-22.148-49.573-22.179-49.604Q-22.210-49.635-22.210-49.683L-22.210-52.680Q-22.210-52.711-22.174-52.735Q-22.139-52.759-22.113-52.759L-22.073-52.759Q-21.441-52.469-20.768-52.469Q-20.096-52.469-19.454-52.759L-19.428-52.759Q-19.397-52.759-19.364-52.737Q-19.331-52.715-19.331-52.680L-19.331-52.579Q-19.331-52.575-19.340-52.557Q-19.349-52.539-19.349-52.535Q-19.665-52.140-20.135-51.918Q-20.606-51.696-21.102-51.696Q-21.511-51.696-21.893-51.806L-21.893-50.087Q-21.436-50.544-20.724-50.544Q-20.214-50.544-19.815-50.263Q-19.415-49.982-19.193-49.527Q-18.971-49.072-18.971-48.567Q-18.971-48.017-19.250-47.558Q-19.529-47.099-19.995-46.833Q-20.461-46.567-21.005-46.567Q-21.445-46.567-21.829-46.794Q-22.214-47.020-22.442-47.400Q-22.671-47.780-22.671-48.224Q-22.671-48.417-22.539-48.549Q-22.407-48.681-22.210-48.681Q-22.078-48.681-21.974-48.622Q-21.871-48.562-21.812-48.459Q-21.753-48.356-21.753-48.224Q-21.753-48.026-21.880-47.894Q-22.007-47.763-22.210-47.763Q-22.271-47.763-22.302-47.771",[1118],[1090,3528,3529,3532],{"stroke":1153,"style":1155},[1098,3530],{"fill":1100,"d":3531},"M106.332-33.96h25.607v-25.608h-25.607Z",[1090,3533,3535],{"transform":3534},"translate(139.951 2.9)",[1098,3536],{"d":3537,"fill":1092,"stroke":1092,"className":3538,"style":3483},"M-22.065-47.152Q-21.818-46.853-21.212-46.853Q-20.931-46.853-20.691-46.991Q-20.452-47.130-20.274-47.352Q-20.096-47.574-19.986-47.837Q-19.753-48.413-19.753-49.529Q-19.920-49.164-20.225-48.940Q-20.531-48.716-20.913-48.716Q-21.449-48.716-21.865-48.995Q-22.280-49.274-22.511-49.740Q-22.741-50.206-22.741-50.733Q-22.741-51.146-22.594-51.515Q-22.447-51.885-22.183-52.161Q-21.920-52.438-21.550-52.599Q-21.181-52.759-20.768-52.759Q-20.210-52.759-19.836-52.467Q-19.463-52.175-19.259-51.711Q-19.054-51.247-18.975-50.731Q-18.896-50.215-18.896-49.683Q-18.896-48.967-19.164-48.244Q-19.432-47.521-19.955-47.044Q-20.478-46.567-21.203-46.567Q-21.753-46.567-22.130-46.816Q-22.508-47.064-22.508-47.582Q-22.508-47.701-22.451-47.804Q-22.394-47.908-22.293-47.967Q-22.192-48.026-22.065-48.026Q-21.880-48.026-21.757-47.894Q-21.634-47.763-21.634-47.582Q-21.634-47.407-21.761-47.279Q-21.889-47.152-22.065-47.152M-20.869-48.980Q-20.500-48.980-20.252-49.222Q-20.003-49.463-19.887-49.821Q-19.771-50.180-19.771-50.553Q-19.771-50.663-19.779-50.716Q-19.775-50.729-19.773-50.740Q-19.771-50.751-19.771-50.768Q-19.771-51.423-19.986-51.962Q-20.201-52.500-20.768-52.500Q-21.128-52.500-21.357-52.350Q-21.586-52.201-21.702-51.944Q-21.818-51.687-21.851-51.406Q-21.884-51.124-21.884-50.751L-21.884-50.716Q-21.884-50.390-21.858-50.103Q-21.832-49.815-21.733-49.556Q-21.634-49.296-21.423-49.138Q-21.212-48.980-20.869-48.980",[1118],[1098,3540],{"fill":1100,"d":3541},"M134.784-33.96h25.608v-25.608h-25.608Z",[1090,3543,3545],{"transform":3544},"translate(168.404 2.9)",[1098,3546],{"d":3547,"fill":1092,"stroke":1092,"className":3548,"style":3483},"M-19.221-46.765L-22.671-46.765L-22.671-46.998Q-22.671-47.011-22.640-47.042L-21.186-48.619Q-20.720-49.116-20.467-49.421Q-20.214-49.727-20.023-50.138Q-19.832-50.549-19.832-50.988Q-19.832-51.577-20.155-52.010Q-20.478-52.443-21.058-52.443Q-21.322-52.443-21.568-52.333Q-21.814-52.223-21.990-52.036Q-22.166-51.849-22.262-51.599L-22.183-51.599Q-21.981-51.599-21.838-51.463Q-21.695-51.327-21.695-51.111Q-21.695-50.905-21.838-50.766Q-21.981-50.628-22.183-50.628Q-22.385-50.628-22.528-50.771Q-22.671-50.913-22.671-51.111Q-22.671-51.573-22.434-51.946Q-22.196-52.320-21.796-52.539Q-21.397-52.759-20.948-52.759Q-20.425-52.759-19.971-52.544Q-19.516-52.328-19.243-51.929Q-18.971-51.529-18.971-50.988Q-18.971-50.593-19.142-50.239Q-19.314-49.885-19.579-49.606Q-19.845-49.327-20.296-48.942Q-20.746-48.558-20.825-48.483L-21.849-47.521L-21.032-47.521Q-20.381-47.521-19.944-47.532Q-19.507-47.543-19.476-47.565Q-19.406-47.648-19.351-47.888Q-19.296-48.127-19.256-48.395L-18.971-48.395",[1118],[1098,3550],{"fill":1100,"d":3551},"M163.237-33.96h25.608v-25.608h-25.608Z",[1090,3553,3555],{"transform":3554},"translate(196.857 2.9)",[1098,3556],{"d":3557,"fill":1092,"stroke":1092,"className":3558,"style":3483},"M-20.816-46.567Q-21.550-46.567-21.981-47.048Q-22.412-47.530-22.576-48.222Q-22.741-48.914-22.741-49.661Q-22.741-50.390-22.449-51.113Q-22.157-51.836-21.603-52.298Q-21.049-52.759-20.302-52.759Q-19.806-52.759-19.470-52.493Q-19.133-52.227-19.133-51.744Q-19.133-51.564-19.261-51.436Q-19.388-51.309-19.564-51.309Q-19.744-51.309-19.874-51.434Q-20.003-51.559-20.003-51.744Q-20.003-51.858-19.946-51.962Q-19.889-52.065-19.788-52.124Q-19.687-52.183-19.564-52.183Q-19.560-52.183-19.555-52.181Q-19.551-52.179-19.546-52.175Q-19.661-52.342-19.869-52.421Q-20.078-52.500-20.302-52.500Q-20.746-52.500-21.104-52.199Q-21.462-51.898-21.651-51.445Q-21.884-50.839-21.884-49.806Q-21.713-50.171-21.412-50.399Q-21.111-50.628-20.724-50.628Q-20.320-50.628-19.975-50.461Q-19.630-50.294-19.393-50.013Q-19.155-49.731-19.026-49.369Q-18.896-49.006-18.896-48.602Q-18.896-48.057-19.140-47.591Q-19.384-47.125-19.823-46.846Q-20.263-46.567-20.816-46.567M-20.816-46.853Q-20.355-46.853-20.120-47.110Q-19.885-47.367-19.819-47.741Q-19.753-48.114-19.753-48.584L-19.753-48.619Q-19.753-49.107-19.810-49.472Q-19.867-49.837-20.096-50.100Q-20.324-50.364-20.768-50.364Q-21.137-50.364-21.388-50.120Q-21.638-49.876-21.753-49.512Q-21.867-49.147-21.867-48.800Q-21.867-48.681-21.858-48.619Q-21.858-48.602-21.860-48.591Q-21.862-48.580-21.867-48.567Q-21.867-47.916-21.629-47.385Q-21.392-46.853-20.816-46.853",[1118],[1090,3560,3562],{"fill":3561,"stroke":3561},"gray",[1090,3563,3565],{"transform":3564},"translate(-1.993 -17.661)",[1098,3566],{"d":3567,"fill":3561,"stroke":3561,"className":3568,"style":1207},"M-19.802-46.765L-22.332-46.765L-22.332-47.045Q-21.364-47.045-21.364-47.254L-21.364-50.873Q-21.757-50.685-22.379-50.685L-22.379-50.966Q-21.962-50.966-21.598-51.067Q-21.234-51.167-20.978-51.413L-20.852-51.413Q-20.787-51.396-20.770-51.328L-20.770-47.254Q-20.770-47.045-19.802-47.045",[1118],[1090,3570,3571],{"fill":3561,"stroke":3561},[1090,3572,3574],{"transform":3573},"translate(26.46 -17.661)",[1098,3575],{"d":3576,"fill":3561,"stroke":3561,"className":3577,"style":1207},"M-19.802-46.765L-22.687-46.765L-22.687-46.967Q-22.687-46.997-22.660-47.025L-21.412-48.242Q-21.340-48.317-21.298-48.359Q-21.255-48.402-21.176-48.481Q-20.763-48.894-20.532-49.252Q-20.301-49.609-20.301-50.033Q-20.301-50.265-20.380-50.468Q-20.459-50.672-20.600-50.822Q-20.742-50.973-20.937-51.053Q-21.132-51.133-21.364-51.133Q-21.675-51.133-21.933-50.974Q-22.191-50.815-22.321-50.538L-22.301-50.538Q-22.133-50.538-22.026-50.427Q-21.918-50.316-21.918-50.152Q-21.918-49.995-22.027-49.882Q-22.137-49.769-22.301-49.769Q-22.461-49.769-22.574-49.882Q-22.687-49.995-22.687-50.152Q-22.687-50.528-22.479-50.815Q-22.270-51.102-21.935-51.258Q-21.600-51.413-21.245-51.413Q-20.821-51.413-20.441-51.255Q-20.062-51.096-19.828-50.779Q-19.594-50.463-19.594-50.033Q-19.594-49.722-19.734-49.453Q-19.874-49.185-20.079-48.980Q-20.284-48.775-20.647-48.493Q-21.009-48.211-21.118-48.115L-21.973-47.387L-21.330-47.387Q-21.067-47.387-20.778-47.389Q-20.489-47.390-20.271-47.399Q-20.052-47.408-20.035-47.425Q-19.973-47.490-19.936-47.657Q-19.898-47.825-19.860-48.067L-19.594-48.067",[1118],[1090,3579,3580],{"fill":3561,"stroke":3561},[1090,3581,3583],{"transform":3582},"translate(54.912 -17.661)",[1098,3584],{"d":3585,"fill":3561,"stroke":3561,"className":3586,"style":1207},"M-22.332-47.312Q-22.212-47.155-22.021-47.056Q-21.829-46.956-21.614-46.917Q-21.399-46.878-21.176-46.878Q-20.879-46.878-20.684-47.033Q-20.489-47.189-20.399-47.443Q-20.308-47.698-20.308-47.982Q-20.308-48.276-20.400-48.527Q-20.493-48.778-20.691-48.934Q-20.889-49.089-21.183-49.089L-21.699-49.089Q-21.727-49.089-21.752-49.115Q-21.778-49.140-21.778-49.164L-21.778-49.236Q-21.778-49.267-21.752-49.289Q-21.727-49.311-21.699-49.311L-21.258-49.342Q-20.896-49.342-20.676-49.699Q-20.455-50.057-20.455-50.446Q-20.455-50.774-20.650-50.978Q-20.845-51.181-21.176-51.181Q-21.463-51.181-21.716-51.097Q-21.969-51.014-22.133-50.826Q-21.986-50.826-21.886-50.711Q-21.785-50.597-21.785-50.446Q-21.785-50.296-21.891-50.186Q-21.997-50.077-22.154-50.077Q-22.315-50.077-22.424-50.186Q-22.533-50.296-22.533-50.446Q-22.533-50.771-22.325-50.990Q-22.116-51.208-21.800-51.311Q-21.484-51.413-21.176-51.413Q-20.858-51.413-20.530-51.309Q-20.202-51.205-19.975-50.983Q-19.748-50.761-19.748-50.446Q-19.748-50.012-20.035-49.687Q-20.322-49.363-20.756-49.216Q-20.445-49.151-20.165-48.985Q-19.884-48.819-19.707-48.561Q-19.529-48.303-19.529-47.982Q-19.529-47.572-19.773-47.262Q-20.018-46.953-20.399-46.789Q-20.780-46.625-21.176-46.625Q-21.545-46.625-21.903-46.738Q-22.260-46.850-22.504-47.100Q-22.749-47.349-22.749-47.719Q-22.749-47.890-22.632-48.002Q-22.516-48.115-22.345-48.115Q-22.236-48.115-22.145-48.064Q-22.055-48.013-22-47.920Q-21.945-47.828-21.945-47.719Q-21.945-47.551-22.058-47.432Q-22.171-47.312-22.332-47.312",[1118],[1090,3588,3589],{"fill":3561,"stroke":3561},[1090,3590,3592],{"transform":3591},"translate(83.365 -17.661)",[1098,3593],{"d":3594,"fill":3561,"stroke":3561,"className":3595,"style":1207},"M-20.811-47.913L-22.855-47.913L-22.855-48.194L-20.524-51.366Q-20.489-51.413-20.424-51.413L-20.288-51.413Q-20.243-51.413-20.216-51.386Q-20.189-51.359-20.189-51.314L-20.189-48.194L-19.426-48.194L-19.426-47.913L-20.189-47.913L-20.189-47.254Q-20.189-47.045-19.433-47.045L-19.433-46.765L-21.566-46.765L-21.566-47.045Q-20.811-47.045-20.811-47.254L-20.811-47.913M-20.763-50.638L-22.554-48.194L-20.763-48.194",[1118],[1090,3597,3598],{"fill":3561,"stroke":3561},[1090,3599,3601],{"transform":3600},"translate(111.818 -17.661)",[1098,3602],{"d":3603,"fill":3561,"stroke":3561,"className":3604,"style":1207},"M-22.321-47.527L-22.352-47.527Q-22.215-47.230-21.918-47.054Q-21.621-46.878-21.293-46.878Q-20.930-46.878-20.703-47.056Q-20.476-47.233-20.382-47.522Q-20.288-47.811-20.288-48.173Q-20.288-48.488-20.342-48.773Q-20.397-49.058-20.570-49.264Q-20.742-49.469-21.057-49.469Q-21.330-49.469-21.513-49.402Q-21.696-49.335-21.800-49.246Q-21.904-49.158-22-49.048Q-22.096-48.939-22.140-48.929L-22.219-48.929Q-22.291-48.946-22.308-49.017L-22.308-51.335Q-22.308-51.369-22.284-51.391Q-22.260-51.413-22.226-51.413L-22.198-51.413Q-21.911-51.297-21.643-51.243Q-21.375-51.188-21.098-51.188Q-20.821-51.188-20.551-51.243Q-20.281-51.297-20.001-51.413L-19.977-51.413Q-19.942-51.413-19.919-51.390Q-19.895-51.366-19.895-51.335L-19.895-51.266Q-19.895-51.239-19.915-51.219Q-20.189-50.904-20.573-50.728Q-20.958-50.552-21.371-50.552Q-21.710-50.552-22.027-50.638L-22.027-49.356Q-21.631-49.691-21.057-49.691Q-20.653-49.691-20.317-49.481Q-19.980-49.270-19.787-48.918Q-19.594-48.566-19.594-48.166Q-19.594-47.835-19.734-47.549Q-19.874-47.264-20.118-47.054Q-20.363-46.844-20.665-46.734Q-20.968-46.625-21.286-46.625Q-21.645-46.625-21.971-46.789Q-22.297-46.953-22.492-47.245Q-22.687-47.537-22.687-47.900Q-22.687-48.050-22.581-48.156Q-22.475-48.262-22.321-48.262Q-22.168-48.262-22.063-48.158Q-21.959-48.054-21.959-47.900Q-21.959-47.743-22.063-47.635Q-22.168-47.527-22.321-47.527",[1118],[1090,3606,3607],{"fill":3561,"stroke":3561},[1090,3608,3610],{"transform":3609},"translate(140.27 -17.661)",[1098,3611],{"d":3612,"fill":3561,"stroke":3561,"className":3613,"style":1207},"M-21.139-46.625Q-21.597-46.625-21.915-46.840Q-22.232-47.056-22.414-47.408Q-22.595-47.760-22.672-48.180Q-22.749-48.600-22.749-49.028Q-22.749-49.612-22.496-50.168Q-22.243-50.723-21.773-51.068Q-21.303-51.413-20.705-51.413Q-20.295-51.413-20.011-51.215Q-19.727-51.017-19.727-50.614Q-19.727-50.518-19.773-50.439Q-19.819-50.361-19.900-50.316Q-19.980-50.272-20.069-50.272Q-20.216-50.272-20.317-50.369Q-20.418-50.467-20.418-50.614Q-20.418-50.744-20.327-50.851Q-20.236-50.959-20.103-50.959Q-20.291-51.181-20.705-51.181Q-21.019-51.181-21.293-51.017Q-21.566-50.853-21.733-50.579Q-21.921-50.289-21.986-49.923Q-22.051-49.557-22.051-49.103Q-21.901-49.397-21.636-49.575Q-21.371-49.752-21.057-49.752Q-20.626-49.752-20.277-49.546Q-19.929-49.339-19.729-48.983Q-19.529-48.628-19.529-48.201Q-19.529-47.756-19.746-47.396Q-19.963-47.035-20.336-46.830Q-20.708-46.625-21.139-46.625M-21.139-46.878Q-20.763-46.878-20.559-47.061Q-20.356-47.244-20.293-47.527Q-20.230-47.811-20.230-48.201Q-20.230-48.587-20.284-48.867Q-20.339-49.147-20.534-49.339Q-20.729-49.530-21.098-49.530Q-21.388-49.530-21.600-49.354Q-21.812-49.178-21.920-48.905Q-22.027-48.631-22.027-48.348L-22.027-48.207L-22.027-48.166Q-22.027-47.661-21.816-47.269Q-21.604-46.878-21.139-46.878",[1118],[1090,3615,3616],{"fill":3561,"stroke":3561},[1090,3617,3619],{"transform":3618},"translate(168.723 -17.661)",[1098,3620],{"d":3621,"fill":3561,"stroke":3561,"className":3622,"style":1207},"M-21.692-46.973Q-21.692-47.479-21.563-47.987Q-21.433-48.494-21.195-48.956Q-20.958-49.417-20.623-49.838L-19.977-50.651L-20.790-50.651Q-21.375-50.651-21.771-50.643Q-22.168-50.634-22.191-50.614Q-22.294-50.497-22.373-49.971L-22.639-49.971L-22.393-51.495L-22.127-51.495L-22.127-51.475Q-22.127-51.407-22.051-51.364Q-21.976-51.321-21.898-51.314Q-21.706-51.290-21.511-51.284Q-21.316-51.277-21.125-51.275Q-20.934-51.273-20.735-51.273L-19.314-51.273L-19.314-51.085Q-19.324-51.037-19.334-51.027L-20.390-49.704Q-20.609-49.431-20.732-49.118Q-20.855-48.806-20.913-48.457Q-20.971-48.108-20.985-47.777Q-20.999-47.445-20.999-46.973Q-20.999-46.823-21.098-46.724Q-21.197-46.625-21.344-46.625Q-21.494-46.625-21.593-46.724Q-21.692-46.823-21.692-46.973",[1118],[1090,3624,3625],{"fill":3561,"stroke":3561},[1090,3626,3628],{"transform":3627},"translate(197.176 -17.661)",[1098,3629],{"d":3630,"fill":3561,"stroke":3561,"className":3631,"style":1207},"M-22.749-47.842Q-22.749-48.283-22.446-48.604Q-22.144-48.925-21.692-49.117L-21.932-49.257Q-22.202-49.417-22.368-49.675Q-22.533-49.933-22.533-50.231Q-22.533-50.583-22.328-50.855Q-22.123-51.126-21.802-51.270Q-21.481-51.413-21.139-51.413Q-20.817-51.413-20.494-51.297Q-20.171-51.181-19.960-50.940Q-19.748-50.699-19.748-50.364Q-19.748-50.002-19.992-49.739Q-20.236-49.475-20.616-49.298L-20.216-49.062Q-20.021-48.949-19.862-48.780Q-19.703-48.611-19.616-48.402Q-19.529-48.194-19.529-47.961Q-19.529-47.558-19.763-47.254Q-19.997-46.950-20.371-46.787Q-20.746-46.625-21.139-46.625Q-21.525-46.625-21.894-46.762Q-22.263-46.898-22.506-47.175Q-22.749-47.452-22.749-47.842M-22.301-47.842Q-22.301-47.555-22.132-47.332Q-21.962-47.110-21.694-46.994Q-21.426-46.878-21.139-46.878Q-20.701-46.878-20.339-47.095Q-19.977-47.312-19.977-47.719Q-19.977-47.920-20.105-48.098Q-20.233-48.276-20.411-48.375L-21.433-48.970Q-21.672-48.860-21.870-48.694Q-22.068-48.529-22.185-48.313Q-22.301-48.098-22.301-47.842M-21.778-49.971L-20.858-49.438Q-20.551-49.598-20.349-49.831Q-20.148-50.063-20.148-50.364Q-20.148-50.603-20.293-50.793Q-20.438-50.983-20.670-51.082Q-20.903-51.181-21.139-51.181Q-21.361-51.181-21.590-51.111Q-21.819-51.041-21.976-50.884Q-22.133-50.726-22.133-50.497Q-22.133-50.183-21.778-49.971",[1118],[1090,3633,3635],{"transform":3634},"translate(-2.312 45.58)",[1098,3636],{"d":3492,"fill":1092,"stroke":1092,"className":3637,"style":3483},[1118],[1090,3639,3641],{"transform":3640},"translate(26.14 45.58)",[1098,3642],{"d":3492,"fill":1092,"stroke":1092,"className":3643,"style":3483},[1118],[1090,3645,3647],{"transform":3646},"translate(54.593 45.58)",[1098,3648],{"d":3547,"fill":1092,"stroke":1092,"className":3649,"style":3483},[1118],[1090,3651,3653],{"transform":3652},"translate(83.046 45.58)",[1098,3654],{"d":3492,"fill":1092,"stroke":1092,"className":3655,"style":3483},[1118],[1090,3657,3659],{"transform":3658},"translate(111.498 45.58)",[1098,3660],{"d":3481,"fill":1092,"stroke":1092,"className":3661,"style":3483},[1118],[1090,3663,3665],{"transform":3664},"translate(139.951 45.58)",[1098,3666],{"d":3504,"fill":1092,"stroke":1092,"className":3667,"style":3483},[1118],[1090,3669,3671],{"transform":3670},"translate(168.404 45.58)",[1098,3672],{"d":3547,"fill":1092,"stroke":1092,"className":3673,"style":3483},[1118],[1090,3675,3677],{"transform":3676},"translate(196.857 45.58)",[1098,3678],{"d":3504,"fill":1092,"stroke":1092,"className":3679,"style":3483},[1118],[1090,3681,3682],{"fill":3561,"stroke":3561},[1090,3683,3685,3692,3698,3704],{"fill":3561,"stroke":1100,"fontSize":3684},"7",[1090,3686,3688],{"transform":3687},"translate(-39.142 44.43)",[1098,3689],{"d":3690,"fill":3561,"stroke":3561,"className":3691,"style":1207},"M-18.787-46.765L-22.574-46.765Q-22.667-46.789-22.667-46.878L-22.639-46.991Q-22.595-47.038-22.554-47.045Q-22.147-47.045-22-47.079Q-21.877-47.114-21.839-47.291L-20.896-51.072Q-20.889-51.089-20.884-51.118Q-20.879-51.147-20.876-51.167Q-20.876-51.222-20.930-51.239Q-21.064-51.266-21.446-51.266Q-21.539-51.290-21.539-51.379L-21.511-51.489Q-21.484-51.536-21.426-51.547L-19.300-51.547Q-19.262-51.547-19.238-51.514Q-19.214-51.482-19.214-51.441L-19.242-51.328Q-19.273-51.273-19.320-51.266Q-19.867-51.266-20.042-51.225Q-20.178-51.184-20.223-51.020L-21.170-47.240Q-21.176-47.192-21.183-47.160Q-21.190-47.127-21.197-47.079Q-21.197-47.045-20.964-47.045L-20.216-47.045Q-19.672-47.045-19.320-47.216Q-18.968-47.387-18.753-47.708Q-18.538-48.030-18.333-48.570Q-18.309-48.614-18.251-48.635L-18.158-48.635Q-18.073-48.611-18.073-48.536Q-18.073-48.529-18.080-48.494L-18.705-46.827Q-18.739-46.772-18.787-46.765",[1118],[1090,3693,3694],{"transform":3687},[1098,3695],{"d":3696,"fill":3561,"stroke":3561,"className":3697,"style":1207},"M-15.612-45.015L-16.688-45.015L-16.688-52.015L-15.612-52.015L-15.612-51.673L-16.347-51.673L-16.347-45.357L-15.612-45.357",[1118],[1090,3699,3700],{"transform":3687},[1098,3701],{"d":3702,"fill":3561,"stroke":3561,"className":3703,"style":1207},"M-14.609-47.291Q-14.609-47.438-14.558-47.541L-13.970-49.055Q-13.895-49.257-13.895-49.397Q-13.895-49.629-14.055-49.629Q-14.336-49.629-14.525-49.358Q-14.715-49.086-14.804-48.754Q-14.814-48.689-14.876-48.689L-14.985-48.689Q-15.016-48.689-15.040-48.720Q-15.064-48.751-15.064-48.775L-15.064-48.802Q-14.995-49.062-14.855-49.299Q-14.715-49.537-14.505-49.694Q-14.295-49.851-14.042-49.851Q-13.860-49.851-13.707-49.780Q-13.553-49.708-13.457-49.571Q-13.361-49.434-13.361-49.257Q-13.361-49.110-13.413-49.004L-14.001-47.493Q-14.076-47.326-14.076-47.151Q-14.076-46.919-13.915-46.919Q-13.638-46.919-13.445-47.196Q-13.252-47.473-13.173-47.794Q-13.149-47.855-13.095-47.855L-12.985-47.855Q-12.951-47.855-12.929-47.830Q-12.907-47.804-12.907-47.773Q-12.907-47.760-12.914-47.746Q-12.975-47.496-13.115-47.255Q-13.255-47.015-13.466-46.856Q-13.676-46.697-13.929-46.697Q-14.206-46.697-14.407-46.859Q-14.609-47.021-14.609-47.291M-13.795-51.007Q-13.795-51.161-13.667-51.284Q-13.539-51.407-13.382-51.407Q-13.269-51.407-13.185-51.326Q-13.102-51.246-13.102-51.126Q-13.102-50.969-13.230-50.848Q-13.358-50.726-13.515-50.726Q-13.628-50.726-13.712-50.807Q-13.795-50.887-13.795-51.007",[1118],[1090,3705,3706],{"transform":3687},[1098,3707],{"d":3708,"fill":3561,"stroke":3561,"className":3709,"style":1207},"M-11.247-45.015L-12.323-45.015L-12.323-45.357L-11.589-45.357L-11.589-51.673L-12.323-51.673L-12.323-52.015L-11.247-52.015",[1118],[1090,3711,3713,3716],{"fill":1153,"stroke":1153,"style":3712},"stroke-width:.8",[1098,3714],{"fill":1100,"d":3715},"M119.135-33.36c-7.424 8.245-21.028 8.245-25.692 3.065",[1098,3717],{"d":3718,"style":3719},"m91.445-32.514 1.618 4.152.246-2.082 2.097-.027Z","stroke-width:.799968",[1090,3721,3722,3725],{"fill":1153,"stroke":1153,"style":3712},[1098,3723],{"fill":1100,"d":3724},"M90.683-33.36c-18.82 11.759-38.086 11.759-53.407 2.185",[1098,3726],{"d":3727,"style":3728},"m34.743-32.757 2.7 3.546-.337-2.07 2.008-.604Z","stroke-width:.799984",[1090,3730,3731,3734],{"fill":1153,"stroke":1153,"style":3712},[1098,3732],{"fill":1100,"d":3733},"M33.777-33.36C14.957-21.602-4.309-21.602-19.63-31.176",[1098,3735],{"d":3736,"style":3728},"m-22.162-32.757 2.7 3.546-.337-2.07 2.008-.604Z",[1271,3738,3740,3741,3843,3844,3862,3863,3878,3879,3912,3913,1063],{"className":3739},[1274],"Parent pointers for ",[395,3742,3744],{"className":3743},[398],[395,3745,3747,3765],{"className":3746,"ariaHidden":403},[402],[395,3748,3750,3753,3756,3759,3762],{"className":3749},[407],[395,3751],{"className":3752,"style":881},[411],[395,3754,418],{"className":3755},[416,417],[395,3757],{"className":3758,"style":517},[516],[395,3760,891],{"className":3761},[521],[395,3763],{"className":3764,"style":517},[516],[395,3766,3768,3771,3774,3777,3780,3783,3786,3789,3792,3795,3798,3801,3804,3807,3810,3813,3816,3819,3822,3825,3828,3831,3834,3837,3840],{"className":3767},[407],[395,3769],{"className":3770,"style":412},[411],[395,3772,423],{"className":3773},[422],[395,3775,907],{"className":3776},[416],[395,3778,912],{"className":3779},[911],[395,3781],{"className":3782,"style":916},[516],[395,3784,498],{"className":3785},[416],[395,3787,912],{"className":3788},[911],[395,3790],{"className":3791,"style":916},[516],[395,3793,929],{"className":3794},[416],[395,3796,912],{"className":3797},[911],[395,3799],{"className":3800,"style":916},[516],[395,3802,498],{"className":3803},[416],[395,3805,912],{"className":3806},[911],[395,3808],{"className":3809,"style":916},[516],[395,3811,948],{"className":3812},[416],[395,3814,912],{"className":3815},[911],[395,3817],{"className":3818,"style":916},[516],[395,3820,958],{"className":3821},[416],[395,3823,912],{"className":3824},[911],[395,3826],{"className":3827,"style":916},[516],[395,3829,561],{"className":3830},[416],[395,3832,912],{"className":3833},[911],[395,3835],{"className":3836,"style":916},[516],[395,3838,977],{"className":3839},[416],[395,3841,436],{"className":3842},[435],". Following ",[395,3845,3847],{"className":3846},[398],[395,3848,3850],{"className":3849,"ariaHidden":403},[402],[395,3851,3853,3856],{"className":3852},[407],[395,3854],{"className":3855,"style":3339},[411],[395,3857,3859],{"className":3858},[416],[395,3860,3347],{"className":3861},[416,3346]," back from the best endpoint (index ",[395,3864,3866],{"className":3865},[398],[395,3867,3869],{"className":3868,"ariaHidden":403},[402],[395,3870,3872,3875],{"className":3871},[407],[395,3873],{"className":3874,"style":1043},[411],[395,3876,977],{"className":3877},[416],", ",[395,3880,3882],{"className":3881},[398],[395,3883,3885,3903],{"className":3884,"ariaHidden":403},[402],[395,3886,3888,3891,3894,3897,3900],{"className":3887},[407],[395,3889],{"className":3890,"style":2521},[411],[395,3892,1729],{"className":3893},[416,417],[395,3895],{"className":3896,"style":517},[516],[395,3898,891],{"className":3899},[521],[395,3901],{"className":3902,"style":517},[516],[395,3904,3906,3909],{"className":3905},[407],[395,3907],{"className":3908,"style":1043},[411],[395,3910,929],{"className":3911},[416],") yields ",[395,3914,3916],{"className":3915},[398],[395,3917,3919,3938,3956,3974],{"className":3918,"ariaHidden":403},[402],[395,3920,3922,3925,3928,3931,3935],{"className":3921},[407],[395,3923],{"className":3924,"style":1043},[411],[395,3926,907],{"className":3927},[416],[395,3929],{"className":3930,"style":517},[516],[395,3932,3934],{"className":3933},[521],"→",[395,3936],{"className":3937,"style":517},[516],[395,3939,3941,3944,3947,3950,3953],{"className":3940},[407],[395,3942],{"className":3943,"style":1043},[411],[395,3945,929],{"className":3946},[416],[395,3948],{"className":3949,"style":517},[516],[395,3951,3934],{"className":3952},[521],[395,3954],{"className":3955,"style":517},[516],[395,3957,3959,3962,3965,3968,3971],{"className":3958},[407],[395,3960],{"className":3961,"style":1043},[411],[395,3963,948],{"className":3964},[416],[395,3966],{"className":3967,"style":517},[516],[395,3969,3934],{"className":3970},[521],[395,3972],{"className":3973,"style":517},[516],[395,3975,3977,3980],{"className":3976},[407],[395,3978],{"className":3979,"style":1043},[411],[395,3981,958],{"className":3982},[416],[381,3984,3985,3986,4019,4020,4035,4036,4051,4052,4070,4071,4140,4141,4183,4184,1063],{},"The blue endpoints form the recovered chain: starting at the best ",[395,3987,3989],{"className":3988},[398],[395,3990,3992,4010],{"className":3991,"ariaHidden":403},[402],[395,3993,3995,3998,4001,4004,4007],{"className":3994},[407],[395,3996],{"className":3997,"style":2521},[411],[395,3999,1729],{"className":4000},[416,417],[395,4002],{"className":4003,"style":517},[516],[395,4005,891],{"className":4006},[521],[395,4008],{"className":4009,"style":517},[516],[395,4011,4013,4016],{"className":4012},[407],[395,4014],{"className":4015,"style":1043},[411],[395,4017,929],{"className":4018},[416]," cell\n(index ",[395,4021,4023],{"className":4022},[398],[395,4024,4026],{"className":4025,"ariaHidden":403},[402],[395,4027,4029,4032],{"className":4028},[407],[395,4030],{"className":4031,"style":1043},[411],[395,4033,977],{"className":4034},[416],", value ",[395,4037,4039],{"className":4038},[398],[395,4040,4042],{"className":4041,"ariaHidden":403},[402],[395,4043,4045,4048],{"className":4044},[407],[395,4046],{"className":4047,"style":1043},[411],[395,4049,958],{"className":4050},[416],") and hopping along ",[395,4053,4055],{"className":4054},[398],[395,4056,4058],{"className":4057,"ariaHidden":403},[402],[395,4059,4061,4064],{"className":4060},[407],[395,4062],{"className":4063,"style":3339},[411],[395,4065,4067],{"className":4066},[416],[395,4068,3347],{"className":4069},[416,3346]," visits indices\n",[395,4072,4074],{"className":4073},[398],[395,4075,4077,4095,4113,4131],{"className":4076,"ariaHidden":403},[402],[395,4078,4080,4083,4086,4089,4092],{"className":4079},[407],[395,4081],{"className":4082,"style":1043},[411],[395,4084,977],{"className":4085},[416],[395,4087],{"className":4088,"style":517},[516],[395,4090,3934],{"className":4091},[521],[395,4093],{"className":4094,"style":517},[516],[395,4096,4098,4101,4104,4107,4110],{"className":4097},[407],[395,4099],{"className":4100,"style":1043},[411],[395,4102,948],{"className":4103},[416],[395,4105],{"className":4106,"style":517},[516],[395,4108,3934],{"className":4109},[521],[395,4111],{"className":4112,"style":517},[516],[395,4114,4116,4119,4122,4125,4128],{"className":4115},[407],[395,4117],{"className":4118,"style":1043},[411],[395,4120,907],{"className":4121},[416],[395,4123],{"className":4124,"style":517},[516],[395,4126,3934],{"className":4127},[521],[395,4129],{"className":4130,"style":517},[516],[395,4132,4134,4137],{"className":4133},[407],[395,4135],{"className":4136,"style":1043},[411],[395,4138,498],{"className":4139},[416],", whose values ",[395,4142,4144],{"className":4143},[398],[395,4145,4147],{"className":4146,"ariaHidden":403},[402],[395,4148,4150,4153,4156,4159,4162,4165,4168,4171,4174,4177,4180],{"className":4149},[407],[395,4151],{"className":4152,"style":1391},[411],[395,4154,958],{"className":4155},[416],[395,4157,912],{"className":4158},[911],[395,4160],{"className":4161,"style":916},[516],[395,4163,948],{"className":4164},[416],[395,4166,912],{"className":4167},[911],[395,4169],{"className":4170,"style":916},[516],[395,4172,929],{"className":4173},[416],[395,4175,912],{"className":4176},[911],[395,4178],{"className":4179,"style":916},[516],[395,4181,907],{"className":4182},[416]," reverse to the LIS ",[395,4185,4187],{"className":4186},[398],[395,4188,4190],{"className":4189,"ariaHidden":403},[402],[395,4191,4193,4196,4199,4202,4205,4208,4211,4214,4217,4220,4223],{"className":4192},[407],[395,4194],{"className":4195,"style":1391},[411],[395,4197,907],{"className":4198},[416],[395,4200,912],{"className":4201},[911],[395,4203],{"className":4204,"style":916},[516],[395,4206,929],{"className":4207},[416],[395,4209,912],{"className":4210},[911],[395,4212],{"className":4213,"style":916},[516],[395,4215,948],{"className":4216},[416],[395,4218,912],{"className":4219},[911],[395,4221],{"className":4222,"style":916},[516],[395,4224,958],{"className":4225},[416],[1077,4227,4229,4604],{"className":4228},[1080,1081],[1083,4230,4234],{"xmlns":1085,"width":4231,"height":4232,"viewBox":4233},"355.969","157.341","-75 -75 266.977 118.006",[1090,4235,4236,4247,4259,4270,4273,4278,4289,4300,4303,4309,4320,4329,4338,4347,4356,4365,4374,4383,4392,4398,4404,4410,4416,4422,4428,4434,4440,4469,4477,4485,4493,4502,4550,4558],{"stroke":1092,"style":1093},[1090,4237,4238,4241],{"stroke":1153,"style":1155},[1098,4239],{"fill":1100,"d":4240},"M-38.777-12.621h25.607V-38.23h-25.607Z",[1090,4242,4243],{"transform":3478},[1098,4244],{"d":4245,"fill":1092,"stroke":1092,"className":4246,"style":3483},"M-25.072-26.146L-25.116-26.146Q-24.914-25.829-24.527-25.671Q-24.140-25.513-23.714-25.513Q-23.178-25.513-22.939-25.948Q-22.699-26.383-22.699-26.963Q-22.699-27.543-22.945-27.983Q-23.191-28.422-23.723-28.422L-24.343-28.422Q-24.369-28.422-24.402-28.451Q-24.435-28.479-24.435-28.501L-24.435-28.602Q-24.435-28.633-24.406-28.657Q-24.378-28.681-24.343-28.681L-23.824-28.721Q-23.358-28.721-23.112-29.193Q-22.866-29.666-22.866-30.184Q-22.866-30.611-23.079-30.885Q-23.292-31.160-23.714-31.160Q-24.057-31.160-24.382-31.030Q-24.707-30.901-24.892-30.646L-24.866-30.646Q-24.663-30.646-24.527-30.505Q-24.391-30.364-24.391-30.167Q-24.391-29.969-24.525-29.835Q-24.659-29.701-24.857-29.701Q-25.059-29.701-25.197-29.835Q-25.336-29.969-25.336-30.167Q-25.336-30.756-24.833-31.087Q-24.329-31.419-23.714-31.419Q-23.336-31.419-22.934-31.279Q-22.532-31.138-22.264-30.859Q-21.996-30.580-21.996-30.184Q-21.996-29.635-22.350-29.198Q-22.703-28.760-23.244-28.576Q-22.853-28.497-22.508-28.273Q-22.163-28.049-21.952-27.708Q-21.741-27.367-21.741-26.972Q-21.741-26.590-21.904-26.267Q-22.066-25.944-22.358-25.708Q-22.651-25.473-22.998-25.350Q-23.345-25.227-23.714-25.227Q-24.162-25.227-24.593-25.388Q-25.024-25.548-25.305-25.875Q-25.586-26.203-25.586-26.660Q-25.586-26.875-25.439-27.018Q-25.292-27.161-25.072-27.161Q-24.861-27.161-24.716-27.016Q-24.571-26.871-24.571-26.660Q-24.571-26.449-24.718-26.297Q-24.866-26.146-25.072-26.146",[1118],[1090,4248,4250,4253],{"stroke":1153,"style":4249},"stroke-dasharray:3.0,3.0;stroke-width:.8",[1098,4251],{"fill":1100,"d":4252},"M-10.324-12.621h25.607V-38.23h-25.607Z",[1090,4254,4255],{"transform":3489},[1098,4256],{"d":4257,"fill":1092,"stroke":1092,"className":4258,"style":3483},"M-22.066-25.425L-25.098-25.425L-25.098-25.741Q-23.947-25.741-23.947-26.036L-23.947-30.760Q-24.435-30.527-25.156-30.527L-25.156-30.843Q-24.026-30.843-23.464-31.419L-23.319-31.419Q-23.284-31.419-23.251-31.386Q-23.218-31.353-23.218-31.318L-23.218-26.036Q-23.218-25.741-22.066-25.741",[1118],[1090,4260,4261,4264],{"stroke":1153,"style":1155},[1098,4262],{"fill":1100,"d":4263},"M18.128-12.621h25.608V-38.23H18.128Z",[1090,4265,4266],{"transform":3501},[1098,4267],{"d":4268,"fill":1092,"stroke":1092,"className":4269,"style":3483},"M-23.275-26.902L-25.714-26.902L-25.714-27.218L-22.888-31.366Q-22.844-31.419-22.778-31.419L-22.624-31.419Q-22.585-31.419-22.552-31.386Q-22.519-31.353-22.519-31.309L-22.519-27.218L-21.618-27.218L-21.618-26.902L-22.519-26.902L-22.519-26.036Q-22.519-25.741-21.618-25.741L-21.618-25.425L-24.171-25.425L-24.171-25.741Q-23.811-25.741-23.543-25.796Q-23.275-25.851-23.275-26.036L-23.275-26.902M-23.218-30.391L-25.380-27.218L-23.218-27.218",[1118],[1098,4271],{"fill":1100,"d":4272},"M46.581-12.621H72.19V-38.23H46.58Z",[1090,4274,4275],{"transform":3511},[1098,4276],{"d":4257,"fill":1092,"stroke":1092,"className":4277,"style":3483},[1118],[1090,4279,4280,4283],{"stroke":1153,"style":1155},[1098,4281],{"fill":1100,"d":4282},"M75.034-12.621h25.607V-38.23H75.034Z",[1090,4284,4285],{"transform":3522},[1098,4286],{"d":4287,"fill":1092,"stroke":1092,"className":4288,"style":3483},"M-25.147-26.431Q-25.006-26.018-24.646-25.766Q-24.285-25.513-23.850-25.513Q-23.398-25.513-23.132-25.766Q-22.866-26.018-22.763-26.403Q-22.660-26.787-22.660-27.244Q-22.660-28.945-23.569-28.945Q-23.890-28.945-24.119-28.851Q-24.347-28.756-24.477-28.637Q-24.606-28.519-24.718-28.380Q-24.830-28.242-24.866-28.233L-24.949-28.233Q-24.993-28.233-25.024-28.264Q-25.055-28.295-25.055-28.343L-25.055-31.340Q-25.055-31.371-25.019-31.395Q-24.984-31.419-24.958-31.419L-24.918-31.419Q-24.285-31.129-23.613-31.129Q-22.941-31.129-22.299-31.419L-22.273-31.419Q-22.242-31.419-22.209-31.397Q-22.176-31.375-22.176-31.340L-22.176-31.239Q-22.176-31.235-22.185-31.217Q-22.194-31.199-22.194-31.195Q-22.510-30.800-22.980-30.578Q-23.451-30.356-23.947-30.356Q-24.356-30.356-24.738-30.466L-24.738-28.747Q-24.281-29.204-23.569-29.204Q-23.059-29.204-22.660-28.923Q-22.260-28.642-22.038-28.187Q-21.816-27.732-21.816-27.227Q-21.816-26.677-22.095-26.218Q-22.374-25.759-22.840-25.493Q-23.306-25.227-23.850-25.227Q-24.290-25.227-24.674-25.454Q-25.059-25.680-25.287-26.060Q-25.516-26.440-25.516-26.884Q-25.516-27.077-25.384-27.209Q-25.252-27.341-25.055-27.341Q-24.923-27.341-24.819-27.282Q-24.716-27.222-24.657-27.119Q-24.598-27.016-24.598-26.884Q-24.598-26.686-24.725-26.554Q-24.852-26.423-25.055-26.423Q-25.116-26.423-25.147-26.431",[1118],[1090,4290,4291,4294],{"stroke":1153,"style":1155},[1098,4292],{"fill":1100,"d":4293},"M103.487-12.621h25.607V-38.23h-25.607Z",[1090,4295,4296],{"transform":3534},[1098,4297],{"d":4298,"fill":1092,"stroke":1092,"className":4299,"style":3483},"M-24.910-25.812Q-24.663-25.513-24.057-25.513Q-23.776-25.513-23.536-25.651Q-23.297-25.790-23.119-26.012Q-22.941-26.234-22.831-26.497Q-22.598-27.073-22.598-28.189Q-22.765-27.824-23.070-27.600Q-23.376-27.376-23.758-27.376Q-24.294-27.376-24.710-27.655Q-25.125-27.934-25.356-28.400Q-25.586-28.866-25.586-29.393Q-25.586-29.806-25.439-30.175Q-25.292-30.545-25.028-30.821Q-24.765-31.098-24.395-31.259Q-24.026-31.419-23.613-31.419Q-23.055-31.419-22.681-31.127Q-22.308-30.835-22.104-30.371Q-21.899-29.907-21.820-29.391Q-21.741-28.875-21.741-28.343Q-21.741-27.627-22.009-26.904Q-22.277-26.181-22.800-25.704Q-23.323-25.227-24.048-25.227Q-24.598-25.227-24.975-25.476Q-25.353-25.724-25.353-26.242Q-25.353-26.361-25.296-26.464Q-25.239-26.568-25.138-26.627Q-25.037-26.686-24.910-26.686Q-24.725-26.686-24.602-26.554Q-24.479-26.423-24.479-26.242Q-24.479-26.067-24.606-25.939Q-24.734-25.812-24.910-25.812M-23.714-27.640Q-23.345-27.640-23.097-27.882Q-22.848-28.123-22.732-28.481Q-22.616-28.840-22.616-29.213Q-22.616-29.323-22.624-29.376Q-22.620-29.389-22.618-29.400Q-22.616-29.411-22.616-29.428Q-22.616-30.083-22.831-30.622Q-23.046-31.160-23.613-31.160Q-23.973-31.160-24.202-31.010Q-24.431-30.861-24.547-30.604Q-24.663-30.347-24.696-30.066Q-24.729-29.784-24.729-29.411L-24.729-29.376Q-24.729-29.050-24.703-28.763Q-24.677-28.475-24.578-28.216Q-24.479-27.956-24.268-27.798Q-24.057-27.640-23.714-27.640",[1118],[1098,4301],{"fill":1100,"d":4302},"M131.94-12.621h25.607V-38.23h-25.608Z",[1090,4304,4305],{"transform":3544},[1098,4306],{"d":4307,"fill":1092,"stroke":1092,"className":4308,"style":3483},"M-22.066-25.425L-25.516-25.425L-25.516-25.658Q-25.516-25.671-25.485-25.702L-24.031-27.279Q-23.565-27.776-23.312-28.081Q-23.059-28.387-22.868-28.798Q-22.677-29.209-22.677-29.648Q-22.677-30.237-23-30.670Q-23.323-31.103-23.903-31.103Q-24.167-31.103-24.413-30.993Q-24.659-30.883-24.835-30.696Q-25.011-30.509-25.107-30.259L-25.028-30.259Q-24.826-30.259-24.683-30.123Q-24.540-29.987-24.540-29.771Q-24.540-29.565-24.683-29.426Q-24.826-29.288-25.028-29.288Q-25.230-29.288-25.373-29.431Q-25.516-29.573-25.516-29.771Q-25.516-30.233-25.279-30.606Q-25.041-30.980-24.641-31.199Q-24.242-31.419-23.793-31.419Q-23.270-31.419-22.816-31.204Q-22.361-30.988-22.088-30.589Q-21.816-30.189-21.816-29.648Q-21.816-29.253-21.987-28.899Q-22.159-28.545-22.424-28.266Q-22.690-27.987-23.141-27.602Q-23.591-27.218-23.670-27.143L-24.694-26.181L-23.877-26.181Q-23.226-26.181-22.789-26.192Q-22.352-26.203-22.321-26.225Q-22.251-26.308-22.196-26.548Q-22.141-26.787-22.101-27.055L-21.816-27.055",[1118],[1090,4310,4311,4314],{"stroke":1153,"style":4249},[1098,4312],{"fill":1100,"d":4313},"M160.392-12.621H186V-38.23h-25.608Z",[1090,4315,4316],{"transform":3554},[1098,4317],{"d":4318,"fill":1092,"stroke":1092,"className":4319,"style":3483},"M-23.661-25.227Q-24.395-25.227-24.826-25.708Q-25.257-26.190-25.421-26.882Q-25.586-27.574-25.586-28.321Q-25.586-29.050-25.294-29.773Q-25.002-30.496-24.448-30.958Q-23.894-31.419-23.147-31.419Q-22.651-31.419-22.315-31.153Q-21.978-30.887-21.978-30.404Q-21.978-30.224-22.106-30.096Q-22.233-29.969-22.409-29.969Q-22.589-29.969-22.719-30.094Q-22.848-30.219-22.848-30.404Q-22.848-30.518-22.791-30.622Q-22.734-30.725-22.633-30.784Q-22.532-30.843-22.409-30.843Q-22.405-30.843-22.400-30.841Q-22.396-30.839-22.391-30.835Q-22.506-31.002-22.714-31.081Q-22.923-31.160-23.147-31.160Q-23.591-31.160-23.949-30.859Q-24.307-30.558-24.496-30.105Q-24.729-29.499-24.729-28.466Q-24.558-28.831-24.257-29.059Q-23.956-29.288-23.569-29.288Q-23.165-29.288-22.820-29.121Q-22.475-28.954-22.238-28.673Q-22-28.391-21.871-28.029Q-21.741-27.666-21.741-27.262Q-21.741-26.717-21.985-26.251Q-22.229-25.785-22.668-25.506Q-23.108-25.227-23.661-25.227M-23.661-25.513Q-23.200-25.513-22.965-25.770Q-22.730-26.027-22.664-26.401Q-22.598-26.774-22.598-27.244L-22.598-27.279Q-22.598-27.767-22.655-28.132Q-22.712-28.497-22.941-28.760Q-23.169-29.024-23.613-29.024Q-23.982-29.024-24.233-28.780Q-24.483-28.536-24.598-28.172Q-24.712-27.807-24.712-27.460Q-24.712-27.341-24.703-27.279Q-24.703-27.262-24.705-27.251Q-24.707-27.240-24.712-27.227Q-24.712-26.576-24.474-26.045Q-24.237-25.513-23.661-25.513",[1118],[1090,4321,4322],{"fill":3561,"stroke":3561},[1090,4323,4325],{"transform":4324},"translate(-1.993 -39)",[1098,4326],{"d":4327,"fill":3561,"stroke":3561,"className":4328,"style":1207},"M-22.647-25.425L-25.177-25.425L-25.177-25.705Q-24.209-25.705-24.209-25.914L-24.209-29.533Q-24.602-29.345-25.224-29.345L-25.224-29.626Q-24.807-29.626-24.443-29.727Q-24.079-29.827-23.823-30.073L-23.697-30.073Q-23.632-30.056-23.615-29.988L-23.615-25.914Q-23.615-25.705-22.647-25.705",[1118],[1090,4330,4331],{"fill":3561,"stroke":3561},[1090,4332,4334],{"transform":4333},"translate(26.46 -39)",[1098,4335],{"d":4336,"fill":3561,"stroke":3561,"className":4337,"style":1207},"M-22.647-25.425L-25.532-25.425L-25.532-25.627Q-25.532-25.657-25.505-25.685L-24.257-26.902Q-24.185-26.977-24.143-27.019Q-24.100-27.062-24.021-27.141Q-23.608-27.554-23.377-27.912Q-23.146-28.269-23.146-28.693Q-23.146-28.925-23.225-29.128Q-23.304-29.332-23.445-29.482Q-23.587-29.633-23.782-29.713Q-23.977-29.793-24.209-29.793Q-24.520-29.793-24.778-29.634Q-25.036-29.475-25.166-29.198L-25.146-29.198Q-24.978-29.198-24.871-29.087Q-24.763-28.976-24.763-28.812Q-24.763-28.655-24.872-28.542Q-24.982-28.429-25.146-28.429Q-25.306-28.429-25.419-28.542Q-25.532-28.655-25.532-28.812Q-25.532-29.188-25.324-29.475Q-25.115-29.762-24.780-29.918Q-24.445-30.073-24.090-30.073Q-23.666-30.073-23.286-29.915Q-22.907-29.756-22.673-29.439Q-22.439-29.123-22.439-28.693Q-22.439-28.382-22.579-28.113Q-22.719-27.845-22.924-27.640Q-23.129-27.435-23.492-27.153Q-23.854-26.871-23.963-26.775L-24.818-26.047L-24.175-26.047Q-23.912-26.047-23.623-26.049Q-23.334-26.050-23.116-26.059Q-22.897-26.068-22.880-26.085Q-22.818-26.150-22.781-26.317Q-22.743-26.485-22.705-26.727L-22.439-26.727",[1118],[1090,4339,4340],{"fill":3561,"stroke":3561},[1090,4341,4343],{"transform":4342},"translate(54.912 -39)",[1098,4344],{"d":4345,"fill":3561,"stroke":3561,"className":4346,"style":1207},"M-25.177-25.972Q-25.057-25.815-24.866-25.716Q-24.674-25.616-24.459-25.577Q-24.244-25.538-24.021-25.538Q-23.724-25.538-23.529-25.693Q-23.334-25.849-23.244-26.103Q-23.153-26.358-23.153-26.642Q-23.153-26.936-23.245-27.187Q-23.338-27.438-23.536-27.594Q-23.734-27.749-24.028-27.749L-24.544-27.749Q-24.572-27.749-24.597-27.775Q-24.623-27.800-24.623-27.824L-24.623-27.896Q-24.623-27.927-24.597-27.949Q-24.572-27.971-24.544-27.971L-24.103-28.002Q-23.741-28.002-23.521-28.359Q-23.300-28.717-23.300-29.106Q-23.300-29.434-23.495-29.638Q-23.690-29.841-24.021-29.841Q-24.308-29.841-24.561-29.757Q-24.814-29.674-24.978-29.486Q-24.831-29.486-24.731-29.371Q-24.630-29.257-24.630-29.106Q-24.630-28.956-24.736-28.846Q-24.842-28.737-24.999-28.737Q-25.160-28.737-25.269-28.846Q-25.378-28.956-25.378-29.106Q-25.378-29.431-25.170-29.650Q-24.961-29.868-24.645-29.971Q-24.329-30.073-24.021-30.073Q-23.703-30.073-23.375-29.969Q-23.047-29.865-22.820-29.643Q-22.593-29.421-22.593-29.106Q-22.593-28.672-22.880-28.347Q-23.167-28.023-23.601-27.876Q-23.290-27.811-23.010-27.645Q-22.729-27.479-22.552-27.221Q-22.374-26.963-22.374-26.642Q-22.374-26.232-22.618-25.922Q-22.863-25.613-23.244-25.449Q-23.625-25.285-24.021-25.285Q-24.390-25.285-24.748-25.398Q-25.105-25.510-25.349-25.760Q-25.594-26.009-25.594-26.379Q-25.594-26.550-25.477-26.662Q-25.361-26.775-25.190-26.775Q-25.081-26.775-24.990-26.724Q-24.900-26.673-24.845-26.580Q-24.790-26.488-24.790-26.379Q-24.790-26.211-24.903-26.092Q-25.016-25.972-25.177-25.972",[1118],[1090,4348,4349],{"fill":3561,"stroke":3561},[1090,4350,4352],{"transform":4351},"translate(83.365 -39)",[1098,4353],{"d":4354,"fill":3561,"stroke":3561,"className":4355,"style":1207},"M-23.656-26.573L-25.700-26.573L-25.700-26.854L-23.369-30.026Q-23.334-30.073-23.269-30.073L-23.133-30.073Q-23.088-30.073-23.061-30.046Q-23.034-30.019-23.034-29.974L-23.034-26.854L-22.271-26.854L-22.271-26.573L-23.034-26.573L-23.034-25.914Q-23.034-25.705-22.278-25.705L-22.278-25.425L-24.411-25.425L-24.411-25.705Q-23.656-25.705-23.656-25.914L-23.656-26.573M-23.608-29.298L-25.399-26.854L-23.608-26.854",[1118],[1090,4357,4358],{"fill":3561,"stroke":3561},[1090,4359,4361],{"transform":4360},"translate(111.818 -39)",[1098,4362],{"d":4363,"fill":3561,"stroke":3561,"className":4364,"style":1207},"M-25.166-26.187L-25.197-26.187Q-25.060-25.890-24.763-25.714Q-24.466-25.538-24.138-25.538Q-23.775-25.538-23.548-25.716Q-23.321-25.893-23.227-26.182Q-23.133-26.471-23.133-26.833Q-23.133-27.148-23.187-27.433Q-23.242-27.718-23.415-27.924Q-23.587-28.129-23.902-28.129Q-24.175-28.129-24.358-28.062Q-24.541-27.995-24.645-27.906Q-24.749-27.818-24.845-27.708Q-24.941-27.599-24.985-27.589L-25.064-27.589Q-25.136-27.606-25.153-27.677L-25.153-29.995Q-25.153-30.029-25.129-30.051Q-25.105-30.073-25.071-30.073L-25.043-30.073Q-24.756-29.957-24.488-29.903Q-24.220-29.848-23.943-29.848Q-23.666-29.848-23.396-29.903Q-23.126-29.957-22.846-30.073L-22.822-30.073Q-22.787-30.073-22.764-30.050Q-22.740-30.026-22.740-29.995L-22.740-29.926Q-22.740-29.899-22.760-29.879Q-23.034-29.564-23.418-29.388Q-23.803-29.212-24.216-29.212Q-24.555-29.212-24.872-29.298L-24.872-28.016Q-24.476-28.351-23.902-28.351Q-23.498-28.351-23.162-28.141Q-22.825-27.930-22.632-27.578Q-22.439-27.226-22.439-26.826Q-22.439-26.495-22.579-26.209Q-22.719-25.924-22.963-25.714Q-23.208-25.504-23.510-25.394Q-23.813-25.285-24.131-25.285Q-24.490-25.285-24.816-25.449Q-25.142-25.613-25.337-25.905Q-25.532-26.197-25.532-26.560Q-25.532-26.710-25.426-26.816Q-25.320-26.922-25.166-26.922Q-25.013-26.922-24.908-26.818Q-24.804-26.714-24.804-26.560Q-24.804-26.403-24.908-26.295Q-25.013-26.187-25.166-26.187",[1118],[1090,4366,4367],{"fill":3561,"stroke":3561},[1090,4368,4370],{"transform":4369},"translate(140.27 -39)",[1098,4371],{"d":4372,"fill":3561,"stroke":3561,"className":4373,"style":1207},"M-23.984-25.285Q-24.442-25.285-24.760-25.500Q-25.077-25.716-25.259-26.068Q-25.440-26.420-25.517-26.840Q-25.594-27.260-25.594-27.688Q-25.594-28.272-25.341-28.828Q-25.088-29.383-24.618-29.728Q-24.148-30.073-23.550-30.073Q-23.140-30.073-22.856-29.875Q-22.572-29.677-22.572-29.274Q-22.572-29.178-22.618-29.099Q-22.664-29.021-22.745-28.976Q-22.825-28.932-22.914-28.932Q-23.061-28.932-23.162-29.029Q-23.263-29.127-23.263-29.274Q-23.263-29.404-23.172-29.511Q-23.081-29.619-22.948-29.619Q-23.136-29.841-23.550-29.841Q-23.864-29.841-24.138-29.677Q-24.411-29.513-24.578-29.239Q-24.766-28.949-24.831-28.583Q-24.896-28.217-24.896-27.763Q-24.746-28.057-24.481-28.235Q-24.216-28.412-23.902-28.412Q-23.471-28.412-23.122-28.206Q-22.774-27.999-22.574-27.643Q-22.374-27.288-22.374-26.861Q-22.374-26.416-22.591-26.056Q-22.808-25.695-23.181-25.490Q-23.553-25.285-23.984-25.285M-23.984-25.538Q-23.608-25.538-23.404-25.721Q-23.201-25.904-23.138-26.187Q-23.075-26.471-23.075-26.861Q-23.075-27.247-23.129-27.527Q-23.184-27.807-23.379-27.999Q-23.574-28.190-23.943-28.190Q-24.233-28.190-24.445-28.014Q-24.657-27.838-24.765-27.565Q-24.872-27.291-24.872-27.008L-24.872-26.867L-24.872-26.826Q-24.872-26.321-24.660-25.929Q-24.449-25.538-23.984-25.538",[1118],[1090,4375,4376],{"fill":3561,"stroke":3561},[1090,4377,4379],{"transform":4378},"translate(168.723 -39)",[1098,4380],{"d":4381,"fill":3561,"stroke":3561,"className":4382,"style":1207},"M-24.537-25.633Q-24.537-26.139-24.408-26.647Q-24.278-27.154-24.040-27.616Q-23.803-28.077-23.468-28.498L-22.822-29.311L-23.635-29.311Q-24.220-29.311-24.616-29.303Q-25.013-29.294-25.036-29.274Q-25.139-29.157-25.218-28.631L-25.484-28.631L-25.238-30.155L-24.972-30.155L-24.972-30.135Q-24.972-30.067-24.896-30.024Q-24.821-29.981-24.743-29.974Q-24.551-29.950-24.356-29.944Q-24.161-29.937-23.970-29.935Q-23.779-29.933-23.580-29.933L-22.159-29.933L-22.159-29.745Q-22.169-29.697-22.179-29.687L-23.235-28.364Q-23.454-28.091-23.577-27.778Q-23.700-27.466-23.758-27.117Q-23.816-26.768-23.830-26.437Q-23.844-26.105-23.844-25.633Q-23.844-25.483-23.943-25.384Q-24.042-25.285-24.189-25.285Q-24.339-25.285-24.438-25.384Q-24.537-25.483-24.537-25.633",[1118],[1090,4384,4385],{"fill":3561,"stroke":3561},[1090,4386,4388],{"transform":4387},"translate(197.176 -39)",[1098,4389],{"d":4390,"fill":3561,"stroke":3561,"className":4391,"style":1207},"M-25.594-26.502Q-25.594-26.943-25.291-27.264Q-24.989-27.585-24.537-27.777L-24.777-27.917Q-25.047-28.077-25.213-28.335Q-25.378-28.593-25.378-28.891Q-25.378-29.243-25.173-29.515Q-24.968-29.786-24.647-29.930Q-24.326-30.073-23.984-30.073Q-23.662-30.073-23.339-29.957Q-23.016-29.841-22.805-29.600Q-22.593-29.359-22.593-29.024Q-22.593-28.662-22.837-28.399Q-23.081-28.135-23.461-27.958L-23.061-27.722Q-22.866-27.609-22.707-27.440Q-22.548-27.271-22.461-27.062Q-22.374-26.854-22.374-26.621Q-22.374-26.218-22.608-25.914Q-22.842-25.610-23.216-25.447Q-23.591-25.285-23.984-25.285Q-24.370-25.285-24.739-25.422Q-25.108-25.558-25.351-25.835Q-25.594-26.112-25.594-26.502M-25.146-26.502Q-25.146-26.215-24.977-25.992Q-24.807-25.770-24.539-25.654Q-24.271-25.538-23.984-25.538Q-23.546-25.538-23.184-25.755Q-22.822-25.972-22.822-26.379Q-22.822-26.580-22.950-26.758Q-23.078-26.936-23.256-27.035L-24.278-27.630Q-24.517-27.520-24.715-27.354Q-24.913-27.189-25.030-26.973Q-25.146-26.758-25.146-26.502M-24.623-28.631L-23.703-28.098Q-23.396-28.258-23.194-28.491Q-22.993-28.723-22.993-29.024Q-22.993-29.263-23.138-29.453Q-23.283-29.643-23.515-29.742Q-23.748-29.841-23.984-29.841Q-24.206-29.841-24.435-29.771Q-24.664-29.701-24.821-29.544Q-24.978-29.386-24.978-29.157Q-24.978-28.843-24.623-28.631",[1118],[1090,4393,4395],{"transform":4394},"translate(-2.312 27.085)",[1098,4396],{"d":4257,"fill":1092,"stroke":1092,"className":4397,"style":3483},[1118],[1090,4399,4401],{"transform":4400},"translate(26.14 27.085)",[1098,4402],{"d":4257,"fill":1092,"stroke":1092,"className":4403,"style":3483},[1118],[1090,4405,4407],{"transform":4406},"translate(54.593 27.085)",[1098,4408],{"d":4307,"fill":1092,"stroke":1092,"className":4409,"style":3483},[1118],[1090,4411,4413],{"transform":4412},"translate(83.046 27.085)",[1098,4414],{"d":4257,"fill":1092,"stroke":1092,"className":4415,"style":3483},[1118],[1090,4417,4419],{"transform":4418},"translate(111.498 27.085)",[1098,4420],{"d":4245,"fill":1092,"stroke":1092,"className":4421,"style":3483},[1118],[1090,4423,4425],{"transform":4424},"translate(139.951 27.085)",[1098,4426],{"d":4268,"fill":1092,"stroke":1092,"className":4427,"style":3483},[1118],[1090,4429,4431],{"transform":4430},"translate(168.404 27.085)",[1098,4432],{"d":4307,"fill":1092,"stroke":1092,"className":4433,"style":3483},[1118],[1090,4435,4437],{"transform":4436},"translate(196.857 27.085)",[1098,4438],{"d":4268,"fill":1092,"stroke":1092,"className":4439,"style":3483},[1118],[1090,4441,4442],{"fill":3561,"stroke":3561},[1090,4443,4444,4451,4457,4463],{"fill":3561,"stroke":1100,"fontSize":3684},[1090,4445,4447],{"transform":4446},"translate(-36.297 25.935)",[1098,4448],{"d":4449,"fill":3561,"stroke":3561,"className":4450,"style":1207},"M-21.632-25.425L-25.419-25.425Q-25.512-25.449-25.512-25.538L-25.484-25.651Q-25.440-25.698-25.399-25.705Q-24.992-25.705-24.845-25.739Q-24.722-25.774-24.684-25.951L-23.741-29.732Q-23.734-29.749-23.729-29.778Q-23.724-29.807-23.721-29.827Q-23.721-29.882-23.775-29.899Q-23.909-29.926-24.291-29.926Q-24.384-29.950-24.384-30.039L-24.356-30.149Q-24.329-30.196-24.271-30.207L-22.145-30.207Q-22.107-30.207-22.083-30.174Q-22.059-30.142-22.059-30.101L-22.087-29.988Q-22.118-29.933-22.165-29.926Q-22.712-29.926-22.887-29.885Q-23.023-29.844-23.068-29.680L-24.015-25.900Q-24.021-25.852-24.028-25.820Q-24.035-25.787-24.042-25.739Q-24.042-25.705-23.809-25.705L-23.061-25.705Q-22.517-25.705-22.165-25.876Q-21.813-26.047-21.598-26.368Q-21.383-26.690-21.178-27.230Q-21.154-27.274-21.096-27.295L-21.003-27.295Q-20.918-27.271-20.918-27.196Q-20.918-27.189-20.925-27.154L-21.550-25.487Q-21.584-25.432-21.632-25.425",[1118],[1090,4452,4453],{"transform":4446},[1098,4454],{"d":4455,"fill":3561,"stroke":3561,"className":4456,"style":1207},"M-18.457-23.675L-19.533-23.675L-19.533-30.675L-18.457-30.675L-18.457-30.333L-19.192-30.333L-19.192-24.017L-18.457-24.017",[1118],[1090,4458,4459],{"transform":4446},[1098,4460],{"d":4461,"fill":3561,"stroke":3561,"className":4462,"style":1207},"M-17.454-25.951Q-17.454-26.098-17.403-26.201L-16.815-27.715Q-16.740-27.917-16.740-28.057Q-16.740-28.289-16.900-28.289Q-17.181-28.289-17.370-28.018Q-17.560-27.746-17.649-27.414Q-17.659-27.349-17.721-27.349L-17.830-27.349Q-17.861-27.349-17.885-27.380Q-17.909-27.411-17.909-27.435L-17.909-27.462Q-17.840-27.722-17.700-27.959Q-17.560-28.197-17.350-28.354Q-17.140-28.511-16.887-28.511Q-16.705-28.511-16.552-28.440Q-16.398-28.368-16.302-28.231Q-16.206-28.094-16.206-27.917Q-16.206-27.770-16.258-27.664L-16.846-26.153Q-16.921-25.986-16.921-25.811Q-16.921-25.579-16.760-25.579Q-16.483-25.579-16.290-25.856Q-16.097-26.133-16.018-26.454Q-15.994-26.515-15.940-26.515L-15.830-26.515Q-15.796-26.515-15.774-26.490Q-15.752-26.464-15.752-26.433Q-15.752-26.420-15.759-26.406Q-15.820-26.156-15.960-25.915Q-16.100-25.675-16.311-25.516Q-16.521-25.357-16.774-25.357Q-17.051-25.357-17.252-25.519Q-17.454-25.681-17.454-25.951M-16.640-29.667Q-16.640-29.821-16.512-29.944Q-16.384-30.067-16.227-30.067Q-16.114-30.067-16.030-29.986Q-15.947-29.906-15.947-29.786Q-15.947-29.629-16.075-29.508Q-16.203-29.386-16.360-29.386Q-16.473-29.386-16.557-29.467Q-16.640-29.547-16.640-29.667",[1118],[1090,4464,4465],{"transform":4446},[1098,4466],{"d":4467,"fill":3561,"stroke":3561,"className":4468,"style":1207},"M-14.092-23.675L-15.168-23.675L-15.168-24.017L-14.434-24.017L-14.434-30.333L-15.168-30.333L-15.168-30.675L-14.092-30.675",[1118],[1090,4470,4471,4474],{"fill":1153,"stroke":1153,"style":3712},[1098,4472],{"fill":1100,"d":4473},"M-25.973-38.829c19.594-10.418 37.311-10.418 54.61-1.22",[1098,4475],{"stroke":1100,"d":4476},"m30.932-38.829-2.696-3.79.4 2.57-2.353 1.104",[1090,4478,4479,4482],{"fill":1153,"stroke":1153,"style":3712},[1098,4480],{"fill":1100,"d":4481},"M30.932-38.829c19.219-11.096 37.687-11.096 54.654-1.3",[1098,4483],{"stroke":1100,"d":4484},"m87.838-38.829-2.563-3.881.311 2.581-2.39 1.022",[1090,4486,4487,4490],{"fill":1153,"stroke":1153,"style":3712},[1098,4488],{"fill":1100,"d":4489},"M87.838-38.829c8.976-6.522 19.476-6.522 26.349-1.528",[1098,4491],{"stroke":1100,"d":4492},"m116.29-38.829-2.142-4.128.039 2.6-2.485.766",[1090,4494,4496,4499],{"fill":1153,"stroke":1153,"style":4495},"stroke-dasharray:0.8,2.0;stroke-width:.8",[1098,4497],{"fill":1100,"d":4498},"M2.48-12.221c9.606 5.636 18.767 5.701 26.192 1.484",[1098,4500],{"stroke":1100,"d":4501},"m30.932-12.021-4.644.246 2.384 1.038-.33 2.579",[1090,4503,4504],{"fill":1153,"stroke":1153},[1090,4505,4507,4514,4520,4526,4532,4538,4544],{"fill":1153,"stroke":1100,"fontFamily":4506,"fontSize":3684},"cmr7",[1090,4508,4510],{"transform":4509},"translate(-.021 45.852)",[1098,4511],{"d":4512,"fill":1153,"stroke":1153,"className":4513,"style":1207},"M-25.700-26.908Q-25.700-27.250-25.565-27.549Q-25.430-27.848-25.190-28.072Q-24.951-28.296-24.633-28.421Q-24.315-28.546-23.984-28.546Q-23.539-28.546-23.140-28.330Q-22.740-28.115-22.505-27.737Q-22.271-27.360-22.271-26.908Q-22.271-26.567-22.413-26.283Q-22.555-25.999-22.799-25.792Q-23.044-25.586-23.353-25.471Q-23.662-25.357-23.984-25.357Q-24.414-25.357-24.816-25.558Q-25.218-25.760-25.459-26.112Q-25.700-26.464-25.700-26.908M-23.984-25.606Q-23.382-25.606-23.158-25.984Q-22.934-26.362-22.934-26.994Q-22.934-27.606-23.169-27.965Q-23.403-28.323-23.984-28.323Q-25.036-28.323-25.036-26.994Q-25.036-26.362-24.811-25.984Q-24.585-25.606-23.984-25.606M-19.927-25.425L-21.663-25.425L-21.663-25.705Q-21.434-25.705-21.285-25.739Q-21.137-25.774-21.137-25.914L-21.137-27.763Q-21.137-28.033-21.244-28.094Q-21.352-28.156-21.663-28.156L-21.663-28.436L-20.634-28.511L-20.634-27.804Q-20.504-28.112-20.262-28.311Q-20.019-28.511-19.701-28.511Q-19.482-28.511-19.311-28.387Q-19.140-28.262-19.140-28.050Q-19.140-27.913-19.240-27.814Q-19.339-27.715-19.472-27.715Q-19.609-27.715-19.708-27.814Q-19.807-27.913-19.807-28.050Q-19.807-28.190-19.708-28.289Q-19.998-28.289-20.198-28.093Q-20.398-27.896-20.491-27.602Q-20.583-27.308-20.583-27.028L-20.583-25.914Q-20.583-25.705-19.927-25.705",[1118],[1090,4515,4516],{"transform":4509},[1098,4517],{"d":4518,"fill":1153,"stroke":1153,"className":4519,"style":1207},"M-15.854-25.432L-15.854-26.495Q-15.854-26.519-15.826-26.546Q-15.799-26.573-15.775-26.573L-15.666-26.573Q-15.601-26.573-15.587-26.515Q-15.491-26.081-15.245-25.830Q-14.999-25.579-14.585-25.579Q-14.244-25.579-13.991-25.712Q-13.738-25.845-13.738-26.153Q-13.738-26.310-13.832-26.425Q-13.926-26.539-14.064-26.608Q-14.203-26.676-14.370-26.714L-14.951-26.813Q-15.307-26.881-15.580-27.102Q-15.854-27.322-15.854-27.664Q-15.854-27.913-15.742-28.088Q-15.631-28.262-15.445-28.361Q-15.259-28.460-15.043-28.503Q-14.828-28.546-14.585-28.546Q-14.172-28.546-13.892-28.364L-13.676-28.539Q-13.666-28.542-13.659-28.544Q-13.652-28.546-13.642-28.546L-13.591-28.546Q-13.564-28.546-13.540-28.522Q-13.516-28.498-13.516-28.470L-13.516-27.623Q-13.516-27.602-13.540-27.575Q-13.564-27.548-13.591-27.548L-13.704-27.548Q-13.731-27.548-13.757-27.573Q-13.782-27.599-13.782-27.623Q-13.782-27.859-13.888-28.023Q-13.994-28.187-14.177-28.269Q-14.360-28.351-14.592-28.351Q-14.920-28.351-15.177-28.248Q-15.433-28.146-15.433-27.869Q-15.433-27.674-15.250-27.565Q-15.067-27.455-14.838-27.414L-14.264-27.308Q-14.018-27.260-13.804-27.132Q-13.591-27.004-13.454-26.801Q-13.317-26.597-13.317-26.348Q-13.317-25.835-13.683-25.596Q-14.049-25.357-14.585-25.357Q-15.081-25.357-15.413-25.651L-15.679-25.377Q-15.700-25.357-15.727-25.357L-15.775-25.357Q-15.799-25.357-15.826-25.384Q-15.854-25.411-15.854-25.432M-12.162-26.266L-12.162-28.163L-12.801-28.163L-12.801-28.385Q-12.483-28.385-12.266-28.595Q-12.049-28.805-11.949-29.115Q-11.848-29.424-11.848-29.732L-11.581-29.732L-11.581-28.443L-10.504-28.443L-10.504-28.163L-11.581-28.163L-11.581-26.279Q-11.581-26.003-11.477-25.804Q-11.373-25.606-11.113-25.606Q-10.956-25.606-10.850-25.710Q-10.744-25.815-10.694-25.968Q-10.645-26.122-10.645-26.279L-10.645-26.693L-10.378-26.693L-10.378-26.266Q-10.378-26.040-10.477-25.830Q-10.576-25.620-10.761-25.488Q-10.945-25.357-11.174-25.357Q-11.612-25.357-11.887-25.594Q-12.162-25.832-12.162-26.266M-9.510-26.153Q-9.510-26.485-9.286-26.712Q-9.062-26.939-8.719-27.067Q-8.375-27.196-8.002-27.248Q-7.630-27.301-7.326-27.301L-7.326-27.554Q-7.326-27.759-7.433-27.939Q-7.541-28.118-7.722-28.221Q-7.903-28.323-8.112-28.323Q-8.519-28.323-8.754-28.231Q-8.666-28.194-8.619-28.110Q-8.573-28.026-8.573-27.924Q-8.573-27.828-8.619-27.749Q-8.666-27.671-8.746-27.626Q-8.826-27.582-8.915-27.582Q-9.065-27.582-9.166-27.679Q-9.267-27.777-9.267-27.924Q-9.267-28.546-8.112-28.546Q-7.900-28.546-7.650-28.482Q-7.401-28.419-7.199-28.300Q-6.998-28.180-6.871-27.995Q-6.745-27.811-6.745-27.568L-6.745-25.992Q-6.745-25.876-6.683-25.780Q-6.622-25.685-6.509-25.685Q-6.399-25.685-6.335-25.779Q-6.270-25.873-6.270-25.992L-6.270-26.440L-6.003-26.440L-6.003-25.992Q-6.003-25.722-6.230-25.557Q-6.458-25.391-6.738-25.391Q-6.946-25.391-7.083-25.545Q-7.220-25.698-7.244-25.914Q-7.391-25.647-7.673-25.502Q-7.955-25.357-8.279-25.357Q-8.556-25.357-8.840-25.432Q-9.124-25.507-9.317-25.686Q-9.510-25.866-9.510-26.153M-8.895-26.153Q-8.895-25.979-8.794-25.849Q-8.693-25.719-8.537-25.649Q-8.382-25.579-8.218-25.579Q-7.999-25.579-7.791-25.676Q-7.582-25.774-7.454-25.955Q-7.326-26.136-7.326-26.362L-7.326-27.090Q-7.650-27.090-8.016-26.999Q-8.382-26.908-8.638-26.696Q-8.895-26.485-8.895-26.153M-3.836-25.425L-5.572-25.425L-5.572-25.705Q-5.343-25.705-5.195-25.739Q-5.046-25.774-5.046-25.914L-5.046-27.763Q-5.046-28.033-5.154-28.094Q-5.261-28.156-5.572-28.156L-5.572-28.436L-4.543-28.511L-4.543-27.804Q-4.414-28.112-4.171-28.311Q-3.928-28.511-3.610-28.511Q-3.392-28.511-3.221-28.387Q-3.050-28.262-3.050-28.050Q-3.050-27.913-3.149-27.814Q-3.248-27.715-3.381-27.715Q-3.518-27.715-3.617-27.814Q-3.716-27.913-3.716-28.050Q-3.716-28.190-3.617-28.289Q-3.908-28.289-4.108-28.093Q-4.308-27.896-4.400-27.602Q-4.492-27.308-4.492-27.028L-4.492-25.914Q-4.492-25.705-3.836-25.705L-3.836-25.425M-1.939-26.266L-1.939-28.163L-2.578-28.163L-2.578-28.385Q-2.260-28.385-2.043-28.595Q-1.826-28.805-1.725-29.115Q-1.625-29.424-1.625-29.732L-1.358-29.732L-1.358-28.443L-0.281-28.443L-0.281-28.163L-1.358-28.163L-1.358-26.279Q-1.358-26.003-1.254-25.804Q-1.149-25.606-0.890-25.606Q-0.732-25.606-0.626-25.710Q-0.521-25.815-0.471-25.968Q-0.421-26.122-0.421-26.279L-0.421-26.693L-0.155-26.693L-0.155-26.266Q-0.155-26.040-0.254-25.830Q-0.353-25.620-0.538-25.488Q-0.722-25.357-0.951-25.357Q-1.389-25.357-1.664-25.594Q-1.939-25.832-1.939-26.266",[1118],[1090,4521,4522],{"transform":4509},[1098,4523],{"d":4524,"fill":1153,"stroke":1153,"className":4525,"style":1207},"M3.429-26.153Q3.429-26.485 3.652-26.712Q3.876-26.939 4.220-27.067Q4.563-27.196 4.936-27.248Q5.308-27.301 5.613-27.301L5.613-27.554Q5.613-27.759 5.505-27.939Q5.397-28.118 5.216-28.221Q5.035-28.323 4.827-28.323Q4.420-28.323 4.184-28.231Q4.273-28.194 4.319-28.110Q4.365-28.026 4.365-27.924Q4.365-27.828 4.319-27.749Q4.273-27.671 4.192-27.626Q4.112-27.582 4.023-27.582Q3.873-27.582 3.772-27.679Q3.671-27.777 3.671-27.924Q3.671-28.546 4.827-28.546Q5.038-28.546 5.288-28.482Q5.537-28.419 5.739-28.300Q5.941-28.180 6.067-27.995Q6.194-27.811 6.194-27.568L6.194-25.992Q6.194-25.876 6.255-25.780Q6.317-25.685 6.430-25.685Q6.539-25.685 6.604-25.779Q6.669-25.873 6.669-25.992L6.669-26.440L6.935-26.440L6.935-25.992Q6.935-25.722 6.708-25.557Q6.481-25.391 6.201-25.391Q5.992-25.391 5.855-25.545Q5.719-25.698 5.695-25.914Q5.548-25.647 5.266-25.502Q4.984-25.357 4.659-25.357Q4.382-25.357 4.098-25.432Q3.815-25.507 3.622-25.686Q3.429-25.866 3.429-26.153M4.044-26.153Q4.044-25.979 4.145-25.849Q4.245-25.719 4.401-25.649Q4.556-25.579 4.721-25.579Q4.939-25.579 5.148-25.676Q5.356-25.774 5.484-25.955Q5.613-26.136 5.613-26.362L5.613-27.090Q5.288-27.090 4.922-26.999Q4.556-26.908 4.300-26.696Q4.044-26.485 4.044-26.153M7.879-26.266L7.879-28.163L7.240-28.163L7.240-28.385Q7.557-28.385 7.775-28.595Q7.992-28.805 8.092-29.115Q8.193-29.424 8.193-29.732L8.460-29.732L8.460-28.443L9.536-28.443L9.536-28.163L8.460-28.163L8.460-26.279Q8.460-26.003 8.564-25.804Q8.668-25.606 8.928-25.606Q9.085-25.606 9.191-25.710Q9.297-25.815 9.347-25.968Q9.396-26.122 9.396-26.279L9.396-26.693L9.663-26.693L9.663-26.266Q9.663-26.040 9.564-25.830Q9.465-25.620 9.280-25.488Q9.096-25.357 8.867-25.357Q8.429-25.357 8.154-25.594Q7.879-25.832 7.879-26.266",[1118],[1090,4527,4528],{"transform":4509},[1098,4529],{"d":4530,"fill":1153,"stroke":1153,"className":4531,"style":1207},"M13.703-26.266L13.703-28.163L13.064-28.163L13.064-28.385Q13.382-28.385 13.599-28.595Q13.816-28.805 13.916-29.115Q14.017-29.424 14.017-29.732L14.284-29.732L14.284-28.443L15.361-28.443L15.361-28.163L14.284-28.163L14.284-26.279Q14.284-26.003 14.388-25.804Q14.492-25.606 14.752-25.606Q14.909-25.606 15.015-25.710Q15.121-25.815 15.171-25.968Q15.220-26.122 15.220-26.279L15.220-26.693L15.487-26.693L15.487-26.266Q15.487-26.040 15.388-25.830Q15.289-25.620 15.104-25.488Q14.920-25.357 14.691-25.357Q14.253-25.357 13.978-25.594Q13.703-25.832 13.703-26.266M17.979-25.425L16.345-25.425L16.345-25.705Q16.574-25.705 16.723-25.739Q16.871-25.774 16.871-25.914L16.871-29.533Q16.871-29.803 16.764-29.865Q16.656-29.926 16.345-29.926L16.345-30.207L17.425-30.282L17.425-27.896Q17.531-28.081 17.709-28.223Q17.886-28.364 18.095-28.438Q18.303-28.511 18.529-28.511Q19.035-28.511 19.319-28.288Q19.602-28.064 19.602-27.568L19.602-25.914Q19.602-25.777 19.751-25.741Q19.900-25.705 20.125-25.705L20.125-25.425L18.495-25.425L18.495-25.705Q18.724-25.705 18.872-25.739Q19.021-25.774 19.021-25.914L19.021-27.554Q19.021-27.889 18.902-28.089Q18.782-28.289 18.467-28.289Q18.197-28.289 17.963-28.153Q17.729-28.016 17.591-27.782Q17.452-27.548 17.452-27.274L17.452-25.914Q17.452-25.777 17.603-25.741Q17.753-25.705 17.979-25.705L17.979-25.425M20.672-26.960Q20.672-27.281 20.797-27.570Q20.922-27.859 21.147-28.082Q21.373-28.306 21.668-28.426Q21.964-28.546 22.282-28.546Q22.610-28.546 22.872-28.446Q23.133-28.347 23.309-28.165Q23.485-27.982 23.579-27.724Q23.673-27.466 23.673-27.134Q23.673-27.042 23.591-27.021L21.335-27.021L21.335-26.960Q21.335-26.372 21.619-25.989Q21.903-25.606 22.470-25.606Q22.791-25.606 23.060-25.799Q23.328-25.992 23.417-26.307Q23.424-26.348 23.499-26.362L23.591-26.362Q23.673-26.338 23.673-26.266Q23.673-26.259 23.666-26.232Q23.553-25.835 23.183-25.596Q22.812-25.357 22.388-25.357Q21.950-25.357 21.550-25.565Q21.151-25.774 20.911-26.141Q20.672-26.508 20.672-26.960M21.342-27.230L23.157-27.230Q23.157-27.507 23.060-27.759Q22.962-28.012 22.764-28.168Q22.566-28.323 22.282-28.323Q22.005-28.323 21.791-28.165Q21.578-28.006 21.460-27.751Q21.342-27.496 21.342-27.230",[1118],[1090,4533,4534],{"transform":4509},[1098,4535],{"d":4536,"fill":1153,"stroke":1153,"className":4537,"style":1207},"M29.979-25.425L27.449-25.425L27.449-25.705Q28.417-25.705 28.417-25.914L28.417-29.533Q28.024-29.345 27.402-29.345L27.402-29.626Q27.819-29.626 28.183-29.727Q28.547-29.827 28.803-30.073L28.929-30.073Q28.994-30.056 29.011-29.988L29.011-25.914Q29.011-25.705 29.979-25.705",[1118],[1090,4539,4540],{"transform":4509},[1098,4541],{"d":4542,"fill":1153,"stroke":1153,"className":4543,"style":1207},"M35.778-23.675Q35.228-24.075 34.857-24.630Q34.486-25.186 34.305-25.832Q34.124-26.478 34.124-27.175Q34.124-27.688 34.224-28.183Q34.325-28.679 34.530-29.130Q34.735-29.581 35.048-29.973Q35.361-30.364 35.778-30.668Q35.788-30.672 35.795-30.673Q35.802-30.675 35.812-30.675L35.880-30.675Q35.915-30.675 35.937-30.651Q35.959-30.627 35.959-30.590Q35.959-30.545 35.932-30.528Q35.583-30.227 35.330-29.843Q35.077-29.458 34.925-29.017Q34.773-28.576 34.701-28.120Q34.629-27.664 34.629-27.175Q34.629-26.174 34.939-25.287Q35.248-24.400 35.932-23.815Q35.959-23.798 35.959-23.754Q35.959-23.716 35.937-23.692Q35.915-23.668 35.880-23.668L35.812-23.668Q35.805-23.672 35.797-23.673Q35.788-23.675 35.778-23.675M38.386-25.425L36.834-25.425L36.834-25.705Q37.060-25.705 37.208-25.739Q37.357-25.774 37.357-25.914L37.357-27.763Q37.357-27.951 37.309-28.035Q37.261-28.118 37.164-28.137Q37.066-28.156 36.855-28.156L36.855-28.436L37.911-28.511L37.911-25.914Q37.911-25.774 38.042-25.739Q38.174-25.705 38.386-25.705L38.386-25.425M37.114-29.732Q37.114-29.903 37.237-30.022Q37.360-30.142 37.531-30.142Q37.699-30.142 37.822-30.022Q37.945-29.903 37.945-29.732Q37.945-29.557 37.822-29.434Q37.699-29.311 37.531-29.311Q37.360-29.311 37.237-29.434Q37.114-29.557 37.114-29.732M40.713-25.425L39.080-25.425L39.080-25.705Q39.309-25.705 39.457-25.739Q39.606-25.774 39.606-25.914L39.606-27.763Q39.606-28.033 39.498-28.094Q39.391-28.156 39.080-28.156L39.080-28.436L40.139-28.511L40.139-27.862Q40.310-28.170 40.614-28.341Q40.918-28.511 41.264-28.511Q41.770-28.511 42.053-28.288Q42.337-28.064 42.337-27.568L42.337-25.914Q42.337-25.777 42.486-25.741Q42.634-25.705 42.860-25.705L42.860-25.425L41.230-25.425L41.230-25.705Q41.459-25.705 41.607-25.739Q41.756-25.774 41.756-25.914L41.756-27.554Q41.756-27.889 41.636-28.089Q41.517-28.289 41.202-28.289Q40.932-28.289 40.698-28.153Q40.464-28.016 40.325-27.782Q40.187-27.548 40.187-27.274L40.187-25.914Q40.187-25.777 40.337-25.741Q40.488-25.705 40.713-25.705L40.713-25.425M43.448-26.936Q43.448-27.274 43.588-27.565Q43.728-27.855 43.972-28.069Q44.217-28.282 44.521-28.397Q44.825-28.511 45.150-28.511Q45.420-28.511 45.683-28.412Q45.946-28.313 46.138-28.135L46.138-29.533Q46.138-29.803 46.030-29.865Q45.922-29.926 45.611-29.926L45.611-30.207L46.688-30.282L46.688-26.098Q46.688-25.910 46.743-25.827Q46.797-25.743 46.898-25.724Q46.999-25.705 47.214-25.705L47.214-25.425L46.107-25.357L46.107-25.774Q45.690-25.357 45.064-25.357Q44.634-25.357 44.261-25.569Q43.889-25.780 43.668-26.141Q43.448-26.502 43.448-26.936M45.123-25.579Q45.331-25.579 45.517-25.651Q45.704-25.722 45.857-25.859Q46.011-25.996 46.107-26.174L46.107-27.783Q46.022-27.930 45.876-28.050Q45.731-28.170 45.562-28.229Q45.393-28.289 45.211-28.289Q44.651-28.289 44.383-27.900Q44.114-27.510 44.114-26.929Q44.114-26.358 44.348-25.968Q44.583-25.579 45.123-25.579M47.823-26.960Q47.823-27.281 47.948-27.570Q48.072-27.859 48.298-28.082Q48.523-28.306 48.819-28.426Q49.115-28.546 49.433-28.546Q49.761-28.546 50.022-28.446Q50.284-28.347 50.460-28.165Q50.636-27.982 50.730-27.724Q50.824-27.466 50.824-27.134Q50.824-27.042 50.742-27.021L48.486-27.021L48.486-26.960Q48.486-26.372 48.770-25.989Q49.053-25.606 49.621-25.606Q49.942-25.606 50.210-25.799Q50.479-25.992 50.567-26.307Q50.574-26.348 50.649-26.362L50.742-26.362Q50.824-26.338 50.824-26.266Q50.824-26.259 50.817-26.232Q50.704-25.835 50.333-25.596Q49.962-25.357 49.539-25.357Q49.101-25.357 48.701-25.565Q48.301-25.774 48.062-26.141Q47.823-26.508 47.823-26.960M48.493-27.230L50.308-27.230Q50.308-27.507 50.210-27.759Q50.113-28.012 49.915-28.168Q49.716-28.323 49.433-28.323Q49.156-28.323 48.942-28.165Q48.729-28.006 48.611-27.751Q48.493-27.496 48.493-27.230M52.594-25.425L51.272-25.425L51.272-25.705Q51.832-25.705 52.211-26.105L52.926-26.902L52.013-27.951Q51.876-28.098 51.728-28.130Q51.579-28.163 51.313-28.163L51.313-28.443L52.813-28.443L52.813-28.163Q52.622-28.163 52.622-28.029Q52.622-27.999 52.652-27.951L53.247-27.267L53.688-27.763Q53.801-27.893 53.801-28.009Q53.801-28.071 53.763-28.117Q53.726-28.163 53.667-28.163L53.667-28.443L54.983-28.443L54.983-28.163Q54.423-28.163 54.043-27.763L53.421-27.062L54.416-25.914Q54.515-25.815 54.616-25.770Q54.717-25.726 54.828-25.716Q54.939-25.705 55.117-25.705L55.117-25.425L53.623-25.425L53.623-25.705Q53.688-25.705 53.748-25.739Q53.808-25.774 53.808-25.839Q53.808-25.886 53.777-25.914L53.100-26.700L52.567-26.105Q52.454-25.975 52.454-25.859Q52.454-25.794 52.495-25.750Q52.536-25.705 52.594-25.705",[1118],[1090,4545,4546],{"transform":4509},[1098,4547],{"d":4548,"fill":1153,"stroke":1153,"className":4549,"style":1207},"M61.334-25.425L58.449-25.425L58.449-25.627Q58.449-25.657 58.476-25.685L59.724-26.902Q59.796-26.977 59.838-27.019Q59.881-27.062 59.960-27.141Q60.373-27.554 60.604-27.912Q60.835-28.269 60.835-28.693Q60.835-28.925 60.756-29.128Q60.677-29.332 60.536-29.482Q60.394-29.633 60.199-29.713Q60.004-29.793 59.772-29.793Q59.461-29.793 59.203-29.634Q58.945-29.475 58.815-29.198L58.835-29.198Q59.003-29.198 59.110-29.087Q59.218-28.976 59.218-28.812Q59.218-28.655 59.109-28.542Q58.999-28.429 58.835-28.429Q58.675-28.429 58.562-28.542Q58.449-28.655 58.449-28.812Q58.449-29.188 58.657-29.475Q58.866-29.762 59.201-29.918Q59.536-30.073 59.891-30.073Q60.315-30.073 60.695-29.915Q61.074-29.756 61.308-29.439Q61.542-29.123 61.542-28.693Q61.542-28.382 61.402-28.113Q61.262-27.845 61.057-27.640Q60.852-27.435 60.489-27.153Q60.127-26.871 60.018-26.775L59.163-26.047L59.806-26.047Q60.069-26.047 60.358-26.049Q60.647-26.050 60.865-26.059Q61.084-26.068 61.101-26.085Q61.163-26.150 61.200-26.317Q61.238-26.485 61.276-26.727L61.542-26.727L61.334-25.425M62.626-23.668L62.557-23.668Q62.523-23.668 62.501-23.694Q62.479-23.719 62.479-23.754Q62.479-23.798 62.509-23.815Q62.865-24.119 63.114-24.509Q63.364-24.899 63.516-25.331Q63.668-25.763 63.738-26.232Q63.808-26.700 63.808-27.175Q63.808-27.654 63.738-28.120Q63.668-28.587 63.514-29.022Q63.361-29.458 63.109-29.846Q62.858-30.234 62.509-30.528Q62.479-30.545 62.479-30.590Q62.479-30.624 62.501-30.649Q62.523-30.675 62.557-30.675L62.626-30.675Q62.636-30.675 62.644-30.673Q62.653-30.672 62.663-30.668Q63.207-30.268 63.579-29.715Q63.952-29.161 64.133-28.515Q64.314-27.869 64.314-27.175Q64.314-26.474 64.133-25.827Q63.952-25.179 63.578-24.625Q63.203-24.071 62.663-23.675Q62.653-23.675 62.644-23.673Q62.636-23.672 62.626-23.668",[1118],[1090,4551,4552,4555],{"fill":1153,"stroke":1153,"style":4495},[1098,4553],{"fill":1100,"d":4554},"M87.838-12.021c17.774 28.297 67.716 28.18 83.985 2.008",[1098,4556],{"stroke":1100,"d":4557},"m173.196-12.221-3.963 2.434 2.59-.226.943 2.422",[1090,4559,4560],{"fill":1153,"stroke":1153},[1090,4561,4562,4568,4574,4580,4586,4592,4598],{"fill":1153,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,4563,4565],{"transform":4564},"translate(124.395 60.078)",[1098,4566],{"d":4512,"fill":1153,"stroke":1153,"className":4567,"style":1207},[1118],[1090,4569,4570],{"transform":4564},[1098,4571],{"d":4572,"fill":1153,"stroke":1153,"className":4573,"style":1207},"M-15.895-26.960Q-15.895-27.281-15.770-27.570Q-15.645-27.859-15.419-28.082Q-15.194-28.306-14.898-28.426Q-14.603-28.546-14.285-28.546Q-13.957-28.546-13.695-28.446Q-13.434-28.347-13.258-28.165Q-13.082-27.982-12.988-27.724Q-12.894-27.466-12.894-27.134Q-12.894-27.042-12.976-27.021L-15.231-27.021L-15.231-26.960Q-15.231-26.372-14.948-25.989Q-14.664-25.606-14.097-25.606Q-13.775-25.606-13.507-25.799Q-13.239-25.992-13.150-26.307Q-13.143-26.348-13.068-26.362L-12.976-26.362Q-12.894-26.338-12.894-26.266Q-12.894-26.259-12.900-26.232Q-13.013-25.835-13.384-25.596Q-13.755-25.357-14.179-25.357Q-14.616-25.357-15.016-25.565Q-15.416-25.774-15.655-26.141Q-15.895-26.508-15.895-26.960M-15.225-27.230L-13.410-27.230Q-13.410-27.507-13.507-27.759Q-13.605-28.012-13.803-28.168Q-14.001-28.323-14.285-28.323Q-14.562-28.323-14.775-28.165Q-14.989-28.006-15.107-27.751Q-15.225-27.496-15.225-27.230M-10.624-25.425L-12.258-25.425L-12.258-25.705Q-12.029-25.705-11.880-25.739Q-11.731-25.774-11.731-25.914L-11.731-27.763Q-11.731-28.033-11.839-28.094Q-11.947-28.156-12.258-28.156L-12.258-28.436L-11.198-28.511L-11.198-27.862Q-11.027-28.170-10.723-28.341Q-10.419-28.511-10.074-28.511Q-9.568-28.511-9.284-28.288Q-9.001-28.064-9.001-27.568L-9.001-25.914Q-9.001-25.777-8.852-25.741Q-8.703-25.705-8.478-25.705L-8.478-25.425L-10.108-25.425L-10.108-25.705Q-9.879-25.705-9.730-25.739Q-9.582-25.774-9.582-25.914L-9.582-27.554Q-9.582-27.889-9.701-28.089Q-9.821-28.289-10.135-28.289Q-10.405-28.289-10.639-28.153Q-10.874-28.016-11.012-27.782Q-11.150-27.548-11.150-27.274L-11.150-25.914Q-11.150-25.777-11-25.741Q-10.850-25.705-10.624-25.705L-10.624-25.425M-7.890-26.936Q-7.890-27.274-7.750-27.565Q-7.609-27.855-7.365-28.069Q-7.121-28.282-6.816-28.397Q-6.512-28.511-6.188-28.511Q-5.918-28.511-5.654-28.412Q-5.391-28.313-5.200-28.135L-5.200-29.533Q-5.200-29.803-5.307-29.865Q-5.415-29.926-5.726-29.926L-5.726-30.207L-4.649-30.282L-4.649-26.098Q-4.649-25.910-4.595-25.827Q-4.540-25.743-4.439-25.724Q-4.338-25.705-4.123-25.705L-4.123-25.425L-5.230-25.357L-5.230-25.774Q-5.647-25.357-6.273-25.357Q-6.704-25.357-7.076-25.569Q-7.449-25.780-7.669-26.141Q-7.890-26.502-7.890-26.936M-6.215-25.579Q-6.006-25.579-5.820-25.651Q-5.634-25.722-5.480-25.859Q-5.326-25.996-5.230-26.174L-5.230-27.783Q-5.316-27.930-5.461-28.050Q-5.606-28.170-5.776-28.229Q-5.945-28.289-6.126-28.289Q-6.687-28.289-6.955-27.900Q-7.223-27.510-7.223-26.929Q-7.223-26.358-6.989-25.968Q-6.755-25.579-6.215-25.579",[1118],[1090,4575,4576],{"transform":4564},[1098,4577],{"d":4578,"fill":1153,"stroke":1153,"className":4579,"style":1207},"M-0.711-26.153Q-0.711-26.485-0.488-26.712Q-0.264-26.939 0.080-27.067Q0.423-27.196 0.796-27.248Q1.168-27.301 1.473-27.301L1.473-27.554Q1.473-27.759 1.365-27.939Q1.257-28.118 1.076-28.221Q0.895-28.323 0.687-28.323Q0.280-28.323 0.044-28.231Q0.133-28.194 0.179-28.110Q0.225-28.026 0.225-27.924Q0.225-27.828 0.179-27.749Q0.133-27.671 0.052-27.626Q-0.028-27.582-0.117-27.582Q-0.267-27.582-0.368-27.679Q-0.469-27.777-0.469-27.924Q-0.469-28.546 0.687-28.546Q0.898-28.546 1.148-28.482Q1.397-28.419 1.599-28.300Q1.801-28.180 1.927-27.995Q2.054-27.811 2.054-27.568L2.054-25.992Q2.054-25.876 2.115-25.780Q2.177-25.685 2.290-25.685Q2.399-25.685 2.464-25.779Q2.529-25.873 2.529-25.992L2.529-26.440L2.795-26.440L2.795-25.992Q2.795-25.722 2.568-25.557Q2.341-25.391 2.061-25.391Q1.852-25.391 1.715-25.545Q1.579-25.698 1.555-25.914Q1.408-25.647 1.126-25.502Q0.844-25.357 0.519-25.357Q0.242-25.357-0.042-25.432Q-0.325-25.507-0.518-25.686Q-0.711-25.866-0.711-26.153M-0.096-26.153Q-0.096-25.979 0.005-25.849Q0.105-25.719 0.261-25.649Q0.416-25.579 0.581-25.579Q0.799-25.579 1.008-25.676Q1.216-25.774 1.344-25.955Q1.473-26.136 1.473-26.362L1.473-27.090Q1.148-27.090 0.782-26.999Q0.416-26.908 0.160-26.696Q-0.096-26.485-0.096-26.153M3.739-26.266L3.739-28.163L3.100-28.163L3.100-28.385Q3.417-28.385 3.635-28.595Q3.852-28.805 3.952-29.115Q4.053-29.424 4.053-29.732L4.320-29.732L4.320-28.443L5.396-28.443L5.396-28.163L4.320-28.163L4.320-26.279Q4.320-26.003 4.424-25.804Q4.528-25.606 4.788-25.606Q4.945-25.606 5.051-25.710Q5.157-25.815 5.207-25.968Q5.256-26.122 5.256-26.279L5.256-26.693L5.523-26.693L5.523-26.266Q5.523-26.040 5.424-25.830Q5.325-25.620 5.140-25.488Q4.956-25.357 4.727-25.357Q4.289-25.357 4.014-25.594Q3.739-25.832 3.739-26.266",[1118],[1090,4581,4582],{"transform":4564},[1098,4583],{"d":4584,"fill":1153,"stroke":1153,"className":4585,"style":1207},"M9.562-26.266L9.562-28.163L8.923-28.163L8.923-28.385Q9.241-28.385 9.458-28.595Q9.675-28.805 9.775-29.115Q9.876-29.424 9.876-29.732L10.143-29.732L10.143-28.443L11.220-28.443L11.220-28.163L10.143-28.163L10.143-26.279Q10.143-26.003 10.247-25.804Q10.351-25.606 10.611-25.606Q10.768-25.606 10.874-25.710Q10.980-25.815 11.030-25.968Q11.079-26.122 11.079-26.279L11.079-26.693L11.346-26.693L11.346-26.266Q11.346-26.040 11.247-25.830Q11.148-25.620 10.963-25.488Q10.779-25.357 10.550-25.357Q10.112-25.357 9.837-25.594Q9.562-25.832 9.562-26.266M13.838-25.425L12.204-25.425L12.204-25.705Q12.433-25.705 12.582-25.739Q12.730-25.774 12.730-25.914L12.730-29.533Q12.730-29.803 12.623-29.865Q12.515-29.926 12.204-29.926L12.204-30.207L13.284-30.282L13.284-27.896Q13.390-28.081 13.568-28.223Q13.745-28.364 13.954-28.438Q14.162-28.511 14.388-28.511Q14.894-28.511 15.178-28.288Q15.461-28.064 15.461-27.568L15.461-25.914Q15.461-25.777 15.610-25.741Q15.759-25.705 15.984-25.705L15.984-25.425L14.354-25.425L14.354-25.705Q14.583-25.705 14.731-25.739Q14.880-25.774 14.880-25.914L14.880-27.554Q14.880-27.889 14.761-28.089Q14.641-28.289 14.326-28.289Q14.056-28.289 13.822-28.153Q13.588-28.016 13.450-27.782Q13.311-27.548 13.311-27.274L13.311-25.914Q13.311-25.777 13.462-25.741Q13.612-25.705 13.838-25.705L13.838-25.425M16.531-26.960Q16.531-27.281 16.656-27.570Q16.781-27.859 17.006-28.082Q17.232-28.306 17.527-28.426Q17.823-28.546 18.141-28.546Q18.469-28.546 18.731-28.446Q18.992-28.347 19.168-28.165Q19.344-27.982 19.438-27.724Q19.532-27.466 19.532-27.134Q19.532-27.042 19.450-27.021L17.194-27.021L17.194-26.960Q17.194-26.372 17.478-25.989Q17.762-25.606 18.329-25.606Q18.650-25.606 18.919-25.799Q19.187-25.992 19.276-26.307Q19.283-26.348 19.358-26.362L19.450-26.362Q19.532-26.338 19.532-26.266Q19.532-26.259 19.525-26.232Q19.412-25.835 19.042-25.596Q18.671-25.357 18.247-25.357Q17.809-25.357 17.409-25.565Q17.010-25.774 16.770-26.141Q16.531-26.508 16.531-26.960M17.201-27.230L19.016-27.230Q19.016-27.507 18.919-27.759Q18.821-28.012 18.623-28.168Q18.425-28.323 18.141-28.323Q17.864-28.323 17.650-28.165Q17.437-28.006 17.319-27.751Q17.201-27.496 17.201-27.230",[1118],[1090,4587,4588],{"transform":4564},[1098,4589],{"d":4590,"fill":1153,"stroke":1153,"className":4591,"style":1207},"M24.502-25.285Q24.044-25.285 23.726-25.500Q23.409-25.716 23.227-26.068Q23.046-26.420 22.969-26.840Q22.892-27.260 22.892-27.688Q22.892-28.272 23.145-28.828Q23.398-29.383 23.868-29.728Q24.338-30.073 24.936-30.073Q25.346-30.073 25.630-29.875Q25.914-29.677 25.914-29.274Q25.914-29.178 25.868-29.099Q25.822-29.021 25.741-28.976Q25.661-28.932 25.572-28.932Q25.425-28.932 25.324-29.029Q25.223-29.127 25.223-29.274Q25.223-29.404 25.314-29.511Q25.405-29.619 25.538-29.619Q25.350-29.841 24.936-29.841Q24.622-29.841 24.348-29.677Q24.075-29.513 23.908-29.239Q23.720-28.949 23.655-28.583Q23.590-28.217 23.590-27.763Q23.740-28.057 24.005-28.235Q24.270-28.412 24.584-28.412Q25.015-28.412 25.364-28.206Q25.712-27.999 25.912-27.643Q26.112-27.288 26.112-26.861Q26.112-26.416 25.895-26.056Q25.678-25.695 25.305-25.490Q24.933-25.285 24.502-25.285M24.502-25.538Q24.878-25.538 25.082-25.721Q25.285-25.904 25.348-26.187Q25.411-26.471 25.411-26.861Q25.411-27.247 25.357-27.527Q25.302-27.807 25.107-27.999Q24.912-28.190 24.543-28.190Q24.253-28.190 24.041-28.014Q23.829-27.838 23.721-27.565Q23.614-27.291 23.614-27.008L23.614-26.867L23.614-26.826Q23.614-26.321 23.826-25.929Q24.037-25.538 24.502-25.538",[1118],[1090,4593,4594],{"transform":4564},[1098,4595],{"d":4596,"fill":1153,"stroke":1153,"className":4597,"style":1207},"M31.638-23.675Q31.088-24.075 30.717-24.630Q30.346-25.186 30.165-25.832Q29.984-26.478 29.984-27.175Q29.984-27.688 30.084-28.183Q30.185-28.679 30.390-29.130Q30.595-29.581 30.908-29.973Q31.221-30.364 31.638-30.668Q31.648-30.672 31.655-30.673Q31.662-30.675 31.672-30.675L31.740-30.675Q31.775-30.675 31.797-30.651Q31.819-30.627 31.819-30.590Q31.819-30.545 31.792-30.528Q31.443-30.227 31.190-29.843Q30.937-29.458 30.785-29.017Q30.633-28.576 30.561-28.120Q30.489-27.664 30.489-27.175Q30.489-26.174 30.799-25.287Q31.108-24.400 31.792-23.815Q31.819-23.798 31.819-23.754Q31.819-23.716 31.797-23.692Q31.775-23.668 31.740-23.668L31.672-23.668Q31.665-23.672 31.657-23.673Q31.648-23.675 31.638-23.675M34.246-25.425L32.694-25.425L32.694-25.705Q32.920-25.705 33.068-25.739Q33.217-25.774 33.217-25.914L33.217-27.763Q33.217-27.951 33.169-28.035Q33.121-28.118 33.024-28.137Q32.926-28.156 32.715-28.156L32.715-28.436L33.771-28.511L33.771-25.914Q33.771-25.774 33.902-25.739Q34.034-25.705 34.246-25.705L34.246-25.425M32.974-29.732Q32.974-29.903 33.097-30.022Q33.220-30.142 33.391-30.142Q33.559-30.142 33.682-30.022Q33.805-29.903 33.805-29.732Q33.805-29.557 33.682-29.434Q33.559-29.311 33.391-29.311Q33.220-29.311 33.097-29.434Q32.974-29.557 32.974-29.732M36.573-25.425L34.940-25.425L34.940-25.705Q35.169-25.705 35.317-25.739Q35.466-25.774 35.466-25.914L35.466-27.763Q35.466-28.033 35.358-28.094Q35.251-28.156 34.940-28.156L34.940-28.436L35.999-28.511L35.999-27.862Q36.170-28.170 36.474-28.341Q36.778-28.511 37.124-28.511Q37.630-28.511 37.913-28.288Q38.197-28.064 38.197-27.568L38.197-25.914Q38.197-25.777 38.346-25.741Q38.494-25.705 38.720-25.705L38.720-25.425L37.090-25.425L37.090-25.705Q37.319-25.705 37.467-25.739Q37.616-25.774 37.616-25.914L37.616-27.554Q37.616-27.889 37.496-28.089Q37.377-28.289 37.062-28.289Q36.792-28.289 36.558-28.153Q36.324-28.016 36.185-27.782Q36.047-27.548 36.047-27.274L36.047-25.914Q36.047-25.777 36.197-25.741Q36.348-25.705 36.573-25.705L36.573-25.425M39.308-26.936Q39.308-27.274 39.448-27.565Q39.588-27.855 39.832-28.069Q40.077-28.282 40.381-28.397Q40.685-28.511 41.010-28.511Q41.280-28.511 41.543-28.412Q41.806-28.313 41.998-28.135L41.998-29.533Q41.998-29.803 41.890-29.865Q41.782-29.926 41.471-29.926L41.471-30.207L42.548-30.282L42.548-26.098Q42.548-25.910 42.603-25.827Q42.657-25.743 42.758-25.724Q42.859-25.705 43.074-25.705L43.074-25.425L41.967-25.357L41.967-25.774Q41.550-25.357 40.924-25.357Q40.494-25.357 40.121-25.569Q39.749-25.780 39.528-26.141Q39.308-26.502 39.308-26.936M40.983-25.579Q41.191-25.579 41.377-25.651Q41.564-25.722 41.717-25.859Q41.871-25.996 41.967-26.174L41.967-27.783Q41.882-27.930 41.736-28.050Q41.591-28.170 41.422-28.229Q41.253-28.289 41.071-28.289Q40.511-28.289 40.243-27.900Q39.974-27.510 39.974-26.929Q39.974-26.358 40.208-25.968Q40.443-25.579 40.983-25.579M43.683-26.960Q43.683-27.281 43.808-27.570Q43.932-27.859 44.158-28.082Q44.383-28.306 44.679-28.426Q44.975-28.546 45.293-28.546Q45.621-28.546 45.882-28.446Q46.144-28.347 46.320-28.165Q46.496-27.982 46.590-27.724Q46.684-27.466 46.684-27.134Q46.684-27.042 46.602-27.021L44.346-27.021L44.346-26.960Q44.346-26.372 44.630-25.989Q44.913-25.606 45.481-25.606Q45.802-25.606 46.070-25.799Q46.339-25.992 46.427-26.307Q46.434-26.348 46.509-26.362L46.602-26.362Q46.684-26.338 46.684-26.266Q46.684-26.259 46.677-26.232Q46.564-25.835 46.193-25.596Q45.822-25.357 45.399-25.357Q44.961-25.357 44.561-25.565Q44.161-25.774 43.922-26.141Q43.683-26.508 43.683-26.960M44.353-27.230L46.168-27.230Q46.168-27.507 46.070-27.759Q45.973-28.012 45.775-28.168Q45.576-28.323 45.293-28.323Q45.016-28.323 44.802-28.165Q44.589-28.006 44.471-27.751Q44.353-27.496 44.353-27.230M48.454-25.425L47.132-25.425L47.132-25.705Q47.692-25.705 48.071-26.105L48.786-26.902L47.873-27.951Q47.736-28.098 47.588-28.130Q47.439-28.163 47.173-28.163L47.173-28.443L48.673-28.443L48.673-28.163Q48.482-28.163 48.482-28.029Q48.482-27.999 48.512-27.951L49.107-27.267L49.548-27.763Q49.661-27.893 49.661-28.009Q49.661-28.071 49.623-28.117Q49.586-28.163 49.527-28.163L49.527-28.443L50.843-28.443L50.843-28.163Q50.283-28.163 49.903-27.763L49.281-27.062L50.276-25.914Q50.375-25.815 50.476-25.770Q50.577-25.726 50.688-25.716Q50.799-25.705 50.977-25.705L50.977-25.425L49.483-25.425L49.483-25.705Q49.548-25.705 49.608-25.739Q49.668-25.774 49.668-25.839Q49.668-25.886 49.637-25.914L48.960-26.700L48.427-26.105Q48.314-25.975 48.314-25.859Q48.314-25.794 48.355-25.750Q48.396-25.705 48.454-25.705",[1118],[1090,4599,4600],{"transform":4564},[1098,4601],{"d":4602,"fill":1153,"stroke":1153,"className":4603,"style":1207},"M54.246-26.502Q54.246-26.943 54.549-27.264Q54.851-27.585 55.303-27.777L55.063-27.917Q54.793-28.077 54.627-28.335Q54.462-28.593 54.462-28.891Q54.462-29.243 54.667-29.515Q54.872-29.786 55.193-29.930Q55.514-30.073 55.856-30.073Q56.178-30.073 56.501-29.957Q56.824-29.841 57.035-29.600Q57.247-29.359 57.247-29.024Q57.247-28.662 57.003-28.399Q56.759-28.135 56.379-27.958L56.779-27.722Q56.974-27.609 57.133-27.440Q57.292-27.271 57.379-27.062Q57.466-26.854 57.466-26.621Q57.466-26.218 57.232-25.914Q56.998-25.610 56.624-25.447Q56.249-25.285 55.856-25.285Q55.470-25.285 55.101-25.422Q54.732-25.558 54.489-25.835Q54.246-26.112 54.246-26.502M54.694-26.502Q54.694-26.215 54.863-25.992Q55.033-25.770 55.301-25.654Q55.569-25.538 55.856-25.538Q56.294-25.538 56.656-25.755Q57.018-25.972 57.018-26.379Q57.018-26.580 56.890-26.758Q56.762-26.936 56.584-27.035L55.562-27.630Q55.323-27.520 55.125-27.354Q54.927-27.189 54.810-26.973Q54.694-26.758 54.694-26.502M55.217-28.631L56.137-28.098Q56.444-28.258 56.646-28.491Q56.847-28.723 56.847-29.024Q56.847-29.263 56.702-29.453Q56.557-29.643 56.325-29.742Q56.092-29.841 55.856-29.841Q55.634-29.841 55.405-29.771Q55.176-29.701 55.019-29.544Q54.862-29.386 54.862-29.157Q54.862-28.843 55.217-28.631M58.485-23.668L58.416-23.668Q58.382-23.668 58.360-23.694Q58.338-23.719 58.338-23.754Q58.338-23.798 58.368-23.815Q58.724-24.119 58.973-24.509Q59.223-24.899 59.375-25.331Q59.527-25.763 59.597-26.232Q59.667-26.700 59.667-27.175Q59.667-27.654 59.597-28.120Q59.527-28.587 59.373-29.022Q59.220-29.458 58.968-29.846Q58.717-30.234 58.368-30.528Q58.338-30.545 58.338-30.590Q58.338-30.624 58.360-30.649Q58.382-30.675 58.416-30.675L58.485-30.675Q58.495-30.675 58.503-30.673Q58.512-30.672 58.522-30.668Q59.066-30.268 59.438-29.715Q59.811-29.161 59.992-28.515Q60.173-27.869 60.173-27.175Q60.173-26.474 59.992-25.827Q59.811-25.179 59.437-24.625Q59.062-24.071 58.522-23.675Q58.512-23.675 58.503-23.673Q58.495-23.672 58.485-23.668",[1118],[1271,4605,4607,4608,4641,4642,4711,4712,4754,4755,4770,4771,4786,4787,4770,4802,4817,4818,4833],{"className":4606},[1274],"One ",[395,4609,4611],{"className":4610},[398],[395,4612,4614,4632],{"className":4613,"ariaHidden":403},[402],[395,4615,4617,4620,4623,4626,4629],{"className":4616},[407],[395,4618],{"className":4619,"style":2521},[411],[395,4621,1729],{"className":4622},[416,417],[395,4624],{"className":4625,"style":517},[516],[395,4627,891],{"className":4628},[521],[395,4630],{"className":4631,"style":517},[516],[395,4633,4635,4638],{"className":4634},[407],[395,4636],{"className":4637,"style":1043},[411],[395,4639,929],{"className":4640},[416]," chain ",[395,4643,4645],{"className":4644},[398],[395,4646,4648,4666,4684,4702],{"className":4647,"ariaHidden":403},[402],[395,4649,4651,4654,4657,4660,4663],{"className":4650},[407],[395,4652],{"className":4653,"style":1043},[411],[395,4655,907],{"className":4656},[416],[395,4658],{"className":4659,"style":517},[516],[395,4661,3934],{"className":4662},[521],[395,4664],{"className":4665,"style":517},[516],[395,4667,4669,4672,4675,4678,4681],{"className":4668},[407],[395,4670],{"className":4671,"style":1043},[411],[395,4673,929],{"className":4674},[416],[395,4676],{"className":4677,"style":517},[516],[395,4679,3934],{"className":4680},[521],[395,4682],{"className":4683,"style":517},[516],[395,4685,4687,4690,4693,4696,4699],{"className":4686},[407],[395,4688],{"className":4689,"style":1043},[411],[395,4691,948],{"className":4692},[416],[395,4694],{"className":4695,"style":517},[516],[395,4697,3934],{"className":4698},[521],[395,4700],{"className":4701,"style":517},[516],[395,4703,4705,4708],{"className":4704},[407],[395,4706],{"className":4707,"style":1043},[411],[395,4709,958],{"className":4710},[416]," (indices ",[395,4713,4715],{"className":4714},[398],[395,4716,4718],{"className":4717,"ariaHidden":403},[402],[395,4719,4721,4724,4727,4730,4733,4736,4739,4742,4745,4748,4751],{"className":4720},[407],[395,4722],{"className":4723,"style":1391},[411],[395,4725,498],{"className":4726},[416],[395,4728,912],{"className":4729},[911],[395,4731],{"className":4732,"style":916},[516],[395,4734,907],{"className":4735},[416],[395,4737,912],{"className":4738},[911],[395,4740],{"className":4741,"style":916},[516],[395,4743,948],{"className":4744},[416],[395,4746,912],{"className":4747},[911],[395,4749],{"className":4750,"style":916},[516],[395,4752,977],{"className":4753},[416],"), arrows along the cell tops. The dotted arrows show equally-long alternatives — starting at the ",[395,4756,4758],{"className":4757},[398],[395,4759,4761],{"className":4760,"ariaHidden":403},[402],[395,4762,4764,4767],{"className":4763},[407],[395,4765],{"className":4766,"style":1043},[411],[395,4768,498],{"className":4769},[416]," (index ",[395,4772,4774],{"className":4773},[398],[395,4775,4777],{"className":4776,"ariaHidden":403},[402],[395,4778,4780,4783],{"className":4779},[407],[395,4781],{"className":4782,"style":1043},[411],[395,4784,561],{"className":4785},[416],"), or ending at the ",[395,4788,4790],{"className":4789},[398],[395,4791,4793],{"className":4792,"ariaHidden":403},[402],[395,4794,4796,4799],{"className":4795},[407],[395,4797],{"className":4798,"style":1043},[411],[395,4800,977],{"className":4801},[416],[395,4803,4805],{"className":4804},[398],[395,4806,4808],{"className":4807,"ariaHidden":403},[402],[395,4809,4811,4814],{"className":4810},[407],[395,4812],{"className":4813,"style":1043},[411],[395,4815,1110],{"className":4816},[416],") instead of the ",[395,4819,4821],{"className":4820},[398],[395,4822,4824],{"className":4823,"ariaHidden":403},[402],[395,4825,4827,4830],{"className":4826},[407],[395,4828],{"className":4829,"style":1043},[411],[395,4831,958],{"className":4832},[416]," — so the LIS is not unique.",[381,4835,4836,4837,4711,4906,4948,4949,4982,4983,4998,4999,5023,5024,5027,5028,5043,5044,4770,5059,5074,5075,4770,5090,5105,5106,5121,5122,5124,5125,5128,5129,5171,5172,4982,5187,5202,5203,5245,5246,5261,5262,5277,5278,3912,5311,5353,5354,5372],{},"The solid chain ",[395,4838,4840],{"className":4839},[398],[395,4841,4843,4861,4879,4897],{"className":4842,"ariaHidden":403},[402],[395,4844,4846,4849,4852,4855,4858],{"className":4845},[407],[395,4847],{"className":4848,"style":1043},[411],[395,4850,907],{"className":4851},[416],[395,4853],{"className":4854,"style":517},[516],[395,4856,3934],{"className":4857},[521],[395,4859],{"className":4860,"style":517},[516],[395,4862,4864,4867,4870,4873,4876],{"className":4863},[407],[395,4865],{"className":4866,"style":1043},[411],[395,4868,929],{"className":4869},[416],[395,4871],{"className":4872,"style":517},[516],[395,4874,3934],{"className":4875},[521],[395,4877],{"className":4878,"style":517},[516],[395,4880,4882,4885,4888,4891,4894],{"className":4881},[407],[395,4883],{"className":4884,"style":1043},[411],[395,4886,948],{"className":4887},[416],[395,4889],{"className":4890,"style":517},[516],[395,4892,3934],{"className":4893},[521],[395,4895],{"className":4896,"style":517},[516],[395,4898,4900,4903],{"className":4899},[407],[395,4901],{"className":4902,"style":1043},[411],[395,4904,958],{"className":4905},[416],[395,4907,4909],{"className":4908},[398],[395,4910,4912],{"className":4911,"ariaHidden":403},[402],[395,4913,4915,4918,4921,4924,4927,4930,4933,4936,4939,4942,4945],{"className":4914},[407],[395,4916],{"className":4917,"style":1391},[411],[395,4919,498],{"className":4920},[416],[395,4922,912],{"className":4923},[911],[395,4925],{"className":4926,"style":916},[516],[395,4928,907],{"className":4929},[416],[395,4931,912],{"className":4932},[911],[395,4934],{"className":4935,"style":916},[516],[395,4937,948],{"className":4938},[416],[395,4940,912],{"className":4941},[911],[395,4943],{"className":4944,"style":916},[516],[395,4946,977],{"className":4947},[416],") realizes\n",[395,4950,4952],{"className":4951},[398],[395,4953,4955,4973],{"className":4954,"ariaHidden":403},[402],[395,4956,4958,4961,4964,4967,4970],{"className":4957},[407],[395,4959],{"className":4960,"style":2521},[411],[395,4962,1729],{"className":4963},[416,417],[395,4965],{"className":4966,"style":517},[516],[395,4968,891],{"className":4969},[521],[395,4971],{"className":4972,"style":517},[516],[395,4974,4976,4979],{"className":4975},[407],[395,4977],{"className":4978,"style":1043},[411],[395,4980,929],{"className":4981},[416]," at index ",[395,4984,4986],{"className":4985},[398],[395,4987,4989],{"className":4988,"ariaHidden":403},[402],[395,4990,4992,4995],{"className":4991},[407],[395,4993],{"className":4994,"style":1043},[411],[395,4996,977],{"className":4997},[416],", and the row beneath records every ",[395,5000,5002],{"className":5001},[398],[395,5003,5005],{"className":5004,"ariaHidden":403},[402],[395,5006,5008,5011,5014,5017,5020],{"className":5007},[407],[395,5009],{"className":5010,"style":412},[411],[395,5012,1729],{"className":5013},[416,417],[395,5015,423],{"className":5016},[422],[395,5018,461],{"className":5019},[416,417],[395,5021,436],{"className":5022},[435],". ",[390,5025,5026],{},"A subtlety worth\nnaming:"," the predecessor of ",[395,5029,5031],{"className":5030},[398],[395,5032,5034],{"className":5033,"ariaHidden":403},[402],[395,5035,5037,5040],{"className":5036},[407],[395,5038],{"className":5039,"style":1043},[411],[395,5041,929],{"className":5042},[416]," is not unique — both the ",[395,5045,5047],{"className":5046},[398],[395,5048,5050],{"className":5049,"ariaHidden":403},[402],[395,5051,5053,5056],{"className":5052},[407],[395,5054],{"className":5055,"style":1043},[411],[395,5057,907],{"className":5058},[416],[395,5060,5062],{"className":5061},[398],[395,5063,5065],{"className":5064,"ariaHidden":403},[402],[395,5066,5068,5071],{"className":5067},[407],[395,5069],{"className":5070,"style":1043},[411],[395,5072,498],{"className":5073},[416],") and the\n",[395,5076,5078],{"className":5077},[398],[395,5079,5081],{"className":5080,"ariaHidden":403},[402],[395,5082,5084,5087],{"className":5083},[407],[395,5085],{"className":5086,"style":1043},[411],[395,5088,498],{"className":5089},[416],[395,5091,5093],{"className":5092},[398],[395,5094,5096],{"className":5095,"ariaHidden":403},[402],[395,5097,5099,5102],{"className":5098},[407],[395,5100],{"className":5101,"style":1043},[411],[395,5103,561],{"className":5104},[416],") are smaller and end a length-",[395,5107,5109],{"className":5108},[398],[395,5110,5112],{"className":5111,"ariaHidden":403},[402],[395,5113,5115,5118],{"className":5114},[407],[395,5116],{"className":5117,"style":1043},[411],[395,5119,498],{"className":5120},[416]," run, so either could precede it.\nReconstruction is ",[385,5123,207],{},": it stores and follows a single parent, and we take the\n",[390,5126,5127],{},"earlier"," index, giving ",[395,5130,5132],{"className":5131},[398],[395,5133,5135],{"className":5134,"ariaHidden":403},[402],[395,5136,5138,5141,5144,5147,5150,5153,5156,5159,5162,5165,5168],{"className":5137},[407],[395,5139],{"className":5140,"style":1391},[411],[395,5142,907],{"className":5143},[416],[395,5145,912],{"className":5146},[911],[395,5148],{"className":5149,"style":916},[516],[395,5151,929],{"className":5152},[416],[395,5154,912],{"className":5155},[911],[395,5157],{"className":5158,"style":916},[516],[395,5160,948],{"className":5161},[416],[395,5163,912],{"className":5164},[911],[395,5166],{"className":5167,"style":916},[516],[395,5169,958],{"className":5170},[416],". The dotted arrows mark the other choices:\nextending the ",[395,5173,5175],{"className":5174},[398],[395,5176,5178],{"className":5177,"ariaHidden":403},[402],[395,5179,5181,5184],{"className":5180},[407],[395,5182],{"className":5183,"style":1043},[411],[395,5185,498],{"className":5186},[416],[395,5188,5190],{"className":5189},[398],[395,5191,5193],{"className":5192,"ariaHidden":403},[402],[395,5194,5196,5199],{"className":5195},[407],[395,5197],{"className":5198,"style":1043},[411],[395,5200,561],{"className":5201},[416]," instead yields ",[395,5204,5206],{"className":5205},[398],[395,5207,5209],{"className":5208,"ariaHidden":403},[402],[395,5210,5212,5215,5218,5221,5224,5227,5230,5233,5236,5239,5242],{"className":5211},[407],[395,5213],{"className":5214,"style":1391},[411],[395,5216,498],{"className":5217},[416],[395,5219,912],{"className":5220},[911],[395,5222],{"className":5223,"style":916},[516],[395,5225,929],{"className":5226},[416],[395,5228,912],{"className":5229},[911],[395,5231],{"className":5232,"style":916},[516],[395,5234,948],{"className":5235},[416],[395,5237,912],{"className":5238},[911],[395,5240],{"className":5241,"style":916},[516],[395,5243,958],{"className":5244},[416],", and stopping at the ",[395,5247,5249],{"className":5248},[398],[395,5250,5252],{"className":5251,"ariaHidden":403},[402],[395,5253,5255,5258],{"className":5254},[407],[395,5256],{"className":5257,"style":1043},[411],[395,5259,977],{"className":5260},[416],"\n(index ",[395,5263,5265],{"className":5264},[398],[395,5266,5268],{"className":5267,"ariaHidden":403},[402],[395,5269,5271,5274],{"className":5270},[407],[395,5272],{"className":5273,"style":1043},[411],[395,5275,1110],{"className":5276},[416],", also ",[395,5279,5281],{"className":5280},[398],[395,5282,5284,5302],{"className":5283,"ariaHidden":403},[402],[395,5285,5287,5290,5293,5296,5299],{"className":5286},[407],[395,5288],{"className":5289,"style":2521},[411],[395,5291,1729],{"className":5292},[416,417],[395,5294],{"className":5295,"style":517},[516],[395,5297,891],{"className":5298},[521],[395,5300],{"className":5301,"style":517},[516],[395,5303,5305,5308],{"className":5304},[407],[395,5306],{"className":5307,"style":1043},[411],[395,5309,929],{"className":5310},[416],[395,5312,5314],{"className":5313},[398],[395,5315,5317],{"className":5316,"ariaHidden":403},[402],[395,5318,5320,5323,5326,5329,5332,5335,5338,5341,5344,5347,5350],{"className":5319},[407],[395,5321],{"className":5322,"style":1391},[411],[395,5324,907],{"className":5325},[416],[395,5327,912],{"className":5328},[911],[395,5330],{"className":5331,"style":916},[516],[395,5333,929],{"className":5334},[416],[395,5336,912],{"className":5337},[911],[395,5339],{"className":5340,"style":916},[516],[395,5342,948],{"className":5343},[416],[395,5345,912],{"className":5346},[911],[395,5348],{"className":5349,"style":916},[516],[395,5351,977],{"className":5352},[416],". Whenever ",[395,5355,5357],{"className":5356},[398],[395,5358,5360],{"className":5359,"ariaHidden":403},[402],[395,5361,5363,5366],{"className":5362},[407],[395,5364],{"className":5365,"style":3339},[411],[395,5367,5369],{"className":5368},[416],[395,5370,3347],{"className":5371},[416,3346]," has ties or several\nendpoints reach the maximum length, the LIS is simply not unique.",[1595,5374,1598,5376,5415],{"id":5375},"the-onlogn-method-patience-sorting-and-the-tails-array",[395,5377,5379],{"className":5378},[398],[395,5380,5382],{"className":5381,"ariaHidden":403},[402],[395,5383,5385,5388,5391,5394,5397,5400,5406,5409,5412],{"className":5384},[407],[395,5386],{"className":5387,"style":412},[411],[395,5389,1507],{"className":5390,"style":1506},[416,417],[395,5392,1511],{"className":5393},[422],[395,5395,431],{"className":5396},[416,417],[395,5398],{"className":5399,"style":916},[516],[395,5401,5403],{"className":5402},[1574],[395,5404,1580],{"className":5405,"style":1579},[416,1578],[395,5407],{"className":5408,"style":916},[516],[395,5410,431],{"className":5411},[416,417],[395,5413,1545],{"className":5414},[435]," method: patience sorting and the tails array",[381,5417,5418,5419,5422],{},"The quadratic inner loop searches ",[385,5420,5421],{},"all"," earlier indices for the best predecessor.\nThe trick that removes it is to stop tracking endpoints individually and instead\nmaintain, for each achievable length, the single most useful witness.",[1705,5424,5425],{"type":1707},[381,5426,5427,1713,5430,5458,5459,5462,5463,5497,5498,1808],{},[390,5428,5429],{},"Definition (Tails array).",[395,5431,5433],{"className":5432},[398],[395,5434,5436],{"className":5435,"ariaHidden":403},[402],[395,5437,5439,5442,5449,5452,5455],{"className":5438},[407],[395,5440],{"className":5441,"style":412},[411],[395,5443,5445],{"className":5444},[416],[395,5446,5448],{"className":5447},[416,3346],"tails",[395,5450,423],{"className":5451},[422],[395,5453,640],{"className":5454,"style":639},[416,417],[395,5456,436],{"className":5457},[435]," = the ",[390,5460,5461],{},"smallest possible last element"," of any increasing\nsubsequence of length ",[395,5464,5466],{"className":5465},[398],[395,5467,5469,5488],{"className":5468,"ariaHidden":403},[402],[395,5470,5472,5476,5479,5482,5485],{"className":5471},[407],[395,5473],{"className":5474,"style":5475},[411],"height:0.7778em;vertical-align:-0.0833em;",[395,5477,640],{"className":5478,"style":639},[416,417],[395,5480],{"className":5481,"style":2132},[516],[395,5483,2137],{"className":5484},[2136],[395,5486],{"className":5487,"style":2132},[516],[395,5489,5491,5494],{"className":5490},[407],[395,5492],{"className":5493,"style":1043},[411],[395,5495,498],{"className":5496},[416]," seen so far (zero-indexed ",[395,5499,5501],{"className":5500},[398],[395,5502,5504],{"className":5503,"ariaHidden":403},[402],[395,5505,5507,5510],{"className":5506},[407],[395,5508],{"className":5509,"style":3361},[411],[395,5511,640],{"className":5512,"style":639},[416,417],[381,5514,5515,5516,5559,5560,5563,5581,5582,5611,5612,5615,5616,5631,5632,5647,5648,5663,5664,1063],{},"The whole algorithm is one pass. For each element ",[395,5517,5519],{"className":5518},[398],[395,5520,5522,5541],{"className":5521,"ariaHidden":403},[402],[395,5523,5525,5528,5532,5535,5538],{"className":5524},[407],[395,5526],{"className":5527,"style":881},[411],[395,5529,5531],{"className":5530},[416,417],"x",[395,5533],{"className":5534,"style":517},[516],[395,5536,891],{"className":5537},[521],[395,5539],{"className":5540,"style":517},[516],[395,5542,5544,5547,5550,5553,5556],{"className":5543},[407],[395,5545],{"className":5546,"style":412},[411],[395,5548,418],{"className":5549},[416,417],[395,5551,423],{"className":5552},[422],[395,5554,461],{"className":5555},[416,417],[395,5557,436],{"className":5558},[435],",\n",[418,5561,5562],{"href":137},"binary-search",[395,5564,5566],{"className":5565},[398],[395,5567,5569],{"className":5568,"ariaHidden":403},[402],[395,5570,5572,5575],{"className":5571},[407],[395,5573],{"className":5574,"style":3361},[411],[395,5576,5578],{"className":5577},[416],[395,5579,5448],{"className":5580},[416,3346]," for the first entry ",[395,5583,5585],{"className":5584},[398],[395,5586,5588,5602],{"className":5587,"ariaHidden":403},[402],[395,5589,5591,5595,5599],{"className":5590},[407],[395,5592],{"className":5593,"style":5594},[411],"height:0.7719em;vertical-align:-0.136em;",[395,5596,5598],{"className":5597},[521],"≥",[395,5600],{"className":5601,"style":517},[516],[395,5603,5605,5608],{"className":5604},[407],[395,5606],{"className":5607,"style":881},[411],[395,5609,5531],{"className":5610},[416,417]," (a ",[3268,5613,5614],{},"lower_bound","). If one is found,\noverwrite it with ",[395,5617,5619],{"className":5618},[398],[395,5620,5622],{"className":5621,"ariaHidden":403},[402],[395,5623,5625,5628],{"className":5624},[407],[395,5626],{"className":5627,"style":881},[411],[395,5629,5531],{"className":5630},[416,417],"; if none is (so ",[395,5633,5635],{"className":5634},[398],[395,5636,5638],{"className":5637,"ariaHidden":403},[402],[395,5639,5641,5644],{"className":5640},[407],[395,5642],{"className":5643,"style":881},[411],[395,5645,5531],{"className":5646},[416,417]," exceeds every tail), append ",[395,5649,5651],{"className":5650},[398],[395,5652,5654],{"className":5653,"ariaHidden":403},[402],[395,5655,5657,5660],{"className":5656},[407],[395,5658],{"className":5659,"style":881},[411],[395,5661,5531],{"className":5662},[416,417],". The LIS\nlength is the final length of ",[395,5665,5667],{"className":5666},[398],[395,5668,5670],{"className":5669,"ariaHidden":403},[402],[395,5671,5673,5676],{"className":5672},[407],[395,5674],{"className":5675,"style":3361},[411],[395,5677,5679],{"className":5678},[416],[395,5680,5448],{"className":5681},[416,3346],[3262,5683,5685],{"className":3264,"code":5684,"language":3266,"meta":376,"style":376},"caption: $\\textsc{LIS-Patience}(a[1..n])$ — tails array, $O(n\\log n)$\nnumber: 2\n$\\mathit{tails} \\gets$ empty array\nfor $i \\gets 1$ to $n$ do\n  $k \\gets \\textsc{Lower-Bound}(\\mathit{tails},\\ a[i])$ \u002F\u002F first $\\mathit{tails}[k] \\ge a[i]$\n  if $k = |\\mathit{tails}|$ then\n    append $a[i]$ to $\\mathit{tails}$ \u002F\u002F exceeds all tails: extend\n  else\n    $\\mathit{tails}[k] \\gets a[i]$ \u002F\u002F shrink length-$(k{+}1)$ tail\nreturn $|\\mathit{tails}|$\n",[3268,5686,5687,5692,5697,5702,5706,5711,5716,5721,5726,5731],{"__ignoreMap":376},[395,5688,5689],{"class":3272,"line":6},[395,5690,5691],{},"caption: $\\textsc{LIS-Patience}(a[1..n])$ — tails array, $O(n\\log n)$\n",[395,5693,5694],{"class":3272,"line":18},[395,5695,5696],{},"number: 2\n",[395,5698,5699],{"class":3272,"line":24},[395,5700,5701],{},"$\\mathit{tails} \\gets$ empty array\n",[395,5703,5704],{"class":3272,"line":73},[395,5705,3285],{},[395,5707,5708],{"class":3272,"line":102},[395,5709,5710],{},"  $k \\gets \\textsc{Lower-Bound}(\\mathit{tails},\\ a[i])$ \u002F\u002F first $\\mathit{tails}[k] \\ge a[i]$\n",[395,5712,5713],{"class":3272,"line":108},[395,5714,5715],{},"  if $k = |\\mathit{tails}|$ then\n",[395,5717,5718],{"class":3272,"line":116},[395,5719,5720],{},"    append $a[i]$ to $\\mathit{tails}$ \u002F\u002F exceeds all tails: extend\n",[395,5722,5723],{"class":3272,"line":196},[395,5724,5725],{},"  else\n",[395,5727,5728],{"class":3272,"line":202},[395,5729,5730],{},"    $\\mathit{tails}[k] \\gets a[i]$ \u002F\u002F shrink length-$(k{+}1)$ tail\n",[395,5732,5733],{"class":3272,"line":283},[395,5734,5735],{},"return $|\\mathit{tails}|$\n",[381,5737,5738,5739,5772,5773,5812],{},"Each element costs one ",[395,5740,5742],{"className":5741},[398],[395,5743,5745],{"className":5744,"ariaHidden":403},[402],[395,5746,5748,5751,5754,5757,5763,5766,5769],{"className":5747},[407],[395,5749],{"className":5750,"style":412},[411],[395,5752,1507],{"className":5753,"style":1506},[416,417],[395,5755,1511],{"className":5756},[422],[395,5758,5760],{"className":5759},[1574],[395,5761,1580],{"className":5762,"style":1579},[416,1578],[395,5764],{"className":5765,"style":916},[516],[395,5767,431],{"className":5768},[416,417],[395,5770,1545],{"className":5771},[435]," binary search, for ",[395,5774,5776],{"className":5775},[398],[395,5777,5779],{"className":5778,"ariaHidden":403},[402],[395,5780,5782,5785,5788,5791,5794,5797,5803,5806,5809],{"className":5781},[407],[395,5783],{"className":5784,"style":412},[411],[395,5786,1507],{"className":5787,"style":1506},[416,417],[395,5789,1511],{"className":5790},[422],[395,5792,431],{"className":5793},[416,417],[395,5795],{"className":5796,"style":916},[516],[395,5798,5800],{"className":5799},[1574],[395,5801,1580],{"className":5802,"style":1579},[416,1578],[395,5804],{"className":5805,"style":916},[516],[395,5807,431],{"className":5808},[416,417],[395,5810,1545],{"className":5811},[435]," total.",[5814,5815,5817],"h3",{"id":5816},"why-this-is-correct","Why this is correct",[381,5819,5820,5821,5842,5843,5846],{},"Two facts carry the whole proof. First, ",[390,5822,5823,5841],{},[395,5824,5826],{"className":5825},[398],[395,5827,5829],{"className":5828,"ariaHidden":403},[402],[395,5830,5832,5835],{"className":5831},[407],[395,5833],{"className":5834,"style":3361},[411],[395,5836,5838],{"className":5837},[416],[395,5839,5448],{"className":5840},[416,3346]," is always sorted in\nincreasing order",", so binary search is even legal. Second, ",[390,5844,5845],{},"the updates never\nreduce any achievable length",", so the array's length tracks the true LIS.",[1705,5848,5850],{"type":5849},"lemma",[381,5851,5852,5855,5856,5874,5875,5902,5903,5942],{},[390,5853,5854],{},"Invariant."," After processing any prefix, ",[395,5857,5859],{"className":5858},[398],[395,5860,5862],{"className":5861,"ariaHidden":403},[402],[395,5863,5865,5868],{"className":5864},[407],[395,5866],{"className":5867,"style":3361},[411],[395,5869,5871],{"className":5870},[416],[395,5872,5448],{"className":5873},[416,3346]," is strictly\nincreasing, and ",[395,5876,5878],{"className":5877},[398],[395,5879,5881],{"className":5880,"ariaHidden":403},[402],[395,5882,5884,5887,5893,5896,5899],{"className":5883},[407],[395,5885],{"className":5886,"style":412},[411],[395,5888,5890],{"className":5889},[416],[395,5891,5448],{"className":5892},[416,3346],[395,5894,423],{"className":5895},[422],[395,5897,640],{"className":5898,"style":639},[416,417],[395,5900,436],{"className":5901},[435]," is the minimum tail over all\nlength-",[395,5904,5906],{"className":5905},[398],[395,5907,5909,5930],{"className":5908,"ariaHidden":403},[402],[395,5910,5912,5915,5918,5921,5924,5927],{"className":5911},[407],[395,5913],{"className":5914,"style":412},[411],[395,5916,1511],{"className":5917},[422],[395,5919,640],{"className":5920,"style":639},[416,417],[395,5922],{"className":5923,"style":2132},[516],[395,5925,2137],{"className":5926},[2136],[395,5928],{"className":5929,"style":2132},[516],[395,5931,5933,5936,5939],{"className":5932},[407],[395,5934],{"className":5935,"style":412},[411],[395,5937,498],{"className":5938},[416],[395,5940,1545],{"className":5941},[435]," increasing subsequences of that prefix.",[381,5944,5945,5948,5949,5988,5989,6004,6005,6038,6039,6054,6055,6130,6131,6158,6159,6174,6175,6177,6178,6241,6242,6275,6276,6369],{},[385,5946,5947],{},"Sortedness."," A length-",[395,5950,5952],{"className":5951},[398],[395,5953,5955,5976],{"className":5954,"ariaHidden":403},[402],[395,5956,5958,5961,5964,5967,5970,5973],{"className":5957},[407],[395,5959],{"className":5960,"style":412},[411],[395,5962,1511],{"className":5963},[422],[395,5965,640],{"className":5966,"style":639},[416,417],[395,5968],{"className":5969,"style":2132},[516],[395,5971,2137],{"className":5972},[2136],[395,5974],{"className":5975,"style":2132},[516],[395,5977,5979,5982,5985],{"className":5978},[407],[395,5980],{"className":5981,"style":412},[411],[395,5983,498],{"className":5984},[416],[395,5986,1545],{"className":5987},[435]," increasing subsequence is a length-",[395,5990,5992],{"className":5991},[398],[395,5993,5995],{"className":5994,"ariaHidden":403},[402],[395,5996,5998,6001],{"className":5997},[407],[395,5999],{"className":6000,"style":3361},[411],[395,6002,640],{"className":6003,"style":639},[416,417]," one with one\nmore element appended, so the minimum tail of length ",[395,6006,6008],{"className":6007},[398],[395,6009,6011,6029],{"className":6010,"ariaHidden":403},[402],[395,6012,6014,6017,6020,6023,6026],{"className":6013},[407],[395,6015],{"className":6016,"style":5475},[411],[395,6018,640],{"className":6019,"style":639},[416,417],[395,6021],{"className":6022,"style":2132},[516],[395,6024,2137],{"className":6025},[2136],[395,6027],{"className":6028,"style":2132},[516],[395,6030,6032,6035],{"className":6031},[407],[395,6033],{"className":6034,"style":1043},[411],[395,6036,498],{"className":6037},[416]," strictly exceeds that of\nlength ",[395,6040,6042],{"className":6041},[398],[395,6043,6045],{"className":6044,"ariaHidden":403},[402],[395,6046,6048,6051],{"className":6047},[407],[395,6049],{"className":6050,"style":3361},[411],[395,6052,640],{"className":6053,"style":639},[416,417],": ",[395,6056,6058],{"className":6057},[398],[395,6059,6061,6088,6109],{"className":6060,"ariaHidden":403},[402],[395,6062,6064,6067,6073,6076,6079,6082,6085],{"className":6063},[407],[395,6065],{"className":6066,"style":412},[411],[395,6068,6070],{"className":6069},[416],[395,6071,5448],{"className":6072},[416,3346],[395,6074,423],{"className":6075},[422],[395,6077,640],{"className":6078,"style":639},[416,417],[395,6080],{"className":6081,"style":2132},[516],[395,6083,2815],{"className":6084},[2136],[395,6086],{"className":6087,"style":2132},[516],[395,6089,6091,6094,6097,6100,6103,6106],{"className":6090},[407],[395,6092],{"className":6093,"style":412},[411],[395,6095,498],{"className":6096},[416],[395,6098,436],{"className":6099},[435],[395,6101],{"className":6102,"style":517},[516],[395,6104,522],{"className":6105},[521],[395,6107],{"className":6108,"style":517},[516],[395,6110,6112,6115,6121,6124,6127],{"className":6111},[407],[395,6113],{"className":6114,"style":412},[411],[395,6116,6118],{"className":6117},[416],[395,6119,5448],{"className":6120},[416,3346],[395,6122,423],{"className":6123},[422],[395,6125,640],{"className":6126,"style":639},[416,417],[395,6128,436],{"className":6129},[435],". An overwrite preserves this.\nWhen we replace ",[395,6132,6134],{"className":6133},[398],[395,6135,6137],{"className":6136,"ariaHidden":403},[402],[395,6138,6140,6143,6149,6152,6155],{"className":6139},[407],[395,6141],{"className":6142,"style":412},[411],[395,6144,6146],{"className":6145},[416],[395,6147,5448],{"className":6148},[416,3346],[395,6150,423],{"className":6151},[422],[395,6153,640],{"className":6154,"style":639},[416,417],[395,6156,436],{"className":6157},[435]," by ",[395,6160,6162],{"className":6161},[398],[395,6163,6165],{"className":6164,"ariaHidden":403},[402],[395,6166,6168,6171],{"className":6167},[407],[395,6169],{"className":6170,"style":881},[411],[395,6172,5531],{"className":6173},[416,417],", the ",[3268,6176,5614],{}," guarantees\n",[395,6179,6181],{"className":6180},[398],[395,6182,6184,6211,6232],{"className":6183,"ariaHidden":403},[402],[395,6185,6187,6190,6196,6199,6202,6205,6208],{"className":6186},[407],[395,6188],{"className":6189,"style":412},[411],[395,6191,6193],{"className":6192},[416],[395,6194,5448],{"className":6195},[416,3346],[395,6197,423],{"className":6198},[422],[395,6200,640],{"className":6201,"style":639},[416,417],[395,6203],{"className":6204,"style":2132},[516],[395,6206,2815],{"className":6207},[2136],[395,6209],{"className":6210,"style":2132},[516],[395,6212,6214,6217,6220,6223,6226,6229],{"className":6213},[407],[395,6215],{"className":6216,"style":412},[411],[395,6218,498],{"className":6219},[416],[395,6221,436],{"className":6222},[435],[395,6224],{"className":6225,"style":517},[516],[395,6227,522],{"className":6228},[521],[395,6230],{"className":6231,"style":517},[516],[395,6233,6235,6238],{"className":6234},[407],[395,6236],{"className":6237,"style":881},[411],[395,6239,5531],{"className":6240},[416,417]," (else ",[395,6243,6245],{"className":6244},[398],[395,6246,6248,6266],{"className":6247,"ariaHidden":403},[402],[395,6249,6251,6254,6257,6260,6263],{"className":6250},[407],[395,6252],{"className":6253,"style":5475},[411],[395,6255,640],{"className":6256,"style":639},[416,417],[395,6258],{"className":6259,"style":2132},[516],[395,6261,2815],{"className":6262},[2136],[395,6264],{"className":6265,"style":2132},[516],[395,6267,6269,6272],{"className":6268},[407],[395,6270],{"className":6271,"style":1043},[411],[395,6273,498],{"className":6274},[416]," would have been the found index) and\n",[395,6277,6279],{"className":6278},[398],[395,6280,6282,6300,6330,6357],{"className":6281,"ariaHidden":403},[402],[395,6283,6285,6288,6291,6294,6297],{"className":6284},[407],[395,6286],{"className":6287,"style":5594},[411],[395,6289,5531],{"className":6290},[416,417],[395,6292],{"className":6293,"style":517},[516],[395,6295,1869],{"className":6296},[521],[395,6298],{"className":6299,"style":517},[516],[395,6301,6303,6306,6312,6315,6318,6321,6324,6327],{"className":6302},[407],[395,6304],{"className":6305,"style":412},[411],[395,6307,6309],{"className":6308},[416],[395,6310,5448],{"className":6311},[416,3346],[395,6313,423],{"className":6314},[422],[395,6316,640],{"className":6317,"style":639},[416,417],[395,6319,436],{"className":6320},[435],[395,6322],{"className":6323,"style":517},[516],[395,6325,522],{"className":6326},[521],[395,6328],{"className":6329,"style":517},[516],[395,6331,6333,6336,6342,6345,6348,6351,6354],{"className":6332},[407],[395,6334],{"className":6335,"style":412},[411],[395,6337,6339],{"className":6338},[416],[395,6340,5448],{"className":6341},[416,3346],[395,6343,423],{"className":6344},[422],[395,6346,640],{"className":6347,"style":639},[416,417],[395,6349],{"className":6350,"style":2132},[516],[395,6352,2137],{"className":6353},[2136],[395,6355],{"className":6356,"style":2132},[516],[395,6358,6360,6363,6366],{"className":6359},[407],[395,6361],{"className":6362,"style":412},[411],[395,6364,498],{"className":6365},[416],[395,6367,436],{"className":6368},[435],", so the array stays strictly\nincreasing.",[381,6371,6372,6375,6376,6403,6404,6419,6420,6423,6424,6463,6464,6479,6480,6495,6496,6511,6512,6536,6537],{},[385,6373,6374],{},"Overwriting never hurts."," Replacing ",[395,6377,6379],{"className":6378},[398],[395,6380,6382],{"className":6381,"ariaHidden":403},[402],[395,6383,6385,6388,6394,6397,6400],{"className":6384},[407],[395,6386],{"className":6387,"style":412},[411],[395,6389,6391],{"className":6390},[416],[395,6392,5448],{"className":6393},[416,3346],[395,6395,423],{"className":6396},[422],[395,6398,640],{"className":6399,"style":639},[416,417],[395,6401,436],{"className":6402},[435]," with a smaller value ",[395,6405,6407],{"className":6406},[398],[395,6408,6410],{"className":6409,"ariaHidden":403},[402],[395,6411,6413,6416],{"className":6412},[407],[395,6414],{"className":6415,"style":881},[411],[395,6417,5531],{"className":6418},[416,417],"\ncan only ",[385,6421,6422],{},"help",": any future element that could have extended a length-",[395,6425,6427],{"className":6426},[398],[395,6428,6430,6451],{"className":6429,"ariaHidden":403},[402],[395,6431,6433,6436,6439,6442,6445,6448],{"className":6432},[407],[395,6434],{"className":6435,"style":412},[411],[395,6437,1511],{"className":6438},[422],[395,6440,640],{"className":6441,"style":639},[416,417],[395,6443],{"className":6444,"style":2132},[516],[395,6446,2137],{"className":6447},[2136],[395,6449],{"className":6450,"style":2132},[516],[395,6452,6454,6457,6460],{"className":6453},[407],[395,6455],{"className":6456,"style":412},[411],[395,6458,498],{"className":6459},[416],[395,6461,1545],{"className":6462},[435],"\nsubsequence ending at the old, larger tail can still extend the one ending at ",[395,6465,6467],{"className":6466},[398],[395,6468,6470],{"className":6469,"ariaHidden":403},[402],[395,6471,6473,6476],{"className":6472},[407],[395,6474],{"className":6475,"style":881},[411],[395,6477,5531],{"className":6478},[416,417],",\nsince ",[395,6481,6483],{"className":6482},[398],[395,6484,6486],{"className":6485,"ariaHidden":403},[402],[395,6487,6489,6492],{"className":6488},[407],[395,6490],{"className":6491,"style":881},[411],[395,6493,5531],{"className":6494},[416,417]," is smaller. So no achievable length is ever lost: overwrites only make\ntails more permissive, never shorter. And appending ",[395,6497,6499],{"className":6498},[398],[395,6500,6502],{"className":6501,"ariaHidden":403},[402],[395,6503,6505,6508],{"className":6504},[407],[395,6506],{"className":6507,"style":881},[411],[395,6509,5531],{"className":6510},[416,417]," when it beats every tail\nrecords a genuinely new, longer subsequence. Hence ",[395,6513,6515],{"className":6514},[398],[395,6516,6518],{"className":6517,"ariaHidden":403},[402],[395,6519,6521,6524,6527,6533],{"className":6520},[407],[395,6522],{"className":6523,"style":412},[411],[395,6525,2606],{"className":6526},[416],[395,6528,6530],{"className":6529},[416],[395,6531,5448],{"className":6532},[416,3346],[395,6534,2606],{"className":6535},[416]," equals the\nLIS length. ",[395,6538,6540],{"className":6539},[398],[395,6541,6543],{"className":6542,"ariaHidden":403},[402],[395,6544,6546,6549],{"className":6545},[407],[395,6547],{"className":6548,"style":3020},[411],[395,6550,6552],{"className":6551},[3024,3025],[395,6553,3030],{"className":6554},[416,3029],[1705,6556,6558],{"type":6557},"remark",[381,6559,6560,6563,6564,6567,6568,6583,6584,6602,6603,6606,6607,6610,6611,6613],{},[390,6561,6562],{},"Remark (The card game)."," The name comes from the solitaire variant ",[390,6565,6566],{},"patience\nsorting",": deal cards one at a time onto piles, placing each card on the leftmost\npile whose top is ",[395,6569,6571],{"className":6570},[398],[395,6572,6574],{"className":6573,"ariaHidden":403},[402],[395,6575,6577,6580],{"className":6576},[407],[395,6578],{"className":6579,"style":5594},[411],[395,6581,5598],{"className":6582},[521]," it, or starting a new pile to the right if none qualifies.\nEach pile's top is exactly a ",[395,6585,6587],{"className":6586},[398],[395,6588,6590],{"className":6589,"ariaHidden":403},[402],[395,6591,6593,6596],{"className":6592},[407],[395,6594],{"className":6595,"style":3361},[411],[395,6597,6599],{"className":6598},[416],[395,6600,5448],{"className":6601},[416,3346]," entry, and the number of piles at\nthe end is the LIS length. The greedy ",[1654,6604,6605],{},"leftmost legal pile"," rule ",[385,6608,6609],{},"is"," the\n",[3268,6612,5614],{}," overwrite.",[1077,6615,6617,6809],{"className":6616},[1080,1081],[1083,6618,6622],{"xmlns":1085,"width":6619,"height":6620,"viewBox":6621},"190.674","176.523","-75 -75 143.006 132.392",[1090,6623,6624,6641,6652,6668,6680,6696,6699,6705,6717,6733,6736,6742,6745,6751,6763,6779,6782,6788,6800,6803],{"stroke":1092,"style":1093},[1090,6625,6626],{"fill":3561,"stroke":3561},[1090,6627,6628,6635],{"fill":3561,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,6629,6631],{"transform":6630},"translate(-63.81 2.43)",[1098,6632],{"d":6633,"fill":3561,"stroke":3561,"className":6634,"style":1207},"M1.913-61.017Q1.913-61.349 2.136-61.576Q2.360-61.803 2.704-61.931Q3.047-62.060 3.420-62.112Q3.792-62.165 4.097-62.165L4.097-62.418Q4.097-62.623 3.989-62.803Q3.881-62.982 3.700-63.085Q3.519-63.187 3.311-63.187Q2.904-63.187 2.668-63.095Q2.757-63.058 2.803-62.974Q2.849-62.890 2.849-62.788Q2.849-62.692 2.803-62.613Q2.757-62.535 2.676-62.490Q2.596-62.446 2.507-62.446Q2.357-62.446 2.256-62.543Q2.155-62.641 2.155-62.788Q2.155-63.410 3.311-63.410Q3.522-63.410 3.772-63.346Q4.021-63.283 4.223-63.164Q4.425-63.044 4.551-62.859Q4.678-62.675 4.678-62.432L4.678-60.856Q4.678-60.740 4.739-60.644Q4.801-60.549 4.914-60.549Q5.023-60.549 5.088-60.643Q5.153-60.737 5.153-60.856L5.153-61.304L5.419-61.304L5.419-60.856Q5.419-60.586 5.192-60.421Q4.965-60.255 4.685-60.255Q4.476-60.255 4.339-60.409Q4.203-60.562 4.179-60.778Q4.032-60.511 3.750-60.366Q3.468-60.221 3.143-60.221Q2.866-60.221 2.582-60.296Q2.299-60.371 2.106-60.550Q1.913-60.730 1.913-61.017M2.528-61.017Q2.528-60.843 2.629-60.713Q2.729-60.583 2.885-60.513Q3.040-60.443 3.205-60.443Q3.423-60.443 3.632-60.540Q3.840-60.638 3.968-60.819Q4.097-61 4.097-61.226L4.097-61.954Q3.772-61.954 3.406-61.863Q3.040-61.772 2.784-61.560Q2.528-61.349 2.528-61.017M5.836-61.800Q5.836-62.138 5.977-62.429Q6.117-62.719 6.361-62.933Q6.605-63.146 6.910-63.261Q7.214-63.375 7.539-63.375Q7.809-63.375 8.072-63.276Q8.335-63.177 8.526-62.999L8.526-64.397Q8.526-64.667 8.419-64.729Q8.311-64.790 8-64.790L8-65.071L9.077-65.146L9.077-60.962Q9.077-60.774 9.131-60.691Q9.186-60.607 9.287-60.588Q9.388-60.569 9.603-60.569L9.603-60.289L8.496-60.221L8.496-60.638Q8.079-60.221 7.453-60.221Q7.022-60.221 6.650-60.433Q6.277-60.644 6.057-61.005Q5.836-61.366 5.836-61.800M7.511-60.443Q7.720-60.443 7.906-60.515Q8.092-60.586 8.246-60.723Q8.400-60.860 8.496-61.038L8.496-62.647Q8.410-62.794 8.265-62.914Q8.120-63.034 7.950-63.093Q7.781-63.153 7.600-63.153Q7.040-63.153 6.771-62.764Q6.503-62.374 6.503-61.793Q6.503-61.222 6.737-60.832Q6.971-60.443 7.511-60.443M10.252-61.800Q10.252-62.138 10.393-62.429Q10.533-62.719 10.777-62.933Q11.021-63.146 11.326-63.261Q11.630-63.375 11.955-63.375Q12.225-63.375 12.488-63.276Q12.751-63.177 12.942-62.999L12.942-64.397Q12.942-64.667 12.835-64.729Q12.727-64.790 12.416-64.790L12.416-65.071L13.493-65.146L13.493-60.962Q13.493-60.774 13.547-60.691Q13.602-60.607 13.703-60.588Q13.804-60.569 14.019-60.569L14.019-60.289L12.912-60.221L12.912-60.638Q12.495-60.221 11.869-60.221Q11.438-60.221 11.066-60.433Q10.693-60.644 10.473-61.005Q10.252-61.366 10.252-61.800M11.927-60.443Q12.136-60.443 12.322-60.515Q12.508-60.586 12.662-60.723Q12.816-60.860 12.912-61.038L12.912-62.647Q12.826-62.794 12.681-62.914Q12.536-63.034 12.366-63.093Q12.197-63.153 12.016-63.153Q11.456-63.153 11.187-62.764Q10.919-62.374 10.919-61.793Q10.919-61.222 11.153-60.832Q11.387-60.443 11.927-60.443",[1118],[1090,6636,6637],{"transform":6630},[1098,6638],{"d":6639,"fill":3561,"stroke":3561,"className":6640,"style":1207},"M17.850-60.836Q17.970-60.679 18.161-60.580Q18.353-60.480 18.568-60.441Q18.783-60.402 19.006-60.402Q19.303-60.402 19.498-60.557Q19.693-60.713 19.783-60.967Q19.874-61.222 19.874-61.506Q19.874-61.800 19.782-62.051Q19.689-62.302 19.491-62.458Q19.293-62.613 18.999-62.613L18.483-62.613Q18.455-62.613 18.430-62.639Q18.404-62.664 18.404-62.688L18.404-62.760Q18.404-62.791 18.430-62.813Q18.455-62.835 18.483-62.835L18.924-62.866Q19.286-62.866 19.506-63.223Q19.727-63.581 19.727-63.970Q19.727-64.298 19.532-64.502Q19.337-64.705 19.006-64.705Q18.719-64.705 18.466-64.621Q18.213-64.538 18.049-64.350Q18.196-64.350 18.296-64.235Q18.397-64.121 18.397-63.970Q18.397-63.820 18.291-63.710Q18.185-63.601 18.028-63.601Q17.867-63.601 17.758-63.710Q17.649-63.820 17.649-63.970Q17.649-64.295 17.857-64.514Q18.066-64.732 18.382-64.835Q18.698-64.937 19.006-64.937Q19.324-64.937 19.652-64.833Q19.980-64.729 20.207-64.507Q20.434-64.285 20.434-63.970Q20.434-63.536 20.147-63.211Q19.860-62.887 19.426-62.740Q19.737-62.675 20.017-62.509Q20.298-62.343 20.475-62.085Q20.653-61.827 20.653-61.506Q20.653-61.096 20.409-60.786Q20.164-60.477 19.783-60.313Q19.402-60.149 19.006-60.149Q18.637-60.149 18.279-60.262Q17.922-60.374 17.678-60.624Q17.433-60.873 17.433-61.243Q17.433-61.414 17.550-61.526Q17.666-61.639 17.837-61.639Q17.946-61.639 18.037-61.588Q18.127-61.537 18.182-61.444Q18.237-61.352 18.237-61.243Q18.237-61.075 18.124-60.956Q18.011-60.836 17.850-60.836",[1118],[1090,6642,6643,6646],{"stroke":1153,"style":1155},[1098,6644],{"fill":1100,"d":6645},"M-9.841-48.908H12.92V-71.67H-9.841Z",[1090,6647,6648],{"transform":3478},[1098,6649],{"d":6650,"fill":1092,"stroke":1092,"className":6651,"style":3483},"M2.441-61.010L2.397-61.010Q2.599-60.693 2.986-60.535Q3.373-60.377 3.799-60.377Q4.335-60.377 4.574-60.812Q4.814-61.247 4.814-61.827Q4.814-62.407 4.568-62.847Q4.322-63.286 3.790-63.286L3.170-63.286Q3.144-63.286 3.111-63.315Q3.078-63.343 3.078-63.365L3.078-63.466Q3.078-63.497 3.107-63.521Q3.135-63.545 3.170-63.545L3.689-63.585Q4.155-63.585 4.401-64.057Q4.647-64.530 4.647-65.048Q4.647-65.475 4.434-65.749Q4.221-66.024 3.799-66.024Q3.456-66.024 3.131-65.894Q2.806-65.765 2.621-65.510L2.647-65.510Q2.850-65.510 2.986-65.369Q3.122-65.228 3.122-65.031Q3.122-64.833 2.988-64.699Q2.854-64.565 2.656-64.565Q2.454-64.565 2.316-64.699Q2.177-64.833 2.177-65.031Q2.177-65.620 2.680-65.951Q3.184-66.283 3.799-66.283Q4.177-66.283 4.579-66.143Q4.981-66.002 5.249-65.723Q5.517-65.444 5.517-65.048Q5.517-64.499 5.163-64.062Q4.810-63.624 4.269-63.440Q4.660-63.361 5.005-63.137Q5.350-62.913 5.561-62.572Q5.772-62.231 5.772-61.836Q5.772-61.454 5.609-61.131Q5.447-60.808 5.155-60.572Q4.862-60.337 4.515-60.214Q4.168-60.091 3.799-60.091Q3.351-60.091 2.920-60.252Q2.489-60.412 2.208-60.739Q1.927-61.067 1.927-61.524Q1.927-61.739 2.074-61.882Q2.221-62.025 2.441-62.025Q2.652-62.025 2.797-61.880Q2.942-61.735 2.942-61.524Q2.942-61.313 2.795-61.161Q2.647-61.010 2.441-61.010",[1118],[1090,6653,6654],{"fill":3561,"stroke":3561},[1090,6655,6656,6662],{"fill":3561,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,6657,6659],{"transform":6658},"translate(-63.81 28.038)",[1098,6660],{"d":6633,"fill":3561,"stroke":3561,"className":6661,"style":1207},[1118],[1090,6663,6664],{"transform":6658},[1098,6665],{"d":6666,"fill":3561,"stroke":3561,"className":6667,"style":1207},"M20.380-60.289L17.850-60.289L17.850-60.569Q18.818-60.569 18.818-60.778L18.818-64.397Q18.425-64.209 17.803-64.209L17.803-64.490Q18.220-64.490 18.584-64.591Q18.948-64.691 19.204-64.937L19.330-64.937Q19.395-64.920 19.412-64.852L19.412-60.778Q19.412-60.569 20.380-60.569",[1118],[1090,6669,6670,6673],{"stroke":1153,"style":1155},[1098,6671],{"fill":1100,"d":6672},"M-9.841-23.3H12.92v-22.763H-9.841Z",[1090,6674,6676],{"transform":6675},"translate(-2.312 28.507)",[1098,6677],{"d":6678,"fill":1092,"stroke":1092,"className":6679,"style":3483},"M5.447-60.289L2.415-60.289L2.415-60.605Q3.566-60.605 3.566-60.900L3.566-65.624Q3.078-65.391 2.357-65.391L2.357-65.707Q3.487-65.707 4.049-66.283L4.194-66.283Q4.229-66.283 4.262-66.250Q4.295-66.217 4.295-66.182L4.295-60.900Q4.295-60.605 5.447-60.605",[1118],[1090,6681,6682],{"fill":3561,"stroke":3561},[1090,6683,6684,6690],{"fill":3561,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,6685,6687],{"transform":6686},"translate(-63.81 53.646)",[1098,6688],{"d":6633,"fill":3561,"stroke":3561,"className":6689,"style":1207},[1118],[1090,6691,6692],{"transform":6686},[1098,6693],{"d":6694,"fill":3561,"stroke":3561,"className":6695,"style":1207},"M19.371-61.437L17.327-61.437L17.327-61.718L19.658-64.890Q19.693-64.937 19.758-64.937L19.894-64.937Q19.939-64.937 19.966-64.910Q19.993-64.883 19.993-64.838L19.993-61.718L20.756-61.718L20.756-61.437L19.993-61.437L19.993-60.778Q19.993-60.569 20.749-60.569L20.749-60.289L18.616-60.289L18.616-60.569Q19.371-60.569 19.371-60.778L19.371-61.437M19.419-64.162L17.628-61.718L19.419-61.718",[1118],[1098,6697],{"fill":1100,"d":6698},"M-9.841 2.307H12.92v-22.762H-9.841Z",[1090,6700,6702],{"transform":6701},"translate(-2.312 54.115)",[1098,6703],{"d":6678,"fill":1092,"stroke":1092,"className":6704,"style":3483},[1118],[1090,6706,6707,6710],{"stroke":1153,"style":1155},[1098,6708],{"fill":1100,"d":6709},"M15.766 2.307h22.762v-22.762H15.766Z",[1090,6711,6713],{"transform":6712},"translate(23.295 54.115)",[1098,6714],{"d":6715,"fill":1092,"stroke":1092,"className":6716,"style":3483},"M4.238-61.766L1.799-61.766L1.799-62.082L4.625-66.230Q4.669-66.283 4.735-66.283L4.889-66.283Q4.928-66.283 4.961-66.250Q4.994-66.217 4.994-66.173L4.994-62.082L5.895-62.082L5.895-61.766L4.994-61.766L4.994-60.900Q4.994-60.605 5.895-60.605L5.895-60.289L3.342-60.289L3.342-60.605Q3.702-60.605 3.970-60.660Q4.238-60.715 4.238-60.900L4.238-61.766M4.295-65.255L2.133-62.082L4.295-62.082",[1118],[1090,6718,6719],{"fill":3561,"stroke":3561},[1090,6720,6721,6727],{"fill":3561,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,6722,6724],{"transform":6723},"translate(-63.81 79.253)",[1098,6725],{"d":6633,"fill":3561,"stroke":3561,"className":6726,"style":1207},[1118],[1090,6728,6729],{"transform":6723},[1098,6730],{"d":6731,"fill":3561,"stroke":3561,"className":6732,"style":1207},"M17.861-61.051L17.830-61.051Q17.967-60.754 18.264-60.578Q18.561-60.402 18.889-60.402Q19.252-60.402 19.479-60.580Q19.706-60.757 19.800-61.046Q19.894-61.335 19.894-61.697Q19.894-62.012 19.840-62.297Q19.785-62.582 19.612-62.788Q19.440-62.993 19.125-62.993Q18.852-62.993 18.669-62.926Q18.486-62.859 18.382-62.770Q18.278-62.682 18.182-62.572Q18.086-62.463 18.042-62.453L17.963-62.453Q17.891-62.470 17.874-62.541L17.874-64.859Q17.874-64.893 17.898-64.915Q17.922-64.937 17.956-64.937L17.984-64.937Q18.271-64.821 18.539-64.767Q18.807-64.712 19.084-64.712Q19.361-64.712 19.631-64.767Q19.901-64.821 20.181-64.937L20.205-64.937Q20.240-64.937 20.263-64.914Q20.287-64.890 20.287-64.859L20.287-64.790Q20.287-64.763 20.267-64.743Q19.993-64.428 19.609-64.252Q19.224-64.076 18.811-64.076Q18.472-64.076 18.155-64.162L18.155-62.880Q18.551-63.215 19.125-63.215Q19.529-63.215 19.865-63.005Q20.202-62.794 20.395-62.442Q20.588-62.090 20.588-61.690Q20.588-61.359 20.448-61.073Q20.308-60.788 20.064-60.578Q19.819-60.368 19.517-60.258Q19.214-60.149 18.896-60.149Q18.537-60.149 18.211-60.313Q17.885-60.477 17.690-60.769Q17.495-61.061 17.495-61.424Q17.495-61.574 17.601-61.680Q17.707-61.786 17.861-61.786Q18.014-61.786 18.119-61.682Q18.223-61.578 18.223-61.424Q18.223-61.267 18.119-61.159Q18.014-61.051 17.861-61.051",[1118],[1098,6734],{"fill":1100,"d":6735},"M-9.841 27.914H12.92V5.152H-9.841Z",[1090,6737,6739],{"transform":6738},"translate(-2.312 79.722)",[1098,6740],{"d":6678,"fill":1092,"stroke":1092,"className":6741,"style":3483},[1118],[1098,6743],{"fill":1100,"d":6744},"M15.766 27.914h22.762V5.152H15.766Z",[1090,6746,6748],{"transform":6747},"translate(23.295 79.722)",[1098,6749],{"d":6715,"fill":1092,"stroke":1092,"className":6750,"style":3483},[1118],[1090,6752,6753,6756],{"stroke":1153,"style":1155},[1098,6754],{"fill":1100,"d":6755},"M41.374 27.914h22.762V5.152H41.374Z",[1090,6757,6759],{"transform":6758},"translate(48.903 79.722)",[1098,6760],{"d":6761,"fill":1092,"stroke":1092,"className":6762,"style":3483},"M2.366-61.295Q2.507-60.882 2.867-60.630Q3.228-60.377 3.663-60.377Q4.115-60.377 4.381-60.630Q4.647-60.882 4.750-61.267Q4.853-61.651 4.853-62.108Q4.853-63.809 3.944-63.809Q3.623-63.809 3.394-63.715Q3.166-63.620 3.036-63.501Q2.907-63.383 2.795-63.244Q2.683-63.106 2.647-63.097L2.564-63.097Q2.520-63.097 2.489-63.128Q2.458-63.159 2.458-63.207L2.458-66.204Q2.458-66.235 2.494-66.259Q2.529-66.283 2.555-66.283L2.595-66.283Q3.228-65.993 3.900-65.993Q4.572-65.993 5.214-66.283L5.240-66.283Q5.271-66.283 5.304-66.261Q5.337-66.239 5.337-66.204L5.337-66.103Q5.337-66.099 5.328-66.081Q5.319-66.063 5.319-66.059Q5.003-65.664 4.533-65.442Q4.062-65.220 3.566-65.220Q3.157-65.220 2.775-65.330L2.775-63.611Q3.232-64.068 3.944-64.068Q4.454-64.068 4.853-63.787Q5.253-63.506 5.475-63.051Q5.697-62.596 5.697-62.091Q5.697-61.541 5.418-61.082Q5.139-60.623 4.673-60.357Q4.207-60.091 3.663-60.091Q3.223-60.091 2.839-60.318Q2.454-60.544 2.226-60.924Q1.997-61.304 1.997-61.748Q1.997-61.941 2.129-62.073Q2.261-62.205 2.458-62.205Q2.590-62.205 2.694-62.146Q2.797-62.086 2.856-61.983Q2.915-61.880 2.915-61.748Q2.915-61.550 2.788-61.418Q2.661-61.287 2.458-61.287Q2.397-61.287 2.366-61.295",[1118],[1090,6764,6765],{"fill":3561,"stroke":3561},[1090,6766,6767,6773],{"fill":3561,"stroke":1100,"fontFamily":4506,"fontSize":3684},[1090,6768,6770],{"transform":6769},"translate(-63.81 104.86)",[1098,6771],{"d":6633,"fill":3561,"stroke":3561,"className":6772,"style":1207},[1118],[1090,6774,6775],{"transform":6769},[1098,6776],{"d":6777,"fill":3561,"stroke":3561,"className":6778,"style":1207},"M20.380-60.289L17.495-60.289L17.495-60.491Q17.495-60.521 17.522-60.549L18.770-61.766Q18.842-61.841 18.884-61.883Q18.927-61.926 19.006-62.005Q19.419-62.418 19.650-62.776Q19.881-63.133 19.881-63.557Q19.881-63.789 19.802-63.992Q19.723-64.196 19.582-64.346Q19.440-64.497 19.245-64.577Q19.050-64.657 18.818-64.657Q18.507-64.657 18.249-64.498Q17.991-64.339 17.861-64.062L17.881-64.062Q18.049-64.062 18.156-63.951Q18.264-63.840 18.264-63.676Q18.264-63.519 18.155-63.406Q18.045-63.293 17.881-63.293Q17.721-63.293 17.608-63.406Q17.495-63.519 17.495-63.676Q17.495-64.052 17.703-64.339Q17.912-64.626 18.247-64.782Q18.582-64.937 18.937-64.937Q19.361-64.937 19.741-64.779Q20.120-64.620 20.354-64.303Q20.588-63.987 20.588-63.557Q20.588-63.246 20.448-62.977Q20.308-62.709 20.103-62.504Q19.898-62.299 19.535-62.017Q19.173-61.735 19.064-61.639L18.209-60.911L18.852-60.911Q19.115-60.911 19.404-60.913Q19.693-60.914 19.911-60.923Q20.130-60.932 20.147-60.949Q20.209-61.014 20.246-61.181Q20.284-61.349 20.322-61.591L20.588-61.591",[1118],[1098,6780],{"fill":1100,"d":6781},"M-9.841 53.522H12.92V30.76H-9.841Z",[1090,6783,6785],{"transform":6784},"translate(-2.312 105.33)",[1098,6786],{"d":6678,"fill":1092,"stroke":1092,"className":6787,"style":3483},[1118],[1090,6789,6790,6793],{"stroke":1153,"style":1155},[1098,6791],{"fill":1100,"d":6792},"M15.766 53.522h22.762V30.76H15.766Z",[1090,6794,6796],{"transform":6795},"translate(23.295 105.33)",[1098,6797],{"d":6798,"fill":1092,"stroke":1092,"className":6799,"style":3483},"M5.447-60.289L1.997-60.289L1.997-60.522Q1.997-60.535 2.028-60.566L3.482-62.143Q3.948-62.640 4.201-62.945Q4.454-63.251 4.645-63.662Q4.836-64.073 4.836-64.512Q4.836-65.101 4.513-65.534Q4.190-65.967 3.610-65.967Q3.346-65.967 3.100-65.857Q2.854-65.747 2.678-65.560Q2.502-65.373 2.406-65.123L2.485-65.123Q2.687-65.123 2.830-64.987Q2.973-64.851 2.973-64.635Q2.973-64.429 2.830-64.290Q2.687-64.152 2.485-64.152Q2.283-64.152 2.140-64.295Q1.997-64.437 1.997-64.635Q1.997-65.097 2.234-65.470Q2.472-65.844 2.872-66.063Q3.271-66.283 3.720-66.283Q4.243-66.283 4.697-66.068Q5.152-65.852 5.425-65.453Q5.697-65.053 5.697-64.512Q5.697-64.117 5.526-63.763Q5.354-63.409 5.089-63.130Q4.823-62.851 4.372-62.466Q3.922-62.082 3.843-62.007L2.819-61.045L3.636-61.045Q4.287-61.045 4.724-61.056Q5.161-61.067 5.192-61.089Q5.262-61.172 5.317-61.412Q5.372-61.651 5.412-61.919L5.697-61.919",[1118],[1098,6801],{"fill":1100,"d":6802},"M41.374 53.522h22.762V30.76H41.374Z",[1090,6804,6806],{"transform":6805},"translate(48.903 105.33)",[1098,6807],{"d":6761,"fill":1092,"stroke":1092,"className":6808,"style":3483},[1118],[1271,6810,6812,6813,6852],{"className":6811},[1274],"Patience sorting \u002F ",[395,6814,6816],{"className":6815},[398],[395,6817,6819],{"className":6818,"ariaHidden":403},[402],[395,6820,6822,6825,6828,6831,6834,6837,6843,6846,6849],{"className":6821},[407],[395,6823],{"className":6824,"style":412},[411],[395,6826,1507],{"className":6827,"style":1506},[416,417],[395,6829,1511],{"className":6830},[422],[395,6832,431],{"className":6833},[416,417],[395,6835],{"className":6836,"style":916},[516],[395,6838,6840],{"className":6839},[1574],[395,6841,1580],{"className":6842,"style":1579},[416,1578],[395,6844],{"className":6845,"style":916},[516],[395,6847,431],{"className":6848},[416,417],[395,6850,1545],{"className":6851},[435],": the tails array as elements arrive.",[381,6854,6855,6856,6859,6860,6875,6876,6891,6892,6919,6920,6935,6936,6951],{},"Each row marks the overwrite-or-append position in ",[3268,6857,6858],{},"acc",". Adding ",[395,6861,6863],{"className":6862},[398],[395,6864,6866],{"className":6865,"ariaHidden":403},[402],[395,6867,6869,6872],{"className":6868},[407],[395,6870],{"className":6871,"style":1043},[411],[395,6873,561],{"className":6874},[416]," overwrites the\n",[395,6877,6879],{"className":6878},[398],[395,6880,6882],{"className":6881,"ariaHidden":403},[402],[395,6883,6885,6888],{"className":6884},[407],[395,6886],{"className":6887,"style":1043},[411],[395,6889,929],{"className":6890},[416]," (the first tail ",[395,6893,6895],{"className":6894},[398],[395,6896,6898,6910],{"className":6897,"ariaHidden":403},[402],[395,6899,6901,6904,6907],{"className":6900},[407],[395,6902],{"className":6903,"style":5594},[411],[395,6905,5598],{"className":6906},[521],[395,6908],{"className":6909,"style":517},[516],[395,6911,6913,6916],{"className":6912},[407],[395,6914],{"className":6915,"style":1043},[411],[395,6917,561],{"className":6918},[416],"): the length-",[395,6921,6923],{"className":6922},[398],[395,6924,6926],{"className":6925,"ariaHidden":403},[402],[395,6927,6929,6932],{"className":6928},[407],[395,6930],{"className":6931,"style":1043},[411],[395,6933,561],{"className":6934},[416]," run now ends at the smaller value ",[395,6937,6939],{"className":6938},[398],[395,6940,6942],{"className":6941,"ariaHidden":403},[402],[395,6943,6945,6948],{"className":6944},[407],[395,6946],{"className":6947,"style":1043},[411],[395,6949,561],{"className":6950},[416],",\nleaving room for future growth without ever shortening the array.",[381,6953,6954,6996,6997,7015,7016,7019,7020,7023,7024,7052,7053,7080,7081,7157,7158,7177,7178,7210],{},[390,6955,6956,6957,1063],{},"Reconstruction in ",[395,6958,6960],{"className":6959},[398],[395,6961,6963],{"className":6962,"ariaHidden":403},[402],[395,6964,6966,6969,6972,6975,6978,6981,6987,6990,6993],{"className":6965},[407],[395,6967],{"className":6968,"style":412},[411],[395,6970,1507],{"className":6971,"style":1506},[416,417],[395,6973,1511],{"className":6974},[422],[395,6976,431],{"className":6977},[416,417],[395,6979],{"className":6980,"style":916},[516],[395,6982,6984],{"className":6983},[1574],[395,6985,1580],{"className":6986,"style":1579},[416,1578],[395,6988],{"className":6989,"style":916},[516],[395,6991,431],{"className":6992},[416,417],[395,6994,1545],{"className":6995},[435]," As written, ",[395,6998,7000],{"className":6999},[398],[395,7001,7003],{"className":7002,"ariaHidden":403},[402],[395,7004,7006,7009],{"className":7005},[407],[395,7007],{"className":7008,"style":3361},[411],[395,7010,7012],{"className":7011},[416],[395,7013,5448],{"className":7014},[416,3346]," holds ",[385,7017,7018],{},"values",", not\npositions, so it loses the actual subsequence. To recover it, store ",[390,7021,7022],{},"indices",": let\n",[395,7025,7027],{"className":7026},[398],[395,7028,7030],{"className":7029,"ariaHidden":403},[402],[395,7031,7033,7036,7043,7046,7049],{"className":7032},[407],[395,7034],{"className":7035,"style":412},[411],[395,7037,7039],{"className":7038},[416],[395,7040,7042],{"className":7041},[416,3346],"tailIdx",[395,7044,423],{"className":7045},[422],[395,7047,640],{"className":7048,"style":639},[416,417],[395,7050,436],{"className":7051},[435]," hold the position whose value is ",[395,7054,7056],{"className":7055},[398],[395,7057,7059],{"className":7058,"ariaHidden":403},[402],[395,7060,7062,7065,7071,7074,7077],{"className":7061},[407],[395,7063],{"className":7064,"style":412},[411],[395,7066,7068],{"className":7067},[416],[395,7069,5448],{"className":7070},[416,3346],[395,7072,423],{"className":7073},[422],[395,7075,640],{"className":7076,"style":639},[416,417],[395,7078,436],{"className":7079},[435],", and on\neach step record ",[395,7082,7084],{"className":7083},[398],[395,7085,7087,7118,7145],{"className":7086,"ariaHidden":403},[402],[395,7088,7090,7093,7100,7103,7106,7109,7112,7115],{"className":7089},[407],[395,7091],{"className":7092,"style":412},[411],[395,7094,7096],{"className":7095},[416],[395,7097,7099],{"className":7098},[416,3346],"parent",[395,7101,423],{"className":7102},[422],[395,7104,461],{"className":7105},[416,417],[395,7107,436],{"className":7108},[435],[395,7110],{"className":7111,"style":517},[516],[395,7113,891],{"className":7114},[521],[395,7116],{"className":7117,"style":517},[516],[395,7119,7121,7124,7130,7133,7136,7139,7142],{"className":7120},[407],[395,7122],{"className":7123,"style":412},[411],[395,7125,7127],{"className":7126},[416],[395,7128,7042],{"className":7129},[416,3346],[395,7131,423],{"className":7132},[422],[395,7134,640],{"className":7135,"style":639},[416,417],[395,7137],{"className":7138,"style":2132},[516],[395,7140,2815],{"className":7141},[2136],[395,7143],{"className":7144,"style":2132},[516],[395,7146,7148,7151,7154],{"className":7147},[407],[395,7149],{"className":7150,"style":412},[411],[395,7152,498],{"className":7153},[416],[395,7155,436],{"className":7156},[435]," (the index then sitting\none pile to the left). Following ",[395,7159,7161],{"className":7160},[398],[395,7162,7164],{"className":7163,"ariaHidden":403},[402],[395,7165,7167,7171],{"className":7166},[407],[395,7168],{"className":7169,"style":7170},[411],"height:0.8095em;vertical-align:-0.1944em;",[395,7172,7174],{"className":7173},[416],[395,7175,7099],{"className":7176},[416,3346]," back from ",[395,7179,7181],{"className":7180},[398],[395,7182,7184],{"className":7183,"ariaHidden":403},[402],[395,7185,7187,7190,7196,7199,7207],{"className":7186},[407],[395,7188],{"className":7189,"style":412},[411],[395,7191,7193],{"className":7192},[416],[395,7194,7042],{"className":7195},[416,3346],[395,7197,423],{"className":7198},[422],[395,7200,7203],{"className":7201},[416,7202],"text",[395,7204,7206],{"className":7205},[416],"last",[395,7208,436],{"className":7209},[435],"\nreconstructs an LIS, exactly as in the quadratic version.",[1595,7212,7214],{"id":7213},"variants-on-the-same-machine","Variants on the same machine",[381,7216,7217],{},"Both algorithms bend to a family of related problems with small edits.",[381,7219,7220,7223,7224,7368,7369,7371,7372,7377,7378,1990,7381,7396,7397,7447,7448,7371,7499,7550],{},[390,7221,7222],{},"Longest non-decreasing subsequence."," To allow equal adjacent values\n(",[395,7225,7227],{"className":7226},[398],[395,7228,7230,7294,7358],{"className":7229,"ariaHidden":403},[402],[395,7231,7233,7236,7239,7242,7282,7285,7288,7291],{"className":7232},[407],[395,7234],{"className":7235,"style":412},[411],[395,7237,418],{"className":7238},[416,417],[395,7240,423],{"className":7241},[422],[395,7243,7245,7248],{"className":7244},[416],[395,7246,461],{"className":7247},[416,417],[395,7249,7251],{"className":7250},[465],[395,7252,7254,7274],{"className":7253},[469,470],[395,7255,7257,7271],{"className":7256},[474],[395,7258,7260],{"className":7259,"style":479},[478],[395,7261,7262,7265],{"style":482},[395,7263],{"className":7264,"style":487},[486],[395,7266,7268],{"className":7267},[491,492,493,494],[395,7269,498],{"className":7270},[416,494],[395,7272,503],{"className":7273},[502],[395,7275,7277],{"className":7276},[474],[395,7278,7280],{"className":7279,"style":510},[478],[395,7281],{},[395,7283,436],{"className":7284},[435],[395,7286],{"className":7287,"style":517},[516],[395,7289,1869],{"className":7290},[521],[395,7292],{"className":7293,"style":517},[516],[395,7295,7297,7300,7303,7306,7346,7349,7352,7355],{"className":7296},[407],[395,7298],{"className":7299,"style":412},[411],[395,7301,418],{"className":7302},[416,417],[395,7304,423],{"className":7305},[422],[395,7307,7309,7312],{"className":7308},[416],[395,7310,461],{"className":7311},[416,417],[395,7313,7315],{"className":7314},[465],[395,7316,7318,7338],{"className":7317},[469,470],[395,7319,7321,7335],{"className":7320},[474],[395,7322,7324],{"className":7323,"style":479},[478],[395,7325,7326,7329],{"style":482},[395,7327],{"className":7328,"style":487},[486],[395,7330,7332],{"className":7331},[491,492,493,494],[395,7333,561],{"className":7334},[416,494],[395,7336,503],{"className":7337},[502],[395,7339,7341],{"className":7340},[474],[395,7342,7344],{"className":7343,"style":510},[478],[395,7345],{},[395,7347,436],{"className":7348},[435],[395,7350],{"className":7351,"style":517},[516],[395,7353,1869],{"className":7354},[521],[395,7356],{"className":7357,"style":517},[516],[395,7359,7361,7365],{"className":7360},[407],[395,7362],{"className":7363,"style":7364},[411],"height:0.313em;",[395,7366,593],{"className":7367},[592],"), change ",[3268,7370,5614],{}," to ",[390,7373,7374],{},[3268,7375,7376],{},"upper_bound",": search\nfor the first tail ",[385,7379,7380],{},"strictly greater",[395,7382,7384],{"className":7383},[398],[395,7385,7387],{"className":7386,"ariaHidden":403},[402],[395,7388,7390,7393],{"className":7389},[407],[395,7391],{"className":7392,"style":881},[411],[395,7394,5531],{"className":7395},[416,417],". An equal element then extends rather\nthan overwrites, which is precisely the non-strict relaxation. (In the ",[395,7398,7400],{"className":7399},[398],[395,7401,7403],{"className":7402,"ariaHidden":403},[402],[395,7404,7406,7409,7412,7415,7444],{"className":7405},[407],[395,7407],{"className":7408,"style":1502},[411],[395,7410,1507],{"className":7411,"style":1506},[416,417],[395,7413,1511],{"className":7414},[422],[395,7416,7418,7421],{"className":7417},[416],[395,7419,431],{"className":7420},[416,417],[395,7422,7424],{"className":7423},[465],[395,7425,7427],{"className":7426},[469],[395,7428,7430],{"className":7429},[474],[395,7431,7433],{"className":7432,"style":1530},[478],[395,7434,7435,7438],{"style":1475},[395,7436],{"className":7437,"style":487},[486],[395,7439,7441],{"className":7440},[491,492,493,494],[395,7442,561],{"className":7443},[416,494],[395,7445,1545],{"className":7446},[435]," DP,\nchange the test ",[395,7449,7451],{"className":7450},[398],[395,7452,7454,7481],{"className":7453,"ariaHidden":403},[402],[395,7455,7457,7460,7463,7466,7469,7472,7475,7478],{"className":7456},[407],[395,7458],{"className":7459,"style":412},[411],[395,7461,418],{"className":7462},[416,417],[395,7464,423],{"className":7465},[422],[395,7467,1967],{"className":7468,"style":1966},[416,417],[395,7470,436],{"className":7471},[435],[395,7473],{"className":7474,"style":517},[516],[395,7476,522],{"className":7477},[521],[395,7479],{"className":7480,"style":517},[516],[395,7482,7484,7487,7490,7493,7496],{"className":7483},[407],[395,7485],{"className":7486,"style":412},[411],[395,7488,418],{"className":7489},[416,417],[395,7491,423],{"className":7492},[422],[395,7494,461],{"className":7495},[416,417],[395,7497,436],{"className":7498},[435],[395,7500,7502],{"className":7501},[398],[395,7503,7505,7532],{"className":7504,"ariaHidden":403},[402],[395,7506,7508,7511,7514,7517,7520,7523,7526,7529],{"className":7507},[407],[395,7509],{"className":7510,"style":412},[411],[395,7512,418],{"className":7513},[416,417],[395,7515,423],{"className":7516},[422],[395,7518,1967],{"className":7519,"style":1966},[416,417],[395,7521,436],{"className":7522},[435],[395,7524],{"className":7525,"style":517},[516],[395,7527,1869],{"className":7528},[521],[395,7530],{"className":7531,"style":517},[516],[395,7533,7535,7538,7541,7544,7547],{"className":7534},[407],[395,7536],{"className":7537,"style":412},[411],[395,7539,418],{"className":7540},[416,417],[395,7542,423],{"className":7543},[422],[395,7545,461],{"className":7546},[416,417],[395,7548,436],{"className":7549},[435],".)",[381,7552,7553,7556,7557,7581,7582,7610,7611,7626,7627,7642,7643,7714,7715,7773,7774,7843,7844,7914,7915,7942,7943,7958,7959,7983,7984,8023,8024,8027,8028],{},[390,7554,7555],{},"Counting the number of LIS."," Alongside ",[395,7558,7560],{"className":7559},[398],[395,7561,7563],{"className":7562,"ariaHidden":403},[402],[395,7564,7566,7569,7572,7575,7578],{"className":7565},[407],[395,7567],{"className":7568,"style":412},[411],[395,7570,1729],{"className":7571},[416,417],[395,7573,423],{"className":7574},[422],[395,7576,461],{"className":7577},[416,417],[395,7579,436],{"className":7580},[435]," track ",[395,7583,7585],{"className":7584},[398],[395,7586,7588],{"className":7587,"ariaHidden":403},[402],[395,7589,7591,7594,7601,7604,7607],{"className":7590},[407],[395,7592],{"className":7593,"style":412},[411],[395,7595,7597],{"className":7596},[416],[395,7598,7600],{"className":7599},[416,3346],"cnt",[395,7602,423],{"className":7603},[422],[395,7605,461],{"className":7606},[416,417],[395,7608,436],{"className":7609},[435]," = the number\nof longest increasing subsequences ending at ",[395,7612,7614],{"className":7613},[398],[395,7615,7617],{"className":7616,"ariaHidden":403},[402],[395,7618,7620,7623],{"className":7619},[407],[395,7621],{"className":7622,"style":1674},[411],[395,7624,461],{"className":7625},[416,417],". When a strictly better predecessor\n",[395,7628,7630],{"className":7629},[398],[395,7631,7633],{"className":7632,"ariaHidden":403},[402],[395,7634,7636,7639],{"className":7635},[407],[395,7637],{"className":7638,"style":1962},[411],[395,7640,1967],{"className":7641,"style":1966},[416,417]," is found (",[395,7644,7646],{"className":7645},[398],[395,7647,7649,7676,7696],{"className":7648,"ariaHidden":403},[402],[395,7650,7652,7655,7658,7661,7664,7667,7670,7673],{"className":7651},[407],[395,7653],{"className":7654,"style":412},[411],[395,7656,1729],{"className":7657},[416,417],[395,7659,423],{"className":7660},[422],[395,7662,1967],{"className":7663,"style":1966},[416,417],[395,7665,436],{"className":7666},[435],[395,7668],{"className":7669,"style":2132},[516],[395,7671,2137],{"className":7672},[2136],[395,7674],{"className":7675,"style":2132},[516],[395,7677,7679,7683,7686,7689,7693],{"className":7678},[407],[395,7680],{"className":7681,"style":7682},[411],"height:0.6835em;vertical-align:-0.0391em;",[395,7684,498],{"className":7685},[416],[395,7687],{"className":7688,"style":517},[516],[395,7690,7692],{"className":7691},[521],">",[395,7694],{"className":7695,"style":517},[516],[395,7697,7699,7702,7705,7708,7711],{"className":7698},[407],[395,7700],{"className":7701,"style":412},[411],[395,7703,1729],{"className":7704},[416,417],[395,7706,423],{"className":7707},[422],[395,7709,461],{"className":7710},[416,417],[395,7712,436],{"className":7713},[435],"), reset ",[395,7716,7718],{"className":7717},[398],[395,7719,7721,7752],{"className":7720,"ariaHidden":403},[402],[395,7722,7724,7727,7733,7736,7739,7742,7745,7749],{"className":7723},[407],[395,7725],{"className":7726,"style":412},[411],[395,7728,7730],{"className":7729},[416],[395,7731,7600],{"className":7732},[416,3346],[395,7734,423],{"className":7735},[422],[395,7737,461],{"className":7738},[416,417],[395,7740,436],{"className":7741},[435],[395,7743],{"className":7744,"style":517},[516],[395,7746,7748],{"className":7747},[521],"←",[395,7750],{"className":7751,"style":517},[516],[395,7753,7755,7758,7764,7767,7770],{"className":7754},[407],[395,7756],{"className":7757,"style":412},[411],[395,7759,7761],{"className":7760},[416],[395,7762,7600],{"className":7763},[416,3346],[395,7765,423],{"className":7766},[422],[395,7768,1967],{"className":7769,"style":1966},[416,417],[395,7771,436],{"className":7772},[435],"; when\na tying predecessor is found (",[395,7775,7777],{"className":7776},[398],[395,7778,7780,7807,7825],{"className":7779,"ariaHidden":403},[402],[395,7781,7783,7786,7789,7792,7795,7798,7801,7804],{"className":7782},[407],[395,7784],{"className":7785,"style":412},[411],[395,7787,1729],{"className":7788},[416,417],[395,7790,423],{"className":7791},[422],[395,7793,1967],{"className":7794,"style":1966},[416,417],[395,7796,436],{"className":7797},[435],[395,7799],{"className":7800,"style":2132},[516],[395,7802,2137],{"className":7803},[2136],[395,7805],{"className":7806,"style":2132},[516],[395,7808,7810,7813,7816,7819,7822],{"className":7809},[407],[395,7811],{"className":7812,"style":1043},[411],[395,7814,498],{"className":7815},[416],[395,7817],{"className":7818,"style":517},[516],[395,7820,891],{"className":7821},[521],[395,7823],{"className":7824,"style":517},[516],[395,7826,7828,7831,7834,7837,7840],{"className":7827},[407],[395,7829],{"className":7830,"style":412},[411],[395,7832,1729],{"className":7833},[416,417],[395,7835,423],{"className":7836},[422],[395,7838,461],{"className":7839},[416,417],[395,7841,436],{"className":7842},[435],"), accumulate\n",[395,7845,7847],{"className":7846},[398],[395,7848,7850,7880,7893],{"className":7849,"ariaHidden":403},[402],[395,7851,7853,7856,7862,7865,7868,7871,7874],{"className":7852},[407],[395,7854],{"className":7855,"style":412},[411],[395,7857,7859],{"className":7858},[416],[395,7860,7600],{"className":7861},[416,3346],[395,7863,423],{"className":7864},[422],[395,7866,461],{"className":7867},[416,417],[395,7869,436],{"className":7870},[435],[395,7872],{"className":7873,"style":517},[516],[395,7875,7877],{"className":7876},[521],[395,7878,2137],{"className":7879},[416],[395,7881,7883,7887,7890],{"className":7882},[407],[395,7884],{"className":7885,"style":7886},[411],"height:0.3669em;",[395,7888,891],{"className":7889},[521],[395,7891],{"className":7892,"style":517},[516],[395,7894,7896,7899,7905,7908,7911],{"className":7895},[407],[395,7897],{"className":7898,"style":412},[411],[395,7900,7902],{"className":7901},[416],[395,7903,7600],{"className":7904},[416,3346],[395,7906,423],{"className":7907},[422],[395,7909,1967],{"className":7910,"style":1966},[416,417],[395,7912,436],{"className":7913},[435],". The answer sums ",[395,7916,7918],{"className":7917},[398],[395,7919,7921],{"className":7920,"ariaHidden":403},[402],[395,7922,7924,7927,7933,7936,7939],{"className":7923},[407],[395,7925],{"className":7926,"style":412},[411],[395,7928,7930],{"className":7929},[416],[395,7931,7600],{"className":7932},[416,3346],[395,7934,423],{"className":7935},[422],[395,7937,461],{"className":7938},[416,417],[395,7940,436],{"className":7941},[435]," over\nall ",[395,7944,7946],{"className":7945},[398],[395,7947,7949],{"className":7948,"ariaHidden":403},[402],[395,7950,7952,7955],{"className":7951},[407],[395,7953],{"className":7954,"style":1674},[411],[395,7956,461],{"className":7957},[416,417]," achieving the global maximum ",[395,7960,7962],{"className":7961},[398],[395,7963,7965],{"className":7964,"ariaHidden":403},[402],[395,7966,7968,7971,7974,7977,7980],{"className":7967},[407],[395,7969],{"className":7970,"style":412},[411],[395,7972,1729],{"className":7973},[416,417],[395,7975,423],{"className":7976},[422],[395,7978,461],{"className":7979},[416,417],[395,7981,436],{"className":7982},[435],". Speeding this counting variant to\n",[395,7985,7987],{"className":7986},[398],[395,7988,7990],{"className":7989,"ariaHidden":403},[402],[395,7991,7993,7996,7999,8002,8005,8008,8014,8017,8020],{"className":7992},[407],[395,7994],{"className":7995,"style":412},[411],[395,7997,1507],{"className":7998,"style":1506},[416,417],[395,8000,1511],{"className":8001},[422],[395,8003,431],{"className":8004},[416,417],[395,8006],{"className":8007,"style":916},[516],[395,8009,8011],{"className":8010},[1574],[395,8012,1580],{"className":8013,"style":1579},[416,1578],[395,8015],{"className":8016,"style":916},[516],[395,8018,431],{"className":8019},[416,417],[395,8021,1545],{"className":8022},[435]," leans on a\n",[418,8025,8026],{"href":115},"Fenwick or segment tree","\nkeyed by value to roll up best-length-and-count over smaller predecessors.",[1065,8029,8030],{},[418,8031,561],{"href":8032,"ariaDescribedBy":8033,"dataFootnoteRef":376,"id":8034},"#user-content-fn-lc-count",[1071],"user-content-fnref-lc-count",[381,8036,8037,8040,8041,8058,8059,8075,8076,8079,8080,8083,8084,8087,8088,1063,8127],{},[390,8038,8039],{},"Russian doll envelopes."," Each envelope has width ",[395,8042,8044],{"className":8043},[398],[395,8045,8047],{"className":8046,"ariaHidden":403},[402],[395,8048,8050,8053],{"className":8049},[407],[395,8051],{"className":8052,"style":881},[411],[395,8054,8057],{"className":8055,"style":8056},[416,417],"margin-right:0.0269em;","w"," and height ",[395,8060,8062],{"className":8061},[398],[395,8063,8065],{"className":8064,"ariaHidden":403},[402],[395,8066,8068,8071],{"className":8067},[407],[395,8069],{"className":8070,"style":3361},[411],[395,8072,8074],{"className":8073},[416,417],"h",", and one\nnests in another only if ",[385,8077,8078],{},"both"," dimensions are strictly larger; find the longest\nnesting chain. Reduce to LIS in two dimensions: ",[390,8081,8082],{},"sort by width ascending, and\nbreak ties by height descending",", then run LIS on the height sequence alone. The\ndescending tiebreak is the trick: among envelopes of equal width, the descending\norder makes it impossible for two of them to both appear in an increasing height\nrun (their heights decrease), so we never illegally ",[1654,8085,8086],{},"nest"," two equal-width\nenvelopes. With distinct widths this reduces a 2-D nesting to a plain 1-D LIS,\nsolvable in ",[395,8089,8091],{"className":8090},[398],[395,8092,8094],{"className":8093,"ariaHidden":403},[402],[395,8095,8097,8100,8103,8106,8109,8112,8118,8121,8124],{"className":8096},[407],[395,8098],{"className":8099,"style":412},[411],[395,8101,1507],{"className":8102,"style":1506},[416,417],[395,8104,1511],{"className":8105},[422],[395,8107,431],{"className":8108},[416,417],[395,8110],{"className":8111,"style":916},[516],[395,8113,8115],{"className":8114},[1574],[395,8116,1580],{"className":8117,"style":1579},[416,1578],[395,8119],{"className":8120,"style":916},[516],[395,8122,431],{"className":8123},[416,417],[395,8125,1545],{"className":8126},[435],[1065,8128,8129],{},[418,8130,907],{"href":8131,"ariaDescribedBy":8132,"dataFootnoteRef":376,"id":8133},"#user-content-fn-lc-doll",[1071],"user-content-fnref-lc-doll",[381,8135,8136,8139,8140,8143,8144,8147,8148,8172,8173,8199,8200,8215,8216,1063],{},[390,8137,8138],{},"Bitonic and longest decreasing."," A ",[385,8141,8142],{},"longest decreasing subsequence"," is just LIS\non the reversed comparison (or on the negated array). A ",[390,8145,8146],{},"longest bitonic\nsubsequence",", one that increases then decreases, is computed by running the\nending-here LIS left-to-right to get ",[395,8149,8151],{"className":8150},[398],[395,8152,8154],{"className":8153,"ariaHidden":403},[402],[395,8155,8157,8160,8163,8166,8169],{"className":8156},[407],[395,8158],{"className":8159,"style":412},[411],[395,8161,1729],{"className":8162},[416,417],[395,8164,423],{"className":8165},[422],[395,8167,461],{"className":8168},[416,417],[395,8170,436],{"className":8171},[435]," and a symmetric decreasing pass\nright-to-left to get ",[395,8174,8176],{"className":8175},[398],[395,8177,8179],{"className":8178,"ariaHidden":403},[402],[395,8180,8182,8185,8190,8193,8196],{"className":8181},[407],[395,8183],{"className":8184,"style":412},[411],[395,8186,8189],{"className":8187,"style":8188},[416,417],"margin-right:0.0077em;","R",[395,8191,423],{"className":8192},[422],[395,8194,461],{"className":8195},[416,417],[395,8197,436],{"className":8198},[435],"; the best bitonic peak at ",[395,8201,8203],{"className":8202},[398],[395,8204,8206],{"className":8205,"ariaHidden":403},[402],[395,8207,8209,8212],{"className":8208},[407],[395,8210],{"className":8211,"style":1674},[411],[395,8213,461],{"className":8214},[416,417]," has length\n",[395,8217,8219],{"className":8218},[398],[395,8220,8222,8249,8276],{"className":8221,"ariaHidden":403},[402],[395,8223,8225,8228,8231,8234,8237,8240,8243,8246],{"className":8224},[407],[395,8226],{"className":8227,"style":412},[411],[395,8229,1729],{"className":8230},[416,417],[395,8232,423],{"className":8233},[422],[395,8235,461],{"className":8236},[416,417],[395,8238,436],{"className":8239},[435],[395,8241],{"className":8242,"style":2132},[516],[395,8244,2137],{"className":8245},[2136],[395,8247],{"className":8248,"style":2132},[516],[395,8250,8252,8255,8258,8261,8264,8267,8270,8273],{"className":8251},[407],[395,8253],{"className":8254,"style":412},[411],[395,8256,8189],{"className":8257,"style":8188},[416,417],[395,8259,423],{"className":8260},[422],[395,8262,461],{"className":8263},[416,417],[395,8265,436],{"className":8266},[435],[395,8268],{"className":8269,"style":2132},[516],[395,8271,2815],{"className":8272},[2136],[395,8274],{"className":8275,"style":2132},[516],[395,8277,8279,8282],{"className":8278},[407],[395,8280],{"className":8281,"style":1043},[411],[395,8283,498],{"className":8284},[416],[1077,8286,8288,8505],{"className":8287},[1080,1081],[1083,8289,8293],{"xmlns":1085,"width":8290,"height":8291,"viewBox":8292},"243.223","112.681","-75 -75 182.417 84.510",[1090,8294,8295,8298,8304,8307,8313,8324,8327,8333,8336,8342,8349,8356,8363,8369,8375,8381,8387,8393,8399,8405,8440,8475,8490],{"stroke":1092,"style":1093},[1098,8296],{"fill":1100,"d":8297},"M-35.471-29.045h25.607v-25.608h-25.607Z",[1090,8299,8300],{"transform":3478},[1098,8301],{"d":8302,"fill":1092,"stroke":1092,"className":8303,"style":3483},"M-18.761-41.849L-21.793-41.849L-21.793-42.165Q-20.642-42.165-20.642-42.460L-20.642-47.184Q-21.130-46.951-21.851-46.951L-21.851-47.267Q-20.721-47.267-20.159-47.843L-20.014-47.843Q-19.979-47.843-19.946-47.810Q-19.913-47.777-19.913-47.742L-19.913-42.460Q-19.913-42.165-18.761-42.165",[1118],[1098,8305],{"fill":1100,"d":8306},"M-7.019-29.045H18.59v-25.608H-7.02Z",[1090,8308,8309],{"transform":3489},[1098,8310],{"d":8311,"fill":1092,"stroke":1092,"className":8312,"style":3483},"M-21.767-42.570L-21.811-42.570Q-21.609-42.253-21.222-42.095Q-20.835-41.937-20.409-41.937Q-19.873-41.937-19.634-42.372Q-19.394-42.807-19.394-43.387Q-19.394-43.967-19.640-44.407Q-19.886-44.846-20.418-44.846L-21.038-44.846Q-21.064-44.846-21.097-44.875Q-21.130-44.903-21.130-44.925L-21.130-45.026Q-21.130-45.057-21.101-45.081Q-21.073-45.105-21.038-45.105L-20.519-45.145Q-20.053-45.145-19.807-45.617Q-19.561-46.090-19.561-46.608Q-19.561-47.035-19.774-47.309Q-19.987-47.584-20.409-47.584Q-20.752-47.584-21.077-47.454Q-21.402-47.325-21.587-47.070L-21.561-47.070Q-21.358-47.070-21.222-46.929Q-21.086-46.788-21.086-46.591Q-21.086-46.393-21.220-46.259Q-21.354-46.125-21.552-46.125Q-21.754-46.125-21.892-46.259Q-22.031-46.393-22.031-46.591Q-22.031-47.180-21.528-47.511Q-21.024-47.843-20.409-47.843Q-20.031-47.843-19.629-47.703Q-19.227-47.562-18.959-47.283Q-18.691-47.004-18.691-46.608Q-18.691-46.059-19.045-45.622Q-19.398-45.184-19.939-45Q-19.548-44.921-19.203-44.697Q-18.858-44.473-18.647-44.132Q-18.436-43.791-18.436-43.396Q-18.436-43.014-18.599-42.691Q-18.761-42.368-19.053-42.132Q-19.346-41.897-19.693-41.774Q-20.040-41.651-20.409-41.651Q-20.857-41.651-21.288-41.812Q-21.719-41.972-22-42.299Q-22.281-42.627-22.281-43.084Q-22.281-43.299-22.134-43.442Q-21.987-43.585-21.767-43.585Q-21.556-43.585-21.411-43.440Q-21.266-43.295-21.266-43.084Q-21.266-42.873-21.413-42.721Q-21.561-42.570-21.767-42.570",[1118],[1090,8314,8315,8318],{"fill":1179},[1098,8316],{"d":8317},"M21.434-29.045h25.608v-25.608H21.434Z",[1090,8319,8320],{"transform":3501},[1098,8321],{"d":8322,"fill":1092,"stroke":1092,"className":8323,"style":3483},"M-21.842-42.855Q-21.701-42.442-21.341-42.190Q-20.980-41.937-20.545-41.937Q-20.093-41.937-19.827-42.190Q-19.561-42.442-19.458-42.827Q-19.355-43.211-19.355-43.668Q-19.355-45.369-20.264-45.369Q-20.585-45.369-20.814-45.275Q-21.042-45.180-21.172-45.061Q-21.301-44.943-21.413-44.804Q-21.525-44.666-21.561-44.657L-21.644-44.657Q-21.688-44.657-21.719-44.688Q-21.750-44.719-21.750-44.767L-21.750-47.764Q-21.750-47.795-21.714-47.819Q-21.679-47.843-21.653-47.843L-21.613-47.843Q-20.980-47.553-20.308-47.553Q-19.636-47.553-18.994-47.843L-18.968-47.843Q-18.937-47.843-18.904-47.821Q-18.871-47.799-18.871-47.764L-18.871-47.663Q-18.871-47.659-18.880-47.641Q-18.889-47.623-18.889-47.619Q-19.205-47.224-19.675-47.002Q-20.146-46.780-20.642-46.780Q-21.051-46.780-21.433-46.890L-21.433-45.171Q-20.976-45.628-20.264-45.628Q-19.754-45.628-19.355-45.347Q-18.955-45.066-18.733-44.611Q-18.511-44.156-18.511-43.651Q-18.511-43.101-18.790-42.642Q-19.069-42.183-19.535-41.917Q-20.001-41.651-20.545-41.651Q-20.985-41.651-21.369-41.878Q-21.754-42.104-21.982-42.484Q-22.211-42.864-22.211-43.308Q-22.211-43.501-22.079-43.633Q-21.947-43.765-21.750-43.765Q-21.618-43.765-21.514-43.706Q-21.411-43.646-21.352-43.543Q-21.293-43.440-21.293-43.308Q-21.293-43.110-21.420-42.978Q-21.547-42.847-21.750-42.847Q-21.811-42.847-21.842-42.855",[1118],[1098,8325],{"fill":1100,"d":8326},"M49.887-29.045h25.607v-25.608H49.887Z",[1090,8328,8329],{"transform":3511},[1098,8330],{"d":8331,"fill":1092,"stroke":1092,"className":8332,"style":3483},"M-19.970-43.326L-22.409-43.326L-22.409-43.642L-19.583-47.790Q-19.539-47.843-19.473-47.843L-19.319-47.843Q-19.280-47.843-19.247-47.810Q-19.214-47.777-19.214-47.733L-19.214-43.642L-18.313-43.642L-18.313-43.326L-19.214-43.326L-19.214-42.460Q-19.214-42.165-18.313-42.165L-18.313-41.849L-20.866-41.849L-20.866-42.165Q-20.506-42.165-20.238-42.220Q-19.970-42.275-19.970-42.460L-19.970-43.326M-19.913-46.815L-22.075-43.642L-19.913-43.642",[1118],[1098,8334],{"fill":1100,"d":8335},"M78.34-29.045h25.607v-25.608H78.34Z",[1090,8337,8338],{"transform":3522},[1098,8339],{"d":8340,"fill":1092,"stroke":1092,"className":8341,"style":3483},"M-18.761-41.849L-22.211-41.849L-22.211-42.082Q-22.211-42.095-22.180-42.126L-20.726-43.703Q-20.260-44.200-20.007-44.505Q-19.754-44.811-19.563-45.222Q-19.372-45.633-19.372-46.072Q-19.372-46.661-19.695-47.094Q-20.018-47.527-20.598-47.527Q-20.862-47.527-21.108-47.417Q-21.354-47.307-21.530-47.120Q-21.706-46.933-21.802-46.683L-21.723-46.683Q-21.521-46.683-21.378-46.547Q-21.235-46.411-21.235-46.195Q-21.235-45.989-21.378-45.850Q-21.521-45.712-21.723-45.712Q-21.925-45.712-22.068-45.855Q-22.211-45.997-22.211-46.195Q-22.211-46.657-21.974-47.030Q-21.736-47.404-21.336-47.623Q-20.937-47.843-20.488-47.843Q-19.965-47.843-19.511-47.628Q-19.056-47.412-18.783-47.013Q-18.511-46.613-18.511-46.072Q-18.511-45.677-18.682-45.323Q-18.854-44.969-19.119-44.690Q-19.385-44.411-19.836-44.026Q-20.286-43.642-20.365-43.567L-21.389-42.605L-20.572-42.605Q-19.921-42.605-19.484-42.616Q-19.047-42.627-19.016-42.649Q-18.946-42.732-18.891-42.972Q-18.836-43.211-18.796-43.479L-18.511-43.479",[1118],[1090,8343,8345],{"transform":8344},"translate(-1.993 25.018)",[1098,8346],{"d":8347,"fill":1092,"stroke":1092,"className":8348,"style":1207},"M-19.342-41.849L-21.872-41.849L-21.872-42.129Q-20.904-42.129-20.904-42.338L-20.904-45.957Q-21.297-45.769-21.919-45.769L-21.919-46.050Q-21.502-46.050-21.138-46.151Q-20.774-46.251-20.518-46.497L-20.392-46.497Q-20.327-46.480-20.310-46.412L-20.310-42.338Q-20.310-42.129-19.342-42.129",[1118],[1090,8350,8352],{"transform":8351},"translate(26.46 25.018)",[1098,8353],{"d":8354,"fill":1092,"stroke":1092,"className":8355,"style":1207},"M-19.342-41.849L-22.227-41.849L-22.227-42.051Q-22.227-42.081-22.200-42.109L-20.952-43.326Q-20.880-43.401-20.838-43.443Q-20.795-43.486-20.716-43.565Q-20.303-43.978-20.072-44.336Q-19.841-44.693-19.841-45.117Q-19.841-45.349-19.920-45.552Q-19.999-45.756-20.140-45.906Q-20.282-46.057-20.477-46.137Q-20.672-46.217-20.904-46.217Q-21.215-46.217-21.473-46.058Q-21.731-45.899-21.861-45.622L-21.841-45.622Q-21.673-45.622-21.566-45.511Q-21.458-45.400-21.458-45.236Q-21.458-45.079-21.567-44.966Q-21.677-44.853-21.841-44.853Q-22.001-44.853-22.114-44.966Q-22.227-45.079-22.227-45.236Q-22.227-45.612-22.019-45.899Q-21.810-46.186-21.475-46.342Q-21.140-46.497-20.785-46.497Q-20.361-46.497-19.981-46.339Q-19.602-46.180-19.368-45.863Q-19.134-45.547-19.134-45.117Q-19.134-44.806-19.274-44.537Q-19.414-44.269-19.619-44.064Q-19.824-43.859-20.187-43.577Q-20.549-43.295-20.658-43.199L-21.513-42.471L-20.870-42.471Q-20.607-42.471-20.318-42.473Q-20.029-42.474-19.811-42.483Q-19.592-42.492-19.575-42.509Q-19.513-42.574-19.476-42.741Q-19.438-42.909-19.400-43.151L-19.134-43.151",[1118],[1090,8357,8359],{"transform":8358},"translate(54.912 25.018)",[1098,8360],{"d":8361,"fill":1092,"stroke":1092,"className":8362,"style":1207},"M-21.872-42.396Q-21.752-42.239-21.561-42.140Q-21.369-42.040-21.154-42.001Q-20.939-41.962-20.716-41.962Q-20.419-41.962-20.224-42.117Q-20.029-42.273-19.939-42.527Q-19.848-42.782-19.848-43.066Q-19.848-43.360-19.940-43.611Q-20.033-43.862-20.231-44.018Q-20.429-44.173-20.723-44.173L-21.239-44.173Q-21.267-44.173-21.292-44.199Q-21.318-44.224-21.318-44.248L-21.318-44.320Q-21.318-44.351-21.292-44.373Q-21.267-44.395-21.239-44.395L-20.798-44.426Q-20.436-44.426-20.216-44.783Q-19.995-45.141-19.995-45.530Q-19.995-45.858-20.190-46.062Q-20.385-46.265-20.716-46.265Q-21.003-46.265-21.256-46.181Q-21.509-46.098-21.673-45.910Q-21.526-45.910-21.426-45.795Q-21.325-45.681-21.325-45.530Q-21.325-45.380-21.431-45.270Q-21.537-45.161-21.694-45.161Q-21.855-45.161-21.964-45.270Q-22.073-45.380-22.073-45.530Q-22.073-45.855-21.865-46.074Q-21.656-46.292-21.340-46.395Q-21.024-46.497-20.716-46.497Q-20.398-46.497-20.070-46.393Q-19.742-46.289-19.515-46.067Q-19.288-45.845-19.288-45.530Q-19.288-45.096-19.575-44.771Q-19.862-44.447-20.296-44.300Q-19.985-44.235-19.705-44.069Q-19.424-43.903-19.247-43.645Q-19.069-43.387-19.069-43.066Q-19.069-42.656-19.313-42.346Q-19.558-42.037-19.939-41.873Q-20.320-41.709-20.716-41.709Q-21.085-41.709-21.443-41.822Q-21.800-41.934-22.044-42.184Q-22.289-42.433-22.289-42.803Q-22.289-42.974-22.172-43.086Q-22.056-43.199-21.885-43.199Q-21.776-43.199-21.685-43.148Q-21.595-43.097-21.540-43.004Q-21.485-42.912-21.485-42.803Q-21.485-42.635-21.598-42.516Q-21.711-42.396-21.872-42.396",[1118],[1090,8364,8366],{"transform":8365},"translate(83.365 25.018)",[1098,8367],{"d":8361,"fill":1092,"stroke":1092,"className":8368,"style":1207},[1118],[1090,8370,8372],{"transform":8371},"translate(111.818 25.018)",[1098,8373],{"d":8354,"fill":1092,"stroke":1092,"className":8374,"style":1207},[1118],[1090,8376,8378],{"transform":8377},"translate(-1.993 43.512)",[1098,8379],{"d":8347,"fill":1092,"stroke":1092,"className":8380,"style":1207},[1118],[1090,8382,8384],{"transform":8383},"translate(26.46 43.512)",[1098,8385],{"d":8354,"fill":1092,"stroke":1092,"className":8386,"style":1207},[1118],[1090,8388,8390],{"transform":8389},"translate(54.912 43.512)",[1098,8391],{"d":8361,"fill":1092,"stroke":1092,"className":8392,"style":1207},[1118],[1090,8394,8396],{"transform":8395},"translate(83.365 43.512)",[1098,8397],{"d":8354,"fill":1092,"stroke":1092,"className":8398,"style":1207},[1118],[1090,8400,8402],{"transform":8401},"translate(111.818 43.512)",[1098,8403],{"d":8347,"fill":1092,"stroke":1092,"className":8404,"style":1207},[1118],[1090,8406,8407],{"fill":3561,"stroke":3561},[1090,8408,8409,8416,8422,8428,8434],{"fill":3561,"stroke":1100,"fontSize":3684},[1090,8410,8412],{"transform":8411},"translate(-39.316 24.512)",[1098,8413],{"d":8414,"fill":3561,"stroke":3561,"className":8415,"style":1207},"M-18.327-41.849L-22.114-41.849Q-22.207-41.873-22.207-41.962L-22.179-42.075Q-22.135-42.122-22.094-42.129Q-21.687-42.129-21.540-42.163Q-21.417-42.198-21.379-42.375L-20.436-46.156Q-20.429-46.173-20.424-46.202Q-20.419-46.231-20.416-46.251Q-20.416-46.306-20.470-46.323Q-20.604-46.350-20.986-46.350Q-21.079-46.374-21.079-46.463L-21.051-46.573Q-21.024-46.620-20.966-46.631L-18.840-46.631Q-18.802-46.631-18.778-46.598Q-18.754-46.566-18.754-46.525L-18.782-46.412Q-18.813-46.357-18.860-46.350Q-19.407-46.350-19.582-46.309Q-19.718-46.268-19.763-46.104L-20.710-42.324Q-20.716-42.276-20.723-42.244Q-20.730-42.211-20.737-42.163Q-20.737-42.129-20.504-42.129L-19.756-42.129Q-19.212-42.129-18.860-42.300Q-18.508-42.471-18.293-42.792Q-18.078-43.114-17.873-43.654Q-17.849-43.698-17.791-43.719L-17.698-43.719Q-17.613-43.695-17.613-43.620Q-17.613-43.613-17.620-43.578L-18.245-41.911Q-18.279-41.856-18.327-41.849",[1118],[1090,8417,8418],{"transform":8411},[1098,8419],{"d":8420,"fill":3561,"stroke":3561,"className":8421,"style":1207},"M-15.152-40.099L-16.228-40.099L-16.228-47.099L-15.152-47.099L-15.152-46.757L-15.887-46.757L-15.887-40.441L-15.152-40.441",[1118],[1090,8423,8424],{"transform":8411},[1098,8425],{"d":8426,"fill":3561,"stroke":3561,"className":8427,"style":1207},"M-14.149-42.375Q-14.149-42.522-14.098-42.625L-13.510-44.139Q-13.435-44.341-13.435-44.481Q-13.435-44.713-13.595-44.713Q-13.876-44.713-14.065-44.442Q-14.255-44.170-14.344-43.838Q-14.354-43.773-14.416-43.773L-14.525-43.773Q-14.556-43.773-14.580-43.804Q-14.604-43.835-14.604-43.859L-14.604-43.886Q-14.535-44.146-14.395-44.383Q-14.255-44.621-14.045-44.778Q-13.835-44.935-13.582-44.935Q-13.400-44.935-13.247-44.864Q-13.093-44.792-12.997-44.655Q-12.901-44.518-12.901-44.341Q-12.901-44.194-12.953-44.088L-13.541-42.577Q-13.616-42.410-13.616-42.235Q-13.616-42.003-13.455-42.003Q-13.178-42.003-12.985-42.280Q-12.792-42.557-12.713-42.878Q-12.689-42.939-12.635-42.939L-12.525-42.939Q-12.491-42.939-12.469-42.914Q-12.447-42.888-12.447-42.857Q-12.447-42.844-12.454-42.830Q-12.515-42.580-12.655-42.339Q-12.795-42.099-13.006-41.940Q-13.216-41.781-13.469-41.781Q-13.746-41.781-13.947-41.943Q-14.149-42.105-14.149-42.375M-13.335-46.091Q-13.335-46.245-13.207-46.368Q-13.079-46.491-12.922-46.491Q-12.809-46.491-12.725-46.410Q-12.642-46.330-12.642-46.210Q-12.642-46.053-12.770-45.932Q-12.898-45.810-13.055-45.810Q-13.168-45.810-13.252-45.891Q-13.335-45.971-13.335-46.091",[1118],[1090,8429,8430],{"transform":8411},[1098,8431],{"d":8432,"fill":3561,"stroke":3561,"className":8433,"style":1207},"M-10.786-40.099L-11.862-40.099L-11.862-40.441L-11.128-40.441L-11.128-46.757L-11.862-46.757L-11.862-47.099L-10.786-47.099",[1118],[1090,8435,8436],{"transform":8411},[1098,8437],{"d":8438,"fill":3561,"stroke":3561,"className":8439,"style":1207},"M-2.481-43.425L-8.206-43.425Q-8.271-43.425-8.319-43.478Q-8.367-43.531-8.367-43.599Q-8.367-43.664-8.319-43.715Q-8.271-43.766-8.206-43.766L-2.481-43.766Q-2.731-43.951-2.939-44.199Q-3.148-44.447-3.288-44.735Q-3.428-45.024-3.490-45.335Q-3.490-45.428-3.397-45.441L-3.230-45.441Q-3.155-45.431-3.144-45.356Q-3.062-44.956-2.839-44.612Q-2.615-44.269-2.283-44.031Q-1.952-43.794-1.552-43.691Q-1.494-43.671-1.494-43.599Q-1.494-43.568-1.509-43.539Q-1.524-43.510-1.552-43.507Q-1.948-43.404-2.283-43.161Q-2.618-42.919-2.842-42.574Q-3.066-42.228-3.144-41.835Q-3.155-41.760-3.230-41.750L-3.397-41.750Q-3.490-41.764-3.490-41.856Q-3.394-42.324-3.133-42.731Q-2.871-43.138-2.481-43.425",[1118],[1090,8441,8442],{"fill":3561,"stroke":3561},[1090,8443,8444,8451,8457,8463,8469],{"fill":3561,"stroke":1100,"fontSize":3684},[1090,8445,8447],{"transform":8446},"translate(-39.603 43.006)",[1098,8448],{"d":8449,"fill":3561,"stroke":3561,"className":8450,"style":1207},"M-20.470-41.835Q-20.586-42.437-21.022-42.895Q-21.458-43.353-22.060-43.507Q-22.121-43.517-22.121-43.599Q-22.121-43.671-22.060-43.691Q-21.458-43.849-21.022-44.301Q-20.586-44.754-20.470-45.356Q-20.460-45.431-20.385-45.441L-20.217-45.441Q-20.180-45.434-20.154-45.404Q-20.128-45.373-20.128-45.335Q-20.221-44.860-20.480-44.457Q-20.740-44.054-21.133-43.766L-15.408-43.766Q-15.340-43.766-15.294-43.717Q-15.248-43.667-15.248-43.599Q-15.248-43.531-15.294-43.478Q-15.340-43.425-15.408-43.425L-21.133-43.425Q-20.747-43.148-20.484-42.739Q-20.221-42.331-20.128-41.856Q-20.128-41.818-20.154-41.787Q-20.180-41.757-20.217-41.750L-20.385-41.750Q-20.460-41.760-20.470-41.835",[1118],[1090,8452,8453],{"transform":8446},[1098,8454],{"d":8455,"fill":3561,"stroke":3561,"className":8456,"style":1207},"M-11.300-41.849L-13.224-41.849Q-13.252-41.849-13.281-41.885Q-13.310-41.921-13.310-41.962L-13.283-42.075Q-13.262-42.116-13.197-42.129Q-12.790-42.129-12.643-42.163Q-12.520-42.198-12.483-42.375L-11.539-46.156Q-11.536-46.162-11.531-46.183Q-11.526-46.203-11.522-46.221Q-11.519-46.238-11.515-46.251Q-11.515-46.303-11.574-46.323Q-11.707-46.350-12.090-46.350Q-12.182-46.374-12.182-46.463L-12.155-46.573Q-12.148-46.614-12.069-46.631L-9.803-46.631Q-9.540-46.631-9.239-46.576Q-8.938-46.521-8.668-46.393Q-8.398-46.265-8.226-46.055Q-8.053-45.845-8.053-45.551Q-8.053-45.291-8.195-45.074Q-8.337-44.857-8.574-44.684Q-8.812-44.512-9.073-44.401Q-9.335-44.289-9.591-44.228Q-9.314-44.125-9.131-43.913Q-8.949-43.702-8.949-43.425Q-8.949-43.387-8.950-43.363Q-8.952-43.339-8.955-43.312L-9.024-42.703Q-9.048-42.505-9.048-42.389Q-9.048-42.181-8.981-42.057Q-8.914-41.934-8.730-41.934Q-8.573-41.934-8.444-42.028Q-8.316-42.122-8.229-42.264Q-8.142-42.406-8.101-42.563Q-8.094-42.604-8.015-42.618L-7.927-42.618Q-7.841-42.594-7.841-42.522Q-7.841-42.516-7.848-42.485Q-7.923-42.177-8.173-41.943Q-8.422-41.709-8.730-41.709Q-9.178-41.709-9.501-41.890Q-9.824-42.071-9.824-42.478Q-9.824-42.580-9.789-42.724L-9.636-43.332Q-9.612-43.425-9.612-43.514Q-9.612-43.818-9.853-43.975Q-10.094-44.132-10.425-44.132L-11.386-44.132L-11.840-42.324Q-11.854-42.256-11.854-42.228Q-11.854-42.174-11.796-42.157Q-11.673-42.129-11.280-42.129Q-11.187-42.105-11.187-42.023L-11.215-41.911Q-11.232-41.863-11.300-41.849M-10.893-46.104L-11.327-44.354L-10.466-44.354Q-10.135-44.354-9.851-44.412Q-9.567-44.471-9.331-44.621Q-9.082-44.775-8.942-45.064Q-8.802-45.352-8.802-45.657Q-8.802-46.350-9.971-46.350L-10.538-46.350Q-10.678-46.350-10.736-46.339Q-10.794-46.327-10.828-46.275Q-10.863-46.224-10.893-46.104",[1118],[1090,8458,8459],{"transform":8446},[1098,8460],{"d":8461,"fill":3561,"stroke":3561,"className":8462,"style":1207},"M-5.695-40.099L-6.771-40.099L-6.771-47.099L-5.695-47.099L-5.695-46.757L-6.430-46.757L-6.430-40.441L-5.695-40.441",[1118],[1090,8464,8465],{"transform":8446},[1098,8466],{"d":8467,"fill":3561,"stroke":3561,"className":8468,"style":1207},"M-4.692-42.375Q-4.692-42.522-4.641-42.625L-4.053-44.139Q-3.978-44.341-3.978-44.481Q-3.978-44.713-4.138-44.713Q-4.419-44.713-4.608-44.442Q-4.798-44.170-4.887-43.838Q-4.897-43.773-4.959-43.773L-5.068-43.773Q-5.099-43.773-5.123-43.804Q-5.147-43.835-5.147-43.859L-5.147-43.886Q-5.078-44.146-4.938-44.383Q-4.798-44.621-4.588-44.778Q-4.378-44.935-4.125-44.935Q-3.943-44.935-3.790-44.864Q-3.636-44.792-3.540-44.655Q-3.444-44.518-3.444-44.341Q-3.444-44.194-3.496-44.088L-4.084-42.577Q-4.159-42.410-4.159-42.235Q-4.159-42.003-3.998-42.003Q-3.721-42.003-3.528-42.280Q-3.335-42.557-3.256-42.878Q-3.232-42.939-3.178-42.939L-3.068-42.939Q-3.034-42.939-3.012-42.914Q-2.990-42.888-2.990-42.857Q-2.990-42.844-2.997-42.830Q-3.058-42.580-3.198-42.339Q-3.338-42.099-3.549-41.940Q-3.759-41.781-4.012-41.781Q-4.289-41.781-4.490-41.943Q-4.692-42.105-4.692-42.375M-3.878-46.091Q-3.878-46.245-3.750-46.368Q-3.622-46.491-3.465-46.491Q-3.352-46.491-3.268-46.410Q-3.185-46.330-3.185-46.210Q-3.185-46.053-3.313-45.932Q-3.441-45.810-3.598-45.810Q-3.711-45.810-3.795-45.891Q-3.878-45.971-3.878-46.091",[1118],[1090,8470,8471],{"transform":8446},[1098,8472],{"d":8473,"fill":3561,"stroke":3561,"className":8474,"style":1207},"M-1.330-40.099L-2.406-40.099L-2.406-40.441L-1.672-40.441L-1.672-46.757L-2.406-46.757L-2.406-47.099L-1.330-47.099",[1118],[1090,8476,8477,8480,8483],{"fill":1153,"stroke":1153,"style":3712},[1098,8478],{"fill":1100,"d":8479},"M-34.049-60.343h52.78",[1098,8481],{"d":8482},"m21.718-60.343-4.17-1.576 1.383 1.576-1.382 1.577Z",[1090,8484,8486],{"transform":8485},"translate(3.259 -22.227)",[1098,8487],{"d":8488,"fill":1153,"stroke":1153,"className":8489,"style":1207},"M-20.737-41.849L-22.289-41.849L-22.289-42.129Q-22.063-42.129-21.914-42.163Q-21.766-42.198-21.766-42.338L-21.766-44.187Q-21.766-44.375-21.814-44.459Q-21.861-44.542-21.959-44.561Q-22.056-44.580-22.268-44.580L-22.268-44.860L-21.212-44.935L-21.212-42.338Q-21.212-42.198-21.080-42.163Q-20.949-42.129-20.737-42.129L-20.737-41.849M-22.008-46.156Q-22.008-46.327-21.885-46.446Q-21.762-46.566-21.591-46.566Q-21.424-46.566-21.301-46.446Q-21.178-46.327-21.178-46.156Q-21.178-45.981-21.301-45.858Q-21.424-45.735-21.591-45.735Q-21.762-45.735-21.885-45.858Q-22.008-45.981-22.008-46.156M-18.409-41.849L-20.043-41.849L-20.043-42.129Q-19.814-42.129-19.665-42.163Q-19.517-42.198-19.517-42.338L-19.517-44.187Q-19.517-44.457-19.624-44.518Q-19.732-44.580-20.043-44.580L-20.043-44.860L-18.983-44.935L-18.983-44.286Q-18.813-44.594-18.508-44.765Q-18.204-44.935-17.859-44.935Q-17.353-44.935-17.069-44.712Q-16.786-44.488-16.786-43.992L-16.786-42.338Q-16.786-42.201-16.637-42.165Q-16.488-42.129-16.263-42.129L-16.263-41.849L-17.893-41.849L-17.893-42.129Q-17.664-42.129-17.515-42.163Q-17.367-42.198-17.367-42.338L-17.367-43.978Q-17.367-44.313-17.486-44.513Q-17.606-44.713-17.920-44.713Q-18.190-44.713-18.425-44.577Q-18.659-44.440-18.797-44.206Q-18.936-43.972-18.936-43.698L-18.936-42.338Q-18.936-42.201-18.785-42.165Q-18.635-42.129-18.409-42.129L-18.409-41.849M-15.675-43.360Q-15.675-43.688-15.540-43.989Q-15.405-44.289-15.169-44.510Q-14.933-44.730-14.629-44.850Q-14.325-44.970-14-44.970Q-13.494-44.970-13.146-44.867Q-12.797-44.765-12.797-44.389Q-12.797-44.242-12.894-44.141Q-12.992-44.040-13.139-44.040Q-13.293-44.040-13.392-44.139Q-13.491-44.238-13.491-44.389Q-13.491-44.577-13.351-44.669Q-13.552-44.720-13.993-44.720Q-14.349-44.720-14.578-44.524Q-14.807-44.327-14.908-44.018Q-15.008-43.708-15.008-43.360Q-15.008-43.011-14.882-42.705Q-14.755-42.399-14.501-42.215Q-14.246-42.030-13.891-42.030Q-13.668-42.030-13.484-42.114Q-13.299-42.198-13.164-42.353Q-13.029-42.509-12.971-42.717Q-12.958-42.772-12.903-42.772L-12.790-42.772Q-12.759-42.772-12.737-42.748Q-12.715-42.724-12.715-42.690L-12.715-42.669Q-12.800-42.382-12.988-42.184Q-13.176-41.986-13.441-41.883Q-13.706-41.781-14-41.781Q-14.431-41.781-14.819-41.987Q-15.207-42.194-15.441-42.557Q-15.675-42.919-15.675-43.360M-10.377-41.849L-12.113-41.849L-12.113-42.129Q-11.884-42.129-11.736-42.163Q-11.587-42.198-11.587-42.338L-11.587-44.187Q-11.587-44.457-11.695-44.518Q-11.802-44.580-12.113-44.580L-12.113-44.860L-11.085-44.935L-11.085-44.228Q-10.955-44.536-10.712-44.735Q-10.469-44.935-10.151-44.935Q-9.933-44.935-9.762-44.811Q-9.591-44.686-9.591-44.474Q-9.591-44.337-9.690-44.238Q-9.789-44.139-9.922-44.139Q-10.059-44.139-10.158-44.238Q-10.257-44.337-10.257-44.474Q-10.257-44.614-10.158-44.713Q-10.449-44.713-10.649-44.517Q-10.849-44.320-10.941-44.026Q-11.033-43.732-11.033-43.452L-11.033-42.338Q-11.033-42.129-10.377-42.129L-10.377-41.849M-9.047-43.384Q-9.047-43.705-8.923-43.994Q-8.798-44.283-8.572-44.506Q-8.347-44.730-8.051-44.850Q-7.755-44.970-7.438-44.970Q-7.109-44.970-6.848-44.870Q-6.586-44.771-6.410-44.589Q-6.234-44.406-6.140-44.148Q-6.046-43.890-6.046-43.558Q-6.046-43.466-6.128-43.445L-8.384-43.445L-8.384-43.384Q-8.384-42.796-8.101-42.413Q-7.817-42.030-7.250-42.030Q-6.928-42.030-6.660-42.223Q-6.392-42.416-6.303-42.731Q-6.296-42.772-6.221-42.786L-6.128-42.786Q-6.046-42.762-6.046-42.690Q-6.046-42.683-6.053-42.656Q-6.166-42.259-6.537-42.020Q-6.908-41.781-7.332-41.781Q-7.769-41.781-8.169-41.989Q-8.569-42.198-8.808-42.565Q-9.047-42.932-9.047-43.384M-8.377-43.654L-6.563-43.654Q-6.563-43.931-6.660-44.183Q-6.757-44.436-6.956-44.592Q-7.154-44.747-7.438-44.747Q-7.714-44.747-7.928-44.589Q-8.142-44.430-8.260-44.175Q-8.377-43.920-8.377-43.654M-5.400-42.577Q-5.400-42.909-5.177-43.136Q-4.953-43.363-4.609-43.491Q-4.266-43.620-3.893-43.672Q-3.521-43.725-3.216-43.725L-3.216-43.978Q-3.216-44.183-3.324-44.363Q-3.432-44.542-3.613-44.645Q-3.794-44.747-4.002-44.747Q-4.409-44.747-4.645-44.655Q-4.556-44.618-4.510-44.534Q-4.464-44.450-4.464-44.348Q-4.464-44.252-4.510-44.173Q-4.556-44.095-4.637-44.050Q-4.717-44.006-4.806-44.006Q-4.956-44.006-5.057-44.103Q-5.158-44.201-5.158-44.348Q-5.158-44.970-4.002-44.970Q-3.791-44.970-3.541-44.906Q-3.292-44.843-3.090-44.724Q-2.888-44.604-2.762-44.419Q-2.635-44.235-2.635-43.992L-2.635-42.416Q-2.635-42.300-2.574-42.204Q-2.512-42.109-2.399-42.109Q-2.290-42.109-2.225-42.203Q-2.160-42.297-2.160-42.416L-2.160-42.864L-1.894-42.864L-1.894-42.416Q-1.894-42.146-2.121-41.981Q-2.348-41.815-2.628-41.815Q-2.837-41.815-2.974-41.969Q-3.110-42.122-3.134-42.338Q-3.281-42.071-3.563-41.926Q-3.845-41.781-4.170-41.781Q-4.447-41.781-4.730-41.856Q-5.014-41.931-5.207-42.110Q-5.400-42.290-5.400-42.577M-4.785-42.577Q-4.785-42.403-4.684-42.273Q-4.584-42.143-4.428-42.073Q-4.272-42.003-4.108-42.003Q-3.890-42.003-3.681-42.100Q-3.473-42.198-3.345-42.379Q-3.216-42.560-3.216-42.786L-3.216-43.514Q-3.541-43.514-3.907-43.423Q-4.272-43.332-4.529-43.120Q-4.785-42.909-4.785-42.577M-1.477-41.856L-1.477-42.919Q-1.477-42.943-1.449-42.970Q-1.422-42.997-1.398-42.997L-1.289-42.997Q-1.224-42.997-1.210-42.939Q-1.114-42.505-0.868-42.254Q-0.622-42.003-0.209-42.003Q0.133-42.003 0.386-42.136Q0.639-42.269 0.639-42.577Q0.639-42.734 0.545-42.849Q0.451-42.963 0.313-43.032Q0.174-43.100 0.007-43.138L-0.574-43.237Q-0.930-43.305-1.203-43.526Q-1.477-43.746-1.477-44.088Q-1.477-44.337-1.366-44.512Q-1.254-44.686-1.068-44.785Q-0.882-44.884-0.667-44.927Q-0.451-44.970-0.209-44.970Q0.205-44.970 0.485-44.788L0.701-44.963Q0.711-44.966 0.718-44.968Q0.725-44.970 0.735-44.970L0.786-44.970Q0.813-44.970 0.837-44.946Q0.861-44.922 0.861-44.894L0.861-44.047Q0.861-44.026 0.837-43.999Q0.813-43.972 0.786-43.972L0.673-43.972Q0.646-43.972 0.620-43.997Q0.595-44.023 0.595-44.047Q0.595-44.283 0.489-44.447Q0.383-44.611 0.200-44.693Q0.017-44.775-0.215-44.775Q-0.543-44.775-0.800-44.672Q-1.056-44.570-1.056-44.293Q-1.056-44.098-0.873-43.989Q-0.690-43.879-0.461-43.838L0.113-43.732Q0.359-43.684 0.572-43.556Q0.786-43.428 0.923-43.225Q1.060-43.021 1.060-42.772Q1.060-42.259 0.694-42.020Q0.328-41.781-0.209-41.781Q-0.704-41.781-1.036-42.075L-1.302-41.801Q-1.323-41.781-1.350-41.781L-1.398-41.781Q-1.422-41.781-1.449-41.808Q-1.477-41.835-1.477-41.856M1.647-43.384Q1.647-43.705 1.772-43.994Q1.897-44.283 2.123-44.506Q2.348-44.730 2.644-44.850Q2.939-44.970 3.257-44.970Q3.585-44.970 3.847-44.870Q4.108-44.771 4.284-44.589Q4.460-44.406 4.554-44.148Q4.648-43.890 4.648-43.558Q4.648-43.466 4.566-43.445L2.311-43.445L2.311-43.384Q2.311-42.796 2.594-42.413Q2.878-42.030 3.445-42.030Q3.767-42.030 4.035-42.223Q4.303-42.416 4.392-42.731Q4.399-42.772 4.474-42.786L4.566-42.786Q4.648-42.762 4.648-42.690Q4.648-42.683 4.642-42.656Q4.529-42.259 4.158-42.020Q3.787-41.781 3.363-41.781Q2.926-41.781 2.526-41.989Q2.126-42.198 1.887-42.565Q1.647-42.932 1.647-43.384M2.317-43.654L4.132-43.654Q4.132-43.931 4.035-44.183Q3.937-44.436 3.739-44.592Q3.541-44.747 3.257-44.747Q2.980-44.747 2.767-44.589Q2.553-44.430 2.435-44.175Q2.317-43.920 2.317-43.654",[1118],[1090,8491,8492,8495,8498],{"fill":1153,"stroke":1153,"style":3712},[1098,8493],{"fill":1100,"d":8494},"M102.524-60.343h-52.78",[1098,8496],{"d":8497},"m46.758-60.343 4.169 1.577-1.383-1.577 1.383-1.576Z",[1090,8499,8501],{"transform":8500},"translate(82.28 -22.227)",[1098,8502],{"d":8503,"fill":1153,"stroke":1153,"className":8504,"style":1207},"M-22.354-43.360Q-22.354-43.698-22.213-43.989Q-22.073-44.279-21.829-44.493Q-21.585-44.706-21.280-44.821Q-20.976-44.935-20.651-44.935Q-20.381-44.935-20.118-44.836Q-19.855-44.737-19.664-44.559L-19.664-45.957Q-19.664-46.227-19.771-46.289Q-19.879-46.350-20.190-46.350L-20.190-46.631L-19.113-46.706L-19.113-42.522Q-19.113-42.334-19.059-42.251Q-19.004-42.167-18.903-42.148Q-18.802-42.129-18.587-42.129L-18.587-41.849L-19.694-41.781L-19.694-42.198Q-20.111-41.781-20.737-41.781Q-21.168-41.781-21.540-41.993Q-21.913-42.204-22.133-42.565Q-22.354-42.926-22.354-43.360M-20.679-42.003Q-20.470-42.003-20.284-42.075Q-20.098-42.146-19.944-42.283Q-19.790-42.420-19.694-42.598L-19.694-44.207Q-19.780-44.354-19.925-44.474Q-20.070-44.594-20.240-44.653Q-20.409-44.713-20.590-44.713Q-21.150-44.713-21.419-44.324Q-21.687-43.934-21.687-43.353Q-21.687-42.782-21.453-42.392Q-21.219-42.003-20.679-42.003M-17.979-43.384Q-17.979-43.705-17.854-43.994Q-17.729-44.283-17.503-44.506Q-17.278-44.730-16.982-44.850Q-16.687-44.970-16.369-44.970Q-16.041-44.970-15.779-44.870Q-15.518-44.771-15.342-44.589Q-15.166-44.406-15.072-44.148Q-14.978-43.890-14.978-43.558Q-14.978-43.466-15.060-43.445L-17.315-43.445L-17.315-43.384Q-17.315-42.796-17.032-42.413Q-16.748-42.030-16.181-42.030Q-15.859-42.030-15.591-42.223Q-15.323-42.416-15.234-42.731Q-15.227-42.772-15.152-42.786L-15.060-42.786Q-14.978-42.762-14.978-42.690Q-14.978-42.683-14.984-42.656Q-15.097-42.259-15.468-42.020Q-15.839-41.781-16.263-41.781Q-16.700-41.781-17.100-41.989Q-17.500-42.198-17.739-42.565Q-17.979-42.932-17.979-43.384M-17.309-43.654L-15.494-43.654Q-15.494-43.931-15.591-44.183Q-15.689-44.436-15.887-44.592Q-16.085-44.747-16.369-44.747Q-16.646-44.747-16.859-44.589Q-17.073-44.430-17.191-44.175Q-17.309-43.920-17.309-43.654M-14.390-43.360Q-14.390-43.688-14.255-43.989Q-14.120-44.289-13.884-44.510Q-13.648-44.730-13.344-44.850Q-13.040-44.970-12.715-44.970Q-12.209-44.970-11.860-44.867Q-11.512-44.765-11.512-44.389Q-11.512-44.242-11.609-44.141Q-11.707-44.040-11.854-44.040Q-12.007-44.040-12.106-44.139Q-12.206-44.238-12.206-44.389Q-12.206-44.577-12.065-44.669Q-12.267-44.720-12.708-44.720Q-13.064-44.720-13.293-44.524Q-13.522-44.327-13.622-44.018Q-13.723-43.708-13.723-43.360Q-13.723-43.011-13.597-42.705Q-13.470-42.399-13.216-42.215Q-12.961-42.030-12.605-42.030Q-12.383-42.030-12.199-42.114Q-12.014-42.198-11.879-42.353Q-11.744-42.509-11.686-42.717Q-11.672-42.772-11.618-42.772L-11.505-42.772Q-11.474-42.772-11.452-42.748Q-11.430-42.724-11.430-42.690L-11.430-42.669Q-11.515-42.382-11.703-42.184Q-11.891-41.986-12.156-41.883Q-12.421-41.781-12.715-41.781Q-13.146-41.781-13.533-41.987Q-13.921-42.194-14.156-42.557Q-14.390-42.919-14.390-43.360M-9.092-41.849L-10.828-41.849L-10.828-42.129Q-10.599-42.129-10.450-42.163Q-10.302-42.198-10.302-42.338L-10.302-44.187Q-10.302-44.457-10.409-44.518Q-10.517-44.580-10.828-44.580L-10.828-44.860L-9.799-44.935L-9.799-44.228Q-9.669-44.536-9.427-44.735Q-9.184-44.935-8.866-44.935Q-8.647-44.935-8.477-44.811Q-8.306-44.686-8.306-44.474Q-8.306-44.337-8.405-44.238Q-8.504-44.139-8.637-44.139Q-8.774-44.139-8.873-44.238Q-8.972-44.337-8.972-44.474Q-8.972-44.614-8.873-44.713Q-9.164-44.713-9.364-44.517Q-9.564-44.320-9.656-44.026Q-9.748-43.732-9.748-43.452L-9.748-42.338Q-9.748-42.129-9.092-42.129L-9.092-41.849M-7.762-43.384Q-7.762-43.705-7.637-43.994Q-7.513-44.283-7.287-44.506Q-7.062-44.730-6.766-44.850Q-6.470-44.970-6.152-44.970Q-5.824-44.970-5.563-44.870Q-5.301-44.771-5.125-44.589Q-4.949-44.406-4.855-44.148Q-4.761-43.890-4.761-43.558Q-4.761-43.466-4.843-43.445L-7.099-43.445L-7.099-43.384Q-7.099-42.796-6.815-42.413Q-6.532-42.030-5.964-42.030Q-5.643-42.030-5.375-42.223Q-5.106-42.416-5.018-42.731Q-5.011-42.772-4.936-42.786L-4.843-42.786Q-4.761-42.762-4.761-42.690Q-4.761-42.683-4.768-42.656Q-4.881-42.259-5.252-42.020Q-5.623-41.781-6.046-41.781Q-6.484-41.781-6.884-41.989Q-7.284-42.198-7.523-42.565Q-7.762-42.932-7.762-43.384M-7.092-43.654L-5.277-43.654Q-5.277-43.931-5.375-44.183Q-5.472-44.436-5.670-44.592Q-5.869-44.747-6.152-44.747Q-6.429-44.747-6.643-44.589Q-6.856-44.430-6.974-44.175Q-7.092-43.920-7.092-43.654M-4.115-42.577Q-4.115-42.909-3.891-43.136Q-3.668-43.363-3.324-43.491Q-2.980-43.620-2.608-43.672Q-2.235-43.725-1.931-43.725L-1.931-43.978Q-1.931-44.183-2.039-44.363Q-2.147-44.542-2.328-44.645Q-2.509-44.747-2.717-44.747Q-3.124-44.747-3.360-44.655Q-3.271-44.618-3.225-44.534Q-3.179-44.450-3.179-44.348Q-3.179-44.252-3.225-44.173Q-3.271-44.095-3.351-44.050Q-3.432-44.006-3.521-44.006Q-3.671-44.006-3.772-44.103Q-3.873-44.201-3.873-44.348Q-3.873-44.970-2.717-44.970Q-2.505-44.970-2.256-44.906Q-2.006-44.843-1.805-44.724Q-1.603-44.604-1.477-44.419Q-1.350-44.235-1.350-43.992L-1.350-42.416Q-1.350-42.300-1.289-42.204Q-1.227-42.109-1.114-42.109Q-1.005-42.109-0.940-42.203Q-0.875-42.297-0.875-42.416L-0.875-42.864L-0.608-42.864L-0.608-42.416Q-0.608-42.146-0.836-41.981Q-1.063-41.815-1.343-41.815Q-1.552-41.815-1.689-41.969Q-1.825-42.122-1.849-42.338Q-1.996-42.071-2.278-41.926Q-2.560-41.781-2.885-41.781Q-3.162-41.781-3.445-41.856Q-3.729-41.931-3.922-42.110Q-4.115-42.290-4.115-42.577M-3.500-42.577Q-3.500-42.403-3.399-42.273Q-3.298-42.143-3.143-42.073Q-2.987-42.003-2.823-42.003Q-2.605-42.003-2.396-42.100Q-2.188-42.198-2.059-42.379Q-1.931-42.560-1.931-42.786L-1.931-43.514Q-2.256-43.514-2.622-43.423Q-2.987-43.332-3.244-43.120Q-3.500-42.909-3.500-42.577M-0.191-41.856L-0.191-42.919Q-0.191-42.943-0.164-42.970Q-0.137-42.997-0.113-42.997L-0.003-42.997Q0.061-42.997 0.075-42.939Q0.171-42.505 0.417-42.254Q0.663-42.003 1.077-42.003Q1.418-42.003 1.671-42.136Q1.924-42.269 1.924-42.577Q1.924-42.734 1.830-42.849Q1.736-42.963 1.598-43.032Q1.459-43.100 1.292-43.138L0.711-43.237Q0.355-43.305 0.082-43.526Q-0.191-43.746-0.191-44.088Q-0.191-44.337-0.080-44.512Q0.031-44.686 0.217-44.785Q0.403-44.884 0.619-44.927Q0.834-44.970 1.077-44.970Q1.490-44.970 1.770-44.788L1.986-44.963Q1.996-44.966 2.003-44.968Q2.010-44.970 2.020-44.970L2.071-44.970Q2.099-44.970 2.123-44.946Q2.146-44.922 2.146-44.894L2.146-44.047Q2.146-44.026 2.123-43.999Q2.099-43.972 2.071-43.972L1.958-43.972Q1.931-43.972 1.905-43.997Q1.880-44.023 1.880-44.047Q1.880-44.283 1.774-44.447Q1.668-44.611 1.485-44.693Q1.302-44.775 1.070-44.775Q0.742-44.775 0.485-44.672Q0.229-44.570 0.229-44.293Q0.229-44.098 0.412-43.989Q0.595-43.879 0.824-43.838L1.398-43.732Q1.644-43.684 1.858-43.556Q2.071-43.428 2.208-43.225Q2.345-43.021 2.345-42.772Q2.345-42.259 1.979-42.020Q1.613-41.781 1.077-41.781Q0.581-41.781 0.249-42.075L-0.017-41.801Q-0.038-41.781-0.065-41.781L-0.113-41.781Q-0.137-41.781-0.164-41.808Q-0.191-41.835-0.191-41.856M2.933-43.384Q2.933-43.705 3.057-43.994Q3.182-44.283 3.408-44.506Q3.633-44.730 3.929-44.850Q4.225-44.970 4.542-44.970Q4.871-44.970 5.132-44.870Q5.394-44.771 5.570-44.589Q5.746-44.406 5.840-44.148Q5.934-43.890 5.934-43.558Q5.934-43.466 5.852-43.445L3.596-43.445L3.596-43.384Q3.596-42.796 3.879-42.413Q4.163-42.030 4.730-42.030Q5.052-42.030 5.320-42.223Q5.588-42.416 5.677-42.731Q5.684-42.772 5.759-42.786L5.852-42.786Q5.934-42.762 5.934-42.690Q5.934-42.683 5.927-42.656Q5.814-42.259 5.443-42.020Q5.072-41.781 4.648-41.781Q4.211-41.781 3.811-41.989Q3.411-42.198 3.172-42.565Q2.933-42.932 2.933-43.384M3.603-43.654L5.417-43.654Q5.417-43.931 5.320-44.183Q5.223-44.436 5.024-44.592Q4.826-44.747 4.542-44.747Q4.266-44.747 4.052-44.589Q3.838-44.430 3.720-44.175Q3.603-43.920 3.603-43.654",[1118],[1271,8506,8508,8509,8533,8534,8549,8550,8574,8575,8590,8591,8606,8607,1063],{"className":8507},[1274],"Bitonic length at each peak. A forward pass gives ",[395,8510,8512],{"className":8511},[398],[395,8513,8515],{"className":8514,"ariaHidden":403},[402],[395,8516,8518,8521,8524,8527,8530],{"className":8517},[407],[395,8519],{"className":8520,"style":412},[411],[395,8522,1729],{"className":8523},[416,417],[395,8525,423],{"className":8526},[422],[395,8528,461],{"className":8529},[416,417],[395,8531,436],{"className":8532},[435]," (longest increasing ending at ",[395,8535,8537],{"className":8536},[398],[395,8538,8540],{"className":8539,"ariaHidden":403},[402],[395,8541,8543,8546],{"className":8542},[407],[395,8544],{"className":8545,"style":1674},[411],[395,8547,461],{"className":8548},[416,417],"), a backward pass gives ",[395,8551,8553],{"className":8552},[398],[395,8554,8556],{"className":8555,"ariaHidden":403},[402],[395,8557,8559,8562,8565,8568,8571],{"className":8558},[407],[395,8560],{"className":8561,"style":412},[411],[395,8563,8189],{"className":8564,"style":8188},[416,417],[395,8566,423],{"className":8567},[422],[395,8569,461],{"className":8570},[416,417],[395,8572,436],{"className":8573},[435]," (longest decreasing starting at ",[395,8576,8578],{"className":8577},[398],[395,8579,8581],{"className":8580,"ariaHidden":403},[402],[395,8582,8584,8587],{"className":8583},[407],[395,8585],{"className":8586,"style":1674},[411],[395,8588,461],{"className":8589},[416,417],"); the peak at ",[395,8592,8594],{"className":8593},[398],[395,8595,8597],{"className":8596,"ariaHidden":403},[402],[395,8598,8600,8603],{"className":8599},[407],[395,8601],{"className":8602,"style":1043},[411],[395,8604,948],{"className":8605},[416]," scores ",[395,8608,8610],{"className":8609},[398],[395,8611,8613,8632,8650,8668,8686,8704,8722],{"className":8612,"ariaHidden":403},[402],[395,8614,8616,8620,8623,8626,8629],{"className":8615},[407],[395,8617],{"className":8618,"style":8619},[411],"height:0.7667em;vertical-align:-0.0833em;",[395,8621,1729],{"className":8622},[416,417],[395,8624],{"className":8625,"style":2132},[516],[395,8627,2137],{"className":8628},[2136],[395,8630],{"className":8631,"style":2132},[516],[395,8633,8635,8638,8641,8644,8647],{"className":8634},[407],[395,8636],{"className":8637,"style":8619},[411],[395,8639,8189],{"className":8640,"style":8188},[416,417],[395,8642],{"className":8643,"style":2132},[516],[395,8645,2815],{"className":8646},[2136],[395,8648],{"className":8649,"style":2132},[516],[395,8651,8653,8656,8659,8662,8665],{"className":8652},[407],[395,8654],{"className":8655,"style":1043},[411],[395,8657,498],{"className":8658},[416],[395,8660],{"className":8661,"style":517},[516],[395,8663,891],{"className":8664},[521],[395,8666],{"className":8667,"style":517},[516],[395,8669,8671,8674,8677,8680,8683],{"className":8670},[407],[395,8672],{"className":8673,"style":2125},[411],[395,8675,907],{"className":8676},[416],[395,8678],{"className":8679,"style":2132},[516],[395,8681,2137],{"className":8682},[2136],[395,8684],{"className":8685,"style":2132},[516],[395,8687,8689,8692,8695,8698,8701],{"className":8688},[407],[395,8690],{"className":8691,"style":2125},[411],[395,8693,907],{"className":8694},[416],[395,8696],{"className":8697,"style":2132},[516],[395,8699,2815],{"className":8700},[2136],[395,8702],{"className":8703,"style":2132},[516],[395,8705,8707,8710,8713,8716,8719],{"className":8706},[407],[395,8708],{"className":8709,"style":1043},[411],[395,8711,498],{"className":8712},[416],[395,8714],{"className":8715,"style":517},[516],[395,8717,891],{"className":8718},[521],[395,8720],{"className":8721,"style":517},[516],[395,8723,8725,8728],{"className":8724},[407],[395,8726],{"className":8727,"style":1043},[411],[395,8729,948],{"className":8730},[416],[381,8732,8733,8734,8791,8792,8807,8808,8841,8842,8875,8876,8894,8895,1063],{},"On ",[395,8735,8737],{"className":8736},[398],[395,8738,8740],{"className":8739,"ariaHidden":403},[402],[395,8741,8743,8746,8749,8752,8755,8758,8761,8764,8767,8770,8773,8776,8779,8782,8785,8788],{"className":8742},[407],[395,8744],{"className":8745,"style":412},[411],[395,8747,423],{"className":8748},[422],[395,8750,498],{"className":8751},[416],[395,8753,912],{"className":8754},[911],[395,8756],{"className":8757,"style":916},[516],[395,8759,907],{"className":8760},[416],[395,8762,912],{"className":8763},[911],[395,8765],{"className":8766,"style":916},[516],[395,8768,948],{"className":8769},[416],[395,8771,912],{"className":8772},[911],[395,8774],{"className":8775,"style":916},[516],[395,8777,929],{"className":8778},[416],[395,8780,912],{"className":8781},[911],[395,8783],{"className":8784,"style":916},[516],[395,8786,561],{"className":8787},[416],[395,8789,436],{"className":8790},[435]," the peak sits at the value ",[395,8793,8795],{"className":8794},[398],[395,8796,8798],{"className":8797,"ariaHidden":403},[402],[395,8799,8801,8804],{"className":8800},[407],[395,8802],{"className":8803,"style":1043},[411],[395,8805,948],{"className":8806},[416],": three elements climb up to it\n(",[395,8809,8811],{"className":8810},[398],[395,8812,8814],{"className":8813,"ariaHidden":403},[402],[395,8815,8817,8820,8823,8826,8829,8832,8835,8838],{"className":8816},[407],[395,8818],{"className":8819,"style":1391},[411],[395,8821,498],{"className":8822},[416],[395,8824,912],{"className":8825},[911],[395,8827],{"className":8828,"style":916},[516],[395,8830,907],{"className":8831},[416],[395,8833,912],{"className":8834},[911],[395,8836],{"className":8837,"style":916},[516],[395,8839,948],{"className":8840},[416],") and three descend from it (",[395,8843,8845],{"className":8844},[398],[395,8846,8848],{"className":8847,"ariaHidden":403},[402],[395,8849,8851,8854,8857,8860,8863,8866,8869,8872],{"className":8850},[407],[395,8852],{"className":8853,"style":1391},[411],[395,8855,948],{"className":8856},[416],[395,8858,912],{"className":8859},[911],[395,8861],{"className":8862,"style":916},[516],[395,8864,929],{"className":8865},[416],[395,8867,912],{"className":8868},[911],[395,8870],{"className":8871,"style":916},[516],[395,8873,561],{"className":8874},[416],"), and the ",[395,8877,8879],{"className":8878},[398],[395,8880,8882],{"className":8881,"ariaHidden":403},[402],[395,8883,8885,8888,8891],{"className":8884},[407],[395,8886],{"className":8887,"style":2125},[411],[395,8889,2815],{"className":8890},[416],[395,8892,498],{"className":8893},[416]," avoids double-counting\nthe peak, so the whole array is one bitonic run of length ",[395,8896,8898],{"className":8897},[398],[395,8899,8901],{"className":8900,"ariaHidden":403},[402],[395,8902,8904,8907],{"className":8903},[407],[395,8905],{"className":8906,"style":1043},[411],[395,8908,948],{"className":8909},[416],[1705,8911,8913],{"type":8912},"note",[381,8914,8915,8918,8919,8922],{},[390,8916,8917],{},"Enrichment — Mirsky's theorem."," Patience sorting is a constructive proof of\n",[390,8920,8921],{},"Mirsky's theorem",": the minimum number of antichains (here, decreasing\nsubsequences) needed to cover the sequence equals the length of the longest\nchain (the longest increasing subsequence), which is exactly the number of\npiles. The dual statement, that the fewest chains covering a poset equals its\nlongest antichain, is Dilworth's theorem.",[1595,8924,8926],{"id":8925},"takeaways","Takeaways",[8928,8929,8930,8940,9237,9384,9408],"ul",{},[8931,8932,1598,8933,8936,8937,8939],"li",{},[390,8934,8935],{},"LIS"," is a longest strictly-increasing ",[385,8938,863],{}," (order preserved,\ncontiguity not required), not a substring.",[8931,8941,1598,8942,8995,8996,6054,8999,9162,9163,2755,9233,9236],{},[390,8943,8944,8994],{},[395,8945,8947],{"className":8946},[398],[395,8948,8950],{"className":8949,"ariaHidden":403},[402],[395,8951,8953,8956,8959,8962,8991],{"className":8952},[407],[395,8954],{"className":8955,"style":1502},[411],[395,8957,1507],{"className":8958,"style":1506},[416,417],[395,8960,1511],{"className":8961},[422],[395,8963,8965,8968],{"className":8964},[416],[395,8966,431],{"className":8967},[416,417],[395,8969,8971],{"className":8970},[465],[395,8972,8974],{"className":8973},[469],[395,8975,8977],{"className":8976},[474],[395,8978,8980],{"className":8979,"style":1530},[478],[395,8981,8982,8985],{"style":1475},[395,8983],{"className":8984,"style":487},[486],[395,8986,8988],{"className":8987},[491,492,493,494],[395,8989,561],{"className":8990},[416,494],[395,8992,1545],{"className":8993},[435]," DP"," indexes by the ",[390,8997,8998],{},"ending index",[395,9000,9002],{"className":9001},[398],[395,9003,9005,9032,9050,9086,9104,9143],{"className":9004,"ariaHidden":403},[402],[395,9006,9008,9011,9014,9017,9020,9023,9026,9029],{"className":9007},[407],[395,9009],{"className":9010,"style":412},[411],[395,9012,1729],{"className":9013},[416,417],[395,9015,423],{"className":9016},[422],[395,9018,461],{"className":9019},[416,417],[395,9021,436],{"className":9022},[435],[395,9024],{"className":9025,"style":517},[516],[395,9027,891],{"className":9028},[521],[395,9030],{"className":9031,"style":517},[516],[395,9033,9035,9038,9041,9044,9047],{"className":9034},[407],[395,9036],{"className":9037,"style":2125},[411],[395,9039,498],{"className":9040},[416],[395,9042],{"className":9043,"style":2132},[516],[395,9045,2137],{"className":9046},[2136],[395,9048],{"className":9049,"style":2132},[516],[395,9051,9053,9056,9062,9065,9068,9071,9074,9077,9080,9083],{"className":9052},[407],[395,9054],{"className":9055,"style":412},[411],[395,9057,9059],{"className":9058},[1574],[395,9060,1837],{"className":9061},[416,1578],[395,9063,2165],{"className":9064},[422],[395,9066,1729],{"className":9067},[416,417],[395,9069,423],{"className":9070},[422],[395,9072,1967],{"className":9073,"style":1966},[416,417],[395,9075,436],{"className":9076},[435],[395,9078],{"className":9079,"style":517},[516],[395,9081,2220],{"className":9082},[521],[395,9084],{"className":9085,"style":517},[516],[395,9087,9089,9092,9095,9098,9101],{"className":9088},[407],[395,9090],{"className":9091,"style":1962},[411],[395,9093,1967],{"className":9094,"style":1966},[416,417],[395,9096],{"className":9097,"style":517},[516],[395,9099,522],{"className":9100},[521],[395,9102],{"className":9103,"style":517},[516],[395,9105,9107,9110,9113,9116,9119,9122,9125,9128,9131,9134,9137,9140],{"className":9106},[407],[395,9108],{"className":9109,"style":412},[411],[395,9111,461],{"className":9112},[416,417],[395,9114,912],{"className":9115},[911],[395,9117,2257],{"className":9118},[516],[395,9120],{"className":9121,"style":916},[516],[395,9123,418],{"className":9124},[416,417],[395,9126,423],{"className":9127},[422],[395,9129,1967],{"className":9130,"style":1966},[416,417],[395,9132,436],{"className":9133},[435],[395,9135],{"className":9136,"style":517},[516],[395,9138,522],{"className":9139},[521],[395,9141],{"className":9142,"style":517},[516],[395,9144,9146,9149,9152,9155,9158],{"className":9145},[407],[395,9147],{"className":9148,"style":412},[411],[395,9150,418],{"className":9151},[416,417],[395,9153,423],{"className":9154},[422],[395,9156,461],{"className":9157},[416,417],[395,9159,9161],{"className":9160},[435],"]}",", the answer is ",[395,9164,9166],{"className":9165},[398],[395,9167,9169],{"className":9168,"ariaHidden":403},[402],[395,9170,9172,9175,9218,9221,9224,9227,9230],{"className":9171},[407],[395,9173],{"className":9174,"style":412},[411],[395,9176,9178,9184],{"className":9177},[1574],[395,9179,9181],{"className":9180},[1574],[395,9182,1837],{"className":9183},[416,1578],[395,9185,9187],{"className":9186},[465],[395,9188,9190,9210],{"className":9189},[469,470],[395,9191,9193,9207],{"className":9192},[474],[395,9194,9196],{"className":9195,"style":1850},[478],[395,9197,9198,9201],{"style":1853},[395,9199],{"className":9200,"style":487},[486],[395,9202,9204],{"className":9203},[491,492,493,494],[395,9205,461],{"className":9206},[416,417,494],[395,9208,503],{"className":9209},[502],[395,9211,9213],{"className":9212},[474],[395,9214,9216],{"className":9215,"style":510},[478],[395,9217],{},[395,9219],{"className":9220,"style":916},[516],[395,9222,1729],{"className":9223},[416,417],[395,9225,423],{"className":9226},[422],[395,9228,461],{"className":9229},[416,417],[395,9231,436],{"className":9232},[435],[390,9234,9235],{},"parent pointers","\nreconstruct the subsequence.",[8931,9238,1598,9239,9281,9282,9285,9286,9313,9314,9353,9354,9356,9357,9381,9382,1063],{},[390,9240,9241,9280],{},[395,9242,9244],{"className":9243},[398],[395,9245,9247],{"className":9246,"ariaHidden":403},[402],[395,9248,9250,9253,9256,9259,9262,9265,9271,9274,9277],{"className":9249},[407],[395,9251],{"className":9252,"style":412},[411],[395,9254,1507],{"className":9255,"style":1506},[416,417],[395,9257,1511],{"className":9258},[422],[395,9260,431],{"className":9261},[416,417],[395,9263],{"className":9264,"style":916},[516],[395,9266,9268],{"className":9267},[1574],[395,9269,1580],{"className":9270,"style":1579},[416,1578],[395,9272],{"className":9273,"style":916},[516],[395,9275,431],{"className":9276},[416,417],[395,9278,1545],{"className":9279},[435]," method"," keeps a sorted ",[390,9283,9284],{},"tails array"," where\n",[395,9287,9289],{"className":9288},[398],[395,9290,9292],{"className":9291,"ariaHidden":403},[402],[395,9293,9295,9298,9304,9307,9310],{"className":9294},[407],[395,9296],{"className":9297,"style":412},[411],[395,9299,9301],{"className":9300},[416],[395,9302,5448],{"className":9303},[416,3346],[395,9305,423],{"className":9306},[422],[395,9308,640],{"className":9309,"style":639},[416,417],[395,9311,436],{"className":9312},[435]," is the smallest tail of a length-",[395,9315,9317],{"className":9316},[398],[395,9318,9320,9341],{"className":9319,"ariaHidden":403},[402],[395,9321,9323,9326,9329,9332,9335,9338],{"className":9322},[407],[395,9324],{"className":9325,"style":412},[411],[395,9327,1511],{"className":9328},[422],[395,9330,640],{"className":9331,"style":639},[416,417],[395,9333],{"className":9334,"style":2132},[516],[395,9336,2137],{"className":9337},[2136],[395,9339],{"className":9340,"style":2132},[516],[395,9342,9344,9347,9350],{"className":9343},[407],[395,9345],{"className":9346,"style":412},[411],[395,9348,498],{"className":9349},[416],[395,9351,1545],{"className":9352},[435]," run; each element\ntriggers a ",[3268,9355,5614],{}," overwrite-or-append. Overwriting with a smaller tail\nnever loses an achievable length, so ",[395,9358,9360],{"className":9359},[398],[395,9361,9363],{"className":9362,"ariaHidden":403},[402],[395,9364,9366,9369,9372,9378],{"className":9365},[407],[395,9367],{"className":9368,"style":412},[411],[395,9370,2606],{"className":9371},[416],[395,9373,9375],{"className":9374},[416],[395,9376,5448],{"className":9377},[416,3346],[395,9379,2606],{"className":9380},[416]," is the LIS length;\nthis is ",[390,9383,1593],{},[8931,9385,9386,9389,9390,9392,9393,9396,9397,9400,9401,9404,9405,1063],{},[390,9387,9388],{},"Variants"," reuse the machine: ",[3268,9391,7376],{}," for ",[390,9394,9395],{},"non-decreasing",", parallel\n",[390,9398,9399],{},"counts"," for the number of LIS, ",[390,9402,9403],{},"sort-then-LIS with a descending tiebreak","\nfor Russian-doll envelopes, and forward+backward passes for ",[390,9406,9407],{},"bitonic",[8931,9409,9410,9411,9414,9415,1063],{},"LIS equals the minimum ",[390,9412,9413],{},"antichain (decreasing-subsequence) cover",", the pile\ncount, a constructive instance of ",[390,9416,8921],{},[9418,9419,9422,9427],"section",{"className":9420,"dataFootnotes":376},[9421],"footnotes",[1595,9423,9426],{"className":9424,"id":1071},[9425],"sr-only","Footnotes",[9428,9429,9430,9484,9496],"ol",{},[8931,9431,9433,9436,9437,9476,9477],{"id":9432},"user-content-fn-skiena-lis",[390,9434,9435],{},"Skiena",", § — Longest Increasing Subsequence: LIS as a canonical sequence DP, with the ",[395,9438,9440],{"className":9439},[398],[395,9441,9443],{"className":9442,"ariaHidden":403},[402],[395,9444,9446,9449,9452,9455,9458,9461,9467,9470,9473],{"className":9445},[407],[395,9447],{"className":9448,"style":412},[411],[395,9450,1507],{"className":9451,"style":1506},[416,417],[395,9453,1511],{"className":9454},[422],[395,9456,431],{"className":9457},[416,417],[395,9459],{"className":9460,"style":916},[516],[395,9462,9464],{"className":9463},[1574],[395,9465,1580],{"className":9466,"style":1579},[416,1578],[395,9468],{"className":9469,"style":916},[516],[395,9471,431],{"className":9472},[416,417],[395,9474,1545],{"className":9475},[435]," improvement over the naive quadratic fill. ",[418,9478,9483],{"href":9479,"ariaLabel":9480,"className":9481,"dataFootnoteBackref":376},"#user-content-fnref-skiena-lis","Back to reference 1",[9482],"data-footnote-backref","↩",[8931,9485,9487,9490,9491],{"id":9486},"user-content-fn-lc-count",[390,9488,9489],{},"Erickson",", Ch. — Dynamic Programming: augmenting an optimization DP with a parallel count array to enumerate optimal solutions. ",[418,9492,9483],{"href":9493,"ariaLabel":9494,"className":9495,"dataFootnoteBackref":376},"#user-content-fnref-lc-count","Back to reference 2",[9482],[8931,9497,9499,9502,9503,9542,9543],{"id":9498},"user-content-fn-lc-doll",[390,9500,9501],{},"CLRS",", Ch. 15 — Dynamic Programming (Problem 15-4): the longest-increasing-subsequence problem and its ",[395,9504,9506],{"className":9505},[398],[395,9507,9509],{"className":9508,"ariaHidden":403},[402],[395,9510,9512,9515,9518,9521,9524,9527,9533,9536,9539],{"className":9511},[407],[395,9513],{"className":9514,"style":412},[411],[395,9516,1507],{"className":9517,"style":1506},[416,417],[395,9519,1511],{"className":9520},[422],[395,9522,431],{"className":9523},[416,417],[395,9525],{"className":9526,"style":916},[516],[395,9528,9530],{"className":9529},[1574],[395,9531,1580],{"className":9532,"style":1579},[416,1578],[395,9534],{"className":9535,"style":916},[516],[395,9537,431],{"className":9538},[416,417],[395,9540,1545],{"className":9541},[435]," solution underpinning multi-dimensional nesting variants. ",[418,9544,9483],{"href":9545,"ariaLabel":9546,"className":9547,"dataFootnoteBackref":376},"#user-content-fnref-lc-doll","Back to reference 3",[9482],[9549,9550,9551],"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":9553},[9554,9556,9560,9561,9562],{"id":1597,"depth":18,"text":9555},"The O(n2) dynamic program: subsequences that end here",{"id":5375,"depth":18,"text":9557,"children":9558},"The O(nlogn) method: patience sorting and the tails array",[9559],{"id":5816,"depth":24,"text":5817},{"id":7213,"depth":18,"text":7214},{"id":8925,"depth":18,"text":8926},{"id":1071,"depth":18,"text":9426},"The previous lesson aligned two sequences. Now we ask a question about a\nsingle one. Given an array a[1..n] of numbers, a longest increasing\nsubsequence (LIS) is a longest set of positions i1​\u003Ci2​\u003C⋯\u003Cik​ whose\nvalues strictly increase, a[i1​]\u003Ca[i2​]\u003C⋯\u003Ca[ik​]. As with LCS, the\nword is subsequence, not substring: the chosen elements keep their original\norder but need not be contiguous. In a=[3,1,4,1,5,9,2,6] the\nsubsequence [3,4,5,9] increases and has length 4, and no longer one exists,\nso the LIS length is 4.1","md",{"moduleNumber":196,"lessonNumber":24,"order":9566},803,true,[9569,9572,9575,9579,9582],{"title":246,"slug":9570,"difficulty":9571},"longest-increasing-subsequence","Medium",{"title":9573,"slug":9574,"difficulty":9571},"Number of Longest Increasing Subsequence","number-of-longest-increasing-subsequence",{"title":9576,"slug":9577,"difficulty":9578},"Russian Doll Envelopes","russian-doll-envelopes","Hard",{"title":9580,"slug":9581,"difficulty":9578},"Longest Increasing Subsequence II","longest-increasing-subsequence-ii",{"title":9583,"slug":9584,"difficulty":9578},"Maximum Height by Stacking Cuboids","maximum-height-by-stacking-cuboids","---\ntitle: Longest Increasing Subsequence\nmodule: Dynamic Programming\nmoduleNumber: 8\nlessonNumber: 3\norder: 803\nsummary: >-\n  Given a sequence of numbers, how long is its longest strictly increasing\n  subsequence? A first dynamic program indexes subproblems by the element each\n  subsequence _ends at_, giving an $O(n^2)$ solution with parent-pointer\n  reconstruction. A sharper idea, the patience-sorting _tails_ array searched by\n  binary search, drops the time to $O(n\\log n)$. We then fold in the\n  variants: non-decreasing, counting, Russian-doll envelopes, and bitonic.\ntopics: [Dynamic Programming]\nsources:\n  - book: CLRS\n    ref: \"Ch. 15 — Dynamic Programming (Problem 15-4)\"\n  - book: Skiena\n    ref: \"§ — Longest Increasing Subsequence\"\n  - book: Erickson\n    ref: \"Ch. — Dynamic Programming\"\npractice:\n  - title: 'Longest Increasing Subsequence'\n    slug: longest-increasing-subsequence\n    difficulty: Medium\n  - title: 'Number of Longest Increasing Subsequence'\n    slug: number-of-longest-increasing-subsequence\n    difficulty: Medium\n  - title: 'Russian Doll Envelopes'\n    slug: russian-doll-envelopes\n    difficulty: Hard\n  - title: 'Longest Increasing Subsequence II'\n    slug: longest-increasing-subsequence-ii\n    difficulty: Hard\n  - title: 'Maximum Height by Stacking Cuboids'\n    slug: maximum-height-by-stacking-cuboids\n    difficulty: Hard\n---\n\nThe previous lesson aligned _two_ sequences. Now we ask a question about a\n**single** one. Given an array $a[1..n]$ of numbers, a **longest increasing\nsubsequence** (LIS) is a longest set of positions $i_1 \u003C i_2 \u003C \\cdots \u003C i_k$ whose\nvalues strictly increase, $a[i_1] \u003C a[i_2] \u003C \\cdots \u003C a[i_k]$. As with LCS, the\nword is _subsequence_, not _substring_: the chosen elements keep their original\norder but need not be contiguous. In $a = [3, 1, 4, 1, 5, 9, 2, 6]$ the\nsubsequence $[3, 4, 5, 9]$ increases and has length $4$, and no longer one exists,\nso the LIS length is $4$.[^skiena-lis]\n\nPlot the values against their positions and an LIS is a longest chain of points\nthat climbs as it moves right, never stepping down:\n\n$$\n% caption: Values of $a=[3,1,4,1,5,9,2,6]$ plotted against position. An LIS is a longest\n%          left-to-right chain that strictly rises; the highlighted path $3,4,5,9$ (length\n%          $4$) is one such chain.\n\\begin{tikzpicture}[\n  >=Stealth, x=7mm, y=3.4mm,\n  dot\u002F.style={circle, draw, fill=white, inner sep=0pt, minimum size=4pt},\n  pick\u002F.style={circle, draw=acc, fill=acc!15, very thick, inner sep=0pt, minimum size=5.5pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  % axes\n  \\draw[->, black!55] (-0.3,0) -- (8.4,0) node[right, font=\\footnotesize, black] {position};\n  \\draw[->, black!55] (-0.3,0) -- (-0.3,10.3) node[above, font=\\footnotesize, black] {value};\n  % points (pos i, value a[i]); chain on indices 1,3,5,6 -> values 3,4,5,9\n  \\coordinate (p1) at (1,3);\n  \\coordinate (p2) at (2,1);\n  \\coordinate (p3) at (3,4);\n  \\coordinate (p4) at (4,1);\n  \\coordinate (p5) at (5,5);\n  \\coordinate (p6) at (6,9);\n  \\coordinate (p7) at (7,2);\n  \\coordinate (p8) at (8,6);\n  % the rising chain, drawn behind the dots\n  \\draw[acc, very thick] (p1) -- (p3) -- (p5) -- (p6);\n  \\foreach \\p in {p2,p4,p7,p8} \\node[dot] at (\\p) {};\n  \\foreach \\p in {p1,p3,p5,p6} \\node[pick] at (\\p) {};\n  % value labels above each point\n  \\foreach \\p\u002F\\v in {p1\u002F3,p2\u002F1,p3\u002F4,p4\u002F1,p5\u002F5,p6\u002F9,p7\u002F2,p8\u002F6}\n    \\node[font=\\scriptsize, black!70, above=2pt] at (\\p) {$\\v$};\n\\end{tikzpicture}\n$$\n\nA brute-force scan over all $2^n$ subsequences is hopeless. But LIS has clean\noptimal substructure, the same [optimal-substructure](\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples)\nlever behind every dynamic program, and it admits two algorithms worth knowing\nwell: a direct $O(n^2)$ dynamic program, and a slicker $O(n\\log n)$ method built\non **patience sorting**.\n\n## The $O(n^2)$ dynamic program: subsequences that end here\n\nThe decisive modeling move, the analog of LCS's \"index by prefix,\" is to index\neach subproblem by the element its subsequence is forced to **end at**. Anchoring\nthe endpoint is what makes the pieces compose: an increasing subsequence ending at\n$i$ is some shorter increasing subsequence ending at an earlier, smaller element,\nwith $a[i]$ tacked on.\n\n> **Definition (LIS subproblem).** Let $L[i]$ be the length of the longest increasing subsequence of $a[1..i]$\n> that ends at index $i$ (so it must include $a[i]$).\n\nEvery increasing subsequence ends _somewhere_, so the answer is\n$\\max_{1 \\le i \\le n} L[i]$, not $L[n]$, a small but important distinction from\nthe prefix DPs, where the answer sat in the last cell.\n\nTo extend a subsequence so that it ends at $i$, look at all earlier indices $j \u003C i$\nwhose value is _smaller_ than $a[i]$; any increasing subsequence ending at such a\n$j$ can be lengthened by appending $a[i]$. We take the best such predecessor, or\nstart fresh with just $a[i]$ if none exists:\n\n$$\nL[i] = 1 + \\max\\bigl(\\{\\,0\\,\\} \\cup \\{\\,L[j] : j \u003C i,\\ a[j] \u003C a[i]\\,\\}\\bigr).\n$$\n\nThe $\\{0\\}$ guarantees the $\\max$ is defined and yields $L[i] = 1$ when no smaller\npredecessor exists: the subsequence consisting of $a[i]$ alone.\n\n> **Correctness (induction on $i$).** Assume $L[j]$ is correct for every $j \u003C i$.\n> Let $S$ be a longest increasing subsequence ending at $i$. If $S = (a[i])$ then\n> $|S| = 1$, matched by the $\\{0\\}$ branch. Otherwise $S$ has a second-to-last\n> element at some index $j \u003C i$ with $a[j] \u003C a[i]$, and $S$ minus its last element\n> is an increasing subsequence ending at $j$, so $|S| - 1 \\le L[j]$ by the IH;\n> hence $|S| \\le L[j] + 1$. Conversely, taking the longest subsequence ending at\n> the maximizing $j$ and appending $a[i]$ exhibits a valid subsequence of length\n> $L[j] + 1$. Both directions give equality. $\\qed$\n\nEach $L[i]$ scans the $i-1$ earlier indices, so the fill is\n$\\sum_i (i-1) = \\Theta(n^2)$ time and $\\Theta(n)$ space.\n\n```algorithm\ncaption: $\\textsc{LIS-Quadratic}(a[1..n])$ — length and parent pointers\nnumber: 1\nfor $i \\gets 1$ to $n$ do\n  $L[i] \\gets 1$ ; $\\ \\mathit{prev}[i] \\gets \\text{nil}$ \u002F\u002F singleton\n  for $j \\gets 1$ to $i - 1$ do\n    if $a[j] \u003C a[i]$ and $L[j] + 1 > L[i]$ then\n      $L[i] \\gets L[j] + 1$\n      $\\mathit{prev}[i] \\gets j$ \u002F\u002F best predecessor\n$\\mathit{best} \\gets \\arg\\max_i L[i]$\nreturn $L[\\mathit{best}]$ and the chain $\\mathit{best}, \\mathit{prev}[\\mathit{best}], \\dots$\n```\n\n**Reconstruction.** The $\\mathit{prev}$ array is a forest of parent pointers: to\nrecover an actual LIS, find the index $\\mathit{best}$ maximizing $L$, then follow\n$\\mathit{prev}$ backwards until it hits `nil`, reversing the collected indices.\nThis costs $O(k) \\le O(n)$, cheap beside the fill.\n\n$$\n% caption: Parent pointers for $a=[3,1,4,1,5,9,2,6]$. Following $\\mathit{prev}$ back from\n%          the best endpoint (index $6$, $L=4$) yields $3\\to4\\to5\\to9$.\n\\begin{tikzpicture}[\n  >=Stealth,\n  cell\u002F.style={draw, minimum size=9mm, inner sep=1pt, font=\\small},\n  pick\u002F.style={cell, draw=acc, very thick},\n  lbl\u002F.style={draw=none, font=\\scriptsize}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[pick] (c1) at (0,0) {3};\n  \\node[cell] (c2) at (1,0) {1};\n  \\node[pick] (c3) at (2,0) {4};\n  \\node[cell] (c4) at (3,0) {1};\n  \\node[pick] (c5) at (4,0) {5};\n  \\node[pick] (c6) at (5,0) {9};\n  \\node[cell] (c7) at (6,0) {2};\n  \\node[cell] (c8) at (7,0) {6};\n  \\foreach \\i\u002F\\x in {1\u002F0,2\u002F1,3\u002F2,4\u002F3,5\u002F4,6\u002F5,7\u002F6,8\u002F7}\n    \\node[lbl, gray] at (\\x,0.7) {$\\i$};\n  \\foreach \\v\u002F\\x in {1\u002F0,1\u002F1,2\u002F2,1\u002F3,3\u002F4,4\u002F5,2\u002F6,4\u002F7}\n    \\node[font=\\small] at (\\x,-1.5) {$\\v$};\n  \\node[lbl, gray] at (-1.15,-1.5) {$L[i]$};\n  % prev hops 6 -> 5 -> 3 -> 1, arcing below the cells, clear of the L[i] row\n  \\draw[->, acc, thick] (c6.south) to[bend left=48] (c5.south);\n  \\draw[->, acc, thick] (c5.south) to[bend left=32] (c3.south);\n  \\draw[->, acc, thick] (c3.south) to[bend left=32] (c1.south);\n\\end{tikzpicture}\n$$\n\nThe blue endpoints form the recovered chain: starting at the best $L = 4$ cell\n(index $6$, value $9$) and hopping along $\\mathit{prev}$ visits indices\n$6 \\to 5 \\to 3 \\to 1$, whose values $9, 5, 4, 3$ reverse to the LIS $3,4,5,9$.\n\n$$\n% caption: One $L=4$ chain $3\\to4\\to5\\to9$ (indices $1,3,5,6$), arrows along the cell\n%          tops. The dotted arrows show equally-long alternatives — starting at the $1$\n%          (index $2$), or ending at the $6$ (index $8$) instead of the $9$ — so the LIS\n%          is not unique.\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum size=9mm, inner sep=1pt, font=\\small},\n  pick\u002F.style={cell, draw=acc, very thick},\n  alt\u002F.style={cell, draw=acc, thick, dashed},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[pick] (c1) at (0,0) {3};\n  \\node[alt]  (c2) at (1,0) {1};\n  \\node[pick] (c3) at (2,0) {4};\n  \\node[cell] (c4) at (3,0) {1};\n  \\node[pick] (c5) at (4,0) {5};\n  \\node[pick] (c6) at (5,0) {9};\n  \\node[cell] (c7) at (6,0) {2};\n  \\node[alt]  (c8) at (7,0) {6};\n  \\foreach \\i\u002F\\x in {1\u002F0,2\u002F1,3\u002F2,4\u002F3,5\u002F4,6\u002F5,7\u002F6,8\u002F7}\n    \\node[font=\\scriptsize, gray] at (\\x,1.45) {$\\i$};\n  \\foreach \\v\u002F\\x in {1\u002F0,1\u002F1,2\u002F2,1\u002F3,3\u002F4,4\u002F5,2\u002F6,4\u002F7}\n    \\node[font=\\small] at (\\x,-0.85) {$\\v$};\n  \\node[font=\\scriptsize, gray] at (-1.05,-0.85) {$L[i]$};\n  % chosen chain 3 -> 4 -> 5 -> 9 (greedy: earliest predecessor at each tie)\n  \\draw[->, acc, thick] (c1.north) to[bend left=28] (c3.north);\n  \\draw[->, acc, thick] (c3.north) to[bend left=30] (c5.north);\n  \\draw[->, acc, thick] (c5.north) to[bend left=36] (c6.north);\n  % the tie at the START: 4 could instead extend the 1 at index 2 (dotted = the other option)\n  \\draw[->, acc, dotted, thick] (c2.south) to[bend right=30] (c3.south);\n  \\node[font=\\scriptsize, acc] at (1.6,-1.55) {or start at the $1$ (index $2$)};\n  % the free choice at the END (drawn below, like the start alternative): equally long ending at the 6,\n  % dipping under the L[i] row so it clears those digits\n  \\draw[->, acc, dotted, thick] (c5.south) to[bend right=58] (c8.south);\n  \\node[font=\\scriptsize, acc] at (5.9,-2.05) {or end at the $6$ (index $8$)};\n\\end{tikzpicture}\n$$\n\nThe solid chain $3 \\to 4 \\to 5 \\to 9$ (indices $1,3,5,6$) realizes\n$L = 4$ at index $6$, and the row beneath records every $L[i]$. **A subtlety worth\nnaming:** the predecessor of $4$ is not unique — both the $3$ (index $1$) and the\n$1$ (index $2$) are smaller and end a length-$1$ run, so either could precede it.\nReconstruction is _greedy_: it stores and follows a single parent, and we take the\n**earlier** index, giving $3,4,5,9$. The dotted arrows mark the other choices:\nextending the $1$ at index $2$ instead yields $1,4,5,9$, and stopping at the $6$\n(index $8$, also $L=4$) yields $3,4,5,6$. Whenever $\\mathit{prev}$ has ties or several\nendpoints reach the maximum length, the LIS is simply not unique.\n\n## The $O(n\\log n)$ method: patience sorting and the tails array\n\nThe quadratic inner loop searches _all_ earlier indices for the best predecessor.\nThe trick that removes it is to stop tracking endpoints individually and instead\nmaintain, for each achievable length, the single most useful witness.\n\n> **Definition (Tails array).** Let $\\mathit{tails}[k]$ = the **smallest possible last element** of any increasing\n> subsequence of length $k+1$ seen so far (zero-indexed $k$).\n\nThe whole algorithm is one pass. For each element $x = a[i]$,\n[binary-search](\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer)\n$\\mathit{tails}$ for the first entry $\\ge x$ (a `lower_bound`). If one is found,\noverwrite it with $x$; if none is (so $x$ exceeds every tail), append $x$. The LIS\nlength is the final length of $\\mathit{tails}$.\n\n```algorithm\ncaption: $\\textsc{LIS-Patience}(a[1..n])$ — tails array, $O(n\\log n)$\nnumber: 2\n$\\mathit{tails} \\gets$ empty array\nfor $i \\gets 1$ to $n$ do\n  $k \\gets \\textsc{Lower-Bound}(\\mathit{tails},\\ a[i])$ \u002F\u002F first $\\mathit{tails}[k] \\ge a[i]$\n  if $k = |\\mathit{tails}|$ then\n    append $a[i]$ to $\\mathit{tails}$ \u002F\u002F exceeds all tails: extend\n  else\n    $\\mathit{tails}[k] \\gets a[i]$ \u002F\u002F shrink length-$(k{+}1)$ tail\nreturn $|\\mathit{tails}|$\n```\n\nEach element costs one $O(\\log n)$ binary search, for $O(n\\log n)$ total.\n\n### Why this is correct\n\nTwo facts carry the whole proof. First, **$\\mathit{tails}$ is always sorted in\nincreasing order**, so binary search is even legal. Second, **the updates never\nreduce any achievable length**, so the array's length tracks the true LIS.\n\n> **Invariant.** After processing any prefix, $\\mathit{tails}$ is strictly\n> increasing, and $\\mathit{tails}[k]$ is the minimum tail over all\n> length-$(k+1)$ increasing subsequences of that prefix.\n\n_Sortedness._ A length-$(k+1)$ increasing subsequence is a length-$k$ one with one\nmore element appended, so the minimum tail of length $k+1$ strictly exceeds that of\nlength $k$: $\\mathit{tails}[k-1] \u003C \\mathit{tails}[k]$. An overwrite preserves this.\nWhen we replace $\\mathit{tails}[k]$ by $x$, the `lower_bound` guarantees\n$\\mathit{tails}[k-1] \u003C x$ (else $k-1$ would have been the found index) and\n$x \\le \\mathit{tails}[k] \u003C \\mathit{tails}[k+1]$, so the array stays strictly\nincreasing.\n\n_Overwriting never hurts._ Replacing $\\mathit{tails}[k]$ with a smaller value $x$\ncan only _help_: any future element that could have extended a length-$(k+1)$\nsubsequence ending at the old, larger tail can still extend the one ending at $x$,\nsince $x$ is smaller. So no achievable length is ever lost: overwrites only make\ntails more permissive, never shorter. And appending $x$ when it beats every tail\nrecords a genuinely new, longer subsequence. Hence $|\\mathit{tails}|$ equals the\nLIS length. $\\qed$\n\n> **Remark (The card game).** The name comes from the solitaire variant **patience\n> sorting**: deal cards one at a time onto piles, placing each card on the leftmost\n> pile whose top is $\\ge$ it, or starting a new pile to the right if none qualifies.\n> Each pile's top is exactly a $\\mathit{tails}$ entry, and the number of piles at\n> the end is the LIS length. The greedy \"leftmost legal pile\" rule _is_ the\n> `lower_bound` overwrite.\n\n$$\n% caption: Patience sorting \u002F $O(n\\log n)$: the tails array as elements arrive.\n\\begin{tikzpicture}[\n  cell\u002F.style={draw, minimum size=8mm, inner sep=1pt, font=\\small},\n  hit\u002F.style={cell, draw=acc, very thick},\n  >=stealth, node distance=0mm]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[font=\\scriptsize, gray] at (-1.9,0)    {add $3$};\n  \\node[hit]  at (0,0) {3};\n  \\node[font=\\scriptsize, gray] at (-1.9,-0.9)  {add $1$};\n  \\node[hit]  at (0,-0.9) {1};\n  \\node[font=\\scriptsize, gray] at (-1.9,-1.8)  {add $4$};\n  \\node[cell] at (0,-1.8) {1};  \\node[hit] at (0.9,-1.8) {4};\n  \\node[font=\\scriptsize, gray] at (-1.9,-2.7)  {add $5$};\n  \\node[cell] at (0,-2.7) {1};  \\node[cell] at (0.9,-2.7) {4}; \\node[hit] at (1.8,-2.7) {5};\n  \\node[font=\\scriptsize, gray] at (-1.9,-3.6)  {add $2$};\n  \\node[cell] at (0,-3.6) {1};  \\node[hit] at (0.9,-3.6) {2}; \\node[cell] at (1.8,-3.6) {5};\n\\end{tikzpicture}\n$$\n\nEach row marks the overwrite-or-append position in `acc`. Adding $2$ overwrites the\n$4$ (the first tail $\\ge 2$): the length-$2$ run now ends at the smaller value $2$,\nleaving room for future growth without ever shortening the array.\n\n**Reconstruction in $O(n\\log n)$.** As written, $\\mathit{tails}$ holds _values_, not\npositions, so it loses the actual subsequence. To recover it, store **indices**: let\n$\\mathit{tailIdx}[k]$ hold the position whose value is $\\mathit{tails}[k]$, and on\neach step record $\\mathit{parent}[i] = \\mathit{tailIdx}[k-1]$ (the index then sitting\none pile to the left). Following $\\mathit{parent}$ back from $\\mathit{tailIdx}[\\text{last}]$\nreconstructs an LIS, exactly as in the quadratic version.\n\n## Variants on the same machine\n\nBoth algorithms bend to a family of related problems with small edits.\n\n**Longest non-decreasing subsequence.** To allow equal adjacent values\n($a[i_1] \\le a[i_2] \\le \\cdots$), change `lower_bound` to **`upper_bound`**: search\nfor the first tail _strictly greater_ than $x$. An equal element then extends rather\nthan overwrites, which is precisely the non-strict relaxation. (In the $O(n^2)$ DP,\nchange the test $a[j] \u003C a[i]$ to $a[j] \\le a[i]$.)\n\n**Counting the number of LIS.** Alongside $L[i]$ track $\\mathit{cnt}[i]$ = the number\nof longest increasing subsequences ending at $i$. When a strictly better predecessor\n$j$ is found ($L[j] + 1 > L[i]$), reset $\\mathit{cnt}[i] \\gets \\mathit{cnt}[j]$; when\na tying predecessor is found ($L[j] + 1 = L[i]$), accumulate\n$\\mathit{cnt}[i] \\mathrel{+}= \\mathit{cnt}[j]$. The answer sums $\\mathit{cnt}[i]$ over\nall $i$ achieving the global maximum $L[i]$. Speeding this counting variant to\n$O(n\\log n)$ leans on a\n[Fenwick or segment tree](\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees)\nkeyed by value to roll up best-length-and-count over smaller predecessors.[^lc-count]\n\n**Russian doll envelopes.** Each envelope has width $w$ and height $h$, and one\nnests in another only if _both_ dimensions are strictly larger; find the longest\nnesting chain. Reduce to LIS in two dimensions: **sort by width ascending, and\nbreak ties by height descending**, then run LIS on the height sequence alone. The\ndescending tiebreak is the trick: among envelopes of equal width, the descending\norder makes it impossible for two of them to both appear in an increasing height\nrun (their heights decrease), so we never illegally \"nest\" two equal-width\nenvelopes. With distinct widths this reduces a 2-D nesting to a plain 1-D LIS,\nsolvable in $O(n\\log n)$.[^lc-doll]\n\n**Bitonic and longest decreasing.** A _longest decreasing subsequence_ is just LIS\non the reversed comparison (or on the negated array). A **longest bitonic\nsubsequence**, one that increases then decreases, is computed by running the\nending-here LIS left-to-right to get $L[i]$ and a symmetric decreasing pass\nright-to-left to get $R[i]$; the best bitonic peak at $i$ has length\n$L[i] + R[i] - 1$.\n\n$$\n% caption: Bitonic length at each peak. A forward pass gives $L[i]$ (longest increasing\n%          ending at $i$), a backward pass gives $R[i]$ (longest decreasing starting at\n%          $i$); the peak at $5$ scores $L+R-1 = 3+3-1 = 5$.\n\\begin{tikzpicture}[\n  >=Stealth,\n  cell\u002F.style={draw, minimum size=9mm, inner sep=1pt, font=\\small},\n  pk\u002F.style={cell, fill=acc!18},\n  lbl\u002F.style={draw=none, font=\\scriptsize}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\v\u002F\\x\u002F\\sty in {1\u002F0\u002Fcell,3\u002F1\u002Fcell,5\u002F2\u002Fpk,4\u002F3\u002Fcell,2\u002F4\u002Fcell}\n    \\node[\\sty] (c\\x) at (\\x,0) {$\\v$};\n  \\foreach \\v\u002F\\x in {1\u002F0,2\u002F1,3\u002F2,3\u002F3,2\u002F4} \\node[lbl] at (\\x,-0.8) {$\\v$};\n  \\foreach \\v\u002F\\x in {1\u002F0,2\u002F1,3\u002F2,2\u002F3,1\u002F4} \\node[lbl] at (\\x,-1.45) {$\\v$};\n  \\node[lbl, gray] at (-1.0,-0.8) {$L[i]\\!\\to$};\n  \\node[lbl, gray] at (-1.0,-1.45) {$\\leftarrow\\!R[i]$};\n  \\draw[->, acc, thick] (-0.4,0.65) -- (1.6,0.65) node[midway, above, draw=none, font=\\scriptsize, acc] {increase};\n  \\draw[->, acc, thick] (4.4,0.65) -- (2.4,0.65) node[midway, above, draw=none, font=\\scriptsize, acc] {decrease};\n\\end{tikzpicture}\n$$\n\nOn $[1,3,5,4,2]$ the peak sits at the value $5$: three elements climb up to it\n($1,3,5$) and three descend from it ($5,4,2$), and the $-1$ avoids double-counting\nthe peak, so the whole array is one bitonic run of length $5$.\n\n> **Enrichment — Mirsky's theorem.** Patience sorting is a constructive proof of\n> **Mirsky's theorem**: the minimum number of antichains (here, decreasing\n> subsequences) needed to cover the sequence equals the length of the longest\n> chain (the longest increasing subsequence), which is exactly the number of\n> piles. The dual statement, that the fewest chains covering a poset equals its\n> longest antichain, is Dilworth's theorem.\n\n## Takeaways\n\n- The **LIS** is a longest strictly-increasing _subsequence_ (order preserved,\n  contiguity not required), not a substring.\n- The **$O(n^2)$ DP** indexes by the **ending index**: $L[i] = 1 + \\max\\{L[j] :\n  j \u003C i,\\ a[j] \u003C a[i]\\}$, the answer is $\\max_i L[i]$, and **parent pointers**\n  reconstruct the subsequence.\n- The **$O(n\\log n)$ method** keeps a sorted **tails array** where\n  $\\mathit{tails}[k]$ is the smallest tail of a length-$(k+1)$ run; each element\n  triggers a `lower_bound` overwrite-or-append. Overwriting with a smaller tail\n  never loses an achievable length, so $|\\mathit{tails}|$ is the LIS length;\n  this is **patience sorting**.\n- **Variants** reuse the machine: `upper_bound` for **non-decreasing**, parallel\n  **counts** for the number of LIS, **sort-then-LIS with a descending tiebreak**\n  for Russian-doll envelopes, and forward+backward passes for **bitonic**.\n- LIS equals the minimum **antichain (decreasing-subsequence) cover**, the pile\n  count, a constructive instance of **Mirsky's theorem**.\n\n[^skiena-lis]: **Skiena**, § — Longest Increasing Subsequence: LIS as a canonical sequence DP, with the $O(n\\log n)$ improvement over the naive quadratic fill.\n[^lc-count]: **Erickson**, Ch. — Dynamic Programming: augmenting an optimization DP with a parallel count array to enumerate optimal solutions.\n[^lc-doll]: **CLRS**, Ch. 15 — Dynamic Programming (Problem 15-4): the longest-increasing-subsequence problem and its $O(n\\log n)$ solution underpinning multi-dimensional nesting variants.\n",{"text":9587,"minutes":9588,"time":9589,"words":9590},"9 min read",8.39,503400,1678,{"title":246,"description":9563},[9593,9595,9597],{"book":9501,"ref":9594},"Ch. 15 — Dynamic Programming (Problem 15-4)",{"book":9435,"ref":9596},"§ — Longest Increasing Subsequence",{"book":9489,"ref":9598},"Ch. — Dynamic Programming","available","01.algorithms\u002F08.dynamic-programming\u002F03.longest-increasing-subsequence",[231],"HP7mj9mwZGzh4uLkPxeqvXTj-s0T44te9c63P9w_LHg",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":9604,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9605,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9606,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9607,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9608,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9609,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9610,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9611,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9612,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9613,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9614,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9615,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9616,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9617,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9618,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9619,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9620,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9621,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9622,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9623,"\u002Falgorithms\u002Fsequences\u002Ftries":9624,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9625,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9626,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9627,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9628,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9629,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9630,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9631,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9632,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9633,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9634,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9635,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9636,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9637,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9638,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9639,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9590,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9640,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9641,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9642,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9643,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9644,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9645,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9646,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9647,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9648,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9649,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9620,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9650,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9651,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9652,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9653,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9636,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9654,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9655,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9616,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9656,"\u002Falgorithms":9657,"\u002Ftheory-of-computation":9658,"\u002Fcomputer-architecture":9658,"\u002Fphysical-computing":9658,"\u002Fdatabases":9658,"\u002Fdeep-learning":9658},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1465,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1568,1451,1291,1543,1883,1443,1599,2038,2241,1744,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":9660,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9661,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9662,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9663,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9664,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9665,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9666,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9667,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9668,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9669,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9670,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9671,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9672,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9673,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9674,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9675,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9676,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9677,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9678,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9679,"\u002Falgorithms\u002Fsequences\u002Ftries":9680,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9681,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9682,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9683,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9684,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9685,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9686,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9687,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9688,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9689,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9690,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9691,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9692,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9693,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9694,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9695,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9696,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9697,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9698,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9699,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9700,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9701,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9702,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9703,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9704,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9705,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9706,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9707,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9708,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9709,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9710,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9711,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9712,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9713,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9714,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9715,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9716,"\u002Falgorithms":9717,"\u002Ftheory-of-computation":9720,"\u002Fcomputer-architecture":9723,"\u002Fphysical-computing":9726,"\u002Fdatabases":9729,"\u002Fdeep-learning":9732},{"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":9718,"title":9719,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":9721,"title":9722,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":9724,"title":9725,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":9727,"title":9728,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":9730,"title":9731,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":9733,"title":9734,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560525645]