@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/be-vietnam-pro-vietnamese-400-normal.CRcqvyg1.woff2)format("woff2"),url(/_astro/be-vietnam-pro-vietnamese-400-normal.BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/be-vietnam-pro-vietnamese-600-normal.nyU-ZL2p.woff2)format("woff2"),url(/_astro/be-vietnam-pro-vietnamese-600-normal.DkpCIyan.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/be-vietnam-pro-vietnamese-700-normal.Csr0PCuG.woff2)format("woff2"),url(/_astro/be-vietnam-pro-vietnamese-700-normal.By_5yT39.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/be-vietnam-pro-latin-400-normal.PpnXBOrz.woff2)format("woff2"),url(/_astro/be-vietnam-pro-latin-400-normal.bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/be-vietnam-pro-latin-600-normal.BZDkUTrt.woff2)format("woff2"),url(/_astro/be-vietnam-pro-latin-600-normal.5IO4e7bK.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/be-vietnam-pro-latin-700-normal.DlW1Zbsh.woff2)format("woff2"),url(/_astro/be-vietnam-pro-latin-700-normal.C2EtzaOi.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-600-normal.C8RAYTDA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-600-normal.BfsvjouI.woff)format("woff")}.figure{margin:0 0 1.6rem}.figure figcaption{max-width:34rem;color:var(--muted);margin-top:.55rem;font-size:.88rem;line-height:1.55}.g-svg,.gr-svg{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:100%;height:auto;padding:.6rem;display:block}.g-svg{max-width:30rem}.gr-svg{max-width:17rem}.figure.is-wide .gr-svg{max-width:22rem}.g-band{fill:color-mix(in srgb, var(--accent,#7a8290) 8%, transparent)}.g-band-label{fill:var(--accent,#7a8290);font-size:11px;font-weight:600;font-family:var(--font)}.g-edge{stroke:var(--line-strong);stroke-width:2px}.g-edge.is-tree{stroke:var(--accent,var(--ink));stroke-width:4px}.g-disc{fill:var(--surface);stroke:var(--line-strong);stroke-width:2px;transition:fill .18s}.g-num{text-anchor:middle;dominant-baseline:central;font-family:var(--mono);fill:var(--ink-soft);font-size:17px;font-weight:600}.g-node.is-queued .g-disc{fill:var(--accent-soft,#eee);stroke:var(--accent-ring,#999);stroke-dasharray:4 3}.g-node.is-queued .g-num{fill:var(--accent,var(--ink))}.g-node.is-visited .g-disc{fill:var(--accent,var(--ink));stroke:var(--accent,var(--ink))}.g-node.is-visited .g-num{fill:#fff}.g-node.is-visited.is-queued .g-disc{fill:var(--accent,var(--ink));stroke:var(--ink);stroke-dasharray:4 3;stroke-width:2.5px}.g-node.is-visited.is-queued .g-num{fill:#fff}.g-halo{fill:none;stroke:var(--accent-ring,#999);stroke-width:3px;opacity:.6}.g-node.is-current .g-disc{stroke:var(--ink);stroke-width:3px}.g-badge circle{fill:var(--ink);stroke:var(--surface);stroke-width:2px}.g-badge text{fill:#fff;text-anchor:middle;dominant-baseline:central;font-size:11px;font-family:var(--mono);font-weight:600}.g-tag{text-anchor:middle;dominant-baseline:central;font-family:var(--mono);fill:var(--accent,var(--muted));font-size:11px;font-weight:600}.gr-axis{font-family:var(--mono);fill:var(--muted);text-anchor:middle;dominant-baseline:central;font-size:11px}.gr-cell rect{stroke:var(--surface);stroke-width:2px;transition:fill .18s}.gr-cell text{font-family:var(--mono);text-anchor:middle;dominant-baseline:central;fill:var(--ink-soft);font-size:13px;font-weight:600}[data-kind=island] .gr-cell.is-open rect{fill:#e7dfc9}[data-kind=island] .gr-cell.is-blocked rect{fill:#dbeaf7}[data-kind=maze] .gr-cell.is-open rect{fill:#f2efe7}[data-kind=maze] .gr-cell.is-blocked rect{fill:#2c313b}.gr-cell.is-open.is-queued rect{fill:var(--accent-soft,#dbe7fe);stroke:var(--accent-ring,#3b82f6);stroke-dasharray:4 3}.gr-cell.is-open.is-visited rect{fill:var(--accent,#1d4ed8)}.gr-cell.is-visited text{fill:#fff}.gr-cell.is-open.is-visited.is-queued rect{fill:var(--accent,#1d4ed8);stroke:var(--ink);stroke-dasharray:4 3}.gr-cell.is-open.is-path rect{fill:var(--accent-soft,#dbe7fe);stroke:var(--accent,#1d4ed8);stroke-width:2.5px}.gr-cell.is-path text{fill:var(--accent,#1d4ed8)}.gr-cell.is-current rect{stroke:var(--ink);stroke-width:3px}.gr-cell.is-start rect,.gr-cell.is-goal rect{stroke:var(--ink);stroke-width:2.5px}.viz{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:52rem;margin:1.8rem 0;padding:1rem}.viz-head{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.viz-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.82rem;font-weight:700}.viz-tabs{border:1px solid var(--line-strong);background:#eeeae1;border-radius:999px;gap:2px;margin-inline-start:auto;padding:2px;display:inline-flex}.viz-tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.2rem .8rem;font-size:.82rem;font-weight:600}.viz-tabs button[aria-pressed=true]{background:var(--accent,var(--ink));color:#fff}.viz-body{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.viz-stage .g-svg,.viz-stage .gr-svg{background:0 0;border:0;max-width:100%;padding:0}.viz-panel{flex-direction:column;gap:.7rem;font-size:.9rem;display:flex}.viz-row-label{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 .3rem;font-size:.72rem;font-weight:700}.chips{flex-wrap:wrap;align-items:center;gap:.28rem;min-height:2rem;display:flex}.chip{font-family:var(--mono);border:1px solid var(--line-strong);color:var(--ink-soft);background:#f2efe7;border-radius:6px;padding:.16rem .5rem;font-size:.82rem;font-weight:600}.chip.hot{background:var(--accent,var(--ink));border-color:var(--accent,var(--ink));color:#fff}.chip.soft{background:var(--accent-soft,#eee);border-color:var(--accent-ring,#999);color:var(--accent,var(--ink))}.chip.empty{font-style:italic;font-family:var(--font);border:1px dashed var(--line-strong);color:var(--muted);background:0 0}.container-box{border:1px solid var(--line);background:#fcfbf8;border-radius:8px;padding:.5rem .6rem}.container-ends{color:var(--muted);font-size:.7rem;font-family:var(--mono);justify-content:space-between;margin-top:.3rem;display:flex}.viz-caption{border-top:1px solid var(--line);align-items:flex-start;gap:.6rem;min-height:3.4rem;margin-top:.9rem;padding-top:.75rem;display:flex}.viz-kind{font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;background:var(--accent-soft,#eee);color:var(--accent,var(--ink));border:1px solid var(--accent-ring,#999);border-radius:5px;flex:none;padding:.2rem .45rem;font-size:.68rem;font-weight:600}.viz-caption p{margin:0;font-size:.95rem;line-height:1.55}.viz-controls{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.75rem;padding-top:.75rem;display:flex}.viz-controls button{font:inherit;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:7px;padding:.4rem .85rem;font-size:.88rem;font-weight:600}.viz-controls button:not(.primary):hover:not(:disabled){background:#f4f1ea}.viz-controls button:disabled{opacity:.42;cursor:not-allowed}.viz-controls button.primary{background:var(--accent,var(--ink));border-color:var(--accent,var(--ink));color:#fff}.viz-controls button.primary:hover:not(:disabled){background:var(--accent,var(--ink));filter:brightness(1.12)}.viz-progress{font-family:var(--mono);color:var(--muted);margin-inline-start:auto;font-size:.8rem}.viz-scrub{width:100%;accent-color:var(--accent,var(--ink));margin-top:.2rem}.viz-dual{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.viz-dual>section{border:1px solid var(--line);border-radius:8px;padding:.75rem}.viz-dual h4{letter-spacing:.05em;text-transform:uppercase;color:var(--accent,var(--muted));margin:0 0 .6rem;font-size:.85rem}@media (width<=760px){.viz-body,.viz-dual{grid-template-columns:minmax(0,1fr)}.viz-progress{align-items:center;gap:.4rem;width:100%;margin-inline-start:0;display:flex}.viz-head{gap:.5rem}.viz-tabs{margin-inline-start:0}}details.trace{max-width:52rem;margin:1.6rem 0}details.trace>summary,details.answer>summary{cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:.55rem;padding:.65rem .9rem;font-weight:600;list-style:none;display:flex}details.trace>summary::-webkit-details-marker,details.answer>summary::-webkit-details-marker{display:none}details.trace>summary:before,details.answer>summary:before{content:"▸";color:var(--accent,var(--muted));font-size:.9rem}details[open].trace>summary:before,details[open].answer>summary:before{content:"▾"}details.trace>summary:hover,details.answer>summary:hover{background:#f6f3ec}details.trace table{margin-top:.7rem;font-size:.82rem}details.trace td:first-child{font-family:var(--mono);color:var(--muted);width:2.5rem}details.trace .op{font-family:var(--mono);white-space:nowrap;font-size:.76rem}details.trace .mono{font-family:var(--mono);font-size:.78rem}:root{--paper:#fbfaf7;--surface:#fff;--ink:#14181f;--ink-soft:#3d4653;--muted:#6b7482;--line:#e3ded3;--line-strong:#cfc7b8;--dfs:#b45309;--dfs-soft:#fdeed6;--dfs-ring:#f59e0b;--bfs:#1d4ed8;--bfs-soft:#dfe8fe;--bfs-ring:#3b82f6;--ok:#157f4b;--warn:#b42318;--font:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius:10px;--wrap:68rem;--prose:40rem}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:5rem}body{background:var(--paper);color:var(--ink);font-family:var(--font);text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.75}h1,h2,h3,h4{letter-spacing:-.015em;margin:2.5rem 0 .75rem;scroll-margin-top:5rem;font-weight:700;line-height:1.25}h1{margin-top:0;font-size:clamp(1.9rem,1.4rem + 2.2vw,2.75rem)}h2{border-bottom:2px solid var(--line);padding-bottom:.4rem;font-size:clamp(1.4rem,1.2rem + 1vw,1.7rem)}h3{font-size:1.2rem}p,ul,ol{margin:0 0 1.1rem}li{margin-bottom:.4rem}li::marker{color:var(--muted)}a{color:var(--bfs);text-underline-offset:2px;text-decoration-thickness:1px}a:hover{color:var(--ink)}strong{font-weight:600}hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}code{font-family:var(--mono);font-variant-ligatures:none;border:1px solid var(--line);background:#f1efe8;border-radius:5px;padding:.08em .34em;font-size:.9em}pre{font-family:var(--mono);font-variant-ligatures:none;border:1px solid var(--line);border-radius:var(--radius);margin:0 0 1.1rem;padding:1rem 1.1rem;font-size:.875rem;line-height:1.65;overflow-x:auto;background:var(--surface)!important}pre code{font-size:inherit;background:0 0;border:0;padding:0}table{border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:100%;margin:0 0 1.4rem;font-size:.95rem;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.6rem .8rem}th{letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft);background:#f6f3ec;font-size:.85rem;font-weight:600}tr:last-child td{border-bottom:0}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:1.25rem}.prose{max-width:var(--prose)}.prose-wide{max-width:52rem}main{padding:2.5rem 0 4rem}.content>p,.content>ul,.content>ol,.content>h2,.content>h3,.content>h4,.content>blockquote{max-width:46rem}.content>table,.bleed{max-width:52rem}[data-algo=dfs]{--accent:var(--dfs);--accent-soft:var(--dfs-soft);--accent-ring:var(--dfs-ring)}[data-algo=bfs]{--accent:var(--bfs);--accent-soft:var(--bfs-soft);--accent-ring:var(--bfs-ring)}html[data-lang=cpp] [data-code=python],html[data-lang=python] [data-code=cpp]{display:none}.langswitch{border:1px solid var(--line-strong);background:#eeeae1;border-radius:999px;gap:2px;padding:2px;display:inline-flex}.langswitch button{font:inherit;font-size:.8rem;font-weight:600;font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.22rem .7rem;line-height:1.5}html[data-lang=cpp] .langswitch button[data-set=cpp],html[data-lang=python] .langswitch button[data-set=python]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0000001a}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}:where(button,a,summary,[tabindex]):focus-visible{outline:2px solid var(--bfs-ring);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.two-up{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.5rem;display:grid}.two-links{flex-wrap:wrap;gap:1.25rem;margin-top:2rem;font-weight:600;display:flex}.skip[data-astro-cid-ju4pidww]{background:var(--surface);z-index:20;padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip[data-astro-cid-ju4pidww]:focus{top:.5rem;left:1rem}header[data-astro-cid-ju4pidww].site{z-index:10;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#fbfaf7eb;position:sticky;top:0}.bar[data-astro-cid-ju4pidww]{flex-wrap:wrap;align-items:center;gap:1rem;min-height:3.75rem;padding-block:.5rem;display:flex}.brand[data-astro-cid-ju4pidww]{color:var(--ink);letter-spacing:-.02em;align-items:center;gap:.55rem;font-weight:700;text-decoration:none;display:flex}.brand-mark[data-astro-cid-ju4pidww]{color:var(--dfs);place-items:center;display:grid}.brand-text[data-astro-cid-ju4pidww]{flex-direction:column;line-height:1.15;display:flex}.brand-text[data-astro-cid-ju4pidww] small[data-astro-cid-ju4pidww]{color:var(--muted);letter-spacing:.04em;font-size:.7rem;font-weight:400}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww]{margin-inline-start:auto}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] ul[data-astro-cid-ju4pidww]{flex-wrap:wrap;gap:.15rem;margin:0;padding:0;list-style:none;display:flex}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] li[data-astro-cid-ju4pidww]{margin:0}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]{color:var(--ink-soft);border-radius:7px;padding:.35rem .65rem;font-size:.92rem;font-weight:500;text-decoration:none;display:block}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]:hover{background:#f0ece3}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww][aria-current=page]{background:var(--ink);color:#fff}.page-head[data-astro-cid-ju4pidww]{margin-bottom:2rem}.lead[data-astro-cid-ju4pidww]{color:var(--ink-soft);margin:0;font-size:1.2rem;line-height:1.6}nav[data-astro-cid-ju4pidww].next{margin-top:3.5rem}nav[data-astro-cid-ju4pidww].next a[data-astro-cid-ju4pidww]{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--ink);border-radius:var(--radius);color:var(--ink);flex-direction:column;gap:.15rem;padding:.9rem 1.1rem;text-decoration:none;display:flex}nav[data-astro-cid-ju4pidww].next a[data-astro-cid-ju4pidww]:hover{border-left-color:var(--bfs)}nav[data-astro-cid-ju4pidww].next span[data-astro-cid-ju4pidww]{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.78rem}footer[data-astro-cid-ju4pidww].site-foot{border-top:1px solid var(--line);color:var(--muted);padding:1.5rem 0 2.5rem;font-size:.9rem}footer[data-astro-cid-ju4pidww].site-foot p[data-astro-cid-ju4pidww]{margin:0}@media (width<=640px){.bar[data-astro-cid-ju4pidww]{min-height:0}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww]{order:3;width:100%;margin-inline-start:0;overflow-x:auto}.bar[data-astro-cid-ju4pidww] nav[data-astro-cid-ju4pidww] ul[data-astro-cid-ju4pidww]{flex-wrap:nowrap}.langswitch[data-astro-cid-ju4pidww]{margin-inline-start:auto}}
