diff --git a/02-perfect/perfect.tex b/02-perfect/perfect.tex
index a00c5be219db6f0b9c60264cc2488c0821032da7..b5efeb45387a096713eae7bd0d36669009a7642c 100644
--- a/02-perfect/perfect.tex
+++ b/02-perfect/perfect.tex
@@ -189,7 +189,7 @@ Pokud se sejde méně než~$\ell$, v~každé $\ell$-tici nějaká část chybí,
 takže z~žádné $\ell$-tice se nic nedozvíme.
 }
 
-\subsection{Shamirovo schéma}
+\subsection[shamir]{Shamirovo schéma}
 
 Efektivní konstrukci $(k,\ell)$-schémat popsal v~roce 1979 Adi Shamir.
 Začneme triviálním případem.
diff --git a/07-teorie-cisel/teorie-cisel.tex b/07-teorie-cisel/teorie-cisel.tex
index d7d991f04fbe424e07531c23ef6dc3e8bf2bac42..33b01f0b08dc13ee7d30c23c0d2439b4d6e1917e 100644
--- a/07-teorie-cisel/teorie-cisel.tex
+++ b/07-teorie-cisel/teorie-cisel.tex
@@ -376,6 +376,30 @@ Dále pokračujeme indukcí podle~$k$, přičemž případ pro $k=2$ použijeme
 jako indukční krok.
 \qed
 
+Nám se ovšem bude hodit i konstruktivní důkaz, který nám umožní hledané~$x$ efektivně najít.
+
+\theoremn{Efektivní CRT}{
+$f\inv(a_1,\ldots,a_k)$ lze spočítat v~čase $\O(kb^2)$.
+}
+
+\proof
+Větu opět stačí dokázat pro $k=2$ a pak použít indukci.
+
+Inspirujeme se Lagrangeovou interpolací z~oddílu \secref{shamir}.
+Pokud bychom znali čísla $u_1$ a~$u_2$ taková, že $f(u_1) = (1,0)$
+a $f(u_2) = (0,1)$, řešením je jejich lineární kombinace
+$x = (a_1u_1 + a_2u_2) \bmod N$.
+Jelikož $f$ je homomorfismus, je lineární. Proto platí:
+$f(x) = a_1f(u_1) + a_2f(u_2) = a_1(1,0) + a_2(0,1) = (a_1,a_2)$.
+
+Zbývá si pořídit~$u_1$ ($u_2$~najdeme obdobně)
+Nejprve si všimneme, že $f(N_2) = (v_1,0)$ pro nějaké~$v_1$.
+Pokud je $v_1=1$, položíme $u_1=N_2$ a jsme hotovi.
+Jinak najdeme multiplikativní inverzi~$w_1$ čísla $v_1$ modulo~$N_1$
+a položíme $u_1=w_1N_2$. Bude platit $f(u_1) = f(w_1N_2) = w_1f(N_2)
+= w_1(v_1,0) = (w_1v_1\bmod N_1,0) = (1,0)$.
+\qed
+
 \subsection{Eulerova funkce}
 
 Už jsme zavedli funkci~$\varphi(n)$, která udává, kolik prvků ze~$Z_n$ je nesoudělných s~$n$,