<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>멍멍멍</title>
    <link>https://bowbowbow.tistory.com/</link>
    <description>알고리즘, 프로그래밍에 대한 블로그</description>
    <language>ko</language>
    <pubDate>Sun, 12 Jul 2026 11:53:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>bowbowbow</managingEditor>
    <image>
      <title>멍멍멍</title>
      <url>https://tistory1.daumcdn.net/tistory/1940220/attach/584d5fe6f67f470e82aa4010432dd461</url>
      <link>https://bowbowbow.tistory.com</link>
    </image>
    <item>
      <title>[텐서플로우] 3차원 이상의 텐서 사이의 행렬 곱(tf.matmul)</title>
      <link>https://bowbowbow.tistory.com/27</link>
      <description>&lt;title&gt;3차원 이상의 텐서 사이의 행렬 곱 - 텐서플로우&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;
.note-content  {font-family: &quot;Helvetica Neue&quot;, Arial, &quot;Hiragino Sans GB&quot;, STHeiti, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, Song, sans-serif;}

&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        
                   

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#3차원-이상의-텐서-사이의-행렬-곱-텐서플로우&quot;&gt;목차&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#3차원-텐서-사이의-행렬-곱&quot;&gt;3차원 텐서 사이의 행렬 곱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#어떻게-작동하는걸까&quot;&gt;어떻게 작동하는걸까?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5차원-텐서-사이의-행렬-곱&quot;&gt;5차원 텐서 사이의 행렬 곱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;

&lt;h3 id=&quot;3차원-텐서-사이의-행렬-곱&quot;&gt;3차원 텐서 사이의 행렬 곱&lt;/h3&gt;

&lt;p&gt;텐서플로우를 처음 접하고 텐서플로우 코드를 보다가 아래 예시 코드처럼 3차원 텐서 사이에서 행렬 곱(tf.matmul)을 하는 코드를 만났습니다.  행렬 곱은 2차원에서만 정의되는 줄 알고 있었는데 3차원 텐서에서도 어떻게 행렬 곱(tf.matmul)함수가 사용 가능한 건지 의문이 들었습니다.&lt;/p&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;hljs ini&quot;&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;A&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;B&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;C&lt;/span&gt; = tf.matmul(A, B)
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;p&gt;텐서플로우에서 텐서는 다차원 행렬, 코드상에서는 다차원 배열을 나타냅니다. &lt;strong&gt;1차원 텐서&lt;/strong&gt;는 벡터이고 코드 상에서 [1, 2, 3]과 같은 1차원 배열입니다. &lt;strong&gt;2차원 텐서&lt;/strong&gt;는 우리가 잘 알고 있는 행렬이며 코드상에서 [[1, 2 ,3], [4, 5, 6]]과 같은 2차원 배열입니다. &lt;strong&gt;3차원 텐서&lt;/strong&gt;는 행렬을 여러 층 쌓은 것이고 코드상에서 [[[1, 2] ,[3, 4]], [[4, 5], [6, 7]]]와 같은 3차원 배열입니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;위 코드를 아래와 같이 실행해보니 오류 없이 잘 실행됐고 C의 차원으로 2x2x7을 얻었습니다. &lt;/p&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;hljs gauss&quot;&gt;&lt;div class=&quot;hljs-line&quot;&gt;sess = tf.Session()
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;sess.&lt;span class=&quot;hljs-keyword&quot;&gt;run&lt;/span&gt;(tf.global_variables_initializer())
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;C = sess.&lt;span class=&quot;hljs-keyword&quot;&gt;run&lt;/span&gt;(C)
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;print&lt;/span&gt;(C.shape) &lt;span class=&quot;hljs-meta&quot;&gt;# C의 차원 출력&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;hr&gt;
&lt;h3 id=&quot;어떻게-작동하는걸까&quot;&gt;어떻게 작동하는걸까?&lt;/h3&gt;

&lt;p&gt;행렬 곱은 2차원에서만 정의되는데 어떻게 3차원 텐서에서 행렬 곱(tf.matmul)을 사용할 수 있을까요?&lt;/p&gt;&lt;p&gt;알아보니 두 개의 3차원 텐서 사이의 행렬 곱(tf.matmul)은 단순히 아래 &lt;b&gt;그림1&lt;/b&gt;처럼 2차원 행렬을 여러 층으로 쌓은 3차원 텐서에서 각 층 사이의 2차원 행렬 간의 곱을 리턴합니다.&lt;/p&gt;

&lt;div&gt;&lt;div style=&quot;display: block; margin: auto; text-align: center;&quot; class=&quot;image-wrap&quot; alt=&quot;&quot;&gt;&lt;img longdesc=&quot;./3d tensor matmul.png&quot; alt=&quot;@그림1. 3차원 텐서 사이의 행렬 곱 예시 |center|500x0&quot; title=&quot;&quot; type=&quot;image/png&quot; src=&quot;data:image/png;base64,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&quot; class=&quot;&quot; width=&quot;500&quot;&gt;&lt;p class=&quot;image-caption&quot; style=&quot;text-align: center;&quot;&gt;그림1. 3차원 텐서 사이의 행렬 곱 예시&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;따라서 3차원 텐서 사이의 행렬 곱(tf.matmul)을 이용하면 아래 코드와 같이 2차원 행렬 곱 두 개를 더 간편하게 나타낼 수 있습니다. &lt;/p&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;hljs ini&quot;&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;A0&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;A1&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;wbr&gt;
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;B0&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;B1&lt;/span&gt; = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;wbr&gt;
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;# 2차원 행렬 곱&lt;/span&gt;
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;C0&lt;/span&gt; = tf.matmul(A0, B0)
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;C1&lt;/span&gt; = tf.matmul(A1, B1)
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;wbr&gt;
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;# 3차원 텐서의 행렬 곱으로 나타내면&lt;/span&gt;
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;A&lt;/span&gt; = tf.stack([A0, A1]) # shape: &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;x2x3
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;B&lt;/span&gt; = tf.stack([B0, B1]) # shape: &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;x3x7
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;&lt;span class=&quot;hljs-attr&quot;&gt;C&lt;/span&gt; = tf.matmul(A, B) # shape: &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;x2x7
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;텐서플로우를 돌릴 때 보통 N개의 입력으로 구성된 배치(Batch)를 만들어서 런합니다. 이 때  N개의 행렬을 곱하는 상황이 빈번한데 이를 한 줄로 간편하게 하기 위해 3차원 텐서 사이의 행렬 곱 함수(tf.matmul)가 이렇게 작동하는 것입니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3 id=&quot;5차원-텐서-사이의-행렬-곱&quot;&gt;5차원 텐서 사이의 행렬 곱&lt;/h3&gt;

&lt;p&gt;그러면 아래와 같이 5차원 텐서 사이의 행렬 곱(tf.matmul)도 작동할까요?&lt;/p&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;hljs lsl&quot;&gt;&lt;div class=&quot;hljs-line&quot;&gt;A = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;B = tf.Variable(tf.random_normal([&lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;hljs-number&quot;&gt;7&lt;/span&gt;]))
&lt;/div&gt;&lt;div class=&quot;hljs-line&quot;&gt;C = tf.matmul(A, B)
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;가능합니다! 위 코드를 아래와 같이 실행해보면 오류 없이 잘 실행되고 C의 차원으로 5x4x10x2x7을 얻었습니다. &lt;/p&gt;&lt;p&gt;이를 통해 3차원 이상의 텐서 사이의 행렬 곱은 행렬의 차원을 나타내는 마지막 두 개의 차원(2x3, 3x7) 사이에 행렬 곱이 가능하고 행렬 앞에 있는 차원(5x4x10)이 같으면 가능한 것을 알 수 있습니다.&lt;/p&gt;&lt;/div&gt;</description>
      <category>텐서플로우</category>
      <category>tensor</category>
      <category>TensorFlow</category>
      <category>텐서플로우</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/27</guid>
      <comments>https://bowbowbow.tistory.com/27#entry27comment</comments>
      <pubDate>Sun, 24 Mar 2019 16:04:18 +0900</pubDate>
    </item>
    <item>
      <title>[자료구조]Union-Find: Disjoint Set의 표현</title>
      <link>https://bowbowbow.tistory.com/26</link>
      <description>&lt;title&gt;Union-Find 란?&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;

.note-content  {font-family: &quot;Helvetica Neue&quot;, Arial, &quot;Hiragino Sans GB&quot;, STHeiti, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-7136&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#union-find-란&quot;&gt;Union-Find 란?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#union-find-의-구현&quot;&gt;Union-Find 의 구현&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#배열로-표현하기&quot;&gt;배열로 표현하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#트리로-표현하기&quot;&gt;트리로 표현하기&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#트리로-표현하기-실제-소스코드&quot;&gt;트리로 표현하기 : 실제 소스코드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#최적화-하기&quot;&gt;최적화 하기&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#최적화-하기-실제-소스코드&quot;&gt;최적화 하기 : 실제 소스코드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#union-find-정리&quot;&gt;Union-Find 정리&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#끝&quot;&gt;끝&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;union-find-란&quot;&gt;Union-Find 란?&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Union-Find&lt;/code&gt; 란 &lt;code&gt;Disjoint Set&lt;/code&gt; 을 표현할 때 사용하는 독특한 형태의 자료구조로, &lt;/p&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6006&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;공통 원소가 없는, 즉 &lt;span class=&quot;hljs-string&quot;&gt;&quot;상호 배타적&quot;&lt;/span&gt; 인 부분 집합 들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;입니다. &lt;/p&gt;
&lt;p&gt;위의 상황을 표현하기 위해서는 초기화 과정과 다음과 같은 두 가지 연산을 지원해야 하기 때문에, &lt;code&gt;Union-Find&lt;/code&gt; 자료구조 라고 부르게 되었다고 합니다. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;Union-Find 지원 연산&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;&lt;p&gt;&lt;b&gt;초기화&lt;/b&gt; : N 개의 원소가 각각의 집합에 포함되어 있도록 초기화 합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;Union (합치기) 연산&lt;/b&gt; : 두 원소 a, b 가 주어질 때, 이들이 속한 두 집합을 하나로 합칩니다.&lt;/p&gt;&lt;/li&gt;
&lt;li rel=&quot;3&quot;&gt;&lt;p&gt;&lt;b&gt;Find (찾기) 연산&lt;/b&gt; : 어떤 원소 a 가 주어질 때, 이 원소가 속한 집합을 반환합니다. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;union-find-의-구현&quot;&gt;Union-Find 의 구현&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Union-Find&lt;/code&gt;의 실제 구현은 주로 트리구조를 이용하는데, 왜 배열은 이용하지 않는지, 트리를 사용하였을 때의 장점은 무었인지에 대해 알아보도록 하겠습니다. &lt;/p&gt;

&lt;hr&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6944&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;배열로-표현하기&quot;&gt;배열로 표현하기&lt;/h3&gt;

&lt;p&gt;가장 간단한 방법으로 1차원 배열로 집합을 표현합니다. &lt;/p&gt;
&lt;p&gt;예를 들어&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;40ba48b21333fc590c4cdc75e27a5b22&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-23-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;82.125&quot; height=&quot;17.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 번 원소가 속하는 집합의 번호 &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;라 하면 &lt;/p&gt;
&lt;p&gt;&lt;code&gt;Union-Find 지원 연산&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;&lt;p&gt;&lt;b&gt;초기화&lt;/b&gt; : &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;b03af43f660ee30b7a874f6295f2c9d6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-24-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;89.9375&quot; height=&quot;16.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 와 같이 각자 다른 집합 번호로 초기화 해줍니다. &lt;/p&gt;&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;Union (합치기) 연산&lt;/b&gt; : 두 집합을 합치기 위해 배열의 모든 원소를 순회 하면서 하나의 집합 번호를 나머지 한개의 집합 번호로 교체합니다. 아래의 그림은 &lt;strong&gt;3번 집합을 2번 집합으로 합치는 과정입니다&lt;/strong&gt;. ( &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;e7a2f022962441f2be6dc8e70e837b4a&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-27-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;39.0469&quot; height=&quot;16.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 600px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2375AD4D577C91DE03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2375AD4D577C91DE03&quot; width=&quot;600&quot; height=&quot;100&quot; filename=&quot;2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;

&lt;ol start=&quot;3&quot;&gt;&lt;li rel=&quot;3&quot;&gt;&lt;b&gt;Find (찾기) 연산&lt;/b&gt; : 한 번만에 원소가 속하는 집합 번호를 알 수 있습니다. ( &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;1e2f931ee6c0b8e7a51a7b0d123d514f&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-26-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;34.9688&quot; height=&quot;16.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  )&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;배열로 &lt;code&gt;Union-Find&lt;/code&gt;를 구현 할 수는 있지만, 위에서 보았듯 &lt;strong&gt;Union&lt;/strong&gt; 연산 수행 시 배열의 모든 원소를 순회해야 하기 때문에 시간복잡도가 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;e7a2f022962441f2be6dc8e70e837b4a&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-27-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;39.0469&quot; height=&quot;16.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 이 됩니다. &lt;br /&gt;
  물론 &lt;strong&gt;Find&lt;/strong&gt; 연산은 빠르지만,  &lt;strong&gt;Union&lt;/strong&gt; 연산 수행 횟수가 많기 때문에 우리는 더 빠른 &lt;strong&gt;Union&lt;/strong&gt; 연산을 원합니다.  &lt;br /&gt;
  더 좋은 방법은 없을까요?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-7066&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;트리로-표현하기&quot;&gt;트리로 표현하기&lt;/h3&gt;

&lt;p&gt;바로 &lt;code&gt;트리&lt;/code&gt; 로 &lt;code&gt;Union-Find&lt;/code&gt; 를 구현하면 배열보다 빠르게 &lt;strong&gt;Union&lt;/strong&gt; 연산을 수행할 수 있습니다.  &lt;br /&gt;
세 가지 연산에 대해 알아보기 전에, &lt;strong&gt;트리 구조&lt;/strong&gt;로 표현하기 위해 필요한 기본적인 내용을 먼저 알아 봅시다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base 1&lt;/strong&gt;  &lt;br /&gt;
한 집합에 속하는 원소들을 하나의 트리로 묶어주기 때문에, 자료구조는 아래 그림과 같이 &lt;strong&gt;트리 들의 집합&lt;/strong&gt;으로 표현됩니다. &lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/262E9A4E577C91C90B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F262E9A4E577C91C90B&quot; width=&quot;500&quot; height=&quot;340&quot; filename=&quot;(a).png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base 2&lt;/strong&gt; &lt;br /&gt;
 &lt;strong&gt;트리 구조&lt;/strong&gt; 에는 트리의 대표 노드 라고도 볼 수 있는 &lt;strong&gt;루트 노드&lt;/strong&gt; 가 존재 하므로, 각 원소가 속하는 집합 번호를 바로 이 &lt;strong&gt;루트 노드&lt;/strong&gt;의 원소로 정합니다. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base 3&lt;/strong&gt; &lt;br /&gt;
&lt;strong&gt;Union&lt;/strong&gt; 연산을 수행하기 위해서는 두 원소가 같은 집합에 속하는지를 먼저 확인한 후, 다른 집합에 속할 때만 합쳐야 합니다. &lt;br /&gt;
같은 집합에 속한다는 뜻은, 같은 &lt;strong&gt;루트 노드&lt;/strong&gt;를 가진다는 말과 대응되므로 어떤 원소의 &lt;strong&gt;루트 노드&lt;/strong&gt; 를 찾는 &lt;strong&gt;Find&lt;/strong&gt; 연산을 지원해야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base 4&lt;/strong&gt; &lt;br /&gt;
이러한 &lt;strong&gt;Find&lt;/strong&gt; 연산을 지원하기 위해서 모든 자식 노드가 부모에 대한 포인터 정보를 가지고 있도록 합니다. 이러한 설정은 가진 정보를 바탕으로 포인터를 따라가 결과적으로 최종 부모인 &lt;strong&gt;루트 노드&lt;/strong&gt; 가 무었인지 찾을 수 있게 됩니다. &lt;br /&gt;
단, 부모 노드에서 자식 노드로 내려가는 일은 발생하지 않기 때문에, 부모가 자식에 대한 포인터 정보는 가질 필요가 없습니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;이를 바탕으로 지원해야 하는 연산을 알아봅시다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;br&gt;&lt;/br&gt;
&lt;p&gt;&lt;code&gt;Union-Find 지원 연산&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;&lt;b&gt;초기화&lt;/b&gt; : 모두 각자 다른 집합이 됩니다. 각 노드는 모두 &lt;strong&gt;루트 노드&lt;/strong&gt; 가 되며 N 개의 &lt;strong&gt;루트 노드&lt;/strong&gt;를 생성하고 자기 자신을 가리키는 포인터를 가지도록 설정합니다.&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;Union (합치기) 연산&lt;/b&gt; : 각 트리의 루트를 찾은 뒤, 다르다면 하나를 다른 한쪽의 자손으로 넣어 두 트리를 합칩니다.  &lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2667134C577C91AA22&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2667134C577C91AA22&quot; width=&quot;500&quot; height=&quot;340&quot; filename=&quot;(b).png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li rel=&quot;3&quot;&gt;&lt;p&gt;&lt;b&gt;Find (찾기) 연산&lt;/b&gt; : 각 노드에 저장된 포인터 정보를 따라가 주어진 원소가 포함된 트리의 &lt;strong&gt;루트 노드&lt;/strong&gt;를 찾습니다. ( 트리의 높이와 시간복잡도가 비례&amp;nbsp;)&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/272F7D4B577C918829&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F272F7D4B577C918829&quot; width=&quot;500&quot; height=&quot;340&quot; filename=&quot;(c).png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;이와 같이 &lt;code&gt;Union-Find&lt;/code&gt;를 &lt;strong&gt;트리 구조&lt;/strong&gt;로도 나타내 보았습니다. &lt;strong&gt;Find&lt;/strong&gt; 연산 수행 시 걸리는 시간이 &lt;strong&gt;트리의 높이&lt;/strong&gt; 와 비례하게 되고, &lt;strong&gt;Union&lt;/strong&gt; 연산 수행시간 역시 &lt;strong&gt;Find&lt;/strong&gt; 연산 수행 시간이 지배하게 됩니다.  &lt;br /&gt;
이처럼 &lt;strong&gt;Union&lt;/strong&gt; 연산시간 복잡도가 배열로 나타내었을 때의 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;e7a2f022962441f2be6dc8e70e837b4a&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-27-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;39.0469&quot; height=&quot;16.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;보다 줄어 들었음을 알 수 있습니다. &lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-181&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h4 id=&quot;트리로-표현하기-실제-소스코드&quot;&gt;트리로 표현하기 : 실제 소스코드&lt;/h4&gt;

&lt;script src=&quot;https://gist.github.com/kingmong/e29359b1f073f48b49aad85d83a34e07.js&quot;&gt;&lt;/script&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-7132&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;최적화-하기&quot;&gt;최적화 하기&lt;/h3&gt;

&lt;p&gt;이와 같이 트리로 구현하는 방법에는 큰 문제점이 발생할 수 있습니다. &lt;br /&gt;
바로 &lt;strong&gt;최악의 경우&lt;/strong&gt; 완전히 비대칭 적인 트리, 즉 &lt;strong&gt;연결 리스트&lt;/strong&gt; 형태가 되어버릴 수 있다는 것입니다.  &lt;br /&gt;
예를 들어 두 트리 a 와 b 를  합칠 때, a 의 루트 노드를 항상 b 의 루트 노드의 자식으로 넣는다고 가정한다면, 다음과 같이 &lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 29px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24084348577C922A35&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24084348577C922A35&quot; width=&quot;29&quot; height=&quot;300&quot; filename=&quot;(e).png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;원소의 갯수가 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;f9c4988898e7f532b9f826a75014ed3c&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-22-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;13.9844&quot; height=&quot;12.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAZCAYAAADAHFVeAAAC3ElEQVRIS43WW+ifcxwH8NeckzMxhETZFEot1JYcMqatITeSWdwobFguXKC4s5NDzYXTyJ3NaVPkNBNC0XDhXMpGXGAYLkzvf59Hz56e3/Psc/U83+/3831/Du/P+3mm6bfjcXDP1mf4d4JPszwDe/edmdazuB+ewlk4rrN/O+4bADsCL+EoJOC2fdEHlgOJ7EDcgdtaHu9iHn4ZANwfh2ItLqhzN2DdJLDmrn3wJs5pXb4Qz4+UMttP4yq8hkvx9xjYiXgH01uXr8OV2DkAmCCfwXxcj0dzdgzsinL6HsfW5dsxC58PgKVfySi9OxNf7Q7Y47gWS3B/6/LVuGUALKV+Fq/iMvw+BnY4XsCRRYqHcX4BfIyL8eMEwAdwUwW4tDkzVMbTsKWovKCcV7UuX4wnesAOwvpi4nlFsKljQ2B34y4swwocg004uQDeqIz/6gCegg8r6znYNpZZ5iw1D2VPxyflkL7dXM+/4ZJiaxvvOjxS2YVg/9ukzE6o5v5Z5fi5PGbifRxQ7w9Vedt3ZpivaVN+LLMwKHWPY9jY2F410FGRWEp0Nr6r95DpFZxUlP9ydzJ7EDciJXms05MmkGY5crayXs5AmJp+ZqD/GAOLrm1E2JiB3CU6HIYNLQnL8KY3v6IhVe8c9vXsVLxXvUkWUYyuNZc26xmNl6v0IdW5eKvr1AeWsixHBjPK0WddzYxe3loSFVJd1DfwXbA9SzVCgDF1z0Avqki24h6swZOt9V0C7YJFbF/HHkX5hmV92WVg26X6Fsm4j1RT/l2w1D7fqhDkcvwzoYxZzkfyxZZeZu0HzMbXfX5dsNA8mndnlWUAa2qrUYvmXCgfguwYA8u35+3SvpQoz2N2NDbXEOds+pZAe62dWdgUwY1lxj4dQ6r9zFTD2sEgAza31Dt6dkhdkKyew0dFmCHc/Lp9gG9wIX4ayuxexKH7P7hvgWWAhyzMjY7ma3z10MH/APqJkDVbOYEqAAAAAElFTkSuQmCC&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 일때, 트리의 높이가 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;e35caf405a5e9b4afd75a0d338c4dc12&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-28-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;42.9688&quot; height=&quot;13.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAbCAYAAAANp8NGAAAEYUlEQVRoQ+2aWahWVRTHf6ZZNmgDNhAUDRYk1oNiWdFMs5WmUIFZhqFBZWoP0UTDSzSP9BCNSJENhmkUZJaWSi+iRGWlSFY2QSPNAz9YB3bH79xzOOfTzr20Xj7uOXvvs9Z/773Wf611+/G/1EVgK+CvTpP7dXjo4EEdnv8G/F6iwQBgm4IxfwK/1LWgRfMGAicD+wH3An/ndesE6nnABcBPORA/Aa4GBKdIbgRGAj/mPrZ1ADot3rUIo8qqeGBOAWYCxwHPAmL1RxVQPaUHAJOAS4AhMemH2KFlPaixE3AIMBmYEuO+B+4HHgbWVTahPQP7A0cAlwMnAYNDtbnA+VVBTc15ALg0eXBfLF5m8kHA+zHoSuDusgktfe8VfxAYCnhTz0r0rA3qzcC1yUIfAscDG0pAOBh4F/gcGAOsbyloZWqp+7bASuBnYGFcfefVAnU74CVgFLBj8nV9yl0l2lwWTnw+cHZRlCyzqGXvDeBzgHObXP/9gSXAx+FXR8Rii+IaGIw6icFPJz4emA3c0TJw6qpjoHoKmNAE1IuAR4B7YpErEm2OAd4s0G7P2IzdgMOA9+pa0bJ5XQH1sYji+lB94zvADmHoc8mO5W0/GngDWA6cCnzbMnDqqtMYVE/ZC4C/crLPgGeAc0IjQT4KWNtBw1uAa4CqTKGukVt6XmNQD42I9zIwNgi/AUegM7kJuCFnmRx3QWzEOGDelrZ8M36vMagCdh1wFXB7KLpzUIrD42+TAAH/JjFEXvdWZE2e8DLqtRkx6PrSjUA1d9dnnh7Z0epEPaP5bcnfRvj09OoejPye8DP6CJXKzG0E6r7A28CXwInAVwmI+0QA2iOepe7BR48CFwKzgDu7flb+2wUbgZqdtscDoLwpGXA+tx6Q0aZdIlmQz45uQKVMOm6N1LAbMMqbnwhf32S9RqBmoF0cPDWvyJFxvbMsy/KXHHY4oJ81PbU0ZiGljshzvQEGy26IpTmra25UE6kN6q6AqaWnzRLemg5amAunOfBHgNzUio1BLQO5rgG6ltcA6wfdEEG9HpDqNZHaoArmqjBKSuT17iQTg7dm76ZGrVHXYbLwehPtAf26bqBbYkGnKK2u+o3aoFosMVcvI+67A68kV1Qa5QnzVBwLfFpV0140rhaotgmeDypVhbhbqZqRA8X5Fhw2aTH0IvCKVK0FqnTJQOM1OSGKsj1hcSCwGDCwpG7ACn9flFqg2gKxiGJp7zTg1wrImCSYAChuhrXXDyrM641DbKs8GX0p9S8tUnv1zdkl+08nE8uMPxN4MQa5GdYHioJb2Vptf2+F7tXoZKirDMWsc5PDJzH2+k6PXN/BS6PhZyb1dYmlNgU9rboL6655H9t2oKroZ1KzfZRBbS9lIg+XRq6IrvN32QtBteixV25129Mbo7znb09iSio/NepbR+1LIssxZdef7l1gmFze93Zcv3CMoA4rGOx/X9hKKRMzq4fidLsZfU1sK9mf6kn+hdU/l0z8HE3qclwAAAAASUVORK5CYII=&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 인, 트리의 장점을 전혀 살릴 수 없는 &lt;strong&gt;연결 리스트&lt;/strong&gt; 형태가 되고 맙니다. &lt;br /&gt;
이렇게 되면 &lt;strong&gt;Union&lt;/strong&gt; 연산도, &lt;strong&gt;Find&lt;/strong&gt; 연산도 수행시간이 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;e7a2f022962441f2be6dc8e70e837b4a&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-27-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;39.0469&quot; height=&quot;16.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 이 되어버려 배열로 구현했을 때 보다도 효율이 나빠지게 됩니다. &lt;/p&gt;
&lt;p&gt;이 문제는 두 트리를 합칠 때, 항상 &lt;strong&gt;높이가 더 낮은 트리를 높은 트리 밑에 넣음&lt;/strong&gt; 으로써 해결가능 합니다. 이렇게 되면 트리의 높이가 크게 높아지는 상황을 방지 할 수 있습니다. &lt;/p&gt;
&lt;p&gt;이러한 최적화를 &lt;code&gt;union-by-rank&lt;/code&gt; 라 하며, 여기서 &lt;strong&gt;rank&lt;/strong&gt; 는 해당 트리의 높이를 저장합니다. &lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-7097&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h4 id=&quot;최적화-하기-실제-소스코드&quot;&gt;최적화 하기 : 실제 소스코드&lt;/h4&gt;

&lt;script src=&quot;https://gist.github.com/kingmong/546e311722c2402a32a4792b101b3af4.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;위의 코드에서 &lt;strong&gt;경로 압축 최적화 ( path compression )&lt;/strong&gt; 과정도 함께 추가 되었는데, 이를 수행하면 다음 그림과 같습니다. &lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/266D8650577C916C2D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F266D8650577C916C2D&quot; width=&quot;500&quot; height=&quot;280&quot; filename=&quot;(d).png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6851&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;union-find-정리&quot;&gt;Union-Find 정리&lt;/h2&gt;

&lt;p&gt;위의 최적화 과정을 모두 적용한 &lt;code&gt;Disjoint Set&lt;/code&gt; 의 연산 수행시간은 분석하기 아주 어렵습니다. 왜냐하면 &lt;strong&gt;Find&lt;/strong&gt; 연산을 호출 할 때마다 수행시간이 달라지기 때문입니다.  ( 트리의 높이 변화에 의해 )&lt;/p&gt;
&lt;p&gt;참고한 책에 의하면 평균 수행시간은 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;70106555dc0b0a57faff12e381758a6c&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-16-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;59.9531&quot; height=&quot;16.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 로, 여기서 &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;de961efe0282984d893f3de83af41647&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-21-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;35.0469&quot; height=&quot;16.0156&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 은 에커만 함수를 이용해 정의되는 함수&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;로 거의 모든 크기의 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;f9c4988898e7f532b9f826a75014ed3c&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-22-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;span&gt;&lt;img type=&quot;image/png&quot; width=&quot;13.9844&quot; height=&quot;12.9844&quot; longdesc=&quot;__SVG__undefined&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAZCAYAAADAHFVeAAAC3ElEQVRIS43WW+ifcxwH8NeckzMxhETZFEot1JYcMqatITeSWdwobFguXKC4s5NDzYXTyJ3NaVPkNBNC0XDhXMpGXGAYLkzvf59Hz56e3/Psc/U83+/3831/Du/P+3mm6bfjcXDP1mf4d4JPszwDe/edmdazuB+ewlk4rrN/O+4bADsCL+EoJOC2fdEHlgOJ7EDcgdtaHu9iHn4ZANwfh2ItLqhzN2DdJLDmrn3wJs5pXb4Qz4+UMttP4yq8hkvx9xjYiXgH01uXr8OV2DkAmCCfwXxcj0dzdgzsinL6HsfW5dsxC58PgKVfySi9OxNf7Q7Y47gWS3B/6/LVuGUALKV+Fq/iMvw+BnY4XsCRRYqHcX4BfIyL8eMEwAdwUwW4tDkzVMbTsKWovKCcV7UuX4wnesAOwvpi4nlFsKljQ2B34y4swwocg004uQDeqIz/6gCegg8r6znYNpZZ5iw1D2VPxyflkL7dXM+/4ZJiaxvvOjxS2YVg/9ukzE6o5v5Z5fi5PGbifRxQ7w9Vedt3ZpivaVN+LLMwKHWPY9jY2F410FGRWEp0Nr6r95DpFZxUlP9ydzJ7EDciJXms05MmkGY5crayXs5AmJp+ZqD/GAOLrm1E2JiB3CU6HIYNLQnL8KY3v6IhVe8c9vXsVLxXvUkWUYyuNZc26xmNl6v0IdW5eKvr1AeWsixHBjPK0WddzYxe3loSFVJd1DfwXbA9SzVCgDF1z0Avqki24h6swZOt9V0C7YJFbF/HHkX5hmV92WVg26X6Fsm4j1RT/l2w1D7fqhDkcvwzoYxZzkfyxZZeZu0HzMbXfX5dsNA8mndnlWUAa2qrUYvmXCgfguwYA8u35+3SvpQoz2N2NDbXEOds+pZAe62dWdgUwY1lxj4dQ6r9zFTD2sEgAza31Dt6dkhdkKyew0dFmCHc/Lp9gG9wIX4ayuxexKH7P7hvgWWAhyzMjY7ma3z10MH/APqJkDVbOYEqAAAAAElFTkSuQmCC&quot; style=&quot;margin-top:0;margin-bottom:0;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 에 대해 4 이하의 값을 가진다고 합니다. 즉, 현실적인 모든 입력에 대해 상수시간에 동작한다고 봐도 무관 하다고 합니다.&lt;/p&gt;
&lt;p&gt;이처럼 &lt;code&gt;Union-Find&lt;/code&gt; 는 그 자체로 구현이 매우 간단하고 동작 속도가 아주 빠르기 때문에 다른 알고리즘의 일부로 자주 사용됩니다. &lt;/p&gt;
&lt;p&gt;추가적으로 &lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;그래프의 연결성 확인 ( 크루스칼 알고리즘 등 )&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;가장 큰 집합 추적&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;등의 문제에 &lt;code&gt;Union-Find&lt;/code&gt; 를 적용하여 해결해 보시기 바랍니다. &lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6348&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;끝&quot;&gt;끝&lt;/h2&gt;

&lt;p&gt;[알고리즘 문제해결전략 책을 참고해서 작성했습니다]&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>알고리즘</category>
      <category>disjoint set</category>
      <category>find</category>
      <category>path compression</category>
      <category>Union</category>
      <category>union find</category>
      <category>경로 압축</category>
      <category>상호 배타적 집합</category>
      <category>자료구조</category>
      <category>최적화</category>
      <author>알 수 없는 사용자</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/26</guid>
      <comments>https://bowbowbow.tistory.com/26#entry26comment</comments>
      <pubDate>Wed, 6 Jul 2016 14:37:37 +0900</pubDate>
    </item>
    <item>
      <title>삼성 대학생 프로그래밍 대회(SCPC) 2016 1차 예선 풀이</title>
      <link>https://bowbowbow.tistory.com/25</link>
      <description>&lt;title&gt;SCPC 2016 1차 예선 풀이&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: &quot;Helvetica Neue&quot;, Arial, &quot;Hiragino Sans GB&quot;, STHeiti, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-72&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-8163&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;scpc-2016-1차-예선-풀이&quot;&gt;목차&lt;/h1&gt;

&lt;hr&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#scpc-2016-1차-예선-풀이&quot;&gt;SCPC 2016 1차 예선 풀이&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#문제1-3n1&quot;&gt;문제1. 3N+1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#문제2-징검다리&quot;&gt;문제2. 징검다리&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#문제3-바이러스&quot;&gt;문제3. 바이러스&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#문제4-대피소&quot;&gt;문제4. 대피소&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#문제5-구두제작&quot;&gt;문제5. 구두제작&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;

&lt;p&gt;삼성 대학생 프로그래밍 대회(SCPC) 2016 1차 예선에서 제가 푼 방법들입니다.  &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;고수분들의 구현보다 많이 부족하지만 열심히 정리했습니다!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4721&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제1-3n1&quot;&gt;문제1. 3N+1&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;문제 요약&lt;/code&gt; &lt;br /&gt;
짝수는 절반으로 나누고 홀수는 3배하고 1을 더하는 규칙을 K번 적용해서 1을 만들 수 있는 수들 중에서 가장 큰 수와 가장 작은 수를 구하는 문제입니다.&lt;/p&gt;&lt;p&gt;&lt;code&gt;풀이&lt;/code&gt; &lt;br /&gt;
아래 &lt;strong&gt;그림1&lt;/strong&gt;처럼 숫자 1에서 시작해서 규칙을 역으로 K번 적용해서 만들 수 있는 수를 모두 구하고 그 중 가장 큰 수와 가장 작은 수를 선택했습니다. &lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px; width: 700px; height: 314px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2137DB4D5774711E37&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2137DB4D5774711E37&quot; width=&quot;700&quot; height=&quot;314&quot; alt=&quot;그림1&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 700px; height: 314px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 700px; height: 314px;;&quot;&gt;그림1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;구현&lt;/code&gt; &lt;br /&gt;
재귀 함수로 위 과정을 구현했습니다.&amp;nbsp;&lt;span style=&quot;line-height: 24px;&quot;&gt;코드는 주석으로 설명했습니다. &lt;/span&gt;&lt;strong&gt;주의할 점 :&lt;/strong&gt;&amp;nbsp;문제에서 1을 두 배로 만드는 것을 최대 63회해서 &lt;span class=&quot;&quot; rel=&quot;fabdcab467ab8c49804dceb4a6785172&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-43-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAtOTIxLjcxMjU4NjEwNTU4MTUgMTMxOS4xNzc4NDg5OTg0MTMgOTQ5LjcxMjY1MTEzODA3NDUiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI5ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMjQuMDE1NnB4IiBoZWlnaHQ9IjE3cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzYiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NDYgNjg0bDIgLTE2Yy0xNTcgLTI2IC0yNjkgLTEzNCAtMjk2IC0yODVjNDkgMzggODMgNDUgMTI3IDQ1YzExNyAwIDE4OSAtODAgMTg5IC0yMDljMCAtNjQgLTE4IC0xMjAgLTUxIC0xNjBjLTM3IC00NiAtOTMgLTczIC0xNTkgLTczYy03OSAwIC0xNDIgMzcgLTE3NyAxMDFjLTI4IDUxIC00NyAxMjIgLTQ3IDE5MmMwIDEwOCAzOCAyMDMgMTA5IDI3NmM4NiA5MCAxNjUgMTE0IDMwMyAxMjl6TTM3OCAxODggYzAgMTI4IC00MiAxOTQgLTEzNSAxOTRjLTU3IDAgLTExNiAtMjQgLTExNiAtMTE2YzAgLTE1MiA0OCAtMjUyIDE0MiAtMjUyYzcyIDAgMTA5IDcyIDEwOSAxNzRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MSA1MTBsLTE2IDRjMjkgOTUgOTIgMTYyIDE5NiAxNjJjOTMgMCAxNTYgLTU1IDE1NiAtMTM3YzAgLTQ4IC0yNiAtOTggLTkzIC0xMzhjNDQgLTE5IDYyIC0zMSA4MyAtNTNjMjggLTMxIDQ0IC03NyA0NCAtMTI5YzAgLTUzIC0xNyAtMTAyIC00NiAtMTQwYy00OCAtNjQgLTE0MyAtOTMgLTIzMiAtOTNjLTczIDAgLTExMiAyMSAtMTEyIDU3YzAgMjEgMTggMzYgNDEgMzZjMTcgMCAzMyAtNiA2MSAtMjZjMzcgLTI2IDU4IC0zMSA4NiAtMzEgYzc0IDAgMTMwIDY4IDEzMCAxNTNjMCA3NiAtMzUgMTI1IC0xMDQgMTQ1Yy0yMiA3IC00NSAxMCAtMTAyIDEwdjE0YzM4IDEzIDY0IDI0IDg0IDM2YzQ5IDI4IDgxIDczIDgxIDEzNGMwIDY4IC00MiAxMDIgLTEwOCAxMDJjLTYyIDAgLTEwOCAtMzIgLTE0OSAtMTA2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDUsNDEyKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzYiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMyIgeD0iNTA1IiB5PSIwIi8+PC9nPjwvZz48L3N2Zz4=&quot; width=&quot;24.0156&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt; 까지 값이 커질 수 있지만 long long의 표현 범위 최댓값은 &lt;span class=&quot;&quot; rel=&quot;af3dbb58c61c86e0318ec89137d1c481&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-44-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAtOTIxLjcxMjU4NjEwNTU4MTUgMjk1OC42MjIyOTM0NDI4NTc0IDk0OS43MTI2NTExMzgwNzQ1IiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjEyOWV4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjUzLjAzMTJweCIgaGVpZ2h0PSIxN3B4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTM2IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDQ2IDY4NGwyIC0xNmMtMTU3IC0yNiAtMjY5IC0xMzQgLTI5NiAtMjg1YzQ5IDM4IDgzIDQ1IDEyNyA0NWMxMTcgMCAxODkgLTgwIDE4OSAtMjA5YzAgLTY0IC0xOCAtMTIwIC01MSAtMTYwYy0zNyAtNDYgLTkzIC03MyAtMTU5IC03M2MtNzkgMCAtMTQyIDM3IC0xNzcgMTAxYy0yOCA1MSAtNDcgMTIyIC00NyAxOTJjMCAxMDggMzggMjAzIDEwOSAyNzZjODYgOTAgMTY1IDExNCAzMDMgMTI5ek0zNzggMTg4IGMwIDEyOCAtNDIgMTk0IC0xMzUgMTk0Yy01NyAwIC0xMTYgLTI0IC0xMTYgLTExNmMwIC0xNTIgNDggLTI1MiAxNDIgLTI1MmM3MiAwIDEwOSA3MiAxMDkgMTc0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjEgNTEwbC0xNiA0YzI5IDk1IDkyIDE2MiAxOTYgMTYyYzkzIDAgMTU2IC01NSAxNTYgLTEzN2MwIC00OCAtMjYgLTk4IC05MyAtMTM4YzQ0IC0xOSA2MiAtMzEgODMgLTUzYzI4IC0zMSA0NCAtNzcgNDQgLTEyOWMwIC01MyAtMTcgLTEwMiAtNDYgLTE0MGMtNDggLTY0IC0xNDMgLTkzIC0yMzIgLTkzYy03MyAwIC0xMTIgMjEgLTExMiA1N2MwIDIxIDE4IDM2IDQxIDM2YzE3IDAgMzMgLTYgNjEgLTI2YzM3IC0yNiA1OCAtMzEgODYgLTMxIGM3NCAwIDEzMCA2OCAxMzAgMTUzYzAgNzYgLTM1IDEyNSAtMTA0IDE0NWMtMjIgNyAtNDUgMTAgLTEwMiAxMHYxNGMzOCAxMyA2NCAyNCA4NCAzNmM0OSAyOCA4MSA3MyA4MSAxMzRjMCA2OCAtNDIgMTAyIC0xMDggMTAyYy02MiAwIC0xMDggLTMyIC0xNDkgLTEwNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjEyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjIxIDIyMGgtNTU3djY2aDU1N3YtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTA1LDQxMikiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM2Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzMiIHg9IjUwNSIgeT0iMCIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjIxMiIgeD0iMTU0MSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iMjQ1MyIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;53.0312&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt;이기 때문에 unsigned long long 자료형을 사용해야 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/1e626b1f050ac682d80faf08f0d3c623.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6951&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제2-징검다리&quot;&gt;문제2. 징검다리&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;문제 요약&lt;/code&gt; &lt;br /&gt;
징검 다리를 건너는데 1~K 거리 만큼 점프할 수 있습니다. 현재 위치한&amp;nbsp;징검다리에 a거리 만큼 점프해서 들어왔으면 다음에 점프할 때 a거리로 점프하면 안됩니다. 이 때 개울을 건너는 방법의 수를 구하는 문제입니다.&lt;/p&gt;&lt;p&gt;&lt;code&gt;풀이&lt;/code&gt; &lt;br /&gt;
N이 매우 큰데 경우의 수를 구해야해서 dp문제라고 생각했습니다. &lt;strong&gt;dp[i][j]&lt;/strong&gt; : i번째 징검다리로 j 거리 점프에서 진입 했을 때 개울을 건너는 방법의 수로 정의하고 다음과 같이 점화식을 세웠습니다.  &lt;br /&gt;
&lt;/p&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;2d062a71d3e10209389e8a63549282b1&quot;&gt;&lt;div class=&quot;MathJax_SVG_Display&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-59-Frame&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC0xODM0Ljk1MDgxODkxNDI4MTkgMTYwNzUuNDQzMjE2MTIwODUgMzI0MS43MjAwOTM3OTU4NTQiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTMuMzU1ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMjg5LjE3MnB4IiBoZWlnaHQ9IjU4LjAzMTJweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik01MjEgNjgzbDYgLTZsLTM5IC0xNTJsLTYwIC0yMTljLTMxIC0xMTQgLTY1IC0yMzAgLTY1IC0yNDZjMCAtMTIgNSAtMjAgMTggLTIwYzE3IDAgMjggOSA4MiA3MWwxMiAtMTBjLTQ5IC03MyAtOTcgLTExNCAtMTQ3IC0xMTRjLTI2IDAgLTQxIDE4IC00MSA0NWMwIDIzIDIgMzkgMTMgODljLTU5IC05OSAtMTEwIC0xMzIgLTE3OCAtMTMyYy02NSAwIC0xMDcgNDEgLTEwNyAxMTdjMCAxNjIgMTYyIDMzNSAyOTIgMzM1IGM0MiAwIDU5IC0xOSA2NSAtNThoMWw0NSAxNjNjMTUgNTMgMTQgNTcgMTQgNzFjMCAyMSAtOSAyNCAtNjQgMjZ2MTdjNjQgNiAxMDAgMTIgMTUzIDIzek0zNTYgMzYxYzAgMzYgLTI0IDU3IC00NyA1N2MtMjggMCAtNjMgLTE3IC05MSAtNDZjLTY2IC03MCAtMTE2IC0xNzkgLTExNiAtMjYyYzAgLTQ2IDIzIC03MyA1OCAtNzNjOTIgMCAxOTYgMTcyIDE5NiAzMjRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTcwIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjE1IDQyOGwtMjkgLTEwMGM1NCA4MSAxMTEgMTEzIDE3MSAxMTNjNzQgMCAxMTUgLTQ3IDExNSAtMTI1YzAgLTE2NSAtMTUxIC0zMjcgLTI5NyAtMzI3Yy0yMyAwIC00NCA0IC02OSAxN2MtMTcgLTcwIC00MCAtMTUyIC00MCAtMTY2YzAgLTIyIDE1IC0yOSA2MiAtMjl2LTE2aC0yMDN2MTZjNDMgMSA1NiAxNiA2OCA2M2wxMTUgNDMyYzExIDQwIDE2IDY2IDE2IDcxYzAgMjQgLTI4IDI3IC00NCAyN2gtMjJsLTIgMTVsMTU2IDIyIGMzIDAgNSAtMiA1IC00YzAgMCAtMSAtNSAtMiAtOXpNMzgyIDMxM2MwIDU3IC0xNyA4NSAtNjIgODVjLTUzIDAgLTExMiAtNTQgLTEzNSAtMTE0Yy0yOSAtNzUgLTY1IC0yMDQgLTY1IC0yMzhjMCAtMjIgMjAgLTM4IDQ4IC0zOGM1MyAwIDEwMSAzMyAxNDUgOTVjNDggNjcgNjkgMTQwIDY5IDIxMFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi01QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI5OSAtMTU2aC0yMTF2ODE4aDIxMXYtMjVoLTgzYy0zNCAwIC01MiAtMTIgLTUyIC00OHYtNjY2YzAgLTQwIDE5IC01NCA1MiAtNTRoODN2LTI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02OSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI2NCA1OTljMCAtMjggLTIzIC01MSAtNDkgLTUxYy0yOSAwIC00OCAyMSAtNDggNTNjMCAzMSAyMCA1MyA0NyA1M3M1MCAtMjYgNTAgLTU1ek0yMjIgMTE0bDEzIC0xMWMtNTUgLTg0IC04NyAtMTE0IC0xMzcgLTExNGMtMzMgMCAtNDkgMTggLTQ5IDU1YzAgMjAgNyA1NSAyMiAxMTFsNDggMTc3YzUgMTggOSAzNiA5IDQ0YzAgMjAgLTEwIDIzIC02NCAyNHYxNmMzOSAzIDU5IDYgMTYwIDI1bDQgLTNsLTk0IC0zNDMgYy01IC0xNyAtMTAgLTMwIC0xMCAtNDRjMCAtMTAgNiAtMTUgMTQgLTE1YzE3IDAgNDEgMjEgODQgNzhaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi01RCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI0NSAtMTU2aC0yMTF2MjVoODhjMzUgMCA0NyAxNSA0NyA0NnY2NjhjMCAzNSAtMTMgNTQgLTUxIDU0aC04NHYyNWgyMTF2LTgxOFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCU0laRTEtMjIxMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEyMDIgNDY1bC03NCAtNDE2aC0xMDM4bDU1NyA3MzVsLTUyMSA3MTVoOTc2di0zNTFoLTM2YzAgMTkgLTcgNDUgLTExIDY1Yy0yOCAxMzEgLTk1IDE4MyAtMTYyIDE5MWMtMjggNCAtNzEgNSAtMTA2IDVoLTM3N2w0MTEgLTU2NGwtNDcwIC02MTNoNTY4YzEzOSAwIDIwOCA2OSAyNDQgMjMzaDM5WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tM0QiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzcgMzIwaC01ODl2NjZoNTg5di02NnpNNjM3IDEyMGgtNTg5djY2aDU4OXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzAiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yMTUgNDI4bC0yOSAtMTAwYzU0IDgxIDExMSAxMTMgMTcxIDExM2M3NCAwIDExNSAtNDcgMTE1IC0xMjVjMCAtMTY1IC0xNTEgLTMyNyAtMjk3IC0zMjdjLTIzIDAgLTQ0IDQgLTY5IDE3Yy0xNyAtNzAgLTQwIC0xNTIgLTQwIC0xNjZjMCAtMjIgMTUgLTI5IDYyIC0yOXYtMTZoLTIwM3YxNmM0MyAxIDU2IDE2IDY4IDYzbDExNSA0MzJjMTEgNDAgMTYgNjYgMTYgNzFjMCAyNCAtMjggMjcgLTQ0IDI3aC0yMmwtMiAxNWwxNTYgMjIgYzMgMCA1IC0yIDUgLTRjMCAwIC0xIC01IC0yIC05ek0zODIgMzEzYzAgNTcgLTE3IDg1IC02MiA4NWMtNTMgMCAtMTEyIC01NCAtMTM1IC0xMTRjLTI5IC03NSAtNjUgLTIwNCAtNjUgLTIzOGMwIC0yMiAyMCAtMzggNDggLTM4YzUzIDAgMTAxIDMzIDE0NSA5NWM0OCA2NyA2OSAxNDAgNjkgMjEwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTcyMiA2NTN2LTE2Yy0yNSAwIC00OCAtMTUgLTc3IC0zN2wtMjk4IC0yMjVsMTY4IC0yOTNjMzEgLTU0IDQxIC02MCAxMDQgLTY2di0xNmgtMjc1djE2bDI5IDNjMzEgMyA0NiAxNSA0NiAzMmMwIDIxIC0xOSA1MCAtMzcgODJsLTEyMyAyMTVsLTY1IC0yMzdjLTggLTI4IC0xMSAtNDAgLTExIC01MWMwIC0zMSAxNiAtMzkgNzEgLTQ0di0xNmgtMjQ3djE2YzYwIDcgNjYgMTggODEgNzFsMTI0IDQ0NWM3IDI1IDE0IDQ2IDE0IDYyIGMwIDI3IC0xNyA0MCAtNzkgNDN2MTZoMjcwdi0xNmMtNTIgLTQgLTg0IC0xOCAtOTkgLTc0bC01MyAtMTk0bDE1MyAxMDljODkgNjMgMTQzIDExMyAxNDMgMTM3YzAgMTEgLTEyIDE2IC0zNiAxOWwtMjQgM3YxNmgyMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTIxIDY4M2w2IC02bC0zOSAtMTUybC02MCAtMjE5Yy0zMSAtMTE0IC02NSAtMjMwIC02NSAtMjQ2YzAgLTEyIDUgLTIwIDE4IC0yMGMxNyAwIDI4IDkgODIgNzFsMTIgLTEwYy00OSAtNzMgLTk3IC0xMTQgLTE0NyAtMTE0Yy0yNiAwIC00MSAxOCAtNDEgNDVjMCAyMyAyIDM5IDEzIDg5Yy01OSAtOTkgLTExMCAtMTMyIC0xNzggLTEzMmMtNjUgMCAtMTA3IDQxIC0xMDcgMTE3YzAgMTYyIDE2MiAzMzUgMjkyIDMzNSBjNDIgMCA1OSAtMTkgNjUgLTU4aDFsNDUgMTYzYzE1IDUzIDE0IDU3IDE0IDcxYzAgMjEgLTkgMjQgLTY0IDI2djE3YzY0IDYgMTAwIDEyIDE1MyAyM3pNMzU2IDM2MWMwIDM2IC0yNCA1NyAtNDcgNTdjLTI4IDAgLTYzIC0xNyAtOTEgLTQ2Yy02NiAtNzAgLTExNiAtMTc5IC0xMTYgLTI2MmMwIC00NiAyMyAtNzMgNTggLTczYzkyIDAgMTk2IDE3MiAxOTYgMzI0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzAiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yMTUgNDI4bC0yOSAtMTAwYzU0IDgxIDExMSAxMTMgMTcxIDExM2M3NCAwIDExNSAtNDcgMTE1IC0xMjVjMCAtMTY1IC0xNTEgLTMyNyAtMjk3IC0zMjdjLTIzIDAgLTQ0IDQgLTY5IDE3Yy0xNyAtNzAgLTQwIC0xNTIgLTQwIC0xNjZjMCAtMjIgMTUgLTI5IDYyIC0yOXYtMTZoLTIwM3YxNmM0MyAxIDU2IDE2IDY4IDYzbDExNSA0MzJjMTEgNDAgMTYgNjYgMTYgNzFjMCAyNCAtMjggMjcgLTQ0IDI3aC0yMmwtMiAxNWwxNTYgMjIgYzMgMCA1IC0yIDUgLTRjMCAwIC0xIC01IC0yIC05ek0zODIgMzEzYzAgNTcgLTE3IDg1IC02MiA4NWMtNTMgMCAtMTEyIC01NCAtMTM1IC0xMTRjLTI5IC03NSAtNjUgLTIwNCAtNjUgLTIzOGMwIC0yMiAyMCAtMzggNDggLTM4YzUzIDAgMTAxIDMzIDE0NSA5NWM0OCA2NyA2OSAxNDAgNjkgMjEwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjQ1IC0xNTZoLTIxMXYyNWg4OGMzNSAwIDQ3IDE1IDQ3IDQ2djY2OGMwIDM1IC0xMyA1NCAtNTEgNTRoLTg0djI1aDIxMXYtODE4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTIyMTIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MjEgMjIwaC01NTd2NjZoNTU3di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik01MjEgNjgzbDYgLTZsLTM5IC0xNTJsLTYwIC0yMTljLTMxIC0xMTQgLTY1IC0yMzAgLTY1IC0yNDZjMCAtMTIgNSAtMjAgMTggLTIwYzE3IDAgMjggOSA4MiA3MWwxMiAtMTBjLTQ5IC03MyAtOTcgLTExNCAtMTQ3IC0xMTRjLTI2IDAgLTQxIDE4IC00MSA0NWMwIDIzIDIgMzkgMTMgODljLTU5IC05OSAtMTEwIC0xMzIgLTE3OCAtMTMyYy02NSAwIC0xMDcgNDEgLTEwNyAxMTdjMCAxNjIgMTYyIDMzNSAyOTIgMzM1IGM0MiAwIDU5IC0xOSA2NSAtNThoMWw0NSAxNjNjMTUgNTMgMTQgNTcgMTQgNzFjMCAyMSAtOSAyNCAtNjQgMjZ2MTdjNjQgNiAxMDAgMTIgMTUzIDIzek0zNTYgMzYxYzAgMzYgLTI0IDU3IC00NyA1N2MtMjggMCAtNjMgLTE3IC05MSAtNDZjLTY2IC03MCAtMTE2IC0xNzkgLTExNiAtMjYyYzAgLTQ2IDIzIC03MyA1OCAtNzNjOTIgMCAxOTYgMTcyIDE5NiAzMjRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTcwIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjE1IDQyOGwtMjkgLTEwMGM1NCA4MSAxMTEgMTEzIDE3MSAxMTNjNzQgMCAxMTUgLTQ3IDExNSAtMTI1YzAgLTE2NSAtMTUxIC0zMjcgLTI5NyAtMzI3Yy0yMyAwIC00NCA0IC02OSAxN2MtMTcgLTcwIC00MCAtMTUyIC00MCAtMTY2YzAgLTIyIDE1IC0yOSA2MiAtMjl2LTE2aC0yMDN2MTZjNDMgMSA1NiAxNiA2OCA2M2wxMTUgNDMyYzExIDQwIDE2IDY2IDE2IDcxYzAgMjQgLTI4IDI3IC00NCAyN2gtMjJsLTIgMTVsMTU2IDIyIGMzIDAgNSAtMiA1IC00YzAgMCAtMSAtNSAtMiAtOXpNMzgyIDMxM2MwIDU3IC0xNyA4NSAtNjIgODVjLTUzIDAgLTExMiAtNTQgLTEzNSAtMTE0Yy0yOSAtNzUgLTY1IC0yMDQgLTY1IC0yMzhjMCAtMjIgMjAgLTM4IDQ4IC0zOGM1MyAwIDEwMSAzMyAxNDUgOTVjNDggNjcgNjkgMTQwIDY5IDIxMFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi01QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI5OSAtMTU2aC0yMTF2ODE4aDIxMXYtMjVoLTgzYy0zNCAwIC01MiAtMTIgLTUyIC00OHYtNjY2YzAgLTQwIDE5IC01NCA1MiAtNTRoODN2LTI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02OSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI2NCA1OTljMCAtMjggLTIzIC01MSAtNDkgLTUxYy0yOSAwIC00OCAyMSAtNDggNTNjMCAzMSAyMCA1MyA0NyA1M3M1MCAtMjYgNTAgLTU1ek0yMjIgMTE0bDEzIC0xMWMtNTUgLTg0IC04NyAtMTE0IC0xMzcgLTExNGMtMzMgMCAtNDkgMTggLTQ5IDU1YzAgMjAgNyA1NSAyMiAxMTFsNDggMTc3YzUgMTggOSAzNiA5IDQ0YzAgMjAgLTEwIDIzIC02NCAyNHYxNmMzOSAzIDU5IDYgMTYwIDI1bDQgLTNsLTk0IC0zNDMgYy01IC0xNyAtMTAgLTMwIC0xMCAtNDRjMCAtMTAgNiAtMTUgMTQgLTE1YzE3IDAgNDEgMjEgODQgNzhaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzYgMjIwaC0yNjF2LTI2MWgtNjZ2MjYxaC0yNjF2NjZoMjYxdjI2MWg2NnYtMjYxaDI2MXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi01RCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI0NSAtMTU2aC0yMTF2MjVoODhjMzUgMCA0NyAxNSA0NyA0NnY2NjhjMCAzNSAtMTMgNTQgLTUxIDU0aC04NHYyNWgyMTF2LTgxOFoiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02NCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNzAiIHg9IjUzMiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi01QiIgeD0iMTA0MSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiIHg9IjEzNzkiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjE2NjIiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiIHg9IjIwMDAiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIiB4PSIyMzM4IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVEIiB4PSIyNjIyIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTNEIiB4PSIzMjM3IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDIwNSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJTSVpFMS0yMjExIiB4PSIzMiIgeT0iLTUyNCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LC0xMTM3KSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjUwOSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSIxMTk5IiB5PSIwIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMTI0OCkiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTNEIiB4PSI1MDkiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNEIiIHg9IjExOTkiIHk9IjAiLz48L2c+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjQiIHg9IjU3MzQiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIiB4PSI2MjY2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVCIiB4PSI2Nzc1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iNzExMyIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iNzYxOCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNzAiIHg9Ijg1MzAiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjkwMzkiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiIHg9IjkzNzciIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIiB4PSI5NzE1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVEIiB4PSIxMDIyNCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjEyIiB4PSIxMDc4NCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjQiIHg9IjExNjk2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MCIgeD0iMTIyMjgiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiIHg9IjEyNzM3IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iMTMwNzUiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjEzNTgxIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIgeD0iMTQ0OTMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjE0Nzc3IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVCIiB4PSIxNTExNSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiIHg9IjE1NDUzIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVEIiB4PSIxNTczNyIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;289.172&quot; height=&quot;58.0312&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;01e13c61c5c5d86e6e959ebc19fc4e7b&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-60-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MTEuMDAwMDY1MDMyNDkzIDQzNzguNDQ0NDQ0NDQ0NDQ0IDk0Ni4wMDAxMzAwNjQ5ODYiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNjQ1ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iNzkuMDQ2OXB4IiBoZWlnaHQ9IjE3cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTIxIDY4M2w2IC02bC0zOSAtMTUybC02MCAtMjE5Yy0zMSAtMTE0IC02NSAtMjMwIC02NSAtMjQ2YzAgLTEyIDUgLTIwIDE4IC0yMGMxNyAwIDI4IDkgODIgNzFsMTIgLTEwYy00OSAtNzMgLTk3IC0xMTQgLTE0NyAtMTE0Yy0yNiAwIC00MSAxOCAtNDEgNDVjMCAyMyAyIDM5IDEzIDg5Yy01OSAtOTkgLTExMCAtMTMyIC0xNzggLTEzMmMtNjUgMCAtMTA3IDQxIC0xMDcgMTE3YzAgMTYyIDE2MiAzMzUgMjkyIDMzNSBjNDIgMCA1OSAtMTkgNjUgLTU4aDFsNDUgMTYzYzE1IDUzIDE0IDU3IDE0IDcxYzAgMjEgLTkgMjQgLTY0IDI2djE3YzY0IDYgMTAwIDEyIDE1MyAyM3pNMzU2IDM2MWMwIDM2IC0yNCA1NyAtNDcgNTdjLTI4IDAgLTYzIC0xNyAtOTEgLTQ2Yy02NiAtNzAgLTExNiAtMTc5IC0xMTYgLTI2MmMwIC00NiAyMyAtNzMgNTggLTczYzkyIDAgMTk2IDE3MiAxOTYgMzI0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI3OSA1OThjMCAtMjcgLTI0IC01MCAtNTAgLTUwYy0zMCAwIC01NCAyMSAtNTQgNTJjMCAzMCAyNSA1MiA1MyA1MmMyNyAwIDUxIC0yNiA1MSAtNTR6TTI0NiA0MzhsLTEwNCAtNDEwYy00MSAtMTYyIC0xMDAgLTIzNSAtMTg3IC0yMzVjLTQ2IDAgLTc5IDI1IC03OSA2MWMwIDI0IDE4IDQ0IDQxIDQ0YzI3IDAgMzkgLTE2IDM5IC0zN2MwIC0yMiAtMTIgLTE5IC0xMiAtMzRjMCAtNyA2IC0xMiAxOCAtMTJjNDAgMCA2MyA0NCA5NyAxODIgbDcyIDI5MmMxMiA0OSAxNiA3MCAxNiA4MGMwIDIyIC0xMiAzMSAtNDggMzFoLTI2djE2YzMyIDIgODUgMTAgMTY5IDI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjQ1IC0xNTZoLTIxMXYyNWg4OGMzNSAwIDQ3IDE1IDQ3IDQ2djY2OGMwIDM1IC0xMyA1NCAtNTEgNTRoLTg0djI1aDIxMXYtODE4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjk5IC0xNTZoLTIxMXY4MThoMjExdi0yNWgtODNjLTM0IDAgLTUyIC0xMiAtNTIgLTQ4di02NjZjMCAtNDAgMTkgLTU0IDUyIC01NGg4M3YtMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjQiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIiB4PSI1MzIiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiIHg9IjEwNDEiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5IiB4PSIxMzc5IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSIxODg0IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIgeD0iMjc5NiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi01RCIgeD0iMzA4MCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi01QiIgeD0iMzQxOCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiIHg9IjM3NTYiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjQwNDAiIHk9IjAiLz48L2c+PC9zdmc+&quot; width=&quot;79.0469&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt; 를 빼는 이유는 현재 징검다리에 j 거리 만큼 점프해서 진입했기 때문에 문제의 조건에 따라  다음에 j 거리 만큼 점프하면 안되서 그 경우의 수를 빼준 것입니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;주의할 점)&lt;/strong&gt; 이 점화식 그대로 반복문을 작성하면 만점을 받지 못합니다. 그대로 반복문으로 구현하면 아래와 같은 3중 for문이 작성되는데 &lt;/p&gt;
  
  &lt;p&gt;&lt;strong&gt;첫번째&lt;/strong&gt; for문 : 50000번 반복 (징검 다리 수 N : 50000) &lt;br /&gt;
  &lt;strong&gt;두번째&lt;/strong&gt; for문 : 100번 반복 (점프거리 K : 100) &lt;br /&gt;
  &lt;strong&gt;세번째&lt;/strong&gt; for문 : 100번 반복 (시그마 계산)&lt;/p&gt;
  
  &lt;p&gt;연산횟수가 50000*100*100회로 너무 많기 때문입니다. &lt;/p&gt;
  
  &lt;p&gt;여기서 시그마 계산은 각 (i, j) 에 대해 처음 한 번만 하도록 하고 다음 부터는 이용하는 방식으로 고쳐서 2중 for문으로 줄일 수 있습니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;구현&lt;/code&gt; &lt;br /&gt;
위 점화식을 그대로 반복문으로 구현하되 시그마는 한 번만 계산하도록&amp;nbsp;했습니다. 코드는 주석으로 설명했습니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;코드에서 &lt;strong&gt;주의할 점&lt;/strong&gt;은 숫자가 엄청나게 커져서 &lt;strong&gt;MOD&lt;/strong&gt;(1000000009)로 계속 나머지 연산을 하게 하기 때문에 점화식에서 합(&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;701faab1919622902654667c29ef116f&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-61-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05ODQuNzUzNTY2MDcxNTI0MyA3Mzc1Ljk5ODc3MTY3NjQwMyAxNDczLjg2NTY3NDE2MTMwNTgiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTEuMTY0ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTMyLjM1OXB4IiBoZWlnaHQ9IjI2LjA2MjVweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCT1BFUkFUT1JTLTIyMTEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04NTYgNDBsLTUzIC0yOTloLTc0NWwzOTIgNTEwbC0zNjcgNTEyaDc0N3YtMjUxaC0zMGMtMjEgMTM1IC01OSAxODUgLTE5MiAxODVoLTMyMGwyOTAgLTM5MWwtMzM2IC00MzRoNDE0YzExMiAwIDE0OCA2OCAxNzAgMTY4aDMwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tM0QiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzcgMzIwaC01ODl2NjZoNTg5di02NnpNNjM3IDEyMGgtNTg5djY2aDU4OXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTRCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNzIyIDY1M3YtMTZjLTI1IDAgLTQ4IC0xNSAtNzcgLTM3bC0yOTggLTIyNWwxNjggLTI5M2MzMSAtNTQgNDEgLTYwIDEwNCAtNjZ2LTE2aC0yNzV2MTZsMjkgM2MzMSAzIDQ2IDE1IDQ2IDMyYzAgMjEgLTE5IDUwIC0zNyA4MmwtMTIzIDIxNWwtNjUgLTIzN2MtOCAtMjggLTExIC00MCAtMTEgLTUxYzAgLTMxIDE2IC0zOSA3MSAtNDR2LTE2aC0yNDd2MTZjNjAgNyA2NiAxOCA4MSA3MWwxMjQgNDQ1YzcgMjUgMTQgNDYgMTQgNjIgYzAgMjcgLTE3IDQwIC03OSA0M3YxNmgyNzB2LTE2Yy01MiAtNCAtODQgLTE4IC05OSAtNzRsLTUzIC0xOTRsMTUzIDEwOWM4OSA2MyAxNDMgMTEzIDE0MyAxMzdjMCAxMSAtMTIgMTYgLTM2IDE5bC0yNCAzdjE2aDIyMVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzAiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yMTUgNDI4bC0yOSAtMTAwYzU0IDgxIDExMSAxMTMgMTcxIDExM2M3NCAwIDExNSAtNDcgMTE1IC0xMjVjMCAtMTY1IC0xNTEgLTMyNyAtMjk3IC0zMjdjLTIzIDAgLTQ0IDQgLTY5IDE3Yy0xNyAtNzAgLTQwIC0xNTIgLTQwIC0xNjZjMCAtMjIgMTUgLTI5IDYyIC0yOXYtMTZoLTIwM3YxNmM0MyAxIDU2IDE2IDY4IDYzbDExNSA0MzJjMTEgNDAgMTYgNjYgMTYgNzFjMCAyNCAtMjggMjcgLTQ0IDI3aC0yMmwtMiAxNWwxNTYgMjIgYzMgMCA1IC0yIDUgLTRjMCAwIC0xIC01IC0yIC05ek0zODIgMzEzYzAgNTcgLTE3IDg1IC02MiA4NWMtNTMgMCAtMTEyIC01NCAtMTM1IC0xMTRjLTI5IC03NSAtNjUgLTIwNCAtNjUgLTIzOGMwIC0yMiAyMCAtMzggNDggLTM4YzUzIDAgMTAxIDMzIDE0NSA5NWM0OCA2NyA2OSAxNDAgNjkgMjEwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTIxIDY4M2w2IC02bC0zOSAtMTUybC02MCAtMjE5Yy0zMSAtMTE0IC02NSAtMjMwIC02NSAtMjQ2YzAgLTEyIDUgLTIwIDE4IC0yMGMxNyAwIDI4IDkgODIgNzFsMTIgLTEwYy00OSAtNzMgLTk3IC0xMTQgLTE0NyAtMTE0Yy0yNiAwIC00MSAxOCAtNDEgNDVjMCAyMyAyIDM5IDEzIDg5Yy01OSAtOTkgLTExMCAtMTMyIC0xNzggLTEzMmMtNjUgMCAtMTA3IDQxIC0xMDcgMTE3YzAgMTYyIDE2MiAzMzUgMjkyIDMzNSBjNDIgMCA1OSAtMTkgNjUgLTU4aDFsNDUgMTYzYzE1IDUzIDE0IDU3IDE0IDcxYzAgMjEgLTkgMjQgLTY0IDI2djE3YzY0IDYgMTAwIDEyIDE1MyAyM3pNMzU2IDM2MWMwIDM2IC0yNCA1NyAtNDcgNTdjLTI4IDAgLTYzIC0xNyAtOTEgLTQ2Yy02NiAtNzAgLTExNiAtMTc5IC0xMTYgLTI2MmMwIC00NiAyMyAtNzMgNTggLTczYzkyIDAgMTk2IDE3MiAxOTYgMzI0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTIxNSA0MjhsLTI5IC0xMDBjNTQgODEgMTExIDExMyAxNzEgMTEzYzc0IDAgMTE1IC00NyAxMTUgLTEyNWMwIC0xNjUgLTE1MSAtMzI3IC0yOTcgLTMyN2MtMjMgMCAtNDQgNCAtNjkgMTdjLTE3IC03MCAtNDAgLTE1MiAtNDAgLTE2NmMwIC0yMiAxNSAtMjkgNjIgLTI5di0xNmgtMjAzdjE2YzQzIDEgNTYgMTYgNjggNjNsMTE1IDQzMmMxMSA0MCAxNiA2NiAxNiA3MWMwIDI0IC0yOCAyNyAtNDQgMjdoLTIybC0yIDE1bDE1NiAyMiBjMyAwIDUgLTIgNSAtNGMwIDAgLTEgLTUgLTIgLTl6TTM4MiAzMTNjMCA1NyAtMTcgODUgLTYyIDg1Yy01MyAwIC0xMTIgLTU0IC0xMzUgLTExNGMtMjkgLTc1IC02NSAtMjA0IC02NSAtMjM4YzAgLTIyIDIwIC0zOCA0OCAtMzhjNTMgMCAxMDEgMzMgMTQ1IDk1YzQ4IDY3IDY5IDE0MCA2OSAyMTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzAiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yMTUgNDI4bC0yOSAtMTAwYzU0IDgxIDExMSAxMTMgMTcxIDExM2M3NCAwIDExNSAtNDcgMTE1IC0xMjVjMCAtMTY1IC0xNTEgLTMyNyAtMjk3IC0zMjdjLTIzIDAgLTQ0IDQgLTY5IDE3Yy0xNyAtNzAgLTQwIC0xNTIgLTQwIC0xNjZjMCAtMjIgMTUgLTI5IDYyIC0yOXYtMTZoLTIwM3YxNmM0MyAxIDU2IDE2IDY4IDYzbDExNSA0MzJjMTEgNDAgMTYgNjYgMTYgNzFjMCAyNCAtMjggMjcgLTQ0IDI3aC0yMmwtMiAxNWwxNTYgMjIgYzMgMCA1IC0yIDUgLTRjMCAwIC0xIC01IC0yIC05ek0zODIgMzEzYzAgNTcgLTE3IDg1IC02MiA4NWMtNTMgMCAtMTEyIC01NCAtMTM1IC0xMTRjLTI5IC03NSAtNjUgLTIwNCAtNjUgLTIzOGMwIC0yMiAyMCAtMzggNDggLTM4YzUzIDAgMTAxIDMzIDE0NSA5NWM0OCA2NyA2OSAxNDAgNjkgMjEwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjQ1IC0xNTZoLTIxMXYyNWg4OGMzNSAwIDQ3IDE1IDQ3IDQ2djY2OGMwIDM1IC0xMyA1NCAtNTEgNTRoLTg0djI1aDIxMXYtODE4WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk9QRVJBVE9SUy0yMjExIiB4PSIwIiB5PSItMiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkxOSw0OTcpIj48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNzAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iNTA5IiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTRCIiB4PSIxMTk5IiB5PSIwIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkxOSwtMzIwKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjUwOSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSIxMTk5IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjQiIHg9IjI1NDciIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIiB4PSIzMDc5IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVCIiB4PSIzNTg4IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iMzkyNiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iNDQzMSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNzAiIHg9IjUzNDMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjU4NTIiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiIHg9IjYxOTAiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTcwIiB4PSI2NTI4IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVEIiB4PSI3MDM3IiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;132.359&quot; height=&quot;26.0625&quot;&gt;)이&lt;/span&gt;&lt;/span&gt;&amp;nbsp;dp[i+j][j] 보다 작은 경우가 발생하여&amp;nbsp;값이 음수가 될 수도 있습니다. 따라서 dp[i][j] = (sum+&lt;strong&gt;MOD&lt;/strong&gt;-dp[i+j][j])%MOD; 와 같이 연산하도록 합니다.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/98714b1e2771b79bdb58148e6b0fb2b7.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;hr&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-11121&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제3-바이러스&quot;&gt;문제3. 바이러스&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;문제 요약&lt;/code&gt; &lt;br /&gt;
문제의 설명이 복잡한데 간단하게 정리하면 주어진 그래프에서 모든 정점이 차수 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;ef08af67e8440d9fcf5e9214cf4f26cc&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-94-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MTEuMDAwMDY1MDMyNDkzIDQzOTMuMTExMjE5MDc1NzkzIDk0NS4wMDAxMzAwNjQ5ODYiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNjQ1ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iNzkuMDQ2OXB4IiBoZWlnaHQ9IjE3cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTIxIDY4M2w2IC02bC0zOSAtMTUybC02MCAtMjE5Yy0zMSAtMTE0IC02NSAtMjMwIC02NSAtMjQ2YzAgLTEyIDUgLTIwIDE4IC0yMGMxNyAwIDI4IDkgODIgNzFsMTIgLTEwYy00OSAtNzMgLTk3IC0xMTQgLTE0NyAtMTE0Yy0yNiAwIC00MSAxOCAtNDEgNDVjMCAyMyAyIDM5IDEzIDg5Yy01OSAtOTkgLTExMCAtMTMyIC0xNzggLTEzMmMtNjUgMCAtMTA3IDQxIC0xMDcgMTE3YzAgMTYyIDE2MiAzMzUgMjkyIDMzNSBjNDIgMCA1OSAtMTkgNjUgLTU4aDFsNDUgMTYzYzE1IDUzIDE0IDU3IDE0IDcxYzAgMjEgLTkgMjQgLTY0IDI2djE3YzY0IDYgMTAwIDEyIDE1MyAyM3pNMzU2IDM2MWMwIDM2IC0yNCA1NyAtNDcgNTdjLTI4IDAgLTYzIC0xNyAtOTEgLTQ2Yy02NiAtNzAgLTExNiAtMTc5IC0xMTYgLTI2MmMwIC00NiAyMyAtNzMgNTggLTczYzkyIDAgMTk2IDE3MiAxOTYgMzI0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM1OCAxMDlsMTIgLTEyYy01NyAtNzAgLTEyMSAtMTA4IC0yMDQgLTEwOGMtODEgMCAtMTM1IDU0IC0xMzUgMTM3YzAgMTU1IDE0OSAzMTUgMjk5IDMxNWM1MyAwIDgyIC0yNiA4MiAtNjhjMCAtODYgLTEwNSAtMTY0IC0yODQgLTE4N2MtMTAgLTIwIC0xMCAtNDYgLTEwIC02MWMwIC01NSAzNyAtOTEgOTMgLTkxYzQ0IDAgNzUgMTYgMTQ3IDc1ek0xNTIgMjUybC0xNyAtNDRjODYgMjEgMTI0IDM5IDE2MSA3NGMzMSAzMCA1MCA2NiA1MCA5NyBjMCAyNCAtNyAzOSAtMzUgMzljLTU3IDAgLTEyNSAtNzcgLTE1OSAtMTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3MSAzNjZoLTQ5YzkgLTE4IDkgLTM0IDkgLTUxYzAgLTg0IC05MiAtMTY0IC0xODUgLTE2NGMtMTEgMCAtMjIgMSAtMzEgM2MtMyAxIC01IDEgLTcgMWMtMTcgMCAtMzYgLTIwIC0zNiAtNDFjMCAtMTggMjcgLTMxIDcxIC00MmM5NiAtMjMgMTQyIC02NyAxNDIgLTEyN2MwIC04NyAtNzcgLTE1MSAtMjEwIC0xNTFjLTEwMiAwIC0xNjcgMzYgLTE2NyAxMDhjMCA1MSAxOSA3OCAxMTcgMTM3Yy0xOCAxMSAtMjcgMjYgLTI3IDM5IGMwIDI5IDIzIDU5IDc3IDg0Yy01NiAyMCAtNzkgNTYgLTc5IDEwOGMwIDEwMiAxMDAgMTcxIDIwMSAxNzFjMzggMCA3MSAtOSA5OCAtMjhjOCAtNiAxMyAtOCAxNiAtOGg2MHYtMzl6TTM1MiAzNDhjMCA1MyAtMTkgNzEgLTU2IDcxYy02MiAwIC0xMjIgLTczIC0xMjIgLTE3MmMwIC00NyAyMiAtNzUgNjAgLTc1YzM0IDAgNjEgMTggODUgNTljMjAgMzQgMzMgNzUgMzMgMTE3ek0zMjUgLTkwYzAgNDYgLTM2IDc0IC0xNDMgMTA3IGMtMTMgNCAtMjMgNyAtMzQgMTFjLTkgMCAtNTEgLTM0IC02NSAtNTJjLTE1IC0xOSAtMjAgLTM1IC0yMCAtNThjMCAtNzAgNDcgLTEwMiAxMjcgLTEwMmM4MSAwIDEzNSA0MyAxMzUgOTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTcyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTc2IDIyM2wxNiAzNWMxOSA0MiA1MyA5NSA5NCAxMzhjMjYgMjcgNTYgNDUgNzkgNDVjMjggMCA0NyAtMjEgNDcgLTUxcy0xNyAtNTQgLTQ3IC01NGMtMTggMCAtMjYgMTEgLTM1IDI2Yy02IDEwIC05IDE0IC0xNiAxNGMtMTggMCAtNDYgLTMzIC04MiAtOTRjLTQzIC03NCAtNjEgLTExNCAtMTExIC0yODJoLTc2bDgxIDI5MmMxNCA1MiAxNiA2MSAxNiA4MnMtMTggMjYgLTM4IDI2Yy04IDAgLTE2IC0xIC0zMSAtM3YxN2wxNTUgMjdsMyAtMiBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzU4IDEwOWwxMiAtMTJjLTU3IC03MCAtMTIxIC0xMDggLTIwNCAtMTA4Yy04MSAwIC0xMzUgNTQgLTEzNSAxMzdjMCAxNTUgMTQ5IDMxNSAyOTkgMzE1YzUzIDAgODIgLTI2IDgyIC02OGMwIC04NiAtMTA1IC0xNjQgLTI4NCAtMTg3Yy0xMCAtMjAgLTEwIC00NiAtMTAgLTYxYzAgLTU1IDM3IC05MSA5MyAtOTFjNDQgMCA3NSAxNiAxNDcgNzV6TTE1MiAyNTJsLTE3IC00NGM4NiAyMSAxMjQgMzkgMTYxIDc0YzMxIDMwIDUwIDY2IDUwIDk3IGMwIDI0IC03IDM5IC0zNSAzOWMtNTcgMCAtMTI1IC03NyAtMTU5IC0xNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzU4IDEwOWwxMiAtMTJjLTU3IC03MCAtMTIxIC0xMDggLTIwNCAtMTA4Yy04MSAwIC0xMzUgNTQgLTEzNSAxMzdjMCAxNTUgMTQ5IDMxNSAyOTkgMzE1YzUzIDAgODIgLTI2IDgyIC02OGMwIC04NiAtMTA1IC0xNjQgLTI4NCAtMTg3Yy0xMCAtMjAgLTEwIC00NiAtMTAgLTYxYzAgLTU1IDM3IC05MSA5MyAtOTFjNDQgMCA3NSAxNiAxNDcgNzV6TTE1MiAyNTJsLTE3IC00NGM4NiAyMSAxMjQgMzkgMTYxIDc0YzMxIDMwIDUwIDY2IDUwIDk3IGMwIDI0IC03IDM5IC0zNSAzOWMtNTcgMCAtMTI1IC03NyAtMTU5IC0xNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zMDQgLTE2MWwtMTIgLTE2Yy0xNTggOTAgLTI0NCAyNTkgLTI0NCA0MjljMCAxODUgODcgMzI5IDI0NyA0MjRsOSAtMTZjLTEzOSAtMTE5IC0xNzAgLTIxMiAtMTcwIC00MDVjMCAtMTg2IDMwIC0yOTkgMTcwIC00MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTU2IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjg4IDY1M3YtMTZjLTIzIC0xIC0zOSAtMTMgLTU2IC00MGwtMzczIC02MTVoLTE5bC04MiA1MDNjLTIzIDE0MCAtMjYgMTQ1IC04MiAxNTJ2MTZoMjQwdi0xNmMtNjMgLTcgLTc2IC0xNyAtNzYgLTUxYzAgLTUgMCAtMTAgMSAtMTVsNjUgLTQ0M2wyMTAgMzYwYzMxIDUzIDQ5IDk2IDQ5IDExNXMtMTcgMjkgLTYyIDM0djE2aDE4NVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjkgNjYwbDEyIDE2YzE1MyAtOTIgMjQ0IC0yNTkgMjQ0IC00MjljMCAtMTg1IC04OCAtMzI3IC0yNDcgLTQyNGwtOSAxNmMxNDIgMTE3IDE3MCAyMTEgMTcwIDQwNWMwIDE4NyAtMjUgMzAyIC0xNzAgNDE2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY0Ii8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02NSIgeD0iNTMyIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02NyIgeD0iOTgxIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MiIgeD0iMTQ4NiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjUiIHg9IjE5MDMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY1IiB4PSIyMzUyIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSIyODAxIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzEzOSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS01NiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iODcxIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iNDA1NSIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;79.0469&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt;가 조건&amp;nbsp;&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;77f9fac7f8b9acb49235e221ab0b3d5c&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-85-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MTEuMDAwMDY1MDMyNDkzIDEyMDUyLjExMTIxOTA3NTc5NCA5NDUuMDAwMTMwMDY0OTg2IiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjY0NWV4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjIxNy4xMjVweCIgaGVpZ2h0PSIxN3B4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTcyMiA2NTN2LTE2Yy0yNSAwIC00OCAtMTUgLTc3IC0zN2wtMjk4IC0yMjVsMTY4IC0yOTNjMzEgLTU0IDQxIC02MCAxMDQgLTY2di0xNmgtMjc1djE2bDI5IDNjMzEgMyA0NiAxNSA0NiAzMmMwIDIxIC0xOSA1MCAtMzcgODJsLTEyMyAyMTVsLTY1IC0yMzdjLTggLTI4IC0xMSAtNDAgLTExIC01MWMwIC0zMSAxNiAtMzkgNzEgLTQ0di0xNmgtMjQ3djE2YzYwIDcgNjYgMTggODEgNzFsMTI0IDQ0NWM3IDI1IDE0IDQ2IDE0IDYyIGMwIDI3IC0xNyA0MCAtNzkgNDN2MTZoMjcwdi0xNmMtNTIgLTQgLTg0IC0xOCAtOTkgLTc0bC01MyAtMTk0bDE1MyAxMDljODkgNjMgMTQzIDExMyAxNDMgMTM3YzAgMTEgLTEyIDE2IC0zNiAxOWwtMjQgM3YxNmgyMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjI2NCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYyOSA1MWwtNTY1IDI3M3YxMGw1NjUgMjc1di02NWwtNDMyIC0yMTVsNDMyIC0yMTV2LTYzek02MjkgLTEwM2gtNTY1djY2aDU2NXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTIxIDY4M2w2IC02bC0zOSAtMTUybC02MCAtMjE5Yy0zMSAtMTE0IC02NSAtMjMwIC02NSAtMjQ2YzAgLTEyIDUgLTIwIDE4IC0yMGMxNyAwIDI4IDkgODIgNzFsMTIgLTEwYy00OSAtNzMgLTk3IC0xMTQgLTE0NyAtMTE0Yy0yNiAwIC00MSAxOCAtNDEgNDVjMCAyMyAyIDM5IDEzIDg5Yy01OSAtOTkgLTExMCAtMTMyIC0xNzggLTEzMmMtNjUgMCAtMTA3IDQxIC0xMDcgMTE3YzAgMTYyIDE2MiAzMzUgMjkyIDMzNSBjNDIgMCA1OSAtMTkgNjUgLTU4aDFsNDUgMTYzYzE1IDUzIDE0IDU3IDE0IDcxYzAgMjEgLTkgMjQgLTY0IDI2djE3YzY0IDYgMTAwIDEyIDE1MyAyM3pNMzU2IDM2MWMwIDM2IC0yNCA1NyAtNDcgNTdjLTI4IDAgLTYzIC0xNyAtOTEgLTQ2Yy02NiAtNzAgLTExNiAtMTc5IC0xMTYgLTI2MmMwIC00NiAyMyAtNzMgNTggLTczYzkyIDAgMTk2IDE3MiAxOTYgMzI0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM1OCAxMDlsMTIgLTEyYy01NyAtNzAgLTEyMSAtMTA4IC0yMDQgLTEwOGMtODEgMCAtMTM1IDU0IC0xMzUgMTM3YzAgMTU1IDE0OSAzMTUgMjk5IDMxNWM1MyAwIDgyIC0yNiA4MiAtNjhjMCAtODYgLTEwNSAtMTY0IC0yODQgLTE4N2MtMTAgLTIwIC0xMCAtNDYgLTEwIC02MWMwIC01NSAzNyAtOTEgOTMgLTkxYzQ0IDAgNzUgMTYgMTQ3IDc1ek0xNTIgMjUybC0xNyAtNDRjODYgMjEgMTI0IDM5IDE2MSA3NGMzMSAzMCA1MCA2NiA1MCA5NyBjMCAyNCAtNyAzOSAtMzUgMzljLTU3IDAgLTEyNSAtNzcgLTE1OSAtMTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3MSAzNjZoLTQ5YzkgLTE4IDkgLTM0IDkgLTUxYzAgLTg0IC05MiAtMTY0IC0xODUgLTE2NGMtMTEgMCAtMjIgMSAtMzEgM2MtMyAxIC01IDEgLTcgMWMtMTcgMCAtMzYgLTIwIC0zNiAtNDFjMCAtMTggMjcgLTMxIDcxIC00MmM5NiAtMjMgMTQyIC02NyAxNDIgLTEyN2MwIC04NyAtNzcgLTE1MSAtMjEwIC0xNTFjLTEwMiAwIC0xNjcgMzYgLTE2NyAxMDhjMCA1MSAxOSA3OCAxMTcgMTM3Yy0xOCAxMSAtMjcgMjYgLTI3IDM5IGMwIDI5IDIzIDU5IDc3IDg0Yy01NiAyMCAtNzkgNTYgLTc5IDEwOGMwIDEwMiAxMDAgMTcxIDIwMSAxNzFjMzggMCA3MSAtOSA5OCAtMjhjOCAtNiAxMyAtOCAxNiAtOGg2MHYtMzl6TTM1MiAzNDhjMCA1MyAtMTkgNzEgLTU2IDcxYy02MiAwIC0xMjIgLTczIC0xMjIgLTE3MmMwIC00NyAyMiAtNzUgNjAgLTc1YzM0IDAgNjEgMTggODUgNTljMjAgMzQgMzMgNzUgMzMgMTE3ek0zMjUgLTkwYzAgNDYgLTM2IDc0IC0xNDMgMTA3IGMtMTMgNCAtMjMgNyAtMzQgMTFjLTkgMCAtNTEgLTM0IC02NSAtNTJjLTE1IC0xOSAtMjAgLTM1IC0yMCAtNThjMCAtNzAgNDcgLTEwMiAxMjcgLTEwMmM4MSAwIDEzNSA0MyAxMzUgOTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTcyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTc2IDIyM2wxNiAzNWMxOSA0MiA1MyA5NSA5NCAxMzhjMjYgMjcgNTYgNDUgNzkgNDVjMjggMCA0NyAtMjEgNDcgLTUxcy0xNyAtNTQgLTQ3IC01NGMtMTggMCAtMjYgMTEgLTM1IDI2Yy02IDEwIC05IDE0IC0xNiAxNGMtMTggMCAtNDYgLTMzIC04MiAtOTRjLTQzIC03NCAtNjEgLTExNCAtMTExIC0yODJoLTc2bDgxIDI5MmMxNCA1MiAxNiA2MSAxNiA4MnMtMTggMjYgLTM4IDI2Yy04IDAgLTE2IC0xIC0zMSAtM3YxN2wxNTUgMjdsMyAtMiBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzU4IDEwOWwxMiAtMTJjLTU3IC03MCAtMTIxIC0xMDggLTIwNCAtMTA4Yy04MSAwIC0xMzUgNTQgLTEzNSAxMzdjMCAxNTUgMTQ5IDMxNSAyOTkgMzE1YzUzIDAgODIgLTI2IDgyIC02OGMwIC04NiAtMTA1IC0xNjQgLTI4NCAtMTg3Yy0xMCAtMjAgLTEwIC00NiAtMTAgLTYxYzAgLTU1IDM3IC05MSA5MyAtOTFjNDQgMCA3NSAxNiAxNDcgNzV6TTE1MiAyNTJsLTE3IC00NGM4NiAyMSAxMjQgMzkgMTYxIDc0YzMxIDMwIDUwIDY2IDUwIDk3IGMwIDI0IC03IDM5IC0zNSAzOWMtNTcgMCAtMTI1IC03NyAtMTU5IC0xNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzU4IDEwOWwxMiAtMTJjLTU3IC03MCAtMTIxIC0xMDggLTIwNCAtMTA4Yy04MSAwIC0xMzUgNTQgLTEzNSAxMzdjMCAxNTUgMTQ5IDMxNSAyOTkgMzE1YzUzIDAgODIgLTI2IDgyIC02OGMwIC04NiAtMTA1IC0xNjQgLTI4NCAtMTg3Yy0xMCAtMjAgLTEwIC00NiAtMTAgLTYxYzAgLTU1IDM3IC05MSA5MyAtOTFjNDQgMCA3NSAxNiAxNDcgNzV6TTE1MiAyNTJsLTE3IC00NGM4NiAyMSAxMjQgMzkgMTYxIDc0YzMxIDMwIDUwIDY2IDUwIDk3IGMwIDI0IC03IDM5IC0zNSAzOWMtNTcgMCAtMTI1IC03NyAtMTU5IC0xNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zMDQgLTE2MWwtMTIgLTE2Yy0xNTggOTAgLTI0NCAyNTkgLTI0NCA0MjljMCAxODUgODcgMzI5IDI0NyA0MjRsOSAtMTZjLTEzOSAtMTE5IC0xNzAgLTIxMiAtMTcwIC00MDVjMCAtMTg2IDMwIC0yOTkgMTcwIC00MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTU2IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjg4IDY1M3YtMTZjLTIzIC0xIC0zOSAtMTMgLTU2IC00MGwtMzczIC02MTVoLTE5bC04MiA1MDNjLTIzIDE0MCAtMjYgMTQ1IC04MiAxNTJ2MTZoMjQwdi0xNmMtNjMgLTcgLTc2IC0xNyAtNzYgLTUxYzAgLTUgMCAtMTAgMSAtMTVsNjUgLTQ0M2wyMTAgMzYwYzMxIDUzIDQ5IDk2IDQ5IDExNXMtMTcgMjkgLTYyIDM0djE2aDE4NVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjkgNjYwbDEyIDE2YzE1MyAtOTIgMjQ0IC0yNTkgMjQ0IC00MjljMCAtMTg1IC04OCAtMzI3IC0yNDcgLTQyNGwtOSAxNmMxNDIgMTE3IDE3MCAyMTEgMTcwIDQwNWMwIDE4NyAtMjUgMzAyIC0xNzAgNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTIyNjQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MjkgNTFsLTU2NSAyNzN2MTBsNTY1IDI3NXYtNjVsLTQzMiAtMjE1bDQzMiAtMjE1di02M3pNNjI5IC0xMDNoLTU2NXY2Nmg1NjV2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTdDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTMzIC0xNGgtNjZ2NjkwaDY2di02OTBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTU2IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjg4IDY1M3YtMTZjLTIzIC0xIC0zOSAtMTMgLTU2IC00MGwtMzczIC02MTVoLTE5bC04MiA1MDNjLTIzIDE0MCAtMjYgMTQ1IC04MiAxNTJ2MTZoMjQwdi0xNmMtNjMgLTcgLTc2IC0xNyAtNzYgLTUxYzAgLTUgMCAtMTAgMSAtMTVsNjUgLTQ0M2wyMTAgMzYwYzMxIDUzIDQ5IDk2IDQ5IDExNXMtMTcgMjkgLTYyIDM0djE2aDE4NVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi03QyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEzMyAtMTRoLTY2djY5MGg2NnYtNjkwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTIyMTIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MjEgMjIwaC01NTd2NjZoNTU3di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNEMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik01NTkgMTgwbC01OCAtMTgwaC01MDl2MTZjNTYgNiA2NCAxNSA4MiA3OGwxMjIgNDM4YzggMjcgMTEgNDcgMTEgNjJjMCAyOSAtMTUgMzkgLTc3IDQzdjE2aDI3M3YtMTZjLTYwIC00IC04NSAtMjAgLTEwMSAtNzdsLTEyMCAtNDI5Yy02IC0yMyAtMTAgLTQwIC0xMCAtNTRjMCAtMzEgMjMgLTQxIDEwNSAtNDFjMTAwIDAgMTMxIDUgMTgwIDM4YzMyIDIxIDU0IDU0IDgyIDExMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjEyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjIxIDIyMGgtNTU3djY2aDU1N3YtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00QiIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjY0IiB4PSIxMDA0IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02NCIgeD0iMTk3MiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjUiIHg9IjI1MDQiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY3IiB4PSIyOTUzIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MiIgeD0iMzQ1OCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjUiIHg9IjM4NzUiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY1IiB4PSI0MzI0IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSI0NzczIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTExMSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS01NiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iODcxIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iNjAyNyIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjY0IiB4PSI2NjQzIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTdDIiB4PSI3NjExIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS01NiIgeD0iNzgxNiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi03QyIgeD0iODUwOSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjEyIiB4PSI4OTM2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00QyIgeD0iOTg0OCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjEyIiB4PSIxMDYzNCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iMTE1NDciIHk9IjAiLz48L2c+PC9zdmc+&quot; width=&quot;217.125&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt;, ( &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;4716870f3f422e3e30698c2aa13917a6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-90-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MDQuMDAwMDY1MDMyNDkzIDExMDMgNzUwLjAwMDEzMDA2NDk4NiIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC4xMjlleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyMC4wMTU2cHgiIGhlaWdodD0iMTRweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi03QyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEzMyAtMTRoLTY2djY5MGg2NnYtNjkwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS01NiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OCA2NTN2LTE2Yy0yMyAtMSAtMzkgLTEzIC01NiAtNDBsLTM3MyAtNjE1aC0xOWwtODIgNTAzYy0yMyAxNDAgLTI2IDE0NSAtODIgMTUydjE2aDI0MHYtMTZjLTYzIC03IC03NiAtMTcgLTc2IC01MWMwIC01IDAgLTEwIDEgLTE1bDY1IC00NDNsMjEwIDM2MGMzMSA1MyA0OSA5NiA0OSAxMTVzLTE3IDI5IC02MiAzNHYxNmgxODVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tN0MiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xMzMgLTE0aC02NnY2OTBoNjZ2LTY5MFoiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTdDIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS01NiIgeD0iMjA1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTdDIiB4PSI4OTgiIHk9IjAiLz48L2c+PC9zdmc+&quot; width=&quot;20.0156&quot; height=&quot;14&quot;&gt;&lt;/span&gt;&lt;/span&gt;는 정점의 개수 )을 만족하기&amp;nbsp;위해서 최소 몇 개의 정점을 없애야 하는가 입니다.&lt;/p&gt;&lt;p&gt;&lt;code&gt;풀이&lt;/code&gt; &lt;br /&gt;
N이 100이기 때문에 모든 경우의 수를 시도하는 단순 백트래킹으로 구현할 수 없습니다. 따라서 그리디 방식으로 접근했습니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;그리디(Greedy)&lt;/strong&gt; 방식이란 욕심쟁이처럼 지금 상황에서 제일 좋은 것만을 선택하는 것입니다. 다익스트라 최단경로 알고리즘에서 대표적으로 그리디 방식이 사용됩니다. 그러나 대부분의 상황에서 그리디 방식은 눈앞의 이득에 눈이 멀어 미래에 얻게 되는 전체 이득이 최댓값을 갖지 못합니다. 당장 행복하기 위해 매일 사탕을 10개씩 먹는 어린이가 이가 썩어&amp;nbsp;결국 치과에 가서 불행해지는 상황을 예로 들 수 있습니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;그리디 방식으로 풀기 위해 주어진 상황에서 할 수 있는 최선의 행동을 아래처럼 정했습니다.&lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;차수가 K 미만인 정점을 지운다.&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;차수가 |V|-L 이상인 정점을 지운다.&lt;/li&gt;
&lt;li rel=&quot;3&quot;&gt;지울 대상이 여러 개이면 번호가 작은 것을 먼저 지운다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이 행동을 반복하면 놀랍게도 정답을 구할 수 있습니다. 이 그리디 방법의 정당성을 증명하기 위해 이 방법이 눈앞의 이득에 눈이 멀어 미래에 얻게 되는 전체 이득을 놓치지 않는다는 것을 보여야합니다. 즉 이 행동이 미래에 손해를 가져오지 않는다는 것을 보여야합니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;1번 : 정점을 지우는 행동만 할 수 있기 떄문에 미래에 차수가 늘지 않습니다. 따라서 현재 지워야할 정점은 순서에 상관없이 어짜피 나중에 지워야합니다. 그래서 지금 지워도 미래에 손해보지 않습니다.&lt;/p&gt;
  
  &lt;p&gt;2번, 3번 :  차수가 |V|-L 이상인 정점의 경우 연결된 다른 한 정점이 지워져서 차수가 1 낮아져도 전체 정점 수도 1감소해서 기준도 낮아지기 때문에 지워야 할 정점은 지우는 순서에 상관없이 무조건 지워야합니다. 따라서 지금 지워도 미래에 손해보지 않습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;구현&lt;/code&gt; &lt;br /&gt;
위 그리디 규칙을 그대로 코드로 옮겼습니다. 코드는 주석으로 설명했습니다. &lt;/p&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/be490081f5cb8e86b00a4a302fee56cc.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5992&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제4-대피소&quot;&gt;문제4. 대피소&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;문제 요약&lt;/code&gt; &lt;br /&gt;
주어진 그래프에서 각 정점에서 가장 가까운 대피소와의 거리와 번호를 구하는 문제입니다.&lt;/p&gt;&lt;p&gt;&lt;code&gt;풀이&lt;/code&gt; &lt;br /&gt;
정점 10만 개 모두에 대해서 가장 가까운 대피소와의 거리와 번호를 구해야하기 때문에 각 정점을 출발점으로 두고 &lt;strong&gt;다익스트라 최단거리 알고리즘&lt;/strong&gt;을 10만 번 돌리면 답을 구할 수 있습니다.  그러나 이렇게 하면 시간초과가 발생해서 만점을 받지 못합니다. &lt;/p&gt;&lt;p&gt;놀랍게도 다익스트라 알고리즘을 &lt;strong&gt;딱 한번&lt;/strong&gt; 만 돌리고도 정점 10만 개 모두에 대해서 가장 가까운 대피소와의 거리와 번호를 구할 수 있습니다. 방법은 출발 점을 여러 개(모든 대피소)로 설정하고 다익스트라 알고리즘을 수행하는 것입니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;이 문제는 알고리즘 문제 해결전략 책 2권 935p 소방차 문제와 동일한 문제입니다. 잘 이해가 안되면 책을 참고하세요.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;구현&lt;/code&gt; &lt;br /&gt;
출발 점을 여러 개로 두고 다익스트라 알고리즘을 수행하도록 코드를 작성했습니다. 코드는 주석으로 설명했습니다. &lt;/p&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/33b43f90eb2ca0b59a00ad6802646090.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-8371&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제5-구두제작&quot;&gt;문제5. 구두제작&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;문제 요약&lt;/code&gt; &lt;br /&gt;
장인들이 구두를 주어진 조건하에 모두 만들 수 있는지 여부를 판별하는 문제입니다. &lt;/p&gt;&lt;p&gt;각 구두 마다 의뢰 기간(&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;17d9fae3291de599a0e94ea4c29560cd&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-51-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MDYuMDAwMDY1MDMyNDkzIDI0ODYuODg5MTA0ODE4MjUyNyA5NDEuMDAwMTMwMDY0OTg2IiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjY0NWV4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjQ1LjAxNTZweCIgaGVpZ2h0PSIxN3B4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjk5IC0xNTZoLTIxMXY4MThoMjExdi0yNWgtODNjLTM0IDAgLTUyIC0xMiAtNTIgLTQ4di02NjZjMCAtNDAgMTkgLTU0IDUyIC01NGg4M3YtMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYzIDExMWwxMyAtMTFjLTc1IC05MSAtOTkgLTExMCAtMTM5IC0xMTBjLTI4IDAgLTQwIDEyIC00MCA0MWMwIDI1IDIgMzMgMjMgMTE1Yy03NSAtMTEzIC0xMzMgLTE1NyAtMjAzIC0xNTdjLTU2IDAgLTEwMCA0MCAtMTAwIDExNmMwIDE1NSAxNTMgMzM2IDI4NiAzMzZjNDMgMCA3MiAtMjEgODAgLTU4bDExIDQ4bDMgM2w2MSA3bDcgLTNjLTIgLTkgLTMgLTExIC02IC0yMWMtNDcgLTE3MSAtODkgLTM0MyAtODkgLTM2MyBjMCAtNyA2IC0xMyAxNCAtMTNjOSAwIDIyIDggNTIgNDF6TTM2NSAzNjFjMCAzNSAtMjEgNTggLTU2IDU4Yy00NSAwIC04OSAtMzEgLTEzMSAtOTJjLTQyIC02MyAtNzcgLTE1MiAtNzcgLTIxNWMwIC01NSAyNCAtNzQgNjAgLTc0YzUwIDAgOTcgNTUgMTI3IDk4YzQ3IDY4IDc3IDE1NCA3NyAyMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTgzIC0xNDFsLTEwIDE5YzU1IDM3IDgzIDc0IDgzIDEwN2MwIDcgLTYgMTMgLTE0IDEzcy0xOCAtNCAtMjkgLTRjLTM3IDAgLTU4IDE3IC01OCA1MXMyNCA1NyA2MCA1N2M0NSAwIDgwIC0zNSA4MCAtODdjMCAtNjAgLTQzIC0xMjMgLTExMiAtMTU2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQxIDQyOGg5M2MyMiA3MSAzOSAxMjYgNzIgMTczYzMwIDQzIDcxIDc3IDEzMiA3N2M0OSAwIDg2IC0yNiA4NiAtNjJjMCAtMjIgLTE5IC00MyAtNDIgLTQzYy0xOCAwIC0zNyAxNSAtMzcgMzljMCAxNyAxMCAyMiAxMCAzMWMwIDggLTggMTMgLTIyIDEzYy01NiAwIC05MyAtNzAgLTEyMiAtMjI4aDEwN2wtNiAtMzJoLTEwOGwtNzIgLTMyMGMtNDIgLTE4NSAtMTA5IC0yODMgLTIwMCAtMjgzYy00NSAwIC03OSAyNiAtNzkgNjEgYzAgMjMgMTcgNDIgMzggNDJjMjMgMCAzOCAtMTYgMzggLTM3YzAgLTEzIC05IC0xOCAtOSAtMjljMCAtOSA4IC0xNiAyMCAtMTZjNDIgMCA3NCA1NCA5NyAxNjJsODggNDIwaC05MVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTVEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjQ1IC0xNTZoLTIxMXYyNWg4OGMzNSAwIDQ3IDE1IDQ3IDQ2djY2OGMwIDM1IC0xMyA1NCAtNTEgNTRoLTg0djI1aDIxMXYtODE4WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUIiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMzgsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiIHg9IjcxNSIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjExNDQiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTY1LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY2Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5IiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTVEIiB4PSIyMTQ4IiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;45.0156&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt;)과 제작하는데 걸리는 시간(&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;0d19b0a4827a28ecffa01dfedf5f5f2c&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-54-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItNzAgLTQ2OS4wMDAwNjUwMzI0OTMgODc5LjExMTIxOTA3NTc5MyA3MDIuMDAwMTMwMDY0OTg2IiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjY0NWV4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTNweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzAiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yMTUgNDI4bC0yOSAtMTAwYzU0IDgxIDExMSAxMTMgMTcxIDExM2M3NCAwIDExNSAtNDcgMTE1IC0xMjVjMCAtMTY1IC0xNTEgLTMyNyAtMjk3IC0zMjdjLTIzIDAgLTQ0IDQgLTY5IDE3Yy0xNyAtNzAgLTQwIC0xNTIgLTQwIC0xNjZjMCAtMjIgMTUgLTI5IDYyIC0yOXYtMTZoLTIwM3YxNmM0MyAxIDU2IDE2IDY4IDYzbDExNSA0MzJjMTEgNDAgMTYgNjYgMTYgNzFjMCAyNCAtMjggMjcgLTQ0IDI3aC0yMmwtMiAxNWwxNTYgMjIgYzMgMCA1IC0yIDUgLTRjMCAwIC0xIC01IC0yIC05ek0zODIgMzEzYzAgNTcgLTE3IDg1IC02MiA4NWMtNTMgMCAtMTEyIC01NCAtMTM1IC0xMTRjLTI5IC03NSAtNjUgLTIwNCAtNjUgLTIzOGMwIC0yMiAyMCAtMzggNDggLTM4YzUzIDAgMTAxIDMzIDE0NSA5NWM0OCA2NyA2OSAxNDAgNjkgMjEwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02OSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI2NCA1OTljMCAtMjggLTIzIC01MSAtNDkgLTUxYy0yOSAwIC00OCAyMSAtNDggNTNjMCAzMSAyMCA1MyA0NyA1M3M1MCAtMjYgNTAgLTU1ek0yMjIgMTE0bDEzIC0xMWMtNTUgLTg0IC04NyAtMTE0IC0xMzcgLTExNGMtMzMgMCAtNDkgMTggLTQ5IDU1YzAgMjAgNyA1NSAyMiAxMTFsNDggMTc3YzUgMTggOSAzNiA5IDQ0YzAgMjAgLTEwIDIzIC02NCAyNHYxNmMzOSAzIDU5IDYgMTYwIDI1bDQgLTNsLTk0IC0zNDMgYy01IC0xNyAtMTAgLTMwIC0xMCAtNDRjMCAtMTAgNiAtMTUgMTQgLTE1YzE3IDAgNDEgMjEgODQgNzhaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNzAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiIHg9IjcxOSIgeT0iLTIxMyIvPjwvZz48L3N2Zz4=&quot; width=&quot;16&quot; height=&quot;13&quot;&gt;&lt;/span&gt;&lt;/span&gt;)이 주어지고 장인은 의뢰 기간 안에만 해당 구두에 대한 생산 작업을 할 수 있으며 제작 시간 이상만큼 작업해야 구두가 완성됩니다.&lt;/p&gt;&lt;p&gt;또 장인의 근무 시간(&lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;63659c02ce19613b53f5b672c0e94257&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-58-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02OTAuMDAwMDY1MDMyNDkzIDI1NDIuMzAzMzE4MzgwNjI1NiAxMDExLjQ0MjMwMTU4MjQ2NjgiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNzc0ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iNDYuMDE1NnB4IiBoZWlnaHQ9IjE4cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOTkgLTE1NmgtMjExdjgxOGgyMTF2LTI1aC04M2MtMzQgMCAtNTIgLTEyIC01MiAtNDh2LTY2NmMwIC00MCAxOSAtNTQgNTIgLTU0aDgzdi0yNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNzMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zNjYgNDQybC0yMCAtMTQwaC0xNmMtMTAgODMgLTQwIDExNiAtODkgMTE2Yy0zNSAwIC01OSAtMjAgLTU5IC01N2MwIC0yNyAxNSAtNTYgNTQgLTEwMmM1MCAtNTggNjggLTk3IDY4IC0xMzZjMCAtODMgLTYxIC0xMzQgLTE0NCAtMTM0Yy0xNyAwIC0zMiAxIC01NSAxMGMtMTkgOCAtMzMgOSAtNDQgOXMtMjIgLTUgLTI5IC0yMWgtMTZsMjAgMTU5aDE2YzE0IC05NSA0OCAtMTM2IDEwMCAtMTM2YzQ3IDAgNzYgMjggNzYgNzcgYzAgMzIgLTE3IDY2IC01NiAxMTVjLTQzIDU0IC02MyA5OSAtNjMgMTMxYzAgNjYgNDcgMTA4IDEyMSAxMDhjMTcgMCAzMSAtMyA1NiAtMTBjMTkgLTYgMjggLTcgMzYgLTdjMTUgMCAyMiA0IDMwIDE4aDE0WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI3OSA1OThjMCAtMjcgLTI0IC01MCAtNTAgLTUwYy0zMCAwIC01NCAyMSAtNTQgNTJjMCAzMCAyNSA1MiA1MyA1MmMyNyAwIDUxIC0yNiA1MSAtNTR6TTI0NiA0MzhsLTEwNCAtNDEwYy00MSAtMTYyIC0xMDAgLTIzNSAtMTg3IC0yMzVjLTQ2IDAgLTc5IDI1IC03OSA2MWMwIDI0IDE4IDQ0IDQxIDQ0YzI3IDAgMzkgLTE2IDM5IC0zN2MwIC0yMiAtMTIgLTE5IC0xMiAtMzRjMCAtNyA2IC0xMiAxOCAtMTJjNDAgMCA2MyA0NCA5NyAxODIgbDcyIDI5MmMxMiA0OSAxNiA3MCAxNiA4MGMwIDIyIC0xMiAzMSAtNDggMzFoLTI2djE2YzMyIDIgODUgMTAgMTY5IDI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNODMgLTE0MWwtMTAgMTljNTUgMzcgODMgNzQgODMgMTA3YzAgNyAtNiAxMyAtMTQgMTNzLTE4IC00IC0yOSAtNGMtMzcgMCAtNTggMTcgLTU4IDUxczI0IDU3IDYwIDU3YzQ1IDAgODAgLTM1IDgwIC04N2MwIC02MCAtNDMgLTEyMyAtMTEyIC0xNTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzU4IDEwOWwxMiAtMTJjLTU3IC03MCAtMTIxIC0xMDggLTIwNCAtMTA4Yy04MSAwIC0xMzUgNTQgLTEzNSAxMzdjMCAxNTUgMTQ5IDMxNSAyOTkgMzE1YzUzIDAgODIgLTI2IDgyIC02OGMwIC04NiAtMTA1IC0xNjQgLTI4NCAtMTg3Yy0xMCAtMjAgLTEwIC00NiAtMTAgLTYxYzAgLTU1IDM3IC05MSA5MyAtOTFjNDQgMCA3NSAxNiAxNDcgNzV6TTE1MiAyNTJsLTE3IC00NGM4NiAyMSAxMjQgMzkgMTYxIDc0YzMxIDMwIDUwIDY2IDUwIDk3IGMwIDI0IC03IDM5IC0zNSAzOWMtNTcgMCAtMTI1IC03NyAtMTU5IC0xNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tNUQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNDUgLTE1NmgtMjExdjI1aDg4YzM1IDAgNDcgMTUgNDcgNDZ2NjY4YzAgMzUgLTEzIDU0IC01MSA1NGgtODR2MjVoMjExdi04MThaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi01QiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzOCwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MyIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIgeD0iNTU3IiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQyIgeD0iMTAzMiIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0NTQsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjUiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiIHg9IjYzNCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tNUQiIHg9IjIyMDQiIHk9IjAiLz48L2c+PC9zdmc+&quot; width=&quot;46.0156&quot; height=&quot;18&quot;&gt;&lt;/span&gt;&lt;/span&gt;)이 주어지는데 근무 시간 동안만 구두를 만들 수 있으며 한 구두는 한 시간 동안 한 명의 장인만 작업할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;code&gt;풀이&lt;/code&gt; &lt;br /&gt;
여러 조건을 만족하면서 장인을 특정 시간에 구두를 작업하도록 매칭시켜야 하기 때문에 &lt;strong&gt;매칭 문제&lt;/strong&gt;(네트워크 플로우 문제)풀이법으로 접근했습니다. 아래 &lt;strong&gt;그림2&lt;/strong&gt;과 같이 플로우 네트워크를 구성하고 &lt;strong&gt;최대 유량 알고리즘&lt;/strong&gt;을 수행한 뒤 최대 유량이 구두 제작 시간의 합과 같으면 장인들이 구두를 모두 만드는게 가능하다고 판단했습니다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px; width: 700px; height: 611px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24133C36577471C301&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24133C36577471C301&quot; width=&quot;700&quot; height=&quot;611&quot; alt=&quot;그림2&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 700px; height: 611px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 700px; height: 611px;;&quot;&gt;그림2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;(그림2 입력 요약)&lt;/strong&gt; &lt;br /&gt;
  문제의 첫번 째 입력 예시를 플로우 네트워크로 구성한 것입니다. &lt;br /&gt;
  구두 수 N : 3, 장인 수 K : 2 &lt;br /&gt;
  구두1 : 의뢰기간 [0, 4], 제작 시간 3 &lt;br /&gt;
  구두2 : 의뢰기간 [1, 3], 제작 시간 2 &lt;br /&gt;
  구두3 : 의뢰기간 [2, 7], 제작 시간 4 &lt;br /&gt;
  장인1 : 근무시간 [0, 7] &lt;br /&gt;
  장인2 : 근무시간 [2, 4]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;구현&lt;/code&gt; &lt;br /&gt;
위 그림대로 플로우 네트워크를 구성한 뒤 dfs를 이용해서 증가경로를 하나 씩 찾아 최대 유량을 구하는 방법으로 구현했습니다. 코드는 주석으로 설명했습니다. &lt;/p&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/b304102383d08b62dbd1fb92766476d8.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>문제</category>
      <category>SCPC</category>
      <category>삼성 대학생 프로그래밍 대회</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/25</guid>
      <comments>https://bowbowbow.tistory.com/25#entry25comment</comments>
      <pubDate>Thu, 30 Jun 2016 10:11:41 +0900</pubDate>
    </item>
    <item>
      <title>[기하] 다각형의 내부 외부 판별</title>
      <link>https://bowbowbow.tistory.com/24</link>
      <description>&lt;title&gt;[기하]다각형의 내부 외부 판별&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-7&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6603&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;기하다각형의-내부-외부-판별&quot;&gt;목차&lt;/h1&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#기하다각형의-내부-외부-판별&quot;&gt;[기하] 다각형의 내부 외부 판별&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#다각형의-내부-외부-판별이란&quot;&gt;다각형의 내부 외부 판별이란?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#아이디어&quot;&gt;아이디어&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#다각형의-내부에-위치하는-점의-특징은-뭘까&quot;&gt;다각형의 내부에 위치하는 점의 특징은 뭘까?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#구현&quot;&gt;구현&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#어떻게-반-직선과-다각형의-교점-개수를-구하지&quot;&gt;어떻게 반 직선과 다각형의 교점 개수를 구하지?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#소스-코드&quot;&gt;소스 코드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6538&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;다각형의-내부-외부-판별이란&quot;&gt;다각형의 내부 외부 판별이란?&lt;/h2&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 324px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2571064B5747F99928&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2571064B5747F99928&quot; width=&quot;400&quot; height=&quot;324&quot; alt=&quot;그림1&quot; filename=&quot;1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 324px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 324px;;&quot;&gt;그림1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;그림1&lt;/strong&gt;에는 다각형과 두개의 점(점 A, 점 B)가 있습니다. 이 그림에서 눈으로 딱 보고 &lt;strong&gt;점A&lt;/strong&gt; 는 다각형 &lt;code&gt;외부&lt;/code&gt;에 있고 &lt;strong&gt;점B&lt;/strong&gt;는 다각형 &lt;code&gt;내부&lt;/code&gt;에 있다는 것을 쉽게 알 수 있습니다.&lt;/p&gt;&lt;p&gt;이렇게 다각형에 대해 주어진 점이 다각형 내부에 있는지 외부에 있는지 판별하는 것을 &lt;code&gt;다각형의 내부 외부 판별&lt;/code&gt;이라고 합니다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3766&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;아이디어&quot;&gt;아이디어&lt;/h2&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5840&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;다각형의-내부에-위치하는-점의-특징은-뭘까&quot;&gt;다각형의 내부에 위치하는 점의 특징은 뭘까?&lt;/h3&gt;

&lt;p&gt;눈으로 보고 직관적으로 점이 다각형 내부에 있는지 판별하는 것은 아주 쉽습니다. 5살 어린이들한테 이 문제를 내도 다 맞출것이라 생각합니다.&lt;/p&gt;&lt;p&gt;그런데 컴퓨터가 특정 점이 다각형 내부에 있는지 판별하는건 쉬울까요? 우리가 느끼는 직관대로 “점이 선들에 둘러 싸여 있으면 다각형 내부에 있는거야!” 라고 외쳐도 컴퓨터는 알아듣지 못합니다. 컴퓨터가 이해할 수 있는 특징을 파악하고 이를 전달해야합니다.&lt;/p&gt;&lt;p&gt;그 특징은 점의 &lt;code&gt;오른쪽으로 반 직선&lt;/code&gt;을 그었을 때 다각형과 &lt;strong&gt;만나는 점의 개수&lt;/strong&gt;가 &lt;code&gt;홀수 개&lt;/code&gt;이면 &lt;code&gt;내부&lt;/code&gt;에 있는 점이라는 것 입니다. 그럼 짝수 개이면 외부에 있는 점이겠죠? &lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 259px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/26321F495747FA0E27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F26321F495747FA0E27&quot; width=&quot;400&quot; height=&quot;259&quot; alt=&quot;그림2&quot; filename=&quot;2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 259px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 259px;;&quot;&gt;그림2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;그림2&lt;/strong&gt;를 보고 이 특징이 맞는지 실제로 확인해봅시다. &lt;code&gt;다각형 외부&lt;/code&gt;에 있는 &lt;strong&gt;점 A&lt;/strong&gt;는 오른쪽으로 그은 반직선과 다각형과의 교점 개수가 2개 즉 &lt;strong&gt;짝수 개&lt;/strong&gt;입니다. 반대로 &lt;code&gt;다각형 내부&lt;/code&gt;에 있는 &lt;strong&gt;점 B&lt;/strong&gt;는 오른쪽으로 그은 반직선과 다각형과의 교점 개수가 3개 즉 &lt;strong&gt;홀수 개&lt;/strong&gt;입니다. 다각형 내부 어디서 오른쪽으로 반직선을 긋던 정말로 교점의 개수가 홀수개가 되는 것을 확인할 수 있습니다.&lt;/p&gt;&lt;p&gt;이 원칙은 눈으로는 도저히 할 수 없을 만큼 복잡한 꼭지점이 백만 개 다각형에서도 &lt;code&gt;내부 외부를 판별&lt;/code&gt;하는데 적용할 수 있는 강력한 규칙입니다. 이제 컴퓨터한테 이 원칙을 전달해서 내부 외부 판별을 부탁합시다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1840&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;구현&quot;&gt;구현&lt;/h2&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6630&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;어떻게-반-직선과-다각형의-교점-개수를-구하지&quot;&gt;어떻게 반 직선과 다각형의 교점 개수를 구하지?&lt;/h3&gt;

&lt;p&gt;다각형 내부 외부 판별 규칙은 간단하지만 반직선과 다각형의 교점의 개수를 구하는것이 쉽지 않아보입니다.  반직선과 다각형의 선분과의 교차점을 구한 후에 이 교차점이 선분 위에 있는지를 조사하는 방법을 사용해야할까요?&lt;/p&gt;&lt;p&gt;다행히 &lt;code&gt;반직선&lt;/code&gt;은 항상 &lt;strong&gt;x축에 평행한 수평선&lt;/strong&gt;이기 때문에 비교적 간단하게 다각형의 선분과의 교차점을 구할 수 있습니다. &lt;/p&gt;&lt;p&gt;다각형의 모든 선분들에 대해 반직선과 교점이 존재하는지를 검사합니다. &lt;strong&gt;반직선과 선분 사이에 교점이 존재하기 위한 조건&lt;/strong&gt;은 2가지 입니다.&lt;/p&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;점B의 y좌표가 두 선분 꼭지점의 y좌표 사이에 있다.&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;점B를 지나는 수평선과 선분 사이의 교점의 x좌표가 점B의 x좌표보다 크다. &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;조건1을 만족하면 점B를 지나는 수평 직선과 선분사이에 반드시 교점이 존재합니다. 이 때 오른쪽 반직선과의 교점만 세야하므로 조건2를 추가로 만족해야 반직선과 선분 사이의 교점 존재여부를 올바르게 판별할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 291px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/23543F4D5747FA252F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F23543F4D5747FA252F&quot; width=&quot;400&quot; height=&quot;291&quot; alt=&quot;그림3&quot; filename=&quot;3.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 291px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 291px;;&quot;&gt;그림3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;이제 &lt;strong&gt;그림3&lt;/strong&gt;과 같은 다각형이 주어졌을 때 점 B의 반직선과 다각형의 교점을 개수를 찾는 과정을 따라가봅시다. 다각형의 10개의 꼭지점은 p[0], p[1] , … , p[9]으로 주어졌습니다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 291px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2130754E5747FA3808&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2130754E5747FA3808&quot; width=&quot;400&quot; height=&quot;291&quot; alt=&quot;그림4&quot; filename=&quot;4.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 291px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 291px;;&quot;&gt;그림4&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;먼저 &lt;strong&gt;그림4&lt;/strong&gt;처럼 꼭지점 p[0], p[1]을 연결하는 선분과 반직선과의 교차여부를 생각합시다. 점B는 선분 (p[0],p[1])의 y좌표 사이에 있고 교점의 x좌표가 점B보다 크기 때문에 교차한다고 판단할 수 있습니다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 267px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2752734D5747FA4F32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2752734D5747FA4F32&quot; width=&quot;400&quot; height=&quot;267&quot; alt=&quot;그림5&quot; filename=&quot;5.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 267px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 267px;;&quot;&gt;그림5&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;두번째로 &lt;strong&gt;그림5&lt;/strong&gt;처럼 꼭지점 p[9], p[0]을 연결하는 선분과 반직선과의 교차여부를 생각합시다. 점B는 선분 (p[9], p[0])의 y좌표 사이에 있지만 교점의 x좌표가 점B보다 작기 때문에 교차하지 않는다고 판단해야합니다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 289px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2162AA4C5747FA6925&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2162AA4C5747FA6925&quot; width=&quot;400&quot; height=&quot;289&quot; alt=&quot;그림6&quot; filename=&quot;6.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 289px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 289px;;&quot;&gt;그림6&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;세번째로 &lt;strong&gt;그림6&lt;/strong&gt;처럼 꼭지점 p[3], p[4]을 연결하는 선분과 반직선과의 교차여부를 생각합시다. 점B는 선분 (p[3], p[4])의 y좌표 사이에 있지 않기 때문에 바로 교차하지 않는다고 판단합니다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6620&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;소스-코드&quot;&gt;소스 코드&lt;/h3&gt;

&lt;p&gt;이제 위 과정을 코드로 옮겨 봅시다.&lt;/p&gt;&lt;p&gt;먼저 점과 다각형을 담기 위한 구조체와 자료형을 정의합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6533&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* 점을 구조체로 정의 함 */&lt;/span&gt;&lt;br /&gt;strcut vector2{&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;int&lt;/span&gt; x, y;&lt;br /&gt;}&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* STL vector를 이용해서 다각형 자료형을 정의 함 */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;typedef&lt;/span&gt; &lt;span class=&quot;hljs-built_in&quot;&gt;vector&lt;/span&gt;&amp;lt;vector2&amp;gt; polygon;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 점B 가 다각형 p 내부에 있는지를 반환하는 함수 &lt;strong&gt;isInside&lt;/strong&gt;를 정의합니다.&lt;/p&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6699&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;isInside&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(vector2 B, &lt;span class=&quot;hljs-keyword&quot;&gt;const&lt;/span&gt; polygon&amp;amp; p)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span class=&quot;hljs-comment&quot;&gt;//crosses는 점q와 오른쪽 반직선과 다각형과의 교점의 개수&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;int&lt;/span&gt; crosses = &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;for&lt;/span&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;int&lt;/span&gt; i = &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt; ; i &amp;lt; p.size() ; i++){&lt;br /&gt;        &lt;span class=&quot;hljs-keyword&quot;&gt;int&lt;/span&gt; j = (i+&lt;span class=&quot;hljs-number&quot;&gt;1&lt;/span&gt;)%p.size();&lt;br /&gt;        &lt;span class=&quot;hljs-comment&quot;&gt;//점 B가 선분 (p[i], p[j])의 y좌표 사이에 있음&lt;/span&gt;&lt;br /&gt;        &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;((p[i].y &amp;gt; B.y) != (p[j].y &amp;gt; B.y) ){&lt;br /&gt;            &lt;span class=&quot;hljs-comment&quot;&gt;//atX는 점 B를 지나는 수평선과 선분 (p[i], p[j])의 교점&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;hljs-keyword&quot;&gt;double&lt;/span&gt; atX = (p[j].x- p[i].x)*(B.y-p[i].y)/(p[j].y-p[i].y)+p[i].x;&lt;br /&gt;            &lt;span class=&quot;hljs-comment&quot;&gt;//atX가 오른쪽 반직선과의 교점이 맞으면 교점의 개수를 증가시킨다.&lt;/span&gt;&lt;br /&gt;            &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;(B.x &amp;lt; atX)&lt;br /&gt;                crosses++;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;return&lt;/span&gt; crosses % &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt; &amp;gt; &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 isInside 함수를 이용해서 다각형 내부 외부 판별을 할 수 있습니다!&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-6656&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>알고리즘</category>
      <category>기하</category>
      <category>내부</category>
      <category>다각형</category>
      <category>외부</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/24</guid>
      <comments>https://bowbowbow.tistory.com/24#entry24comment</comments>
      <pubDate>Fri, 27 May 2016 16:43:15 +0900</pubDate>
    </item>
    <item>
      <title>[BOJ] 7737 삼각분할 (n각형을 삼각형으로 분할하는 경우의 수)</title>
      <link>https://bowbowbow.tistory.com/23</link>
      <description>&lt;title&gt;삼각분할&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-2475&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-2476&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;삼각분할&quot;&gt;목차&lt;/h1&gt;

&lt;p&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#삼각분할&quot;&gt;삼각분할&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#문제-설명&quot;&gt;문제 설명&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#solution&quot;&gt;Solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code&quot;&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3059&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제-설명&quot;&gt;문제 설명&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;문제&lt;/strong&gt; : &lt;a href=&quot;https://www.acmicpc.net/problem/7737&quot; target=&quot;_blank&quot;&gt;백준온라인저지(BOJ) 7737 삼각분할&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;다각형이 주어졌을 때 삼각형으로 분할 할 수 있는 경우의 수를 구하는 문제다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;5각형은 아래 그림1 처럼 5가지 방법으로 삼각분할 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 550px; width: 550px; height: 375px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2510FF41572D905D3B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2510FF41572D905D3B&quot; width=&quot;550&quot; height=&quot;375&quot; alt=&quot;그림1&quot; filename=&quot;1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 550px; height: 375px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 550px; height: 375px;;&quot;&gt;그림1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;n각형을 삼각 분할하는 경우의 수를 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;1a7ae0d3f594384bef7afa52202e402b&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-187-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02NzkuOTkzNjA5NzgzMzY0NCAxMDE4LjA4ODkyNDQ5OTIwNjUgODYwLjQyMjI0ODQwOTI3MzIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNTQ3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTdweCIgaGVpZ2h0PSIxNXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS01NCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzMyA2NTNsLTQ0IC0xNjRsLTE3IDJjMiAxNyAzIDMzIDMgNDZjMCA1MyAtMzYgODEgLTEwMSA4MWgtNThsLTEzNyAtNDkwYy02IC0yMSAtMTQgLTQ0IC0xNCAtNjZjMCAtMzEgMTIgLTM5IDUzIC00M2wzNSAtM3YtMTZoLTI4OHYxNmM2OSA2IDkyIDIxIDEwNyA3NWwxNDMgNTI3Yy0xNTggMCAtMTkwIC0xNiAtMjM4IC0xMjRsLTE4IDRsNDIgMTU1aDUzMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NjAgMTE3bDE0IC0xM2MtNjggLTkzIC05MyAtMTEzIC0xNDAgLTExM2MtMjUgMCAtNDcgMTYgLTQ3IDU0YzAgMTAgMiAyMyAxNiA3NWw0NCAxNjJjOCAzMSAxNCA2NyAxNCA3OWMwIDE4IC05IDI5IC0yNCAyOWMtNDAgMCAtODUgLTQ5IC0xNDggLTE0MmMtNDUgLTY3IC01MyAtOTAgLTEwMCAtMjQ4aC03NWw5NiAzNTBjMSA1IDIgMTEgMiAxN2MwIDIwIC0xNCAyNiAtNjUgMjd2MTZjODEgMTYgMTA5IDIwIDE2MiAzMWw0IC0ybC02NyAtMjE4IGMxMDAgMTYwIDE2NyAyMjAgMjMxIDIyMGM0MyAwIDY1IC0yNSA2NSAtNjFjMCAtMTggLTQgLTM5IC0xMCAtNjBsLTU2IC0yMDNjLTEwIC0zNiAtMTQgLTUzIC0xNCAtNjFjMCAtOSA0IC0xOCAxNiAtMThjMTQgMCAzMiAxNiA2MSA1M2M3IDggMTQgMTcgMjEgMjZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNTQiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiIHg9Ijc5MyIgeT0iLTIxMyIvPjwvZz48L3N2Zz4=&quot; width=&quot;17&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;이라 할 때 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;85e56b380064ee1d300ec7ec6b4617a3&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-194-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02NzkuOTkzNjA5NzgzMzY0NCA2OTU4LjYyMjI5MzQ0Mjg1OSA4NjMuOTU3NzgyMzE1MjA1OSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC41NDdleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxMTguMDYycHgiIGhlaWdodD0iMTVweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNTQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzMgNjUzbC00NCAtMTY0bC0xNyAyYzIgMTcgMyAzMyAzIDQ2YzAgNTMgLTM2IDgxIC0xMDEgODFoLTU4bC0xMzcgLTQ5MGMtNiAtMjEgLTE0IC00NCAtMTQgLTY2YzAgLTMxIDEyIC0zOSA1MyAtNDNsMzUgLTN2LTE2aC0yODh2MTZjNjkgNiA5MiAyMSAxMDcgNzVsMTQzIDUyN2MtMTU4IDAgLTE5MCAtMTYgLTIzOCAtMTI0bC0xOCA0bDQyIDE1NWg1MzJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MSA1MTBsLTE2IDRjMjkgOTUgOTIgMTYyIDE5NiAxNjJjOTMgMCAxNTYgLTU1IDE1NiAtMTM3YzAgLTQ4IC0yNiAtOTggLTkzIC0xMzhjNDQgLTE5IDYyIC0zMSA4MyAtNTNjMjggLTMxIDQ0IC03NyA0NCAtMTI5YzAgLTUzIC0xNyAtMTAyIC00NiAtMTQwYy00OCAtNjQgLTE0MyAtOTMgLTIzMiAtOTNjLTczIDAgLTExMiAyMSAtMTEyIDU3YzAgMjEgMTggMzYgNDEgMzZjMTcgMCAzMyAtNiA2MSAtMjZjMzcgLTI2IDU4IC0zMSA4NiAtMzEgYzc0IDAgMTMwIDY4IDEzMCAxNTNjMCA3NiAtMzUgMTI1IC0xMDQgMTQ1Yy0yMiA3IC00NSAxMCAtMTAyIDEwdjE0YzM4IDEzIDY0IDI0IDg0IDM2YzQ5IDI4IDgxIDczIDgxIDEzNGMwIDY4IC00MiAxMDIgLTEwOCAxMDJjLTYyIDAgLTEwOCAtMzIgLTE0OSAtMTA2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS01NCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzMyA2NTNsLTQ0IC0xNjRsLTE3IDJjMiAxNyAzIDMzIDMgNDZjMCA1MyAtMzYgODEgLTEwMSA4MWgtNThsLTEzNyAtNDkwYy02IC0yMSAtMTQgLTQ0IC0xNCAtNjZjMCAtMzEgMTIgLTM5IDUzIC00M2wzNSAtM3YtMTZoLTI4OHYxNmM2OSA2IDkyIDIxIDEwNyA3NWwxNDMgNTI3Yy0xNTggMCAtMTkwIC0xNiAtMjM4IC0xMjRsLTE4IDRsNDIgMTU1aDUzMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zNCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3MyAxNjdoLTEwM3YtMTY3aC03OHYxNjdoLTI4MHY2NGwzMTQgNDQ1aDQ0di00NDVoMTAzdi02NHpNMjkyIDIzMXYzNDNsLTI0MCAtMzQzaDI0MFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNTQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzMgNjUzbC00NCAtMTY0bC0xNyAyYzIgMTcgMyAzMyAzIDQ2YzAgNTMgLTM2IDgxIC0xMDEgODFoLTU4bC0xMzcgLTQ5MGMtNiAtMjEgLTE0IC00NCAtMTQgLTY2YzAgLTMxIDEyIC0zOSA1MyAtNDNsMzUgLTN2LTE2aC0yODh2MTZjNjkgNiA5MiAyMSAxMDcgNzVsMTQzIDUyN2MtMTU4IDAgLTE5MCAtMTYgLTIzOCAtMTI0bC0xOCA0bDQyIDE1NWg1MzJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTU0Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzMiIHg9Ijc5MyIgeT0iLTIxMyIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iMTI0MCIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxNTIsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNTQiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zNCIgeD0iNzkzIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iMzE3MCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iMzg2MCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iNDI4MiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iNDcwMyIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iNTEyNSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNTQiIHg9IjU4MTUiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI2NDUzIiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;118.062&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 주어진 값 M으로 나눈 나머지를 출력해야한다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3750&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;solution&quot;&gt;Solution&lt;/h2&gt;

&lt;p&gt;이 문제는 유명한 &lt;strong&gt;카탈란 수 문제&lt;/strong&gt;이다. 왜 뜬금 없이 카탈란 수가 삼각 분할하는데 나왔을까? 추론 과정을 따라가보자.&lt;/p&gt;
&lt;p&gt;아래 그림2 처럼 오각형의 각 변에 2, 3, 4, 5로 숫자를 표시하고 오각형의 대각선으로 추가되는 새로운 변에 나머지 두 변에 적힌 수의 곱을 표시하도록 하자. 여기서부터 직관적으로 n각형을 &lt;code&gt;삼각분할 하는 것&lt;/code&gt;이 n-1개 항의 &lt;code&gt;이항 연산 순서&lt;/code&gt;를 결정하는 경우의 수를 구하는 것과 같은 문제임을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 600px; width: 600px; height: 395px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22475545572D909401&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22475545572D909401&quot; width=&quot;600&quot; height=&quot;395&quot; alt=&quot;그림2&quot; filename=&quot;2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 600px; height: 395px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 600px; height: 395px;;&quot;&gt;그림2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;따라서 이제 삼각분할 문제가 아니라 이항 연산 순서를 결정하는 문제를 풀도록하자.  이항 연산은 이진 트리로 나타낼 수 있다. 5각형 삼각 분할과 대응되는 아래 곱셈 순서를 각각 이진 트리로 나타내보자.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 650px; width: 650px; height: 480px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2466174A572D952C0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2466174A572D952C0E&quot; width=&quot;650&quot; height=&quot;480&quot; alt=&quot;이항 연산을 트리로 나타냄&quot; filename=&quot;3.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 650px; height: 480px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 650px; height: 480px;;&quot;&gt;이항 연산을 트리로 나타냄&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 100%; white-space: nowrap; word-spacing: normal;&quot;&gt;잘 관찰해보면 n개 항을 가지는 &lt;/span&gt;&lt;code style=&quot;word-spacing: normal;&quot;&gt;이항 연산 순서&lt;/code&gt;&lt;span style=&quot;font-size: 100%; white-space: nowrap; word-spacing: normal;&quot;&gt;를 결정하는 경우의 수는 다시 leaf 노트가 n개인 &lt;/span&gt;&lt;code style=&quot;word-spacing: normal;&quot;&gt;이진 트리를 구성&lt;/code&gt;&lt;span style=&quot;font-size: 100%; white-space: nowrap; word-spacing: normal;&quot;&gt;하는 경우의 수와 같음을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3739&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;blockquote&gt;
  &lt;p&gt;자식 노드가 없는 노드를 leaf (잎)노드라고 한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;leaf 노드가 n개인 이진 트리를 구성하는 경우의 수를 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;bf3d4d562192561e15a41a7769787f8f&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-200-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItMyAtNjc5Ljk5MzYwOTc4MzM2NDQgMTA3Ni4wODg5MjQ0OTkyMDY1IDg2MC40MjIyNDg0MDkyNzMyIiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjU0N2V4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMTVweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xMzAgNjUzaDI1MGMxMzkgMCAyMDggLTUxIDIwOCAtMTUwYzAgLTU0IC0yOCAtODkgLTY0IC0xMTNjLTMxIC0yMSAtNjggLTMwIC0xMTEgLTM5di0xYzg2IC0yNiAxMjYgLTc5IDEyNiAtMTUwYzAgLTEzNCAtMTEzIC0yMDAgLTI3NSAtMjAwaC0yNzJ2MTZjNTUgOCA2NiAxOCA4MyA4MGwxMjEgNDM2YzcgMjUgMTEgNDkgMTEgNjRjMCAyOSAtMTQgMzYgLTc3IDQxdjE2ek0yNDggMzYzaDM4YzEzMSAwIDIwMSA1MyAyMDEgMTUyIGMwIDc0IC0zNiAxMDggLTExNyAxMDhjLTM5IDAgLTQ5IDAgLTU5IC0zNnpNMjM4IDMzMWwtMzIgLTExOWMtMjAgLTc2IC0zNSAtMTI3IC0zNSAtMTQwYzAgLTI4IDI1IC00MiA2NyAtNDJjMTE1IDAgMTkzIDU5IDE5MyAxNzBjMCA2MiAtMjkgMTA2IC02NyAxMTljLTIwIDcgLTYzIDEyIC0xMjYgMTJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQyIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PC9zdmc+&quot; width=&quot;18&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;이라 할 때 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;396c6a6b45e8b13fee674cd74b789bb2&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-201-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItMyAtNjc5Ljk5MzYwOTc4MzM2NDQgMTA3Ni4wODg5MjQ0OTkyMDY1IDg1NC4wNTgyODczNzg1OTQzIiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjU0N2V4OyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAxOHB4Ozt6b29tOjE7dHJhbnNmb3JtOnNjYWxlKDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOjAgMCIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMTVweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xMzAgNjUzaDI1MGMxMzkgMCAyMDggLTUxIDIwOCAtMTUwYzAgLTU0IC0yOCAtODkgLTY0IC0xMTNjLTMxIC0yMSAtNjggLTMwIC0xMTEgLTM5di0xYzg2IC0yNiAxMjYgLTc5IDEyNiAtMTUwYzAgLTEzNCAtMTEzIC0yMDAgLTI3NSAtMjAwaC0yNzJ2MTZjNTUgOCA2NiAxOCA4MyA4MGwxMjEgNDM2YzcgMjUgMTEgNDkgMTEgNjRjMCAyOSAtMTQgMzYgLTc3IDQxdjE2ek0yNDggMzYzaDM4YzEzMSAwIDIwMSA1MyAyMDEgMTUyIGMwIDc0IC0zNiAxMDggLTExNyAxMDhjLTM5IDAgLTQ5IDAgLTU5IC0zNnpNMjM4IDMzMWwtMzIgLTExOWMtMjAgLTc2IC0zNSAtMTI3IC0zNSAtMTQwYzAgLTI4IDI1IC00MiA2NyAtNDJjMTE1IDAgMTkzIDU5IDE5MyAxNzBjMCA2MiAtMjkgMTA2IC02NyAxMTljLTIwIDcgLTYzIDEyIC0xMjYgMTJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzMgMTY3aC0xMDN2LTE2N2gtNzh2MTY3aC0yODB2NjRsMzE0IDQ0NWg0NHYtNDQ1aDEwM3YtNjR6TTI5MiAyMzF2MzQzbC0yNDAgLTM0M2gyNDBaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zNCIgeD0iODcxIiB5PSItMjEzIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;18&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;는 다음과 같은 식으로 나타낼 수 있다. &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;f82b011dc9b9d55a401ba86b466760e2&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-202-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItMyAtNzAyLjk5MzYwOTc4MzM2NDQgMTY0NjAuNDAwMjQ5MjcyMjMgOTA2Ljk4NzIxOTU2NjcyODgiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNTQ3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMjgwLjE1NnB4IiBoZWlnaHQ9IjE1cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTQyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTMwIDY1M2gyNTBjMTM5IDAgMjA4IC01MSAyMDggLTE1MGMwIC01NCAtMjggLTg5IC02NCAtMTEzYy0zMSAtMjEgLTY4IC0zMCAtMTExIC0zOXYtMWM4NiAtMjYgMTI2IC03OSAxMjYgLTE1MGMwIC0xMzQgLTExMyAtMjAwIC0yNzUgLTIwMGgtMjcydjE2YzU1IDggNjYgMTggODMgODBsMTIxIDQzNmM3IDI1IDExIDQ5IDExIDY0YzAgMjkgLTE0IDM2IC03NyA0MXYxNnpNMjQ4IDM2M2gzOGMxMzEgMCAyMDEgNTMgMjAxIDE1MiBjMCA3NCAtMzYgMTA4IC0xMTcgMTA4Yy0zOSAwIC00OSAwIC01OSAtMzZ6TTIzOCAzMzFsLTMyIC0xMTljLTIwIC03NiAtMzUgLTEyNyAtMzUgLTE0MGMwIC0yOCAyNSAtNDIgNjcgLTQyYzExNSAwIDE5MyA1OSAxOTMgMTcwYzAgNjIgLTI5IDEwNiAtNjcgMTE5Yy0yMCA3IC02MyAxMiAtMTI2IDEyWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTM0IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDczIDE2N2gtMTAzdi0xNjdoLTc4djE2N2gtMjgwdjY0bDMxNCA0NDVoNDR2LTQ0NWgxMDN2LTY0ek0yOTIgMjMxdjM0M2wtMjQwIC0zNDNoMjQwWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEzMCA2NTNoMjUwYzEzOSAwIDIwOCAtNTEgMjA4IC0xNTBjMCAtNTQgLTI4IC04OSAtNjQgLTExM2MtMzEgLTIxIC02OCAtMzAgLTExMSAtMzl2LTFjODYgLTI2IDEyNiAtNzkgMTI2IC0xNTBjMCAtMTM0IC0xMTMgLTIwMCAtMjc1IC0yMDBoLTI3MnYxNmM1NSA4IDY2IDE4IDgzIDgwbDEyMSA0MzZjNyAyNSAxMSA0OSAxMSA2NGMwIDI5IC0xNCAzNiAtNzcgNDF2MTZ6TTI0OCAzNjNoMzhjMTMxIDAgMjAxIDUzIDIwMSAxNTIgYzAgNzQgLTM2IDEwOCAtMTE3IDEwOGMtMzkgMCAtNDkgMCAtNTkgLTM2ek0yMzggMzMxbC0zMiAtMTE5Yy0yMCAtNzYgLTM1IC0xMjcgLTM1IC0xNDBjMCAtMjggMjUgLTQyIDY3IC00MmMxMTUgMCAxOTMgNTkgMTkzIDE3MGMwIDYyIC0yOSAxMDYgLTY3IDExOWMtMjAgNyAtNjMgMTIgLTEyNiAxMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYxIDUxMGwtMTYgNGMyOSA5NSA5MiAxNjIgMTk2IDE2MmM5MyAwIDE1NiAtNTUgMTU2IC0xMzdjMCAtNDggLTI2IC05OCAtOTMgLTEzOGM0NCAtMTkgNjIgLTMxIDgzIC01M2MyOCAtMzEgNDQgLTc3IDQ0IC0xMjljMCAtNTMgLTE3IC0xMDIgLTQ2IC0xNDBjLTQ4IC02NCAtMTQzIC05MyAtMjMyIC05M2MtNzMgMCAtMTEyIDIxIC0xMTIgNTdjMCAyMSAxOCAzNiA0MSAzNmMxNyAwIDMzIC02IDYxIC0yNmMzNyAtMjYgNTggLTMxIDg2IC0zMSBjNzQgMCAxMzAgNjggMTMwIDE1M2MwIDc2IC0zNSAxMjUgLTEwNCAxNDVjLTIyIDcgLTQ1IDEwIC0xMDIgMTB2MTRjMzggMTMgNjQgMjQgODQgMzZjNDkgMjggODEgNzMgODEgMTM0YzAgNjggLTQyIDEwMiAtMTA4IDEwMmMtNjIgMCAtMTA4IC0zMiAtMTQ5IC0xMDZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzYgMjIwaC0yNjF2LTI2MWgtNjZ2MjYxaC0yNjF2NjZoMjYxdjI2MWg2NnYtMjYxaDI2MXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTQyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTMwIDY1M2gyNTBjMTM5IDAgMjA4IC01MSAyMDggLTE1MGMwIC01NCAtMjggLTg5IC02NCAtMTEzYy0zMSAtMjEgLTY4IC0zMCAtMTExIC0zOXYtMWM4NiAtMjYgMTI2IC03OSAxMjYgLTE1MGMwIC0xMzQgLTExMyAtMjAwIC0yNzUgLTIwMGgtMjcydjE2YzU1IDggNjYgMTggODMgODBsMTIxIDQzNmM3IDI1IDExIDQ5IDExIDY0YzAgMjkgLTE0IDM2IC03NyA0MXYxNnpNMjQ4IDM2M2gzOGMxMzEgMCAyMDEgNTMgMjAxIDE1MiBjMCA3NCAtMzYgMTA4IC0xMTcgMTA4Yy0zOSAwIC00OSAwIC01OSAtMzZ6TTIzOCAzMzFsLTMyIC0xMTljLTIwIC03NiAtMzUgLTEyNyAtMzUgLTE0MGMwIC0yOCAyNSAtNDIgNjcgLTQyYzExNSAwIDE5MyA1OSAxOTMgMTcwYzAgNjIgLTI5IDEwNiAtNjcgMTE5Yy0yMCA3IC02MyAxMiAtMTI2IDEyWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzYgMjIwaC0yNjF2LTI2MWgtNjZ2MjYxaC0yNjF2NjZoMjYxdjI2MWg2NnYtMjYxaDI2MXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zMDQgLTE2MWwtMTIgLTE2Yy0xNTggOTAgLTI0NCAyNTkgLTI0NCA0MjljMCAxODUgODcgMzI5IDI0NyA0MjRsOSAtMTZjLTEzOSAtMTE5IC0xNzAgLTIxMiAtMTcwIC00MDVjMCAtMTg2IDMwIC0yOTkgMTcwIC00MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTQyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTMwIDY1M2gyNTBjMTM5IDAgMjA4IC01MSAyMDggLTE1MGMwIC01NCAtMjggLTg5IC02NCAtMTEzYy0zMSAtMjEgLTY4IC0zMCAtMTExIC0zOXYtMWM4NiAtMjYgMTI2IC03OSAxMjYgLTE1MGMwIC0xMzQgLTExMyAtMjAwIC0yNzUgLTIwMGgtMjcydjE2YzU1IDggNjYgMTggODMgODBsMTIxIDQzNmM3IDI1IDExIDQ5IDExIDY0YzAgMjkgLTE0IDM2IC03NyA0MXYxNnpNMjQ4IDM2M2gzOGMxMzEgMCAyMDEgNTMgMjAxIDE1MiBjMCA3NCAtMzYgMTA4IC0xMTcgMTA4Yy0zOSAwIC00OSAwIC01OSAtMzZ6TTIzOCAzMzFsLTMyIC0xMTljLTIwIC03NiAtMzUgLTEyNyAtMzUgLTE0MGMwIC0yOCAyNSAtNDIgNjcgLTQyYzExNSAwIDE5MyA1OSAxOTMgMTcwYzAgNjIgLTI5IDEwNiAtNjcgMTE5Yy0yMCA3IC02MyAxMiAtMTI2IDEyWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xMzAgNjUzaDI1MGMxMzkgMCAyMDggLTUxIDIwOCAtMTUwYzAgLTU0IC0yOCAtODkgLTY0IC0xMTNjLTMxIC0yMSAtNjggLTMwIC0xMTEgLTM5di0xYzg2IC0yNiAxMjYgLTc5IDEyNiAtMTUwYzAgLTEzNCAtMTEzIC0yMDAgLTI3NSAtMjAwaC0yNzJ2MTZjNTUgOCA2NiAxOCA4MyA4MGwxMjEgNDM2YzcgMjUgMTEgNDkgMTEgNjRjMCAyOSAtMTQgMzYgLTc3IDQxdjE2ek0yNDggMzYzaDM4YzEzMSAwIDIwMSA1MyAyMDEgMTUyIGMwIDc0IC0zNiAxMDggLTExNyAxMDhjLTM5IDAgLTQ5IDAgLTU5IC0zNnpNMjM4IDMzMWwtMzIgLTExOWMtMjAgLTc2IC0zNSAtMTI3IC0zNSAtMTQwYzAgLTI4IDI1IC00MiA2NyAtNDJjMTE1IDAgMTkzIDU5IDE5MyAxNzBjMCA2MiAtMjkgMTA2IC02NyAxMTljLTIwIDcgLTYzIDEyIC0xMjYgMTJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjkgNjYwbDEyIDE2YzE1MyAtOTIgMjQ0IC0yNTkgMjQ0IC00MjljMCAtMTg1IC04OCAtMzI3IC0yNDcgLTQyNGwtOSAxNmMxNDIgMTE3IDE3MCAyMTEgMTcwIDQwNWMwIDE4NyAtMjUgMzAyIC0xNzAgNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEzMCA2NTNoMjUwYzEzOSAwIDIwOCAtNTEgMjA4IC0xNTBjMCAtNTQgLTI4IC04OSAtNjQgLTExM2MtMzEgLTIxIC02OCAtMzAgLTExMSAtMzl2LTFjODYgLTI2IDEyNiAtNzkgMTI2IC0xNTBjMCAtMTM0IC0xMTMgLTIwMCAtMjc1IC0yMDBoLTI3MnYxNmM1NSA4IDY2IDE4IDgzIDgwbDEyMSA0MzZjNyAyNSAxMSA0OSAxMSA2NGMwIDI5IC0xNCAzNiAtNzcgNDF2MTZ6TTI0OCAzNjNoMzhjMTMxIDAgMjAxIDUzIDIwMSAxNTIgYzAgNzQgLTM2IDEwOCAtMTE3IDEwOGMtMzkgMCAtNDkgMCAtNTkgLTM2ek0yMzggMzMxbC0zMiAtMTE5Yy0yMCAtNzYgLTM1IC0xMjcgLTM1IC0xNDBjMCAtMjggMjUgLTQyIDY3IC00MmMxMTUgMCAxOTMgNTkgMTkzIDE3MGMwIDYyIC0yOSAxMDYgLTY3IDExOWMtMjAgNyAtNjMgMTIgLTEyNiAxMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTEzMCA2NTNoMjUwYzEzOSAwIDIwOCAtNTEgMjA4IC0xNTBjMCAtNTQgLTI4IC04OSAtNjQgLTExM2MtMzEgLTIxIC02OCAtMzAgLTExMSAtMzl2LTFjODYgLTI2IDEyNiAtNzkgMTI2IC0xNTBjMCAtMTM0IC0xMTMgLTIwMCAtMjc1IC0yMDBoLTI3MnYxNmM1NSA4IDY2IDE4IDgzIDgwbDEyMSA0MzZjNyAyNSAxMSA0OSAxMSA2NGMwIDI5IC0xNCAzNiAtNzcgNDF2MTZ6TTI0OCAzNjNoMzhjMTMxIDAgMjAxIDUzIDIwMSAxNTIgYzAgNzQgLTM2IDEwOCAtMTE3IDEwOGMtMzkgMCAtNDkgMCAtNTkgLTM2ek0yMzggMzMxbC0zMiAtMTE5Yy0yMCAtNzYgLTM1IC0xMjcgLTM1IC0xNDBjMCAtMjggMjUgLTQyIDY3IC00MmMxMTUgMCAxOTMgNTkgMTkzIDE3MGMwIDYyIC0yOSAxMDYgLTY3IDExOWMtMjAgNyAtNjMgMTIgLTEyNiAxMloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYxIDUxMGwtMTYgNGMyOSA5NSA5MiAxNjIgMTk2IDE2MmM5MyAwIDE1NiAtNTUgMTU2IC0xMzdjMCAtNDggLTI2IC05OCAtOTMgLTEzOGM0NCAtMTkgNjIgLTMxIDgzIC01M2MyOCAtMzEgNDQgLTc3IDQ0IC0xMjljMCAtNTMgLTE3IC0xMDIgLTQ2IC0xNDBjLTQ4IC02NCAtMTQzIC05MyAtMjMyIC05M2MtNzMgMCAtMTEyIDIxIC0xMTIgNTdjMCAyMSAxOCAzNiA0MSAzNmMxNyAwIDMzIC02IDYxIC0yNmMzNyAtMjYgNTggLTMxIDg2IC0zMSBjNzQgMCAxMzAgNjggMTMwIDE1M2MwIDc2IC0zNSAxMjUgLTEwNCAxNDVjLTIyIDcgLTQ1IDEwIC0xMDIgMTB2MTRjMzggMTMgNjQgMjQgODQgMzZjNDkgMjggODEgNzMgODEgMTM0YzAgNjggLTQyIDEwMiAtMTA4IDEwMmMtNjIgMCAtMTA4IC0zMiAtMTQ5IC0xMDZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zNCIgeD0iODcxIiB5PSItMjEzIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTNEIiB4PSIxMzUwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSIyMzE4IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjY1NiwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMzIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSIzOTUxIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDg2NCwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSI1OTM3IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSI2NDk3IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSI3NDA5IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzc0NywwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSI5MDQzIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTk1NSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSIxMTAyOCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iMTE1ODgiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjgiIHg9IjEyNTAwIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI4MzgsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iODcxIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iMTQxMzQiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTA0NiwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MiIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMzIiB4PSI4NzEiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSIxNjExOSIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;280.156&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이는 카탈란 수 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;269df1b24837e284ec791de3ae768620&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-208-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02OTIuOTkzNjA5NzgzMzY0NCAxMTI5LjA4ODkyNDQ5OTIwNjUgODczLjQyMjI0ODQwOTI3MzIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNTQ3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTlweCIgaGVpZ2h0PSIxNXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OSA2NjRsLTM3IC0yMDBsLTE4IDNjLTEyIDEwNyAtNjEgMTYzIC0xNDkgMTYzYy03NCAwIC0xNDQgLTM4IC0xOTkgLTk3Yy03MiAtNzcgLTEwOCAtMTkxIC0xMDggLTMwMWMwIC0xNDAgNjQgLTIwNSAxNzUgLTIwNWM4MiAwIDE0MiAyOSAyMjkgMTE5bDE4IC0xNWMtOTAgLTEwNiAtMTcwIC0xNDkgLTI3MyAtMTQ5Yy0xNTMgMCAtMjYxIDk2IC0yNjEgMjYxYzAgMTQxIDc3IDI3MiAxODcgMzUwYzY0IDQ2IDE0MCA3MyAyMTkgNzMgYzMzIDAgNzUgLTIgMTE3IC0xN2MyMCAtNyAzMiAtNyA0MSAtN2MyMCAwIDMwIDYgMzggMjJoMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQzIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI5NTAiIHk9Ii0yMTMiLz48L2c+PC9zdmc+&quot; width=&quot;19&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;의 점화식 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;40d6a45cf998d1e093c2d2c00df9bac7&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-204-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05ODQuNDkyOTI3NDIwODU2NSAxNDQ3Mi40ODkzMTY3Nzk1NjQgMTMyNC44MTI0MzkwMTIwMjU0IiBzdHlsZT0id2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IC0wLjgyZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMjQ2LjEyNXB4IiBoZWlnaHQ9IjIzLjAxNTZweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMwIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc2IDMzMGMwIC0xNzIgLTYzIC0zNDQgLTIyNiAtMzQ0Yy0xNzEgMCAtMjI2IDE4NiAtMjI2IDM1MGMwIDE3NyA2OSAzNDAgMjMwIDM0MGMxMzEgMCAyMjIgLTE0MSAyMjIgLTM0NnpNMzgwIDMyNWMwIDIwOCAtNDQgMzI1IC0xMzIgMzI1Yy04MyAwIC0xMjggLTExOCAtMTI4IC0zMjFzNDQgLTMxNyAxMzAgLTMxN2M4NSAwIDEzMCAxMTUgMTMwIDMxM1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NiAzMzBjMCAtMTcyIC02MyAtMzQ0IC0yMjYgLTM0NGMtMTcxIDAgLTIyNiAxODYgLTIyNiAzNTBjMCAxNzcgNjkgMzQwIDIzMCAzNDBjMTMxIDAgMjIyIC0xNDEgMjIyIC0zNDZ6TTM4MCAzMjVjMCAyMDggLTQ0IDMyNSAtMTMyIDMyNWMtODMgMCAtMTI4IC0xMTggLTEyOCAtMzIxczQ0IC0zMTcgMTMwIC0zMTdjODUgMCAxMzAgMTE1IDEzMCAzMTNaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04MyAtMTQxbC0xMCAxOWM1NSAzNyA4MyA3NCA4MyAxMDdjMCA3IC02IDEzIC0xNCAxM3MtMTggLTQgLTI5IC00Yy0zNyAwIC01OCAxNyAtNTggNTFzMjQgNTcgNjAgNTdjNDUgMCA4MCAtMzUgODAgLTg3YzAgLTYwIC00MyAtMTIzIC0xMTIgLTE1NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJPUEVSQVRPUlMtMjIxMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTg1NiA0MGwtNTMgLTI5OWgtNzQ1bDM5MiA1MTBsLTM2NyA1MTJoNzQ3di0yNTFoLTMwYy0yMSAxMzUgLTU5IDE4NSAtMTkyIDE4NWgtMzIwbDI5MCAtMzkxbC0zMzYgLTQzNGg0MTRjMTEyIDAgMTQ4IDY4IDE3MCAxNjhoMzBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NjAgMTE3bDE0IC0xM2MtNjggLTkzIC05MyAtMTEzIC0xNDAgLTExM2MtMjUgMCAtNDcgMTYgLTQ3IDU0YzAgMTAgMiAyMyAxNiA3NWw0NCAxNjJjOCAzMSAxNCA2NyAxNCA3OWMwIDE4IC05IDI5IC0yNCAyOWMtNDAgMCAtODUgLTQ5IC0xNDggLTE0MmMtNDUgLTY3IC01MyAtOTAgLTEwMCAtMjQ4aC03NWw5NiAzNTBjMSA1IDIgMTEgMiAxN2MwIDIwIC0xNCAyNiAtNjUgMjd2MTZjODEgMTYgMTA5IDIwIDE2MiAzMWw0IC0ybC02NyAtMjE4IGMxMDAgMTYwIDE2NyAyMjAgMjMxIDIyMGM0MyAwIDY1IC0yNSA2NSAtNjFjMCAtMTggLTQgLTM5IC0xMCAtNjBsLTU2IC0yMDNjLTEwIC0zNiAtMTQgLTUzIC0xNCAtNjFjMCAtOSA0IC0xOCAxNiAtMThjMTQgMCAzMiAxNiA2MSA1M2M3IDggMTQgMTcgMjEgMjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NiAzMzBjMCAtMTcyIC02MyAtMzQ0IC0yMjYgLTM0NGMtMTcxIDAgLTIyNiAxODYgLTIyNiAzNTBjMCAxNzcgNjkgMzQwIDIzMCAzNDBjMTMxIDAgMjIyIC0xNDEgMjIyIC0zNDZ6TTM4MCAzMjVjMCAyMDggLTQ0IDMyNSAtMTMyIDMyNWMtODMgMCAtMTI4IC0xMTggLTEyOCAtMzIxczQ0IC0zMTcgMTMwIC0zMTdjODUgMCAxMzAgMTE1IDEzMCAzMTNaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTQzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjg5IDY2NGwtMzcgLTIwMGwtMTggM2MtMTIgMTA3IC02MSAxNjMgLTE0OSAxNjNjLTc0IDAgLTE0NCAtMzggLTE5OSAtOTdjLTcyIC03NyAtMTA4IC0xOTEgLTEwOCAtMzAxYzAgLTE0MCA2NCAtMjA1IDE3NSAtMjA1YzgyIDAgMTQyIDI5IDIyOSAxMTlsMTggLTE1Yy05MCAtMTA2IC0xNzAgLTE0OSAtMjczIC0xNDljLTE1MyAwIC0yNjEgOTYgLTI2MSAyNjFjMCAxNDEgNzcgMjcyIDE4NyAzNTBjNjQgNDYgMTQwIDczIDIxOSA3MyBjMzMgMCA3NSAtMiAxMTcgLTE3YzIwIC03IDMyIC03IDQxIC03YzIwIDAgMzAgNiAzOCAyMmgyMVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OSA2NjRsLTM3IC0yMDBsLTE4IDNjLTEyIDEwNyAtNjEgMTYzIC0xNDkgMTYzYy03NCAwIC0xNDQgLTM4IC0xOTkgLTk3Yy03MiAtNzcgLTEwOCAtMTkxIC0xMDggLTMwMWMwIC0xNDAgNjQgLTIwNSAxNzUgLTIwNWM4MiAwIDE0MiAyOSAyMjkgMTE5bDE4IC0xNWMtOTAgLTEwNiAtMTcwIC0xNDkgLTI3MyAtMTQ5Yy0xNTMgMCAtMjYxIDk2IC0yNjEgMjYxYzAgMTQxIDc3IDI3MiAxODcgMzUwYzY0IDQ2IDE0MCA3MyAyMTkgNzMgYzMzIDAgNzUgLTIgMTE3IC0xN2MyMCAtNyAzMiAtNyA0MSAtN2MyMCAwIDMwIDYgMzggMjJoMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTIyMTIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MjEgMjIwaC01NTd2NjZoNTU3di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjI5IDMyNGwtNTY1IC0yNzN2NjNsNDMyIDIxNWwtNDMyIDIxNXY2NWw1NjUgLTI3NXYtMTB6TTYyOSAtMTAzaC01NjV2NjZoNTY1di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NiAzMzBjMCAtMTcyIC02MyAtMzQ0IC0yMjYgLTM0NGMtMTcxIDAgLTIyNiAxODYgLTIyNiAzNTBjMCAxNzcgNjkgMzQwIDIzMCAzNDBjMTMxIDAgMjIyIC0xNDEgMjIyIC0zNDZ6TTM4MCAzMjVjMCAyMDggLTQ0IDMyNSAtMTMyIDMyNWMtODMgMCAtMTI4IC0xMTggLTEyOCAtMzIxczQ0IC0zMTcgMTMwIC0zMTdjODUgMCAxMzAgMTE1IDEzMCAzMTNaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDMiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMCIgeD0iOTUwIiB5PSItMjEzIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTNEIiB4PSIxNDA2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMwIiB4PSIyMzc0IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJDIiB4PSIyODc5IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzMwMSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MyIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3MiwtMTUwKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSIxMTk1IiB5PSIwIi8+PC9nPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjU1NTMiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NTIwLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk9QRVJBVE9SUy0yMjExIiB4PSIwIiB5PSItMiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkxOSw0OTcpIj48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMjgzIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI5NzIiIHk9IjAiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTE5LC0zMDcpIj48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMjgzIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzAiIHg9Ijk3MiIgeT0iMCIvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODc1MSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MyIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIgeD0iOTUwIiB5PSItMjEzIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTcyLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQzIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjcyLC0xNTApIj48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjEyIiB4PSI1MDUiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiIHg9IjExOTUiIHk9IjAiLz48L2c+PC9nPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjgiIHg9IjExNTQwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIgeD0iMTE4NzgiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjI2NSIgeD0iMTI2NjEiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzAiIHg9IjEzNjI5IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSIxNDEzNCIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;246.125&quot; height=&quot;23.0156&quot;&gt;&lt;/span&gt;&lt;/span&gt; 과 동일하다. &lt;/p&gt;
&lt;p&gt;따라서 n각형을 삼각 분할하는 경우의 수는 &lt;code&gt;카탈란 수&lt;/code&gt; &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;ac89c9b830e67b3161dccbbd7e280a86&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-205-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MDIuOTkzNjA5NzgzMzY0NCA0OTA1LjYzNzA4MzU3MjY4NyA5MDYuOTg3MjE5NTY2NzI4OCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC41NDdleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSI4My4wMzEycHgiIGhlaWdodD0iMTVweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjEyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjIxIDIyMGgtNTU3djY2aDU1N3YtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MSA1MTBsLTE2IDRjMjkgOTUgOTIgMTYyIDE5NiAxNjJjOTMgMCAxNTYgLTU1IDE1NiAtMTM3YzAgLTQ4IC0yNiAtOTggLTkzIC0xMzhjNDQgLTE5IDYyIC0zMSA4MyAtNTNjMjggLTMxIDQ0IC03NyA0NCAtMTI5YzAgLTUzIC0xNyAtMTAyIC00NiAtMTQwYy00OCAtNjQgLTE0MyAtOTMgLTIzMiAtOTNjLTczIDAgLTExMiAyMSAtMTEyIDU3YzAgMjEgMTggMzYgNDEgMzZjMTcgMCAzMyAtNiA2MSAtMjZjMzcgLTI2IDU4IC0zMSA4NiAtMzEgYzc0IDAgMTMwIDY4IDEzMCAxNTNjMCA3NiAtMzUgMTI1IC0xMDQgMTQ1Yy0yMiA3IC00NSAxMCAtMTAyIDEwdjE0YzM4IDEzIDY0IDI0IDg0IDM2YzQ5IDI4IDgxIDczIDgxIDEzNGMwIDY4IC00MiAxMDIgLTEwOCAxMDJjLTYyIDAgLTEwOCAtMzIgLTE0OSAtMTA2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjY1IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjI5IDMyNGwtNTY1IC0yNzN2NjNsNDMyIDIxNWwtNDMyIDIxNXY2NWw1NjUgLTI3NXYtMTB6TTYyOSAtMTAzaC01NjV2NjZoNTY1di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYxIDUxMGwtMTYgNGMyOSA5NSA5MiAxNjIgMTk2IDE2MmM5MyAwIDE1NiAtNTUgMTU2IC0xMzdjMCAtNDggLTI2IC05OCAtOTMgLTEzOGM0NCAtMTkgNjIgLTMxIDgzIC01M2MyOCAtMzEgNDQgLTc3IDQ0IC0xMjljMCAtNTMgLTE3IC0xMDIgLTQ2IC0xNDBjLTQ4IC02NCAtMTQzIC05MyAtMjMyIC05M2MtNzMgMCAtMTEyIDIxIC0xMTIgNTdjMCAyMSAxOCAzNiA0MSAzNmMxNyAwIDMzIC02IDYxIC0yNmMzNyAtMjYgNTggLTMxIDg2IC0zMSBjNzQgMCAxMzAgNjggMTMwIDE1M2MwIDc2IC0zNSAxMjUgLTEwNCAxNDVjLTIyIDcgLTQ1IDEwIC0xMDIgMTB2MTRjMzggMTMgNjQgMjQgODQgMzZjNDkgMjggODEgNzMgODEgMTM0YzAgNjggLTQyIDEwMiAtMTA4IDEwMmMtNjIgMCAtMTA4IC0zMiAtMTQ5IC0xMDZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDMiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NzIsLTE1MCkiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTIyMTIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMzIiB4PSIxMTk1IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOCIgeD0iMTk3NCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiIHg9IjIzMTIiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjI2NSIgeD0iMzA5NCIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMyIgeD0iNDA2MiIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iNDU2NyIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;83.0312&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;와 동일하다. 이제 삼각 분할은 생각하지 말고 카탈란 수를 구하는 것에 집중하자.&lt;/p&gt;
&lt;p&gt;카탈란 수의 일반항은 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;6621a5baf16b5ed08b59d085eeeb2f71&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-206-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC0xNTA2Ljk5MzYwOTc4MzM2NDUgNzExMS4zMTQxMzQwNjc3MDMgMjUxMy45ODcyMTk1NjY3MjkiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTIuNDZleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxMjEuMDYycHgiIGhlaWdodD0iNDMuMDE1NnB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OSA2NjRsLTM3IC0yMDBsLTE4IDNjLTEyIDEwNyAtNjEgMTYzIC0xNDkgMTYzYy03NCAwIC0xNDQgLTM4IC0xOTkgLTk3Yy03MiAtNzcgLTEwOCAtMTkxIC0xMDggLTMwMWMwIC0xNDAgNjQgLTIwNSAxNzUgLTIwNWM4MiAwIDE0MiAyOSAyMjkgMTE5bDE4IC0xNWMtOTAgLTEwNiAtMTcwIC0xNDkgLTI3MyAtMTQ5Yy0xNTMgMCAtMjYxIDk2IC0yNjEgMjYxYzAgMTQxIDc3IDI3MiAxODcgMzUwYzY0IDQ2IDE0MCA3MyAyMTkgNzMgYzMzIDAgNzUgLTIgMTE3IC0xN2MyMCAtNyAzMiAtNyA0MSAtN2MyMCAwIDMwIDYgMzggMjJoMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQlNJWkUzLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjY3IC0zNDZ2LTQ4Yy0yODQgMjY3IC00ODUgNjg5IC00ODUgMTIzMGMwIDUzOCAyMDEgMTAwMiA0ODUgMTIzMHYtNDRjLTE3OCAtMTg0IC0zNzUgLTU4MCAtMzc1IC0xMTg2YzAgLTYxMyAxOTcgLTk2MiAzNzUgLTExODJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NjAgMTE3bDE0IC0xM2MtNjggLTkzIC05MyAtMTEzIC0xNDAgLTExM2MtMjUgMCAtNDcgMTYgLTQ3IDU0YzAgMTAgMiAyMyAxNiA3NWw0NCAxNjJjOCAzMSAxNCA2NyAxNCA3OWMwIDE4IC05IDI5IC0yNCAyOWMtNDAgMCAtODUgLTQ5IC0xNDggLTE0MmMtNDUgLTY3IC01MyAtOTAgLTEwMCAtMjQ4aC03NWw5NiAzNTBjMSA1IDIgMTEgMiAxN2MwIDIwIC0xNCAyNiAtNjUgMjd2MTZjODEgMTYgMTA5IDIwIDE2MiAzMWw0IC0ybC02NyAtMjE4IGMxMDAgMTYwIDE2NyAyMjAgMjMxIDIyMGM0MyAwIDY1IC0yNSA2NSAtNjFjMCAtMTggLTQgLTM5IC0xMCAtNjBsLTU2IC0yMDNjLTEwIC0zNiAtMTQgLTUzIC0xNCAtNjFjMCAtOSA0IC0xOCAxNiAtMThjMTQgMCAzMiAxNiA2MSA1M2M3IDggMTQgMTcgMjEgMjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQlNJWkUzLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNODMgMjAxOHY0OGMyODQgLTI2NyA0ODUgLTY4NSA0ODUgLTEyMzBjMCAtNTM0IC0yMDEgLTEwMDIgLTQ4NSAtMTIzMHY0NGMxNzggMTg0IDM3NSA1ODAgMzc1IDExODZjMCA2MTQgLTE5NyA5NjUgLTM3NSAxMTgyWiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQzIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI5NTAiIHk9Ii0yMTMiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjE0MDYiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDk2LDApIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTcsMCkiPjxyZWN0IHN0cm9rZT0ibm9uZSIgd2lkdGg9IjEzMjIiIGhlaWdodD0iNjAiIHg9IjAiIHk9IjIyMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI2ODIiIHk9IjYwNCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYwLC00MDYpIj48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iNTA1IiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjExOTUiIHk9IjAiLz48L2c+PC9nPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAzLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQlNJWkUzLTI4IiB4PSIxNjYiIHk9Ii01ODYiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDg4LDApIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMsMCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsNjUwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIgeD0iNTA1IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiIHg9IjI1MiIgeT0iLTc1MCIvPjwvZz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJTSVpFMy0yOSIgeD0iMjI1MiIgeT0iLTU4NiIvPjwvZz48L2c+PC9zdmc+&quot; width=&quot;121.062&quot; height=&quot;43.0156&quot;&gt;&lt;/span&gt;&lt;/span&gt;이므로 다음 항과의 관계식 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;dec04e97dd4b850579c22dba235c8414&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-207-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC0xMDU0LjYzMzQyMjAxNDM0NTggNzI2OS42NTYyMzU4MzYyMTEgMTUxMy4xMDAzMjE3ODczMjEiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTEuMDkzZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTI0LjA2MnB4IiBoZWlnaHQ9IjI2LjAxNTZweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTMwNCAtMTYxbC0xMiAtMTZjLTE1OCA5MCAtMjQ0IDI1OSAtMjQ0IDQyOWMwIDE4NSA4NyAzMjkgMjQ3IDQyNGw5IC0xNmMtMTM5IC0xMTkgLTE3MCAtMjEyIC0xNzAgLTQwNWMwIC0xODYgMzAgLTI5OSAxNzAgLTQxNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MyIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3MiwtMTUwKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSIxMTk1IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMjI1MSIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NDEsMCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5NywwKSI+PHJlY3Qgc3Ryb2tlPSJub25lIiB3aWR0aD0iMjUxNCIgaGVpZ2h0PSI2MCIgeD0iMCIgeT0iMjIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsNTUyKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOCIgeD0iNTA1IiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9Ijg0MyIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIgeD0iMTM0OCIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSIxODUzIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjI1NDMiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iMzA0OCIgeT0iMCIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NTYsLTQwNikiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSI1MDUiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMiIgeD0iMTE5NSIgeT0iMCIvPjwvZz48L2c+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxNDAsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDMiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiIHg9Ijk1MCIgeT0iLTIxMyIvPjwvZz48L2c+PC9zdmc+&quot; width=&quot;124.062&quot; height=&quot;26.0156&quot;&gt;&lt;/span&gt;&lt;/span&gt; 를 얻을 수 있다.  그럼 이 관계식을 이용해서 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;269df1b24837e284ec791de3ae768620&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-208-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02OTIuOTkzNjA5NzgzMzY0NCAxMTI5LjA4ODkyNDQ5OTIwNjUgODczLjQyMjI0ODQwOTI3MzIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNTQ3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTlweCIgaGVpZ2h0PSIxNXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OSA2NjRsLTM3IC0yMDBsLTE4IDNjLTEyIDEwNyAtNjEgMTYzIC0xNDkgMTYzYy03NCAwIC0xNDQgLTM4IC0xOTkgLTk3Yy03MiAtNzcgLTEwOCAtMTkxIC0xMDggLTMwMWMwIC0xNDAgNjQgLTIwNSAxNzUgLTIwNWM4MiAwIDE0MiAyOSAyMjkgMTE5bDE4IC0xNWMtOTAgLTEwNiAtMTcwIC0xNDkgLTI3MyAtMTQ5Yy0xNTMgMCAtMjYxIDk2IC0yNjEgMjYxYzAgMTQxIDc3IDI3MiAxODcgMzUwYzY0IDQ2IDE0MCA3MyAyMTkgNzMgYzMzIDAgNzUgLTIgMTE3IC0xN2MyMCAtNyAzMiAtNyA0MSAtN2MyMCAwIDMwIDYgMzggMjJoMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQzIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI5NTAiIHk9Ii0yMTMiLz48L2c+PC9zdmc+&quot; width=&quot;19&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 구하면 문제를 다 푼 걸까?&lt;/p&gt;
&lt;p&gt;중간 과정에서 n이 100만 되도 순식간에 long long int 값의 범위를 넘어가기 때문에 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;269df1b24837e284ec791de3ae768620&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-208-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02OTIuOTkzNjA5NzgzMzY0NCAxMTI5LjA4ODkyNDQ5OTIwNjUgODczLjQyMjI0ODQwOTI3MzIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNTQ3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTlweCIgaGVpZ2h0PSIxNXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS00MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTY4OSA2NjRsLTM3IC0yMDBsLTE4IDNjLTEyIDEwNyAtNjEgMTYzIC0xNDkgMTYzYy03NCAwIC0xNDQgLTM4IC0xOTkgLTk3Yy03MiAtNzcgLTEwOCAtMTkxIC0xMDggLTMwMWMwIC0xNDAgNjQgLTIwNSAxNzUgLTIwNWM4MiAwIDE0MiAyOSAyMjkgMTE5bDE4IC0xNWMtOTAgLTEwNiAtMTcwIC0xNDkgLTI3MyAtMTQ5Yy0xNTMgMCAtMjYxIDk2IC0yNjEgMjYxYzAgMTQxIDc3IDI3MiAxODcgMzUwYzY0IDQ2IDE0MCA3MyAyMTkgNzMgYzMzIDAgNzUgLTIgMTE3IC0xN2MyMCAtNyAzMiAtNyA0MSAtN2MyMCAwIDMwIDYgMzggMjJoMjFaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTQzIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIiB4PSI5NTAiIHk9Ii0yMTMiLz48L2c+PC9zdmc+&quot; width=&quot;19&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 구하는 중간 과정에서 계속 모듈러 연산(나머지 연산)을 하면서 진행해야한다. 그런데 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;dec04e97dd4b850579c22dba235c8414&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-207-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC0xMDU0LjYzMzQyMjAxNDM0NTggNzI2OS42NTYyMzU4MzYyMTEgMTUxMy4xMDAzMjE3ODczMjEiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTEuMDkzZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTI0LjA2MnB4IiBoZWlnaHQ9IjI2LjAxNTZweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNiAyMjBoLTI2MXYtMjYxaC02NnYyNjFoLTI2MXY2NmgyNjF2MjYxaDY2di0yNjFoMjYxdi02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTMwNCAtMTYxbC0xMiAtMTZjLTE1OCA5MCAtMjQ0IDI1OSAtMjQ0IDQyOWMwIDE4NSA4NyAzMjkgMjQ3IDQyNGw5IC0xNmMtMTM5IC0xMTkgLTE3MCAtMjEyIC0xNzAgLTQwNWMwIC0xODYgMzAgLTI5OSAxNzAgLTQxNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYwIDExN2wxNCAtMTNjLTY4IC05MyAtOTMgLTExMyAtMTQwIC0xMTNjLTI1IDAgLTQ3IDE2IC00NyA1NGMwIDEwIDIgMjMgMTYgNzVsNDQgMTYyYzggMzEgMTQgNjcgMTQgNzljMCAxOCAtOSAyOSAtMjQgMjljLTQwIDAgLTg1IC00OSAtMTQ4IC0xNDJjLTQ1IC02NyAtNTMgLTkwIC0xMDAgLTI0OGgtNzVsOTYgMzUwYzEgNSAyIDExIDIgMTdjMCAyMCAtMTQgMjYgLTY1IDI3djE2YzgxIDE2IDEwOSAyMCAxNjIgMzFsNCAtMmwtNjcgLTIxOCBjMTAwIDE2MCAxNjcgMjIwIDIzMSAyMjBjNDMgMCA2NSAtMjUgNjUgLTYxYzAgLTE4IC00IC0zOSAtMTAgLTYwbC01NiAtMjAzYy0xMCAtMzYgLTE0IC01MyAtMTQgLTYxYzAgLTkgNCAtMTggMTYgLTE4YzE0IDAgMzIgMTYgNjEgNTNjNyA4IDE0IDE3IDIxIDI2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNDMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02ODkgNjY0bC0zNyAtMjAwbC0xOCAzYy0xMiAxMDcgLTYxIDE2MyAtMTQ5IDE2M2MtNzQgMCAtMTQ0IC0zOCAtMTk5IC05N2MtNzIgLTc3IC0xMDggLTE5MSAtMTA4IC0zMDFjMCAtMTQwIDY0IC0yMDUgMTc1IC0yMDVjODIgMCAxNDIgMjkgMjI5IDExOWwxOCAtMTVjLTkwIC0xMDYgLTE3MCAtMTQ5IC0yNzMgLTE0OWMtMTUzIDAgLTI2MSA5NiAtMjYxIDI2MWMwIDE0MSA3NyAyNzIgMTg3IDM1MGM2NCA0NiAxNDAgNzMgMjE5IDczIGMzMyAwIDc1IC0yIDExNyAtMTdjMjAgLTcgMzIgLTcgNDEgLTdjMjAgMCAzMCA2IDM4IDIyaDIxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02RSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MCAxMTdsMTQgLTEzYy02OCAtOTMgLTkzIC0xMTMgLTE0MCAtMTEzYy0yNSAwIC00NyAxNiAtNDcgNTRjMCAxMCAyIDIzIDE2IDc1bDQ0IDE2MmM4IDMxIDE0IDY3IDE0IDc5YzAgMTggLTkgMjkgLTI0IDI5Yy00MCAwIC04NSAtNDkgLTE0OCAtMTQyYy00NSAtNjcgLTUzIC05MCAtMTAwIC0yNDhoLTc1bDk2IDM1MGMxIDUgMiAxMSAyIDE3YzAgMjAgLTE0IDI2IC02NSAyN3YxNmM4MSAxNiAxMDkgMjAgMTYyIDMxbDQgLTJsLTY3IC0yMTggYzEwMCAxNjAgMTY3IDIyMCAyMzEgMjIwYzQzIDAgNjUgLTI1IDY1IC02MWMwIC0xOCAtNCAtMzkgLTEwIC02MGwtNTYgLTIwM2MtMTAgLTM2IC0xNCAtNTMgLTE0IC02MWMwIC05IDQgLTE4IDE2IC0xOGMxNCAwIDMyIDE2IDYxIDUzYzcgOCAxNCAxNyAyMSAyNloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00MyIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3MiwtMTUwKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZFIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSIxMTk1IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMjI1MSIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NDEsMCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5NywwKSI+PHJlY3Qgc3Ryb2tlPSJub25lIiB3aWR0aD0iMjUxNCIgaGVpZ2h0PSI2MCIgeD0iMCIgeT0iMjIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsNTUyKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOCIgeD0iNTA1IiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9Ijg0MyIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIgeD0iMTM0OCIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSIxODUzIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjI1NDMiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iMzA0OCIgeT0iMCIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NTYsLTQwNikiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02RSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSI1MDUiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMiIgeD0iMTE5NSIgeT0iMCIvPjwvZz48L2c+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxNDAsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNDMiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkUiIHg9Ijk1MCIgeT0iLTIxMyIvPjwvZz48L2c+PC9zdmc+&quot; width=&quot;124.062&quot; height=&quot;26.0156&quot;&gt;&lt;/span&gt;&lt;/span&gt; 을 진행하면서 이미 중간에 M으로 나머지 연산을 한 상태이기 때문에 n+2를 나눌 때 나누어 떨어지지 않을 수 있다.&lt;/p&gt;
&lt;p&gt;M이 &lt;strong&gt;소수라는 보장&lt;/strong&gt;이 있으면 n+2를 나누는 대신 &lt;strong&gt;모듈러 역원&lt;/strong&gt;을 곱하면 되지만 M은 2이상 10억 이하의 정수이므로 &lt;code&gt;소수라는 보장이 없다&lt;/code&gt;. 이를 해결하기 위해 소수를 leaf 노드에 대응시킨 뒤 &lt;code&gt;곱셈 인덱스 트리&lt;/code&gt;를 구성하고 관계식에서 곱셈하거 나누는 수를 소인수분해한 뒤 나타난 소인수들을 인덱스트리에서 증감 시켜주고 인덱스트리를 업데이트하는 방식을 이용한다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4007&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;
&lt;hr&gt;
&lt;h2 id=&quot;code&quot;&gt;Code&lt;/h2&gt;

&lt;p&gt;소수는 &lt;code&gt;seive 함수&lt;/code&gt; 안에서 에라토스테네스 체를 통해 구했고 소인수 분해를 쉽게 하기 위해 에라소트테네스 체를 진행하면서 정수 j의 소인수를 factor[j]에 저장했다.&lt;/p&gt;
&lt;p&gt;소수를 leaf노드로 하는 곱셈 인덱스트리는 &lt;code&gt;struct BinaryTree&lt;/code&gt;로 구현했다.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/24f7d4b181619c0969e1eeb9da0ee13f.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>문제</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/23</guid>
      <comments>https://bowbowbow.tistory.com/23#entry23comment</comments>
      <pubDate>Sat, 7 May 2016 15:56:42 +0900</pubDate>
    </item>
    <item>
      <title>[구글 Codejam] B번 문제 (2016 Round1 B)</title>
      <link>https://bowbowbow.tistory.com/22</link>
      <description>&lt;title&gt;[구글 Codejam] B번 문제 (2016 Round1 B)&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-14&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5539&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;구글-codejam-b번-문제-2016-round1-b&quot;&gt;목차&lt;/h1&gt;

&lt;p&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#구글-codejam-b번-문제-2016-round1-b&quot;&gt;[구글 Codejam] B번 문제 (2016 Round1 B)&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#문제-요약&quot;&gt;문제 요약&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#생각의-흐름&quot;&gt;생각&amp;nbsp;흐름&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#솔루션&quot;&gt;솔루션&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#코드&quot;&gt;코드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#정리&quot;&gt;정리&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;

&lt;p&gt;이 문제의 이름은 Close Match, 2016 Codejam Round1 B의 B번 문제다.  &lt;br /&gt;
문제 링크 : &lt;a href=&quot;https://code.google.com/codejam/contest/11254486/dashboard#s=p1&quot; target=&quot;_blank&quot;&gt;https://code.google.com/codejam/contest/11254486/dashboard#s=p1&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5175&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제-요약&quot;&gt;문제 요약&lt;/h2&gt;

&lt;p&gt;두 문자열 예를 들어 &lt;code&gt;1?&lt;/code&gt;, &lt;code&gt;2?&lt;/code&gt;이 주어진다. &lt;code&gt;?&lt;/code&gt;에 0 ~ 9 사이 숫자를 넣어서 두 수의 차이를 최소로 만드는 값을 출력하면 된다. 이 예시에서는 ?에 각각 9와 0을 넣으면 19와 20을 만들어지고 이 때 두수의 차이가 최소가 된다.&lt;/p&gt;&lt;p&gt;주어지는 두 문자열의 길이는 항상 동일하고 두 수의 차이를 최소로 만드는 여러 개의 답이 존재할 때 이 답들 중 첫번째 수가 가장 작은 답을 출력해야한다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5230&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;생각의-흐름&quot;&gt;생각&amp;nbsp;흐름&lt;/h2&gt;

&lt;p&gt;Large dataset에서 수의 최대 길이가 18 밖에 안되네? back tracking문제인가?  물음표마다 0~9 다 넣어보면 최대 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;58587787f2cc9c0b4bf47bfc3b3592f1&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-14-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MTUuMDQ5Mjc2NjA2OTYwNSAxODI0LjE3Nzg0ODk5ODQxMyA5NTYuMDQyODg2MzkwMzI0OCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC4xMzdleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIzMS4wMTU2cHgiIGhlaWdodD0iMTZweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMwIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc2IDMzMGMwIC0xNzIgLTYzIC0zNDQgLTIyNiAtMzQ0Yy0xNzEgMCAtMjI2IDE4NiAtMjI2IDM1MGMwIDE3NyA2OSAzNDAgMjMwIDM0MGMxMzEgMCAyMjIgLTE0MSAyMjIgLTM0NnpNMzgwIDMyNWMwIDIwOCAtNDQgMzI1IC0xMzIgMzI1Yy04MyAwIC0xMjggLTExOCAtMTI4IC0zMjFzNDQgLTMxNyAxMzAgLTMxN2M4NSAwIDEzMCAxMTUgMTMwIDMxM1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTM4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDQ1IDE1NWMwIC0xMDMgLTc3IC0xNjkgLTE5NyAtMTY5Yy0xMTMgMCAtMTkyIDY5IC0xOTIgMTYzYzAgNjkgMjMgMTA4IDEzMCAxODNjLTEwMyA4NSAtMTI0IDEyMyAtMTI0IDE4OGMwIDk2IDgzIDE1NiAxOTQgMTU2Yzk5IDAgMTY4IC02NSAxNjggLTE0M2MwIC03NSAtMzUgLTEwOSAtMTM0IC0xNjJjMTIzIC04MiAxNTUgLTEzNiAxNTUgLTIxNnpNMzU1IDUzM2MwIDY5IC00MSAxMTUgLTEwOSAxMTUgYy02NyAwIC0xMTAgLTM3IC0xMTAgLTk5czM3IC0xMDggMTI1IC0xNjBjNjggNDAgOTQgODIgOTQgMTQ0ek0yNzEgMjcybC01OSA0MGMtNTkgLTQ4IC04MCAtODkgLTgwIC0xNTRjMCAtOTIgNTEgLTE0NCAxMjcgLTE0NGM2NSAwIDExMCA0NSAxMTAgMTEwYzAgNjIgLTMwIDEwMiAtOTggMTQ4WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzAiIHg9IjUwNSIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMTAsNDEyKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zOCIgeD0iNTA1IiB5PSIwIi8+PC9nPjwvZz48L3N2Zz4=&quot; width=&quot;31.0156&quot; height=&quot;16&quot;&gt;&lt;/span&gt;&lt;/span&gt;가지인데 무식하게 다 해보는 방법으로는 안되겠구나..&lt;/p&gt;&lt;p&gt;예시를 보니까 각 자리에서 &lt;strong&gt;둘 다&lt;/strong&gt; 물음표일 때 (0, 0), (9, 0), (0, 9)로 채우고 &lt;strong&gt;한 쪽만&lt;/strong&gt; 물음표일 때 반대편 자리의 값을 대입하니까 차이가 최소가 되네? 그럼 이 경우만 고려하면 될까? 최악의 경우에  &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;f488fc5a9a9e393efbb1228e8613c294&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-17-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MTUuMDQ5Mjc2NjA2OTYwNSA3MTA5LjczMzQwNDU1Mzk2OCA5NjQuMDQyODg2MzkwMzI0OCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC4xMzdleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxMjEuMDYycHgiIGhlaWdodD0iMTZweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYxIDUxMGwtMTYgNGMyOSA5NSA5MiAxNjIgMTk2IDE2MmM5MyAwIDE1NiAtNTUgMTU2IC0xMzdjMCAtNDggLTI2IC05OCAtOTMgLTEzOGM0NCAtMTkgNjIgLTMxIDgzIC01M2MyOCAtMzEgNDQgLTc3IDQ0IC0xMjljMCAtNTMgLTE3IC0xMDIgLTQ2IC0xNDBjLTQ4IC02NCAtMTQzIC05MyAtMjMyIC05M2MtNzMgMCAtMTEyIDIxIC0xMTIgNTdjMCAyMSAxOCAzNiA0MSAzNmMxNyAwIDMzIC02IDYxIC0yNmMzNyAtMjYgNTggLTMxIDg2IC0zMSBjNzQgMCAxMzAgNjggMTMwIDE1M2MwIDc2IC0zNSAxMjUgLTEwNCAxNDVjLTIyIDcgLTQ1IDEwIC0xMDIgMTB2MTRjMzggMTMgNjQgMjQgODQgMzZjNDkgMjggODEgNzMgODEgMTM0YzAgNjggLTQyIDEwMiAtMTA4IDEwMmMtNjIgMCAtMTA4IC0zMiAtMTQ5IC0xMDZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ0NSAxNTVjMCAtMTAzIC03NyAtMTY5IC0xOTcgLTE2OWMtMTEzIDAgLTE5MiA2OSAtMTkyIDE2M2MwIDY5IDIzIDEwOCAxMzAgMTgzYy0xMDMgODUgLTEyNCAxMjMgLTEyNCAxODhjMCA5NiA4MyAxNTYgMTk0IDE1NmM5OSAwIDE2OCAtNjUgMTY4IC0xNDNjMCAtNzUgLTM1IC0xMDkgLTEzNCAtMTYyYzEyMyAtODIgMTU1IC0xMzYgMTU1IC0yMTZ6TTM1NSA1MzNjMCA2OSAtNDEgMTE1IC0xMDkgMTE1IGMtNjcgMCAtMTEwIC0zNyAtMTEwIC05OXMzNyAtMTA4IDEyNSAtMTYwYzY4IDQwIDk0IDgyIDk0IDE0NHpNMjcxIDI3MmwtNTkgNDBjLTU5IC00OCAtODAgLTg5IC04MCAtMTU0YzAgLTkyIDUxIC0xNDQgMTI3IC0xNDRjNjUgMCAxMTAgNDUgMTEwIDExMGMwIDYyIC0zMCAxMDIgLTk4IDE0OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYxIDUxMGwtMTYgNGMyOSA5NSA5MiAxNjIgMTk2IDE2MmM5MyAwIDE1NiAtNTUgMTU2IC0xMzdjMCAtNDggLTI2IC05OCAtOTMgLTEzOGM0NCAtMTkgNjIgLTMxIDgzIC01M2MyOCAtMzEgNDQgLTc3IDQ0IC0xMjljMCAtNTMgLTE3IC0xMDIgLTQ2IC0xNDBjLTQ4IC02NCAtMTQzIC05MyAtMjMyIC05M2MtNzMgMCAtMTEyIDIxIC0xMTIgNTdjMCAyMSAxOCAzNiA0MSAzNmMxNyAwIDMzIC02IDYxIC0yNmMzNyAtMjYgNTggLTMxIDg2IC0zMSBjNzQgMCAxMzAgNjggMTMwIDE1M2MwIDc2IC0zNSAxMjUgLTEwNCAxNDVjLTIyIDcgLTQ1IDEwIC0xMDIgMTB2MTRjMzggMTMgNjQgMjQgODQgMzZjNDkgMjggODEgNzMgODEgMTM0YzAgNjggLTQyIDEwMiAtMTA4IDEwMmMtNjIgMCAtMTA4IC0zMiAtMTQ5IC0xMDZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NDUgMTU1YzAgLTEwMyAtNzcgLTE2OSAtMTk3IC0xNjljLTExMyAwIC0xOTIgNjkgLTE5MiAxNjNjMCA2OSAyMyAxMDggMTMwIDE4M2MtMTAzIDg1IC0xMjQgMTIzIC0xMjQgMTg4YzAgOTYgODMgMTU2IDE5NCAxNTZjOTkgMCAxNjggLTY1IDE2OCAtMTQzYzAgLTc1IC0zNSAtMTA5IC0xMzQgLTE2MmMxMjMgLTgyIDE1NSAtMTM2IDE1NSAtMjE2ek0zNTUgNTMzYzAgNjkgLTQxIDExNSAtMTA5IDExNSBjLTY3IDAgLTExMCAtMzcgLTExMCAtOTlzMzcgLTEwOCAxMjUgLTE2MGM2OCA0MCA5NCA4MiA5NCAxNDR6TTI3MSAyNzJsLTU5IDQwYy01OSAtNDggLTgwIC04OSAtODAgLTE1NGMwIC05MiA1MSAtMTQ0IDEyNyAtMTQ0YzY1IDAgMTEwIDQ1IDExMCAxMTBjMCA2MiAtMzAgMTAyIC05OCAxNDhaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzciIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NDkgNjQ2bC0yMTIgLTY1NGgtNjVsMTk4IDU5NmgtMjE1Yy01OCAwIC03NSAtMTQgLTExNyAtODJsLTE4IDlsNjAgMTQ3aDM2OXYtMTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzMgMTY3aC0xMDN2LTE2N2gtNzh2MTY3aC0yODB2NjRsMzE0IDQ0NWg0NHYtNDQ1aDEwM3YtNjR6TTI5MiAyMzF2MzQzbC0yNDAgLTM0M2gyNDBaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMwIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc2IDMzMGMwIC0xNzIgLTYzIC0zNDQgLTIyNiAtMzQ0Yy0xNzEgMCAtMjI2IDE4NiAtMjI2IDM1MGMwIDE3NyA2OSAzNDAgMjMwIDM0MGMxMzEgMCAyMjIgLTE0MSAyMjIgLTM0NnpNMzgwIDMyNWMwIDIwOCAtNDQgMzI1IC0xMzIgMzI1Yy04MyAwIC0xMjggLTExOCAtMTI4IC0zMjFzNDQgLTMxNyAxMzAgLTMxN2M4NSAwIDEzMCAxMTUgMTMwIDMxM1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zNCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3MyAxNjdoLTEwM3YtMTY3aC03OHYxNjdoLTI4MHY2NGwzMTQgNDQ1aDQ0di00NDVoMTAzdi02NHpNMjkyIDIzMXYzNDNsLTI0MCAtMzQzaDI0MFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ0NSAxNTVjMCAtMTAzIC03NyAtMTY5IC0xOTcgLTE2OWMtMTEzIDAgLTE5MiA2OSAtMTkyIDE2M2MwIDY5IDIzIDEwOCAxMzAgMTgzYy0xMDMgODUgLTEyNCAxMjMgLTEyNCAxODhjMCA5NiA4MyAxNTYgMTk0IDE1NmM5OSAwIDE2OCAtNjUgMTY4IC0xNDNjMCAtNzUgLTM1IC0xMDkgLTEzNCAtMTYyYzEyMyAtODIgMTU1IC0xMzYgMTU1IC0yMTZ6TTM1NSA1MzNjMCA2OSAtNDEgMTE1IC0xMDkgMTE1IGMtNjcgMCAtMTEwIC0zNyAtMTEwIC05OXMzNyAtMTA4IDEyNSAtMTYwYzY4IDQwIDk0IDgyIDk0IDE0NHpNMjcxIDI3MmwtNTkgNDBjLTU5IC00OCAtODAgLTg5IC04MCAtMTU0YzAgLTkyIDUxIC0xNDQgMTI3IC0xNDRjNjUgMCAxMTAgNDUgMTEwIDExMGMwIDYyIC0zMCAxMDIgLTk4IDE0OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zOSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTU5IC0yMmwtMyAyMGMxNTIgMjcgMjY0IDEzMiAzMDQgMjk2Yy00MyAtNDIgLTkxIC01NyAtMTUwIC01N2MtMTA4IDAgLTE4MCA4MSAtMTgwIDIwM2MwIDEzNSA4OSAyMzYgMjA4IDIzNmM2NCAwIDExOCAtMjggMTU3IC03NmM0MCAtNTAgNjQgLTEyMiA2NCAtMjA2YzAgLTExNSAtNDAgLTIyNCAtMTIwIC0yOTdjLTg1IC03NyAtMTUwIC0xMDEgLTI4MCAtMTE5ek0zNjIgMzU1djM5YzAgMTY4IC00NSAyNTQgLTEzMiAyNTQgYy0zMCAwIC01NiAtMTIgLTczIC0zNGMtMjAgLTI3IC0zNSAtODYgLTM1IC0xNDBjMCAtMTE5IDQ4IC0xOTQgMTIzIC0xOTRjNDQgMCAxMTcgMjIgMTE3IDc1WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzMiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDUsNDEyKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zOCIgeD0iNTA1IiB5PSIwIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMTU5NiIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1NjQsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMyIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zOCIgeD0iNTA1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM3IiB4PSIxMDEwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM0IiB4PSIxNTE1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSIyMDIwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMwIiB4PSIyNTI1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM0IiB4PSIzMDMwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM4IiB4PSIzNTM1IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTM5IiB4PSI0MDQwIiB5PSIwIi8+PC9nPjwvZz48L3N2Zz4=&quot; width=&quot;121.062&quot; height=&quot;16&quot;&gt;&lt;/span&gt;&lt;/span&gt;이니까 다해봐도 되겠네? &lt;/p&gt;&lt;p&gt;놓친 반례가 없을까? &lt;code&gt;?10&lt;/code&gt;, &lt;code&gt;?9?&lt;/code&gt; 일 때 위 규칙대로 하면 010, 090인데 정답은 110, 090 이네. 그럼 둘다 물음표일 때 (0, 1), (1, 0)도 함께 고려해야하나? 그럼&lt;code&gt;?9&lt;/code&gt;, &lt;code&gt;20&lt;/code&gt;처럼 한쪽만 물음표 일 때도 그냥 반대편 값(2)를 대입하면 안되고 19, 20으로 답을 선택해야하네.. 두 상황 다 반대편 수랑 1차이 나는 것도 고려해야 하구나.. 아까 찾은 규칙이 잘못됐구나..&lt;/p&gt;&lt;p&gt;그럼 이 방법으로 코드 쓸까? 이 방법은 최악의 경우에 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;f65cebd80fd0a4acfd1422d1fb4944e4&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-18-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MjcuMDQ5Mjc2NjA2OTYwNSAxMzE5LjE3Nzg0ODk5ODQxMyA5NjguMDQyODg2MzkwMzI0OCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC4xMzdleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyMnB4IiBoZWlnaHQ9IjE2cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00MzggNjgxbC0zNiAtODVjLTMgLTcgLTExIC0xMyAtMjcgLTEzaC0xOTRsLTQwIC04NWMxNDMgLTI3IDE5MyAtNDkgMjUwIC0xMjhjMjYgLTM2IDM1IC03NCAzNSAtMTI3YzAgLTk2IC0zMCAtMTU4IC05OCAtMjA4Yy00NyAtMzQgLTEwMiAtNDkgLTE3MCAtNDljLTc1IDAgLTEyNyAyNCAtMTI3IDYyYzAgMjUgMTcgMzggNDUgMzhjMjMgMCA0MiAtNSA3NCAtMzFjMjggLTIzIDUxIC0zMiA3MSAtMzJjNzAgMCAxMzUgODMgMTM1IDE2OSBjMCA2NCAtMjIgMTE0IC02NyAxNTBjLTQ3IDM4IC0xMTcgNzAgLTIxMyA3MGMtOSAwIC0xMiAyIC0xMiA4YzAgMiAxIDUgMSA1bDEwOSAyMzdoMjA3YzIzIDAgMzIgNSA0OCAyNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTM4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDQ1IDE1NWMwIC0xMDMgLTc3IC0xNjkgLTE5NyAtMTY5Yy0xMTMgMCAtMTkyIDY5IC0xOTIgMTYzYzAgNjkgMjMgMTA4IDEzMCAxODNjLTEwMyA4NSAtMTI0IDEyMyAtMTI0IDE4OGMwIDk2IDgzIDE1NiAxOTQgMTU2Yzk5IDAgMTY4IC02NSAxNjggLTE0M2MwIC03NSAtMzUgLTEwOSAtMTM0IC0xNjJjMTIzIC04MiAxNTUgLTEzNiAxNTUgLTIxNnpNMzU1IDUzM2MwIDY5IC00MSAxMTUgLTEwOSAxMTUgYy02NyAwIC0xMTAgLTM3IC0xMTAgLTk5czM3IC0xMDggMTI1IC0xNjBjNjggNDAgOTQgODIgOTQgMTQ0ek0yNzEgMjcybC01OSA0MGMtNTkgLTQ4IC04MCAtODkgLTgwIC0xNTRjMCAtOTIgNTEgLTE0NCAxMjcgLTE0NGM2NSAwIDExMCA0NSAxMTAgMTEwYzAgNjIgLTMwIDEwMiAtOTggMTQ4WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDUsNDI0KSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zOCIgeD0iNTA1IiB5PSIwIi8+PC9nPjwvZz48L3N2Zz4=&quot; width=&quot;22&quot; height=&quot;16&quot;&gt;&lt;/span&gt;&lt;/span&gt; 가지라서 경우가 너무 많아서 8분안에 계산 못하고 코드가 너무 더러울것같다. 구글이 더러운 코드로 풀어야하는 문제를 냈을리가 없는데 다시 생각해보자.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;어렵다. 예시에서 찾아낸 규칙으로 고려해야하는 경우의 수를 줄이는 방법으로 풀려고 하는데 찾은 규칙에 반례가 없다는걸 확신 못 하겠다. 이럴 땐 규칙의 근거로 사용할 수 있게 &lt;code&gt;상황에 조건을 붙여서 제한&lt;/code&gt;해야한다.&lt;/p&gt;&lt;p&gt;두 수의 차이를 구하는 것에 주목해서 차이를 구할 때 &lt;strong&gt;내림 수가 없는 상황&lt;/strong&gt;, &lt;strong&gt;내림 수가 있는 상황&lt;/strong&gt;으로 하나의 문제를 제한 조건을 붙인 상황으로 나누어 풀자.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;내림 수가 없는 상황&lt;/strong&gt;이면 50720, 30520의 차이를 구할 때 처럼 크거나 같은 수의 각 자리수가 다른 수의 각 자리수보다 모두 크거나 같아야한다. 즉 ?가 있을 때 차이를 최소로 하려면&amp;nbsp;두 수를 같게 만들면 된다.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;내림 수가 있는 상황&lt;/strong&gt;이면 작은 수의 ?는 9로 큰 수의 ?는 0으로 채우면 된다.&lt;/p&gt;&lt;p&gt;주어진 문자열에 대해서 0 ~ i-1 자리에서 내림 수가 없고 i번째 자리에서 내림 수가 발생한다고 가정하자. 또 수의 대소에 대한 정보도 알야야 결정할 수 있으므로 대소도 가정하자.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5165&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;솔루션&quot;&gt;솔루션&lt;/h2&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;두 수 A, B에 대해 A &amp;lt; B 라고 가정하자.&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;i-1번째 자리 까지 내림 수가 없고 i번째 자리에서 내림 수가 발생한다고 가정하자.&lt;/li&gt;&lt;li rel=&quot;2&quot;&gt;0~i-1자리의 ?는 두 수를 같게 만들도록하고 i~N-1자리의 ?는 작은 수는 9, 큰수는 0으로 채운다.&lt;/li&gt;
&lt;li rel=&quot;3&quot;&gt;각 가정에 대해서 두 수를 결정하고 최소값이면 답으로 저장한다.&lt;/li&gt;&lt;li rel=&quot;3&quot;&gt;A, B를 바꿔서 위 과정을 한번 더 진행한다.&lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5445&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;코드&quot;&gt;코드&lt;/h2&gt;&lt;div&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/0e0837adf6d1875a73ca90f420412d9b.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5382&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;정리&quot;&gt;정리&lt;/h2&gt;

&lt;p&gt;규칙을 찾을 때 고려 못한 상황에서 반례가 있을거 같으면 가정을 해서 상황에 제약을 걸고 문제를 쪼개서 풀자.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5295&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>문제</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/22</guid>
      <comments>https://bowbowbow.tistory.com/22#entry22comment</comments>
      <pubDate>Fri, 6 May 2016 10:49:29 +0900</pubDate>
    </item>
    <item>
      <title>[pintos] 2. Priority Scheduling</title>
      <link>https://bowbowbow.tistory.com/21</link>
      <description>&lt;title&gt;[pintos] 2. Priority Scheduling&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-19&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5250&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;pintos-2-priority-scheduling&quot;&gt;목차&lt;/h1&gt;

&lt;hr&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#pintos-2-priority-scheduling&quot;&gt;[pintos] 2. Priority Scheduling&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#과제-목표&quot;&gt;과제 목표&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#solution&quot;&gt;Solution&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#아이디어&quot;&gt;아이디어&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#구현&quot;&gt;구현&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#결과&quot;&gt;결과&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5277&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;과제-목표&quot;&gt;과제 목표&lt;/h2&gt;

&lt;p&gt;현재 핀토스에서는 스레드를 &lt;code&gt;우선순위&lt;/code&gt;에 &lt;code&gt;상관없이&lt;/code&gt; 실행하고 있습니다. 이 과제의 목표는 우선순위 &lt;code&gt;순서대로&lt;/code&gt; 스레드가 실행되도록 하는 것입니다. &lt;/p&gt;&lt;p&gt;그럼 먼저 CPU가 어떤 순서로 스레드를 실행하는지 알아야합니다.  CPU는 ready_list에 있는 스레드를 순서대로 실행합니다. 현재 핀토스에서는 ready_list에 스레드를 추가할 때 리스트에서 우선순위에 맞게 중간에 삽입하는 것이 아니라 단순히 제일 뒤에 추가하고 있습니다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5330&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;solution&quot;&gt;Solution&lt;/h2&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5305&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;아이디어&quot;&gt;아이디어&lt;/h3&gt;

&lt;p&gt;이 문제는 ready_list에 thread를 삽입할 때 우선순위가 &lt;code&gt;정렬되도록 삽입&lt;/code&gt;하도록 수정해서 해결할 수 있습니다. 또한 현재 CPU를 &lt;code&gt;점유&lt;/code&gt;하고 있는 스레드의 우선순위가 ready_list에서 &lt;code&gt;우선순위가 가장 높은 스레드&lt;/code&gt;보다 우선순위보다 낮으면 이 스레드가 CPU를 선점할 수 있도록 해야합니다.&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1247&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;구현&quot;&gt;구현&lt;/h3&gt;

&lt;p&gt;먼저 ready_list를스레드의 우선순위가 정렬되도록 하기 위해 스레드를 추가할 때  핀토스에 내장된 함수인 &lt;code&gt;list_insert_ordered&lt;/code&gt;함수를 사용합니다. 이때 사용할 비교함수 &lt;strong&gt;thread_compare_priority&lt;/strong&gt;를 를 만들어합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1521&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/threads/thread.c */&lt;/span&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_compare_priority&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; list_elem *a,&lt;br /&gt;                         &lt;span class=&quot;hljs-keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; list_elem *b,&lt;br /&gt;                         &lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; *aux UNUSED)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;return&lt;/span&gt; list_entry (a, &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread, elem)-&amp;gt;priority&lt;br /&gt;       &amp;gt; list_entry (b, &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread, elem)-&amp;gt;priority;  &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 thread가 &lt;code&gt;unblock 될 때&lt;/code&gt; 우선순위가 정렬되로록 ready_list에 스레드를 추가할 수 있도록 &lt;strong&gt;thread_unblock함수&lt;/strong&gt; 내부에서 list_push_back을 &lt;code&gt;list_insert_orderd&lt;/code&gt;로 교체해줍니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1905&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/threads/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_unblock&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread *t)&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;enum&lt;/span&gt; intr_level old_level;&lt;br /&gt;&lt;br /&gt;  ASSERT (is_thread (t));&lt;br /&gt;&lt;br /&gt;  old_level = intr_disable ();&lt;br /&gt;  ASSERT (t-&amp;gt;status == THREAD_BLOCKED);&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;//list_push_back (&amp;amp;ready_list, &amp;amp;t-&amp;gt;elem); 이 부분 지움&lt;/span&gt;&lt;br /&gt;  list_insert_ordered (&amp;amp;ready_list, &amp;amp;t-&amp;gt;elem, thread_compare_priority, &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;); &lt;span class=&quot;hljs-comment&quot;&gt;//이 부분 추가&lt;/span&gt;&lt;br /&gt;  t-&amp;gt;status = THREAD_READY;&lt;br /&gt;  intr_set_level (old_level);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;마찬가지로 현재 CPU점유 중인 스레드가 CPU 점유를 양보하고 ready_list에  스레드를 추가할 때  사용하는 함수인 thread_yield() 내부에서 ready_list에 삽입되는 부분을 list_push_back을 &lt;code&gt;list_insert_orderd&lt;/code&gt;로 교체해줍니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-2618&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/threads/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_yield&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;)&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread *cur = thread_current ();&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;enum&lt;/span&gt; intr_level old_level;&lt;br /&gt;&lt;br /&gt;  ASSERT (!intr_context ());&lt;br /&gt;&lt;br /&gt;  old_level = intr_disable ();&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt; (cur != idle_thread) &lt;br /&gt;    list_insert_ordered (&amp;amp;ready_list, &amp;amp;cur-&amp;gt;elem, thread_compare_priority, &lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;); &lt;span class=&quot;hljs-comment&quot;&gt;//이 부분 추가&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;hljs-comment&quot;&gt;//list_push_back (&amp;amp;ready_list, &amp;amp;cur-&amp;gt;elem); //이 부분 삭제&lt;/span&gt;&lt;br /&gt;  cur-&amp;gt;status = THREAD_READY;&lt;br /&gt;  schedule ();&lt;br /&gt;  intr_set_level (old_level);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 ready_list에 리스트서 가장 높은 우선순위를 가진 스레드, 즉 첫번째 스레드가 &lt;code&gt;현재 CPU 점유 중&lt;/code&gt;인 스레드 보다 우선순위가 높으면 첫번째 스레드가 CPU를 점유해야되겠죠? 그래서 ready_list의 첫번째 스레드가 CPU 점유 중인 스레드 보다 우선순위가 높으면 CPU점유를 양보하는 함수 &lt;strong&gt;test_max_priority함수&lt;/strong&gt;를 만듭니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5362&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/threads/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-title&quot;&gt;test_max_priority&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt; (!list_empty (&amp;amp;ready_list) &amp;amp;&amp;amp;&lt;br /&gt;      thread_current ()-&amp;gt;priority &amp;lt;&lt;br /&gt;      list_entry (list_front (&amp;amp;ready_list), &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread, elem)-&amp;gt;priority){&lt;br /&gt;      thread_yield ();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;test_max_priority 함수&lt;/strong&gt;는 언제 호출되야할까요? 스레드가 &lt;code&gt;새로 생성&lt;/code&gt;되서 ready_list에 추가되거나, 현재 실행중인 스레드의 우선순위가 &lt;code&gt;재 조정되는 순간&lt;/code&gt;에  ready_list의 첫번째 스레드가 CPU 점유 중인 스레드 보다 우선순위가 높은 상황이 발생할 수 있습니다. 따라서 스레드를 새로 생성하는 함수인 &lt;strong&gt;thread_create 함수&lt;/strong&gt;와 현재 스레드의 우선순위를 재조정하는 &lt;strong&gt;thread_set_priority함수&lt;/strong&gt; 의 내부에 &lt;code&gt;test_max_priority()&lt;/code&gt;를 추가합니다. (함수의 마지막 부분에 추가하면 됩니다.)&lt;/p&gt;

&lt;hr&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-3621&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;결과&quot;&gt;결과&lt;/h2&gt;

&lt;p&gt;pintos/src/threads 폴더로 이동합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5377&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-bash hljs&quot;&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;umask&lt;/span&gt; &lt;span class=&quot;hljs-number&quot;&gt;000&lt;/span&gt;&lt;br /&gt;make clean&lt;br /&gt;make&lt;br /&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;cd&lt;/span&gt; build&lt;br /&gt;make check&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;위 명령어 5개를 순서대로 터미널에 입력하면 아래 스크린 샷과 같이 3개의 테스트가 추가로 통과함을 확인할 수 있습니다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 414px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/25558C46571ADA2002&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F25558C46571ADA2002&quot; width=&quot;500&quot; height=&quot;414&quot; alt=&quot;make check 결과&quot; filename=&quot;결과.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 414px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 414px;;&quot;&gt;make check 결과&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;umask 000을 하는 이유는 새로 생성되는 파일의 퍼미션을 777로 설정하기 위해서 입니다. make check를 할때 pintos/tests/thread에 있는 테스트 코드를 실행하며 정답과 비교하기 위해 출력 파일을 생성합니다. 이 때 출력파일을 쓸 권한이 있어야하고 기본 퍼미션으로 쓰기 권한을 할당하기 위해서 umask 000명령을 입력합니다. 777권한 까지는 줄 필요가 없지만 상용서비스를 만드는게 아니기 때문에 이렇게 했습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5378&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>운영체제</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/21</guid>
      <comments>https://bowbowbow.tistory.com/21#entry21comment</comments>
      <pubDate>Sat, 23 Apr 2016 11:13:10 +0900</pubDate>
    </item>
    <item>
      <title>[pintos] 1. Alarm System Call</title>
      <link>https://bowbowbow.tistory.com/20</link>
      <description>&lt;title&gt;[pintos] Alarm System Call&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-15&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-14227&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;pintos-alarm-system-call&quot;&gt;목차&lt;/h1&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#pintos-alarm-system-call&quot;&gt;[pintos] Alarm System Call&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#과제-목표&quot;&gt;과제 목표&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#busy-waiting-구현-살펴보기&quot;&gt;Busy Waiting 구현 살펴보기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sleep-wake-up&quot;&gt;Sleep / Wake up&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#아이디어&quot;&gt;아이디어&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#구현&quot;&gt;구현&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#결과&quot;&gt;결과&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1666&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;&lt;h2 style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 400px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/250C744E5719F34F04&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F250C744E5719F34F04&quot; width=&quot;400&quot; height=&quot;400&quot; filename=&quot;2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 400px;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 id=&quot;과제-목표&quot;&gt;과제 목표&lt;/h2&gt;

&lt;p&gt;운영체제는 프로세스를 잠시 재웠다가 일정 시간이 지나면 다시 깨우는 기능이 있습니다. 이 기능을 &lt;code&gt;알람(Alarm)&lt;/code&gt;이라고 부릅니다. &lt;/p&gt;
&lt;p&gt;Pintos의 알람의 기능은 기존에 &lt;code&gt;Busy Waiting&lt;/code&gt; 방식을 이용해서 구현되어 있습니다.  이 방법을 3시간 낮잠자기에 비유하면 아래와 같습니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;낮잠 자기 시작&lt;/strong&gt; -&amp;gt; 1분후 깸 -&amp;gt; &lt;strong&gt;1분 지났네..?&lt;/strong&gt; -&amp;gt; 다시 자야지  -&amp;gt; 1분후 깸 -&amp;gt; &lt;strong&gt;2분 지났네..?&lt;/strong&gt; -&amp;gt; 다시 자야지 -&amp;gt; … -&amp;gt; 1분 후 깸 -&amp;gt; &lt;strong&gt;2시간 59분 지났네..?&lt;/strong&gt; -&amp;gt; 다시 자야지 -&amp;gt; 1분 후 깸 -&amp;gt; &lt;strong&gt;3시간 지났네?&lt;/strong&gt; 이제 낮잠이 끝났구나…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이렇게 잠을 자면 자는게 자는게 아니겠죠..? 재우는게 미안할 만큼 &lt;code&gt;핀토스의 프로세스&lt;/code&gt;는 현재 이렇게 &lt;strong&gt;바쁘고&lt;/strong&gt; &lt;strong&gt;힘들게&lt;/strong&gt; 잠을 자고 있습니다.  즉 잠자는데 많은 시스템 자원(CPU점유, 소모 전력)을 낭비하고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Alarm System Call&lt;/code&gt; 과제의 목표는 핀토스가 고생안하고 정해진 시간 동안 푹자고 일어날 수 있도록 하는 것입니다. 즉 프로세스를 재울 때 시스템 자원 낭비를 최소화하는 것이 입니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;처음에 핀토스 운영체제에서 &lt;strong&gt;프로세스와 스레드를 동일시&lt;/strong&gt;하는 것을 보고 혼란을 겪었습니다. 왜 그럴까요? 최신 운영체제에서 멀티스레딩의 지원은 너무나 당연하지만 운영체제를 교육할 목적으로 만들어진 핀토스는 프로세스당 하나의 스레드로 구성되어있습니다. 그래서 프로세스와 스레드를 동일시 하여 구현하게 됩니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이 문제를 해결하기 위해 먼저 기존의 구현방식인 &lt;code&gt;Busy Waiting&lt;/code&gt;을 살펴보고 문제의 해결책은 &lt;code&gt;Sleep / Wake up&lt;/code&gt; 구현을 알아봅시다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-2074&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;busy-waiting-구현-살펴보기&quot;&gt;Busy Waiting 구현 살펴보기&lt;/h2&gt;

&lt;p&gt;기존 잠재우기의 구현 코드는 아래와 같습니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-14264&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/device/timer.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;timer_sleep&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; start = timer_ticks();&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;while&lt;/span&gt;(timer_elapsed(start) &amp;lt; ticks)&lt;br /&gt;        thread_yield(); &lt;span class=&quot;hljs-comment&quot;&gt;//현재 CPU점유 다른 스레드에게 양보하고 ready_list 제일 뒤로 이동&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;timer_sleep함수는 현재 스레드를 ticks 시간 동안 잠재우는 함수입니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;tick(틱)&lt;/code&gt;이란 컴퓨터가 켜지고 1ms에 1씩 증가하는 값입니다. 하드웨어에 달린 타이머의해 증가합니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이 함수가 호출된 스레드는 while문 내부에 진입합니다. 그리고 스케줄링에 의해 자신의 차례가 올 때 마다 코드가 다시 실행되고 &lt;strong&gt;timer_elapsed(start)&lt;/strong&gt; 함수를 호출합니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;timer_elapsed(start)는 timer_sleep이 호출된 시점에서 몇 tick이 지났는지를 반환하는 함수입니다. 2.5초 전에 timer_sleep 함수가 호출됬다면 &lt;strong&gt;timer_elasped(start)&lt;/strong&gt;는 2500을 반환합니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이 함수의 반환값이  timer_sleep의 인자인 ticks값보다 작으면 thread_yield()를 호출하여 ready list 에 있는 다른 스레드를 위해 CPU 점유를 반환하고 ready list 가장 뒤로 이동합니다.   이 과정은 ticks 동안 반복되고 이러한 방식으로 핀토스는 timer_sleep을 구현합니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;내용을 이해하기 위해 프로세스 전이 상태 개념을 이해하고 있어야합니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;푹쉬지 못하고 고생하는 프로세스를 위해 이제 해결책을 마련해줍시다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4418&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;sleep-wake-up&quot;&gt;Sleep / Wake up&lt;/h2&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-14283&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;아이디어&quot;&gt;아이디어&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Sleep / Wake up&lt;/code&gt; 방식은 우리가 아는 상식적인 잠자기 방식입니다. 즉 3시간 낮잠자기로 했으면 푹자다가 3시간 후에 알림 시간 소리를 듣고 일어나는 방식입니다. &lt;/p&gt;
&lt;p&gt;이전 방법의 &lt;code&gt;가장 큰 문제점&lt;/code&gt;은 편히 자야할 애들(스레드들)을 &lt;code&gt;Ready 상태&lt;/code&gt;로 둬서 스케줄링 되게 했다는 것입니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;상태가 Ready인 스레드는 스케줄링 되어 ready_list에 줄을 서고 자신의 차례가 오면 CPU에 의해 프로세싱 됩니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이 문제점을 해결하는 &lt;code&gt;핵심 아이디어&lt;/code&gt;는 자야할 애들을 방해받지 않게 &lt;code&gt;Block 상태&lt;/code&gt;로 만들고 sleep_list에 넣어두고 깰 시간이 되면 친절하게 찾아가서 다시 &lt;strong&gt;Ready 상태&lt;/strong&gt;로 바꿔주는 것입니다. 이러면 편히 잘 수 있겠죠? 이제 어떻게 구현해야할지 살펴봅시다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-5265&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h3 id=&quot;구현&quot;&gt;구현&lt;/h3&gt;

&lt;p&gt;loop기반으로 wating을 하지않으면 각 스레드마다 언제 깨어나야할지에 대한 정보를 각각 가지고 있어야합니다.  이 변수를 thread 구조체에 추가합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-9126&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.h */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread{&lt;br /&gt;    ...&lt;br /&gt;    &lt;span class=&quot;hljs-comment&quot;&gt;/* 깨어나야 할 tick을 저장할 변수 추가 */&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; wakeup_tick;&lt;br /&gt;    ...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 잠자는 애들을 모아둘 공간이 필요하겠죠? 이를 위해 &lt;code&gt;sleep_list&lt;/code&gt; 구조체를 추가합니다.  &lt;br /&gt;
또 지금 깨워야할 애들이 없는데 깨우려고 찾아다니면 낭비겠죠? 이 낭비를 막기 위해 잠자는 애들중에 가장 먼저 일어날 친구가 일어날 시각을 변수 &lt;code&gt;next_tick_to_awake&lt;/code&gt;를 추가합니다. 그리고 sleep_list를 사용할 수 있도록  &lt;strong&gt;thread_init함수&lt;/strong&gt;에서 sleep_list를 초기화하는 코드를 추가합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-11002&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;hljs-built_in&quot;&gt;list&lt;/span&gt; sleep_list; &lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; &lt;span style=&quot;line-height: 21.6px;&quot;&gt;next_tick_to_awake&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_init&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;    ...&lt;br /&gt;    list_init (&amp;amp;sleep_list);&lt;br /&gt;    ...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 next_tick_to_awake변수를 관리하는 함수를 만들어 줍니다. 이 두 함수는 next_tick_to_awake에 대한 getter와 setter 역할을 합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-13191&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;// 가장 먼저 일어나야할 스레드가 일어날 시각을 반환함&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;update_next_tick_to_awake&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;/* next_tick_to_awake 가 깨워야 할 스레드의 깨어날 tick값 중 가장 작은 tick을 갖도록 업데이트 함 */&lt;/span&gt;&lt;br /&gt;  next_tick_to_awake = (next_tick_to_awake &amp;gt; ticks) ? ticks : next_tick_to_awake;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;// 가장 먼저 일어나야할 스레드가 일어날 시각을 반환함&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; get_next_tick_to_awake(&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;){&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;return&lt;/span&gt; next_tick_to_awake;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 스레드를 재워야하겠죠? 재우는 함수 &lt;code&gt;thread_sleep&lt;/code&gt;를 구현합니다. 재울 애들은 &lt;strong&gt;sleep_list&lt;/strong&gt;에 추가하고 &lt;strong&gt;block상태&lt;/strong&gt;로 만들어주면 됩니다. 그런데 이 과정에서 &lt;code&gt;인터럽트&lt;/code&gt;의 방해를 무시하고 온전히 함수 내부를 실행할 수 있어야하기 때문에 처음에 &lt;strong&gt;intr_disable()&lt;/strong&gt;함수를 통해 인터럽트를 받아들이지 않도록 하고 내부가 다 실행되고 마지막 부분에 다시 &lt;strong&gt;intr_set_level(old_level)&lt;/strong&gt; 함수를 통해 인터럽트를 받아들이도록 합니다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;이때 현재 스레드가 &lt;code&gt;idle 스레드&lt;/code&gt;이면 슬립되지 않도록 해야합니다. idle 스레드란 운영체제가 초기화되고 ready_list가 생성되는데 이때 ready_list에 첫번째로 추가되는 스레드입니다. 굳이 이 스레드가 필요한 이유는 CPU가 실행상태를 유지하기 위해 실행할 스레드 하나 필요해서 입니다. &lt;/p&gt;
  
  &lt;p&gt;CPU가 할일이 없으면 아얘 꺼져버렸다가 할일이 생기면 다시 켜는방식에서 소모되는 전력보다 무의미한 일이라도 하고 있는게 &lt;strong&gt;더 적은 전력&lt;/strong&gt;을 소모하기 때문입니다. &lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-12835&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;//스레드를 ticks시각 까지 재우는 함수&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_sleep&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread *cur;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;// 인터럽트를 금지하고 이전 인터럽트 레벨을 저장함 &lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;enum&lt;/span&gt; intr_level old_level;&lt;br /&gt;  old_level = intr_disable();&lt;br /&gt;&lt;br /&gt;  cur = thread_current(); &lt;span class=&quot;hljs-comment&quot; style=&quot;line-height: 21.6px;&quot;&gt;  // idle 스레드는 sleep 되지 않아야 함 &lt;/span&gt;&lt;br style=&quot;line-height: 21.6px;&quot;&gt;&lt;span style=&quot;line-height: 21.6px;&quot;&gt;  ASSERT(cur != idle_thread);&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;//awake함수가 실행되어야 할 tick값을 update&lt;/span&gt;&lt;br /&gt;  update_next_tick_to_awake(cur-&amp;gt;&lt;span style=&quot;line-height: 21.6px;&quot;&gt; wakeup_tick&lt;/span&gt; = ticks);&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;/* 현재 스레드를 슬립 큐에 삽입한 후에 스케줄한다. */&lt;/span&gt;&lt;br /&gt;  list_push_back(&amp;amp;sleep_list, &amp;amp;cur-&amp;gt;elem);&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;//이 스레드를 블락하고 다시 스케줄될 때 까지 블락된 상태로 대기 &lt;/span&gt;&lt;br /&gt;  thread_block();&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;/* 인터럽트를 다시 받아들이도록 수정 */&lt;/span&gt;&lt;br /&gt;  intr_set_level(old_level);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 재우고 sleep_list에 넣어뒀으니  sleep_list에서 꺼내서 깨울 함수가 필요하겠죠?  이 함수가 &lt;code&gt;thread_awake 함수&lt;/code&gt;입니다.  sleep list의 모든 entry를 순회하면서 현재 tick이 깨워야 할 tick 보다 작다면 슬립 큐에서 제거하고 &lt;strong&gt;unblock&lt;/strong&gt;해줍니다.  크다면 next_tick_to_awake변수를 갱신하기 위해 &lt;strong&gt;update_next_tick_to_awake()&lt;/strong&gt;를 호출한다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-13898&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;//푹 자고 있는 스레드 중에 깨어날 시각이 ticks시각이 지난 애들을 모조리 깨우는 함수&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_awake&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t wakeup_tick)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;  next_tick_to_awake = INT64_MAX;&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; list_elem *e;&lt;br /&gt;  e = list_begin(&amp;amp;sleep_list);&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;while&lt;/span&gt;(e != list_end(&amp;amp;sleep_list)){&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread * t = list_entry(e, &lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; thread, elem);&lt;br /&gt;&lt;br /&gt;    &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;(wakeup_tick &amp;gt;= t-&amp;gt;&lt;span style=&quot;line-height: 21.6px;&quot;&gt;wakeup_tick&lt;/span&gt;){&lt;br /&gt;      e = list_remove(&amp;amp;t-&amp;gt;elem);&lt;br /&gt;      thread_unblock(t);&lt;br /&gt;    }&lt;span class=&quot;hljs-keyword&quot;&gt;else&lt;/span&gt;{&lt;br /&gt;      e = list_next(e);&lt;br /&gt;      update_next_tick_to_awake(t-&amp;gt;&lt;span style=&quot;line-height: 21.6px;&quot;&gt;wakeup_tick&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 이 네 함수들을 컴파일러가 인식할 수 있게 thread.h에 프로토타입을 선언합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-13780&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/thread/thread.h */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;//스레드를 ticks시각까지 재우는 함수.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_sleep&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;//푹 자고 있는 스레드 중에 깨어날 시각이 ticks시각이 지난 애들을 모조리 깨우는 함수&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;thread_awake&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;// 가장 먼저 일어나야할 스레드가 일어날 시각을 반환함&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; get_next_tick_to_awake(&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt;);&lt;br /&gt;&lt;span class=&quot;hljs-comment&quot;&gt;// 가장 먼저 일어날 스레드가 일어날 시각을 업데이트함&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;update_next_tick_to_awake&lt;/span&gt;&lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt;&lt;/span&gt;;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이제 스레드를 실제로 잠재우는 함수인 &lt;code&gt;timer_sleep&lt;/code&gt;가 불렸을 때 반복문을 돌면서 기다는 부분을 지우고 방금 만들어준 &lt;code&gt;thread_sleep&lt;/code&gt;함수를 호출하도록 변경합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-13500&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/device/timer.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;timer_sleep&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(int64_t ticks)&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;int64_t&lt;/span&gt; start = timer_ticks ();&lt;br /&gt;&lt;br /&gt;  ASSERT (intr_get_level () == INTR_ON);&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;/* &lt;br /&gt;  기존의 busy waiting을 유발하는 코드를 삭제하고&lt;br /&gt;  새로 구현한 thread를 sleep list에 삽입하는 함수 호출함&lt;br /&gt;  */&lt;/span&gt;&lt;br /&gt;  thread_sleep(start + ticks);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;그리고 timer 하드웨어 의해 매 틱마다 타이머 인터럽트가 걸리는데 그때 timer_interrupt함수가 호출됩니다. 매 틱마다 get_next_tick_to_awake()함수를 통해 현재 깨워야할 스레드가 있는지 정보를 얻고 있다면 thread_awake(ticks) 함수를 호출하도록 합니다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-14343&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;pre class=&quot;prettyprint hljs-light&quot;&gt;&lt;code class=&quot;language-cpp hljs&quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* pintos/src/device/timer.c */&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot;&gt;timer_interrupt&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;(&lt;span class=&quot;hljs-keyword&quot;&gt;struct&lt;/span&gt; intr_frame *args)&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;   ...&lt;br /&gt;  &lt;span class=&quot;hljs-comment&quot;&gt;/* 매 tick마다 sleep queue에서 깨어날 thread가 있는지 확인하여,&lt;br /&gt;  깨우는 함수를 호출하도록 함. */&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;(get_next_tick_to_awake() &amp;lt;= ticks){&lt;br /&gt;    thread_awake(ticks);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-16737&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;결과&quot;&gt;결과&lt;/h2&gt;

&lt;p&gt;pintos/src/thread 폴더에서 &lt;b&gt;sudo make&lt;/b&gt;로 컴파일 후 &lt;b&gt;pintos – -q run alarm-multiple&lt;/b&gt;을 실행하면 아래와 같은 결과가 나타납니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 353px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/255BC1475719F36605&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F255BC1475719F36605&quot; width=&quot;500&quot; height=&quot;353&quot; alt=&quot;실행결과&quot; filename=&quot;결과.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 353px;&quot; original=&quot;yes&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 353px;;&quot;&gt;실행결과&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이 때 &lt;code&gt;idle tick&lt;/code&gt;이 pintos를 처음 설치했을 때 처럼 0이 아니라 550값이 출력되었습니다. &lt;code&gt;idle 스레드&lt;/code&gt;은 위에서도 설명했지만 CPU 가 아무 할일도 없을 때 실행되는 스레드로 &lt;code&gt;idle tick&lt;/code&gt;는 idle 스레드가 실행된 tick수, 즉 시간 입니다. 550 idle ticks 는 idle 스레드가 550ms 실행되었음을 의미합니다.&lt;/p&gt;
&lt;p&gt;이 변화는 이전에는 &lt;strong&gt;Busy-Waiting 방식&lt;/strong&gt;이라서 Sleep상태에서도 여전히 CPU가 점유되고 있었고idle 스레드가 실행될 일이 없었으나 &lt;strong&gt;Sleep / Wake up 방식&lt;/strong&gt;으로 변경 한 후 CPU가 잠자는 스레드를 점유하지 않고 idle 스레드를 점유했음을 알 수 있습니다. &lt;/p&gt;
&lt;p&gt;즉 프로세스, 스레드가 잠자는 동안 &lt;strong&gt;시스템 자원을 낭비&lt;/strong&gt;하지 않도록 수정하는 과제의 목표를 달성한 것입니다!&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-15028&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-footnotes&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>운영체제</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/20</guid>
      <comments>https://bowbowbow.tistory.com/20#entry20comment</comments>
      <pubDate>Fri, 22 Apr 2016 18:32:55 +0900</pubDate>
    </item>
    <item>
      <title>[구글 Codejam] C번 문제 (2016 Round1 A)</title>
      <link>https://bowbowbow.tistory.com/19</link>
      <description>&lt;title&gt;[Code jam] C번 문제 (2016 Round1 A)&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-1735&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4783&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;code-jam-c번-문제-2016-round1-a&quot;&gt;목차&lt;/h1&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;#code-jam-c번-문제-2016-round1-a&quot;&gt;[구글 Codejam] C번 문제 (2016 Round1 A)&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#문제-요약&quot;&gt;문제 요약&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#입력-예시&quot;&gt;입력 예시&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#생각의-흐름&quot;&gt;생각&amp;nbsp;흐름&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#솔루션&quot;&gt;솔루션&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#코드&quot;&gt;코드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;이 문제의 이름은 &lt;strong&gt;BFFs&lt;/strong&gt;이고 &lt;strong&gt;2016 Round1 A&lt;/strong&gt;의 &lt;strong&gt;C번 문제&lt;/strong&gt;이다. &lt;br /&gt;
문제 링크 : &lt;a href=&quot;https://code.google.com/codejam/contest/4304486/dashboard#s=p2&quot; target=&quot;_blank&quot;&gt;https://code.google.com/codejam/contest/4304486/dashboard#s=p2&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1737&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제-요약&quot;&gt;문제 요약&lt;/h2&gt;

&lt;p&gt;어린이집에 N명의 어린이들이 있다. 이 어린이집에서는 원으로 둘러 앉아서 하는 활동을 한다. 이때 어린이 왼쪽 또는 오른쪽에 자기가 생각하는 베스트 프랜드가 앉아있어야한다. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;베스트 프렌드는 반드시 한명이다. 불행히도 철수는 영희가 자신의 베스트 프랜드라고 생각하더라도 영희는 철수를 베스트 프랜드라고 생각하지 않을 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;각 어린이들의 자신의 베스트 프랜드가 주어질 때 최대 몇 명이 둘러 앉아서 활동을 할 수 있는지를 구해야한다. 이때 각 어린이들은 1~N사이의 서로다른 학생 번호를 가진다.&lt;/p&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-2242&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;입력-예시&quot;&gt;입력 예시&lt;/h2&gt;

&lt;p&gt;4 &lt;br /&gt;
2 3 4 1&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;어린이 4명이 있다. 각 어린이의 베스트 프랜드는 아래 표와 같음을 알 수 있다.&lt;/p&gt;
  
  &lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;어린이 번호&lt;/th&gt;
  &lt;th&gt;자신의 베스트 프랜드 어린이 번호&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
  &lt;td&gt;1&lt;/td&gt;
  &lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;2&lt;/td&gt;
  &lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;3&lt;/td&gt;
  &lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;4&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

  
  &lt;p&gt;이때 &lt;strong&gt;그림1&lt;/strong&gt;과 같이 앉으면 모든 어린이의 왼쪽 또는 오른쪽에 자신의 베스트 프랜드가 있기 때문에 이 입력에 대해 최대 4명의 어린이가 원형으로 둘러앉아 활동을 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 300px; width: 300px; height: 282px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/214E80365712685A07&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F214E80365712685A07&quot; width=&quot;300&quot; height=&quot;282&quot; alt=&quot;그림1&quot; filename=&quot;1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 300px; height: 282px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 300px; height: 282px;;&quot;&gt;그림1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4579&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;생각의-흐름&quot;&gt;생각&amp;nbsp;흐름&lt;/h2&gt;

&lt;p&gt;각 어린이를 정점으로 나타내고 어린이의 베스트 프랜드를 방향그래프로 표현한다. 위 입력 예시는 &lt;strong&gt;그림2&lt;/strong&gt;와 같은 방향그래프로 나타낼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 300px; width: 300px; height: 294px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24676234571268882E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24676234571268882E&quot; width=&quot;300&quot; height=&quot;294&quot; alt=&quot;그림2&quot; filename=&quot;2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 300px; height: 294px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 300px; height: 294px;;&quot;&gt;그림2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그러면 직관적으로 구성된 방향그래프에서 나타나는 &lt;b&gt;사이클의 최대 길이&lt;/b&gt;를 출력하면 답을 구할 수 있다는 생각이 든다.&lt;/p&gt;
&lt;p&gt;그러나 4번째 입력 예시를 직접 그려보면 &lt;strong&gt;그림3&lt;/strong&gt;과 같은 방향그래프로 나타낼 수 있는데&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;4번째 입력 예시&lt;/strong&gt; &lt;br /&gt;
  10 &lt;br /&gt;
  7 8 10 10 9 2 9 6 3 3&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 442px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/23598A3B571268A11F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F23598A3B571268A11F&quot; width=&quot;500&quot; height=&quot;442&quot; alt=&quot;그림3&quot; filename=&quot;3.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 442px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 442px;;&quot;&gt;그림3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이 그래프에서 3, 10번 정점으로 구성된 길이2 사이클 밖에 없지만 최대 6명(7 9 3 10 4 1번어린이)가 원형으로 같이 앉을 수 있다고 &lt;b&gt;문제에 힌트&lt;/b&gt;가 주어진다. 이 힌트가 없었다면 훨씬 더 많은 사람들이 틀렸을거 같다.&lt;/p&gt;
&lt;p&gt;그림3의 그래프에서 최대 6명의 어린이가 원형으로 앉은것을 나타내면 &lt;strong&gt;그림4&lt;/strong&gt;와 같이&amp;nbsp;나타낼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 381px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/256D383C571268B919&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F256D383C571268B919&quot; width=&quot;400&quot; height=&quot;381&quot; alt=&quot;그림4&quot; filename=&quot;4.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 381px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 400px; height: 381px;;&quot;&gt;그림4&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그러면 길이가 2인 사이클의 한쪽 정점을 가리키는 &lt;strong&gt;&lt;span style=&quot;color: rgb(241, 95, 95);&quot;&gt;빨간색 간선&lt;/span&gt;&lt;/strong&gt;과 다른 한쪽 정점으로 연결되는&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt;파란색 간선&lt;/span&gt;&lt;/strong&gt;들로 구성되어 있음을 알 수 있다. 따라서&amp;nbsp;&lt;span style=&quot;line-height: 24px;&quot;&gt;길이 2사이클에 위와 같이 연결된 형태도 답의 후보로 고려해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이제 솔루션에 거의 근접한거 같다. &lt;b&gt;혹시 놓친게 없을까?&lt;/b&gt; 만약 길이 2사이클에 연결된 집합이 여러 개이면 답은 어떻게 될까?&lt;/p&gt;
&lt;p&gt;그 집합안에 있는 어린이들은 반드시 자신의 베스트 프랜드가 옆에 앉아 있기 때문에 &lt;b&gt;이를 이어 붙여서 원형으로&lt;/b&gt; 앉아도 모든 어린이들의 옆에&amp;nbsp;자신의 베스트 프랜드가 옆에 앉아 있을 것이다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4067&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;솔루션&quot;&gt;솔루션&lt;/h2&gt;

&lt;ol&gt;&lt;li rel=&quot;1&quot;&gt;어린이의 베스트 프랜드 관계를 그래프로 구성한다.&lt;/li&gt;
&lt;li rel=&quot;2&quot;&gt;그래프에서 최대 길이 사이클을 구한다. &lt;/li&gt;
&lt;li rel=&quot;3&quot;&gt;길이가 2인 사이클에 연결된 집합을 모두 구하고 길이를 합한다.&lt;/li&gt;
&lt;li rel=&quot;4&quot;&gt;&lt;code&gt;2&lt;/code&gt;번과 &lt;code&gt;3&lt;/code&gt;번에서 구한 값 중에 큰 것을 답으로 한다.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-4824&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;코드&quot;&gt;코드&lt;/h2&gt;

&lt;p&gt;솔루션 1, 2번 과정은 매우 간단해서 설명을 생략한다. &lt;br /&gt;
솔루션 3번 과정은 길이가 2인 사이클을 찾으면 사이클을 구성하는 양쪽 정점에서 역방향으로 BFS를 돌려서 최대값을 더하면 된다. 그러나 아래 코드에서는 이 과정을 2줄로 구현하기 위해  &lt;strong&gt;벨만포드 알고리즘&lt;/strong&gt;의 아이디어를 이용해서 indegree가 0인 노드에서 이 길이가 2인 사이클의 두 정점까지의 거리를 구하는 방식을 사용했다.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/f92b2f032128455334c740e1a15834de.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>문제</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/19</guid>
      <comments>https://bowbowbow.tistory.com/19#entry19comment</comments>
      <pubDate>Sun, 17 Apr 2016 01:31:10 +0900</pubDate>
    </item>
    <item>
      <title>[CodeForces] Square Root of Permutation : 순열 제곱근</title>
      <link>https://bowbowbow.tistory.com/18</link>
      <description>&lt;title&gt;Square Root of Permutation&lt;/title&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;link href=&quot;https://d31qtcb7c58z3n.cloudfront.net/res-min/themes/marxico.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;style&gt;.note-content .small-font {font-size: 12px;}
.note-content .redlight {background: #ee4035; color: #fff; padding: 0.25em;}
.note-content .blacklight {background: #000; color: #fff; padding: 0.25em;}
.note-content th {min-width: 30px;}
.note-content tr {min-width: 30px;}
.note-content .pcenter {text-align: center;}


.note-content  {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}
&lt;/style&gt;&lt;div id=&quot;preview-contents&quot; class=&quot;note-content&quot;&gt;
                        &lt;div id=&quot;wmd-preview&quot; class=&quot;preview-content&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;wmd-preview-section-14&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-1332&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h1 id=&quot;square-root-of-permutation&quot;&gt;목차&lt;/h1&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#square-root-of-permutation&quot;&gt;Square Root of Permutation&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#문제-설명&quot;&gt;문제 설명&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#solution&quot;&gt;Solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code&quot;&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-10215&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;문제-설명&quot;&gt;문제 설명&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;문제&lt;/strong&gt; :  &lt;a href=&quot;http://codeforces.com/contest/612/problem/E&quot; target=&quot;_blank&quot;&gt;코드포스 Educational Round 4, E번, Square Root of Permutation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;길이 n의 순열이란 1부터 n까지의 정수를 한 번씩만 포함하는 배열이다. &lt;br /&gt;
예를 들어 q = [4, 5, 1, 2, 3]는 순열이다. &lt;/p&gt;&lt;p&gt;순열의 제곱 p란 순열 q에 대해서 p[i] = q[q[i]]를 의미한다.  &lt;br /&gt;
예를 들어 q = [4, 5, 1, 2, 3] 일 때 &lt;/p&gt;&lt;p&gt;p[1] = q[q[1]] = q[4] = 2 &lt;br /&gt;
p[2] = q[q[2]] = q[5] = 3 &lt;br /&gt;
p[3] = q[q[3]] = q[1] = 4 &lt;br /&gt;
p[4] = q[q[4]] = q[2] = 5 &lt;br /&gt;
p[5] = q[q[5]] = q[3] = 1&lt;/p&gt;&lt;p&gt;p = &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;b6130f886b995fba3499527f12b11ed0&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-332-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC04NjQuOTYwODYxNjc3MzM2MSA5NjIuMDg4OTI0NDk5MjA2NSAxMTAwLjk1NDQ3MTQ2MDcwMDUiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuNjgzZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxOXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS03MSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ4NCA0MjhsLTE2NSAtNTc5Yy0xIC00IC0yIC04IC0yIC0xMWMwIC0xOSAyMCAtMzEgNTcgLTMxaDE1di0xNmgtMjM3djE2YzYzIDQgODAgMTkgOTEgNTZsOTAgMjkwYy04MCAtMTI3IC0xMzEgLTE2NCAtMjA4IC0xNjRjLTYzIDAgLTEwMCA0NSAtMTAwIDExNmMwIDE1OCAxNTYgMzM2IDI5MyAzMzZjNDEgMCA2NyAtMTcgNzcgLTYybDE2IDQ5aDczek0zODAgMzU5YzAgMzMgLTI2IDYwIC01OSA2MGMtMjkgMCAtNjEgLTE5IC05MyAtNDkgYy02OCAtNjUgLTExNyAtMTY4IC0xMTcgLTI1MWMwIC00NyAxNiAtNzcgNTMgLTc3YzI1IDAgNTYgMTMgODIgMzZjNjggNTkgMTM0IDE5OCAxMzQgMjgxWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS03MSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSI3MTQiIHk9IjUxMyIvPjwvZz48L3N2Zz4=&quot; width=&quot;16&quot; height=&quot;19&quot;&gt;&lt;/span&gt;&lt;/span&gt; = [2, 3, 4, 5, 1] 이다.&lt;/p&gt;&lt;p&gt;이제 어떤 순열의 p가 주어질 때 이 순열의 제곱근&lt;code&gt;(Square Root of Permutation)&lt;/code&gt; q를 구해야한다.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-10034&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;solution&quot;&gt;Solution&lt;/h2&gt;

&lt;ol start=&quot;1&quot;&gt;&lt;li rel=&quot;1&quot;&gt;주어진 순열에서 사이클 집합을 모두 찾는다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;예시.  순열 p = [4, 5, 1, 2, 3]은 아래 그림1과 같은 사이클을 갖는다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 297px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22201F5057077C3F17&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22201F5057077C3F17&quot; width=&quot;297&quot; height=&quot;253&quot; alt=&quot;그림1&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;그림1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;예시. 순열 p = [3, 4, 5, 2, 1]은 아래 그림2과 같은 두 사이클을 갖는다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 375px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/222B374F57077C5529&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F222B374F57077C5529&quot; width=&quot;375&quot; height=&quot;255&quot; alt=&quot;그림2&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;그림2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot;&gt;&lt;li rel=&quot;2&quot;&gt;사이클의 길이가 홀수인지 짝수인지에 따라 다른 방법으로 &lt;strong&gt;순열 제곱근(Square Root of Permutation)&lt;/strong&gt;을 구한다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;사이클 길이가 &lt;code&gt;홀수&lt;/code&gt; 일때&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;홀수 길이의 사이클을 제곱하면 같은 길이의 홀수 사이클을 얻는다.  아래 그림3을 보고 확인할 수 있다. 왼쪽이 원래 사이클, 오른쪽이 제곱했을 때 사이클을 나타낸다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 536px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2432CD4857077C9C27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2432CD4857077C9C27&quot; width=&quot;536&quot; height=&quot;293&quot; alt=&quot;그림3&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;그림3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
  
  &lt;p&gt;여기서 직관적으로 홀수 길이의 사이클의 &lt;strong&gt;제곱근으로 같은 길이의 홀수 사이클&lt;/strong&gt;이 존재한다는 것을 알 수 있다. 즉 사이클 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;3e18a4a28fdee1744e5e3f79d13b9ff6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-246-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC00NjcuOTU0ODk5OTY2MDkwMiA0NDkgNTA1LjkwOTc5OTkzMjE4MDQiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuMTM3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iOHB4IiBoZWlnaHQ9IjlweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zNTAgMTA3bDE2IC0xMGMtNjEgLTc3IC0xMTQgLTEwOCAtMTg5IC0xMDhjLTkzIDAgLTE0NyA1MiAtMTQ3IDE1NGMwIDkzIDUyIDE4MCAxMjMgMjM3YzQ5IDM5IDEwNiA2MSAxNjcgNjFzMTA1IC0zNCAxMDUgLTgxYzAgLTI3IC0yMiAtNDggLTQ4IC00OGMtMjggMCAtMzkgMjAgLTM5IDQwYzAgMTggMTUgMjkgMTUgNDhjMCAxMiAtMTQgMjAgLTM3IDIwYy00MCAwIC04MCAtMTggLTEwOSAtNDhjLTU2IC01OSAtOTEgLTE0NCAtOTEgLTIzMyBjMCAtNzIgMzIgLTExNCA4OSAtMTE0YzUzIDAgOTEgMjUgMTQ1IDgyWiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTYzIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;8&quot; height=&quot;9&quot;&gt;&lt;/span&gt;&lt;/span&gt;의 길이가 2k+1이면 사이클 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;70d25509612a7147f45ece91a40190d7&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-251-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MzMuNzE5ODk5OTY2MDkwMiAxMzgyIDEzNDUuOTA5Nzk5OTMyMTgwNSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMS4wOTZleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjIzcHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjIxQSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTk2MyA5NzNsLTQ3OCAtMTIzMmgtMzJsLTIwMiA1MzBjLTE3IDQ1IC0zNyA1OSAtNjIgNTljLTE3IDAgLTQzIC0xMSAtNjUgLTMxbC0xMiAyMGwxNTYgMTI0aDE5bDIwNCAtNTM2aDRsNDE0IDEwNjZoNTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzUwIDEwN2wxNiAtMTBjLTYxIC03NyAtMTE0IC0xMDggLTE4OSAtMTA4Yy05MyAwIC0xNDcgNTIgLTE0NyAxNTRjMCA5MyA1MiAxODAgMTIzIDIzN2M0OSAzOSAxMDYgNjEgMTY3IDYxczEwNSAtMzQgMTA1IC04MWMwIC0yNyAtMjIgLTQ4IC00OCAtNDhjLTI4IDAgLTM5IDIwIC0zOSA0MGMwIDE4IDE1IDI5IDE1IDQ4YzAgMTIgLTE0IDIwIC0zNyAyMGMtNDAgMCAtODAgLTE4IC0xMDkgLTQ4Yy01NiAtNTkgLTkxIC0xNDQgLTkxIC0yMzMgYzAgLTcyIDMyIC0xMTQgODkgLTExNGM1MyAwIDkxIDI1IDE0NSA4MloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTIyMUEiIHg9IjAiIHk9Ii0xMjciLz48cmVjdCBzdHJva2U9Im5vbmUiIHdpZHRoPSI0NDkiIGhlaWdodD0iNjAiIHg9IjkzMyIgeT0iNzk2Ii8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIgeD0iOTMzIiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;23&quot; height=&quot;23&quot;&gt;&lt;/span&gt;&lt;/span&gt;의 길이도 2k+1이다.&lt;/p&gt;
  
  &lt;p&gt;길이가 2k+1인 사이클 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;3e18a4a28fdee1744e5e3f79d13b9ff6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-246-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC00NjcuOTU0ODk5OTY2MDkwMiA0NDkgNTA1LjkwOTc5OTkzMjE4MDQiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuMTM3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iOHB4IiBoZWlnaHQ9IjlweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zNTAgMTA3bDE2IC0xMGMtNjEgLTc3IC0xMTQgLTEwOCAtMTg5IC0xMDhjLTkzIDAgLTE0NyA1MiAtMTQ3IDE1NGMwIDkzIDUyIDE4MCAxMjMgMjM3YzQ5IDM5IDEwNiA2MSAxNjcgNjFzMTA1IC0zNCAxMDUgLTgxYzAgLTI3IC0yMiAtNDggLTQ4IC00OGMtMjggMCAtMzkgMjAgLTM5IDQwYzAgMTggMTUgMjkgMTUgNDhjMCAxMiAtMTQgMjAgLTM3IDIwYy00MCAwIC04MCAtMTggLTEwOSAtNDhjLTU2IC01OSAtOTEgLTE0NCAtOTEgLTIzMyBjMCAtNzIgMzIgLTExNCA4OSAtMTE0YzUzIDAgOTEgMjUgMTQ1IDgyWiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTYzIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;8&quot; height=&quot;9&quot;&gt;&lt;/span&gt;&lt;/span&gt;에서 길이의 거의 절반인 k+1회 이동하면 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;70d25509612a7147f45ece91a40190d7&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-251-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MzMuNzE5ODk5OTY2MDkwMiAxMzgyIDEzNDUuOTA5Nzk5OTMyMTgwNSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMS4wOTZleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjIzcHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjIxQSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTk2MyA5NzNsLTQ3OCAtMTIzMmgtMzJsLTIwMiA1MzBjLTE3IDQ1IC0zNyA1OSAtNjIgNTljLTE3IDAgLTQzIC0xMSAtNjUgLTMxbC0xMiAyMGwxNTYgMTI0aDE5bDIwNCAtNTM2aDRsNDE0IDEwNjZoNTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzUwIDEwN2wxNiAtMTBjLTYxIC03NyAtMTE0IC0xMDggLTE4OSAtMTA4Yy05MyAwIC0xNDcgNTIgLTE0NyAxNTRjMCA5MyA1MiAxODAgMTIzIDIzN2M0OSAzOSAxMDYgNjEgMTY3IDYxczEwNSAtMzQgMTA1IC04MWMwIC0yNyAtMjIgLTQ4IC00OCAtNDhjLTI4IDAgLTM5IDIwIC0zOSA0MGMwIDE4IDE1IDI5IDE1IDQ4YzAgMTIgLTE0IDIwIC0zNyAyMGMtNDAgMCAtODAgLTE4IC0xMDkgLTQ4Yy01NiAtNTkgLTkxIC0xNDQgLTkxIC0yMzMgYzAgLTcyIDMyIC0xMTQgODkgLTExNGM1MyAwIDkxIDI1IDE0NSA4MloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTIyMUEiIHg9IjAiIHk9Ii0xMjciLz48cmVjdCBzdHJva2U9Im5vbmUiIHdpZHRoPSI0NDkiIGhlaWdodD0iNjAiIHg9IjkzMyIgeT0iNzk2Ii8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIgeD0iOTMzIiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;23&quot; height=&quot;23&quot;&gt;&lt;/span&gt;&lt;/span&gt; 입장에서 2k+2회를 이동한 것이다. 즉 한 바퀴를 다 돌고 한 번 더 간것이기 때문에 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;3e18a4a28fdee1744e5e3f79d13b9ff6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-246-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC00NjcuOTU0ODk5OTY2MDkwMiA0NDkgNTA1LjkwOTc5OTkzMjE4MDQiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTAuMTM3ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iOHB4IiBoZWlnaHQ9IjlweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zNTAgMTA3bDE2IC0xMGMtNjEgLTc3IC0xMTQgLTEwOCAtMTg5IC0xMDhjLTkzIDAgLTE0NyA1MiAtMTQ3IDE1NGMwIDkzIDUyIDE4MCAxMjMgMjM3YzQ5IDM5IDEwNiA2MSAxNjcgNjFzMTA1IC0zNCAxMDUgLTgxYzAgLTI3IC0yMiAtNDggLTQ4IC00OGMtMjggMCAtMzkgMjAgLTM5IDQwYzAgMTggMTUgMjkgMTUgNDhjMCAxMiAtMTQgMjAgLTM3IDIwYy00MCAwIC04MCAtMTggLTEwOSAtNDhjLTU2IC01OSAtOTEgLTE0NCAtOTEgLTIzMyBjMCAtNzIgMzIgLTExNCA4OSAtMTE0YzUzIDAgOTEgMjUgMTQ1IDgyWiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTYzIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;8&quot; height=&quot;9&quot;&gt;&lt;/span&gt;&lt;/span&gt; 입장에서 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;47052b496001b26f18651237c317563f&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-296-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02ODAuOTU0ODk5OTY2MDkwMiA3NDAuMDg4OTI0NDk5MjA2NSA4NTQuOTgwODY3NzQ0MDQ1OSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC41NDhleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxM3B4IiBoZWlnaHQ9IjE0cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48L3N2Zz4=&quot; width=&quot;13&quot; height=&quot;14&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;af08bde746a62287e7136186aedd6481&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-310-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC02ODAuOTU0ODk5OTY2MDkwMiAyODgwLjUwMTE1MTE1MDg4NiA5ODAuMTM4NzY4MDE0MDY0OCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC44MjJleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSI0OXB4IiBoZWlnaHQ9IjE3cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MSA0Mjh2LTE2Yy00NyAtMyAtNzggLTIzIC0yMjUgLTE1NGwzNyAtODhjMzkgLTkyIDYyIC0xMjkgODEgLTEyOWMxNSAwIDI3IDExIDQ1IDQyYzUgOCAxMCAxNyAxNSAyNmwxNSAtMTFjLTQ2IC04NCAtNzEgLTEwOSAtMTExIC0xMDljLTI5IDAgLTQ5IDE5IC04MSA4MmMtMTggMzUgLTQ0IDk3IC02MCAxNDFsLTQwIC0zMmwtNDggLTE4MGgtNzVsMTQxIDUyOGMxMyA0OCAxNiA3MSAxOCA4OGMtMiAxOCAtMTcgMjQgLTUxIDI0aC0xOHYxNiBjNTkgNyA5OCAxNCAxNTcgMjdsNiAtNmwtMTIwIC00NTZsNDMgMzNjOTQgNzIgMTQzIDEyMCAxNDMgMTQwYzAgMTEgLTEyIDE4IC0zNyAxOGgtMTR2MTZoMTc5WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjkiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyODMsLTE1MCkiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSIxMTk1IiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZCIiB4PSIxNTMzIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkIiIHg9IjE5OTkiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iMjY4OSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSIzMTk0IiB5PSIwIi8+PC9nPjwvZz48L3N2Zz4=&quot; width=&quot;49&quot; height=&quot;17&quot;&gt;&lt;/span&gt;&lt;/span&gt; 에 대응시킨 것이 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;70d25509612a7147f45ece91a40190d7&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-251-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MzMuNzE5ODk5OTY2MDkwMiAxMzgyIDEzNDUuOTA5Nzk5OTMyMTgwNSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMS4wOTZleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyM3B4IiBoZWlnaHQ9IjIzcHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjIxQSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTk2MyA5NzNsLTQ3OCAtMTIzMmgtMzJsLTIwMiA1MzBjLTE3IDQ1IC0zNyA1OSAtNjIgNTljLTE3IDAgLTQzIC0xMSAtNjUgLTMxbC0xMiAyMGwxNTYgMTI0aDE5bDIwNCAtNTM2aDRsNDE0IDEwNjZoNTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzUwIDEwN2wxNiAtMTBjLTYxIC03NyAtMTE0IC0xMDggLTE4OSAtMTA4Yy05MyAwIC0xNDcgNTIgLTE0NyAxNTRjMCA5MyA1MiAxODAgMTIzIDIzN2M0OSAzOSAxMDYgNjEgMTY3IDYxczEwNSAtMzQgMTA1IC04MWMwIC0yNyAtMjIgLTQ4IC00OCAtNDhjLTI4IDAgLTM5IDIwIC0zOSA0MGMwIDE4IDE1IDI5IDE1IDQ4YzAgMTIgLTE0IDIwIC0zNyAyMGMtNDAgMCAtODAgLTE4IC0xMDkgLTQ4Yy01NiAtNTkgLTkxIC0xNDQgLTkxIC0yMzMgYzAgLTcyIDMyIC0xMTQgODkgLTExNGM1MyAwIDkxIDI1IDE0NSA4MloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTIyMUEiIHg9IjAiIHk9Ii0xMjciLz48cmVjdCBzdHJva2U9Im5vbmUiIHdpZHRoPSI0NDkiIGhlaWdodD0iNjAiIHg9IjkzMyIgeT0iNzk2Ii8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIgeD0iOTMzIiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;23&quot; height=&quot;23&quot;&gt;&lt;/span&gt;&lt;/span&gt; 입장에서 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;82b58c8d1599d08c33130ebcf4a2e7c8&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-327-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItMTE5IC02NzguOTU0ODk5OTY2MDkwMiA4NTkuMDg4OTI0NDk5MjA2NSA5MTIuOTA5Nzk5OTMyMTgwNCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC42ODVleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxNXB4IiBoZWlnaHQ9IjE1cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PC9zdmc+&quot; width=&quot;15&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;981454b94267c6f3c7c16130c91dcac6&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-328-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSItMTE5IC02NzguOTU0ODk5OTY2MDkwMiA4NTkuMDg4OTI0NDk5MjA2NSA5MTIuOTA5Nzk5OTMyMTgwNCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC42ODVleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxNXB4IiBoZWlnaHQ9IjE1cHgiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48L3N2Zz4=&quot; width=&quot;15&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt; 에 대응시킨 것이다.&lt;/p&gt;
  
  &lt;p&gt;이 성질을 이용해서 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;c601fa6168c1cd7cf0d1fa1c23f88c28&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-316-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MDIuOTU0ODk5OTY2MDkwMiA3NDUxLjk5MzM1OTI3MDY5OCA5MDYuOTA5Nzk5OTMyMTgwNCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC41NDhleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxMjZweCIgaGVpZ2h0PSIxNXB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM1MCAxMDdsMTYgLTEwYy02MSAtNzcgLTExNCAtMTA4IC0xODkgLTEwOGMtOTMgMCAtMTQ3IDUyIC0xNDcgMTU0YzAgOTMgNTIgMTgwIDEyMyAyMzdjNDkgMzkgMTA2IDYxIDE2NyA2MXMxMDUgLTM0IDEwNSAtODFjMCAtMjcgLTIyIC00OCAtNDggLTQ4Yy0yOCAwIC0zOSAyMCAtMzkgNDBjMCAxOCAxNSAyOSAxNSA0OGMwIDEyIC0xNCAyMCAtMzcgMjBjLTQwIDAgLTgwIC0xOCAtMTA5IC00OGMtNTYgLTU5IC05MSAtMTQ0IC05MSAtMjMzIGMwIC03MiAzMiAtMTE0IDg5IC0xMTRjNTMgMCA5MSAyNSAxNDUgODJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tM0QiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzcgMzIwaC01ODl2NjZoNTg5di02NnpNNjM3IDEyMGgtNTg5djY2aDU4OXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zMDQgLTE2MWwtMTIgLTE2Yy0xNTggOTAgLTI0NCAyNTkgLTI0NCA0MjljMCAxODUgODcgMzI5IDI0NyA0MjRsOSAtMTZjLTEzOSAtMTE5IC0xNzAgLTIxMiAtMTcwIC00MDVjMCAtMTg2IDMwIC0yOTkgMTcwIC00MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNODMgLTE0MWwtMTAgMTljNTUgMzcgODMgNzQgODMgMTA3YzAgNyAtNiAxMyAtMTQgMTNzLTE4IC00IC0yOSAtNGMtMzcgMCAtNTggMTcgLTU4IDUxczI0IDU3IDYwIDU3YzQ1IDAgODAgLTM1IDgwIC04N2MwIC02MCAtNDMgLTEyMyAtMTEyIC0xNTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDYxIDQyOHYtMTZjLTQ3IC0zIC03OCAtMjMgLTIyNSAtMTU0bDM3IC04OGMzOSAtOTIgNjIgLTEyOSA4MSAtMTI5YzE1IDAgMjcgMTEgNDUgNDJjNSA4IDEwIDE3IDE1IDI2bDE1IC0xMWMtNDYgLTg0IC03MSAtMTA5IC0xMTEgLTEwOWMtMjkgMCAtNDkgMTkgLTgxIDgyYy0xOCAzNSAtNDQgOTcgLTYwIDE0MWwtNDAgLTMybC00OCAtMTgwaC03NWwxNDEgNTI4YzEzIDQ4IDE2IDcxIDE4IDg4Yy0yIDE4IC0xNyAyNCAtNTEgMjRoLTE4djE2IGM1OSA3IDk4IDE0IDE1NyAyN2w2IC02bC0xMjAgLTQ1Nmw0MyAzM2M5NCA3MiAxNDMgMTIwIDE0MyAxNDBjMCAxMSAtMTIgMTggLTM3IDE4aC0xNHYxNmgxNzlaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzYgMjIwaC0yNjF2LTI2MWgtNjZ2MjYxaC0yNjF2NjZoMjYxdjI2MWg2NnYtMjYxaDI2MXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI5IDY2MGwxMiAxNmMxNTMgLTkyIDI0NCAtMjU5IDI0NCAtNDI5YzAgLTE4NSAtODggLTMyNyAtMjQ3IC00MjRsLTkgMTZjMTQyIDExNyAxNzAgMjExIDE3MCA0MDVjMCAxODcgLTI1IDMwMiAtMTcwIDQxNloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iNzI2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSIxNjk0IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAzMiwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJDIiB4PSIyNzcyIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzE5NCwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJFIiB4PSIzOTM0IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJFIiB4PSI0MzU2IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJFIiB4PSI0Nzc3IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTE5OSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02OSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4MywtMTUwKSI+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkIiIHg9IjUwNSIgeT0iMCIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJCIiB4PSI5NzEiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iMTY2MSIgeT0iMCIvPjwvZz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSI3MTEzIiB5PSIwIi8+PC9nPjwvc3ZnPg==&quot; width=&quot;126&quot; height=&quot;15&quot;&gt;&lt;/span&gt;&lt;/span&gt;이 있을 때 순열 제곱근의 사이클 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;4526f1a058d7442c41fd201fbe485008&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-326-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC05MzMuNzE5ODk5OTY2MDkwMiA4Mzg0Ljk5MzM1OTI3MDY5OCAxMzQ1LjkwOTc5OTkzMjE4MDUiIHN0eWxlPSJ3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogLTEuMDk2ZXg7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDE4cHg7O3pvb206MTt0cmFuc2Zvcm06c2NhbGUoMSk7LW1vei10cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbW96LXRyYW5zZm9ybS1vcmlnaW46MCAwIiB3aWR0aD0iMTQycHgiIGhlaWdodD0iMjNweCI+PHN0eWxlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L3N0eWxlPjxkZWZzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yMjFBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNOTYzIDk3M2wtNDc4IC0xMjMyaC0zMmwtMjAyIDUzMGMtMTcgNDUgLTM3IDU5IC02MiA1OWMtMTcgMCAtNDMgLTExIC02NSAtMzFsLTEyIDIwbDE1NiAxMjRoMTlsMjA0IC01MzZoNGw0MTQgMTA2Nmg1NFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zNTAgMTA3bDE2IC0xMGMtNjEgLTc3IC0xMTQgLTEwOCAtMTg5IC0xMDhjLTkzIDAgLTE0NyA1MiAtMTQ3IDE1NGMwIDkzIDUyIDE4MCAxMjMgMjM3YzQ5IDM5IDEwNiA2MSAxNjcgNjFzMTA1IC0zNCAxMDUgLTgxYzAgLTI3IC0yMiAtNDggLTQ4IC00OGMtMjggMCAtMzkgMjAgLTM5IDQwYzAgMTggMTUgMjkgMTUgNDhjMCAxMiAtMTQgMjAgLTM3IDIwYy00MCAwIC04MCAtMTggLTEwOSAtNDhjLTU2IC01OSAtOTEgLTE0NCAtOTEgLTIzMyBjMCAtNzIgMzIgLTExNCA4OSAtMTE0YzUzIDAgOTEgMjUgMTQ1IDgyWiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTNEIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM3IDMyMGgtNTg5djY2aDU4OXYtNjZ6TTYzNyAxMjBoLTU4OXY2Nmg1ODl2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI4IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzA0IC0xNjFsLTEyIC0xNmMtMTU4IDkwIC0yNDQgMjU5IC0yNDQgNDI5YzAgMTg1IDg3IDMyOSAyNDcgNDI0bDkgLTE2Yy0xMzkgLTExOSAtMTcwIC0yMTIgLTE3MCAtNDA1YzAgLTE4NiAzMCAtMjk5IDE3MCAtNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI3OSA1OThjMCAtMjcgLTI0IC01MCAtNTAgLTUwYy0zMCAwIC01NCAyMSAtNTQgNTJjMCAzMCAyNSA1MiA1MyA1MmMyNyAwIDUxIC0yNiA1MSAtNTR6TTI0NiA0MzhsLTEwNCAtNDEwYy00MSAtMTYyIC0xMDAgLTIzNSAtMTg3IC0yMzVjLTQ2IDAgLTc5IDI1IC03OSA2MWMwIDI0IDE4IDQ0IDQxIDQ0YzI3IDAgMzkgLTE2IDM5IC0zN2MwIC0yMiAtMTIgLTE5IC0xMiAtMzRjMCAtNyA2IC0xMiAxOCAtMTJjNDAgMCA2MyA0NCA5NyAxODIgbDcyIDI5MmMxMiA0OSAxNiA3MCAxNiA4MGMwIDIyIC0xMiAzMSAtNDggMzFoLTI2djE2YzMyIDIgODUgMTAgMTY5IDI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04MyAtMTQxbC0xMCAxOWM1NSAzNyA4MyA3NCA4MyAxMDdjMCA3IC02IDEzIC0xNCAxM3MtMTggLTQgLTI5IC00Yy0zNyAwIC01OCAxNyAtNTggNTFzMjQgNTcgNjAgNTdjNDUgMCA4MCAtMzUgODAgLTg3YzAgLTYwIC00MyAtMTIzIC0xMTIgLTE1NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NzQgMTM3bC01NCAtMTM3aC0zOTF2MTJsMTc4IDE4OWM5NCA5OSAxMzAgMTc1IDEzMCAyNjBjMCA5MSAtNTQgMTQxIC0xMzkgMTQxYy03MiAwIC0xMDcgLTMyIC0xNDcgLTEzMGwtMjEgNWMyMSAxMTcgODUgMTk5IDIwOCAxOTljMTEzIDAgMTg1IC03NyAxODUgLTE3NmMwIC03OSAtMzkgLTE1NCAtMTI4IC0yNDhsLTE2NSAtMTc2aDIzNGM0MiAwIDYzIDExIDk2IDY3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MSA0Mjh2LTE2Yy00NyAtMyAtNzggLTIzIC0yMjUgLTE1NGwzNyAtODhjMzkgLTkyIDYyIC0xMjkgODEgLTEyOWMxNSAwIDI3IDExIDQ1IDQyYzUgOCAxMCAxNyAxNSAyNmwxNSAtMTFjLTQ2IC04NCAtNzEgLTEwOSAtMTExIC0xMDljLTI5IDAgLTQ5IDE5IC04MSA4MmMtMTggMzUgLTQ0IDk3IC02MCAxNDFsLTQwIC0zMmwtNDggLTE4MGgtNzVsMTQxIDUyOGMxMyA0OCAxNiA3MSAxOCA4OGMtMiAxOCAtMTcgMjQgLTUxIDI0aC0xOHYxNiBjNTkgNyA5OCAxNCAxNTcgMjdsNiAtNmwtMTIwIC00NTZsNDMgMzNjOTQgNzIgMTQzIDEyMCAxNDMgMTQwYzAgMTEgLTEyIDE4IC0zNyAxOGgtMTR2MTZoMTc5WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJCIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNjM2IDIyMGgtMjYxdi0yNjFoLTY2djI2MWgtMjYxdjY2aDI2MXYyNjFoNjZ2LTI2MWgyNjF2LTY2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yOSA2NjBsMTIgMTZjMTUzIC05MiAyNDQgLTI1OSAyNDQgLTQyOWMwIC0xODUgLTg4IC0zMjcgLTI0NyAtNDI0bC05IDE2YzE0MiAxMTcgMTcwIDIxMSAxNzAgNDA1YzAgMTg3IC0yNSAzMDIgLTE3MCA0MTZaIi8+PC9kZWZzPjxnIHN0cm9rZT0iYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yMjFBIiB4PSIwIiB5PSItMTI3Ii8+PHJlY3Qgc3Ryb2tlPSJub25lIiB3aWR0aD0iNDQ5IiBoZWlnaHQ9IjYwIiB4PSI5MzMiIHk9Ijc5NiIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjMiIHg9IjkzMyIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zRCIgeD0iMTY1OSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOCIgeD0iMjYyNyIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NjUsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMSIgeD0iNDAwIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQyIgeD0iMzcwNSIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxMjcsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0zMiIgeD0iNDAwIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iNDg2NyIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iNTI4OSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iNTcxMCIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxMzIsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNkEiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyODMsLTE1MCkiPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZCIiB4PSI1MDUiIHk9IjAiLz48dXNlIHRyYW5zZm9ybT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yQiIgeD0iOTcxIiB5PSIwIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjE2NjEiIHk9IjAiLz48L2c+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iODA0NiIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;142&quot; height=&quot;23&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 구할 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;사이클 길이가 &lt;code&gt;짝수&lt;/code&gt; 일때&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;길이가 2*k (k는 양의 정수)인 사이클의 원소는 순열을 제곱했을때 &lt;strong&gt;독립적인 길이 k의 두 사이클&lt;/strong&gt;을 이룬다.  &lt;/p&gt;
  
  &lt;p&gt;이 사실은 아래 그림4을 통해서 직관적으로 알 수 있다. 왼쪽의 사이클이 제곱됐을때 나타나는 두 독립적인 사이클을 나타냈다.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 546px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/227CE94B57077CB619&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F227CE94B57077CB619&quot; width=&quot;546&quot; height=&quot;219&quot; alt=&quot;그림4&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;그림4&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
  
  &lt;p&gt;이 사실로 부터 제곱 순열에서 길이가 짝수인 두 쌍의 사이클 &lt;span xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;&quot; rel=&quot;a1f279812d4ac0ac9b26700730666dcd&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-57-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIC03MDIuOTU0ODk5OTY2MDkwMiAxMzgzNS42NjgxNzgxNzIyMSA5MzYuOTA5Nzk5OTMyMTgwNCIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC42ODVleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIyMzZweCIgaGVpZ2h0PSIxNnB4Ij48c3R5bGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvY3NzIj4KCjwvc3R5bGU+PGRlZnMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02MyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM1MCAxMDdsMTYgLTEwYy02MSAtNzcgLTExNCAtMTA4IC0xODkgLTEwOGMtOTMgMCAtMTQ3IDUyIC0xNDcgMTU0YzAgOTMgNTIgMTgwIDEyMyAyMzdjNDkgMzkgMTA2IDYxIDE2NyA2MXMxMDUgLTM0IDEwNSAtODFjMCAtMjcgLTIyIC00OCAtNDggLTQ4Yy0yOCAwIC0zOSAyMCAtMzkgNDBjMCAxOCAxNSAyOSAxNSA0OGMwIDEyIC0xNCAyMCAtMzcgMjBjLTQwIDAgLTgwIC0xOCAtMTA5IC00OGMtNTYgLTU5IC05MSAtMTQ0IC05MSAtMjMzIGMwIC03MiAzMiAtMTE0IDg5IC0xMTRjNTMgMCA5MSAyNSAxNDUgODJaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTMwNCAtMTYxbC0xMiAtMTZjLTE1OCA5MCAtMjQ0IDI1OSAtMjQ0IDQyOWMwIDE4NSA4NyAzMjkgMjQ3IDQyNGw5IC0xNmMtMTM5IC0xMTkgLTE3MCAtMjEyIC0xNzAgLTQwNWMwIC0xODYgMzAgLTI5OSAxNzAgLTQxNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04MyAtMTQxbC0xMCAxOWM1NSAzNyA4MyA3NCA4MyAxMDdjMCA3IC02IDEzIC0xNCAxM3MtMTggLTQgLTI5IC00Yy0zNyAwIC01OCAxNyAtNTggNTFzMjQgNTcgNjAgNTdjNDUgMCA4MCAtMzUgODAgLTg3YzAgLTYwIC00MyAtMTIzIC0xMTIgLTE1NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MSA0Mjh2LTE2Yy00NyAtMyAtNzggLTIzIC0yMjUgLTE1NGwzNyAtODhjMzkgLTkyIDYyIC0xMjkgODEgLTEyOWMxNSAwIDI3IDExIDQ1IDQyYzUgOCAxMCAxNyAxNSAyNmwxNSAtMTFjLTQ2IC04NCAtNzEgLTEwOSAtMTExIC0xMDljLTI5IDAgLTQ5IDE5IC04MSA4MmMtMTggMzUgLTQ0IDk3IC02MCAxNDFsLTQwIC0zMmwtNDggLTE4MGgtNzVsMTQxIDUyOGMxMyA0OCAxNiA3MSAxOCA4OGMtMiAxOCAtMTcgMjQgLTUxIDI0aC0xOHYxNiBjNTkgNyA5OCAxNCAxNTcgMjdsNiAtNmwtMTIwIC00NTZsNDMgMzNjOTQgNzIgMTQzIDEyMCAxNDMgMTQwYzAgMTEgLTEyIDE4IC0zNyAxOGgtMTR2MTZoMTc5WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjkgNjYwbDEyIDE2YzE1MyAtOTIgMjQ0IC0yNTkgMjQ0IC00MjljMCAtMTg1IC04OCAtMzI3IC0yNDcgLTQyNGwtOSAxNmMxNDIgMTE3IDE3MCAyMTEgMTcwIDQwNWMwIDE4NyAtMjUgMzAyIC0xNzAgNDE2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNODMgLTE0MWwtMTAgMTljNTUgMzcgODMgNzQgODMgMTA3YzAgNyAtNiAxMyAtMTQgMTNzLTE4IC00IC0yOSAtNGMtMzcgMCAtNTggMTcgLTU4IDUxczI0IDU3IDYwIDU3YzQ1IDAgODAgLTM1IDgwIC04N2MwIC02MCAtNDMgLTEyMyAtMTEyIC0xNTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzUwIDEwN2wxNiAtMTBjLTYxIC03NyAtMTE0IC0xMDggLTE4OSAtMTA4Yy05MyAwIC0xNDcgNTIgLTE0NyAxNTRjMCA5MyA1MiAxODAgMTIzIDIzN2M0OSAzOSAxMDYgNjEgMTY3IDYxczEwNSAtMzQgMTA1IC04MWMwIC0yNyAtMjIgLTQ4IC00OCAtNDhjLTI4IDAgLTM5IDIwIC0zOSA0MGMwIDE4IDE1IDI5IDE1IDQ4YzAgMTIgLTE0IDIwIC0zNyAyMGMtNDAgMCAtODAgLTE4IC0xMDkgLTQ4Yy01NiAtNTkgLTkxIC0xNDQgLTkxIC0yMzMgYzAgLTcyIDMyIC0xMTQgODkgLTExNGM1MyAwIDkxIDI1IDE0NSA4MloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tM0QiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzcgMzIwaC01ODl2NjZoNTg5di02NnpNNjM3IDEyMGgtNTg5djY2aDU4OXYtNjZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjgiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zMDQgLTE2MWwtMTIgLTE2Yy0xNTggOTAgLTI0NCAyNTkgLTI0NCA0MjljMCAxODUgODcgMzI5IDI0NyA0MjRsOSAtMTZjLTEzOSAtMTE5IC0xNzAgLTIxMiAtMTcwIC00MDVjMCAtMTg2IDMwIC0yOTkgMTcwIC00MTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTZBIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjc5IDU5OGMwIC0yNyAtMjQgLTUwIC01MCAtNTBjLTMwIDAgLTU0IDIxIC01NCA1MmMwIDMwIDI1IDUyIDUzIDUyYzI3IDAgNTEgLTI2IDUxIC01NHpNMjQ2IDQzOGwtMTA0IC00MTBjLTQxIC0xNjIgLTEwMCAtMjM1IC0xODcgLTIzNWMtNDYgMCAtNzkgMjUgLTc5IDYxYzAgMjQgMTggNDQgNDEgNDRjMjcgMCAzOSAtMTYgMzkgLTM3YzAgLTIyIC0xMiAtMTkgLTEyIC0zNGMwIC03IDYgLTEyIDE4IC0xMmM0MCAwIDYzIDQ0IDk3IDE4MiBsNzIgMjkyYzEyIDQ5IDE2IDcwIDE2IDgwYzAgMjIgLTEyIDMxIC00OCAzMWgtMjZ2MTZjMzIgMiA4NSAxMCAxNjkgMjVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMzEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0zOTQgMGgtMjc2djE1Yzc0IDQgOTUgMjUgOTUgODB2NDQ5YzAgMzQgLTkgNDkgLTMwIDQ5Yy0xMCAwIC0yNyAtNSAtNDUgLTEybC0yNyAtMTB2MTRsMTc5IDkxbDkgLTN2LTU5N2MwIC00MyAyMCAtNjEgOTUgLTYxdi0xNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTgzIC0xNDFsLTEwIDE5YzU1IDM3IDgzIDc0IDgzIDEwN2MwIDcgLTYgMTMgLTE0IDEzcy0xOCAtNCAtMjkgLTRjLTM3IDAgLTU4IDE3IC01OCA1MXMyNCA1NyA2MCA1N2M0NSAwIDgwIC0zNSA4MCAtODdjMCAtNjAgLTQzIC0xMjMgLTExMiAtMTU2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI3OSA1OThjMCAtMjcgLTI0IC01MCAtNTAgLTUwYy0zMCAwIC01NCAyMSAtNTQgNTJjMCAzMCAyNSA1MiA1MyA1MmMyNyAwIDUxIC0yNiA1MSAtNTR6TTI0NiA0MzhsLTEwNCAtNDEwYy00MSAtMTYyIC0xMDAgLTIzNSAtMTg3IC0yMzVjLTQ2IDAgLTc5IDI1IC03OSA2MWMwIDI0IDE4IDQ0IDQxIDQ0YzI3IDAgMzkgLTE2IDM5IC0zN2MwIC0yMiAtMTIgLTE5IC0xMiAtMzRjMCAtNyA2IC0xMiAxOCAtMTJjNDAgMCA2MyA0NCA5NyAxODIgbDcyIDI5MmMxMiA0OSAxNiA3MCAxNiA4MGMwIDIyIC0xMiAzMSAtNDggMzFoLTI2djE2YzMyIDIgODUgMTAgMTY5IDI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMyIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNDc0IDEzN2wtNTQgLTEzN2gtMzkxdjEybDE3OCAxODljOTQgOTkgMTMwIDE3NSAxMzAgMjYwYzAgOTEgLTU0IDE0MSAtMTM5IDE0MWMtNzIgMCAtMTA3IC0zMiAtMTQ3IC0xMzBsLTIxIDVjMjEgMTE3IDg1IDE5OSAyMDggMTk5YzExMyAwIDE4NSAtNzcgMTg1IC0xNzZjMCAtNzkgLTM5IC0xNTQgLTEyOCAtMjQ4bC0xNjUgLTE3NmgyMzRjNDIgMCA2MyAxMSA5NiA2N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NjEgNDI4di0xNmMtNDcgLTMgLTc4IC0yMyAtMjI1IC0xNTRsMzcgLTg4YzM5IC05MiA2MiAtMTI5IDgxIC0xMjljMTUgMCAyNyAxMSA0NSA0MmM1IDggMTAgMTcgMTUgMjZsMTUgLTExYy00NiAtODQgLTcxIC0xMDkgLTExMSAtMTA5Yy0yOSAwIC00OSAxOSAtODEgODJjLTE4IDM1IC00NCA5NyAtNjAgMTQxbC00MCAtMzJsLTQ4IC0xODBoLTc1bDE0MSA1MjhjMTMgNDggMTYgNzEgMTggODhjLTIgMTggLTE3IDI0IC01MSAyNGgtMTh2MTYgYzU5IDcgOTggMTQgMTU3IDI3bDYgLTZsLTEyMCAtNDU2bDQzIDMzYzk0IDcyIDE0MyAxMjAgMTQzIDE0MGMwIDExIC0xMiAxOCAtMzcgMThoLTE0djE2aDE3OVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI5IDY2MGwxMiAxNmMxNTMgLTkyIDI0NCAtMjU5IDI0NCAtNDI5YzAgLTE4NSAtODggLTMyNyAtMjQ3IC00MjRsLTkgMTZjMTQyIDExNyAxNzAgMjExIDE3MCA0MDVjMCAxODcgLTI1IDMwMiAtMTcwIDQxNloiLz48L2RlZnM+PGcgc3Ryb2tlPSJibGFjayIgZmlsbD0iYmxhY2siIHN0cm9rZS13aWR0aD0iMCIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI2MzQiIHk9Ii0yMTMiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjExODMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjgiIHg9IjIxNTEiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDg5LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjMyMjkiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjUxLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9IjQzOTEiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9IjQ4MTMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9IjUyMzQiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NjU2LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZCIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSI2MzY5IiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJDIiB4PSI2NzA3IiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzEyOCwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02MyIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMyIiB4PSI2MzQiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTNEIiB4PSI4MzEyIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI4IiB4PSI5MjgwIiB5PSIwIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTYxOCwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTMxIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJDIiB4PSIxMDM1OCIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNzgwLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9IjExNTIwIiB5PSIwIi8+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJFIiB4PSIxMTk0MSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yRSIgeD0iMTIzNjMiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjc4NSwwKSI+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QSIvPjx1c2UgdHJhbnNmb3JtPSJzY2FsZSgwLjcwNzEwNjc4MTE4NjU0NzYpIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS02QiIgeD0iNDAwIiB5PSItMjEzIi8+PC9nPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTi0yOSIgeD0iMTM0OTciIHk9IjAiLz48L2c+PC9zdmc+&quot; width=&quot;236&quot; height=&quot;16&quot;&gt;&lt;/span&gt;&lt;/span&gt;이 있을 때 순열 제곱근의 사이클 &lt;span class=&quot;&quot; rel=&quot;f12e659a2bda7046edd137a84b3603a0&quot;&gt;&lt;span class=&quot;MathJax_SVG&quot; id=&quot;MathJax-Element-331-Frame&quot; role=&quot;textbox&quot; aria-readonly=&quot;true&quot; style=&quot;font-size: 100%; display: inline-block;&quot;&gt;&lt;img src=&quot;data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAtOTg5LjcxOTg5OTk2NjA5MDIgMTE1OTQuMjY4MTA2OTUxNTc1IDEzNDUuOTA5Nzk5OTMyMTgwNSIgc3R5bGU9IndpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IHZlcnRpY2FsLWFsaWduOiAtMC45NTlleDsgbWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMThweDs7em9vbToxO3RyYW5zZm9ybTpzY2FsZSgxKTstbW96LXRyYW5zZm9ybTpzY2FsZSgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwOy1tb3otdHJhbnNmb3JtLW9yaWdpbjowIDAiIHdpZHRoPSIxOThweCIgaGVpZ2h0PSIyM3B4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdHlwZT0idGV4dC9jc3MiPgoKPC9zdHlsZT48ZGVmcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMjIxQSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTk2MyA5NzNsLTQ3OCAtMTIzMmgtMzJsLTIwMiA1MzBjLTE3IDQ1IC0zNyA1OSAtNjIgNTljLTE3IDAgLTQzIC0xMSAtNjUgLTMxbC0xMiAyMGwxNTYgMTI0aDE5bDIwNCAtNTM2aDRsNDE0IDEwNjZoNTRaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTYzIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzUwIDEwN2wxNiAtMTBjLTYxIC03NyAtMTE0IC0xMDggLTE4OSAtMTA4Yy05MyAwIC0xNDcgNTIgLTE0NyAxNTRjMCA5MyA1MiAxODAgMTIzIDIzN2M0OSAzOSAxMDYgNjEgMTY3IDYxczEwNSAtMzQgMTA1IC04MWMwIC0yNyAtMjIgLTQ4IC00OCAtNDhjLTI4IDAgLTM5IDIwIC0zOSA0MGMwIDE4IDE1IDI5IDE1IDQ4YzAgMTIgLTE0IDIwIC0zNyAyMGMtNDAgMCAtODAgLTE4IC0xMDkgLTQ4Yy01NiAtNTkgLTkxIC0xNDQgLTkxIC0yMzMgYzAgLTcyIDMyIC0xMTQgODkgLTExNGM1MyAwIDkxIDI1IDE0NSA4MloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTgzIC0xNDFsLTEwIDE5YzU1IDM3IDgzIDc0IDgzIDEwN2MwIDcgLTYgMTMgLTE0IDEzcy0xOCAtNCAtMjkgLTRjLTM3IDAgLTU4IDE3IC01OCA1MXMyNCA1NyA2MCA1N2M0NSAwIDgwIC0zNSA4MCAtODdjMCAtNjAgLTQzIC0xMjMgLTExMiAtMTU2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02NCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTUyMSA2ODNsNiAtNmwtMzkgLTE1MmwtNjAgLTIxOWMtMzEgLTExNCAtNjUgLTIzMCAtNjUgLTI0NmMwIC0xMiA1IC0yMCAxOCAtMjBjMTcgMCAyOCA5IDgyIDcxbDEyIC0xMGMtNDkgLTczIC05NyAtMTE0IC0xNDcgLTExNGMtMjYgMCAtNDEgMTggLTQxIDQ1YzAgMjMgMiAzOSAxMyA4OWMtNTkgLTk5IC0xMTAgLTEzMiAtMTc4IC0xMzJjLTY1IDAgLTEwNyA0MSAtMTA3IDExN2MwIDE2MiAxNjIgMzM1IDI5MiAzMzUgYzQyIDAgNTkgLTE5IDY1IC01OGgxbDQ1IDE2M2MxNSA1MyAxNCA1NyAxNCA3MWMwIDIxIC05IDI0IC02NCAyNnYxN2M2NCA2IDEwMCAxMiAxNTMgMjN6TTM1NiAzNjFjMCAzNiAtMjQgNTcgLTQ3IDU3Yy0yOCAwIC02MyAtMTcgLTkxIC00NmMtNjYgLTcwIC0xMTYgLTE3OSAtMTE2IC0yNjJjMCAtNDYgMjMgLTczIDU4IC03M2M5MiAwIDE5NiAxNzIgMTk2IDMyNFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zRCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNyAzMjBoLTU4OXY2Nmg1ODl2LTY2ek02MzcgMTIwaC01ODl2NjZoNTg5di02NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yOCIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTMwNCAtMTYxbC0xMiAtMTZjLTE1OCA5MCAtMjQ0IDI1OSAtMjQ0IDQyOWMwIDE4NSA4NyAzMjkgMjQ3IDQyNGw5IC0xNmMtMTM5IC0xMTkgLTE3MCAtMjEyIC0xNzAgLTQwNWMwIC0xODYgMzAgLTI5OSAxNzAgLTQxNloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNjkiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNjQgNTk5YzAgLTI4IC0yMyAtNTEgLTQ5IC01MWMtMjkgMCAtNDggMjEgLTQ4IDUzYzAgMzEgMjAgNTMgNDcgNTNzNTAgLTI2IDUwIC01NXpNMjIyIDExNGwxMyAtMTFjLTU1IC04NCAtODcgLTExNCAtMTM3IC0xMTRjLTMzIDAgLTQ5IDE4IC00OSA1NWMwIDIwIDcgNTUgMjIgMTExbDQ4IDE3N2M1IDE4IDkgMzYgOSA0NGMwIDIwIC0xMCAyMyAtNjQgMjR2MTZjMzkgMyA1OSA2IDE2MCAyNWw0IC0zbC05NCAtMzQzIGMtNSAtMTcgLTEwIC0zMCAtMTAgLTQ0YzAgLTEwIDYgLTE1IDE0IC0xNWMxNyAwIDQxIDIxIDg0IDc4WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTMxIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMzk0IDBoLTI3NnYxNWM3NCA0IDk1IDI1IDk1IDgwdjQ0OWMwIDM0IC05IDQ5IC0zMCA0OWMtMTAgMCAtMjcgLTUgLTQ1IC0xMmwtMjcgLTEwdjE0bDE3OSA5MWw5IC0zdi01OTdjMCAtNDMgMjAgLTYxIDk1IC02MXYtMTVaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04MyAtMTQxbC0xMCAxOWM1NSAzNyA4MyA3NCA4MyAxMDdjMCA3IC02IDEzIC0xNCAxM3MtMTggLTQgLTI5IC00Yy0zNyAwIC01OCAxNyAtNTggNTFzMjQgNTcgNjAgNTdjNDUgMCA4MCAtMzUgODAgLTg3YzAgLTYwIC00MyAtMTIzIC0xMTIgLTE1NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTM5NCAwaC0yNzZ2MTVjNzQgNCA5NSAyNSA5NSA4MHY0NDljMCAzNCAtOSA0OSAtMzAgNDljLTEwIDAgLTI3IC01IC00NSAtMTJsLTI3IC0xMHYxNGwxNzkgOTFsOSAtM3YtNTk3YzAgLTQzIDIwIC02MSA5NSAtNjF2LTE1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNODMgLTE0MWwtMTAgMTljNTUgMzcgODMgNzQgODMgMTA3YzAgNyAtNiAxMyAtMTQgMTNzLTE4IC00IC0yOSAtNGMtMzcgMCAtNTggMTcgLTU4IDUxczI0IDU3IDYwIDU3YzQ1IDAgODAgLTM1IDgwIC04N2MwIC02MCAtNDMgLTEyMyAtMTEyIC0xNTZaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkMiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik04MyAtMTQxbC0xMCAxOWM1NSAzNyA4MyA3NCA4MyAxMDdjMCA3IC02IDEzIC0xNCAxM3MtMTggLTQgLTI5IC00Yy0zNyAwIC01OCAxNyAtNTggNTFzMjQgNTcgNjAgNTdjNDUgMCA4MCAtMzUgODAgLTg3YzAgLTYwIC00MyAtMTIzIC0xMTIgLTE1NloiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkEiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0yNzkgNTk4YzAgLTI3IC0yNCAtNTAgLTUwIC01MGMtMzAgMCAtNTQgMjEgLTU0IDUyYzAgMzAgMjUgNTIgNTMgNTJjMjcgMCA1MSAtMjYgNTEgLTU0ek0yNDYgNDM4bC0xMDQgLTQxMGMtNDEgLTE2MiAtMTAwIC0yMzUgLTE4NyAtMjM1Yy00NiAwIC03OSAyNSAtNzkgNjFjMCAyNCAxOCA0NCA0MSA0NGMyNyAwIDM5IC0xNiAzOSAtMzdjMCAtMjIgLTEyIC0xOSAtMTIgLTM0YzAgLTcgNiAtMTIgMTggLTEyYzQwIDAgNjMgNDQgOTcgMTgyIGw3MiAyOTJjMTIgNDkgMTYgNzAgMTYgODBjMCAyMiAtMTIgMzEgLTQ4IDMxaC0yNnYxNmMzMiAyIDg1IDEwIDE2OSAyNVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0zMiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ3NCAxMzdsLTU0IC0xMzdoLTM5MXYxMmwxNzggMTg5Yzk0IDk5IDEzMCAxNzUgMTMwIDI2MGMwIDkxIC01NCAxNDEgLTEzOSAxNDFjLTcyIDAgLTEwNyAtMzIgLTE0NyAtMTMwbC0yMSA1YzIxIDExNyA4NSAxOTkgMjA4IDE5OWMxMTMgMCAxODUgLTc3IDE4NSAtMTc2YzAgLTc5IC0zOSAtMTU0IC0xMjggLTI0OGwtMTY1IC0xNzZoMjM0YzQyIDAgNjMgMTEgOTYgNjdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU4tMkUiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik0xODEgNDNjMCAtMjkgLTI2IC01NCAtNTYgLTU0Yy0zMSAwIC01NSAyNCAtNTUgNTVzMjUgNTYgNTYgNTZjMjkgMCA1NSAtMjcgNTUgLTU3WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTJFIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMTgxIDQzYzAgLTI5IC0yNiAtNTQgLTU2IC01NGMtMzEgMCAtNTUgMjQgLTU1IDU1czI1IDU2IDU2IDU2YzI5IDAgNTUgLTI3IDU1IC01N1oiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yRSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTE4MSA0M2MwIC0yOSAtMjYgLTU0IC01NiAtNTRjLTMxIDAgLTU1IDI0IC01NSA1NXMyNSA1NiA1NiA1NmMyOSAwIDU1IC0yNyA1NSAtNTdaIi8+PHBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iU1RJWFdFQk1BSU5JLTY5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjY0IDU5OWMwIC0yOCAtMjMgLTUxIC00OSAtNTFjLTI5IDAgLTQ4IDIxIC00OCA1M2MwIDMxIDIwIDUzIDQ3IDUzczUwIC0yNiA1MCAtNTV6TTIyMiAxMTRsMTMgLTExYy01NSAtODQgLTg3IC0xMTQgLTEzNyAtMTE0Yy0zMyAwIC00OSAxOCAtNDkgNTVjMCAyMCA3IDU1IDIyIDExMWw0OCAxNzdjNSAxOCA5IDM2IDkgNDRjMCAyMCAtMTAgMjMgLTY0IDI0djE2YzM5IDMgNTkgNiAxNjAgMjVsNCAtM2wtOTQgLTM0MyBjLTUgLTE3IC0xMCAtMzAgLTEwIC00NGMwIC0xMCA2IC0xNSAxNCAtMTVjMTcgMCA0MSAyMSA4NCA3OFoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTkktNkIiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik00NjEgNDI4di0xNmMtNDcgLTMgLTc4IC0yMyAtMjI1IC0xNTRsMzcgLTg4YzM5IC05MiA2MiAtMTI5IDgxIC0xMjljMTUgMCAyNyAxMSA0NSA0MmM1IDggMTAgMTcgMTUgMjZsMTUgLTExYy00NiAtODQgLTcxIC0xMDkgLTExMSAtMTA5Yy0yOSAwIC00OSAxOSAtODEgODJjLTE4IDM1IC00NCA5NyAtNjAgMTQxbC00MCAtMzJsLTQ4IC0xODBoLTc1bDE0MSA1MjhjMTMgNDggMTYgNzEgMTggODhjLTIgMTggLTE3IDI0IC01MSAyNGgtMTh2MTYgYzU5IDcgOTggMTQgMTU3IDI3bDYgLTZsLTEyMCAtNDU2bDQzIDMzYzk0IDcyIDE0MyAxMjAgMTQzIDE0MGMwIDExIC0xMiAxOCAtMzcgMThoLTE0djE2aDE3OVoiLz48cGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJTVElYV0VCTUFJTi0yQyIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTgzIC0xNDFsLTEwIDE5YzU1IDM3IDgzIDc0IDgzIDEwN2MwIDcgLTYgMTMgLTE0IDEzcy0xOCAtNCAtMjkgLTRjLTM3IDAgLTU4IDE3IC01OCA1MXMyNCA1NyA2MCA1N2M0NSAwIDgwIC0zNSA4MCAtODdjMCAtNjAgLTQzIC0xMjMgLTExMiAtMTU2WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTI3OSA1OThjMCAtMjcgLTI0IC01MCAtNTAgLTUwYy0zMCAwIC01NCAyMSAtNTQgNTJjMCAzMCAyNSA1MiA1MyA1MmMyNyAwIDUxIC0yNiA1MSAtNTR6TTI0NiA0MzhsLTEwNCAtNDEwYy00MSAtMTYyIC0xMDAgLTIzNSAtMTg3IC0yMzVjLTQ2IDAgLTc5IDI1IC03OSA2MWMwIDI0IDE4IDQ0IDQxIDQ0YzI3IDAgMzkgLTE2IDM5IC0zN2MwIC0yMiAtMTIgLTE5IC0xMiAtMzRjMCAtNyA2IC0xMiAxOCAtMTJjNDAgMCA2MyA0NCA5NyAxODIgbDcyIDI5MmMxMiA0OSAxNiA3MCAxNiA4MGMwIDIyIC0xMiAzMSAtNDggMzFoLTI2djE2YzMyIDIgODUgMTAgMTY5IDI1WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOSS02QiIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTQ2MSA0Mjh2LTE2Yy00NyAtMyAtNzggLTIzIC0yMjUgLTE1NGwzNyAtODhjMzkgLTkyIDYyIC0xMjkgODEgLTEyOWMxNSAwIDI3IDExIDQ1IDQyYzUgOCAxMCAxNyAxNSAyNmwxNSAtMTFjLTQ2IC04NCAtNzEgLTEwOSAtMTExIC0xMDljLTI5IDAgLTQ5IDE5IC04MSA4MmMtMTggMzUgLTQ0IDk3IC02MCAxNDFsLTQwIC0zMmwtNDggLTE4MGgtNzVsMTQxIDUyOGMxMyA0OCAxNiA3MSAxOCA4OGMtMiAxOCAtMTcgMjQgLTUxIDI0aC0xOHYxNiBjNTkgNyA5OCAxNCAxNTcgMjdsNiAtNmwtMTIwIC00NTZsNDMgMzNjOTQgNzIgMTQzIDEyMCAxNDMgMTQwYzAgMTEgLTEyIDE4IC0zNyAxOGgtMTR2MTZoMTc5WiIvPjxwYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9IlNUSVhXRUJNQUlOLTI5IiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNMjkgNjYwbDEyIDE2YzE1MyAtOTIgMjQ0IC0yNTkgMjQ0IC00MjljMCAtMTg1IC04OCAtMzI3IC0yNDcgLTQyNGwtOSAxNmMxNDIgMTE3IDE3MCAyMTEgMTcwIDQwNWMwIDE4NyAtMjUgMzAyIC0xNzAgNDE2WiIvPjwvZGVmcz48ZyBzdHJva2U9ImJsYWNrIiBmaWxsPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjIxQSIgeD0iMCIgeT0iLTcxIi8+PHJlY3Qgc3Ryb2tlPSJub25lIiB3aWR0aD0iMTQwMiIgaGVpZ2h0PSI2MCIgeD0iOTMzIiB5PSI4NTIiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MzMsMCkiPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjMiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjQ0OSIgeT0iMCIvPjx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNjQiIHg9Ijg3MCIgeT0iMCIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tM0QiIHg9IjI2MTMiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMjgiIHg9IjM1ODEiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTE5LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjQ2NTkiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDgwLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzEiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjU4MjEiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MjQyLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkMiIHg9IjY5ODIiIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3NDA0LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMzIiIHg9IjQwMCIgeT0iLTIxMyIvPjwvZz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9IjgxNDQiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9Ijg1NjYiIHk9IjAiLz48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU4tMkUiIHg9Ijg5ODciIHk9IjAiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NDA5LDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTY5Ii8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZCIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTJDIiB4PSIxMDEyMiIgeT0iMCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNTQzLDApIj48dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZBIi8+PHVzZSB0cmFuc2Zvcm09InNjYWxlKDAuNzA3MTA2NzgxMTg2NTQ3NikiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjU1RJWFdFQk1BSU5JLTZCIiB4PSI0MDAiIHk9Ii0yMTMiLz48L2c+PHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOLTI5IiB4PSIxMTI1NiIgeT0iMCIvPjwvZz48L3N2Zz4=&quot; width=&quot;198&quot; height=&quot;23&quot;&gt;&lt;/span&gt;&lt;/span&gt;을 구할 수 있다.&lt;/p&gt;
  
  &lt;p&gt;만약 같은 짝수 길이의 사이클이 &lt;strong&gt;쌍으로 존재하지 않는다면&lt;/strong&gt;  제곱근 순열은 &lt;strong&gt;존재하지 않는다&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;div id=&quot;wmd-preview-section-2382&quot; class=&quot;wmd-preview-section preview-content&quot;&gt;

&lt;h2 id=&quot;code&quot;&gt;Code&lt;/h2&gt;&lt;div&gt;&lt;p&gt;&lt;script src=&quot;https://gist.github.com/bowbowbow/9decdf5de301a447fc373830a5475b9c.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>문제</category>
      <category>codeforces</category>
      <category>Square Root of Permutation</category>
      <category>코드포스</category>
      <author>bowbowbow</author>
      <guid isPermaLink="true">https://bowbowbow.tistory.com/18</guid>
      <comments>https://bowbowbow.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 8 Apr 2016 18:41:24 +0900</pubDate>
    </item>
  </channel>
</rss>