From: couchot Date: Thu, 12 Feb 2015 14:34:19 +0000 (+0100) Subject: initiailisation X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/14Mons.git/commitdiff_plain initiailisation --- 2b4ef4e6e01bc754ba3362787db711db7579ab28 diff --git a/14Mons.pdf b/14Mons.pdf new file mode 100644 index 0000000..bbedbb4 Binary files /dev/null and b/14Mons.pdf differ diff --git a/14Mons.tex b/14Mons.tex new file mode 100644 index 0000000..204ec3f --- /dev/null +++ b/14Mons.tex @@ -0,0 +1,697 @@ +\documentclass[a4paper,notitlepage,11pt]{article} + +%\usepackage[latin1]{inputenc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[english]{babel} + +\usepackage{amsmath,amssymb,amsthm,amstext,latexsym,eufrak,euscript} +\usepackage{subfigure,pstricks,pst-node,pst-coil} +\usepackage{dsfont} +\usepackage{stmaryrd} +\usepackage{cite} +\usepackage{graphicx} +\usepackage{algorithm2e} +%\usepackage[font=footnotesize]{subfig} +\usepackage{listings} +\usepackage{epsfig} +\usepackage{url} + +\usepackage{calc} +\usepackage{multicol} +\usepackage{pslatex} + +\subfigtopskip=0pt +\subfigcapskip=0pt +\subfigbottomskip=0pt + + + + + + + +\newcommand{\JFC}[1]{\begin{color}{green}\textit{}\end{color}} +\newcommand{\CG}[1]{\begin{color}{blue}\textit{}\end{color}} +\newcommand{\tv}[1] {\lVert #1 \rVert_{\rm TV}} + + + +\newtheorem*{xpl}{Running example} +\newtheorem{theorem}{Theorem} + + + +\newcommand{\vectornorm}[1]{\ensuremath{\left|\left|#1\right|\right|_2}} +\newcommand{\ie}{\textit{i.e.}} +\newcommand{\Nats}[0]{\ensuremath{\mathbb{N}}} +\newcommand{\Reels}[0]{\ensuremath{\mathbb{R}}} +\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} +\newcommand{\rel}[0]{\ensuremath{{\mathcal{R}}}} +\newcommand{\Gall}[0]{\ensuremath{\mathcal{G}}} + + +%\usepackage[frenchb]{babel} % UNCOMMENT IF YOU ARE WRITING IN FRENCH +\usepackage[lmargin=2.5cm, rmargin=2.5cm,bottom=2.5cm,top=2.5cm]{geometry} + + +\author{J.-F. Couchot, P.-C. Heam, C. Guyeux, Q. Wang, and J. M. Bahi\\ +FEMTO-ST Institute, University of Franche-Comt\'{e}, France\\ +College of Automation, Guangdong University of Technology, China\\ +\{jean-francois.couchot,pierre-cyrille.heam,christophe.guyeux,\\jacques.bahi\}@univ-fcomte.fr, +\\wangqianxue@gdut.edu.cn +} + + + +\title {Traversing a $n$-cube without Balanced Hamiltonian Cycle \\ + to Generate Pseudorandom Numbers} + + +%\date{} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} + +\begin{document} +\maketitle +\thispagestyle{empty} % Necessary in order for pagestyle{empty} to work +\pagestyle{empty} + + +%\keywords{Pseudorandom Number Generator, Theory of Chaos, Markov Matrices, Hamiltonian Paths, Mixing Time, Gray Codes, Statistical Tests} + +\begin{abstract} +\JFC{Synthetiser} +This article presents a new class +of Pseudorandom Number Generators. +The generators are based on traversing a $n$-cube where +a Balanced Hamiltonian Cycle has been removed. The construction of such generators is automatic for small number of bits, but remains an open problem when this +number becomes large. A running example is used throughout the paper. Finally, first statistical experiments of these generators are presented, they show how efficient and promising the proposed approach seems. +\end{abstract} + + + + + + +\section{{Introduction}} +Many fields of research or applications like numerical simulations, +stochastic optimization, or information security are highly dependent on +the use of fast and unbiased random number generators. Depending on the +targeted application, reproducibility must be either required, leading +to deterministic algorithms that produce numbers as close as possible +to random sequences, or refused, which implies to use an external +physical noise. The former are called pseudorandom number generators +(PRNGs) while the latter are designed by truly random number generators (TRNGs). +TRNGs are used for instance in cypher keys generation, or in hardware based +simulations or security devices. Such TRNGs are often based on a chaotic +physical signal, may be quantized depending on the application. +This quantization however raises the problem of the degradation of chaotic +properties. + +The use of PRNGs, for its part, is a necessity in a large variety +of numerical simulations, in which +responses of devices under study must be compared using the same ``random'' +stream. This reproducibility is required too for symmetric encryption like +one-time pad, as sender and receiver must share the same pad. However, in +that situation, security of the pseudorandom stream must be mathematically +proven: an attacker must not be able to computationally distinguish a +pseudorandom sequence generated by the considered PRNG with a really random +one. Such cryptographically secure pseudorandom number generators are +however only useful in cryptographic contexts, due to their slowness +resulting from their security. + + +Other kind of properties are desired for PRNGs used in numerical simulations +or in programs that embed a Monte-Carlo algorithm. In these situations, +required properties are speed and random-like profiles of the generated +sequences. The fact that a given PRNG is unbiased and behaves as a white +noise is thus verified using batteries of statistical tests on a large amount +of pseudorandom numbers. Reputed and up-to-date batteries are +currently the NIST suite~\cite{Nist10}, and DieHARD~\cite{Marsaglia1996}. + Finally, chaotic properties can be desired when +simulating a chaotic physical phenomenon or in hardware security, in +which cryptographical proofs are not realizable. +In both truly and pseudorandom number generation, there is thus a need +to mathematically guarantee the presence of chaos, and to show that +a post-treatment on a given secure and/or unbiased generator can be realized, +which adds chaos without deflating these desired properties. + + +This work takes place in this domain with the desire of automatically +generating a large class of PRNGs with chaos and statistical properties. +In a sense, it is close to~\cite{BCGR11} where the authors shown that +some Boolean maps may be embedded into an algorithm to provide a PRNG that has both +the theoretical Devaney's chaos property and the practical +property of succeeding NIST statistical battery of tests. +To achieve this, it has been proven in +this article that it is sufficient +for the iteration graph to be strongly connected, +and it is necessary and sufficient for its Markov probability matrix to be doubly stochastic. +However, they do not purpose conditions +to provide such Boolean maps. +Admittedly, sufficient conditions +to retrieve Boolean maps whose graphs are +strongly connected are given, but it remains to further filter those whose +Markov matrix is doubly stochastic. +This approach suffers from delaying the second requirement to a final step +whereas this is a necessary condition. +In this position article, we provide a completely new approach +to generate Boolean functions, whose Markov matrix is doubly stochastic and whose +graph of iterations is strongly connected. +Furthermore the rate of convergence is always taken into consideration to provide +PRNG with good statistical properties. + +This research work is organized as follows. +It firstly recall some preliminaries that make the document self-contained (Section~\ref{sec:preliminaries}), +The next section (Section~\ref{sec:DSSC}) shows how the +problem of finding some kind of matrices is moved into the graph theory. +Section~\ref{sec:hamiltonian} is the strongest contribution of this work. +It presents the main algorithm to generate Boolean maps with all the required properties and +proves that such a construction is correct. +Statistical evaluations are then summarized in Section~\ref{sec:exp}. +Conclusive remarks, open problems, and perspectives are +finally provided. + + + + \section{{Preliminaries}}\label{sec:preliminaries} + +In what follows, we consider the Boolean algebra on the set +$\Bool=\{0,1\}$ with the classical operators of conjunction '.', +of disjunction '+', of negation '$\overline{~}$', and of +disjunctive union $\oplus$. +Let $n$ be a positive integer. A {\emph{Boolean map} $f$ is +a function from the Boolean domain + to itself +such that +$x=(x_1,\dots,x_n)$ maps to $f(x)=(f_1(x),\dots,f_n(x))$. +Functions are iterated as follows. +At the $t^{th}$ iteration, only the $s_{t}-$th component is +``iterated'', where $s = \left(s_t\right)_{t \in \mathds{N}}$ is a sequence of indices taken in $\llbracket 1;n \rrbracket$ called ``strategy''. Formally, +let $F_f: \llbracket1;n\rrbracket\times \Bool^{n}$ to $\Bool^n$ be defined by +\[ +F_f(i,x)=(x_1,\dots,x_{i-1},f_i(x),x_{i+1},\dots,x_n). +\] +Then, let $x^0\in\Bool^n$ be an initial configuration +and $s\in +\llbracket1;n\rrbracket^\Nats$ be a strategy, +the dynamics are described by the recurrence +\begin{equation}\label{eq:asyn} +x^{t+1}=F_f(s_t,x^t). +\end{equation} + + +Let be given a Boolean map $f$. Its associated +{\emph{iteration graph}} $\Gamma(f)$ is the +directed graph such that the set of vertices is +$\Bool^n$, and for all $x\in\Bool^n$ and $i\in \llbracket1;n\rrbracket$, +the graph $\Gamma(f)$ contains an arc from $x$ to $F_f(i,x)$. + + +It is easy to associate a Markov Matrix $M$ to such a graph $G(f)$ +as follows: +$M_{ij} = \frac{1}{n}$ if there is an edge from $i$ to $j$ in $\Gamma(f)$ and $i \neq j$; $M_{ii} = 1 - \sum\limits_{j=1, j\neq i}^n M_{ij}$; and $M_{ij} = 0$ otherwise. + +\begin{xpl} +Let us consider for instance $n=3$. Let +$f^*: \Bool^3 \rightarrow \Bool^3$ be defined by +$f^*(x_1,x_2,x_3)=(x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3})$. +The iteration graph $\Gamma(f^*)$ of this function is given in +Figure~\ref{fig:iteration:f*} and its Markov matrix is given +in Figure~\ref{fig:markov:f*}. + + +\begin{figure}[ht] +\null\hfill +\subfigure[Iteration Graph $\Gamma(f^*)$ of the function $f^*$\label{fig:iteration:f*}]{ +\begin{minipage}{0.3\textwidth} +\includegraphics[scale=0.5]{iter_f0b.eps}% +\end{minipage} +} +\hfill% +\subfigure[Markov matrix associated to the function $f^*$\label{fig:markov:f*}]{% +\begin{minipage}{0.3\textwidth} +$ +\dfrac{1}{3} +\left( +\begin{array}{llllllll} +1 & 1 & 1 & 0 & 0 & 0 & 0 & 0 \\ +1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 \\ +0 & 0 & 1 & 1 & 0 & 0 & 1 & 0 \\ +0 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\ +1 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\ +0 & 0 & 0 & 0 & 1 & 1 & 0 & 1 \\ +0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 \\ +0 & 0 & 0 & 1 & 0 & 0 & 1 & 1 +\end{array} +\right) +$ +\end{minipage} +}% +\hfill\null +\caption{Representations of $f^*(x_1,x_2,x_3)=(x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3})$.}\label{fig1} +\end{figure} +\end{xpl} + + +The \emph{mixing time}~\cite{LevinPeresWilmer2006} is one of the usual metrics +that gives how far the rows of a Markov matrix +converge to a specific distribution. +It defines the smallest iteration number +that is sufficient to obtain a deviation lesser than a given $\varepsilon$ +for each rows of such kind of matrices. + +Let us finally present the pseudorandom number generator $\chi_{\textit{14Secrypt}}$ +which is based on random walks in $\Gamma(f)$. +More precisely, let be given a Boolean map $f:\Bool^n \rightarrow \Bool^n$, +a PRNG \textit{Random}, +an integer $b$ that corresponds to an awaited mixing time, and +an initial configuration $x^0$. +Starting from $x^0$, the algorithm repeats $b$ times +a random choice of which edge to follow and traverses this edge. +The final configuration is thus outputted. +This PRNG is formalized in Algorithm~\ref{CI Algorithm} further denoted +as $\chi_{\textit{14Secrypt}}$. + + + + +\begin{algorithm}[ht] +\begin{scriptsize} +%\JFC{Mettre ceci dans une boite flottante} +\KwIn{a function $f$, an iteration number $b$, an initial configuration $x^0$ ($n$ bits)} +\KwOut{a configuration $x$ ($n$ bits)} +$x\leftarrow x^0$\; +\For{$i=0,\dots,b-1$} +{ +$s\leftarrow{\textit{Random}(n)}$\; +$x\leftarrow{F_f(s,x)}$\; +} +return $x$\; +\end{scriptsize} +\caption{Pseudo Code of the $\chi_{\textit{14Secrypt}}$ PRNG} +\label{CI Algorithm} +\end{algorithm} + + +% This PRNG is a particularized version of Algorithm given in~\cite{BCGR11}. +% Compared to this latter, the length of the random +% walk of our algorithm is always constant (and is equal to $b$) whereas it +% was given by a second PRNG in this latter. +% However, all the theoretical results that are given in~\cite{BCGR11} remain +% true since the proofs do not rely on this fact. +% Let us recall the following theorem. + + + +Let $f: \Bool^{n} \rightarrow \Bool^{n}$. +It has been shown~\cite[Th. 4, p. 135]{BCGR11}} that +if its iteration graph is strongly connected, then +the output of $\chi_{\textit{14Secrypt}}$ follows +a law that tends to the uniform distribution +if and only if its Markov matrix is a doubly stochastic matrix. + + +The next section presents an efficient method to +generate Boolean functions +with Doubly Stochastic matrix and Strongly Connected iteration graph, +further (abusively) denoted as DSSC matrix. + + + +\section{{Generation of DSSC Matrices}}\label{sec:DSSC} +Finding DSSC matrices can be theoretically handled by +Constraint Logic Programming on Finite Domains (CLPFD): +all the variables range into finite integer domains with sum and +product operations. +However, this approach suffers from not being efficient enough for +large $n$ due to a \emph{generate and test} pattern. + +Intuitivelly, considering the $n$-cube and +removing one outgoing edge and +one ongoing edge for each node should be a practical answer +to the DSSC matrix finding problem. +Moreover, the previous wish of exaclty removing exactly one outgoing +and one ongoing edge for each node is solved by removing a +Hamiltonian cycle in the $n$-cube. The next section details this step. + + +\begin{xpl} +The iteration graph of $f^*$ +(given in Figure~\ref{fig:iteration:f*}) +is the $3$-cube in which the Hamiltonian cycle +$000,100,101,001,011,111,110,010,000$ +has been removed. +\end{xpl} + + +\section{{Removing Hamiltonian Cycles}}\label{sec:hamiltonian} +The first theoretical section (Section~\ref{sub:removing:theory}) +shows that this approach produces DSSC matrix, +as wished. +The motivation to focus on balanced Gray code is then given in Sec.~\ref{sub:gray}. +We end this section by giving some discussion about practical aspeccts +of an existing +algorithm that aims at computing such codes (Section~\ref{sub:algo:gray}). + +\subsection{Theoretical Aspects of Removing Hamiltonian Cycles} +\label{sub:removing:theory} +We first have the following result on stochastic matrix and $n$-cube without +Hamiltonian cycle. + + +\begin{theorem} +The Markov Matrix $M$ resulting from the $n$-cube in +which an Hamiltonian +cycle is removed, is doubly stochastic. +\end{theorem} + + + +% \begin{proof} +% An Hamiltonian cycle visits each vertex exactly once. +% For each vertex $v$ in the $n$-cube, +% one ongoing edge $(o,v)$ and one outgoing edge $(v,e)$ +% are thus removed. + +% Let us consider the Markov matrix $M$ of the $n$-cube. +% It is obviously doubly stochastic. +% Since we exactly remove one outgoing edge, the value of $M_{ve}$ decreases +% from $\frac{1}{n}$ to 0 and +% $M_{vv}$ is $\frac{1}{n}$. The $M$ matrix is stochastic again. +% Similarly for ongoing edge, since one ongoing edge is dropped for each +% vertex, the value of $M_{ov}$ decreases +% from $\frac{1}{n}$ to $0$. Moreover, since $M_{vv}$ is $\frac{1}{n}$, +% the sum of values in column $v$ is $1$, and $M$ is doubly stochastic. +% \end{proof} + +The proof is left as an exercise for the reader. +The following result states that the $n$-cube without one +Hamiltonian cycle +has the awaited property with regard to the connectivity. + +\begin{theorem} +The iteration graph issued from the $n$-cube where an Hamiltonian +cycle is removed is strongly connected. +\end{theorem} + + +% \begin{proof} +% We consider the reverse cycle $r$ of the Hamiltonian cycle $c$. +% There is no edge that belongs to both $r$ and $c$: otherwise $c$ +% would contain one vertex twice. Thus, no edges of $r$ has been removed. +% The cycle $r$ is obviously an Hamiltonian cycle and contains all the nodes. +% Any node of the $n$-cube where $c$ has been removed can thus reach any node. +% The iteration graph is thus strongly connected. +% \end{proof} +Again, the proof is left as an exercise for the reader. +Removing an Hamiltonian cycle in the $n$-cube solves thus the DSSC constraint. +We are then left to focus on the generation of Hamiltonian cycles in the +$n$-cube. Such a problem is equivalent to find cyclic Gray codes, \textit{i.e.}, +to find a sequence of $2^n$ codewords ($n$-bits strings) +where two successive elements differ in only one bit position and +and where the last codeword +differs in only one bit position from the first one. +The next section is dedicated to these codes. + +\subsection{Linking to Cyclic (Totally) Balanced Gray Codes}\label{sub:gray} +% Many research works~\cite{journals/combinatorics/BhatS96,VanSup04,journals/combinatorics/FlahiveB07} +% have addressed the subject of finding Gray codes. + +Let $n$ be a given integer. As far as we know, +the exact number of Gray codes in $\Bool^n$ is not known but +a lower bound, $\left(\frac{n*\log2}{e \log \log n}*(1 - o(1))\right)^{2^n}$ +has been given in~\cite{Feder:2009:NTB:1496397.1496515}. +For example, when $n$ is $6$, such a number is larger than $10^{13}$. +To avoid this combinatorial explosion, we want to +restrict the generation to any Gray code +such that the induced graph of iteration $\Gamma(f)$ is +``uniform''. In other words, if we count in $\Gamma(f)$ +the number of edges that modify the bit $i$, for $1 \le i \le n$, +all these values have to be close to each other. +Such an approach is equivalent to restrict the search of cyclic Gray codes +which are uniform too. + +This notion can be formalized as follows. Let $L = w_1, w_2, \dots, w_{2^n}$ be the sequence +of a $n$-bits cyclic Gray code. Let $S = s_1, s_2, \dots, s_{2^n}$ be the +transition sequence where $s_i$, $1 \le i \le 2^n$ indicates which bit position changes between +codewords at index $i$ and $i+1$ modulo $2^n$. +Let $\textit{TC}_n : \{1,\dots, n\} \rightarrow \{0, \ldots, 2^n\}$ the \emph{transition count} function +that counts the number of times $i$ occurs in $S$, \textit{i.e.}, the number of times +the bit $i$ has been switched in $L$. +The Gray code is \emph{totally balanced} if $\textit{TC}_n$ is constant (and equal to $\frac{2^n}{n}$). +It is \emph{balanced} if for any two bit indices $i$ and $j$, +$|\textit{TC}_n(i) - \textit{TC}_n(j)| \le 2$. + +\begin{xpl} +Let $L^*=000,100,101,001,011,111,110,010$ be the Gray code that corresponds to +the Hamiltonian cycle that has been removed in $f^*$. +Its transition sequence is $S=3,1,3,2,3,1,3,2$ and its transition count function is +$\textit{TC}_3(1)= \textit{TC}_3(2)=2$ and $\textit{TC}_3(3)=4$. Such a Gray code is balanced. + +Let now +$L^4=0000, 0010, 0110, 1110, 1111, 0111, 0011, 0001, 0101,$ +$0100, 1100, 1101, 1001, 1011, 1010, 1000$ +be a cyclic Gray code. Since $S=2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4$, +its transition count $\textit{TC}_4$ is equal to 4 everywhere and this code +is thus totally balanced. +% On the contrary, for the standard $4$-bits Gray code +% $L^{\textit{st}}=0000,0001,0011,0010,0110,0111,0101,0100,1100,$ +% $1101,1111,1110,1010,1011,1001,1000$, +% we have $\textit{TC}_4(1)=8$ $\textit{TC}_4(2)=4$ $\textit{TC}_4(3)=\textit{TC}_4(4)=2$ and +% the code is neither balanced nor totally balanced. +\end{xpl} + +\subsection{Induction-Based Generation of Balanced Gray Codes}\label{sub:algo:gray} + +The article~\cite{VanSup04} proposed the ``Construction B'' algorithm to produce Balanced Gray Codes. This method inductively constructs $n$-bits Gray code given a $n-2$-bit Gray code. The authors have proven that +$S_{n}$ is transition sequence of a cyclic $n$-bits Gray code +if $S_{n-2}$ is. It starts with the transition sequence $S_{n-2}$ of such code +and the following first step: + +\emph{ +Let $l$ be an even positive integer. Find +$u_1, u_2, \dots , u_{l-2}, v$ (maybe empty) subsequences of $S_{n-2}$ +such that $S_{n-2}$ is the concatenation of +$ +s_{i_1}, u_0, s_{i_2}, u_1, s_{i_3}, u_2, . . . , s_{i_l-1}, u_{l-2}, s_{i_l}, v +$ +where $i_1 = 1$, $i_2 = 2$, and $u_0 = \emptyset$ (the empty sequence). +} + + +However, this first step is not constructive: +it does not precises how to select the subsequences which ensures that +yielded Gray code is balanced. + +Let us now evaluate the number of subsequences $u$ +than can be produced. Since $s_{i_1}$ and $s_{i_2}$ are well +defined, we have to chose the $l-2$ elements of $s_3,s_4,\dots,s_{2^{n-2}}$ +that become $s_{i_3},\dots, s_{i_l}$. Let $l = 2l'$. +There are thus +$ +\#_n = \sum_{l'=1}^{2^{n-3}} {2^{n-2}-2 \choose 2l'-2} +$ +distinct subsequences $u$. +Numerical values of $\#_n$ are given in table~\ref{table:combinations}. +Even for small values of $n$, it is not reasonable to hope to evaluate the whole +set of subsequences. +\begin{table}[ht] +\begin{center} +\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|} +\hline +$n$ & 4& 5 & 6 & 7 & 8 \\ +\hline +$\#_n$ & +1& 31 & 8191 & 5.3e8 & 2.3e18 \\ +\hline +$\#'_n$ & +1 & 15 & 3003 & 1.4e8 & 4.5e17 \\ +\hline +\end{tabular} +\end{center} +\caption{Number of distinct $u$ subsequences.}\label{table:combinations} +\end{table} + +However, it is shown in the article that $\textit{TC}_n(n-1)$ and $\textit{TC}_n(n)$ are +equal to $l$. Since this step aims at generating (totally) balanced Gray codes, +we have set $l$ to be the largest even integer less or equal than $\frac{2^n}{n}$. +This improvement allows to reduce the number of subsequences to study. +Examples of such cardinalities are given in Table~\ref{table:combinations} and are referred as +$\#'_n$. + +Finally, the table~\ref{table:nbFunc} gives the number of non-equivalent functions issued from +(totally) balanced Gray codes that can be generated +with the approach presented in this article with respect to the number of bits. In other words, it corresponds to the size of the class of generators that can be produced. Notice that when $n$ is 7 and 8, we only give lower bounds for +2.5E5 distinct choices for the $u$ subsequence. + +\begin{table}[ht] +\begin{center} +\begin{tabular}{|l|c|c|c|c|c|} +\hline +$n$ & 4 & 5 & 6 & 7 & 8 \\ +\hline +nb. of functions & 1 & 2 & 1332 & > 2300 & > 4500 \\ +\hline +\end{tabular} +\end{center} +\caption{Number of Generators w.r.t. the number of bits.} +\label{table:nbFunc} +\end{table} + + +\section{{Experiments}}\label{sec:exp} +We have directly implemented the algorithm given in Figure~\ref{CI Algorithm}. +For function $f$ and our experiments $b$ is set +with the value given in the fourth column of Table~\ref{table:nc}. +% \begin{algorithm}[ht] +% %\begin{scriptsize} +% \KwIn{a function $f$, an iteration number $b$, an initial configuration $x^0$ ($n$ bits)} +% \KwOut{a configuration $x$ ($n$ bits)} +% $x\leftarrow x^0$\; +% \For{$i=0,\dots,b-1$} +% { +% $s\leftarrow{\textit{Random}~mod~n}$\; +% $x\leftarrow{(x-(x\&(1< } + { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := % last name first + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.key} % this function is just for apalike +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ "In" % this is for apalike + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + "\cite{" * crossref * "}" * % this is for apalike +} + +FUNCTION {format.incoll.inproc.crossref} +{ "In" % this is for apalike + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % special for apalike + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + howpublished output + address output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % special for apalike + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address output % for apalike + new.sentence % there's no year + organization output % here so things + publisher output % are simpler + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + new.block + format.btitle "title" output.check + organization address new.block.checkb + organization output + address output + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + new.block + format.title output + new.block + howpublished output + new.block + note output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output % special for + output.year.check % apalike + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address output % for apalike + new.sentence % we always output + organization output % a nonempty organization + publisher output % here + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + new.block + format.title "title" output.check + new.block + note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +% There are three apalike cases: one person (Jones), +% two (Jones and de~Bruijn), and more (Jones et~al.). +% This function is much like format.crossref.editors. +% +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * s #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key, no organization + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label % apalike ignores organization + 'author.key.label % for labeling and sorting + if$ + } + if$ + ", " % these three lines are + * % for apalike, which + year field.or.null purify$ #-1 #4 substring$ % uses all four digits + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ % apalike uses initials + s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := % <= here + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +% apalike uses two sorting passes; the first one sets the +% labels so that the `a's, `b's, etc. can be computed; +% the second pass puts the references in "correct" order. +% The presort function is for the first pass. It computes +% label, sort.label, and title, and then concatenates. +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ % for + 'sort.label := % apalike + sort.label % style + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT % by label, sort.label, title---for final label calculation + +STRINGS { last.label next.extra } % apalike labels are only for the text; + +INTEGERS { last.extra.num } % there are none in the bibliography + +FUNCTION {initialize.extra.label.stuff} % and hence there is no `longest.label' +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + extra.label 'next.extra := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +% Now that the label is right we sort for real, +% on sort.label then year then title. This is +% for the second sorting pass. +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT % by sort.label, year, title---giving final bibliography order + +FUNCTION {begin.bib} +{ preamble$ empty$ % no \etalchar in apalike + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{}" write$ newline$ % no labels in apalike +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/apalike.sty b/apalike.sty new file mode 100644 index 0000000..09863b7 --- /dev/null +++ b/apalike.sty @@ -0,0 +1,31 @@ +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +\newlength{\bibhang} +\setlength{\bibhang}{2em} + +\@ifundefined{chapter}{\def\thebibliography#1{\section*{REFERENCES\@mkboth + {REFERENCES}{REFERENCES}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \itemsep 0pt\parsep 0pt + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}}% +{\def\thebibliography#1{\chapter*{Bibliography\@mkboth + {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \itemsep 0pt\parsep 0pt + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}} + +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{; }\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/article.cls b/article.cls new file mode 100644 index 0000000..38bba4e --- /dev/null +++ b/article.cls @@ -0,0 +1,642 @@ +%% +%% This is file `article.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% classes.dtx (with options: `article') +%% +%% This is a generated file. +%% +%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the LaTeX base system. +%% -------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% base system. You may however distribute the LaTeX base system without +%% such generated files. +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{article} + [2000/05/19 v1.4b + Standard LaTeX document class] +\newcommand\@ptsize{} +\newif\if@restonecol +\newif\if@titlepage +\@titlepagefalse +\if@compatibility\else +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +\fi +\if@compatibility + \renewcommand\@ptsize{0} +\else +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\fi +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +\if@compatibility\else +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\fi +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\if@compatibility\else +\DeclareOption{final}{\setlength\overfullrule{0pt}} +\fi +\DeclareOption{titlepage}{\@titlepagetrue} +\if@compatibility\else +\DeclareOption{notitlepage}{\@titlepagefalse} +\fi +\if@compatibility\else +\DeclareOption{onecolumn}{\@twocolumnfalse} +\fi +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} +\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final} +\ProcessOptions +\input{size1\@ptsize.clo} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand\baselinestretch{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\setcounter{topnumber}{2} +\renewcommand\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand\textfraction{.2} +\renewcommand\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand\dbltopfraction{.7} +\renewcommand\dblfloatpagefraction{.5} +\if@twoside + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection\quad + \fi + ##1}}{}}% + \def\subsectionmark##1{% + \markright {% + \ifnum \c@secnumdepth >\@ne + \thesubsection\quad + \fi + ##1}}} +\else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \thesection\quad + \fi + ##1}}}} +\fi +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\@gobbletwo + \let\sectionmark\@gobble + \let\subsectionmark\@gobble + } + \if@titlepage + \newcommand\maketitle{\begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \let \footnote \thanks + \null\vfil + \vskip 60\p@ + \begin{center}% + {\LARGE \@title \par}% + \vskip 3em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + {\large \@date \par}% % Set date in \large size. + \end{center}\par + \@thanks + \vfil\null + \end{titlepage}% + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\else +\newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\def\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \end{center}% + \par + \vskip 1.5em} +\fi +\setcounter{secnumdepth}{3} +\newcounter {part} +\newcounter {section} +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand \thepart {\@Roman\c@part} +\renewcommand \thesection {\@arabic\c@section} +\renewcommand\thesubsection {\thesection.\@arabic\c@subsection} +\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection} +\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph} +\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} +\newcommand\part{% + \if@noskipsec \leavevmode \fi + \par + \addvspace{4ex}% + \@afterindentfalse + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >\m@ne + \Large\bfseries \partname~\thepart + \par\nobreak + \fi + \huge \bfseries #2% + \markboth{}{}\par}% + \nobreak + \vskip 3ex + \@afterheading} +\def\@spart#1{% + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \huge \bfseries #1\par}% + \nobreak + \vskip 3ex + \@afterheading} +\newcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}} +\newcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}} +\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\if@twocolumn + \setlength\leftmargini {2em} +\else + \setlength\leftmargini {2.5em} +\fi +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\if@twocolumn + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +\else + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +\fi +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +\newcommand\labelitemi{\textbullet} +\newcommand\labelitemii{\normalfont\bfseries \textendash} +\newcommand\labelitemiii{\textasteriskcentered} +\newcommand\labelitemiv{\textperiodcentered} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} +\if@titlepage + \newenvironment{abstract}{% + \titlepage + \null\vfil + \@beginparpenalty\@lowpenalty + \begin{center}% + \bfseries \abstractname + \@endparpenalty\@M + \end{center}}% + {\par\vfil\null\endtitlepage} +\else + \newenvironment{abstract}{% + \if@twocolumn + \section*{\abstractname}% + \else + \small + \begin{center}% + {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% + \end{center}% + \quotation + \fi} + {\if@twocolumn\else\endquotation\fi} +\fi +\newenvironment{verse} + {\let\\\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} + {\endlist} +\newenvironment{quotation} + {\list{}{\listparindent 1.5em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item\relax} + {\endlist} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item\relax} + {\endlist} +\if@compatibility +\newenvironment{titlepage} + {% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\z@ + }% + {\if@restonecol\twocolumn \else \newpage \fi + } +\else +\newenvironment{titlepage} + {% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\@ne + }% + {\if@restonecol\twocolumn \else \newpage \fi + \if@twoside\else + \setcounter{page}\@ne + \fi + } +\fi +\newcommand\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thesection{\@Alph\c@section}} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\renewcommand \theequation {\@arabic\c@equation} +\newcounter{figure} +\renewcommand \thefigure {\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename~\thefigure} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +\newcounter{table} +\renewcommand\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename~\thetable} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg{2.55em} +\newcommand\@dotsep{4.5} +\setcounter{tocdepth}{3} +\newcommand\tableofcontents{% + \section*{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \@starttoc{toc}% + } +\newcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax + \addpenalty\@secpenalty + \addvspace{2.25em \@plus\p@}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par + \nobreak + \if@compatibility + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \fi + \endgroup + \fi} +\newcommand*\l@section[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi} +\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} +\newcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}}% + \@starttoc{lof}% + } +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand\listoftables{% + \section*{\listtablename + \@mkboth{% + \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}% + \@starttoc{lot}% + } +\let\l@table\l@figure +\newdimen\bibindent +\setlength\bibindent{1.5em} +\newenvironment{thebibliography}[1] + {\section*{\refname + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\section*{\indexname}]% + \@mkboth{\MakeUppercase\indexname}% + {\MakeUppercase\indexname}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width.4\columnwidth + \kern2.6\p@} +\newcommand\@makefntext[1]{% + \parindent 1em% + \noindent + \hb@xt@1.8em{\hss\@makefnmark}#1} +\newcommand\contentsname{Contents} +\newcommand\listfigurename{List of Figures} +\newcommand\listtablename{List of Tables} +\newcommand\refname{References} +\newcommand\indexname{Index} +\newcommand\figurename{\small Figure} +\newcommand\tablename{Table} +\newcommand\partname{Part} +\newcommand\appendixname{Appendix} +\newcommand\abstractname{Abstract} +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\setlength\columnsep{10\p@} +\setlength\columnseprule{0\p@} +\pagestyle{plain} +\pagenumbering{arabic} +\if@twoside +\else + \raggedbottom +\fi +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +\else + \onecolumn +\fi +\endinput +%% +%% End of file `article.cls'. diff --git a/conclusion.tex b/conclusion.tex new file mode 100644 index 0000000..f0522c7 --- /dev/null +++ b/conclusion.tex @@ -0,0 +1,17 @@ +Before this work, the second class of +chaos-based PRNG $\textit{CIPRNG}_f^2$ was robust against +batteries of statistical tests and was abusively said to be chaotic. +This work has formally established the proof that +the $\textit{CIPRNG}_f^2$ is chaotic according to the Devaney +definition for some well-chosen functions $f$. +The chaos condition is expressed as a necessary and sufficient condition +on a graph of iterations: this one has to be strongly connected. + +It has thus bridged the gap between the need of true chaos for some +applications and the practical efficiency. +In a future work, we plan to study sufficient conditions on $f$ to +observe this +connectivity +and to study computed functions in the perspective +of mixing time to improve their practical efficiency. + diff --git a/example.bib b/example.bib new file mode 100644 index 0000000..57913af --- /dev/null +++ b/example.bib @@ -0,0 +1,19 @@ + +@INPROCEEDINGS{Moore99, + AUTHOR = "R. Moore and J. Lopes", + TITLE = "Paper templates", + BOOKTITLE = "TEMPLATE'06, 1st International Conference on Template Production", + YEAR = "1999", + publisher = "SCITEPRESS", + file = F +} + +@BOOK{Smith98, + AUTHOR = "J. Smith", + TITLE = "The Book", + PUBLISHER = "The publishing company", + YEAR = "1998", + address = "London", + edition = "2nd", + file = F +} diff --git a/experiments/affiche3cube.py b/experiments/affiche3cube.py new file mode 100644 index 0000000..4fec3ba --- /dev/null +++ b/experiments/affiche3cube.py @@ -0,0 +1,36 @@ +from math import * + + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + + +lc= [(0,0),(sqrt(3),-1),(2,0),(sqrt(3)+2,-1), + (0,2),(sqrt(3),1),(2,2),(sqrt(3)+2,1)] + + +cx,cy=10,10 +I=1 +lcp=[((cx+I*x),(cy-I*y)) for (x,y) in lc] + +n=3 +st ="" +for i in range(2**3): + x = bin(i,n) + xst = "" + for j in range(n): + xst += str(x[j]) + st += xst + " [label=\""+xst+"\", pos=\""+str(lcp[i][0])+","+str(lcp[i][1])+"!\"];\n" + +print st + diff --git a/experiments/analyseRes.py b/experiments/analyseRes.py new file mode 100644 index 0000000..337a17d --- /dev/null +++ b/experiments/analyseRes.py @@ -0,0 +1,66 @@ +import networkx as nx +from networkx.algorithms import isomorphism +from math import * +import numpy as np +from optparse import OptionParser + + + +f= "res3.txt" + + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + + + +fd = open(f,'r') +laligne = fd.readline() + +laligne = laligne.replace('][','];[') +matrices = laligne.split(';') + + +for m in matrices[-1]: + try: + mp = eval(m) + #print mp + n= int(log(len(mp))/log(2)) + r=[] + for i in range(len(mp)): + o = bin(i,n) + imageb = bin(i,n) + for j in range(n): + op = bin(i,n) + op[j] = 1 -op[j] + if mp[i][dec(op,n)] != 0 : + imageb[j] = op[j] + image=dec(imageb,n) + r+=[image] + print r + except SyntaxError: + pass + + + + + diff --git a/experiments/calculeBorneInfNbGrayCodes.py b/experiments/calculeBorneInfNbGrayCodes.py new file mode 100644 index 0000000..3e2f9e7 --- /dev/null +++ b/experiments/calculeBorneInfNbGrayCodes.py @@ -0,0 +1,13 @@ +from math import * + + + +def log_2(x): + return log(x)/log(2) + +def bi(n): + o_1 = 0 + return pow((float(n*log_2(2))/(exp(1)*log_2(log_2(n)))*(1 - o_1)),2**n) + +for n in range(3,10): + print n, bi(n) diff --git a/experiments/calculeNbSouslistes.py b/experiments/calculeNbSouslistes.py new file mode 100644 index 0000000..5a933ee --- /dev/null +++ b/experiments/calculeNbSouslistes.py @@ -0,0 +1,30 @@ +from math import * + + +def binomialCoefficient(n, k): + if k < 0 or k > n: + return 0 + if k == 0 or k == n: + return 1 + diff = n - k + k = min(k, n - k) # take advantage of symmetry + c = 1 + for i in range(k): + c = c * (n - i) / (i + 1) + return c + +def bi(n): + return sum([binomialCoefficient(2**(n-2)-2, 2*lp-2) for lp in range(2**(n-1))[2:]]) + """ + k = 2**n/n + l = k if k%2 == 0 else k-1 + print "++", 2**(n-2)-2, l-2,binomialCoefficient(2**(n-2)-2, l-2) + return binomialCoefficient(2**(n-2)-2, l-2) + """ +stx ="" +sti ="" +for n in range(5,10): + stx+= str(n) + " & " + sti+= str(float(bi(n))) + " & " + +print stx, "\n", sti diff --git a/experiments/combinaisons.py b/experiments/combinaisons.py new file mode 100644 index 0000000..b0b840a --- /dev/null +++ b/experiments/combinaisons.py @@ -0,0 +1,62 @@ +from __future__ import generators +#!/usr/bin/env python + +__version__ = "1.0" + +"""xpermutations.py +Generators for calculating a) the permutations of a sequence and +b) the combinations and selections of a number of elements from a +sequence. Uses Python 2.2 generators. + +Similar solutions found also in comp.lang.python + +Keywords: generator, combination, permutation, selection + +See also: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/105962 +See also: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66463 +See also: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66465 +""" + + +def xcombinations(items, n): + if n==0: yield [] + else: + for i in xrange(len(items)): + for cc in xcombinations(items[:i]+items[i+1:],n-1): + yield [items[i]]+cc + +def xuniqueCombinations(items, n): + if n==0: yield [] + else: + for i in xrange(len(items)): + for cc in xuniqueCombinations(items[i+1:],n-1): + yield [items[i]]+cc + +def xselections(items, n): + if n==0: yield [] + else: + for i in xrange(len(items)): + for ss in xselections(items, n-1): + yield [items[i]]+ss + +def xpermutations(items): + return xcombinations(items, len(items)) + +if __name__=="__main__": + print "Permutations of 'love'" + for p in xpermutations(['l','o','v','e']): print ''.join(p) + + print + print "Combinations of 2 letters from 'love'" + for c in xcombinations(['l','o','v','e'],2): print ''.join(c) + + print + print "Unique Combinations of 2 letters from 'love'" + for uc in xuniqueCombinations(['l','o','v','e'],2): print ''.join(uc) + + print + print "Selections of 2 letters from 'love'" + for s in xselections(['l','o','v','e'],2): print ''.join(s) + + print + print map(''.join, list(xpermutations('done'))) diff --git a/experiments/combinaisons.pyc b/experiments/combinaisons.pyc new file mode 100644 index 0000000..f92b1d9 Binary files /dev/null and b/experiments/combinaisons.pyc differ diff --git a/experiments/evalPRNGs.txt b/experiments/evalPRNGs.txt new file mode 100644 index 0000000..388c817 --- /dev/null +++ b/experiments/evalPRNGs.txt @@ -0,0 +1,3 @@ +[[1032, 1057, 1008, 1068, 972, 960, 1012, 1008, 1001, 982, 1038, 992, 994, 1031, 1001, 977], [1052, 973, 995, 1031, 1038, 985, 995, 1018, 995, 1011, 1001, 982, 996, 963, 985, 1003], [1011, 995, 985, 1027, 1007, 987, 979, 991, 961, 976, 1033, 1050, 1000, 936, 1044, 987], [998, 1016, 1040, 1037, 985, 991, 984, 993, 1011, 998, 1001, 1044, 984, 998, 1032, 1076], [998, 998, 959, 1013, 1003, 1010, 990, 1005, 936, 1044, 973, 1017, 1018, 1046, 969, 1021], [969, 972, 1015, 978, 962, 902, 967, 1002, 976, 969, 1012, 1001, 961, 980, 992, 1069], [948, 994, 1029, 1088, 1036, 898, 1032, 984, 980, 949, 1021, 1004, 984, 987, 1009, 1028], [1034, 1042, 1004, 1034, 990, 964, 961, 991, 1000, 1030, 1007, 1024, 1034, 1005, 1010, 1034], [1006, 961, 1001, 936, 1002, 969, 1021, 973, 1041, 1025, 997, 1032, 1001, 1025, 949, 958], [1036, 1010, 961, 1013, 1048, 964, 995, 965, 999, 997, 983, 969, 987, 1045, 979, 1035], [1029, 964, 997, 999, 1056, 1051, 1005, 1039, 986, 995, 1003, 1012, 980, 1005, 937, 971], [981, 999, 1011, 1017, 999, 986, 1051, 1019, 1014, 984, 992, 1041, 1010, 1019, 1002, 959], [1025, 1005, 983, 996, 943, 1008, 915, 1091, 1004, 1066, 1040, 1014, 1004, 1015, 926, 937], [1018, 1029, 1019, 1010, 1009, 1054, 1027, 1016, 1010, 968, 987, 977, 1050, 1040, 954, 988], [982, 970, 1039, 980, 976, 1001, 1034, 1030, 958, 956, 967, 920, 986, 1014, 917, 947], [1013, 1038, 923, 961, 974, 997, 1003, 1039, 1025, 1037, 974, 1005, 983, 1047, 971, 1034]] +[[980, 1041, 1023, 990, 1052, 1021, 1018, 1003, 990, 970, 990, 973, 1034, 993, 1024, 1054, 1017, 974, 1059, 1039, 998, 917, 1012, 984, 1006, 981, 1007, 926, 942, 998, 1033, 1022, 1009, 1016, 996, 974, 996, 1018, 948, 1005, 1022, 1039, 985, 1005, 1009, 967, 921, 1012, 1024, 1001, 984, 943, 1004, 1011, 1010, 967, 1008, 995, 1008, 960, 972, 981, 970, 999], [994, 952, 984, 974, 998, 1005, 996, 999, 934, 998, 965, 1037, 1010, 972, 1031, 1038, 955, 992, 986, 1000, 1038, 1020, 989, 958, 1027, 990, 971, 987, 1014, 1015, 992, 1012, 983, 1019, 1015, 990, 987, 960, 984, 964, 1024, 1046, 1003, 1053, 1011, 1000, 996, 1010, 1046, 999, 938, 1016, 1016, 1008, 1035, 967, 1035, 1030, 1015, 1072, 1024, 1040, 979, 994], [1057, 1033, 998, 1035, 985, 1041, 986, 983, 1022, 980, 971, 995, 1023, 963, 982, 1011, 989, 939, 978, 998, 980, 983, 917, 1024, 1014, 965, 956, 1000, 999, 1018, 987, 992, 987, 971, 968, 975, 1022, 964, 1023, 1001, 985, 993, 1034, 1034, 1008, 1003, 1019, 1009, 937, 1061, 1000, 979, 983, 1017, 958, 963, 951, 1007, 997, 979, 977, 967, 1006, 1019], [957, 966, 998, 1010, 1062, 982, 975, 1011, 1005, 981, 924, 1019, 974, 1022, 1007, 976, 943, 983, 1008, 991, 996, 1015, 1082, 944, 974, 971, 980, 991, 1030, 1015, 990, 1025, 999, 1006, 980, 994, 1012, 1054, 955, 1007, 1039, 1004, 1022, 1015, 1002, 1005, 985, 1004, 1005, 967, 1008, 991, 973, 980, 986, 994, 1006, 1006, 942, 1037, 1012, 977, 1036, 975], [1037, 1024, 1030, 1012, 1011, 1026, 1020, 1017, 1009, 1033, 1013, 1011, 985, 1006, 1006, 1000, 997, 1060, 990, 991, 1065, 1033, 1008, 1044, 1052, 988, 949, 1024, 1006, 1031, 1009, 1030, 990, 973, 993, 984, 964, 1030, 989, 1028, 1006, 955, 1035, 997, 1012, 1020, 1028, 1002, 1023, 1016, 1020, 1000, 1061, 1014, 1022, 999, 986, 1030, 910, 1021, 983, 1020, 1004, 1040], [983, 1058, 1014, 1012, 981, 1017, 1063, 1016, 1007, 978, 978, 1013, 1006, 996, 987, 1000, 981, 1017, 1019, 1000, 1018, 998, 1027, 990, 1002, 1028, 989, 984, 994, 1021, 1018, 994, 972, 1019, 1031, 973, 1012, 1066, 1000, 1022, 1024, 1061, 927, 1004, 997, 1023, 1012, 1006, 986, 1050, 985, 1040, 999, 1015, 1032, 978, 1011, 994, 965, 985, 994, 1010, 1048, 962], [992, 990, 1011, 996, 991, 999, 1006, 989, 995, 1011, 1035, 988, 966, 1045, 1005, 977, 1018, 950, 1039, 1041, 1035, 995, 1030, 997, 989, 1005, 968, 1001, 1012, 1023, 1004, 937, 1021, 944, 1003, 1044, 989, 1022, 1029, 1035, 954, 988, 992, 1023, 936, 927, 961, 1085, 999, 999, 990, 1053, 985, 1036, 972, 980, 1041, 974, 1032, 956, 1028, 1029, 998, 1002], [973, 995, 985, 1012, 1023, 983, 1015, 992, 1040, 969, 968, 1010, 1009, 1055, 1009, 969, 1000, 1031, 1028, 981, 990, 925, 1034, 1024, 998, 996, 1005, 1039, 1040, 1012, 1029, 994, 940, 1062, 1001, 1011, 994, 994, 1017, 984, 1040, 974, 1007, 972, 1029, 993, 986, 1008, 990, 972, 1018, 1052, 924, 970, 993, 1004, 986, 996, 1071, 1022, 985, 1006, 1006, 1024], [1014, 920, 960, 979, 1064, 997, 1017, 979, 1005, 990, 1018, 974, 1019, 1024, 1080, 1016, 1006, 928, 1026, 987, 976, 1059, 994, 1004, 1046, 1026, 972, 1042, 1040, 1041, 990, 997, 1039, 1001, 1024, 1010, 993, 1019, 977, 1015, 981, 1073, 982, 991, 1026, 997, 995, 1031, 988, 954, 1022, 972, 935, 995, 1013, 988, 958, 991, 1010, 996, 1039, 1010, 1004, 975], [1015, 1000, 954, 958, 970, 1000, 1020, 1033, 992, 959, 1081, 957, 946, 972, 983, 986, 1062, 1035, 1044, 1015, 977, 1022, 961, 1022, 982, 1045, 978, 958, 1028, 1036, 1021, 977, 1039, 991, 940, 1011, 949, 995, 973, 916, 1022, 923, 1038, 1023, 976, 990, 996, 1027, 980, 986, 1007, 946, 1075, 1008, 986, 1009, 1010, 989, 979, 1013, 979, 1025, 974, 988], [1019, 1012, 1005, 955, 1006, 1025, 1005, 1036, 1025, 1040, 996, 1039, 945, 1009, 1044, 1028, 977, 976, 998, 977, 1036, 995, 992, 987, 972, 1016, 1068, 1038, 985, 988, 1011, 988, 981, 1000, 965, 1054, 1007, 959, 974, 964, 892, 1000, 997, 999, 1012, 1107, 955, 978, 989, 985, 1016, 987, 1053, 982, 971, 972, 1028, 1004, 1006, 1003, 1010, 991, 1014, 1027], [1004, 979, 1036, 1015, 1066, 1029, 1023, 916, 1056, 993, 1040, 996, 1005, 985, 1004, 1008, 1025, 1028, 1050, 971, 1028, 1004, 970, 967, 1005, 980, 979, 967, 979, 980, 972, 969, 928, 1053, 1028, 1002, 956, 989, 985, 1004, 1024, 1017, 977, 1002, 1022, 1014, 953, 979, 992, 988, 982, 995, 976, 964, 1032, 1071, 1035, 1015, 948, 1017, 1009, 998, 1010, 1012], [1046, 957, 985, 919, 955, 1052, 1014, 999, 986, 1033, 1013, 937, 958, 1018, 972, 994, 985, 998, 978, 1005, 975, 1022, 1011, 973, 967, 988, 1039, 998, 993, 1035, 973, 948, 964, 990, 1046, 954, 941, 1028, 971, 995, 993, 998, 1000, 1028, 1027, 963, 956, 965, 991, 999, 1038, 974, 989, 929, 994, 994, 983, 1002, 952, 924, 1030, 987, 962, 968], [991, 1051, 1064, 976, 1035, 1065, 1017, 971, 995, 1032, 965, 1044, 1025, 989, 998, 987, 1018, 1001, 950, 1019, 1020, 991, 1027, 984, 957, 1024, 1005, 968, 1054, 977, 947, 1058, 1014, 1014, 997, 997, 955, 1084, 1028, 949, 970, 1024, 984, 1001, 979, 1024, 980, 997, 960, 1053, 998, 988, 1007, 978, 976, 1011, 1007, 990, 999, 944, 984, 1000, 1005, 1016], [1034, 1022, 1031, 1020, 1062, 996, 1010, 966, 1018, 1040, 1019, 1060, 978, 1039, 1018, 990, 965, 984, 1038, 1023, 1058, 974, 1012, 1000, 980, 978, 994, 966, 1014, 1029, 1003, 991, 993, 986, 945, 1027, 1018, 1008, 1050, 987, 990, 994, 995, 1046, 970, 983, 973, 978, 1032, 1014, 991, 1004, 977, 990, 1016, 998, 1003, 961, 1032, 968, 1037, 1022, 964, 1006], [945, 988, 961, 1002, 1026, 1006, 988, 1031, 998, 1032, 960, 1020, 985, 997, 1029, 965, 1040, 990, 969, 1006, 1040, 978, 990, 1005, 996, 1010, 998, 1021, 989, 1015, 979, 980, 966, 916, 974, 1003, 967, 977, 996, 1006, 974, 1048, 990, 991, 1014, 1021, 1018, 940, 1026, 969, 1017, 1016, 1002, 972, 943, 979, 952, 1012, 1068, 985, 980, 926, 988, 1010], [964, 1007, 980, 1023, 1055, 991, 1034, 990, 957, 1016, 1054, 1002, 976, 955, 1013, 993, 1040, 961, 995, 1022, 1027, 1004, 988, 1034, 1048, 963, 948, 975, 1004, 986, 1061, 1019, 1062, 983, 1007, 1018, 1003, 1001, 1007, 1019, 968, 1044, 1024, 1028, 1002, 966, 1003, 995, 972, 1007, 977, 994, 998, 963, 1018, 1020, 996, 939, 1010, 1021, 1012, 1014, 962, 1040], [1059, 985, 1003, 1055, 874, 1048, 879, 1005, 1007, 952, 989, 1030, 969, 1036, 1014, 1000, 985, 1006, 1020, 972, 1047, 1031, 1002, 1003, 1022, 961, 1035, 1030, 1002, 1014, 1020, 979, 1009, 1066, 1028, 955, 1003, 1036, 977, 1041, 985, 1007, 1007, 954, 1037, 996, 989, 1033, 986, 969, 1007, 940, 1082, 983, 1065, 1012, 1020, 1040, 1011, 988, 973, 989, 1002, 973], [972, 990, 992, 998, 1002, 999, 1086, 981, 979, 1029, 1016, 939, 1020, 1013, 1008, 985, 1020, 1016, 999, 991, 933, 1013, 990, 968, 1026, 979, 1069, 1018, 1010, 1071, 1008, 1005, 998, 1024, 1061, 957, 994, 1012, 985, 1013, 989, 1000, 947, 1022, 1015, 970, 1026, 975, 953, 1000, 1003, 972, 979, 1030, 1005, 1074, 972, 1010, 1011, 927, 958, 936, 1036, 998], [1004, 986, 958, 1055, 1011, 1005, 1001, 978, 1043, 956, 1030, 987, 1059, 1023, 1036, 984, 1043, 1021, 955, 1036, 989, 1023, 971, 1009, 963, 1000, 1022, 944, 982, 1007, 1023, 1034, 945, 963, 1007, 1009, 991, 984, 1018, 1016, 1025, 1017, 1026, 986, 1029, 989, 980, 948, 989, 991, 953, 1021, 955, 1030, 1044, 1007, 993, 1002, 1005, 981, 1010, 1027, 981, 977], [1020, 955, 1019, 977, 996, 1019, 980, 995, 1050, 993, 1003, 1034, 1045, 961, 1040, 1007, 975, 999, 963, 995, 934, 998, 1008, 965, 1047, 973, 963, 1025, 990, 1007, 1033, 991, 989, 1022, 961, 972, 998, 1017, 1015, 913, 1034, 1006, 967, 1015, 1011, 986, 988, 983, 972, 990, 971, 976, 1001, 1043, 974, 969, 1055, 999, 1040, 973, 1023, 1073, 1004, 1009], [950, 1021, 936, 1039, 950, 1025, 1000, 988, 1030, 972, 1024, 1043, 1010, 997, 986, 945, 1020, 993, 992, 965, 933, 1023, 999, 1008, 939, 1036, 1007, 994, 1007, 974, 1018, 1015, 976, 999, 1039, 978, 985, 1079, 1054, 1006, 1004, 995, 1028, 974, 1005, 1011, 1003, 1037, 1019, 947, 1004, 1050, 984, 1089, 997, 1008, 992, 1061, 983, 1031, 1029, 1035, 971, 1056], [973, 999, 946, 942, 948, 1036, 1071, 1033, 965, 1023, 977, 1056, 989, 970, 965, 1024, 1015, 1031, 982, 1023, 987, 986, 979, 966, 1011, 980, 1013, 1035, 1072, 967, 975, 1023, 1024, 1006, 954, 1003, 998, 1064, 1023, 988, 1019, 992, 1019, 984, 1060, 1001, 1034, 985, 984, 1003, 1034, 1026, 1009, 930, 994, 986, 988, 974, 972, 961, 1098, 945, 1007, 970], [994, 979, 1010, 949, 997, 952, 999, 966, 1053, 1006, 1042, 1023, 998, 999, 1011, 1041, 1008, 1056, 979, 1003, 959, 1011, 1033, 1021, 1021, 936, 1019, 983, 989, 985, 992, 954, 1029, 973, 1014, 977, 1009, 991, 986, 1002, 1001, 1051, 986, 1028, 1015, 994, 1017, 1032, 1027, 986, 1027, 997, 1014, 936, 956, 1026, 1004, 1022, 966, 1007, 1029, 987, 914, 991], [1029, 949, 999, 930, 1034, 951, 992, 1034, 1004, 976, 996, 1014, 980, 948, 1030, 987, 1025, 1045, 1017, 1010, 983, 1006, 1008, 1004, 1013, 1027, 1003, 975, 991, 976, 1016, 1036, 995, 941, 938, 981, 1029, 992, 1009, 988, 988, 1005, 1028, 985, 985, 1077, 994, 975, 927, 995, 1035, 989, 989, 943, 1010, 1010, 1005, 1000, 1053, 974, 1044, 1006, 1020, 1008], [1048, 994, 972, 974, 992, 947, 944, 1030, 1020, 966, 1026, 1017, 958, 982, 1016, 943, 1005, 1060, 1011, 1040, 954, 1004, 989, 973, 970, 1078, 996, 1038, 1000, 1037, 1009, 1001, 992, 1060, 998, 973, 1010, 994, 1039, 984, 1017, 1004, 976, 1028, 976, 996, 1051, 1003, 1025, 977, 1111, 967, 1035, 1041, 1013, 965, 1010, 969, 945, 1002, 982, 958, 933, 1026], [989, 1044, 983, 1017, 1019, 988, 992, 1003, 1045, 983, 1019, 982, 1023, 962, 1021, 1030, 978, 1003, 987, 986, 1001, 1002, 1002, 969, 1026, 1016, 971, 997, 1056, 989, 915, 980, 992, 953, 1031, 994, 997, 1080, 1047, 966, 1011, 1036, 997, 979, 978, 1037, 999, 1085, 1005, 961, 1023, 1010, 994, 1038, 950, 979, 1033, 1006, 1012, 990, 999, 1022, 1006, 946], [957, 1053, 1017, 972, 997, 1004, 989, 966, 988, 1043, 975, 1018, 939, 1017, 980, 936, 987, 1003, 979, 1009, 1041, 1051, 994, 964, 969, 1044, 990, 980, 1028, 981, 1001, 980, 1049, 966, 1008, 993, 1015, 1046, 891, 974, 1033, 993, 998, 975, 945, 965, 989, 1004, 988, 1014, 976, 943, 1056, 1048, 980, 1017, 978, 1054, 1024, 1073, 979, 1052, 1047, 1020], [991, 1067, 963, 967, 1023, 937, 1025, 1025, 986, 983, 1039, 955, 1021, 1006, 1065, 1009, 1050, 1038, 1006, 986, 946, 1074, 985, 1029, 1016, 1025, 1032, 988, 1023, 1010, 1046, 1015, 1026, 974, 1066, 1059, 1040, 1001, 974, 981, 1065, 1026, 954, 1013, 1001, 948, 981, 1051, 969, 986, 958, 990, 991, 1031, 931, 1030, 971, 1041, 1020, 940, 1012, 950, 1022, 961], [1010, 981, 990, 1014, 1068, 1095, 1002, 984, 1073, 989, 1030, 1014, 977, 1037, 1032, 1008, 999, 1025, 1007, 1022, 984, 1046, 1033, 999, 1010, 1022, 1044, 989, 1008, 985, 978, 1020, 1030, 1026, 1013, 1021, 999, 977, 1010, 947, 1038, 968, 1023, 1022, 1038, 991, 953, 1032, 1033, 996, 1038, 1019, 955, 1047, 1016, 968, 973, 995, 1008, 1019, 1023, 954, 993, 974], [975, 1001, 1010, 1002, 999, 981, 1023, 989, 951, 929, 1029, 1008, 946, 991, 1020, 1011, 1012, 1007, 1033, 1014, 960, 1043, 1002, 999, 1026, 1014, 1045, 958, 987, 1053, 992, 1000, 1041, 982, 1040, 970, 986, 1055, 1041, 971, 1005, 953, 982, 1019, 995, 1023, 961, 988, 995, 968, 1058, 1043, 974, 981, 1009, 1041, 1047, 977, 1021, 1013, 968, 917, 1000, 978], [987, 978, 998, 988, 1059, 1032, 982, 1007, 998, 969, 993, 975, 973, 1022, 981, 976, 968, 942, 915, 978, 1045, 979, 969, 978, 981, 979, 1034, 997, 974, 1033, 1020, 995, 1036, 978, 990, 931, 1009, 1042, 947, 1018, 1015, 1042, 965, 960, 1004, 1006, 992, 947, 998, 981, 1042, 1002, 1002, 1003, 967, 1034, 974, 1047, 1031, 1033, 977, 1028, 1044, 973], [1037, 1049, 947, 990, 1000, 996, 985, 1024, 990, 1004, 966, 1014, 993, 1021, 1006, 959, 1039, 1058, 979, 990, 987, 968, 1014, 979, 1044, 928, 948, 1038, 1004, 1035, 988, 1053, 1039, 1011, 986, 1060, 982, 968, 993, 1019, 980, 973, 1006, 971, 1023, 984, 1045, 1042, 1019, 962, 965, 1047, 1006, 998, 1046, 987, 975, 995, 968, 987, 1016, 992, 981, 952], [1048, 963, 1003, 1012, 965, 1025, 1000, 1037, 1011, 963, 1006, 981, 997, 1036, 932, 991, 1039, 1062, 937, 1064, 1039, 1000, 1016, 1029, 1010, 1018, 978, 1004, 1023, 1089, 940, 992, 990, 992, 937, 1038, 1058, 993, 931, 959, 983, 1003, 984, 1038, 1019, 981, 962, 978, 989, 971, 1033, 957, 1011, 962, 964, 1052, 964, 1019, 1029, 975, 993, 963, 984, 936], [968, 1020, 980, 936, 1009, 1011, 1020, 995, 983, 985, 1004, 966, 947, 1039, 996, 950, 1058, 996, 1009, 977, 1025, 1003, 1040, 1028, 969, 1014, 1053, 968, 1001, 1023, 1046, 1036, 977, 989, 1044, 1107, 1008, 981, 1031, 989, 985, 966, 985, 967, 1041, 1042, 974, 992, 1003, 1066, 1053, 975, 986, 947, 1053, 998, 988, 1072, 1000, 970, 965, 1001, 1046, 971], [957, 977, 977, 1024, 1042, 978, 1001, 1022, 992, 969, 1025, 970, 967, 1037, 1033, 1025, 961, 1058, 985, 1022, 959, 1029, 1003, 963, 965, 1010, 1050, 985, 951, 1016, 949, 1056, 977, 1011, 986, 994, 995, 1005, 1007, 961, 964, 1050, 1015, 1016, 988, 961, 1038, 1035, 1006, 1060, 984, 987, 1006, 1018, 991, 1013, 1018, 977, 1003, 960, 1019, 971, 928, 1039], [936, 995, 1014, 984, 1020, 948, 981, 1051, 1012, 971, 970, 1016, 996, 1092, 971, 1088, 985, 1001, 964, 1014, 937, 998, 1040, 1011, 973, 1028, 982, 1020, 952, 1004, 974, 1016, 1006, 981, 997, 1016, 956, 1023, 1013, 967, 1031, 991, 963, 960, 967, 996, 1003, 1034, 1015, 1021, 978, 982, 1047, 987, 1004, 1013, 996, 995, 1011, 1045, 997, 994, 956, 964], [961, 945, 1006, 1036, 1036, 1016, 993, 1050, 1001, 996, 1014, 987, 999, 950, 982, 994, 1050, 1029, 1041, 990, 940, 1015, 1026, 1020, 1024, 1006, 988, 985, 1061, 1004, 1023, 1032, 1020, 964, 1003, 1043, 1002, 1034, 1019, 1024, 999, 983, 1029, 985, 1055, 997, 1095, 1042, 999, 1021, 995, 993, 961, 973, 1006, 925, 1008, 985, 1040, 1036, 1017, 1015, 1004, 1044], [1018, 1064, 991, 986, 970, 1019, 1004, 974, 1038, 986, 1053, 1000, 937, 1017, 1054, 1021, 1016, 970, 988, 1002, 981, 1060, 976, 1015, 1020, 1024, 948, 954, 1005, 1018, 1036, 996, 957, 964, 1003, 1023, 1046, 1006, 985, 968, 1024, 1011, 1027, 1064, 967, 991, 976, 999, 1034, 999, 1057, 971, 977, 975, 963, 976, 999, 953, 1068, 1029, 961, 970, 1014, 977], [1013, 953, 1000, 1003, 971, 987, 1023, 964, 994, 1031, 972, 1009, 926, 996, 970, 969, 963, 1026, 989, 927, 1023, 967, 990, 993, 995, 978, 960, 971, 964, 1017, 981, 958, 959, 978, 1018, 958, 936, 997, 1030, 1034, 980, 1013, 1018, 982, 941, 978, 1064, 1029, 1001, 977, 983, 1014, 959, 977, 983, 970, 999, 959, 1064, 987, 1000, 1026, 1016, 1012], [952, 1041, 1018, 1030, 1029, 1005, 1005, 1012, 1003, 952, 998, 985, 995, 1022, 976, 994, 984, 1076, 1016, 949, 990, 1012, 988, 1017, 1013, 1036, 1035, 977, 1013, 960, 1021, 1019, 1039, 1019, 958, 964, 955, 973, 1014, 1036, 1004, 935, 1002, 1005, 1048, 922, 1029, 1021, 999, 1013, 982, 1015, 984, 983, 964, 1016, 970, 1031, 1007, 957, 997, 1045, 999, 1006], [1012, 1045, 1031, 993, 987, 996, 962, 1006, 1001, 1028, 960, 976, 1046, 996, 1004, 985, 981, 1050, 1034, 985, 985, 1069, 979, 1029, 1012, 949, 994, 1028, 976, 973, 1120, 949, 994, 1037, 1061, 993, 992, 985, 979, 976, 1007, 1039, 949, 1002, 967, 998, 988, 1013, 966, 1011, 1027, 1010, 968, 1007, 989, 1010, 1000, 1048, 987, 973, 1058, 1039, 952, 1013], [1007, 951, 995, 1011, 1050, 989, 1014, 967, 965, 988, 998, 1032, 960, 977, 1029, 965, 953, 945, 973, 1051, 1002, 922, 1016, 1002, 984, 1038, 1010, 971, 1020, 1007, 1021, 990, 1013, 976, 977, 1016, 992, 1020, 983, 1008, 962, 1045, 982, 1011, 1013, 1019, 933, 992, 994, 999, 1055, 949, 993, 1018, 1005, 992, 1023, 1011, 974, 1008, 1009, 1001, 984, 1067], [995, 1049, 1008, 1012, 1065, 1051, 988, 975, 1001, 1007, 1041, 971, 1029, 983, 1015, 939, 1017, 1018, 1010, 1053, 981, 1012, 1014, 973, 1018, 987, 1026, 990, 993, 1009, 984, 980, 1011, 1021, 973, 988, 998, 967, 969, 926, 994, 1006, 988, 1041, 939, 1016, 1012, 999, 1008, 945, 1022, 993, 922, 1047, 1029, 990, 1037, 979, 973, 1021, 997, 965, 1018, 974], [984, 1059, 968, 972, 1027, 987, 1061, 1046, 968, 1080, 992, 982, 993, 994, 969, 1013, 996, 1018, 1029, 963, 978, 969, 951, 964, 978, 1032, 1006, 1059, 1024, 992, 969, 953, 1019, 999, 1007, 1035, 999, 989, 1004, 926, 1027, 1055, 1000, 1064, 990, 1041, 1024, 994, 985, 976, 1035, 1005, 1049, 1011, 999, 968, 961, 966, 1024, 1016, 1010, 979, 966, 979], [1008, 987, 1045, 996, 1057, 985, 993, 997, 975, 991, 938, 973, 981, 1044, 990, 977, 991, 1015, 1001, 1027, 989, 1019, 981, 978, 949, 985, 983, 985, 1012, 975, 1045, 972, 987, 999, 1020, 1012, 949, 989, 922, 998, 1000, 1029, 1006, 1010, 990, 1036, 1067, 1037, 1015, 1009, 1026, 958, 1033, 1029, 953, 981, 969, 989, 968, 1002, 1013, 959, 1030, 1019], [1015, 1044, 1018, 1046, 1020, 1065, 971, 953, 1070, 988, 1001, 1014, 956, 994, 954, 949, 1025, 990, 1023, 1042, 967, 978, 995, 1007, 983, 1006, 984, 1012, 1003, 1006, 962, 987, 989, 978, 1023, 1032, 1015, 1021, 997, 988, 962, 1021, 989, 970, 974, 1025, 982, 1056, 987, 982, 1048, 1010, 995, 986, 999, 1011, 1028, 1013, 973, 1021, 1031, 959, 1035, 1003], [973, 994, 990, 1016, 977, 1036, 996, 1088, 1002, 989, 998, 958, 957, 951, 996, 964, 1037, 1049, 1041, 1019, 1001, 1006, 1012, 1020, 1023, 987, 1051, 1017, 1029, 1017, 958, 1032, 985, 1044, 994, 1052, 1102, 1026, 990, 1040, 977, 1000, 991, 1026, 977, 1046, 996, 1001, 1037, 983, 1056, 951, 1001, 1000, 1035, 1013, 1002, 990, 945, 988, 1030, 963, 1053, 1030], [947, 1035, 991, 968, 992, 1003, 991, 995, 1008, 1038, 1052, 966, 954, 969, 1054, 1012, 998, 956, 1089, 980, 1014, 970, 969, 1036, 980, 991, 1009, 1066, 1015, 1015, 1071, 942, 971, 965, 1009, 1002, 999, 1008, 1034, 983, 1028, 989, 1037, 965, 989, 988, 1040, 1053, 995, 1001, 998, 1020, 1033, 983, 942, 1017, 992, 976, 945, 1014, 998, 939, 1031, 970], [967, 999, 1031, 1011, 1032, 1009, 973, 1017, 956, 1009, 949, 975, 949, 1043, 1006, 954, 1008, 944, 980, 1009, 974, 1015, 931, 1041, 1016, 978, 1007, 1050, 1020, 980, 976, 1003, 992, 1072, 987, 1020, 992, 1008, 1031, 1046, 996, 924, 1057, 1042, 1020, 953, 988, 999, 985, 1013, 973, 1029, 982, 944, 993, 958, 980, 988, 988, 1007, 1039, 1028, 993, 969], [1035, 1046, 987, 994, 1060, 1009, 954, 1032, 1026, 988, 999, 996, 1010, 977, 1061, 1026, 990, 1005, 972, 982, 1048, 995, 1006, 1004, 984, 1013, 1030, 1024, 1032, 1053, 1016, 1020, 1019, 981, 1040, 974, 1018, 970, 1021, 975, 992, 991, 1026, 988, 962, 996, 970, 969, 1086, 1066, 1050, 971, 1059, 1009, 998, 1018, 965, 1034, 1020, 1002, 1015, 1015, 995, 1014], [1036, 987, 964, 1024, 1030, 967, 1019, 1061, 1001, 1060, 934, 972, 1048, 1064, 1010, 996, 949, 984, 990, 955, 1028, 1029, 1017, 997, 1004, 1020, 989, 1005, 986, 1025, 986, 939, 995, 1000, 1035, 1030, 976, 928, 990, 902, 976, 923, 937, 931, 991, 966, 1040, 1002, 1021, 989, 985, 1010, 1021, 1004, 1024, 973, 935, 951, 1017, 1012, 983, 953, 1004, 996], [1004, 1009, 985, 974, 1007, 1009, 988, 961, 1060, 999, 1068, 962, 1006, 958, 953, 979, 967, 979, 978, 1002, 1048, 1003, 1048, 926, 1023, 977, 995, 1000, 1030, 1022, 1011, 988, 1020, 970, 1035, 1016, 973, 997, 1074, 973, 1042, 988, 1017, 966, 1025, 982, 1018, 1021, 994, 942, 1014, 982, 1012, 1021, 1012, 950, 1011, 947, 1008, 1029, 990, 943, 988, 992], [1021, 1005, 1031, 1004, 994, 1013, 980, 973, 981, 1031, 986, 1009, 988, 986, 974, 974, 1041, 1015, 1008, 986, 1023, 987, 986, 966, 948, 1013, 979, 1013, 1024, 1002, 983, 942, 1018, 1014, 978, 920, 993, 933, 1013, 978, 1005, 1003, 980, 913, 997, 1009, 989, 1027, 940, 1015, 1009, 1009, 971, 973, 1023, 957, 1001, 1012, 1061, 1014, 1053, 1034, 1013, 1007], [998, 1013, 973, 997, 1008, 1005, 1032, 960, 1032, 951, 982, 993, 975, 998, 971, 1022, 1006, 1010, 991, 1007, 1008, 956, 980, 1037, 995, 1021, 964, 975, 1037, 1019, 1033, 1016, 1007, 986, 1066, 1013, 1019, 1030, 997, 965, 972, 949, 1007, 983, 941, 996, 957, 1042, 1032, 994, 979, 1008, 978, 1003, 1066, 1011, 975, 975, 994, 983, 1020, 1012, 1005, 1001], [1002, 939, 984, 1022, 1007, 1033, 1024, 995, 977, 1012, 1007, 959, 976, 991, 949, 977, 1023, 976, 951, 1001, 1043, 1005, 1011, 995, 970, 955, 999, 1016, 992, 1044, 950, 954, 1016, 1017, 1030, 965, 1053, 976, 991, 968, 975, 960, 954, 995, 997, 943, 1042, 1021, 1023, 966, 1033, 971, 1018, 1011, 1017, 1024, 1029, 975, 995, 998, 978, 1045, 996, 1035], [1008, 1001, 954, 981, 983, 1016, 951, 1047, 980, 1010, 970, 1020, 951, 1020, 976, 1010, 1008, 964, 982, 1061, 985, 1020, 1053, 977, 1045, 1028, 981, 962, 1009, 1027, 1010, 999, 973, 1001, 982, 984, 991, 1009, 987, 1040, 965, 1045, 987, 965, 1024, 1037, 1010, 1037, 1016, 954, 994, 964, 976, 1015, 985, 1037, 954, 1017, 988, 982, 1008, 993, 968, 962], [974, 996, 1009, 998, 1008, 982, 1012, 1010, 984, 1031, 1034, 1021, 978, 1011, 1007, 948, 1010, 922, 999, 1023, 1039, 1033, 946, 1024, 1019, 994, 1019, 1016, 982, 933, 982, 985, 983, 1061, 996, 985, 973, 1040, 1069, 1031, 1002, 1024, 964, 1000, 1039, 981, 1002, 1021, 1014, 1031, 959, 1019, 971, 960, 971, 1016, 1018, 944, 1048, 959, 1032, 1018, 978, 935], [978, 962, 1012, 986, 1088, 1009, 971, 1004, 996, 987, 995, 1014, 1040, 985, 1024, 1006, 993, 941, 1024, 1029, 995, 954, 1008, 1065, 1016, 974, 1039, 957, 908, 996, 954, 957, 969, 980, 1033, 997, 1098, 1018, 1021, 1029, 1006, 1015, 985, 990, 959, 1021, 1066, 1009, 972, 984, 1017, 1027, 980, 997, 1038, 1013, 987, 1061, 995, 963, 992, 1003, 1010, 999], [1047, 1013, 970, 1038, 996, 939, 1016, 1042, 946, 977, 1058, 1029, 1005, 1037, 990, 1034, 971, 989, 1028, 976, 949, 990, 989, 977, 962, 960, 1033, 1000, 969, 941, 973, 1026, 1066, 994, 965, 1009, 1023, 1034, 1038, 965, 976, 1013, 976, 1035, 1008, 974, 1007, 949, 1024, 1016, 999, 953, 979, 967, 979, 983, 976, 1002, 955, 956, 1022, 978, 951, 1052], [978, 1032, 965, 1002, 982, 980, 978, 1025, 1003, 991, 1009, 1019, 988, 955, 989, 1034, 993, 999, 975, 989, 1021, 1006, 986, 1012, 1016, 975, 1028, 982, 1002, 1038, 1002, 1023, 974, 1028, 988, 970, 948, 1015, 1026, 1029, 1043, 1028, 1112, 996, 1082, 981, 1034, 996, 1041, 1019, 1003, 953, 1005, 941, 1090, 993, 1065, 997, 1030, 1024, 1041, 1012, 954, 1022], [1027, 973, 964, 946, 1002, 1009, 1022, 1000, 1011, 979, 973, 1017, 958, 1005, 989, 995, 1012, 1018, 987, 974, 986, 998, 958, 1014, 1006, 1035, 1013, 1028, 1019, 974, 1029, 996, 1030, 997, 1017, 995, 1006, 1047, 960, 902, 1038, 942, 1022, 941, 994, 990, 1029, 988, 978, 984, 1005, 994, 1057, 995, 1007, 940, 980, 950, 984, 938, 992, 1027, 977, 1039], [997, 974, 971, 989, 1002, 993, 986, 949, 997, 982, 959, 1024, 993, 965, 1037, 988, 974, 1044, 1004, 932, 995, 1045, 1040, 1050, 984, 1040, 992, 1011, 1003, 1003, 986, 1010, 1015, 962, 1030, 966, 997, 1004, 994, 977, 993, 1007, 959, 1026, 1020, 990, 1042, 972, 1005, 1014, 1033, 998, 974, 980, 976, 936, 1007, 1006, 1011, 982, 986, 1010, 1004, 1000], [963, 995, 1004, 1037, 945, 1068, 1001, 1017, 1004, 955, 986, 1026, 1012, 1001, 1006, 969, 1012, 998, 1000, 960, 1016, 1010, 1020, 1017, 923, 1030, 1012, 1040, 993, 1048, 968, 941, 983, 990, 988, 970, 981, 984, 1040, 1034, 990, 982, 978, 959, 1005, 1015, 1015, 1034, 997, 1041, 1002, 956, 980, 1002, 959, 995, 1016, 1024, 982, 1041, 996, 928, 1052, 1015]] +[[1012, 972, 992, 1003, 998, 1038, 991, 1044, 912, 1024, 980, 956, 999, 984, 997, 1041, 1141, 993, 945, 1017, 952, 1023, 1027, 971, 989, 958, 979, 999, 989, 1029, 1059, 1028, 989, 1013, 982, 984, 1006, 987, 1081, 1026, 992, 999, 1074, 1004, 981, 1041, 997, 969, 986, 1014, 989, 996, 1020, 1007, 1033, 1023, 977, 1016, 991, 1027, 987, 1057, 1005, 970, 961, 1022, 1007, 1030, 1009, 1002, 1026, 992, 993, 960, 1015, 1027, 1049, 1055, 1020, 987, 987, 990, 1003, 1046, 983, 1001, 952, 972, 934, 997, 1022, 983, 1000, 979, 976, 965, 991, 954, 1018, 1043, 984, 1005, 982, 974, 1005, 977, 1033, 1056, 987, 1011, 1016, 977, 1018, 998, 1034, 1043, 1013, 998, 993, 1020, 973, 991, 1010, 1008, 975, 1053, 1044, 986, 1028, 976, 1011, 958, 934, 1032, 991, 967, 996, 980, 989, 1011, 986, 1078, 962, 1034, 992, 989, 955, 979, 968, 982, 984, 995, 1027, 945, 980, 1031, 1055, 949, 1039, 977, 989, 1001, 1023, 979, 990, 986, 966, 1023, 934, 1001, 979, 969, 1033, 1039, 1015, 971, 1051, 1011, 1014, 982, 994, 954, 1041, 972, 1024, 1029, 1032, 995, 969, 1013, 983, 993, 966, 1015, 965, 1033, 939, 1018, 993, 1003, 967, 970, 1047, 1056, 1008, 1007, 939, 967, 1012, 982, 1060, 1051, 1027, 988, 1012, 979, 977, 972, 1012, 1001, 975, 985, 1024, 1000, 1064, 1029, 978, 983, 982, 994, 1033, 1040, 955, 1027, 986, 997, 957, 1043, 983, 1036, 972, 1012, 975, 1031, 935, 1018, 983, 976, 1027, 1060, 963, 1072, 993, 946, 988, 957], [996, 920, 1039, 1040, 984, 1070, 1015, 968, 1058, 980, 947, 1006, 977, 978, 1018, 1026, 948, 980, 1035, 970, 1020, 920, 964, 1027, 1036, 1031, 995, 1071, 1035, 1060, 945, 1016, 1015, 1020, 1032, 955, 1003, 1020, 997, 998, 1031, 983, 964, 1016, 1021, 1011, 962, 968, 959, 1014, 1003, 1019, 1019, 1044, 987, 976, 987, 1008, 1001, 1020, 1009, 957, 992, 986, 1025, 987, 951, 977, 1000, 963, 990, 937, 987, 958, 990, 981, 988, 950, 1035, 979, 1013, 999, 1013, 1039, 993, 1065, 1031, 982, 974, 987, 945, 983, 969, 979, 1005, 1016, 1016, 994, 982, 1016, 979, 978, 995, 987, 1005, 1034, 1060, 955, 1006, 1065, 983, 928, 997, 997, 1036, 1031, 1004, 1053, 1024, 959, 1061, 1050, 952, 1014, 1025, 1008, 1019, 994, 994, 1045, 988, 1013, 930, 1030, 987, 1076, 991, 985, 976, 973, 996, 1046, 947, 971, 1019, 1030, 1055, 1046, 1010, 1044, 1017, 954, 1023, 1095, 904, 997, 971, 1017, 1096, 997, 978, 995, 1022, 1091, 1034, 983, 998, 1032, 1012, 1012, 965, 976, 962, 970, 1026, 986, 937, 1032, 1017, 997, 1018, 976, 980, 963, 974, 945, 1045, 953, 964, 1015, 1043, 928, 1017, 890, 1028, 1012, 935, 980, 978, 1010, 968, 958, 944, 1000, 1049, 1009, 996, 1021, 1036, 1051, 1003, 1016, 1036, 1003, 991, 982, 1002, 1026, 1005, 997, 1028, 992, 990, 999, 1062, 934, 1050, 1037, 1013, 965, 1039, 1002, 995, 1053, 959, 969, 1015, 1005, 973, 956, 945, 1036, 1024, 1009, 1016, 1024, 1022, 996, 1009, 989, 983, 979, 989, 1064, 987, 1080], [949, 1008, 1007, 1009, 994, 978, 1021, 985, 1005, 1048, 1047, 1015, 1001, 1001, 943, 971, 949, 1024, 1035, 992, 1017, 987, 1002, 1020, 931, 998, 985, 1021, 1014, 1057, 976, 1006, 994, 970, 938, 990, 1026, 1035, 1037, 994, 926, 1023, 1012, 1004, 977, 998, 1018, 957, 1021, 963, 944, 970, 970, 1030, 975, 1015, 984, 951, 954, 1020, 996, 1043, 970, 1010, 1065, 1023, 1006, 1041, 978, 1038, 1033, 1035, 967, 1000, 999, 1017, 982, 1028, 976, 947, 983, 1008, 957, 1021, 1051, 983, 973, 992, 987, 995, 976, 1011, 1001, 1029, 980, 993, 985, 995, 1001, 948, 1009, 982, 952, 1074, 989, 1046, 930, 987, 1005, 974, 1003, 1006, 918, 950, 1042, 1006, 968, 1031, 980, 1004, 1014, 974, 1004, 1029, 954, 1039, 1004, 911, 958, 965, 1031, 968, 1007, 968, 974, 981, 987, 1012, 1012, 995, 1043, 1048, 1020, 1004, 1032, 985, 1029, 969, 1000, 1038, 1003, 1059, 1019, 987, 991, 1029, 997, 985, 1010, 1001, 1044, 1002, 967, 1002, 978, 1012, 955, 997, 1025, 964, 961, 997, 936, 992, 983, 1020, 998, 996, 993, 988, 1024, 962, 1017, 989, 1077, 1015, 1011, 975, 992, 970, 1010, 917, 1009, 1029, 1041, 1002, 1011, 952, 994, 1024, 1009, 1009, 981, 986, 986, 992, 1065, 1031, 958, 1026, 1044, 1000, 971, 960, 1019, 975, 1038, 1000, 937, 1002, 976, 1020, 994, 969, 1002, 1033, 971, 1002, 1003, 1036, 1014, 1015, 974, 1017, 957, 980, 1060, 1002, 1055, 984, 962, 1008, 997, 997, 1027, 952, 968, 1010, 1021, 1028, 976, 941, 1063, 979, 946, 991], [985, 1009, 959, 1039, 1082, 967, 980, 1033, 1044, 1005, 1035, 1021, 1049, 1041, 988, 1000, 949, 1067, 993, 1008, 968, 1031, 1022, 992, 1018, 970, 975, 951, 1037, 1012, 1045, 990, 974, 995, 969, 1019, 984, 1049, 1015, 1012, 973, 1017, 1021, 1058, 972, 970, 1008, 1076, 945, 1020, 1046, 1016, 1051, 975, 914, 1034, 1049, 1033, 949, 1094, 963, 1025, 1013, 970, 980, 989, 1020, 987, 1057, 979, 987, 973, 998, 1033, 979, 1023, 981, 1020, 1011, 999, 971, 1101, 1003, 970, 1006, 1023, 995, 1064, 995, 1035, 923, 948, 1007, 1010, 951, 975, 936, 1026, 992, 1010, 1015, 940, 984, 997, 997, 996, 1080, 979, 1026, 1013, 1020, 1009, 1000, 957, 930, 965, 975, 973, 988, 969, 991, 1051, 953, 1002, 1003, 1000, 982, 975, 1009, 1044, 985, 1011, 997, 992, 1011, 1002, 1030, 951, 998, 1038, 986, 1006, 936, 1038, 969, 1017, 1020, 1009, 1038, 999, 959, 981, 1037, 967, 978, 1038, 1019, 980, 1063, 936, 980, 977, 1038, 994, 955, 1017, 947, 984, 967, 1012, 1012, 1027, 955, 1040, 1002, 978, 1000, 946, 988, 992, 995, 1030, 959, 972, 1003, 936, 1008, 1017, 1040, 956, 1053, 943, 1032, 1026, 1018, 997, 968, 966, 1012, 974, 1011, 976, 992, 980, 978, 994, 1003, 1037, 1022, 992, 1056, 969, 1005, 1023, 1005, 965, 1065, 1037, 990, 1006, 991, 918, 957, 979, 997, 1060, 956, 1090, 992, 1016, 1024, 962, 989, 1010, 1040, 1031, 972, 961, 992, 924, 1034, 1008, 1010, 1009, 985, 977, 1030, 1028, 960, 997, 975, 984, 983, 950, 914, 1010], [1034, 1000, 950, 952, 960, 977, 1048, 1020, 1022, 1026, 1069, 978, 989, 1054, 1013, 1013, 993, 1069, 1026, 1050, 979, 982, 1034, 1017, 958, 959, 1070, 999, 963, 1052, 1047, 984, 988, 1013, 1029, 1076, 993, 1020, 997, 985, 1031, 1010, 967, 999, 979, 1027, 1020, 1003, 959, 1023, 1017, 1067, 989, 980, 1060, 1001, 948, 984, 970, 988, 1019, 1008, 987, 1012, 1007, 1011, 976, 994, 988, 977, 1041, 1031, 1003, 1002, 955, 974, 1039, 974, 969, 1020, 1035, 1019, 968, 1057, 1021, 990, 1014, 1020, 952, 995, 970, 988, 991, 1007, 935, 1031, 975, 1005, 1043, 997, 1025, 1017, 969, 1028, 1012, 968, 1011, 1014, 940, 1053, 985, 1043, 999, 999, 962, 991, 972, 967, 1011, 995, 938, 949, 1026, 950, 1043, 1043, 1078, 973, 1000, 1000, 1042, 1024, 984, 970, 1034, 1046, 938, 1062, 1015, 1005, 1003, 996, 987, 979, 980, 972, 960, 1033, 1050, 989, 988, 966, 1011, 1006, 1039, 968, 939, 954, 1002, 1031, 1013, 997, 1029, 920, 982, 995, 1024, 913, 994, 986, 1022, 1071, 972, 984, 1017, 998, 1012, 1006, 1048, 987, 1020, 1013, 948, 1033, 994, 1030, 1006, 1003, 1003, 964, 1014, 951, 1021, 1053, 996, 984, 1027, 968, 952, 990, 1028, 959, 991, 932, 1018, 1061, 998, 1024, 1042, 1029, 987, 987, 948, 1030, 977, 983, 976, 1002, 963, 1025, 994, 1043, 1014, 997, 991, 1004, 1042, 998, 1054, 973, 997, 1048, 957, 999, 1029, 1033, 979, 1023, 998, 923, 993, 1012, 1011, 996, 1010, 1006, 1036, 966, 1025, 989, 1028, 1024, 984, 990, 980, 1000], [1049, 966, 984, 981, 1024, 945, 1059, 1058, 1018, 975, 1058, 1054, 1024, 1009, 1049, 1026, 1029, 1019, 962, 978, 1016, 996, 1031, 1026, 954, 1006, 1061, 971, 1005, 1009, 1023, 991, 1024, 994, 1030, 940, 986, 1036, 1041, 1035, 920, 935, 1008, 1039, 1002, 987, 1050, 938, 1044, 996, 1007, 1061, 1035, 1009, 1036, 999, 1045, 930, 975, 1018, 1064, 975, 943, 983, 1009, 1003, 997, 1021, 1053, 954, 1023, 992, 1011, 1003, 1041, 1055, 1018, 979, 988, 1014, 971, 1036, 1007, 1008, 1013, 998, 1028, 986, 969, 1013, 1005, 972, 1061, 972, 988, 960, 986, 987, 981, 928, 1051, 1036, 1067, 1076, 994, 1006, 1000, 1047, 988, 1030, 1034, 1006, 1014, 1000, 1047, 1007, 1028, 1015, 966, 992, 938, 1005, 978, 1026, 1022, 1010, 939, 1011, 1017, 1047, 966, 999, 1032, 978, 989, 1032, 938, 986, 1020, 948, 981, 930, 1003, 960, 984, 1018, 961, 950, 989, 974, 1038, 945, 966, 1016, 1000, 989, 993, 1021, 991, 984, 977, 944, 1010, 1032, 1023, 954, 984, 965, 941, 1000, 969, 1030, 993, 1001, 1010, 971, 1005, 1047, 947, 950, 980, 991, 986, 974, 1031, 994, 990, 941, 1005, 939, 1009, 1001, 1046, 996, 1001, 976, 1015, 1038, 999, 1010, 1000, 992, 1009, 1004, 977, 1075, 1003, 945, 984, 955, 1010, 1003, 999, 1027, 999, 1003, 1017, 1027, 979, 943, 998, 1025, 974, 997, 998, 994, 979, 1046, 982, 1041, 965, 959, 988, 988, 1000, 977, 1021, 994, 997, 1026, 995, 1008, 965, 931, 1017, 950, 967, 997, 1022, 1046, 1006, 985, 1018, 1001, 1017, 960], [965, 1078, 1004, 1032, 1020, 1054, 1029, 1073, 997, 1014, 977, 1011, 989, 923, 961, 958, 993, 1002, 974, 1020, 989, 1018, 1028, 1015, 1053, 961, 1007, 1057, 986, 1009, 921, 953, 962, 965, 975, 948, 935, 964, 970, 993, 961, 1016, 933, 989, 1028, 1003, 1018, 1000, 983, 978, 1004, 1028, 1001, 1016, 989, 1011, 1013, 1014, 1003, 1062, 992, 996, 1048, 989, 1017, 964, 1069, 1028, 1038, 988, 951, 981, 1030, 951, 1002, 1063, 969, 980, 1022, 982, 992, 1012, 993, 1012, 1027, 966, 1029, 1010, 1053, 1011, 971, 988, 969, 974, 945, 999, 1053, 1045, 988, 998, 972, 1005, 1056, 1038, 1000, 982, 1006, 991, 1050, 997, 1050, 1027, 999, 1023, 971, 1022, 983, 1021, 987, 982, 1026, 943, 965, 1018, 967, 957, 1012, 1015, 971, 1024, 1035, 970, 1032, 1036, 1016, 992, 1019, 940, 971, 982, 957, 975, 1037, 1046, 1008, 982, 1019, 977, 1009, 968, 949, 974, 992, 1036, 980, 1065, 972, 993, 1027, 982, 1059, 981, 974, 1004, 995, 1035, 950, 994, 1028, 976, 943, 1105, 1034, 1032, 1004, 920, 1003, 1000, 998, 1031, 966, 977, 977, 961, 1046, 1043, 1008, 976, 1044, 1037, 1026, 993, 993, 1008, 956, 991, 1028, 976, 1032, 1039, 950, 985, 987, 988, 987, 969, 1000, 939, 1036, 1029, 1035, 1015, 1045, 1024, 959, 978, 1012, 953, 1018, 1019, 948, 1009, 1035, 999, 1011, 1025, 1001, 991, 1025, 975, 948, 1004, 956, 981, 1025, 993, 1006, 986, 947, 972, 1034, 975, 994, 973, 1055, 937, 1004, 1032, 1002, 1002, 988, 1030, 1007, 1009, 1078, 1021], [973, 987, 980, 1024, 1006, 974, 1001, 963, 969, 951, 988, 1027, 955, 994, 944, 1006, 989, 984, 934, 1020, 984, 995, 960, 1012, 951, 1011, 950, 991, 1010, 1070, 986, 1002, 984, 1050, 1005, 982, 1038, 1033, 1036, 1046, 962, 1020, 1030, 992, 1006, 1022, 1039, 1029, 972, 987, 997, 1008, 1017, 1031, 994, 976, 982, 1015, 1058, 979, 1005, 1018, 1001, 986, 1005, 953, 1033, 1067, 959, 997, 1048, 987, 1048, 1015, 1000, 1061, 979, 1041, 948, 979, 977, 977, 1004, 975, 1014, 990, 1049, 971, 1007, 1008, 1036, 1001, 1000, 998, 1021, 965, 1030, 975, 982, 963, 976, 1011, 992, 985, 1022, 1018, 1038, 1024, 946, 984, 1025, 979, 1003, 1033, 955, 948, 1009, 1022, 1026, 997, 1044, 996, 964, 1012, 1019, 1021, 987, 1006, 1055, 1073, 999, 976, 1013, 990, 1035, 1025, 1004, 1085, 1052, 1022, 1000, 1013, 963, 920, 1011, 994, 949, 1000, 980, 1022, 997, 979, 1001, 993, 1001, 965, 1007, 1003, 1046, 971, 980, 944, 973, 1064, 977, 1031, 992, 1010, 977, 955, 952, 1004, 1001, 992, 1028, 977, 1008, 984, 988, 983, 918, 962, 958, 967, 1007, 988, 996, 988, 1016, 941, 1004, 1040, 963, 1045, 1009, 1027, 986, 1019, 1031, 982, 1031, 991, 968, 1042, 970, 1015, 1015, 963, 998, 1035, 983, 953, 1020, 969, 978, 974, 972, 1026, 942, 995, 955, 1011, 1023, 1000, 961, 983, 993, 987, 900, 997, 955, 935, 965, 957, 1002, 1009, 1008, 966, 965, 1028, 1058, 988, 1031, 1027, 1037, 982, 1064, 1005, 1031, 1037, 934, 1012, 990, 970, 1001, 994], [1014, 998, 1036, 1009, 1031, 1014, 986, 957, 1024, 975, 989, 973, 971, 1070, 980, 994, 1006, 983, 991, 979, 1001, 980, 1031, 1035, 1020, 1009, 1024, 966, 1005, 999, 1001, 1015, 1036, 974, 992, 951, 1032, 1005, 1004, 973, 997, 1035, 1006, 952, 1016, 995, 924, 1012, 993, 1027, 1068, 1010, 1002, 941, 1000, 983, 988, 1014, 1017, 1023, 1023, 1017, 998, 989, 1000, 1026, 962, 989, 939, 967, 1049, 988, 995, 1019, 1000, 1050, 956, 999, 1024, 946, 967, 992, 996, 1020, 978, 966, 991, 958, 1026, 1036, 1000, 979, 998, 999, 1072, 1031, 995, 996, 1011, 975, 977, 1027, 966, 1043, 1028, 961, 1016, 998, 1056, 1049, 994, 1043, 1006, 1010, 964, 1074, 975, 941, 982, 947, 934, 1023, 1030, 991, 967, 994, 1047, 1000, 1009, 952, 1044, 1016, 1035, 1028, 1019, 1032, 1022, 1017, 1044, 962, 992, 954, 966, 1044, 1007, 1036, 977, 995, 942, 1039, 1001, 1016, 989, 996, 1037, 1023, 995, 1007, 1034, 969, 1031, 1013, 1025, 1016, 1003, 990, 988, 1007, 1013, 957, 1035, 986, 1049, 1004, 952, 1001, 1028, 981, 1065, 1061, 946, 949, 1059, 995, 993, 1002, 948, 1053, 996, 996, 977, 974, 996, 984, 975, 976, 966, 1004, 1040, 965, 955, 944, 1047, 944, 1009, 1029, 1010, 952, 1026, 1083, 1039, 1044, 973, 972, 1030, 993, 975, 1011, 1006, 977, 941, 944, 1067, 1040, 1022, 1010, 997, 1036, 979, 1041, 1000, 968, 995, 999, 1023, 973, 1038, 1028, 977, 991, 999, 997, 982, 1041, 1009, 998, 960, 1018, 1013, 980, 992, 990, 1022, 965, 990, 1043], [956, 1059, 1003, 982, 1036, 1021, 998, 1053, 971, 1030, 966, 966, 980, 981, 989, 1049, 909, 1003, 981, 981, 1042, 988, 973, 984, 1016, 986, 998, 1026, 1035, 995, 983, 1000, 975, 960, 981, 1009, 978, 996, 1002, 1035, 978, 1043, 1028, 937, 1040, 988, 1043, 1024, 1047, 1020, 1002, 1042, 1044, 1010, 1008, 974, 997, 1006, 990, 982, 1045, 1011, 977, 980, 980, 1036, 969, 1057, 999, 976, 1042, 1015, 993, 1047, 973, 1012, 1043, 1044, 958, 991, 980, 954, 1027, 1015, 1041, 978, 1037, 988, 1012, 1014, 1018, 1035, 970, 1011, 1024, 959, 980, 1009, 962, 1042, 1041, 1026, 960, 983, 1019, 1007, 1018, 1018, 988, 1018, 958, 1006, 959, 978, 1012, 943, 947, 944, 1041, 1029, 999, 1001, 968, 989, 1036, 1062, 1005, 1063, 1044, 979, 990, 1013, 1006, 1034, 1017, 969, 1004, 1042, 953, 983, 988, 953, 1060, 1009, 981, 1010, 1026, 980, 1029, 981, 1056, 964, 996, 971, 990, 1000, 990, 948, 991, 1051, 1072, 946, 1079, 1005, 1015, 945, 1048, 1039, 970, 1006, 1004, 935, 965, 1035, 1016, 978, 1047, 1000, 1032, 976, 1035, 1034, 978, 986, 1003, 1012, 1038, 940, 977, 976, 1032, 1007, 1021, 1042, 1028, 996, 972, 958, 1042, 1040, 967, 989, 973, 932, 945, 1008, 998, 959, 984, 1024, 1035, 1012, 1001, 1045, 997, 1038, 957, 985, 970, 1009, 988, 985, 1059, 984, 920, 1024, 1038, 1001, 1054, 983, 991, 1028, 996, 968, 1022, 1046, 1011, 968, 1030, 1007, 975, 1022, 1000, 1014, 1074, 976, 1007, 980, 993, 1028, 1030, 986, 951, 1009, 1016, 975], [953, 1012, 1039, 991, 1010, 1042, 988, 1049, 1023, 1003, 974, 1020, 936, 984, 905, 1029, 1029, 991, 1022, 1041, 1062, 957, 958, 1001, 972, 997, 977, 1005, 1029, 987, 1017, 974, 1008, 1065, 953, 989, 957, 1030, 991, 951, 1019, 933, 1024, 998, 937, 1009, 977, 1025, 981, 941, 1037, 966, 1000, 995, 904, 1004, 1041, 1028, 947, 1031, 1006, 983, 966, 1048, 974, 952, 1016, 1002, 991, 1027, 965, 1005, 965, 1009, 1009, 980, 1037, 963, 937, 1050, 1040, 950, 997, 1061, 1051, 1002, 973, 939, 1006, 990, 927, 1014, 1033, 988, 986, 979, 1053, 968, 996, 1012, 1002, 956, 948, 954, 1060, 1012, 952, 1022, 1059, 961, 984, 942, 1060, 1003, 974, 963, 946, 1023, 964, 961, 966, 989, 1005, 1060, 991, 1001, 1001, 1018, 1011, 976, 986, 1025, 1057, 1039, 1012, 997, 1001, 978, 970, 1003, 975, 1025, 947, 1000, 1005, 1077, 997, 1019, 998, 1003, 1005, 992, 949, 1018, 949, 988, 1011, 1019, 1078, 982, 964, 953, 1018, 970, 960, 1013, 1031, 975, 934, 1022, 968, 1055, 998, 976, 1034, 1016, 989, 935, 1040, 1018, 979, 1033, 1028, 1031, 1026, 944, 995, 959, 991, 997, 1021, 1020, 950, 1001, 1059, 1033, 981, 1027, 981, 1008, 985, 1011, 961, 1059, 1058, 1000, 1001, 958, 980, 1012, 999, 980, 1040, 1010, 957, 977, 1017, 1010, 1000, 985, 957, 984, 939, 999, 1058, 1017, 943, 1043, 1014, 1041, 999, 959, 975, 984, 1000, 984, 1007, 1010, 939, 963, 1058, 1015, 1002, 976, 996, 1005, 1021, 1025, 1023, 948, 1017, 1004, 968, 1019, 1074, 1001], [969, 976, 1003, 982, 1002, 957, 1047, 961, 1035, 1003, 1018, 1022, 1038, 1018, 1044, 994, 946, 1009, 961, 989, 961, 947, 981, 1015, 953, 1033, 1021, 1053, 968, 960, 1004, 976, 977, 1008, 1005, 965, 986, 983, 982, 933, 1023, 985, 1011, 1023, 971, 980, 990, 972, 972, 990, 959, 1028, 1016, 1013, 988, 995, 1020, 998, 1027, 960, 1020, 962, 964, 1000, 1003, 1046, 971, 965, 999, 1009, 1009, 956, 1050, 1016, 1048, 1007, 1044, 1001, 1008, 1043, 1007, 1005, 986, 998, 1009, 1030, 1022, 965, 1013, 954, 1016, 1004, 977, 1046, 1015, 960, 978, 992, 981, 1013, 1009, 1045, 1028, 990, 1016, 1061, 1012, 1000, 975, 997, 992, 984, 1006, 1048, 958, 1030, 1007, 1043, 974, 1007, 958, 993, 1096, 999, 1015, 971, 995, 1058, 940, 1012, 1009, 977, 969, 1051, 972, 990, 969, 972, 1040, 1007, 928, 962, 1032, 1037, 1018, 997, 1007, 974, 1008, 1047, 977, 993, 1001, 1016, 981, 1072, 1021, 1039, 1016, 923, 1018, 1014, 1013, 982, 1074, 994, 976, 935, 950, 979, 974, 1025, 1025, 1058, 952, 992, 996, 1033, 939, 976, 1026, 1014, 945, 973, 1029, 1014, 966, 1026, 1061, 968, 1016, 1003, 947, 955, 973, 1012, 1011, 1016, 954, 1008, 989, 1013, 1014, 950, 1004, 992, 934, 996, 991, 985, 978, 985, 1013, 1006, 982, 986, 997, 1014, 988, 1013, 1027, 1041, 972, 1031, 1065, 978, 962, 1023, 997, 991, 1052, 981, 1011, 964, 999, 991, 981, 982, 997, 1007, 1020, 1025, 1004, 1030, 1002, 957, 999, 1026, 987, 998, 977, 953, 989, 986, 1030, 1016], [1012, 1034, 1017, 1014, 974, 1001, 1041, 992, 990, 970, 967, 999, 985, 989, 1028, 1017, 1059, 1011, 1025, 1038, 1035, 983, 1000, 991, 1064, 1017, 954, 1009, 980, 960, 1024, 1004, 981, 991, 1004, 950, 945, 993, 972, 991, 1006, 966, 1040, 1014, 1019, 1053, 1013, 1035, 1023, 1057, 947, 1029, 949, 978, 963, 1024, 1027, 941, 994, 1039, 991, 964, 1014, 1010, 1035, 967, 1030, 1001, 942, 993, 1011, 958, 1054, 999, 996, 1003, 1014, 983, 988, 970, 999, 977, 1007, 991, 982, 930, 1041, 1037, 1043, 949, 1033, 1079, 982, 1011, 981, 1019, 989, 1018, 984, 1047, 1001, 950, 981, 1073, 999, 1020, 1000, 967, 1039, 973, 948, 1007, 950, 987, 961, 1028, 1005, 993, 950, 1032, 964, 924, 1034, 986, 978, 1010, 992, 1001, 1029, 1031, 1015, 1010, 997, 1043, 982, 976, 985, 937, 1022, 1010, 1051, 1039, 988, 1009, 989, 1002, 977, 984, 995, 1039, 1072, 1013, 950, 976, 976, 998, 1020, 1022, 971, 1019, 1038, 1013, 1030, 1001, 1004, 1025, 968, 992, 1000, 1064, 1020, 1004, 1035, 1020, 995, 976, 978, 1007, 1019, 1033, 988, 1042, 996, 1011, 1012, 944, 975, 1066, 1066, 960, 979, 958, 1056, 1012, 1013, 1011, 1005, 944, 987, 916, 1029, 986, 951, 973, 1003, 967, 1006, 1006, 1075, 1021, 1020, 990, 1027, 1009, 1037, 1028, 956, 1090, 1026, 1012, 916, 990, 1046, 1029, 1017, 953, 968, 996, 956, 1003, 1002, 980, 1019, 1006, 1002, 993, 1013, 1014, 963, 956, 1023, 991, 966, 995, 1009, 984, 1034, 1012, 1006, 1013, 1048, 1043, 933, 973, 1001, 997], [994, 1004, 988, 958, 1066, 1016, 940, 1065, 989, 1091, 983, 960, 947, 1027, 963, 989, 1020, 1006, 1058, 1020, 989, 1024, 1022, 983, 975, 1031, 1001, 983, 969, 1010, 984, 998, 1001, 1020, 1031, 1031, 941, 1028, 1045, 972, 996, 977, 991, 947, 968, 1011, 928, 1031, 1010, 995, 1042, 1000, 970, 970, 1033, 1026, 968, 982, 1065, 990, 947, 981, 1063, 965, 1016, 1055, 1044, 938, 1037, 938, 1029, 991, 969, 987, 1019, 996, 1000, 943, 1020, 958, 916, 946, 1026, 959, 1019, 997, 995, 1030, 1002, 1044, 945, 1009, 1044, 990, 980, 997, 1045, 984, 1012, 990, 994, 1012, 987, 1011, 1033, 1024, 1017, 957, 1049, 1011, 986, 1023, 978, 1064, 1006, 998, 1015, 1007, 949, 978, 1039, 1002, 1007, 972, 979, 1006, 994, 963, 1006, 975, 967, 1014, 1051, 976, 978, 949, 926, 988, 1001, 987, 981, 1010, 990, 1035, 1016, 940, 927, 998, 1002, 1030, 1002, 992, 989, 1032, 974, 974, 973, 990, 1010, 971, 1024, 995, 991, 952, 996, 1058, 992, 1000, 1074, 1052, 1039, 946, 994, 985, 958, 969, 1012, 1000, 1042, 942, 982, 1046, 1051, 959, 1027, 1002, 1043, 1017, 997, 991, 1021, 956, 991, 980, 1005, 1028, 996, 986, 1027, 976, 990, 1014, 976, 1065, 1008, 981, 1017, 953, 991, 1046, 979, 1020, 969, 977, 1003, 997, 1052, 984, 969, 969, 1011, 982, 1020, 980, 954, 978, 988, 987, 1044, 978, 1017, 1067, 1011, 1008, 1035, 1028, 994, 1007, 1011, 1037, 1000, 1018, 1022, 1028, 1034, 1019, 994, 992, 959, 994, 1068, 977, 1015, 975, 959, 1035], [997, 958, 1006, 973, 1008, 978, 994, 1038, 1005, 996, 946, 1005, 957, 978, 1013, 1047, 1010, 972, 1041, 981, 945, 1009, 1054, 948, 988, 1019, 1063, 996, 1038, 975, 1021, 1007, 967, 1014, 988, 1079, 962, 1013, 982, 985, 995, 1008, 982, 988, 958, 999, 947, 992, 1022, 989, 988, 1019, 1017, 960, 1002, 976, 961, 1075, 989, 1027, 938, 1015, 1005, 1035, 982, 946, 1025, 1008, 1006, 1000, 938, 942, 994, 983, 1037, 986, 988, 1004, 984, 982, 988, 947, 929, 1000, 1005, 949, 1051, 985, 961, 998, 1022, 948, 985, 968, 1016, 992, 1037, 970, 1024, 967, 1027, 1023, 978, 973, 1046, 918, 1030, 1020, 997, 977, 960, 919, 991, 1035, 972, 994, 1043, 981, 1011, 948, 978, 980, 966, 1006, 999, 976, 987, 967, 949, 978, 1046, 962, 953, 957, 981, 995, 1009, 1017, 988, 1009, 1018, 940, 980, 993, 1029, 993, 974, 966, 977, 954, 955, 985, 1017, 986, 950, 974, 1086, 1038, 1006, 984, 1005, 1038, 1053, 1047, 993, 1005, 996, 1017, 1055, 995, 982, 1000, 993, 1018, 965, 1043, 1050, 1006, 1034, 996, 972, 1027, 1023, 941, 996, 993, 964, 1033, 1029, 1044, 1048, 931, 963, 1019, 994, 944, 951, 1074, 977, 962, 977, 1015, 1039, 953, 1018, 984, 975, 992, 1126, 1003, 1038, 955, 964, 960, 1022, 986, 1027, 1041, 961, 993, 990, 935, 981, 977, 1025, 1001, 974, 1025, 966, 1010, 993, 952, 1019, 1008, 1002, 1065, 978, 1013, 1030, 984, 966, 958, 969, 1039, 1065, 986, 987, 970, 1035, 1027, 987, 992, 1011, 1005, 1003, 1014], [1043, 984, 980, 1039, 1027, 1000, 987, 1031, 963, 996, 1017, 971, 968, 1006, 1009, 996, 1005, 988, 1021, 1040, 992, 1030, 976, 950, 909, 989, 1007, 1026, 1029, 942, 1052, 1010, 998, 967, 967, 1010, 980, 916, 1005, 971, 1051, 1000, 1003, 1010, 982, 981, 997, 1047, 1006, 978, 1006, 1022, 1020, 981, 996, 962, 1022, 1047, 973, 972, 989, 984, 1037, 994, 1018, 1005, 991, 984, 957, 1042, 1021, 1009, 969, 979, 974, 965, 1035, 1019, 986, 999, 971, 1016, 1034, 951, 1040, 1081, 1024, 1021, 1026, 970, 1000, 969, 999, 1034, 1002, 992, 1017, 1010, 978, 1040, 979, 929, 958, 1087, 978, 1010, 972, 1021, 951, 987, 1023, 1021, 990, 968, 970, 961, 998, 987, 953, 967, 1028, 1042, 986, 966, 947, 977, 969, 974, 1009, 1035, 1034, 1064, 1035, 1053, 962, 1036, 971, 1015, 1014, 985, 998, 1000, 967, 1004, 1060, 931, 1034, 997, 969, 971, 1060, 1040, 991, 965, 1029, 1023, 1044, 958, 1009, 977, 1055, 984, 1016, 1016, 957, 941, 1007, 962, 1004, 1014, 984, 997, 962, 1062, 992, 1006, 1012, 1005, 1015, 1058, 986, 1046, 981, 942, 922, 978, 935, 1024, 1049, 982, 984, 975, 984, 981, 983, 1024, 981, 1024, 1035, 1046, 985, 992, 976, 1043, 967, 966, 953, 951, 1019, 992, 995, 977, 976, 1013, 1007, 936, 1037, 969, 996, 1013, 1005, 1008, 1041, 964, 1065, 1023, 1030, 969, 1032, 970, 1022, 953, 993, 966, 1029, 988, 997, 1041, 1007, 1025, 969, 1052, 917, 998, 993, 967, 952, 1026, 1045, 1018, 985, 952, 1017, 1015, 1052, 984], [1044, 973, 985, 988, 1017, 1062, 979, 1004, 946, 999, 922, 980, 997, 1024, 1019, 974, 1044, 975, 1005, 962, 1016, 1053, 1044, 1042, 1010, 913, 971, 977, 1084, 995, 990, 998, 975, 986, 962, 1020, 1012, 982, 973, 976, 932, 1029, 1023, 972, 1020, 994, 1025, 1036, 999, 1059, 949, 1039, 969, 1004, 1053, 952, 964, 998, 1028, 973, 1030, 951, 972, 998, 985, 1077, 963, 1008, 1060, 1038, 997, 1013, 992, 944, 1005, 1011, 916, 1024, 990, 994, 1078, 1047, 989, 995, 1005, 1000, 1021, 1026, 975, 986, 1005, 968, 1026, 991, 929, 1050, 1008, 1017, 983, 981, 1010, 1084, 983, 972, 977, 1005, 988, 1024, 952, 973, 991, 999, 1017, 1000, 981, 1022, 1047, 1031, 1019, 1009, 992, 986, 1009, 996, 1025, 1042, 987, 1017, 978, 1032, 1052, 963, 1011, 1042, 1048, 998, 1002, 1012, 1020, 985, 1030, 961, 1006, 1019, 993, 1013, 1016, 942, 1012, 1004, 996, 975, 996, 1028, 962, 1007, 1007, 942, 982, 981, 963, 923, 997, 1004, 1007, 936, 956, 1062, 993, 979, 1003, 1021, 951, 957, 1004, 1013, 1016, 968, 991, 985, 989, 965, 1068, 999, 993, 1017, 994, 1024, 1038, 1033, 1002, 1007, 992, 1034, 986, 1006, 982, 1000, 1006, 965, 988, 993, 1013, 1010, 994, 980, 965, 954, 1015, 955, 988, 998, 974, 1047, 980, 1010, 1020, 981, 1007, 1022, 1040, 968, 1016, 1054, 988, 968, 988, 1021, 1068, 998, 894, 984, 1006, 1060, 1006, 1013, 1049, 1001, 943, 1023, 951, 1032, 1028, 988, 983, 1048, 1068, 1008, 995, 910, 962, 1010, 995, 1003, 1078, 997], [979, 975, 989, 990, 964, 982, 1002, 969, 944, 1066, 948, 1009, 999, 968, 1011, 984, 976, 996, 969, 984, 1003, 983, 999, 1007, 1004, 1045, 1006, 1034, 1033, 1064, 952, 1002, 1042, 1067, 1016, 1034, 988, 1005, 1023, 984, 945, 1033, 1051, 984, 1031, 987, 1015, 1039, 1032, 1037, 983, 967, 1002, 993, 1038, 976, 1036, 983, 1035, 965, 965, 1024, 952, 1011, 1020, 946, 981, 927, 945, 1013, 1006, 987, 1002, 964, 1000, 993, 948, 1007, 979, 1010, 971, 1029, 1042, 1013, 954, 956, 1003, 971, 1017, 997, 1046, 1009, 1006, 1027, 1024, 987, 1035, 1004, 1028, 1028, 965, 999, 958, 1016, 1023, 954, 965, 1025, 979, 1076, 988, 952, 950, 971, 941, 1041, 1022, 971, 1045, 992, 963, 967, 1058, 993, 980, 1042, 976, 958, 993, 968, 1017, 990, 955, 1024, 971, 958, 965, 1022, 1013, 1021, 995, 987, 1060, 973, 1009, 1000, 1018, 1001, 1014, 1027, 1004, 997, 1083, 976, 997, 1011, 1001, 993, 1056, 1040, 1001, 983, 993, 1012, 993, 995, 1030, 1012, 968, 1032, 994, 1008, 974, 1014, 979, 990, 1029, 1022, 972, 922, 1004, 1060, 947, 994, 959, 1005, 986, 1027, 960, 974, 1027, 1065, 962, 1023, 1000, 1035, 1063, 928, 1013, 1021, 957, 1015, 1008, 974, 1003, 982, 980, 970, 980, 1025, 1041, 1033, 952, 1003, 1025, 986, 1016, 1011, 1006, 994, 985, 1002, 976, 1009, 970, 1007, 1017, 996, 968, 966, 985, 1016, 944, 976, 1013, 1017, 1011, 1022, 1001, 1041, 999, 1011, 986, 990, 1037, 994, 1070, 1009, 1002, 961, 1016, 1059, 978, 966, 1024, 1025], [1007, 1000, 1018, 965, 957, 1022, 1017, 976, 938, 1029, 967, 1044, 1009, 1013, 1020, 996, 1028, 1006, 982, 980, 1008, 988, 970, 973, 961, 963, 974, 1029, 1003, 992, 992, 1014, 1022, 996, 1028, 974, 1032, 962, 1052, 1039, 1029, 986, 1020, 1007, 1031, 1045, 992, 979, 984, 1010, 1017, 1000, 994, 964, 1019, 991, 1043, 1014, 1030, 963, 955, 959, 1004, 983, 1016, 976, 972, 1017, 960, 974, 1005, 965, 952, 1021, 981, 1008, 1041, 1005, 1031, 1025, 1052, 997, 983, 1003, 987, 971, 943, 931, 1021, 1042, 1032, 975, 1008, 951, 1017, 1036, 975, 1000, 986, 1049, 969, 970, 993, 953, 984, 1037, 979, 995, 1019, 983, 968, 1073, 977, 959, 972, 978, 1003, 979, 963, 1006, 1040, 1005, 1038, 983, 1024, 1013, 989, 966, 966, 1027, 1093, 1017, 989, 1017, 1041, 1037, 1028, 1008, 962, 987, 996, 987, 1062, 1020, 982, 1020, 1029, 943, 1020, 978, 963, 999, 1011, 958, 951, 1016, 973, 972, 1005, 977, 1004, 1023, 1008, 1018, 968, 1012, 1019, 988, 968, 954, 960, 1101, 953, 1007, 1005, 1020, 958, 995, 989, 1040, 980, 1056, 986, 1017, 1046, 974, 960, 919, 1019, 980, 989, 973, 1037, 1024, 989, 1038, 1013, 1009, 948, 994, 1019, 1031, 1016, 989, 1042, 972, 1015, 1020, 1029, 1044, 997, 985, 1009, 998, 1009, 1005, 978, 1041, 1013, 1016, 1005, 955, 1007, 1059, 960, 988, 958, 955, 1043, 1034, 971, 1005, 1034, 1004, 1021, 1037, 1037, 988, 977, 990, 1022, 915, 970, 1013, 981, 991, 996, 980, 935, 950, 1017, 994, 1034, 1025, 1034, 976], [1010, 935, 966, 1005, 1027, 979, 996, 1001, 1024, 989, 1007, 940, 997, 971, 966, 1026, 1026, 1001, 1083, 982, 1020, 986, 943, 993, 955, 978, 1046, 1019, 994, 992, 997, 1004, 1000, 962, 1018, 1052, 896, 941, 900, 1026, 1012, 1022, 982, 957, 1015, 1052, 1008, 1021, 977, 1006, 1023, 981, 1065, 936, 999, 962, 1021, 967, 992, 1006, 1014, 968, 1015, 966, 957, 997, 1072, 977, 988, 999, 971, 1033, 1014, 1015, 961, 1018, 976, 989, 1005, 981, 988, 1008, 1019, 928, 1032, 986, 1015, 995, 998, 1045, 1044, 1060, 1009, 1025, 976, 1011, 956, 973, 967, 1020, 1042, 1073, 1013, 984, 975, 947, 984, 1040, 1044, 953, 1002, 987, 1056, 1054, 1018, 1037, 1004, 966, 1035, 948, 963, 966, 972, 995, 964, 992, 998, 976, 996, 992, 1018, 994, 1024, 944, 942, 1000, 1024, 950, 1028, 998, 970, 997, 1018, 1022, 1014, 960, 990, 980, 1004, 983, 1006, 1034, 992, 985, 979, 1017, 1044, 983, 967, 997, 1001, 1007, 987, 943, 949, 1016, 1019, 1018, 951, 1029, 975, 952, 1017, 992, 1005, 1009, 1084, 1081, 970, 967, 985, 1023, 1002, 1014, 1014, 968, 1003, 968, 1042, 1030, 1017, 1070, 1043, 1032, 933, 1068, 999, 965, 1070, 1016, 1078, 993, 1040, 986, 1006, 978, 1038, 1014, 996, 982, 1041, 988, 1048, 1006, 932, 1032, 994, 1014, 999, 1060, 921, 1039, 1011, 1045, 1019, 959, 1040, 1031, 1036, 977, 1043, 993, 952, 988, 1020, 1039, 972, 1011, 993, 1009, 969, 983, 1021, 1017, 993, 968, 1019, 987, 1008, 1030, 991, 981, 1012, 1046, 982, 978], [997, 1017, 988, 973, 1015, 1017, 970, 972, 979, 1017, 981, 990, 1024, 1002, 955, 976, 919, 1012, 970, 994, 991, 1004, 965, 989, 963, 973, 1006, 1008, 992, 1005, 1069, 1003, 1056, 1032, 1004, 967, 1027, 965, 1031, 987, 1047, 919, 973, 972, 951, 1049, 1020, 1025, 1001, 992, 985, 1015, 1008, 1027, 1008, 990, 947, 971, 999, 985, 1001, 1048, 1001, 976, 1018, 1054, 1035, 968, 953, 997, 1047, 970, 1003, 961, 994, 970, 1027, 1002, 964, 1011, 1008, 1050, 1030, 1018, 994, 931, 1068, 1032, 983, 1022, 993, 982, 1007, 1038, 1054, 976, 1024, 1040, 980, 977, 1043, 986, 1028, 1006, 976, 1004, 1048, 1030, 1031, 1009, 1044, 964, 1054, 968, 1021, 986, 962, 1021, 964, 968, 988, 992, 983, 1009, 1060, 975, 984, 1006, 1012, 982, 1018, 1024, 987, 952, 972, 992, 991, 974, 1049, 1000, 1020, 1042, 1002, 993, 991, 957, 953, 990, 1024, 1026, 999, 1087, 1035, 997, 926, 1028, 1005, 1023, 1020, 1035, 1026, 1031, 977, 1006, 1001, 1020, 976, 999, 991, 965, 973, 996, 955, 1029, 976, 1024, 1029, 972, 1069, 983, 958, 1023, 1015, 1021, 1005, 1025, 978, 980, 966, 1055, 1036, 927, 1027, 947, 964, 904, 1009, 920, 999, 970, 988, 968, 1027, 972, 991, 1035, 1034, 991, 1005, 965, 1026, 953, 989, 997, 1009, 972, 1043, 962, 1006, 1031, 1010, 991, 1033, 985, 1035, 1002, 1062, 1076, 950, 1039, 1001, 961, 968, 952, 1016, 1020, 983, 981, 1004, 992, 1000, 949, 996, 1045, 993, 939, 988, 1002, 1060, 1011, 1024, 1011, 1081, 953, 1066, 1036], [1084, 1001, 1038, 1017, 1003, 970, 967, 987, 1006, 998, 1003, 1030, 1036, 971, 986, 962, 947, 1001, 934, 961, 1019, 958, 992, 984, 1026, 966, 983, 966, 995, 1053, 985, 973, 990, 985, 1024, 983, 992, 1040, 932, 997, 978, 1004, 1004, 969, 1043, 981, 990, 993, 997, 1031, 1009, 986, 1034, 981, 993, 952, 1042, 1021, 1012, 1030, 976, 964, 1005, 1000, 982, 973, 1034, 1041, 965, 1019, 966, 980, 1005, 1013, 948, 1028, 1028, 1007, 1030, 960, 1028, 970, 1009, 1002, 1024, 994, 1042, 1001, 959, 999, 947, 978, 987, 976, 1013, 1068, 997, 978, 977, 1014, 1024, 1000, 975, 977, 1003, 1023, 976, 1002, 985, 991, 1025, 999, 995, 1008, 972, 1032, 1004, 994, 1007, 1018, 980, 978, 1005, 1015, 973, 994, 1001, 928, 961, 974, 1016, 991, 993, 970, 969, 936, 972, 1016, 973, 1017, 1063, 996, 994, 1013, 1025, 1040, 1024, 1055, 994, 987, 1013, 1054, 1009, 965, 993, 978, 1001, 967, 1006, 974, 1076, 1016, 987, 1019, 959, 973, 1008, 961, 999, 1024, 944, 1007, 1043, 931, 973, 1067, 995, 1039, 998, 953, 971, 960, 999, 1033, 1069, 1001, 990, 977, 1017, 954, 994, 1022, 1004, 1023, 1009, 981, 1038, 1026, 1031, 961, 1037, 1007, 1000, 1000, 1003, 1048, 1037, 1014, 1018, 1023, 1025, 989, 974, 964, 951, 1048, 1019, 1000, 1062, 975, 991, 1022, 1024, 973, 961, 1015, 955, 1002, 1040, 988, 995, 995, 988, 970, 958, 1011, 1026, 1004, 1016, 991, 1024, 1003, 973, 1031, 991, 967, 993, 1015, 1028, 1022, 983, 1015, 1039, 997, 1001, 1019], [1026, 967, 1028, 1036, 992, 991, 986, 987, 989, 955, 1022, 1005, 985, 957, 998, 1002, 996, 993, 1007, 982, 998, 1033, 981, 1051, 996, 958, 1013, 962, 968, 1010, 956, 1037, 1019, 1004, 944, 1004, 996, 1068, 1000, 1006, 961, 1028, 987, 975, 962, 1030, 997, 1020, 975, 968, 954, 1060, 955, 999, 1004, 991, 1039, 1017, 954, 998, 976, 1051, 986, 985, 1002, 984, 993, 1023, 977, 974, 1012, 1092, 1022, 1045, 988, 1015, 1072, 1002, 1016, 968, 985, 1008, 1020, 1004, 945, 1019, 1012, 977, 979, 982, 1046, 1009, 1026, 953, 964, 1021, 1026, 1112, 986, 1001, 1033, 1017, 1030, 990, 991, 996, 1008, 1017, 1012, 1040, 981, 1009, 930, 1044, 1038, 1003, 1028, 1009, 1025, 981, 1001, 986, 969, 982, 994, 1009, 1015, 981, 1054, 968, 1024, 967, 1039, 969, 1041, 1035, 983, 956, 1022, 1007, 954, 989, 1077, 1019, 1042, 950, 1006, 957, 1058, 1060, 943, 943, 976, 969, 976, 1004, 1040, 1032, 961, 997, 980, 979, 1019, 1013, 990, 1010, 991, 1008, 996, 1001, 1000, 934, 1011, 1096, 1002, 936, 1005, 1041, 1039, 1048, 1005, 965, 960, 1016, 1026, 1002, 1000, 952, 1037, 1003, 1001, 966, 948, 943, 985, 1081, 950, 1036, 1045, 994, 982, 959, 1018, 1014, 998, 981, 1018, 1021, 983, 1001, 1008, 928, 962, 1028, 1013, 960, 1026, 974, 1028, 1021, 1025, 1041, 1016, 1047, 968, 1002, 1017, 1068, 988, 983, 1038, 989, 1045, 1061, 1065, 949, 1017, 1044, 1002, 995, 1010, 1001, 977, 1040, 966, 986, 1043, 946, 984, 991, 1010, 916, 1081, 991, 1035, 949], [991, 982, 991, 978, 995, 1009, 964, 1006, 981, 1007, 942, 946, 965, 1008, 987, 969, 974, 1019, 1009, 1034, 924, 913, 1042, 951, 942, 988, 994, 959, 1033, 980, 1015, 1050, 983, 980, 994, 1036, 1032, 1034, 975, 949, 1011, 990, 1024, 1001, 976, 1000, 945, 937, 1000, 976, 1064, 1013, 1012, 996, 975, 1042, 1014, 974, 1032, 964, 1044, 1012, 1035, 934, 970, 999, 1022, 948, 1004, 987, 968, 979, 982, 1035, 1045, 1049, 1022, 1021, 999, 1052, 972, 1045, 971, 992, 945, 1010, 996, 976, 994, 1039, 1025, 965, 1054, 980, 976, 1032, 1018, 1066, 1009, 1030, 982, 1025, 1017, 961, 1092, 1024, 971, 1053, 992, 1006, 983, 985, 1023, 986, 991, 1062, 1042, 1034, 937, 1000, 1015, 1009, 1038, 980, 1030, 967, 1022, 1060, 989, 1036, 990, 951, 966, 1036, 1002, 963, 987, 1001, 1103, 961, 990, 988, 999, 995, 1035, 951, 1058, 1004, 933, 1016, 1033, 995, 1025, 1023, 980, 1007, 1028, 984, 972, 1047, 1019, 985, 1022, 1009, 1000, 989, 1053, 1009, 1022, 994, 1068, 1042, 1021, 1016, 1012, 1059, 1074, 1053, 999, 978, 1020, 1035, 993, 983, 1032, 999, 1004, 968, 1022, 1007, 1062, 1035, 991, 1008, 961, 1019, 986, 1027, 969, 979, 994, 975, 1033, 1082, 1002, 1018, 964, 954, 952, 1028, 1035, 977, 984, 1025, 1032, 1045, 1002, 1012, 976, 1022, 1019, 1032, 987, 1002, 1018, 988, 991, 1018, 964, 990, 1011, 943, 988, 1042, 990, 1039, 1064, 1003, 1014, 953, 937, 950, 962, 1029, 1007, 981, 1034, 1000, 977, 1006, 962, 1009, 1025, 1000, 978, 992], [1038, 1008, 948, 987, 959, 1035, 966, 1029, 1005, 1017, 1023, 975, 989, 948, 980, 1015, 993, 975, 1001, 1000, 1025, 1012, 958, 1053, 994, 977, 1035, 996, 955, 958, 1030, 1007, 999, 977, 1006, 1001, 966, 1047, 940, 987, 1024, 1007, 981, 1036, 986, 1011, 978, 999, 972, 932, 1011, 1017, 1022, 1041, 961, 1014, 980, 977, 1016, 1032, 986, 946, 983, 1035, 1058, 964, 933, 993, 1019, 1008, 1016, 1007, 996, 1006, 986, 1040, 1053, 989, 914, 1027, 979, 977, 1028, 1009, 944, 969, 939, 1018, 1035, 1040, 1063, 993, 1009, 1035, 932, 994, 995, 1017, 979, 1027, 1003, 984, 1020, 966, 990, 965, 1058, 1009, 1010, 1022, 977, 1035, 961, 981, 958, 984, 1018, 1026, 1009, 1036, 1030, 990, 1011, 1042, 987, 1011, 947, 1011, 1003, 942, 1025, 1086, 975, 991, 989, 1001, 928, 1035, 978, 970, 1011, 1042, 1004, 1047, 1006, 989, 977, 982, 991, 990, 982, 992, 1003, 991, 999, 1059, 951, 1043, 952, 1007, 1024, 980, 979, 974, 1002, 1000, 943, 1009, 967, 1010, 1028, 924, 983, 1009, 965, 989, 977, 977, 984, 1042, 1002, 952, 982, 1000, 945, 1019, 995, 967, 923, 1070, 1027, 973, 1000, 952, 1060, 1023, 966, 987, 1033, 1012, 972, 990, 969, 1006, 998, 1020, 1001, 1002, 1026, 1058, 956, 977, 990, 1013, 988, 994, 968, 955, 1074, 1010, 1039, 1046, 990, 986, 1041, 1013, 1030, 946, 944, 1005, 977, 978, 947, 1047, 998, 958, 987, 1034, 967, 1046, 990, 978, 988, 1012, 964, 1003, 1048, 970, 977, 990, 992, 1026, 1031, 1000, 1048, 966], [1026, 1036, 988, 1069, 997, 1024, 942, 1004, 1035, 981, 1022, 929, 1051, 1003, 983, 1057, 948, 991, 1006, 964, 1005, 978, 1051, 1005, 941, 998, 1015, 978, 1018, 957, 1004, 1018, 1001, 1054, 957, 1029, 947, 1007, 1003, 1027, 1032, 983, 1031, 994, 1028, 1005, 955, 1001, 1031, 945, 984, 1026, 989, 944, 987, 1023, 1016, 962, 957, 1007, 1010, 1019, 995, 1003, 1046, 1018, 1017, 980, 1023, 1069, 1025, 985, 998, 1019, 994, 1028, 978, 937, 1024, 1012, 1030, 1042, 960, 1011, 994, 1018, 1000, 969, 972, 961, 1024, 1061, 1004, 1010, 989, 1031, 949, 955, 975, 1058, 997, 943, 1036, 1035, 1002, 1049, 947, 1003, 1033, 994, 974, 1035, 914, 1036, 1026, 1039, 953, 1025, 1011, 1078, 1007, 961, 1008, 988, 1013, 1005, 1029, 1019, 990, 998, 969, 1078, 1039, 1056, 981, 1037, 955, 969, 1055, 980, 985, 998, 1023, 984, 983, 1009, 1004, 972, 983, 1024, 985, 984, 967, 984, 970, 1031, 995, 1024, 1033, 936, 973, 1033, 982, 981, 957, 977, 988, 991, 1044, 946, 990, 998, 1001, 1002, 989, 1012, 959, 1059, 975, 1038, 1024, 962, 979, 1005, 968, 1006, 1031, 1062, 974, 987, 956, 1044, 969, 1014, 968, 981, 978, 1007, 1023, 1016, 1020, 972, 983, 1010, 1023, 920, 961, 974, 1012, 1021, 966, 987, 1047, 965, 989, 973, 1024, 984, 1002, 985, 968, 1003, 1031, 1000, 1049, 933, 1049, 971, 1035, 973, 955, 991, 979, 1004, 1008, 996, 992, 969, 1042, 1021, 1011, 1027, 1000, 987, 990, 975, 979, 983, 995, 1031, 980, 1021, 983, 948, 970, 967], [969, 992, 1003, 973, 994, 927, 996, 1013, 1002, 1005, 1005, 1024, 994, 1010, 1031, 967, 1027, 937, 1035, 994, 980, 972, 1003, 1012, 1014, 1061, 981, 1039, 1020, 1051, 982, 984, 1027, 1051, 1060, 1037, 1025, 989, 1039, 1027, 971, 996, 1009, 1000, 937, 1008, 968, 980, 957, 1018, 1022, 968, 1035, 1034, 984, 1011, 1009, 970, 1027, 1049, 985, 1018, 983, 998, 1021, 1005, 1019, 939, 986, 1037, 944, 1048, 1003, 1001, 1003, 990, 987, 959, 1066, 995, 1005, 940, 990, 1009, 1024, 1003, 945, 1009, 962, 975, 944, 1045, 984, 993, 974, 980, 923, 1009, 995, 1019, 1032, 985, 1064, 1028, 968, 922, 1033, 978, 1009, 1035, 1005, 1030, 1031, 994, 1005, 1042, 1011, 1049, 939, 949, 986, 1003, 964, 1006, 1023, 949, 979, 991, 1006, 957, 980, 925, 992, 1045, 952, 992, 992, 1051, 983, 1007, 1010, 972, 1069, 1031, 1016, 1022, 1018, 1001, 972, 982, 1010, 1017, 1021, 1023, 1032, 986, 936, 978, 1037, 1005, 1005, 1022, 995, 983, 1022, 938, 974, 1020, 977, 1084, 974, 1050, 962, 966, 970, 934, 1005, 1040, 1026, 1008, 1021, 1010, 997, 993, 1054, 994, 1049, 1003, 984, 1011, 944, 924, 1042, 980, 992, 986, 1014, 1015, 965, 1043, 1016, 993, 986, 1021, 1021, 992, 999, 908, 1057, 968, 1051, 928, 1022, 1059, 937, 1047, 968, 1044, 981, 1045, 999, 1010, 1029, 985, 1029, 1003, 944, 1040, 987, 998, 982, 1024, 1018, 1005, 1018, 1026, 994, 1045, 1008, 947, 1005, 1020, 982, 944, 1036, 1080, 979, 952, 1018, 1045, 983, 1012, 1017, 1035, 995, 995], [1021, 1021, 983, 952, 1026, 1006, 1010, 975, 1039, 978, 1022, 986, 1020, 1012, 1033, 1066, 1064, 1035, 994, 1009, 1010, 1054, 983, 997, 972, 939, 1005, 938, 1031, 996, 961, 1067, 971, 1050, 991, 999, 1058, 986, 998, 1002, 990, 1005, 1053, 1019, 975, 984, 980, 1020, 1000, 989, 977, 1003, 944, 1005, 986, 991, 987, 1021, 987, 940, 1011, 1009, 979, 987, 1001, 1059, 974, 1016, 1025, 1007, 1029, 1016, 952, 1045, 1019, 973, 1026, 956, 985, 1005, 969, 994, 977, 1032, 920, 1003, 1017, 1055, 991, 978, 1027, 1030, 981, 987, 965, 1008, 1013, 993, 1014, 1005, 980, 1024, 993, 1039, 1026, 1066, 995, 989, 962, 924, 949, 943, 980, 1014, 956, 960, 1022, 968, 1010, 957, 978, 1032, 929, 974, 982, 1011, 1016, 975, 1022, 1001, 992, 982, 1037, 986, 1072, 985, 1001, 979, 974, 1010, 1023, 905, 992, 967, 1016, 992, 950, 976, 989, 1031, 946, 1039, 1014, 1007, 987, 993, 1042, 975, 899, 967, 1097, 926, 983, 1038, 1068, 1071, 981, 943, 1014, 991, 1027, 1022, 1043, 1005, 991, 991, 992, 1001, 982, 955, 1011, 1023, 1021, 1000, 1016, 999, 1030, 991, 987, 958, 956, 978, 1014, 997, 945, 1023, 1040, 961, 961, 1004, 999, 944, 1087, 928, 1032, 989, 976, 973, 1035, 1021, 1004, 975, 990, 999, 1059, 957, 933, 1019, 964, 1058, 1010, 950, 1040, 1018, 991, 975, 972, 957, 976, 998, 1039, 961, 1068, 1004, 1052, 1025, 961, 1009, 997, 1034, 999, 999, 960, 1063, 1004, 1011, 972, 1002, 1001, 1021, 974, 1046, 1012, 1017, 945, 982], [978, 1052, 994, 910, 1064, 1013, 1052, 1007, 1096, 1048, 1008, 1051, 1062, 994, 943, 988, 983, 1073, 1016, 948, 984, 1024, 1042, 1017, 1014, 978, 980, 1005, 975, 973, 965, 1031, 994, 954, 1023, 1001, 963, 1050, 1010, 970, 1031, 1030, 980, 967, 1000, 984, 952, 992, 995, 1047, 996, 950, 1019, 1000, 992, 958, 1009, 968, 951, 956, 1038, 964, 999, 1019, 1051, 996, 1026, 1061, 970, 989, 1029, 1020, 980, 975, 1045, 1014, 1016, 1034, 985, 942, 1001, 993, 1044, 987, 996, 1034, 1004, 982, 1025, 952, 960, 1021, 1022, 1012, 1073, 1003, 1012, 953, 992, 1064, 1025, 1004, 967, 1070, 1029, 954, 993, 1004, 1042, 1042, 936, 1065, 1025, 1026, 1038, 968, 1006, 995, 995, 966, 979, 983, 1019, 996, 1025, 1018, 974, 1003, 986, 1004, 1000, 977, 980, 949, 969, 1055, 1076, 1021, 1029, 968, 969, 984, 972, 974, 1024, 985, 1004, 960, 1027, 973, 984, 1072, 959, 1034, 976, 962, 983, 997, 1021, 1049, 1040, 970, 964, 996, 999, 1018, 960, 1007, 976, 961, 988, 1051, 1012, 1036, 1005, 989, 1008, 986, 1027, 972, 1064, 1000, 989, 918, 935, 989, 1000, 1000, 999, 1000, 1014, 1023, 1016, 971, 1008, 1015, 1027, 996, 994, 986, 1033, 1000, 977, 1007, 1079, 966, 1070, 996, 979, 1068, 1013, 1001, 989, 1017, 993, 1040, 969, 978, 1019, 1016, 992, 985, 1036, 996, 1001, 1002, 1013, 1000, 1009, 1022, 1052, 1031, 1017, 1004, 974, 1023, 1026, 928, 1044, 1001, 985, 980, 981, 968, 996, 1038, 1027, 996, 1013, 983, 1003, 975, 930, 1031, 974, 991], [975, 1027, 1016, 1013, 1035, 981, 998, 1007, 1026, 961, 1064, 998, 1048, 1016, 1015, 1031, 1026, 988, 1017, 1017, 1021, 991, 1023, 953, 998, 975, 996, 977, 972, 971, 1001, 982, 965, 990, 941, 1060, 1014, 1032, 961, 1031, 1048, 1049, 1038, 1061, 988, 1002, 978, 1007, 958, 975, 962, 997, 927, 952, 1028, 1019, 991, 1004, 993, 1005, 994, 1048, 998, 1030, 1013, 1014, 988, 988, 967, 964, 1021, 979, 1038, 1030, 1002, 1028, 999, 1027, 1013, 952, 1000, 1035, 1042, 924, 981, 974, 992, 932, 1040, 1048, 1011, 1025, 998, 994, 1005, 975, 973, 958, 1001, 974, 1041, 995, 1039, 1013, 964, 990, 955, 942, 972, 958, 1007, 1026, 1005, 1025, 992, 1020, 1027, 1017, 1010, 1034, 956, 1004, 981, 980, 1004, 963, 953, 1048, 997, 993, 994, 1013, 1008, 986, 969, 1021, 990, 994, 1010, 993, 997, 980, 1094, 1010, 996, 1031, 1020, 978, 1030, 996, 1014, 1000, 940, 1035, 1027, 973, 1023, 1005, 1027, 980, 1015, 978, 964, 1032, 983, 1016, 992, 1033, 1013, 960, 971, 918, 979, 946, 961, 1045, 1066, 989, 1040, 1015, 1002, 967, 1001, 984, 1006, 1012, 998, 970, 1012, 1019, 988, 1004, 1059, 1009, 1042, 952, 1011, 991, 945, 948, 986, 1009, 962, 1020, 1038, 990, 1015, 1046, 1013, 1058, 933, 992, 1024, 994, 1053, 987, 964, 991, 995, 979, 994, 1025, 996, 1024, 1003, 1024, 945, 1011, 1041, 999, 942, 971, 1000, 991, 972, 1084, 971, 1052, 1003, 999, 1004, 1022, 957, 1042, 991, 1005, 1040, 1078, 1083, 997, 1030, 1056, 929, 1002, 1036, 934], [994, 1023, 1042, 977, 1048, 989, 966, 996, 1054, 943, 949, 1036, 1008, 966, 1010, 954, 962, 990, 978, 1028, 952, 997, 1061, 1003, 992, 1023, 947, 996, 1003, 1041, 983, 945, 987, 970, 1019, 988, 1037, 956, 995, 1004, 1011, 992, 982, 1034, 1017, 987, 987, 977, 1024, 987, 1051, 1014, 965, 1042, 926, 976, 1028, 1001, 1054, 977, 1046, 1010, 963, 982, 987, 961, 979, 941, 1030, 995, 961, 1007, 1020, 1039, 936, 989, 1046, 1044, 1012, 1023, 1002, 1013, 1000, 995, 987, 975, 1014, 986, 956, 945, 962, 962, 976, 979, 994, 1032, 994, 1013, 1020, 997, 993, 1035, 989, 983, 979, 969, 1051, 1000, 1048, 956, 1075, 1019, 972, 957, 1014, 1042, 1011, 1009, 1005, 1012, 1000, 1048, 972, 1003, 993, 980, 983, 1051, 981, 964, 987, 1050, 1000, 997, 1014, 995, 1041, 1035, 1021, 972, 1023, 956, 1065, 979, 1014, 1046, 1037, 1047, 1069, 955, 1024, 970, 1030, 967, 1031, 1013, 1010, 1036, 1000, 988, 977, 996, 1004, 1042, 976, 1072, 994, 964, 961, 968, 974, 1005, 1008, 948, 1000, 991, 1013, 1029, 967, 969, 1051, 997, 1015, 949, 1008, 959, 994, 974, 999, 1005, 1023, 1034, 1006, 990, 1005, 965, 967, 1010, 962, 997, 968, 960, 965, 1042, 1021, 1039, 993, 983, 1029, 942, 1007, 1035, 1040, 992, 935, 1019, 990, 1075, 984, 952, 1026, 1047, 989, 1004, 1005, 962, 963, 935, 1022, 979, 997, 971, 1026, 1078, 1000, 1018, 1026, 944, 958, 1004, 956, 1007, 1018, 1003, 977, 984, 979, 971, 974, 1041, 1057, 1050, 1018, 1013, 1009, 1022], [1045, 1018, 1020, 1034, 972, 1011, 1032, 1034, 999, 907, 966, 988, 974, 997, 994, 1072, 1021, 1005, 1026, 1033, 1000, 1051, 959, 1020, 1018, 963, 1005, 1015, 973, 985, 976, 1028, 958, 963, 982, 962, 950, 1004, 1013, 1034, 1014, 1005, 1030, 935, 957, 999, 955, 1018, 985, 1019, 1017, 1014, 993, 1004, 995, 1046, 932, 959, 989, 1024, 955, 983, 1028, 980, 1016, 1026, 967, 1051, 990, 1037, 923, 1009, 1013, 1012, 1007, 1018, 1017, 1011, 1033, 1042, 1018, 1015, 981, 999, 961, 1072, 1018, 1002, 1057, 1029, 1030, 1021, 924, 1032, 1042, 1031, 957, 1011, 1006, 967, 979, 1010, 1034, 941, 1027, 997, 1067, 1005, 1031, 971, 1013, 990, 962, 1014, 986, 969, 1026, 1061, 1000, 946, 1028, 1033, 969, 982, 978, 1046, 953, 1024, 998, 1026, 964, 1068, 987, 1007, 961, 1021, 1028, 1018, 995, 1019, 1020, 1021, 972, 1035, 990, 993, 1053, 987, 974, 922, 1016, 1060, 992, 1049, 983, 1017, 977, 1011, 1011, 993, 961, 1028, 1015, 1038, 995, 969, 973, 1031, 1003, 1024, 971, 969, 1006, 987, 1023, 983, 995, 971, 987, 1008, 978, 1032, 996, 997, 987, 991, 960, 1003, 948, 975, 1018, 1018, 1025, 959, 1009, 1003, 1031, 951, 987, 1001, 1000, 1045, 986, 1009, 1039, 922, 1003, 950, 1049, 1026, 1017, 989, 971, 1019, 992, 1003, 1021, 986, 964, 983, 1015, 1039, 1031, 1019, 957, 980, 1016, 1019, 995, 999, 975, 1021, 1050, 1038, 1013, 984, 1057, 976, 1053, 978, 1002, 925, 961, 1007, 1071, 1005, 953, 1000, 994, 1016, 978, 1024, 987, 988, 981, 1012], [980, 1017, 1054, 968, 1016, 983, 999, 952, 1022, 1009, 975, 932, 1043, 1021, 1007, 1038, 984, 914, 1030, 987, 997, 1005, 992, 928, 939, 960, 1005, 1001, 986, 991, 1010, 943, 1050, 958, 993, 1038, 1015, 1029, 981, 1010, 1002, 1003, 1030, 954, 1051, 984, 1003, 954, 1046, 972, 1005, 998, 971, 1028, 978, 965, 1013, 954, 966, 1016, 980, 994, 972, 963, 1006, 982, 1015, 1000, 993, 1032, 1008, 1033, 1009, 972, 905, 1004, 976, 997, 1020, 989, 1055, 1044, 981, 1023, 981, 963, 971, 996, 967, 999, 958, 1000, 997, 1035, 1038, 1012, 1006, 966, 976, 992, 967, 1007, 1026, 1034, 912, 1004, 1022, 1017, 996, 958, 1030, 1042, 971, 1021, 985, 979, 1018, 1045, 1004, 1039, 1051, 1008, 971, 1036, 972, 1011, 966, 1077, 1035, 918, 982, 1025, 999, 1018, 964, 998, 993, 952, 1036, 1036, 1046, 1014, 944, 994, 902, 942, 995, 1024, 963, 1014, 1005, 1002, 1063, 993, 1009, 977, 1051, 1029, 969, 1013, 994, 1062, 1002, 976, 982, 983, 897, 985, 1026, 997, 1021, 1019, 993, 997, 978, 1020, 990, 1015, 983, 941, 987, 951, 955, 958, 943, 1012, 998, 982, 966, 1011, 962, 1020, 985, 947, 1012, 986, 1026, 975, 999, 978, 1028, 980, 1002, 979, 1021, 1042, 993, 934, 959, 990, 945, 1036, 1015, 1015, 999, 1007, 1018, 1018, 1014, 1028, 1031, 1033, 992, 1000, 1042, 972, 1003, 1006, 1050, 999, 961, 987, 982, 995, 985, 1003, 984, 1065, 1035, 990, 995, 998, 1064, 980, 1015, 1020, 990, 993, 976, 977, 941, 984, 970, 977, 1014, 1040], [1068, 1004, 977, 1002, 960, 977, 1009, 1016, 1011, 1026, 968, 1018, 1028, 1013, 982, 984, 1043, 944, 1011, 1061, 1007, 995, 1011, 1057, 973, 1000, 993, 1039, 1035, 994, 1051, 1055, 974, 983, 1000, 971, 969, 1017, 959, 1013, 1032, 996, 993, 1017, 995, 932, 1051, 965, 1027, 1014, 1006, 951, 972, 955, 980, 972, 1022, 1006, 1014, 1005, 1017, 1037, 1010, 996, 1016, 938, 1043, 996, 1014, 1024, 989, 1053, 1009, 973, 1032, 973, 1032, 980, 999, 986, 986, 964, 967, 985, 1017, 940, 1009, 1016, 992, 996, 971, 1023, 1051, 1038, 986, 953, 937, 1044, 1005, 990, 1011, 1008, 996, 979, 1022, 972, 987, 993, 978, 1092, 939, 959, 1012, 1018, 1069, 988, 990, 1001, 1052, 984, 1013, 990, 1005, 1054, 1011, 1023, 935, 968, 1028, 988, 990, 961, 1004, 1013, 1009, 968, 1043, 983, 1028, 1010, 986, 966, 1037, 1028, 984, 963, 1008, 1012, 984, 966, 967, 1001, 984, 1026, 959, 998, 1044, 1022, 948, 1021, 1108, 1063, 1021, 1038, 1013, 956, 973, 1029, 990, 973, 1056, 991, 1016, 929, 994, 948, 1010, 1012, 1008, 989, 1000, 976, 965, 992, 1015, 980, 977, 993, 1013, 968, 967, 1050, 1007, 940, 1007, 1038, 944, 970, 993, 1022, 968, 994, 970, 977, 1110, 983, 959, 986, 1033, 1040, 972, 1010, 1001, 982, 1021, 987, 1008, 1012, 1029, 950, 1008, 972, 973, 981, 1060, 1003, 1018, 990, 999, 1026, 1017, 986, 1016, 1084, 1010, 1023, 1078, 971, 972, 994, 1036, 1041, 1030, 1025, 963, 965, 997, 930, 925, 968, 947, 991, 981, 1016, 1082, 1003], [949, 992, 1037, 1038, 1011, 1008, 972, 1021, 1003, 1006, 963, 1030, 961, 1010, 1024, 1005, 1030, 1008, 1037, 996, 1020, 949, 1006, 997, 1001, 1043, 978, 955, 971, 1037, 1011, 964, 985, 914, 906, 993, 1002, 1007, 1033, 992, 1073, 1014, 955, 1031, 975, 1000, 1022, 1022, 975, 975, 992, 983, 974, 955, 987, 1024, 1025, 955, 992, 989, 1011, 990, 1005, 950, 1016, 1017, 973, 978, 1002, 995, 995, 994, 960, 964, 1024, 1007, 1020, 1023, 1017, 1019, 934, 1024, 939, 1000, 1018, 1009, 1036, 971, 973, 1052, 969, 1035, 982, 1044, 1006, 987, 1048, 1007, 1065, 1021, 1020, 1053, 1039, 1050, 1014, 964, 961, 1042, 1041, 987, 967, 1005, 976, 965, 999, 969, 959, 1048, 991, 1025, 989, 1035, 966, 1041, 969, 1005, 960, 1049, 991, 989, 1003, 1010, 991, 986, 899, 970, 995, 1022, 1059, 997, 1053, 1030, 998, 1010, 1000, 998, 990, 1039, 972, 956, 919, 1017, 1019, 985, 968, 1039, 1053, 1042, 1002, 944, 1015, 999, 974, 1021, 996, 1001, 980, 983, 997, 1019, 977, 1017, 975, 1000, 1063, 1026, 1050, 1032, 1028, 949, 967, 993, 931, 993, 996, 1020, 1025, 994, 972, 967, 1030, 975, 996, 972, 984, 1021, 949, 1019, 963, 964, 996, 998, 1048, 968, 987, 1004, 983, 981, 1021, 1064, 1017, 997, 1038, 945, 952, 942, 1106, 1027, 1011, 984, 987, 984, 984, 971, 1015, 988, 1009, 1041, 1012, 1011, 1028, 922, 954, 976, 984, 1040, 966, 1042, 996, 951, 976, 1036, 1001, 1094, 978, 1026, 955, 1011, 1017, 1013, 995, 980, 947, 978, 1041, 1008], [979, 988, 985, 1057, 1079, 1030, 999, 1021, 1038, 952, 975, 1007, 1018, 970, 1015, 976, 1007, 990, 1037, 984, 977, 977, 1055, 1028, 1057, 988, 1068, 1070, 998, 995, 996, 978, 964, 1017, 1058, 1022, 1000, 1042, 969, 965, 1011, 1025, 999, 1036, 991, 992, 973, 997, 1000, 1003, 944, 1001, 972, 1035, 976, 1019, 956, 971, 1069, 982, 941, 1059, 1038, 932, 1043, 1028, 1019, 992, 986, 970, 982, 997, 939, 1015, 974, 1019, 1006, 995, 1030, 1040, 977, 956, 1020, 976, 1032, 984, 1032, 967, 1052, 990, 1001, 989, 966, 1027, 1022, 1019, 1032, 1018, 990, 975, 1058, 988, 984, 977, 1016, 1024, 979, 979, 1069, 1023, 1021, 1068, 1012, 982, 1051, 1007, 969, 993, 1032, 1036, 1050, 972, 1008, 982, 1012, 985, 1031, 950, 979, 991, 1024, 984, 1018, 1060, 986, 969, 982, 1011, 1026, 955, 977, 961, 963, 909, 1020, 1010, 988, 1038, 1040, 1000, 994, 1007, 1016, 938, 973, 995, 1021, 1058, 1003, 995, 972, 1021, 989, 985, 987, 1021, 1025, 959, 1013, 1002, 1075, 1019, 1006, 996, 986, 1034, 1016, 1029, 995, 977, 941, 991, 965, 984, 941, 1058, 985, 968, 975, 1013, 1033, 983, 965, 1029, 950, 1004, 993, 1007, 970, 1067, 1029, 1015, 946, 1003, 1038, 954, 992, 1016, 984, 997, 945, 948, 971, 972, 991, 1010, 1044, 1016, 969, 1048, 955, 959, 1037, 998, 1005, 1038, 1016, 1007, 958, 1017, 1046, 1005, 996, 1033, 940, 985, 997, 982, 962, 1035, 1018, 1017, 1009, 1039, 987, 1007, 994, 991, 1011, 987, 982, 965, 1068, 990, 1026, 989], [1010, 949, 978, 995, 1014, 1024, 999, 1028, 958, 948, 996, 967, 1001, 942, 1009, 992, 1003, 935, 985, 1017, 1006, 967, 966, 999, 1008, 1026, 1004, 1026, 967, 951, 980, 1032, 969, 1006, 965, 1027, 1019, 1005, 1030, 990, 1005, 1021, 996, 986, 1021, 1030, 1042, 998, 1021, 1023, 1009, 1000, 978, 991, 1000, 986, 1009, 973, 949, 1037, 1008, 1001, 973, 1009, 1008, 969, 1036, 1005, 948, 1031, 977, 1005, 1050, 1002, 1016, 1077, 1008, 973, 992, 1000, 1026, 1011, 1003, 948, 1013, 989, 1039, 943, 995, 956, 1079, 979, 994, 1002, 1001, 1028, 1011, 1006, 1028, 969, 972, 1004, 994, 1021, 957, 983, 995, 1028, 1002, 1030, 973, 975, 967, 938, 1007, 968, 1040, 989, 995, 1002, 973, 1015, 968, 966, 992, 985, 983, 950, 1010, 1001, 1031, 969, 1033, 983, 994, 1050, 1006, 1028, 919, 991, 1033, 967, 994, 1021, 1000, 1020, 1063, 1004, 995, 993, 984, 989, 995, 1019, 1050, 963, 1017, 971, 969, 994, 1007, 984, 978, 978, 1013, 973, 992, 959, 962, 994, 966, 979, 1019, 1011, 989, 1028, 1021, 1082, 1011, 975, 984, 1001, 989, 1053, 975, 1034, 993, 1022, 980, 1024, 992, 970, 1006, 1010, 997, 999, 1028, 1011, 1027, 983, 1025, 1049, 972, 937, 989, 987, 999, 1022, 1060, 980, 1017, 1070, 965, 994, 990, 959, 1051, 1020, 981, 989, 974, 993, 987, 1000, 993, 981, 1006, 1007, 950, 980, 998, 1032, 989, 1074, 1006, 972, 1044, 1032, 1045, 977, 1028, 997, 957, 994, 926, 1028, 1018, 971, 983, 1025, 977, 1039, 988, 1051, 1011, 1065], [983, 999, 1014, 927, 1004, 1007, 966, 1029, 1010, 1023, 951, 1045, 979, 943, 995, 980, 1048, 1018, 995, 969, 971, 981, 1005, 1043, 1025, 1071, 994, 997, 1002, 1008, 992, 1006, 991, 1004, 995, 1022, 1000, 1006, 1023, 1016, 990, 1010, 1004, 970, 960, 999, 993, 993, 985, 1018, 1050, 1035, 1052, 1013, 1042, 1010, 1016, 1011, 965, 1007, 947, 992, 974, 1008, 994, 1025, 1008, 999, 994, 963, 994, 1017, 953, 1007, 955, 1037, 985, 988, 1054, 1043, 1044, 1019, 1034, 958, 1008, 996, 998, 1077, 1023, 987, 1022, 1002, 968, 990, 1045, 955, 968, 1015, 1014, 1039, 965, 970, 1011, 1043, 1027, 964, 983, 985, 990, 962, 1046, 1034, 1021, 977, 1011, 981, 992, 985, 1009, 976, 988, 994, 1012, 969, 999, 1001, 990, 958, 1005, 1017, 961, 983, 987, 994, 1017, 1035, 1028, 1047, 1042, 1008, 1048, 971, 1013, 967, 1078, 1024, 973, 1018, 958, 1022, 1112, 1019, 1008, 1012, 966, 1008, 926, 1051, 993, 1023, 1053, 1028, 940, 1028, 977, 1012, 1018, 1015, 957, 1033, 993, 1019, 987, 1033, 980, 1010, 962, 997, 1069, 1015, 993, 967, 1035, 957, 935, 1015, 993, 959, 991, 971, 980, 1003, 1035, 947, 1031, 1033, 1003, 1057, 1025, 1002, 967, 1039, 1014, 988, 993, 1011, 1060, 1005, 1040, 975, 1016, 1023, 1004, 1015, 1009, 912, 1049, 1059, 995, 1011, 956, 1029, 1037, 1058, 1003, 1005, 979, 1013, 976, 993, 1004, 1030, 1027, 1023, 968, 1019, 1015, 984, 1044, 1004, 946, 973, 1007, 988, 972, 990, 1052, 984, 965, 977, 998, 979, 985, 949, 996, 1066], [958, 1056, 959, 988, 1002, 997, 992, 1026, 970, 960, 1024, 1045, 1019, 958, 1011, 982, 1048, 994, 929, 994, 981, 998, 1036, 985, 1029, 997, 950, 1091, 1026, 1015, 998, 969, 975, 1023, 1010, 981, 924, 1006, 1023, 1061, 975, 1045, 1052, 995, 960, 1031, 1082, 1030, 1011, 1045, 927, 978, 1021, 1041, 968, 901, 991, 929, 1006, 1000, 960, 1038, 1057, 1032, 991, 967, 1045, 981, 981, 999, 1002, 1006, 1001, 1014, 970, 1047, 996, 1000, 997, 994, 995, 1020, 988, 950, 1015, 1028, 985, 981, 1010, 1036, 1033, 958, 1014, 1044, 989, 938, 971, 972, 1001, 1032, 922, 1027, 1026, 1043, 1043, 974, 997, 1017, 1010, 1014, 1042, 1045, 961, 1010, 971, 968, 998, 1008, 989, 978, 1023, 996, 943, 976, 1001, 957, 925, 967, 950, 963, 1011, 929, 998, 918, 950, 1005, 980, 935, 962, 979, 976, 1021, 999, 1045, 1026, 976, 1006, 1041, 1023, 997, 1002, 1011, 945, 906, 1037, 995, 972, 990, 1048, 932, 994, 1075, 975, 963, 1024, 1007, 1055, 1002, 1047, 961, 943, 1045, 965, 990, 1032, 1001, 979, 1030, 1005, 1037, 1019, 982, 939, 1010, 1066, 964, 1014, 973, 978, 1081, 1030, 1009, 1059, 974, 987, 1035, 1012, 974, 1024, 1009, 1018, 974, 958, 1039, 968, 974, 993, 956, 987, 944, 1031, 994, 1029, 988, 1021, 939, 1029, 951, 1021, 991, 989, 997, 1027, 1007, 996, 1017, 942, 1003, 974, 1023, 976, 1017, 1035, 1008, 984, 1042, 959, 1032, 960, 965, 1013, 981, 1013, 978, 973, 1025, 1004, 1045, 967, 961, 1053, 1016, 945, 1007, 991, 974], [976, 959, 966, 1032, 987, 1040, 940, 954, 959, 997, 1074, 1021, 995, 988, 1007, 983, 1010, 985, 1005, 1006, 1060, 1001, 1068, 1008, 990, 1006, 1022, 1021, 1022, 959, 1003, 961, 963, 1009, 1027, 949, 1017, 958, 1018, 986, 984, 983, 1003, 1001, 986, 1005, 979, 988, 936, 1031, 1057, 1015, 1022, 1027, 950, 1013, 983, 1011, 983, 991, 1022, 967, 1042, 1042, 968, 997, 1006, 985, 1041, 996, 984, 985, 1025, 1050, 1007, 975, 943, 975, 979, 995, 1019, 1042, 1003, 1006, 978, 979, 997, 989, 947, 1009, 981, 999, 1069, 1031, 1037, 1011, 969, 985, 1042, 1008, 1000, 1031, 1004, 965, 982, 1045, 1031, 948, 997, 1034, 1044, 1037, 1049, 999, 1000, 1014, 989, 1028, 985, 953, 999, 1012, 1000, 961, 962, 972, 1019, 1013, 973, 984, 1031, 1056, 996, 1007, 992, 989, 1006, 984, 1002, 1013, 958, 1058, 995, 1013, 1028, 1068, 1068, 1011, 989, 1020, 951, 1028, 974, 993, 940, 1005, 1009, 964, 961, 942, 1054, 975, 984, 1062, 1071, 972, 988, 1035, 964, 1038, 990, 1002, 991, 1025, 990, 998, 1024, 972, 1029, 1021, 1003, 982, 975, 1029, 1029, 975, 976, 978, 982, 971, 1026, 1022, 1000, 1038, 985, 1002, 1020, 971, 1023, 1033, 985, 976, 996, 1019, 1003, 977, 995, 968, 957, 986, 995, 1016, 1036, 945, 993, 1012, 987, 1020, 1005, 965, 984, 954, 964, 958, 1023, 1028, 1008, 1015, 1015, 960, 950, 998, 999, 1000, 966, 1027, 950, 1028, 1007, 974, 993, 969, 958, 1020, 1031, 966, 961, 986, 945, 1002, 955, 1001, 986, 1077, 1053, 992], [1020, 992, 981, 967, 938, 1047, 997, 1025, 974, 950, 976, 1006, 962, 1006, 1038, 987, 982, 940, 1054, 1063, 1020, 1040, 970, 991, 985, 1027, 1025, 982, 1032, 986, 1036, 1018, 975, 1029, 988, 945, 981, 1021, 994, 988, 1043, 977, 1034, 958, 1040, 1025, 985, 998, 1050, 964, 994, 1007, 1034, 989, 969, 964, 1028, 1043, 1043, 1039, 1041, 974, 1002, 1001, 1010, 1044, 1016, 1017, 965, 997, 965, 985, 972, 951, 1017, 1017, 987, 989, 1021, 1034, 1058, 975, 964, 997, 991, 1021, 972, 1029, 1019, 1027, 958, 1059, 1001, 1006, 1028, 1010, 1025, 999, 952, 1010, 961, 1022, 1007, 1008, 1014, 950, 974, 1036, 968, 982, 954, 977, 995, 970, 966, 996, 991, 974, 953, 1015, 1008, 988, 963, 1013, 987, 988, 933, 1044, 983, 984, 1000, 995, 1029, 959, 1049, 1020, 998, 1025, 987, 1008, 1004, 1032, 1003, 991, 1041, 983, 977, 1025, 926, 1010, 1031, 1018, 966, 1029, 1016, 972, 993, 998, 1035, 994, 980, 1030, 1020, 997, 1009, 1013, 935, 992, 978, 984, 1010, 1031, 992, 1010, 960, 984, 981, 950, 1042, 1029, 1008, 1035, 1057, 975, 932, 984, 995, 1005, 974, 1021, 974, 1003, 999, 1012, 1014, 973, 1022, 1052, 1005, 967, 1064, 996, 978, 1011, 1022, 976, 1035, 1026, 963, 973, 992, 1016, 934, 994, 991, 1010, 1055, 1004, 915, 992, 1010, 962, 1011, 1045, 1010, 990, 1004, 1047, 1043, 989, 974, 1007, 1000, 1013, 1023, 1032, 1009, 993, 958, 990, 954, 1005, 1033, 976, 965, 967, 966, 1011, 953, 990, 1004, 1012, 1038, 963, 994, 982], [1013, 994, 1047, 1057, 1027, 995, 1021, 1004, 1006, 1003, 1008, 998, 1042, 1031, 1046, 961, 1024, 993, 992, 951, 977, 1071, 1001, 1010, 996, 988, 952, 981, 1039, 999, 998, 1018, 1063, 1039, 935, 1060, 1006, 976, 1013, 955, 965, 1025, 990, 1024, 926, 1046, 976, 1019, 1023, 952, 1092, 1005, 998, 975, 968, 969, 966, 998, 1067, 958, 994, 1043, 1031, 994, 1014, 991, 957, 1029, 984, 991, 997, 942, 981, 967, 1046, 1036, 1004, 1013, 997, 1066, 996, 993, 1009, 1025, 1023, 1060, 1025, 984, 995, 991, 1049, 982, 993, 994, 1045, 1031, 969, 998, 982, 974, 955, 1026, 982, 967, 1040, 1039, 924, 972, 1087, 984, 1030, 1100, 1000, 972, 957, 1037, 954, 965, 1003, 1048, 1006, 1030, 991, 1025, 997, 1022, 990, 975, 985, 1022, 1017, 992, 982, 1031, 1058, 1034, 1037, 979, 1036, 952, 998, 998, 1040, 1017, 1032, 1029, 1035, 999, 966, 1043, 980, 1002, 1022, 1006, 1018, 978, 966, 987, 928, 1004, 1040, 1003, 945, 965, 1020, 973, 1067, 950, 988, 959, 1003, 990, 1010, 994, 1042, 1024, 1041, 1024, 1006, 1079, 999, 957, 1051, 1001, 976, 1033, 1018, 976, 1015, 962, 985, 985, 987, 1005, 1036, 919, 999, 1000, 1027, 1048, 1019, 1017, 1011, 1014, 1081, 1013, 1026, 979, 984, 975, 1015, 937, 1013, 950, 1041, 1082, 1044, 978, 1037, 983, 1024, 1025, 1034, 997, 1005, 1007, 986, 1019, 1017, 1032, 1027, 1016, 1030, 1015, 974, 987, 981, 971, 980, 983, 1019, 1032, 993, 1046, 977, 1022, 957, 1011, 978, 1045, 1069, 987, 1011, 1005, 1004, 1006], [1015, 1022, 1008, 988, 1071, 1002, 1021, 1001, 962, 1054, 970, 1022, 1046, 969, 1015, 1016, 1022, 965, 1008, 984, 1010, 993, 1037, 991, 1017, 1017, 1018, 1052, 975, 980, 974, 1051, 968, 1015, 1015, 1028, 1009, 1005, 970, 979, 972, 1015, 1040, 1063, 991, 988, 1006, 971, 1011, 1013, 1012, 1063, 1071, 954, 976, 1026, 948, 1021, 1011, 1022, 1010, 962, 1018, 943, 1027, 1028, 995, 951, 1053, 984, 1054, 985, 1041, 994, 1021, 1008, 1034, 993, 989, 1037, 993, 1031, 988, 1001, 993, 983, 990, 998, 1081, 972, 978, 1023, 1013, 969, 992, 1003, 928, 967, 996, 995, 1033, 1026, 1002, 982, 1002, 950, 934, 1034, 1028, 993, 950, 995, 948, 928, 986, 1004, 1005, 961, 1029, 979, 974, 1056, 1051, 1005, 1028, 979, 1054, 1006, 997, 1023, 1006, 983, 985, 1072, 1013, 1030, 1018, 980, 974, 1065, 1021, 1012, 1026, 960, 977, 1033, 1036, 1018, 1018, 1051, 1028, 972, 1021, 1033, 1013, 998, 918, 1040, 1003, 999, 950, 996, 1012, 1059, 981, 1013, 973, 1013, 1036, 967, 982, 1031, 994, 992, 1011, 974, 991, 1011, 991, 978, 1044, 1020, 1035, 1029, 953, 1027, 1041, 1034, 967, 975, 972, 988, 968, 979, 1020, 998, 1026, 952, 967, 1013, 987, 1034, 1009, 951, 1019, 1030, 1044, 1031, 1011, 992, 997, 1020, 980, 981, 993, 1003, 1005, 993, 1013, 1004, 1003, 1048, 986, 992, 954, 1046, 973, 1018, 1023, 1012, 1005, 1011, 1005, 914, 1017, 1008, 991, 994, 989, 964, 951, 979, 1024, 938, 970, 994, 997, 982, 1002, 983, 1014, 1058, 1055, 946, 1018, 1002], [999, 1052, 983, 967, 970, 953, 1027, 982, 969, 997, 1002, 981, 983, 1004, 1004, 1001, 957, 1017, 997, 1022, 1013, 987, 1035, 1004, 954, 974, 973, 971, 986, 1036, 1001, 910, 984, 1038, 969, 998, 1003, 1059, 972, 962, 993, 996, 1055, 1009, 997, 961, 958, 1017, 1006, 940, 1014, 991, 985, 979, 993, 984, 978, 972, 1002, 932, 1006, 951, 1010, 980, 1015, 1009, 976, 1013, 1011, 992, 1025, 1048, 968, 1043, 1052, 1004, 922, 1003, 964, 1020, 974, 997, 996, 967, 1024, 1017, 1032, 997, 994, 1071, 989, 973, 968, 1053, 1002, 993, 978, 1061, 987, 959, 988, 976, 973, 1016, 1040, 935, 1023, 1025, 984, 1012, 1015, 998, 1054, 1024, 1022, 991, 1025, 1020, 1053, 945, 1020, 983, 956, 978, 984, 950, 1083, 979, 1020, 965, 982, 998, 1012, 982, 977, 999, 1023, 950, 1030, 1051, 974, 947, 974, 1041, 1065, 950, 984, 1023, 1022, 1000, 996, 1068, 1050, 1041, 978, 1008, 1046, 1012, 970, 1004, 1031, 977, 1020, 1061, 985, 976, 1015, 1010, 1051, 947, 974, 1056, 987, 964, 987, 1008, 1048, 973, 997, 954, 1002, 989, 940, 1070, 982, 988, 1050, 1023, 1060, 1044, 956, 991, 1026, 1001, 1028, 1031, 1009, 1041, 971, 968, 967, 984, 1087, 964, 995, 998, 937, 997, 1036, 999, 1000, 1005, 956, 960, 980, 1001, 1008, 980, 1011, 1026, 1025, 1056, 1026, 988, 1028, 953, 957, 1019, 969, 1029, 1004, 1052, 976, 1018, 1031, 1016, 1023, 990, 1023, 998, 941, 1001, 974, 1023, 1027, 1002, 962, 992, 978, 995, 977, 1055, 985, 1038, 1029, 1011], [991, 956, 942, 1025, 1107, 1022, 986, 961, 973, 997, 1002, 992, 1003, 968, 964, 951, 1007, 1000, 951, 1041, 1001, 975, 1031, 974, 1023, 971, 1011, 997, 1015, 1050, 957, 1014, 1031, 1007, 951, 984, 1006, 1003, 1021, 1014, 985, 1050, 980, 949, 1020, 997, 1029, 1016, 961, 1022, 1013, 959, 1036, 999, 1017, 979, 966, 981, 999, 967, 954, 995, 1003, 999, 928, 1045, 951, 972, 1050, 1018, 989, 962, 1030, 965, 985, 1043, 969, 943, 957, 1007, 957, 986, 995, 977, 984, 1020, 989, 1027, 967, 1060, 977, 929, 977, 1064, 975, 1027, 980, 981, 999, 958, 977, 983, 991, 969, 965, 976, 983, 1031, 959, 1016, 976, 1010, 1004, 1010, 948, 994, 982, 978, 1035, 931, 955, 983, 999, 1041, 949, 1010, 1028, 988, 995, 1060, 1056, 983, 984, 1046, 1072, 1042, 998, 1010, 969, 965, 999, 1011, 1049, 1022, 1045, 939, 1018, 997, 977, 1052, 947, 998, 968, 968, 1015, 1019, 1034, 983, 962, 966, 1046, 988, 952, 998, 1039, 986, 1051, 940, 965, 1039, 973, 1037, 1040, 975, 1025, 1019, 1015, 948, 1037, 949, 1022, 1004, 992, 991, 1010, 1079, 1015, 1026, 1021, 1010, 994, 997, 995, 995, 996, 997, 983, 977, 1045, 986, 1016, 1039, 989, 1010, 1049, 974, 998, 1021, 989, 1008, 1026, 986, 990, 983, 988, 976, 976, 977, 998, 1026, 1039, 1034, 1052, 972, 1014, 1004, 979, 1029, 1038, 1025, 1016, 1084, 979, 1021, 994, 1028, 1018, 972, 1005, 989, 995, 986, 971, 959, 962, 959, 989, 1000, 1006, 983, 947, 1026, 982, 978, 979, 964], [953, 985, 971, 1038, 995, 953, 1063, 944, 979, 951, 1000, 1007, 956, 1005, 962, 980, 1021, 989, 1005, 997, 955, 992, 1077, 1009, 1022, 982, 1003, 1014, 963, 1022, 1008, 1012, 1023, 985, 974, 989, 988, 963, 1048, 1039, 1032, 957, 1000, 1025, 1018, 1022, 951, 1052, 1010, 980, 1043, 996, 982, 952, 1009, 1017, 1028, 1010, 999, 1026, 1003, 982, 999, 1025, 1039, 1029, 988, 1016, 1017, 984, 942, 974, 1043, 948, 1012, 1011, 1011, 1015, 962, 1017, 992, 963, 954, 950, 1025, 983, 987, 1018, 1003, 1047, 974, 1019, 1067, 1041, 1026, 1053, 972, 992, 980, 1030, 971, 994, 990, 1000, 1031, 1006, 1037, 957, 993, 1053, 969, 993, 987, 1028, 1019, 1012, 993, 1034, 990, 1022, 953, 974, 1046, 979, 1030, 1041, 1010, 980, 1000, 960, 951, 1026, 965, 967, 955, 1009, 1025, 940, 1026, 1022, 990, 968, 1011, 989, 1014, 1004, 939, 943, 1026, 1026, 979, 1016, 1012, 979, 990, 978, 967, 1052, 1025, 984, 1019, 943, 1003, 947, 1023, 1004, 988, 959, 955, 1021, 981, 1019, 968, 1017, 1031, 958, 1016, 1024, 1072, 975, 965, 994, 1069, 980, 1010, 966, 1001, 1009, 1028, 1026, 974, 1072, 974, 1001, 982, 960, 989, 1014, 1014, 982, 944, 945, 967, 1000, 1015, 986, 1040, 931, 1039, 1073, 1033, 975, 1026, 976, 1027, 1005, 1026, 978, 984, 979, 1007, 1023, 956, 968, 1033, 1009, 1034, 1010, 942, 980, 1051, 1019, 972, 1022, 991, 974, 1042, 1028, 1039, 997, 967, 1024, 975, 1070, 980, 954, 1004, 979, 956, 967, 1010, 1045, 993, 1001, 990, 964], [948, 990, 978, 1021, 970, 1027, 905, 961, 933, 1046, 1019, 1002, 990, 988, 1045, 992, 1008, 977, 951, 992, 998, 994, 959, 1038, 985, 996, 1060, 989, 1005, 1025, 1039, 943, 963, 974, 1025, 992, 970, 954, 987, 993, 973, 970, 1013, 1008, 1039, 991, 1043, 1026, 993, 928, 987, 921, 960, 970, 940, 973, 982, 1043, 972, 990, 998, 995, 953, 959, 968, 1002, 1054, 953, 1022, 963, 998, 988, 1002, 973, 1004, 984, 1002, 1059, 1051, 1044, 1016, 1014, 969, 1043, 973, 996, 972, 994, 957, 971, 991, 1025, 984, 1044, 1001, 1029, 973, 952, 1020, 1018, 978, 1004, 1035, 963, 1015, 953, 943, 1011, 927, 985, 1005, 1003, 987, 988, 990, 1002, 991, 1094, 1007, 989, 976, 988, 959, 1024, 1036, 984, 962, 1018, 963, 1014, 988, 982, 1031, 1037, 977, 975, 1047, 969, 963, 969, 1006, 1042, 939, 986, 998, 1000, 1002, 1021, 945, 961, 943, 972, 999, 963, 1001, 965, 966, 994, 998, 953, 957, 1039, 1078, 981, 1018, 997, 1055, 1063, 989, 990, 998, 970, 1041, 976, 1011, 1063, 1032, 1019, 1051, 938, 945, 1056, 1007, 1022, 985, 1006, 943, 1113, 1023, 969, 948, 1021, 1010, 1035, 965, 1018, 1020, 1014, 1032, 1049, 937, 965, 938, 987, 1001, 993, 1007, 1013, 1035, 955, 983, 974, 1043, 1027, 980, 1059, 1012, 944, 912, 974, 1010, 1024, 1036, 1042, 979, 988, 1009, 961, 1001, 1019, 1059, 988, 996, 1010, 1004, 906, 1061, 1021, 1058, 1015, 1030, 1020, 952, 983, 995, 970, 924, 1007, 929, 1028, 958, 981, 1007, 954, 998, 931], [1022, 983, 988, 928, 1012, 1054, 1019, 963, 968, 1024, 952, 977, 1020, 1004, 994, 1041, 964, 923, 964, 993, 1010, 980, 1071, 987, 939, 997, 1006, 960, 1035, 1012, 1025, 989, 1056, 1075, 989, 1037, 1012, 1010, 968, 979, 1051, 981, 948, 998, 937, 1002, 981, 990, 1024, 1036, 1025, 1010, 1008, 1044, 1012, 1018, 987, 1037, 1007, 1001, 972, 1057, 1019, 997, 986, 1005, 1025, 1008, 1027, 1036, 1005, 990, 1036, 974, 923, 998, 981, 971, 1059, 991, 962, 958, 1007, 936, 1022, 1046, 989, 1041, 977, 981, 970, 1048, 1021, 1029, 1009, 989, 1030, 1031, 1004, 996, 1045, 1030, 985, 1015, 1037, 996, 1015, 987, 959, 994, 1028, 965, 1002, 1010, 982, 1011, 970, 1001, 1022, 980, 995, 1005, 1004, 992, 982, 994, 1018, 1005, 994, 1021, 1010, 999, 1004, 1009, 968, 994, 1012, 971, 1017, 1027, 983, 971, 1038, 1083, 1012, 994, 962, 1014, 1057, 1040, 924, 978, 1013, 1025, 1038, 994, 993, 1009, 1010, 992, 1001, 958, 1006, 1017, 974, 978, 1011, 1004, 1073, 1005, 974, 978, 992, 994, 1040, 947, 996, 995, 1008, 1014, 1050, 1039, 1013, 1019, 968, 967, 1019, 1013, 1081, 1016, 1050, 1015, 963, 1026, 990, 1000, 1024, 1004, 1018, 987, 1023, 1001, 1038, 991, 981, 994, 1023, 995, 980, 954, 1001, 995, 1011, 1006, 1032, 1012, 986, 983, 1060, 942, 1036, 1012, 1005, 1038, 982, 1011, 1020, 959, 959, 998, 998, 1007, 999, 1033, 991, 1023, 1022, 1068, 1006, 1029, 981, 1000, 1025, 1026, 989, 1037, 990, 1042, 969, 987, 1004, 994, 977, 1053, 1044, 995], [972, 981, 985, 993, 1028, 1017, 1065, 961, 980, 1003, 1005, 950, 1054, 1027, 1059, 1003, 1041, 1047, 1029, 996, 959, 1024, 983, 1040, 1053, 1043, 1037, 978, 998, 966, 945, 991, 975, 1012, 981, 1038, 1044, 1037, 1049, 1008, 971, 1048, 1048, 991, 984, 990, 1021, 1010, 965, 1038, 997, 961, 1020, 988, 997, 996, 998, 947, 987, 967, 961, 1002, 965, 1021, 976, 1024, 983, 925, 1037, 1028, 987, 983, 1016, 984, 939, 1043, 973, 950, 1031, 955, 1012, 995, 984, 963, 922, 1032, 1004, 994, 1029, 1066, 1002, 1027, 1002, 978, 1049, 1023, 985, 1002, 983, 1036, 1010, 998, 1002, 981, 1022, 1040, 1077, 998, 1037, 1026, 956, 986, 1020, 940, 1000, 937, 991, 998, 1014, 1024, 998, 1045, 989, 991, 1014, 1047, 961, 950, 945, 974, 955, 964, 973, 984, 1002, 937, 992, 1034, 1046, 1087, 1062, 1007, 983, 1010, 982, 993, 1020, 995, 945, 1012, 968, 998, 1015, 978, 990, 980, 982, 1000, 994, 1022, 975, 1013, 1037, 1002, 997, 996, 1025, 1034, 966, 1003, 995, 1009, 1002, 968, 1002, 1004, 963, 988, 1046, 999, 999, 993, 1000, 996, 1027, 998, 1044, 1061, 978, 996, 958, 962, 985, 987, 993, 1024, 943, 942, 1020, 962, 979, 1001, 1034, 962, 1014, 1014, 994, 983, 983, 952, 1009, 1060, 957, 974, 1027, 1045, 1039, 997, 1031, 1022, 997, 1035, 989, 988, 1018, 1032, 1029, 960, 1010, 1070, 1014, 932, 1026, 995, 1011, 961, 939, 998, 1006, 1045, 1008, 997, 1008, 1015, 960, 1014, 1001, 1040, 990, 1011, 992, 1032, 1007, 920, 1041, 1006], [995, 1007, 1018, 996, 937, 983, 927, 960, 1027, 983, 1015, 1031, 989, 1018, 1057, 1010, 1015, 961, 1000, 983, 1029, 982, 1036, 1033, 989, 963, 996, 1035, 1054, 1001, 1034, 975, 974, 990, 977, 1015, 944, 1038, 1017, 1051, 991, 1024, 1029, 969, 980, 1026, 977, 982, 991, 990, 1080, 1051, 978, 1053, 1029, 972, 1006, 1001, 1046, 1016, 978, 1001, 997, 1037, 989, 1028, 1024, 1004, 1004, 1015, 1008, 1034, 1007, 1042, 1017, 981, 1032, 996, 1047, 982, 1020, 1058, 1030, 951, 1008, 1036, 1023, 1010, 973, 989, 1056, 993, 1016, 977, 960, 975, 999, 972, 991, 1018, 1017, 1036, 918, 1040, 1029, 996, 996, 943, 986, 1040, 1031, 972, 1008, 980, 966, 1013, 947, 993, 992, 976, 977, 1017, 1007, 950, 1001, 1018, 982, 1009, 1000, 974, 998, 1017, 1047, 993, 1015, 993, 973, 1030, 1032, 977, 1031, 943, 972, 1008, 990, 950, 1014, 943, 986, 1054, 982, 1031, 970, 997, 1026, 1019, 933, 1038, 1052, 994, 999, 1006, 953, 959, 1011, 990, 959, 1004, 1028, 1036, 1003, 1010, 988, 1019, 949, 1015, 986, 1056, 1033, 1084, 959, 1014, 1016, 950, 1022, 1032, 965, 1038, 978, 992, 1005, 938, 1023, 1021, 990, 973, 1001, 994, 968, 1037, 973, 965, 955, 1019, 1027, 996, 1003, 1023, 1005, 963, 971, 984, 1039, 1017, 1004, 1013, 988, 947, 1024, 983, 999, 978, 957, 960, 999, 1003, 931, 982, 997, 1047, 1022, 1088, 1044, 994, 1023, 1001, 995, 1027, 996, 1013, 1000, 933, 966, 1007, 983, 952, 1015, 987, 973, 1038, 993, 1024, 962, 1005, 1023, 944], [1062, 1014, 1000, 1004, 973, 1035, 977, 903, 1021, 1018, 995, 1023, 1039, 1024, 954, 981, 1007, 961, 1019, 972, 969, 980, 964, 1007, 1015, 1004, 977, 975, 967, 957, 987, 980, 961, 1039, 987, 994, 1078, 1044, 985, 1011, 1029, 1028, 1005, 988, 997, 1058, 1030, 1043, 973, 1029, 972, 998, 995, 1017, 1004, 970, 1082, 992, 1036, 1040, 989, 1061, 985, 965, 975, 905, 997, 1048, 1019, 1009, 1014, 1030, 1038, 958, 1019, 1030, 959, 986, 1032, 1029, 1027, 1007, 1028, 1004, 1018, 984, 989, 984, 1048, 994, 1015, 1014, 988, 990, 1027, 976, 977, 1002, 986, 1029, 957, 1080, 993, 1022, 1011, 1006, 1021, 1003, 1056, 1002, 1048, 1016, 1000, 1005, 1018, 986, 951, 956, 1006, 977, 1041, 1009, 959, 1026, 992, 982, 1036, 970, 1009, 1014, 1024, 977, 975, 1048, 964, 962, 989, 999, 994, 962, 1018, 985, 987, 1006, 961, 1031, 980, 1035, 952, 1015, 984, 1026, 987, 1001, 1002, 1061, 1048, 988, 1001, 992, 1043, 1040, 977, 977, 965, 1021, 1006, 990, 1006, 1016, 974, 1015, 999, 990, 972, 974, 1003, 966, 1052, 1037, 1019, 1025, 984, 1059, 1014, 987, 1000, 987, 1010, 1030, 1012, 976, 1075, 1053, 972, 944, 1017, 987, 969, 977, 1036, 1075, 953, 985, 978, 985, 1000, 1006, 1067, 974, 1000, 943, 955, 1068, 1029, 949, 1000, 1024, 988, 977, 992, 1002, 1013, 1020, 972, 1041, 987, 1009, 1044, 997, 1036, 980, 1036, 1027, 1006, 974, 977, 987, 1018, 998, 997, 987, 980, 998, 1076, 1021, 926, 1035, 1011, 972, 1003, 992, 999, 970, 1034, 974], [1036, 1016, 1004, 990, 993, 970, 1009, 1037, 1002, 1015, 984, 996, 1024, 1002, 1052, 1008, 983, 971, 948, 964, 991, 999, 1027, 1025, 1038, 1020, 982, 1014, 1024, 1036, 1033, 975, 967, 983, 1031, 1061, 997, 1016, 1028, 955, 986, 968, 1007, 972, 982, 974, 1011, 1031, 961, 979, 1034, 1027, 989, 1009, 1040, 1023, 1001, 954, 1034, 1001, 1011, 998, 1024, 995, 976, 1004, 1019, 1040, 948, 998, 959, 982, 1002, 960, 1008, 1022, 973, 981, 998, 1022, 989, 986, 1044, 988, 1013, 976, 933, 1016, 1006, 947, 1034, 981, 959, 987, 987, 1012, 955, 1072, 1045, 985, 997, 1000, 988, 1010, 1012, 1051, 1029, 1033, 1023, 1037, 1027, 989, 1018, 977, 1039, 1013, 1018, 980, 1037, 1013, 1018, 979, 988, 999, 987, 972, 1003, 1008, 1031, 1042, 1002, 1006, 1033, 990, 1031, 1054, 1033, 949, 1050, 1074, 1027, 975, 1025, 1014, 942, 1040, 947, 963, 986, 1004, 1009, 981, 991, 950, 961, 1037, 1048, 961, 1036, 959, 1013, 1012, 983, 998, 997, 1063, 984, 984, 955, 1026, 984, 1003, 987, 1010, 1005, 1025, 1023, 998, 1010, 955, 956, 1051, 982, 981, 978, 950, 1047, 1014, 984, 979, 1021, 961, 1024, 1017, 999, 1014, 966, 955, 1071, 1027, 1004, 1006, 1009, 985, 992, 1078, 1042, 979, 949, 1019, 994, 1004, 995, 998, 963, 1026, 1023, 972, 1058, 988, 954, 988, 1021, 1011, 966, 983, 998, 978, 975, 1037, 1004, 1036, 1070, 990, 1009, 959, 1047, 973, 985, 1049, 975, 1005, 995, 935, 932, 952, 972, 1030, 952, 928, 934, 1000, 973, 1073, 1009, 1054], [971, 977, 1022, 958, 1042, 1022, 972, 1025, 994, 992, 990, 1015, 1009, 981, 998, 1031, 974, 1016, 963, 1031, 1001, 1046, 992, 1008, 1051, 1038, 950, 1019, 1085, 967, 1018, 1014, 964, 978, 972, 996, 962, 1040, 949, 1047, 1001, 981, 995, 1010, 989, 965, 1022, 978, 1021, 1026, 1030, 967, 967, 985, 947, 978, 988, 1016, 992, 947, 1049, 1007, 1000, 1010, 952, 979, 986, 1025, 1054, 971, 1040, 1012, 952, 1045, 1041, 1014, 976, 969, 1027, 994, 1055, 1039, 1026, 959, 1036, 1016, 985, 1023, 976, 1006, 955, 1053, 996, 1037, 1007, 964, 999, 1024, 1006, 1006, 932, 966, 1003, 948, 1045, 1010, 1000, 977, 1001, 1014, 1010, 978, 971, 996, 1022, 965, 1061, 956, 1067, 979, 966, 970, 1054, 935, 997, 987, 1048, 1056, 964, 980, 1016, 995, 1063, 977, 990, 988, 1001, 968, 1013, 968, 974, 1012, 1033, 980, 1052, 995, 1032, 975, 1007, 991, 1008, 938, 1044, 982, 985, 1075, 954, 968, 1026, 1027, 991, 992, 1053, 1020, 1031, 1034, 1039, 1005, 966, 1001, 968, 983, 987, 968, 956, 1021, 980, 1016, 970, 997, 1040, 1020, 989, 980, 1004, 985, 1016, 972, 987, 1007, 985, 999, 1006, 1048, 1016, 1020, 1042, 1015, 1010, 988, 1076, 1035, 1018, 1009, 1030, 1002, 1007, 1040, 972, 1014, 964, 1023, 972, 1001, 1011, 957, 1042, 994, 1011, 1027, 958, 975, 972, 1001, 1007, 1012, 993, 961, 1029, 969, 1039, 960, 1048, 993, 1023, 1014, 987, 1004, 960, 1010, 961, 973, 996, 978, 996, 1055, 999, 999, 1019, 1006, 993, 995, 1000, 1035, 1042, 1043], [1023, 1036, 1059, 1004, 988, 1006, 1028, 985, 1021, 1063, 1014, 1002, 1048, 927, 913, 994, 1007, 980, 1032, 979, 1021, 969, 999, 1017, 998, 963, 982, 1025, 1002, 944, 1042, 983, 977, 945, 1003, 1044, 1041, 972, 954, 988, 943, 970, 974, 980, 997, 1003, 972, 1021, 1081, 962, 932, 1012, 995, 955, 1054, 997, 983, 1001, 987, 1010, 1041, 992, 973, 948, 963, 993, 1031, 1021, 992, 933, 964, 966, 1033, 962, 958, 983, 978, 1018, 1029, 937, 999, 1002, 984, 1061, 1037, 1019, 1014, 1013, 1021, 1000, 1067, 999, 989, 1044, 1044, 1009, 967, 989, 1022, 1019, 996, 1026, 1001, 992, 1003, 1043, 1014, 1029, 1036, 977, 991, 966, 1047, 1058, 947, 1037, 945, 972, 980, 1004, 959, 973, 1039, 1038, 971, 1019, 1017, 1048, 1061, 959, 1009, 1038, 993, 957, 955, 974, 982, 1032, 971, 1054, 1052, 970, 1005, 980, 992, 1026, 995, 1033, 940, 990, 1009, 974, 1036, 984, 1013, 996, 1011, 1004, 1005, 1014, 1004, 1029, 1003, 963, 970, 1013, 1007, 1005, 972, 982, 982, 953, 1015, 1016, 930, 1051, 990, 1022, 1017, 1035, 1033, 1016, 1038, 1004, 1035, 1031, 972, 1020, 1029, 1004, 1021, 1002, 1014, 976, 1007, 963, 1021, 1005, 1010, 1039, 1003, 1006, 1037, 1015, 990, 1043, 932, 981, 1011, 1031, 996, 1005, 1010, 1015, 994, 1009, 1000, 984, 953, 992, 989, 982, 981, 1033, 1006, 987, 1012, 975, 973, 978, 1044, 955, 978, 948, 974, 1027, 1011, 1002, 985, 1004, 980, 939, 955, 981, 991, 1015, 1011, 1032, 982, 1001, 966, 1030, 996, 993, 935, 1004], [980, 993, 1012, 988, 1036, 988, 995, 993, 1010, 1039, 1002, 1044, 933, 991, 952, 1023, 960, 1019, 923, 1051, 981, 977, 959, 1050, 1020, 943, 934, 980, 970, 987, 917, 991, 1006, 1028, 998, 977, 952, 993, 975, 990, 1011, 996, 1014, 1039, 972, 996, 1019, 967, 1010, 1001, 953, 974, 1023, 983, 1018, 1001, 991, 980, 996, 922, 1056, 967, 1005, 1016, 1020, 971, 978, 971, 984, 996, 1050, 1026, 998, 956, 974, 1018, 1053, 996, 947, 976, 1036, 992, 974, 989, 970, 984, 1040, 1009, 998, 982, 1036, 988, 1013, 1072, 963, 1001, 1001, 1026, 1069, 1025, 982, 985, 990, 1020, 1047, 1005, 1055, 996, 1038, 989, 971, 1034, 1057, 1030, 1016, 1029, 1037, 1028, 987, 1027, 998, 1007, 941, 1036, 1021, 960, 986, 1019, 976, 974, 982, 931, 1024, 1006, 987, 1045, 962, 1019, 921, 992, 973, 1023, 1006, 984, 960, 1016, 1009, 1020, 1014, 988, 945, 985, 1023, 1006, 995, 1012, 980, 1056, 988, 960, 1003, 991, 972, 1020, 984, 1032, 942, 1044, 995, 963, 1041, 921, 980, 996, 954, 966, 1000, 1019, 999, 971, 996, 1001, 1039, 1065, 1007, 972, 1006, 972, 1032, 1024, 1008, 1017, 1004, 967, 942, 983, 977, 993, 1008, 1026, 997, 955, 968, 985, 995, 1067, 967, 998, 1011, 963, 1005, 1020, 985, 966, 1003, 1010, 975, 1001, 995, 1010, 975, 1024, 993, 1008, 989, 1005, 936, 961, 1037, 969, 1031, 1020, 976, 992, 1015, 1051, 1001, 1009, 1029, 1061, 1024, 1010, 998, 1009, 1016, 1024, 953, 943, 972, 1001, 988, 1011, 998, 1006, 1010, 1043], [1033, 997, 983, 1005, 1022, 919, 1045, 991, 1042, 1025, 962, 993, 1102, 993, 968, 1001, 977, 1022, 1011, 963, 988, 1008, 1007, 997, 993, 987, 1040, 1033, 989, 973, 970, 997, 1018, 980, 1030, 968, 977, 956, 959, 996, 999, 956, 993, 953, 1014, 978, 959, 939, 1014, 1040, 941, 998, 966, 995, 1028, 1020, 1029, 1012, 1056, 1017, 1007, 1027, 1009, 967, 994, 991, 941, 974, 937, 1021, 979, 1004, 972, 975, 1055, 1020, 960, 998, 1020, 989, 995, 969, 1032, 1030, 926, 1014, 991, 964, 984, 1011, 1026, 1011, 932, 969, 1060, 998, 991, 968, 965, 982, 977, 1081, 975, 960, 1009, 1001, 1069, 1021, 977, 1036, 970, 1002, 1041, 1027, 953, 982, 1022, 1000, 997, 1035, 980, 1019, 1011, 917, 1030, 984, 960, 985, 978, 1004, 1007, 1025, 953, 1006, 950, 969, 951, 970, 1019, 1001, 975, 998, 964, 955, 1002, 1018, 957, 1009, 953, 973, 1014, 1004, 996, 926, 1039, 992, 975, 1023, 990, 974, 994, 929, 981, 1022, 964, 937, 1016, 1012, 1003, 1031, 1010, 974, 980, 1033, 1028, 994, 1035, 983, 1061, 1007, 971, 1012, 980, 981, 993, 1030, 1013, 1023, 1039, 950, 973, 1024, 958, 981, 980, 973, 1054, 1016, 1049, 1038, 1000, 1016, 1054, 1003, 1006, 1003, 1006, 989, 1052, 974, 979, 1026, 1039, 998, 1014, 1009, 1021, 1026, 948, 961, 995, 1033, 975, 981, 1000, 980, 964, 1006, 1013, 994, 988, 988, 1017, 978, 995, 1017, 1035, 1010, 1046, 1013, 979, 1034, 994, 1038, 969, 987, 971, 956, 1004, 989, 959, 1000, 969, 1026, 1008, 1001], [997, 988, 996, 959, 1003, 967, 998, 1032, 1030, 954, 953, 1049, 998, 956, 1032, 1000, 952, 999, 1017, 1023, 1016, 1002, 1042, 949, 1061, 1035, 1033, 963, 950, 966, 975, 997, 945, 1049, 960, 1009, 981, 1004, 1006, 1004, 1008, 960, 996, 993, 975, 974, 929, 959, 1022, 1012, 1039, 979, 1020, 988, 973, 1050, 975, 1025, 1005, 996, 1038, 964, 1025, 996, 1051, 995, 999, 990, 1015, 989, 1039, 978, 956, 1016, 974, 1032, 1079, 966, 1043, 978, 977, 988, 985, 1010, 1045, 987, 985, 976, 1000, 1048, 1017, 990, 1001, 1033, 1031, 986, 961, 996, 1043, 965, 1008, 1023, 1020, 967, 981, 942, 988, 934, 1023, 996, 962, 1001, 959, 963, 1046, 994, 1047, 993, 993, 1039, 1002, 1002, 1017, 1054, 986, 988, 1000, 958, 1006, 967, 1044, 957, 1008, 987, 1023, 947, 978, 1028, 1011, 1030, 1020, 1023, 994, 978, 956, 1002, 1043, 1035, 1006, 987, 1052, 992, 965, 1030, 962, 989, 987, 1040, 996, 1026, 970, 1010, 989, 996, 991, 1006, 988, 981, 1000, 1021, 991, 970, 981, 991, 993, 952, 929, 1027, 1007, 1040, 1003, 1041, 1018, 982, 981, 1012, 1007, 958, 1003, 1001, 998, 1064, 1046, 958, 1013, 1040, 976, 1004, 995, 964, 992, 960, 1030, 1028, 1012, 979, 1029, 1048, 944, 1032, 946, 1010, 1015, 1028, 1024, 965, 966, 1058, 943, 1004, 976, 1014, 972, 998, 1034, 1000, 986, 966, 1010, 950, 995, 1005, 991, 1097, 960, 995, 1020, 982, 1004, 1019, 951, 995, 993, 1010, 994, 1021, 1080, 1027, 1022, 985, 980, 1012, 967, 942, 985, 1016], [975, 1015, 974, 1010, 1035, 1045, 1057, 1023, 947, 975, 1012, 963, 1051, 936, 989, 1005, 1037, 1047, 1022, 989, 1040, 973, 968, 994, 1003, 978, 973, 974, 986, 1031, 988, 965, 988, 1072, 961, 972, 1002, 999, 978, 984, 1047, 1051, 1000, 949, 947, 1037, 948, 1004, 959, 992, 998, 1008, 953, 988, 984, 981, 988, 993, 961, 938, 965, 1009, 926, 970, 995, 975, 999, 1037, 1010, 1011, 1030, 1025, 997, 1003, 1038, 994, 992, 958, 994, 988, 988, 971, 1002, 978, 1057, 992, 987, 968, 980, 963, 1036, 1003, 1017, 1021, 998, 980, 977, 1019, 980, 965, 981, 939, 1062, 971, 955, 986, 1015, 1008, 1036, 1028, 986, 1039, 1007, 995, 968, 1002, 941, 998, 1069, 991, 1006, 954, 1029, 1039, 1037, 1013, 1004, 1017, 1000, 1031, 982, 1028, 933, 959, 998, 956, 1003, 1009, 1012, 1061, 980, 961, 982, 1001, 969, 1024, 976, 997, 1030, 1007, 985, 988, 1042, 1022, 971, 998, 1001, 982, 955, 1015, 897, 992, 971, 1075, 1030, 1031, 1029, 1040, 986, 962, 1017, 1009, 927, 906, 958, 995, 953, 1002, 977, 1052, 1010, 1045, 1030, 994, 1004, 998, 1009, 991, 1036, 912, 975, 1011, 946, 1061, 1048, 1006, 1000, 1044, 1026, 937, 1025, 1000, 1069, 987, 1003, 999, 997, 933, 1026, 964, 993, 979, 998, 986, 1049, 1021, 1016, 985, 984, 998, 1033, 970, 970, 1028, 961, 998, 1038, 977, 966, 993, 1027, 1008, 929, 982, 972, 1011, 978, 1022, 1010, 1002, 1040, 966, 1024, 988, 988, 1009, 994, 1048, 999, 1008, 996, 994, 985, 990, 957, 943], [958, 985, 998, 993, 947, 979, 925, 996, 1008, 985, 1008, 989, 966, 1025, 956, 1001, 1046, 1005, 997, 1012, 1036, 967, 960, 1019, 981, 993, 964, 1009, 1003, 1027, 967, 923, 950, 955, 1001, 1055, 1003, 974, 976, 1011, 1008, 976, 1007, 1007, 1091, 1066, 1045, 1007, 1048, 1014, 1004, 968, 932, 1000, 1012, 962, 984, 1001, 980, 930, 991, 956, 953, 1034, 988, 999, 1029, 1010, 1011, 946, 1019, 1017, 1004, 1039, 1036, 1005, 1032, 1005, 1009, 1034, 968, 1005, 1016, 1057, 954, 1077, 1024, 1009, 1043, 1047, 1002, 1023, 1058, 1049, 951, 1032, 1045, 1028, 958, 1009, 997, 973, 965, 1010, 953, 977, 967, 1049, 957, 988, 1001, 989, 996, 982, 1048, 1078, 1050, 1003, 1001, 1040, 1025, 995, 999, 980, 1027, 942, 993, 1040, 945, 954, 1026, 1021, 1017, 996, 981, 1001, 1019, 955, 1078, 969, 978, 1033, 987, 1099, 971, 1003, 1026, 989, 983, 1012, 984, 1026, 1022, 1005, 974, 1008, 985, 982, 994, 1062, 1066, 1001, 978, 992, 980, 1049, 975, 1052, 978, 992, 1039, 1019, 1012, 1010, 1034, 941, 1035, 984, 1006, 970, 983, 1025, 1012, 1020, 1022, 1025, 1045, 1016, 1011, 984, 1018, 1012, 1023, 1005, 1022, 929, 1011, 1010, 955, 997, 965, 968, 1008, 980, 996, 954, 1037, 964, 1008, 1037, 928, 978, 986, 1021, 980, 949, 1027, 968, 984, 1010, 998, 1076, 969, 980, 970, 992, 1003, 1057, 1055, 980, 1048, 1015, 961, 998, 993, 1050, 1002, 986, 999, 981, 999, 1026, 954, 1008, 1018, 968, 979, 980, 988, 1005, 1056, 985, 998, 1019, 985, 1011], [985, 1029, 990, 998, 1008, 1033, 1043, 995, 985, 992, 973, 952, 938, 1003, 1007, 1017, 1006, 1009, 989, 936, 1003, 1016, 962, 970, 953, 1035, 1017, 973, 1031, 964, 985, 995, 1041, 1050, 1049, 976, 1049, 1057, 997, 967, 1025, 1048, 1012, 976, 1008, 1020, 1031, 1018, 1026, 996, 1013, 1043, 961, 1022, 986, 1024, 948, 988, 973, 957, 1035, 1030, 989, 1025, 1022, 1020, 980, 987, 901, 1041, 973, 995, 1012, 980, 968, 1010, 1027, 997, 963, 1054, 1033, 1021, 965, 990, 1000, 996, 993, 966, 985, 1024, 1034, 1033, 1032, 1006, 1025, 979, 942, 998, 985, 943, 1038, 989, 976, 1015, 1003, 1019, 996, 964, 1009, 965, 970, 999, 1057, 999, 1043, 1061, 1010, 958, 967, 982, 975, 996, 1026, 988, 1002, 1026, 933, 1042, 1031, 1061, 1048, 1026, 1057, 967, 1017, 1052, 956, 1006, 989, 996, 1002, 962, 1019, 969, 1012, 956, 1012, 1042, 1011, 1040, 997, 928, 999, 1006, 997, 1015, 953, 988, 978, 1012, 972, 992, 1012, 1076, 980, 971, 1005, 975, 943, 969, 951, 996, 1015, 971, 1010, 960, 996, 951, 985, 988, 1009, 991, 979, 1014, 1056, 1028, 1028, 1008, 1029, 1058, 957, 969, 968, 926, 1005, 1043, 1039, 1033, 963, 1024, 975, 1006, 1005, 987, 933, 1029, 971, 951, 996, 971, 1015, 995, 1028, 994, 966, 987, 965, 979, 978, 994, 975, 1085, 986, 1018, 1014, 1030, 987, 1010, 962, 993, 1020, 998, 962, 989, 1036, 1004, 980, 960, 991, 1044, 1050, 993, 1036, 1076, 1087, 953, 1018, 1010, 1044, 992, 956, 959, 992, 984, 1001, 937], [1005, 1024, 1014, 1034, 971, 1015, 1013, 968, 993, 994, 1010, 999, 986, 958, 976, 1045, 984, 1065, 1012, 969, 1003, 1051, 1011, 962, 1027, 976, 994, 1027, 1017, 990, 992, 935, 993, 1031, 1010, 1000, 1038, 1055, 994, 966, 983, 978, 1013, 951, 1013, 1019, 954, 979, 997, 963, 1004, 969, 991, 1004, 961, 991, 974, 1004, 1024, 1003, 1042, 996, 993, 1027, 1033, 1045, 994, 947, 1030, 1038, 1014, 974, 1059, 1014, 992, 1002, 976, 1036, 988, 1043, 990, 1002, 1013, 971, 961, 1091, 975, 1001, 970, 966, 1032, 1028, 980, 1007, 1046, 1002, 1076, 1008, 969, 1030, 1015, 986, 998, 1002, 999, 1029, 911, 1048, 949, 945, 993, 1003, 1040, 1034, 958, 988, 1025, 1024, 948, 983, 971, 982, 1027, 1009, 998, 965, 994, 945, 972, 1045, 1013, 1011, 1046, 992, 1001, 1043, 1042, 1041, 1021, 998, 979, 979, 1041, 1015, 966, 1001, 1018, 1034, 975, 1052, 980, 1025, 1034, 968, 1002, 1038, 967, 984, 1029, 1004, 924, 1035, 1027, 1032, 973, 992, 1057, 1004, 1005, 984, 994, 1066, 996, 1030, 965, 1008, 1004, 995, 1034, 1014, 1008, 1002, 1025, 1005, 968, 966, 953, 972, 1026, 953, 1038, 1006, 1000, 1018, 1029, 1001, 1029, 1038, 1033, 1009, 976, 1029, 968, 1007, 961, 960, 1005, 978, 987, 992, 1007, 912, 1038, 1007, 955, 981, 1009, 1037, 1035, 996, 954, 1000, 1016, 959, 959, 1015, 1006, 958, 945, 988, 990, 1015, 1023, 1022, 1035, 1031, 1068, 968, 956, 1018, 997, 995, 1014, 1023, 1033, 1042, 962, 989, 1049, 1016, 990, 986, 1030, 1031, 985, 1055], [1001, 1015, 953, 995, 1019, 1056, 1014, 944, 1013, 1022, 967, 1111, 985, 1007, 957, 1008, 950, 1006, 983, 1003, 983, 1033, 1014, 977, 985, 959, 1009, 1059, 988, 995, 1045, 959, 999, 1025, 973, 1061, 975, 1012, 969, 983, 909, 1023, 1016, 970, 1023, 975, 1029, 1003, 1027, 955, 984, 1007, 1019, 979, 977, 1015, 1006, 1046, 957, 958, 974, 998, 973, 1026, 993, 947, 976, 1011, 1053, 1018, 965, 1008, 992, 983, 1044, 1019, 961, 1025, 1029, 998, 1013, 991, 1000, 966, 962, 1035, 966, 1032, 952, 1041, 1013, 1016, 1012, 993, 1006, 1021, 962, 1002, 967, 990, 986, 1014, 1065, 994, 1043, 944, 1034, 1041, 977, 1034, 1040, 937, 991, 1005, 1033, 1003, 974, 970, 1062, 989, 1063, 1006, 988, 1044, 975, 993, 948, 990, 1070, 939, 1068, 1103, 974, 966, 1003, 1045, 1057, 973, 1018, 959, 1035, 1007, 964, 1018, 974, 971, 998, 1018, 1033, 963, 992, 942, 945, 983, 1015, 977, 1008, 1033, 1015, 984, 1001, 975, 984, 1052, 980, 1027, 998, 1011, 1083, 971, 944, 1000, 1011, 997, 997, 1028, 1008, 973, 984, 1029, 1022, 960, 968, 1017, 1020, 974, 1010, 1001, 981, 1001, 950, 1038, 1050, 998, 1024, 1026, 1032, 1005, 986, 991, 999, 1067, 970, 1028, 1065, 1049, 1014, 983, 991, 1061, 1024, 1005, 993, 991, 961, 1023, 1033, 1049, 984, 973, 979, 931, 1059, 1032, 981, 1034, 1004, 959, 1001, 1000, 982, 1002, 950, 1033, 932, 975, 974, 1006, 1058, 998, 966, 933, 1008, 971, 986, 1034, 1025, 979, 980, 1018, 1012, 1045, 993, 961, 986, 982], [1028, 1019, 1037, 1006, 988, 1014, 951, 1002, 1018, 1004, 954, 1055, 987, 973, 982, 979, 1010, 974, 999, 1027, 1005, 1093, 989, 906, 1009, 967, 984, 1019, 989, 1044, 1001, 986, 979, 1001, 999, 950, 1012, 1013, 991, 1023, 1021, 1075, 1011, 973, 1005, 1012, 1028, 1012, 956, 1033, 974, 998, 999, 1021, 995, 1006, 1010, 1000, 1040, 1009, 1063, 964, 1004, 1033, 983, 959, 1051, 963, 990, 956, 1053, 1025, 977, 953, 976, 984, 983, 1064, 1039, 995, 1007, 1075, 1004, 946, 1023, 1022, 1024, 990, 1023, 952, 1016, 1013, 952, 977, 968, 995, 1003, 967, 996, 961, 992, 1008, 998, 975, 977, 973, 977, 1029, 988, 986, 1009, 1015, 1005, 973, 985, 952, 945, 988, 998, 967, 1076, 1022, 995, 978, 1011, 975, 1009, 1006, 988, 937, 1001, 958, 989, 981, 983, 1031, 1007, 1016, 956, 1005, 943, 952, 1029, 988, 1040, 1002, 1017, 1006, 952, 1027, 1024, 963, 990, 974, 991, 1018, 982, 975, 973, 983, 1053, 988, 986, 1030, 1005, 990, 1016, 979, 1038, 969, 1041, 1029, 1051, 1061, 1002, 1003, 1036, 1008, 1013, 982, 981, 1048, 1027, 945, 956, 991, 924, 1027, 1049, 948, 958, 1001, 954, 995, 1062, 985, 982, 950, 968, 969, 1028, 991, 1045, 983, 988, 1017, 1013, 1039, 1002, 975, 980, 972, 1019, 947, 993, 997, 985, 945, 983, 1075, 972, 1064, 1040, 1001, 913, 971, 1015, 970, 1013, 1057, 1019, 1009, 991, 1058, 1012, 915, 994, 996, 1031, 1011, 965, 1004, 979, 980, 956, 967, 993, 1048, 967, 1046, 973, 1030, 980, 1015, 990, 982], [1008, 999, 951, 1101, 1006, 996, 1009, 1016, 956, 1031, 1046, 1019, 978, 999, 992, 1039, 1013, 983, 1056, 1035, 1059, 935, 1001, 1044, 979, 961, 1009, 1015, 963, 999, 959, 1048, 957, 1032, 1034, 999, 995, 990, 919, 990, 970, 1035, 1007, 1042, 952, 965, 911, 966, 971, 1033, 1038, 998, 1015, 978, 989, 1029, 1044, 965, 981, 972, 958, 1005, 1021, 948, 1012, 1023, 1081, 986, 1004, 970, 988, 1013, 997, 968, 990, 950, 1025, 1041, 984, 959, 989, 980, 985, 1011, 1050, 987, 987, 1046, 1017, 993, 1010, 1015, 1016, 986, 971, 1020, 1002, 1011, 1014, 1005, 1022, 1016, 1035, 961, 1011, 1041, 997, 1013, 1047, 992, 1010, 1051, 1047, 1024, 979, 1003, 940, 962, 989, 969, 1086, 1028, 1007, 1019, 968, 996, 974, 925, 982, 969, 1018, 1041, 1011, 987, 969, 1017, 975, 977, 1019, 1036, 1025, 993, 971, 996, 984, 994, 1053, 1010, 1012, 985, 1001, 1036, 988, 992, 983, 1024, 1018, 997, 992, 1003, 991, 1001, 1011, 1052, 1009, 1033, 1051, 994, 1042, 974, 1040, 968, 1005, 992, 997, 1007, 1005, 1028, 998, 1046, 991, 942, 954, 1016, 973, 1009, 966, 961, 1028, 1034, 958, 964, 1001, 1008, 1054, 1030, 961, 994, 969, 998, 1015, 1070, 985, 992, 958, 1014, 969, 963, 987, 977, 977, 992, 998, 955, 1023, 1029, 1020, 1014, 983, 927, 1041, 1022, 969, 1037, 964, 993, 999, 975, 991, 999, 1032, 966, 988, 1004, 1013, 994, 956, 1053, 1030, 1038, 993, 1025, 990, 968, 1026, 954, 963, 1017, 1000, 1002, 1016, 1002, 984, 1003, 1026, 1034], [1070, 941, 993, 993, 1007, 1007, 1023, 1003, 1047, 993, 1013, 974, 991, 1016, 995, 887, 1027, 979, 967, 1011, 991, 1022, 975, 993, 987, 1007, 1025, 1025, 1018, 1001, 945, 986, 1030, 978, 949, 1013, 1006, 971, 958, 1043, 963, 959, 988, 1024, 1023, 964, 1030, 919, 953, 957, 975, 993, 996, 971, 1059, 995, 1054, 969, 990, 1035, 1026, 1015, 1002, 1029, 972, 932, 1020, 998, 1038, 1007, 961, 1014, 1063, 973, 1007, 957, 1046, 990, 1021, 1019, 1018, 972, 977, 1010, 943, 981, 985, 992, 991, 951, 1022, 1012, 1075, 1029, 1004, 1000, 1011, 971, 1050, 1053, 991, 1029, 1006, 1027, 1048, 1086, 1000, 1018, 968, 1018, 1013, 961, 1024, 988, 1021, 1004, 1090, 1007, 977, 1004, 1035, 977, 981, 971, 1027, 1052, 972, 993, 1057, 954, 1008, 1005, 1012, 1023, 937, 1035, 1034, 1030, 999, 984, 992, 1041, 966, 999, 951, 992, 1011, 1010, 969, 1032, 982, 989, 1033, 1101, 1017, 1061, 914, 1006, 990, 1018, 1006, 1034, 978, 975, 1038, 987, 974, 978, 999, 1015, 1002, 982, 997, 980, 1016, 973, 993, 1024, 1001, 1018, 1050, 953, 1010, 1001, 1002, 1048, 963, 992, 991, 999, 974, 910, 1016, 1011, 988, 965, 1030, 990, 985, 1001, 1001, 1019, 1040, 970, 924, 1090, 949, 1013, 981, 1030, 981, 971, 992, 992, 959, 1002, 994, 986, 996, 986, 952, 1047, 978, 1038, 1067, 1029, 973, 981, 1029, 1012, 1061, 999, 1005, 1009, 990, 1000, 996, 1020, 1052, 994, 1031, 1033, 988, 970, 985, 979, 1014, 1025, 994, 996, 963, 1031, 992, 973, 997, 927], [1025, 991, 1003, 1002, 1029, 1002, 958, 995, 1032, 1011, 981, 1007, 1013, 939, 994, 1028, 1035, 1003, 998, 978, 1022, 1004, 1034, 972, 1010, 1014, 1004, 993, 1054, 1064, 987, 998, 967, 995, 974, 939, 1029, 992, 1032, 956, 996, 1104, 1027, 996, 998, 1042, 956, 1039, 1008, 1001, 1011, 1000, 934, 1024, 1020, 1015, 958, 1013, 984, 994, 1001, 979, 1020, 996, 1039, 1000, 986, 1018, 1034, 1007, 1000, 989, 1013, 1011, 1029, 1032, 1078, 983, 1035, 987, 968, 1016, 979, 982, 975, 1004, 1022, 1020, 996, 996, 1013, 1013, 987, 1080, 1039, 1014, 1045, 960, 979, 950, 1035, 1027, 1030, 1023, 1027, 997, 961, 1016, 1007, 1039, 983, 1027, 1016, 972, 1032, 995, 988, 1022, 1025, 984, 960, 1028, 984, 974, 1017, 1012, 1023, 970, 991, 1035, 1009, 1026, 1013, 973, 999, 972, 1012, 982, 1002, 963, 1003, 998, 1051, 987, 987, 971, 979, 936, 987, 951, 966, 1014, 1014, 1023, 1049, 1015, 1053, 1024, 989, 1029, 1012, 1054, 952, 1023, 1000, 950, 975, 980, 964, 971, 986, 946, 982, 968, 1020, 1017, 1015, 998, 1007, 1074, 1002, 982, 996, 1005, 957, 999, 995, 964, 997, 973, 975, 989, 983, 1105, 993, 1001, 1014, 1027, 987, 1028, 1038, 1040, 1012, 1028, 980, 1037, 1036, 1063, 981, 998, 980, 1009, 1006, 993, 1035, 1026, 979, 1007, 997, 960, 999, 967, 1001, 965, 986, 1072, 1093, 993, 984, 964, 1030, 1004, 956, 987, 979, 975, 1026, 1000, 1034, 1007, 974, 1008, 1073, 1003, 988, 995, 1003, 1019, 951, 998, 951, 994, 1018, 972, 1019, 1043], [997, 990, 1033, 977, 958, 1000, 977, 1025, 981, 992, 1093, 1010, 1066, 985, 988, 1018, 1037, 1039, 1019, 1011, 992, 969, 952, 988, 951, 1009, 996, 1006, 972, 918, 983, 1007, 1022, 1007, 1069, 1015, 1013, 965, 959, 983, 960, 970, 983, 1089, 1014, 1038, 986, 1033, 963, 965, 983, 985, 992, 1014, 929, 1003, 1015, 1004, 1040, 1028, 1029, 1011, 983, 989, 1027, 984, 977, 1017, 1036, 1021, 1008, 1049, 984, 1008, 971, 1018, 1044, 972, 963, 982, 1003, 1029, 1022, 1046, 952, 1029, 1011, 1005, 1030, 955, 1017, 952, 967, 999, 987, 1050, 972, 990, 1014, 1038, 956, 1038, 995, 1051, 936, 1012, 1035, 972, 1055, 1100, 992, 1047, 1007, 980, 1015, 1020, 998, 1005, 1015, 1051, 1022, 1081, 978, 1022, 975, 1012, 973, 1011, 1038, 1002, 1003, 993, 1009, 1005, 964, 976, 1028, 969, 999, 993, 1077, 984, 960, 996, 994, 958, 1022, 967, 980, 1060, 989, 1014, 994, 974, 958, 1041, 977, 999, 961, 983, 1018, 1008, 1024, 927, 1008, 1002, 1051, 996, 936, 988, 998, 1023, 976, 1000, 1016, 1025, 993, 990, 947, 1004, 1064, 984, 1048, 1011, 1012, 956, 972, 1008, 1011, 1010, 969, 1017, 998, 990, 1036, 980, 1012, 999, 1000, 1011, 1043, 993, 985, 1004, 1002, 953, 993, 1008, 970, 1006, 1029, 1032, 997, 1021, 981, 1004, 1035, 979, 1026, 1027, 985, 1022, 1029, 1018, 1009, 1047, 1001, 1018, 918, 999, 976, 1026, 974, 986, 971, 973, 995, 1056, 1022, 943, 978, 994, 977, 992, 961, 1004, 1082, 917, 979, 969, 1022, 951, 989, 997, 995, 958], [976, 1051, 963, 982, 999, 974, 974, 1067, 1036, 979, 999, 964, 958, 993, 936, 1001, 996, 979, 951, 994, 963, 952, 1004, 1027, 1038, 979, 968, 1037, 1027, 977, 1028, 1023, 969, 947, 1009, 1008, 983, 1022, 968, 990, 1035, 1029, 1023, 921, 985, 1002, 988, 985, 990, 1017, 964, 982, 986, 1022, 994, 975, 1027, 998, 1001, 988, 968, 1059, 942, 1056, 1047, 1027, 977, 1025, 997, 1058, 979, 985, 1019, 993, 997, 983, 976, 1051, 1008, 973, 1012, 1018, 1028, 1027, 1007, 1037, 943, 1024, 1021, 1006, 1033, 985, 1000, 989, 1011, 997, 1003, 1019, 1019, 1058, 941, 995, 989, 1032, 1010, 990, 968, 1007, 986, 1013, 991, 1010, 1009, 966, 959, 1009, 1092, 940, 976, 989, 1020, 1024, 1068, 1001, 961, 1003, 983, 982, 985, 993, 1002, 1009, 1038, 953, 1051, 1019, 949, 1064, 1006, 1003, 958, 989, 1023, 981, 983, 965, 980, 947, 977, 997, 1065, 1037, 985, 1011, 948, 981, 971, 1001, 951, 1015, 1005, 959, 1091, 1027, 1066, 1022, 950, 983, 945, 932, 1060, 1028, 983, 982, 987, 1025, 1024, 1008, 1000, 974, 998, 1038, 1024, 1067, 1018, 1029, 967, 995, 1023, 984, 1015, 975, 1040, 991, 999, 1028, 959, 1012, 1017, 1007, 1029, 1053, 985, 993, 988, 1027, 1019, 981, 978, 988, 1039, 974, 968, 989, 999, 983, 1036, 990, 1034, 1006, 1028, 968, 1050, 1035, 1026, 978, 1011, 1022, 1040, 1016, 1068, 962, 940, 994, 1010, 1021, 1042, 991, 1000, 1016, 963, 987, 959, 995, 1030, 975, 975, 1096, 1001, 1003, 1024, 962, 1010, 982, 1020, 946], [1007, 1020, 1003, 1022, 1020, 977, 1002, 950, 998, 1009, 1007, 999, 1038, 1039, 1010, 971, 986, 1018, 1011, 1093, 999, 995, 1035, 1014, 988, 1014, 1050, 957, 973, 1032, 1022, 1054, 979, 969, 1036, 980, 1006, 1033, 953, 964, 987, 1041, 1001, 990, 948, 1008, 955, 970, 1089, 982, 1004, 995, 989, 986, 1026, 994, 949, 1002, 963, 1014, 1028, 953, 993, 1002, 994, 937, 986, 1033, 998, 1010, 1001, 981, 1002, 1020, 1007, 961, 1028, 963, 960, 947, 957, 983, 991, 1000, 984, 950, 1000, 945, 1014, 1006, 992, 1049, 998, 985, 1020, 966, 974, 973, 994, 994, 961, 1024, 996, 1036, 995, 1034, 976, 972, 999, 970, 1014, 1021, 970, 956, 1023, 972, 997, 997, 1004, 993, 960, 980, 1003, 1058, 1030, 1022, 1041, 977, 969, 983, 1026, 960, 1025, 1042, 996, 1012, 955, 985, 992, 1072, 888, 1031, 999, 1019, 963, 994, 1038, 1002, 992, 996, 1011, 1027, 991, 988, 1054, 1055, 983, 1021, 1041, 1046, 999, 952, 1026, 1002, 989, 981, 1026, 1013, 987, 962, 1036, 1023, 1046, 1000, 1001, 986, 999, 980, 989, 984, 994, 1014, 967, 970, 970, 1052, 1003, 978, 983, 1000, 1037, 946, 983, 989, 1014, 1003, 995, 1031, 982, 1001, 1054, 1026, 994, 1015, 998, 1018, 1051, 961, 1025, 960, 978, 1036, 1014, 939, 1018, 965, 979, 1048, 943, 988, 1041, 1029, 1050, 1014, 956, 1052, 1012, 989, 956, 1008, 1020, 969, 943, 992, 998, 936, 1001, 914, 967, 1003, 1060, 974, 963, 1008, 1004, 985, 974, 972, 986, 999, 935, 1034, 993, 980, 939, 981], [1045, 1012, 918, 1014, 1017, 980, 1042, 966, 1000, 1001, 1009, 1029, 964, 1008, 997, 1054, 1051, 987, 962, 980, 1009, 1013, 999, 981, 1034, 1019, 1009, 919, 980, 999, 1019, 985, 994, 1011, 1028, 972, 1001, 971, 1035, 1002, 1044, 1019, 1016, 938, 946, 1044, 1004, 1009, 1002, 1017, 1058, 1010, 1029, 996, 997, 1040, 1010, 1026, 988, 979, 997, 1027, 995, 1015, 939, 1037, 1071, 1002, 1040, 961, 990, 1045, 1029, 1035, 1035, 1007, 1063, 1019, 944, 975, 957, 1021, 1014, 998, 987, 1000, 1041, 961, 1032, 982, 992, 999, 1001, 1036, 998, 1006, 1019, 978, 941, 1022, 1041, 1008, 1038, 1012, 983, 962, 981, 950, 1061, 955, 1002, 1058, 1023, 996, 1009, 1000, 975, 985, 1054, 1037, 984, 966, 1056, 1043, 979, 963, 965, 1005, 987, 969, 964, 970, 1008, 981, 974, 977, 1049, 919, 1006, 1045, 1020, 1007, 990, 975, 979, 995, 1024, 1014, 1036, 1022, 973, 1031, 1033, 984, 1021, 1005, 925, 977, 978, 954, 947, 996, 952, 898, 1028, 1037, 970, 1006, 977, 1023, 1002, 1041, 1013, 989, 998, 1007, 1027, 970, 1051, 978, 1020, 1015, 1023, 1022, 1022, 947, 1050, 1019, 1018, 960, 1035, 1012, 1005, 1003, 1112, 1046, 958, 1024, 1032, 1032, 931, 1026, 1025, 999, 1052, 1044, 987, 990, 1054, 1014, 1000, 960, 969, 1007, 1047, 992, 1030, 977, 967, 1032, 991, 991, 1009, 963, 1012, 1051, 959, 1015, 1036, 948, 990, 1000, 1015, 1031, 1031, 1003, 1017, 996, 1028, 938, 978, 994, 1053, 955, 1070, 1041, 1017, 1006, 1011, 994, 1052, 1011, 1022, 1001, 963, 978], [1024, 965, 960, 1040, 933, 1032, 1017, 968, 1001, 1023, 964, 1046, 999, 1039, 1025, 929, 1004, 955, 1008, 1014, 1036, 979, 984, 1016, 1004, 988, 1062, 1007, 982, 1004, 998, 1004, 1034, 986, 989, 1024, 1017, 993, 985, 1016, 1020, 1008, 1012, 998, 956, 1012, 1019, 1025, 993, 1012, 1020, 998, 981, 1000, 1032, 1003, 957, 970, 1058, 931, 935, 990, 1013, 954, 945, 983, 957, 999, 1000, 1039, 1041, 1028, 1029, 1017, 972, 968, 1006, 1052, 1014, 998, 992, 1026, 1028, 992, 1033, 997, 1034, 1009, 1003, 1028, 1021, 956, 975, 982, 1050, 1019, 1009, 1010, 952, 1040, 995, 1004, 1003, 1040, 979, 1044, 988, 992, 975, 1014, 976, 992, 1034, 1035, 1000, 997, 1005, 974, 1029, 1020, 993, 1000, 1032, 968, 998, 1017, 1033, 995, 988, 1018, 978, 974, 1024, 1039, 992, 993, 978, 955, 977, 1036, 1066, 1001, 991, 955, 989, 999, 1008, 1001, 1028, 971, 998, 948, 1008, 1013, 950, 1012, 991, 1007, 1000, 1061, 975, 999, 992, 961, 991, 987, 970, 1006, 972, 988, 954, 959, 1053, 993, 1020, 1021, 1070, 945, 970, 996, 1014, 995, 946, 988, 985, 1006, 987, 1034, 1014, 1003, 990, 994, 1008, 1011, 1008, 957, 1009, 980, 952, 1081, 944, 982, 1025, 952, 1009, 1026, 1029, 992, 1024, 1016, 941, 1044, 1013, 923, 975, 925, 1004, 1002, 988, 947, 1034, 1044, 952, 1031, 984, 1013, 994, 1026, 987, 988, 1000, 1025, 986, 1037, 1028, 999, 986, 954, 1002, 1006, 986, 1002, 976, 1011, 1059, 1048, 986, 961, 969, 1005, 957, 995, 991, 1066, 998, 1029], [971, 1028, 992, 1003, 955, 998, 990, 991, 975, 1005, 990, 957, 960, 1008, 978, 1015, 993, 969, 1050, 973, 1039, 1000, 1047, 998, 968, 1003, 996, 1042, 1048, 1019, 1006, 994, 1020, 1004, 1000, 1032, 1002, 1033, 947, 952, 999, 992, 973, 1035, 945, 997, 920, 1040, 1034, 961, 1011, 998, 1024, 992, 1008, 1091, 1000, 985, 947, 986, 981, 1008, 1027, 1032, 946, 947, 992, 1027, 1042, 980, 998, 1023, 975, 1028, 957, 965, 1028, 1004, 984, 1031, 1020, 1040, 1039, 994, 970, 992, 1003, 981, 1002, 1035, 932, 1011, 978, 1053, 1022, 962, 966, 1031, 1055, 978, 1001, 985, 1030, 968, 1026, 976, 1040, 986, 985, 1009, 1004, 965, 1044, 1027, 962, 977, 949, 1043, 1002, 1008, 998, 1027, 1026, 962, 1064, 1045, 1002, 1016, 943, 1013, 1014, 943, 1062, 1027, 988, 988, 972, 996, 1006, 1020, 1008, 1039, 1053, 1021, 987, 1022, 1048, 1023, 1007, 957, 993, 989, 978, 1006, 1005, 1028, 998, 1017, 1006, 1010, 985, 976, 1004, 1040, 947, 990, 1051, 1037, 998, 998, 1050, 1023, 999, 1019, 991, 1014, 1048, 936, 909, 967, 1027, 1016, 990, 972, 995, 994, 1006, 927, 973, 983, 1031, 995, 977, 1021, 1022, 1024, 1006, 952, 1004, 969, 1003, 980, 1060, 1001, 1057, 991, 991, 1007, 999, 969, 1014, 969, 997, 1021, 1033, 1066, 996, 929, 1044, 986, 968, 1002, 942, 1023, 1027, 1017, 992, 1006, 961, 1014, 1029, 997, 1012, 992, 1027, 1004, 998, 975, 1011, 1029, 994, 969, 1045, 953, 975, 942, 1008, 1044, 998, 985, 968, 1059, 1003, 991, 1003, 976], [1065, 1051, 980, 976, 941, 988, 926, 1038, 1013, 962, 1045, 1007, 995, 986, 1026, 1011, 954, 971, 993, 1012, 963, 1098, 964, 1045, 1022, 984, 967, 1025, 1036, 1038, 1042, 1002, 1003, 1055, 995, 1057, 1084, 1031, 988, 970, 1025, 1024, 1003, 1033, 1002, 983, 967, 954, 1023, 996, 1076, 1038, 1033, 1054, 975, 1023, 1024, 985, 1011, 977, 1026, 1079, 1020, 1002, 1005, 965, 1020, 944, 964, 979, 985, 976, 984, 966, 1015, 1052, 1013, 1015, 1005, 1006, 1046, 1053, 1002, 938, 1045, 1029, 970, 970, 972, 1040, 1008, 971, 999, 1028, 1024, 971, 1063, 998, 1059, 1004, 996, 988, 970, 983, 977, 974, 998, 1023, 991, 1013, 955, 1012, 1003, 1037, 966, 994, 985, 975, 1074, 1040, 993, 991, 948, 990, 1061, 1039, 965, 1017, 1028, 970, 1016, 1003, 1020, 1013, 998, 1033, 998, 992, 943, 989, 1016, 997, 958, 1063, 995, 984, 969, 1026, 1030, 961, 982, 1027, 998, 974, 981, 967, 1007, 1004, 982, 989, 1024, 977, 1010, 1022, 956, 1013, 997, 1021, 991, 968, 992, 1004, 981, 1014, 966, 1026, 1067, 1021, 1001, 1005, 1050, 1048, 1021, 1008, 993, 987, 978, 1061, 1051, 1023, 1009, 1002, 940, 995, 960, 1033, 956, 980, 989, 956, 987, 982, 1003, 968, 1021, 1042, 971, 979, 1043, 1090, 1011, 993, 1016, 1012, 1021, 1014, 1033, 988, 959, 1002, 1001, 1044, 1004, 987, 980, 1063, 961, 991, 958, 1085, 993, 1004, 970, 1013, 1062, 1038, 1044, 1073, 985, 1030, 1011, 958, 1059, 996, 992, 1064, 1033, 1030, 986, 1065, 1055, 1037, 1007, 1005, 999, 1009], [1015, 982, 990, 988, 1080, 937, 1041, 988, 1012, 992, 990, 1016, 916, 981, 1018, 1008, 1002, 1013, 992, 1040, 1016, 1007, 1015, 1041, 988, 995, 964, 989, 1005, 1031, 1015, 982, 981, 989, 1006, 1011, 1021, 959, 947, 997, 1057, 1030, 1000, 978, 1006, 997, 1025, 986, 996, 977, 1022, 1001, 944, 982, 1020, 1016, 980, 1008, 1019, 1051, 1006, 996, 1012, 999, 954, 1039, 1021, 969, 991, 987, 1000, 981, 1077, 1029, 1009, 994, 976, 979, 998, 1022, 986, 974, 977, 937, 1023, 980, 1021, 1039, 1036, 961, 1020, 1013, 1000, 965, 1053, 1004, 971, 1012, 1040, 992, 996, 1049, 985, 1033, 941, 981, 1045, 1038, 1045, 1039, 1004, 1017, 995, 968, 995, 1004, 984, 972, 1044, 1007, 1037, 1072, 1012, 1005, 1028, 948, 976, 1010, 1043, 1057, 976, 974, 1013, 1025, 1030, 985, 1000, 956, 976, 988, 1002, 1048, 1001, 1050, 1010, 995, 1007, 1007, 1032, 968, 971, 1010, 986, 1027, 1034, 976, 996, 967, 1049, 1022, 978, 972, 971, 1018, 987, 1060, 977, 1006, 1007, 1001, 1009, 1030, 1058, 1003, 1025, 1000, 1015, 985, 995, 971, 963, 968, 988, 1017, 959, 976, 965, 994, 944, 1005, 1000, 929, 1047, 985, 967, 951, 925, 964, 1035, 1028, 999, 983, 1026, 979, 1002, 978, 1008, 968, 971, 984, 986, 1016, 1001, 1002, 993, 984, 980, 965, 982, 937, 1021, 966, 994, 952, 999, 1039, 1045, 1003, 961, 995, 978, 1026, 998, 1044, 1004, 943, 940, 1035, 974, 998, 929, 1000, 970, 1035, 1041, 961, 1072, 1038, 997, 1015, 1007, 993, 1007, 1021, 986, 1029], [1004, 969, 987, 1017, 1004, 973, 998, 987, 985, 982, 1002, 1011, 1010, 947, 937, 979, 1016, 979, 963, 1018, 971, 955, 1035, 1028, 973, 1006, 1024, 951, 997, 1028, 961, 966, 1014, 1047, 987, 956, 1017, 962, 966, 993, 959, 1039, 1005, 960, 1017, 992, 1006, 966, 1014, 1006, 1020, 980, 1018, 987, 1031, 943, 982, 968, 998, 1088, 1030, 1030, 949, 980, 1066, 1012, 1077, 1021, 1042, 988, 1016, 1036, 1011, 1039, 1005, 1009, 1004, 1037, 1035, 1000, 1014, 968, 1011, 950, 995, 974, 985, 1035, 1030, 951, 971, 959, 1049, 953, 972, 991, 981, 961, 984, 1036, 1048, 1050, 978, 992, 949, 1023, 1023, 1030, 996, 1013, 992, 915, 1012, 987, 968, 959, 950, 989, 988, 1011, 1007, 1020, 974, 991, 995, 1051, 997, 992, 987, 982, 921, 997, 1006, 988, 1010, 976, 955, 1022, 981, 1040, 979, 993, 974, 1042, 1028, 1003, 938, 974, 956, 945, 961, 1024, 965, 1047, 1096, 1003, 1053, 1000, 1001, 1036, 992, 970, 1018, 1006, 1036, 987, 1004, 1042, 951, 1020, 1072, 1034, 1046, 973, 959, 1018, 1031, 1027, 962, 995, 994, 1004, 1006, 1006, 984, 969, 982, 1077, 1017, 1035, 980, 999, 973, 996, 1068, 971, 1002, 1009, 1023, 1032, 1023, 957, 1044, 1000, 965, 937, 981, 996, 985, 990, 978, 1001, 972, 989, 1019, 1007, 1003, 938, 923, 975, 994, 974, 1025, 1010, 943, 978, 984, 982, 1005, 986, 1010, 988, 951, 942, 1027, 1002, 1037, 972, 1014, 966, 1010, 1026, 1001, 985, 979, 999, 971, 997, 1069, 926, 985, 1033, 960, 1051, 1054, 1009], [1002, 968, 988, 968, 977, 977, 967, 988, 1002, 1013, 973, 1020, 976, 1035, 969, 1006, 948, 1029, 981, 956, 977, 969, 1044, 1053, 1018, 1003, 1003, 1044, 964, 951, 949, 981, 955, 975, 989, 1086, 953, 989, 1057, 972, 990, 1012, 998, 1017, 1036, 975, 1025, 1041, 1049, 1009, 1019, 990, 1087, 972, 993, 1029, 987, 992, 983, 1004, 996, 976, 931, 1036, 942, 972, 1040, 980, 979, 971, 1015, 991, 982, 960, 1015, 954, 974, 1031, 1027, 985, 1036, 994, 1034, 1010, 1005, 1020, 946, 1056, 980, 1029, 1049, 1007, 1034, 932, 1009, 1075, 1004, 1041, 1012, 979, 1035, 1004, 1040, 1026, 1036, 1048, 976, 1023, 1030, 982, 982, 998, 1041, 1042, 972, 1023, 983, 1001, 1024, 995, 954, 1036, 1004, 950, 1036, 998, 977, 985, 958, 1002, 1038, 1031, 961, 1007, 1006, 942, 982, 984, 995, 985, 1033, 1056, 1018, 985, 980, 1002, 999, 985, 993, 975, 1035, 967, 1024, 1051, 959, 961, 992, 986, 992, 969, 987, 1004, 979, 998, 997, 954, 989, 1022, 916, 996, 1023, 1031, 1027, 998, 1021, 996, 1013, 1000, 1061, 1013, 994, 970, 1012, 1046, 972, 923, 1079, 970, 968, 1016, 988, 963, 999, 964, 1018, 1061, 1090, 1051, 987, 983, 1002, 990, 1029, 1001, 1023, 1017, 932, 1028, 978, 976, 1054, 1038, 997, 1082, 1009, 1061, 1030, 993, 1022, 1008, 982, 1004, 930, 938, 986, 1005, 1032, 963, 1002, 936, 947, 1053, 1058, 978, 1007, 998, 950, 1043, 998, 975, 1036, 932, 1056, 972, 1014, 1006, 969, 1071, 978, 1020, 999, 981, 1004, 1009, 1069, 986], [1007, 1043, 1007, 985, 1006, 976, 1003, 994, 985, 1023, 1022, 1010, 1066, 1004, 976, 1001, 1048, 1053, 1062, 1048, 1002, 1045, 1012, 1027, 955, 991, 965, 1022, 1024, 970, 1036, 1016, 989, 1040, 998, 1009, 1034, 1030, 1009, 985, 972, 965, 1024, 980, 1001, 1026, 999, 1004, 1005, 1043, 998, 940, 1034, 1018, 1025, 1016, 975, 1023, 994, 978, 967, 1027, 1052, 1038, 975, 1043, 999, 985, 987, 995, 1036, 964, 988, 961, 946, 996, 1021, 968, 961, 1028, 1077, 1016, 980, 923, 1045, 1012, 1007, 1005, 1034, 958, 969, 996, 954, 1016, 1022, 1040, 972, 1004, 970, 1054, 1019, 980, 1002, 1006, 991, 1005, 1025, 988, 1044, 1040, 990, 1010, 975, 974, 978, 1060, 1012, 998, 1008, 958, 1008, 1043, 1005, 1056, 1011, 1010, 1044, 999, 979, 995, 980, 1023, 989, 973, 1021, 1032, 1040, 967, 968, 1018, 993, 994, 1022, 1026, 1024, 1015, 992, 1041, 998, 994, 881, 987, 959, 1016, 979, 985, 981, 932, 927, 969, 1020, 1011, 953, 1001, 1008, 949, 967, 961, 1004, 1021, 997, 998, 1007, 1019, 992, 970, 980, 1033, 994, 997, 974, 1006, 1012, 1034, 1020, 962, 1053, 950, 999, 1022, 975, 995, 1013, 997, 994, 951, 1006, 948, 956, 1064, 973, 981, 1014, 987, 1037, 1030, 955, 1016, 980, 992, 975, 985, 1000, 1036, 1015, 993, 1008, 1020, 994, 964, 1019, 981, 989, 1013, 994, 1019, 1029, 991, 1014, 945, 941, 1033, 982, 1016, 996, 1003, 971, 995, 1041, 968, 1016, 972, 992, 961, 996, 947, 989, 949, 945, 989, 996, 1025, 1002, 1015, 968, 932], [992, 992, 948, 1003, 1019, 966, 976, 990, 993, 1028, 1026, 1013, 1006, 1009, 978, 1019, 963, 956, 1043, 1039, 988, 1014, 1004, 1021, 963, 1064, 1002, 991, 1063, 1017, 946, 1000, 971, 996, 1060, 986, 998, 969, 1022, 990, 987, 965, 898, 962, 1006, 1000, 1008, 1070, 1030, 944, 1004, 1026, 990, 1001, 982, 949, 1006, 1001, 990, 1058, 1010, 993, 1007, 977, 963, 1060, 982, 1012, 1008, 1026, 928, 1019, 990, 971, 1005, 977, 1015, 956, 1047, 1038, 1008, 1038, 991, 981, 1007, 966, 1002, 958, 1044, 949, 1005, 1011, 1019, 1020, 999, 1016, 974, 1028, 927, 988, 970, 1066, 950, 967, 965, 967, 967, 1009, 1018, 1011, 957, 1015, 1008, 1011, 1032, 994, 974, 961, 998, 1032, 1039, 993, 975, 994, 965, 1011, 991, 990, 991, 1017, 1002, 959, 979, 985, 1032, 996, 1007, 981, 1101, 1018, 1030, 1035, 1048, 1020, 982, 998, 1001, 1026, 982, 965, 968, 981, 989, 1027, 1011, 972, 1025, 1007, 984, 961, 989, 972, 1032, 1032, 970, 1035, 1001, 1017, 1002, 1022, 981, 1027, 1026, 959, 1015, 972, 965, 1019, 938, 973, 1022, 1003, 993, 994, 998, 987, 989, 952, 1030, 1007, 916, 1010, 942, 1001, 995, 1011, 1041, 1001, 1010, 1014, 995, 1055, 994, 957, 978, 1018, 939, 1047, 972, 988, 981, 945, 1008, 961, 955, 975, 989, 1042, 989, 997, 1002, 1001, 991, 994, 1004, 998, 996, 993, 960, 1033, 975, 986, 1022, 999, 998, 987, 987, 1027, 1089, 1005, 940, 1016, 1007, 962, 987, 1049, 1004, 1045, 980, 1023, 1030, 1029, 1027, 1019, 979, 991], [995, 1013, 1017, 993, 1012, 978, 1026, 981, 986, 1012, 1014, 1062, 1014, 1024, 963, 1025, 981, 1009, 1014, 1003, 968, 1000, 1031, 987, 992, 990, 1005, 1040, 991, 981, 991, 1025, 1004, 1030, 988, 949, 997, 1009, 1014, 1012, 997, 963, 1021, 968, 996, 978, 952, 1002, 1022, 967, 961, 1008, 999, 1005, 1007, 1021, 1020, 994, 980, 956, 970, 1012, 984, 1036, 1032, 976, 1008, 1052, 1055, 997, 957, 981, 1037, 1027, 1024, 975, 971, 965, 997, 1012, 950, 987, 1020, 963, 978, 988, 1021, 980, 1031, 1023, 960, 1019, 975, 997, 1050, 1032, 1060, 989, 948, 986, 1011, 975, 1078, 1044, 982, 987, 973, 1034, 952, 1012, 999, 999, 948, 976, 1006, 1006, 1045, 940, 987, 998, 962, 1012, 1011, 1023, 1051, 1020, 1008, 995, 1035, 982, 1059, 1020, 1034, 1023, 1002, 1047, 999, 999, 1000, 1012, 1018, 987, 998, 971, 1003, 996, 1019, 1021, 1007, 996, 967, 975, 999, 969, 1026, 979, 1060, 993, 1063, 994, 953, 986, 1034, 945, 1023, 1027, 994, 1000, 965, 954, 1005, 986, 1010, 1011, 1016, 994, 941, 993, 1030, 994, 970, 1011, 947, 986, 987, 984, 979, 1026, 1062, 1022, 1020, 987, 983, 1017, 1031, 1024, 999, 977, 949, 1028, 1006, 949, 1000, 991, 994, 985, 1012, 1034, 963, 966, 1015, 1021, 1025, 999, 1048, 947, 1016, 1016, 980, 956, 998, 1043, 981, 995, 984, 972, 953, 989, 1043, 1024, 1040, 1013, 953, 1028, 1030, 1027, 1004, 1031, 1004, 1013, 1005, 954, 1010, 998, 1013, 999, 941, 1025, 1054, 1002, 1006, 967, 1005, 968, 1000, 1015], [971, 960, 1010, 978, 1015, 977, 1017, 1015, 1019, 1004, 1000, 977, 987, 1018, 1038, 969, 1008, 1009, 965, 1012, 987, 977, 984, 950, 988, 1039, 1041, 1001, 1032, 975, 1033, 1000, 951, 994, 956, 974, 997, 1006, 1029, 990, 1049, 1071, 1012, 949, 1063, 1025, 1034, 1016, 1047, 1004, 1073, 1036, 924, 1002, 1064, 956, 996, 948, 988, 1008, 985, 983, 982, 989, 1005, 991, 993, 1040, 1010, 1002, 1030, 1002, 1070, 1024, 995, 994, 974, 964, 1021, 974, 1049, 1004, 1011, 1009, 980, 985, 1021, 995, 985, 1021, 970, 1017, 940, 1039, 1029, 959, 986, 1018, 1015, 1035, 1030, 1018, 952, 1015, 1019, 1003, 1037, 1016, 1015, 1036, 950, 1024, 993, 1005, 1058, 1009, 954, 1017, 965, 978, 1039, 996, 1004, 990, 981, 985, 970, 953, 959, 1007, 958, 986, 999, 983, 971, 1030, 1017, 965, 1050, 1028, 970, 1019, 972, 977, 1019, 959, 1071, 1071, 1007, 938, 1007, 1011, 1006, 1045, 1015, 962, 988, 977, 969, 965, 1028, 989, 1054, 1041, 993, 1042, 1019, 1025, 965, 1021, 1021, 951, 984, 974, 1031, 977, 947, 956, 942, 1004, 972, 988, 975, 973, 985, 1003, 968, 1028, 973, 990, 972, 1015, 975, 998, 1038, 991, 1015, 995, 963, 942, 1000, 1026, 1060, 997, 990, 1031, 958, 1015, 1000, 972, 1035, 1019, 987, 962, 981, 971, 990, 922, 994, 1024, 919, 1031, 996, 1033, 989, 1021, 1029, 993, 986, 955, 1027, 988, 1053, 992, 1011, 1076, 996, 994, 1027, 974, 1026, 1064, 1052, 994, 985, 944, 1004, 1016, 971, 1033, 1003, 979, 1008, 914, 980, 987], [1026, 955, 1004, 1005, 1008, 989, 1042, 975, 993, 1016, 979, 993, 1012, 990, 984, 978, 1048, 951, 1005, 924, 1022, 976, 981, 1007, 1023, 1023, 912, 993, 1009, 992, 964, 977, 1008, 980, 994, 1022, 1075, 1015, 998, 961, 980, 1000, 1003, 930, 964, 968, 982, 1028, 1018, 978, 997, 1058, 1024, 979, 967, 900, 1012, 984, 983, 1033, 997, 996, 1045, 1029, 997, 1016, 1007, 957, 981, 985, 989, 1054, 995, 1021, 1001, 988, 1015, 1007, 976, 928, 1026, 951, 997, 999, 1042, 1048, 1004, 988, 986, 996, 1062, 1025, 990, 1016, 1028, 956, 1048, 1002, 980, 1004, 986, 1007, 1019, 982, 989, 1012, 1034, 1019, 976, 997, 947, 1015, 1021, 1001, 988, 1004, 1005, 967, 1002, 1033, 969, 1030, 978, 1001, 1048, 1060, 935, 1021, 977, 944, 1015, 986, 1012, 1007, 998, 1065, 1010, 1009, 958, 924, 1038, 1047, 969, 949, 1020, 1002, 980, 992, 957, 1025, 988, 1014, 1035, 994, 1030, 1008, 985, 963, 984, 1019, 1014, 1013, 1044, 955, 983, 985, 1008, 1004, 1004, 966, 992, 963, 999, 968, 1005, 984, 1005, 1019, 1003, 990, 1034, 1001, 975, 1002, 1082, 1032, 996, 1015, 1037, 1042, 1038, 973, 968, 1013, 1046, 1050, 997, 1004, 956, 1034, 936, 972, 1014, 1005, 1011, 1014, 1063, 948, 980, 993, 977, 984, 1006, 1031, 1005, 976, 981, 1004, 1044, 1011, 1036, 994, 962, 943, 994, 973, 986, 1001, 965, 1003, 1039, 1020, 1008, 1030, 960, 993, 924, 972, 959, 1023, 999, 1004, 1000, 1008, 1023, 997, 1014, 1005, 1006, 992, 1009, 1000, 983, 1004, 1070, 1000], [1083, 1008, 1025, 1063, 964, 963, 964, 959, 1015, 1039, 1018, 962, 968, 996, 974, 1064, 1034, 1012, 964, 1067, 999, 1005, 1006, 1006, 1039, 1080, 1005, 1012, 1009, 938, 1010, 1020, 1041, 1027, 1056, 1006, 995, 968, 957, 1011, 1025, 984, 971, 927, 968, 1002, 924, 1022, 967, 971, 917, 989, 1015, 998, 928, 954, 970, 984, 995, 1020, 1042, 996, 1058, 1017, 949, 983, 978, 1019, 993, 1073, 1016, 1030, 1048, 971, 997, 960, 1021, 1031, 1024, 1019, 1012, 975, 970, 958, 925, 1015, 1050, 954, 1005, 1047, 1031, 977, 1004, 1022, 981, 995, 926, 997, 1011, 1024, 994, 1000, 1065, 1024, 955, 1019, 1032, 1024, 1028, 996, 999, 979, 955, 983, 955, 985, 1005, 1002, 994, 983, 991, 1012, 1000, 949, 950, 990, 1019, 977, 1023, 990, 999, 990, 981, 945, 1016, 990, 1037, 978, 987, 985, 1023, 1002, 1020, 984, 974, 942, 1000, 1033, 1038, 1008, 1010, 1026, 1001, 979, 972, 1050, 982, 1014, 1012, 1017, 967, 980, 1044, 1017, 1053, 1039, 980, 1010, 1014, 995, 1045, 1039, 968, 1002, 998, 981, 990, 1024, 1007, 1004, 1023, 1033, 976, 990, 1035, 989, 1040, 982, 942, 988, 996, 1023, 1008, 1023, 979, 985, 962, 1046, 979, 1001, 964, 964, 1016, 1004, 1105, 1006, 1045, 1001, 985, 1016, 1034, 998, 976, 993, 978, 1022, 1049, 975, 1066, 983, 988, 1030, 956, 990, 924, 989, 1048, 1006, 1043, 1002, 995, 1009, 1004, 988, 1014, 1007, 1044, 1006, 969, 949, 1023, 999, 1059, 994, 979, 1016, 985, 939, 999, 984, 965, 1062, 985, 1012, 1028, 1030], [992, 989, 1022, 1002, 1003, 1036, 1044, 927, 1011, 982, 978, 1052, 1024, 978, 981, 924, 976, 975, 1018, 990, 1027, 945, 997, 1024, 1038, 979, 1023, 954, 1005, 1055, 993, 1022, 1033, 1007, 964, 995, 975, 988, 986, 1059, 988, 1012, 1047, 978, 992, 981, 972, 1001, 954, 1009, 1025, 1055, 968, 982, 971, 977, 1010, 984, 1092, 985, 981, 1040, 968, 1014, 946, 989, 938, 1053, 980, 1003, 971, 989, 1011, 1000, 998, 980, 1038, 985, 1025, 985, 1034, 968, 1047, 1014, 1020, 1025, 1027, 972, 1021, 982, 1039, 1015, 1015, 1021, 1080, 1011, 986, 961, 1038, 1033, 947, 980, 984, 944, 1011, 999, 1031, 991, 1012, 989, 995, 960, 983, 1023, 1002, 1068, 947, 918, 1006, 995, 1037, 937, 1038, 1005, 951, 1047, 995, 932, 1036, 1006, 948, 1008, 1041, 981, 1030, 1024, 958, 999, 979, 1070, 992, 996, 1025, 997, 986, 995, 1077, 1003, 969, 1001, 939, 1025, 1021, 983, 1081, 1017, 1007, 961, 995, 990, 1002, 1022, 1007, 961, 991, 992, 929, 983, 977, 1042, 1010, 991, 1032, 954, 1045, 1012, 960, 951, 978, 1011, 963, 980, 1019, 998, 995, 1014, 1007, 1006, 1040, 1024, 1018, 970, 1033, 1041, 961, 972, 979, 1019, 975, 965, 992, 1014, 966, 955, 1010, 978, 1032, 983, 947, 1018, 991, 978, 1012, 972, 1039, 987, 989, 1001, 1020, 989, 956, 1071, 1013, 1055, 988, 1039, 987, 1000, 1006, 992, 1004, 1022, 963, 990, 1000, 977, 1011, 1010, 1028, 1083, 1022, 967, 958, 1023, 1045, 1033, 992, 1003, 967, 1002, 983, 956, 1066, 995, 971, 999], [1030, 1005, 1001, 977, 1010, 1000, 1024, 953, 1043, 1002, 983, 958, 955, 1018, 984, 975, 999, 1005, 1021, 1033, 975, 1034, 990, 974, 994, 980, 1002, 975, 991, 964, 987, 1009, 1002, 1046, 1003, 1021, 985, 984, 1040, 955, 951, 993, 949, 1016, 1007, 969, 973, 1038, 1003, 1015, 1029, 1018, 1022, 972, 1017, 1052, 975, 1004, 973, 990, 1008, 998, 974, 980, 991, 934, 994, 1000, 1041, 986, 968, 1055, 961, 1023, 987, 984, 984, 972, 1001, 989, 1025, 983, 1016, 1035, 1022, 944, 992, 1014, 1001, 977, 1001, 1065, 960, 993, 1027, 1059, 956, 1011, 1056, 1035, 1016, 1007, 1034, 981, 1004, 967, 1011, 1005, 1055, 990, 945, 958, 1019, 1011, 1021, 946, 1009, 978, 1053, 973, 985, 998, 1004, 1014, 1002, 970, 985, 1004, 1007, 990, 987, 993, 965, 1030, 1018, 1049, 947, 996, 1001, 986, 997, 962, 1013, 1031, 961, 953, 985, 991, 1009, 1022, 959, 1005, 995, 1022, 1024, 962, 1003, 990, 969, 1017, 985, 1091, 1055, 1021, 972, 1006, 1029, 1000, 984, 993, 973, 1042, 1007, 987, 1038, 993, 1035, 1007, 1054, 1045, 1035, 944, 1003, 1035, 999, 1013, 1028, 1023, 999, 965, 1029, 998, 1023, 1006, 1030, 996, 957, 1043, 992, 992, 961, 1003, 984, 1055, 1006, 996, 1044, 1006, 946, 984, 1025, 960, 1003, 1001, 1003, 987, 981, 1078, 1044, 1000, 1000, 968, 1015, 939, 1004, 938, 982, 1000, 979, 1002, 935, 1030, 1002, 1043, 990, 1000, 972, 995, 996, 957, 988, 1010, 993, 973, 925, 1035, 1061, 942, 1045, 990, 984, 985, 1039, 1018, 926, 1011], [998, 1001, 1020, 1002, 1010, 1031, 1018, 1037, 1000, 998, 978, 925, 937, 977, 998, 937, 1026, 1008, 932, 985, 1011, 962, 1052, 984, 1003, 1031, 1022, 1005, 1023, 986, 1014, 996, 980, 985, 1024, 1015, 1010, 992, 1005, 981, 998, 974, 1009, 998, 1022, 987, 944, 966, 1048, 951, 1019, 1059, 989, 993, 1059, 1012, 968, 1044, 1029, 1004, 1031, 972, 991, 1070, 984, 1011, 995, 963, 1001, 1030, 972, 1001, 1031, 999, 1027, 957, 962, 1011, 1013, 1039, 1006, 1026, 989, 1001, 991, 1009, 1013, 1055, 1011, 996, 1050, 1030, 976, 1049, 1048, 1035, 1043, 1000, 1001, 1011, 948, 1031, 991, 1015, 891, 1065, 1053, 1006, 966, 1013, 1002, 961, 979, 984, 966, 984, 1007, 974, 1024, 1048, 1032, 1031, 1025, 959, 1002, 991, 973, 1014, 1020, 983, 1052, 986, 952, 982, 1010, 984, 995, 992, 1018, 1021, 1002, 1017, 1006, 971, 1006, 1012, 982, 1027, 982, 963, 1048, 939, 969, 998, 987, 999, 965, 968, 956, 1040, 969, 1028, 998, 931, 994, 955, 1037, 1055, 997, 1045, 1000, 979, 968, 963, 1045, 980, 980, 1006, 1023, 1045, 1025, 975, 1011, 1019, 978, 984, 1045, 980, 1053, 974, 965, 1001, 1048, 1029, 1027, 1019, 989, 1062, 1003, 1008, 1006, 997, 1017, 1020, 937, 1009, 1073, 987, 934, 970, 990, 997, 1016, 1038, 1034, 1028, 1055, 994, 1046, 1039, 980, 1037, 1035, 1028, 1003, 1035, 1028, 1009, 1013, 963, 1041, 977, 1020, 1023, 965, 1035, 973, 1046, 995, 992, 1023, 969, 977, 1006, 1031, 991, 975, 1025, 1007, 953, 1034, 955, 1012, 1006, 1012, 1026], [1023, 990, 997, 1002, 960, 1026, 1025, 987, 1046, 994, 956, 1022, 991, 983, 1052, 970, 1004, 957, 1032, 1029, 1022, 1003, 1000, 989, 1003, 939, 1025, 981, 1044, 1006, 958, 992, 978, 994, 1045, 912, 1018, 972, 1029, 1034, 964, 1003, 1018, 1001, 1023, 1019, 968, 964, 1037, 1005, 979, 976, 1076, 972, 976, 972, 996, 989, 961, 989, 979, 996, 1022, 1005, 993, 969, 958, 1041, 989, 1022, 1006, 972, 979, 1025, 1007, 972, 1011, 1016, 1010, 958, 1010, 1031, 1015, 989, 1013, 977, 1009, 971, 993, 973, 993, 935, 1036, 1005, 1049, 932, 955, 954, 978, 975, 1074, 983, 1023, 1014, 978, 1055, 992, 1039, 1028, 1037, 1013, 1021, 958, 959, 983, 1042, 949, 969, 990, 1039, 959, 1005, 976, 974, 958, 1000, 1020, 1010, 1041, 993, 974, 1034, 1079, 1025, 1057, 1049, 980, 1028, 971, 984, 997, 965, 1073, 1017, 987, 998, 1062, 1009, 997, 1016, 1033, 954, 931, 1022, 1022, 1031, 982, 1004, 1033, 944, 971, 995, 1011, 1029, 997, 1003, 961, 1047, 981, 996, 968, 965, 1062, 995, 1013, 1044, 998, 1039, 952, 983, 1007, 1010, 989, 1005, 1020, 1023, 1002, 1014, 1044, 973, 977, 977, 1013, 991, 1041, 996, 1017, 982, 1013, 1008, 998, 1040, 965, 988, 998, 1003, 999, 1027, 1015, 998, 960, 994, 990, 984, 1023, 1011, 946, 1023, 961, 990, 997, 968, 1022, 970, 1030, 1001, 1068, 979, 1005, 991, 968, 1065, 1011, 1026, 1027, 1022, 1029, 1040, 971, 1009, 954, 1088, 994, 979, 954, 1019, 948, 1020, 1054, 1027, 986, 992, 979, 958, 1019, 1004], [951, 921, 954, 924, 964, 954, 998, 1059, 967, 1002, 1022, 1026, 1036, 985, 966, 1058, 1018, 972, 1024, 1035, 1041, 1019, 966, 968, 1050, 1023, 1006, 965, 1011, 1034, 1051, 948, 962, 1012, 993, 1038, 949, 989, 994, 992, 981, 989, 1021, 973, 1024, 993, 1075, 1098, 1020, 1047, 1007, 997, 965, 964, 992, 963, 1031, 1005, 1011, 1058, 979, 1006, 985, 1016, 983, 1029, 954, 1029, 1032, 1015, 991, 1016, 965, 1001, 978, 1020, 984, 972, 1057, 1058, 977, 974, 975, 1001, 1026, 955, 948, 994, 1036, 1023, 1039, 1011, 966, 1030, 1026, 1057, 972, 988, 1022, 1031, 1010, 1007, 1012, 1012, 988, 962, 1030, 992, 974, 963, 1012, 1032, 1059, 940, 988, 985, 1003, 1010, 1109, 999, 1000, 967, 981, 1064, 986, 1057, 1017, 1019, 1008, 1023, 1041, 1073, 1031, 1001, 1011, 1041, 1002, 1019, 986, 1037, 1022, 988, 1038, 948, 987, 1026, 987, 985, 1001, 974, 1026, 1009, 1013, 1043, 971, 1013, 1010, 961, 1041, 972, 970, 1014, 1005, 1040, 952, 975, 988, 1003, 952, 975, 991, 979, 993, 996, 1011, 979, 1039, 945, 1043, 987, 1026, 1057, 1053, 1051, 977, 1004, 1028, 963, 1015, 998, 1025, 1000, 990, 992, 1054, 1000, 1005, 998, 995, 1028, 961, 955, 947, 993, 1023, 975, 1021, 1006, 988, 1016, 1022, 1017, 1016, 990, 940, 964, 1023, 934, 1066, 999, 1027, 951, 953, 1026, 967, 970, 1054, 940, 1037, 988, 993, 978, 919, 937, 945, 969, 1015, 1035, 1019, 1011, 998, 993, 1007, 995, 991, 1007, 1011, 1012, 977, 1036, 946, 983, 996, 1020, 950, 962], [1009, 1021, 1011, 992, 985, 967, 952, 939, 1027, 1002, 1005, 974, 1008, 993, 968, 950, 1004, 1068, 1041, 1020, 1020, 1005, 1010, 983, 1010, 1005, 1008, 1049, 956, 951, 1004, 1027, 1035, 993, 1028, 963, 1002, 1012, 1000, 952, 1001, 1005, 1019, 1055, 998, 1027, 981, 991, 1068, 1010, 1061, 1005, 992, 1062, 954, 965, 1002, 1031, 976, 990, 1019, 982, 937, 987, 985, 1014, 972, 995, 1013, 1080, 1014, 993, 1011, 940, 952, 990, 1023, 984, 986, 950, 972, 946, 1053, 1016, 1002, 1003, 989, 995, 987, 971, 966, 1026, 1013, 973, 1016, 985, 1020, 1054, 1032, 1008, 973, 1020, 1009, 993, 975, 1022, 999, 984, 1052, 989, 1002, 1024, 1023, 1023, 1025, 1054, 1023, 944, 1013, 994, 1015, 970, 1003, 965, 961, 936, 1029, 982, 973, 978, 1015, 984, 1038, 999, 1013, 997, 1008, 1014, 988, 1013, 971, 950, 945, 1012, 1039, 1010, 1007, 1070, 1042, 1001, 989, 1049, 967, 947, 1005, 958, 1022, 998, 993, 963, 984, 1003, 1032, 1026, 985, 960, 996, 947, 996, 996, 994, 1000, 1022, 1017, 1062, 1016, 1041, 1031, 974, 1007, 989, 1001, 973, 1047, 1024, 1037, 978, 971, 983, 987, 1063, 1012, 1022, 1064, 1005, 978, 1020, 1004, 1042, 1013, 990, 969, 977, 920, 926, 990, 931, 1052, 1008, 1010, 979, 992, 1010, 1017, 945, 1005, 936, 984, 988, 968, 993, 984, 1013, 978, 987, 1038, 995, 990, 997, 1007, 989, 1022, 1014, 1008, 1005, 1032, 961, 985, 1031, 1002, 1020, 1001, 1030, 1001, 949, 1010, 1016, 1001, 991, 1076, 964, 957, 895, 1006, 1016, 1001], [982, 955, 1001, 1045, 1007, 973, 1010, 974, 973, 964, 999, 1032, 964, 984, 1027, 949, 1011, 1043, 982, 992, 995, 1015, 1030, 977, 1044, 985, 990, 956, 1019, 968, 951, 1000, 1037, 1011, 1003, 969, 980, 1001, 1052, 1043, 1038, 999, 1069, 997, 957, 967, 979, 966, 1003, 1000, 948, 994, 1006, 972, 1079, 1004, 990, 972, 988, 1013, 1045, 1037, 1050, 1030, 1005, 999, 1010, 1006, 966, 954, 1003, 1014, 1063, 1015, 1022, 995, 977, 1000, 1028, 986, 980, 972, 968, 1012, 985, 984, 1008, 1012, 1022, 974, 984, 1012, 1019, 988, 1011, 962, 1014, 988, 1022, 970, 943, 1009, 964, 992, 1002, 972, 995, 1027, 1067, 1031, 1002, 963, 993, 975, 962, 978, 999, 943, 1019, 1021, 999, 983, 1035, 1034, 987, 968, 1046, 1048, 999, 987, 1030, 968, 1059, 1063, 954, 1027, 967, 924, 1014, 1004, 921, 1019, 1016, 992, 1105, 979, 954, 1030, 1071, 1010, 954, 1019, 956, 997, 994, 1019, 1001, 972, 976, 986, 1007, 988, 984, 957, 1053, 1015, 1062, 1012, 986, 1061, 988, 1013, 1045, 1025, 953, 1007, 980, 995, 1012, 998, 1009, 1019, 1032, 969, 985, 1036, 1012, 995, 1020, 1023, 1051, 1023, 997, 1038, 985, 1032, 1046, 1074, 1004, 1016, 1047, 954, 986, 976, 1006, 990, 1014, 1049, 993, 984, 1015, 1053, 1027, 1004, 1009, 945, 999, 1012, 965, 1076, 1071, 1049, 945, 1032, 969, 990, 988, 973, 995, 1046, 1032, 983, 1022, 966, 1075, 1023, 1035, 1033, 1028, 997, 1010, 1058, 1045, 1025, 956, 1039, 970, 988, 1014, 1009, 1000, 1044, 1001, 970, 993, 1002], [1050, 992, 1015, 989, 1011, 994, 1042, 1014, 962, 973, 960, 1022, 1020, 986, 1007, 1005, 987, 1016, 936, 1029, 978, 1002, 1028, 1032, 975, 978, 1007, 943, 1057, 1022, 955, 1015, 953, 1041, 979, 945, 1034, 1040, 1065, 1001, 979, 1053, 988, 1023, 1029, 933, 976, 987, 980, 997, 1010, 987, 989, 985, 1031, 1025, 996, 1005, 980, 1046, 1040, 1034, 990, 985, 1033, 996, 998, 1029, 964, 970, 961, 991, 1007, 1010, 1005, 1051, 1012, 961, 990, 970, 1031, 999, 1019, 1006, 1054, 970, 976, 1056, 1008, 932, 988, 961, 1072, 997, 1011, 1014, 953, 984, 992, 1045, 987, 948, 1004, 980, 987, 975, 985, 1021, 1080, 996, 997, 992, 1009, 949, 967, 972, 996, 961, 1019, 1013, 997, 953, 1036, 992, 1029, 1032, 1046, 1018, 977, 993, 1028, 1030, 963, 959, 967, 999, 1036, 976, 1004, 1002, 974, 984, 1000, 994, 971, 955, 928, 979, 1046, 998, 951, 1022, 1039, 1034, 1012, 971, 954, 1015, 984, 1003, 1078, 1041, 1012, 985, 1041, 1014, 1012, 1035, 987, 1039, 971, 1034, 1008, 973, 999, 971, 979, 1014, 1011, 979, 1049, 999, 1008, 1016, 1000, 995, 1012, 966, 980, 992, 985, 1011, 969, 946, 1003, 979, 1051, 952, 993, 1012, 1021, 1010, 946, 978, 1016, 982, 982, 1007, 981, 989, 993, 1035, 989, 1042, 968, 1008, 1044, 949, 1031, 1011, 1024, 1016, 986, 989, 979, 958, 987, 1016, 973, 1018, 982, 1025, 1011, 1030, 1020, 979, 974, 990, 1014, 1029, 980, 986, 1010, 1034, 1002, 1001, 1064, 1020, 1030, 1058, 1016, 1014, 1003, 1014, 1025, 941], [981, 1040, 1005, 953, 974, 963, 1094, 1001, 1017, 1033, 1012, 1004, 1074, 1002, 1024, 977, 1025, 1003, 950, 998, 1036, 1015, 982, 986, 1002, 1030, 989, 902, 1026, 980, 988, 983, 1018, 1043, 992, 999, 984, 1008, 976, 967, 970, 977, 986, 1052, 942, 990, 988, 985, 950, 1085, 991, 1057, 937, 1026, 1005, 1006, 997, 988, 970, 1029, 981, 945, 958, 1012, 986, 1004, 1004, 998, 981, 1024, 983, 958, 994, 963, 1005, 999, 1012, 1009, 1020, 1021, 1021, 998, 979, 1012, 1000, 977, 1010, 1015, 972, 1028, 968, 967, 1026, 979, 1102, 979, 957, 1043, 993, 1003, 1030, 989, 1007, 1017, 1023, 1015, 1016, 1019, 992, 932, 971, 1022, 1019, 1068, 958, 1003, 994, 1008, 1005, 975, 975, 1004, 1045, 989, 1010, 1042, 1006, 1048, 1027, 1045, 1011, 1003, 1003, 975, 983, 1012, 1057, 1004, 1048, 1037, 1011, 993, 1006, 1003, 933, 999, 1009, 1019, 979, 1008, 926, 963, 1007, 1017, 1022, 955, 1001, 1009, 1035, 1044, 992, 1053, 1035, 951, 977, 1034, 1058, 1000, 1008, 992, 1027, 1002, 1004, 969, 999, 939, 978, 978, 996, 950, 1004, 954, 929, 1039, 1029, 1071, 993, 1022, 1021, 1006, 1039, 980, 950, 969, 1006, 1001, 994, 977, 1022, 1001, 1039, 974, 1007, 1000, 956, 1013, 1029, 977, 967, 949, 1024, 971, 974, 975, 1030, 969, 1017, 968, 944, 982, 986, 1015, 996, 1044, 1045, 997, 969, 1051, 999, 1057, 1013, 1037, 1059, 978, 949, 1017, 997, 1022, 970, 1028, 1020, 1030, 1041, 1021, 1006, 982, 1016, 992, 1042, 1041, 954, 974, 992, 1050, 964, 985], [980, 985, 987, 993, 959, 1054, 926, 1028, 1043, 1014, 1021, 1014, 945, 980, 946, 1037, 1013, 1037, 1041, 972, 988, 1012, 994, 1037, 1015, 1017, 1000, 977, 965, 974, 1022, 1049, 1018, 997, 985, 999, 941, 1008, 959, 924, 1074, 1020, 983, 1011, 984, 1026, 1010, 945, 1023, 972, 999, 977, 1031, 986, 1017, 1014, 987, 939, 1002, 1014, 969, 1017, 962, 994, 1016, 1003, 1001, 1033, 1035, 1007, 957, 1053, 1061, 1016, 962, 1058, 971, 1019, 995, 1019, 1037, 973, 1043, 1064, 1056, 984, 1076, 971, 1025, 1003, 1040, 1011, 1010, 962, 1038, 1019, 987, 988, 1028, 1007, 969, 986, 1011, 1068, 982, 983, 1024, 968, 984, 969, 1045, 1004, 1035, 938, 960, 976, 972, 1033, 953, 937, 978, 957, 1033, 1066, 996, 1008, 1007, 1009, 1022, 1072, 972, 931, 948, 998, 984, 1015, 1031, 1045, 970, 1000, 1002, 968, 971, 1015, 1005, 952, 1011, 1010, 978, 1005, 1010, 1060, 987, 989, 1039, 1002, 976, 1039, 981, 1068, 1012, 989, 1015, 1001, 1015, 1001, 936, 1016, 995, 970, 1006, 1013, 1002, 948, 1015, 995, 950, 993, 1009, 1024, 1030, 1006, 1027, 1003, 986, 979, 964, 989, 1001, 985, 1060, 957, 1032, 1004, 1052, 996, 977, 991, 945, 993, 979, 989, 979, 921, 1040, 973, 924, 1014, 1027, 943, 958, 1019, 1066, 1044, 1018, 1002, 1019, 1011, 1019, 1053, 1017, 979, 1026, 1042, 966, 993, 996, 1009, 956, 970, 998, 1003, 974, 980, 984, 1026, 1009, 1052, 985, 956, 1030, 986, 946, 1013, 1022, 986, 996, 968, 1020, 974, 959, 1002, 1009, 1018, 996, 992], [997, 998, 940, 944, 978, 993, 975, 1000, 1037, 1006, 1053, 968, 1001, 992, 1028, 1047, 1020, 951, 1027, 1005, 1047, 980, 1012, 1012, 973, 1009, 979, 1006, 997, 1037, 1048, 1003, 992, 996, 958, 980, 1021, 955, 1045, 917, 1012, 1041, 994, 1034, 1036, 987, 1011, 1020, 998, 1043, 1009, 966, 1029, 958, 944, 1010, 1025, 1079, 1031, 1054, 988, 1011, 963, 991, 988, 1032, 1047, 1004, 1005, 987, 992, 1008, 1044, 1004, 993, 1026, 1020, 981, 920, 1043, 1062, 1016, 970, 987, 968, 1041, 1003, 964, 998, 928, 1050, 979, 997, 983, 1014, 990, 1010, 1007, 947, 1054, 974, 1002, 1026, 989, 993, 999, 1000, 1032, 1005, 948, 1001, 990, 1017, 955, 982, 1084, 1018, 1083, 993, 1031, 949, 997, 1008, 1071, 989, 997, 1007, 1054, 929, 969, 1020, 1035, 1006, 1026, 1001, 1011, 996, 1034, 984, 972, 1035, 1021, 980, 955, 917, 1034, 1017, 995, 983, 978, 1002, 1031, 978, 991, 976, 1015, 1006, 984, 1004, 976, 1020, 957, 1015, 921, 974, 991, 984, 1020, 1037, 1022, 1042, 1043, 1026, 1018, 959, 998, 976, 960, 1021, 1023, 1006, 1000, 975, 980, 992, 1001, 1011, 951, 1006, 973, 981, 1048, 1010, 1016, 1014, 1042, 1037, 1041, 968, 994, 1003, 1041, 1028, 1005, 1000, 987, 981, 1021, 1014, 1022, 966, 962, 1004, 1033, 946, 989, 1006, 1036, 971, 961, 1023, 1009, 1053, 966, 1028, 969, 1015, 999, 985, 1014, 957, 1001, 962, 996, 978, 1016, 982, 985, 941, 1054, 959, 1018, 1038, 999, 992, 1008, 990, 1014, 1007, 995, 978, 1043, 977, 999, 1021, 1035], [1029, 1036, 1045, 971, 999, 1000, 1046, 971, 1000, 989, 1014, 977, 1064, 966, 965, 978, 984, 1018, 952, 1022, 1007, 940, 983, 936, 1002, 1042, 1061, 1000, 1027, 1063, 921, 994, 997, 938, 1004, 1055, 1017, 1010, 1016, 1017, 1051, 1017, 1028, 1008, 971, 1022, 965, 1011, 1043, 1021, 988, 1010, 991, 1011, 993, 969, 927, 1053, 1007, 1048, 996, 1021, 1011, 1020, 968, 1013, 971, 978, 997, 1024, 1007, 956, 959, 1078, 1015, 951, 986, 1016, 982, 1006, 1045, 964, 964, 975, 998, 962, 1059, 1020, 980, 1022, 1056, 981, 979, 1031, 954, 949, 986, 974, 991, 986, 1007, 1022, 922, 963, 953, 995, 1006, 1019, 987, 989, 972, 1018, 991, 1023, 978, 1028, 998, 1006, 978, 987, 1016, 990, 958, 965, 978, 977, 970, 958, 1040, 947, 1003, 987, 1000, 974, 985, 1020, 1024, 994, 1024, 997, 1021, 982, 975, 1030, 1046, 982, 1007, 1002, 974, 1004, 1019, 979, 994, 998, 1040, 985, 1008, 1019, 1023, 1012, 1044, 1020, 1013, 981, 1006, 958, 1031, 1030, 1025, 974, 988, 1000, 1019, 939, 1020, 1043, 990, 968, 984, 1024, 946, 1000, 967, 1024, 1051, 1027, 1005, 1029, 972, 1001, 953, 969, 1006, 1017, 949, 985, 966, 993, 963, 975, 1033, 1048, 1000, 991, 1068, 1046, 966, 1031, 1000, 978, 992, 963, 1021, 994, 1053, 998, 1071, 1037, 1039, 1024, 1000, 964, 981, 973, 1047, 991, 1033, 988, 960, 1024, 981, 936, 1046, 987, 983, 993, 986, 995, 1025, 992, 1011, 1004, 989, 987, 1021, 974, 1011, 976, 1012, 1051, 994, 1058, 929, 999, 1011, 981], [1084, 1010, 996, 977, 958, 1035, 970, 942, 975, 1012, 1040, 949, 1005, 1015, 1003, 1008, 999, 988, 960, 1008, 1011, 1021, 1050, 1008, 1009, 1004, 967, 977, 1030, 1022, 975, 931, 960, 1000, 1032, 1040, 1029, 1020, 965, 1023, 1045, 987, 1030, 1004, 1011, 1031, 1001, 1008, 1004, 987, 1022, 984, 1005, 974, 1013, 992, 1018, 1004, 1047, 998, 994, 953, 1018, 984, 1008, 1016, 980, 1011, 1020, 1054, 1006, 998, 964, 1027, 984, 1006, 1028, 946, 1014, 1015, 1032, 1029, 986, 1045, 1022, 1045, 1037, 1014, 977, 1055, 1060, 951, 989, 991, 994, 978, 1008, 999, 1021, 978, 1019, 1026, 1008, 998, 1041, 982, 951, 933, 1039, 993, 1035, 1004, 993, 1028, 1042, 1036, 998, 1037, 1005, 972, 1065, 979, 1019, 1008, 950, 958, 1004, 1053, 1027, 989, 1054, 1011, 974, 997, 1004, 961, 952, 994, 1002, 1056, 932, 1061, 1023, 990, 995, 1060, 1019, 983, 1072, 943, 1019, 970, 1002, 1038, 997, 1000, 992, 1012, 999, 1058, 955, 1000, 1001, 971, 1053, 1045, 1020, 957, 1008, 993, 980, 970, 1029, 955, 984, 1043, 977, 1060, 1028, 1026, 1063, 962, 1004, 972, 916, 1033, 1022, 1000, 990, 967, 1050, 1029, 1066, 1013, 1010, 997, 1016, 1022, 955, 995, 1023, 965, 1006, 1030, 1081, 952, 1013, 1040, 991, 1013, 961, 1024, 1024, 977, 995, 939, 1029, 977, 1037, 1007, 1028, 1051, 1042, 1029, 982, 1028, 987, 1006, 982, 1041, 981, 996, 1018, 1017, 966, 995, 1032, 1008, 1003, 997, 959, 1079, 1044, 1045, 1058, 1034, 1003, 980, 991, 990, 961, 1046, 1011, 1046, 975, 1023], [1003, 957, 991, 1030, 1021, 978, 1022, 1018, 991, 1032, 973, 1024, 1068, 979, 984, 952, 962, 987, 963, 964, 1018, 997, 926, 1035, 1030, 996, 995, 1063, 954, 1063, 1037, 1019, 987, 1087, 1038, 977, 987, 1050, 1058, 1007, 980, 994, 1027, 955, 1040, 1019, 1069, 1028, 1022, 963, 1006, 1030, 1035, 1024, 979, 1026, 1006, 963, 1054, 984, 1013, 1001, 1036, 983, 923, 1006, 1066, 933, 1001, 1023, 932, 989, 956, 1080, 967, 956, 1038, 1035, 992, 976, 1003, 979, 1047, 1089, 1003, 985, 1005, 946, 1074, 998, 991, 981, 1036, 1014, 1026, 972, 967, 980, 1040, 1026, 950, 988, 958, 987, 1060, 983, 1014, 1048, 1022, 991, 975, 995, 943, 976, 1028, 988, 997, 983, 992, 976, 1020, 965, 1024, 1040, 1031, 1084, 1001, 1042, 989, 983, 993, 1002, 992, 999, 991, 991, 976, 1005, 961, 1017, 1026, 997, 987, 1029, 980, 1003, 1000, 965, 1014, 967, 1081, 956, 968, 982, 1031, 1016, 966, 966, 1029, 989, 1047, 994, 1034, 1023, 958, 916, 1018, 981, 974, 1095, 964, 1017, 1047, 1052, 943, 1024, 990, 1030, 962, 1028, 926, 982, 959, 953, 989, 1006, 1024, 1069, 1048, 996, 1022, 1027, 988, 996, 971, 963, 1026, 959, 1014, 1019, 1004, 971, 1011, 1025, 1005, 971, 1041, 995, 1038, 1012, 1003, 1007, 977, 1009, 1004, 1059, 1028, 1007, 965, 1019, 930, 1018, 970, 998, 1028, 969, 1037, 1048, 998, 985, 993, 1021, 993, 1029, 977, 969, 967, 942, 1004, 995, 1032, 1017, 971, 1007, 1018, 982, 986, 1032, 950, 974, 982, 1024, 1028, 994, 1045, 998], [1010, 995, 970, 1017, 969, 952, 986, 985, 1022, 969, 998, 1015, 999, 1002, 954, 993, 992, 931, 964, 1017, 999, 973, 1001, 974, 977, 1030, 984, 1034, 950, 1007, 1009, 988, 997, 977, 988, 972, 1015, 995, 1032, 983, 966, 957, 979, 1002, 1015, 980, 952, 961, 977, 1009, 998, 993, 940, 1014, 983, 1069, 1014, 1051, 1047, 992, 1024, 997, 1009, 984, 988, 959, 1042, 1000, 1030, 1045, 976, 1027, 1061, 999, 993, 1021, 977, 1011, 971, 1011, 1017, 1023, 984, 1028, 976, 950, 1039, 1062, 1013, 1050, 1001, 1014, 1005, 1056, 998, 998, 991, 1002, 966, 1046, 993, 1016, 1008, 963, 942, 944, 965, 962, 1008, 1013, 959, 1047, 1014, 1019, 1041, 975, 1074, 995, 984, 1020, 1038, 978, 972, 998, 1015, 1020, 947, 1007, 991, 965, 1013, 1049, 1041, 995, 960, 977, 1010, 975, 1005, 1005, 1019, 983, 975, 1050, 1033, 1010, 969, 987, 945, 950, 1039, 1005, 981, 1049, 1007, 1006, 950, 999, 960, 1018, 1023, 998, 1020, 1020, 987, 1043, 1056, 1047, 950, 1041, 983, 988, 987, 993, 990, 1010, 1022, 1011, 984, 991, 1000, 1035, 996, 976, 1011, 986, 992, 971, 1057, 1032, 999, 1058, 1010, 1044, 969, 962, 991, 1000, 985, 977, 1006, 1011, 986, 1013, 981, 963, 995, 1023, 1040, 1063, 980, 993, 989, 957, 998, 953, 1037, 940, 1002, 975, 1023, 999, 955, 991, 1019, 982, 988, 953, 985, 986, 1005, 972, 994, 955, 1012, 973, 980, 1060, 950, 963, 986, 1020, 1015, 1027, 998, 1005, 967, 1062, 1013, 1007, 946, 960, 1023, 997, 1054, 966], [1055, 925, 963, 956, 939, 1034, 1000, 1021, 1020, 1043, 1033, 1006, 952, 1059, 985, 953, 976, 971, 1027, 1028, 984, 1034, 978, 1097, 944, 1015, 975, 959, 975, 1043, 1020, 993, 1042, 1041, 974, 1006, 946, 940, 993, 941, 990, 958, 1050, 989, 1009, 1005, 963, 960, 986, 1008, 967, 1001, 1000, 991, 968, 1021, 948, 931, 1016, 992, 966, 966, 1013, 1025, 1021, 999, 1060, 1015, 1005, 1002, 1063, 975, 987, 1046, 1006, 1016, 969, 988, 1014, 960, 1002, 992, 949, 1005, 957, 1045, 989, 997, 978, 970, 995, 1061, 960, 955, 996, 1005, 1022, 1019, 1019, 1087, 999, 1027, 1001, 1031, 919, 971, 1039, 970, 1036, 999, 943, 964, 1021, 1004, 1003, 968, 1034, 1040, 975, 952, 977, 968, 994, 1003, 924, 977, 1013, 1008, 1030, 1020, 957, 1003, 1017, 1038, 1025, 994, 1052, 1013, 961, 996, 1046, 998, 967, 1001, 1026, 969, 999, 1001, 1000, 1003, 943, 1019, 975, 1017, 961, 979, 1060, 983, 1030, 967, 976, 939, 1032, 925, 961, 1023, 1033, 1039, 1003, 981, 989, 1032, 1080, 1004, 972, 987, 1040, 1020, 1001, 988, 1012, 990, 1011, 991, 1000, 983, 983, 977, 1067, 1029, 953, 993, 1000, 1011, 1021, 959, 1071, 1014, 972, 978, 1049, 994, 1050, 1012, 1055, 1014, 1007, 1000, 1037, 990, 1015, 1028, 975, 1008, 977, 1062, 1014, 1042, 1050, 981, 1004, 985, 1026, 1006, 1006, 1050, 1015, 1040, 969, 981, 954, 997, 1034, 977, 956, 963, 985, 968, 1055, 1000, 1019, 1002, 1016, 967, 983, 984, 1002, 957, 976, 1003, 927, 995, 1010, 1033, 998, 970], [984, 1003, 958, 1029, 986, 1044, 1041, 1010, 960, 1046, 968, 972, 1031, 998, 962, 1012, 968, 970, 1005, 970, 961, 1051, 1023, 949, 997, 932, 919, 1057, 985, 966, 1001, 982, 988, 994, 972, 1000, 1020, 1031, 986, 1047, 1016, 1000, 1034, 981, 979, 1007, 983, 968, 963, 1017, 952, 1035, 987, 1043, 968, 964, 1028, 1023, 995, 970, 1068, 1004, 959, 1026, 1016, 1019, 950, 956, 1015, 1047, 1022, 1004, 1020, 976, 985, 952, 991, 961, 959, 975, 1036, 972, 968, 1017, 1067, 1021, 1009, 1002, 977, 1027, 1031, 1026, 1023, 964, 1026, 980, 1002, 1051, 957, 979, 1007, 997, 1021, 1040, 986, 1014, 984, 1027, 1001, 1010, 977, 1016, 995, 1042, 986, 952, 1019, 1060, 1022, 990, 977, 975, 937, 948, 1037, 1003, 1012, 964, 952, 1024, 977, 988, 1021, 1012, 961, 991, 986, 974, 972, 997, 924, 1035, 1031, 1043, 1035, 985, 955, 1007, 1010, 943, 1029, 994, 998, 942, 990, 965, 1015, 998, 1013, 958, 1021, 1042, 1046, 979, 1023, 986, 970, 981, 986, 1021, 981, 997, 1057, 979, 1035, 1008, 1054, 1021, 986, 956, 993, 960, 984, 1047, 1012, 966, 1064, 950, 974, 975, 1015, 984, 1010, 1008, 1007, 988, 1024, 1034, 1035, 945, 995, 1013, 972, 925, 955, 1014, 1029, 1043, 976, 986, 1002, 982, 1009, 982, 1025, 1007, 961, 984, 1075, 1006, 982, 1032, 958, 1030, 964, 1012, 1045, 1051, 1042, 1002, 958, 959, 960, 950, 1042, 1021, 958, 1057, 990, 987, 1002, 987, 1066, 1030, 973, 939, 954, 1092, 1045, 1013, 1004, 974, 1027, 990, 966, 992], [985, 975, 977, 988, 1034, 959, 1020, 1050, 1007, 946, 962, 1000, 969, 1053, 963, 988, 1008, 971, 1037, 998, 1047, 1030, 1008, 983, 1008, 987, 1036, 990, 1064, 996, 1007, 989, 976, 969, 1018, 1057, 1009, 984, 958, 1034, 964, 988, 1040, 960, 1043, 1047, 1013, 1001, 1028, 1022, 984, 947, 984, 916, 944, 1019, 954, 961, 1013, 1024, 984, 1006, 950, 903, 1002, 1000, 986, 1058, 1032, 1019, 918, 1012, 1006, 993, 1037, 996, 1034, 967, 1000, 1002, 976, 1020, 997, 987, 1041, 996, 1008, 948, 965, 1027, 984, 1060, 1040, 1015, 1034, 1016, 971, 956, 1060, 998, 1040, 1006, 1000, 994, 997, 997, 1037, 1028, 1001, 991, 1011, 1007, 1069, 1032, 991, 1003, 984, 1000, 1044, 982, 1004, 1027, 988, 981, 1019, 1010, 988, 948, 1020, 994, 1004, 1034, 982, 1012, 1057, 977, 1034, 1002, 989, 1006, 1021, 979, 993, 1012, 1037, 934, 1032, 982, 1006, 1001, 953, 1036, 1026, 1025, 1010, 1068, 1035, 1007, 991, 1013, 1061, 981, 982, 977, 935, 1025, 1009, 1006, 998, 1004, 1045, 981, 1018, 965, 1033, 962, 999, 1016, 1050, 1003, 983, 994, 990, 972, 1006, 994, 968, 1022, 985, 956, 1009, 943, 1063, 969, 1034, 1031, 1054, 954, 1022, 977, 1057, 953, 972, 1020, 1035, 1035, 960, 959, 1043, 949, 1029, 1004, 1025, 955, 976, 962, 1000, 986, 990, 1004, 974, 941, 963, 1016, 1025, 999, 919, 1037, 997, 977, 989, 1043, 946, 1052, 965, 1045, 998, 1007, 970, 1043, 1001, 930, 1010, 969, 993, 1029, 1044, 975, 1019, 993, 980, 953, 992, 1026, 1020, 987], [1019, 970, 1030, 1059, 1021, 955, 1050, 969, 1040, 1015, 1013, 1007, 991, 1009, 1008, 1071, 1023, 997, 967, 1049, 953, 1051, 1061, 1007, 979, 1016, 977, 1036, 1012, 1048, 1051, 938, 995, 966, 966, 968, 956, 967, 972, 992, 953, 1032, 1022, 998, 947, 982, 1035, 1018, 1019, 947, 1030, 1009, 985, 1009, 1006, 1088, 1042, 986, 949, 987, 991, 1012, 1002, 989, 1068, 968, 1050, 1019, 979, 1006, 1052, 1008, 1002, 983, 987, 981, 981, 982, 971, 994, 1021, 1015, 941, 995, 1027, 1018, 1054, 995, 985, 972, 962, 976, 1024, 955, 950, 1040, 1003, 976, 1015, 987, 1019, 981, 1031, 957, 999, 1047, 1011, 1002, 1018, 959, 971, 1044, 975, 986, 1022, 1030, 987, 1000, 994, 965, 957, 1015, 952, 993, 997, 979, 995, 1050, 985, 1000, 1010, 983, 1020, 1063, 1056, 993, 951, 939, 978, 1053, 995, 1004, 1064, 1043, 959, 1010, 1042, 960, 1059, 1004, 1012, 986, 1008, 1001, 923, 998, 941, 955, 1038, 997, 977, 1023, 1026, 1037, 1041, 1085, 1022, 974, 954, 1054, 1017, 991, 1011, 979, 920, 1032, 993, 1001, 992, 952, 1029, 944, 946, 981, 975, 1030, 1041, 1010, 1038, 941, 960, 1019, 1016, 962, 989, 990, 1010, 1005, 945, 1009, 1017, 1029, 1044, 1052, 1020, 986, 970, 974, 1003, 912, 983, 1015, 966, 1036, 1007, 972, 1037, 973, 990, 965, 998, 1032, 1028, 1008, 998, 1017, 965, 1025, 1009, 1003, 1002, 1009, 973, 1006, 946, 1012, 1025, 967, 1031, 1009, 1014, 1062, 982, 990, 983, 982, 1041, 1008, 1004, 1064, 1027, 1058, 960, 976, 1014, 1012], [953, 1015, 1002, 1001, 979, 976, 927, 1007, 998, 1088, 940, 1015, 1010, 1039, 1024, 997, 989, 992, 1025, 1000, 964, 1033, 999, 1009, 977, 945, 987, 1010, 1037, 998, 972, 1068, 1023, 1025, 1019, 1031, 977, 1011, 1021, 1007, 1023, 1080, 974, 983, 975, 1020, 988, 1002, 988, 990, 975, 984, 1021, 996, 1066, 1000, 1008, 983, 1058, 1026, 941, 982, 968, 1015, 1011, 1031, 941, 1013, 951, 1010, 996, 985, 988, 1046, 1011, 985, 986, 988, 1010, 954, 992, 982, 996, 971, 961, 989, 1075, 974, 949, 1024, 1065, 984, 1058, 992, 1001, 1026, 1039, 969, 1004, 962, 958, 1009, 1104, 1046, 989, 1029, 1009, 948, 1070, 975, 973, 1016, 1017, 1045, 991, 1031, 906, 977, 1040, 964, 995, 995, 1003, 1008, 1003, 968, 956, 1005, 982, 1008, 1026, 942, 987, 1028, 1051, 1059, 967, 943, 993, 1007, 1037, 972, 987, 989, 1002, 1003, 944, 1073, 1016, 1048, 1005, 979, 1017, 1044, 1002, 997, 1005, 996, 995, 997, 1023, 1012, 1024, 1015, 1050, 973, 972, 1046, 1053, 1027, 1068, 1027, 987, 1023, 945, 954, 1002, 956, 969, 1005, 1010, 1030, 981, 1038, 1013, 960, 952, 1025, 1033, 1023, 997, 980, 1019, 1025, 1005, 997, 1021, 956, 971, 1004, 980, 975, 1037, 963, 1000, 1000, 994, 1015, 1036, 1007, 964, 1022, 995, 1042, 1014, 972, 986, 1031, 1022, 1005, 1017, 1010, 1094, 963, 946, 973, 1021, 966, 967, 996, 994, 1012, 990, 949, 989, 1002, 961, 999, 1005, 1001, 1025, 1013, 1056, 1018, 1025, 1013, 1031, 987, 1022, 986, 974, 1015, 1003, 1026, 999, 1082], [1106, 961, 957, 978, 955, 1015, 1008, 1016, 1022, 1021, 1014, 986, 1012, 1008, 992, 1023, 1020, 974, 970, 992, 990, 947, 999, 990, 1035, 1031, 973, 1015, 1036, 991, 1062, 982, 1024, 1019, 987, 1007, 970, 955, 987, 1023, 1014, 1031, 1008, 1019, 1023, 957, 1031, 1032, 981, 1009, 1032, 1037, 999, 1056, 998, 961, 1000, 1002, 975, 1043, 1000, 1038, 986, 1058, 1034, 999, 1018, 989, 954, 999, 1071, 1008, 964, 998, 994, 977, 976, 979, 1002, 1050, 969, 1020, 1040, 1030, 950, 954, 1049, 966, 964, 1023, 952, 994, 1030, 970, 1021, 999, 970, 995, 955, 975, 965, 992, 947, 976, 969, 1003, 930, 970, 1000, 1050, 1067, 1019, 1016, 1023, 963, 1030, 1046, 1011, 1049, 989, 1012, 969, 1000, 1006, 1037, 1004, 1011, 1001, 965, 1047, 1003, 937, 980, 963, 950, 1028, 1000, 981, 984, 1046, 997, 962, 1037, 976, 1074, 996, 983, 1019, 971, 951, 941, 1008, 988, 975, 1018, 973, 998, 1038, 1038, 957, 1044, 1016, 1048, 998, 1054, 997, 968, 977, 1028, 989, 1012, 1006, 997, 961, 968, 1027, 997, 1045, 989, 1024, 999, 975, 951, 989, 957, 976, 1070, 1049, 978, 942, 1026, 970, 965, 1027, 1026, 1068, 996, 994, 1001, 1025, 1021, 1051, 1043, 983, 970, 984, 1032, 953, 989, 1004, 954, 1076, 948, 981, 988, 985, 1047, 994, 994, 932, 1018, 1060, 996, 1051, 1006, 1008, 1006, 950, 1025, 998, 1078, 1013, 922, 994, 998, 998, 965, 991, 1075, 963, 961, 973, 986, 1056, 951, 979, 982, 1030, 1020, 1025, 1009, 1031, 1035, 1018, 969, 999], [1038, 967, 994, 990, 928, 978, 1025, 1019, 1024, 931, 1059, 1047, 962, 1018, 995, 1007, 1010, 1045, 970, 1046, 996, 1033, 1058, 974, 1040, 1033, 1002, 952, 986, 1051, 1010, 984, 1033, 1006, 930, 980, 1035, 1023, 969, 989, 1001, 1017, 962, 992, 992, 999, 1001, 984, 995, 1014, 990, 1007, 1028, 939, 999, 986, 996, 984, 1007, 1000, 978, 968, 990, 1038, 994, 973, 971, 930, 1005, 1038, 1000, 1041, 977, 1022, 944, 1026, 1058, 995, 994, 982, 1037, 976, 952, 1062, 1001, 980, 1034, 976, 1010, 979, 969, 1024, 991, 942, 932, 960, 981, 991, 1030, 1019, 1047, 958, 1037, 986, 1011, 1030, 941, 996, 982, 1003, 976, 1025, 1071, 1035, 980, 966, 946, 947, 997, 979, 1008, 990, 987, 1001, 1009, 982, 941, 1085, 982, 1042, 969, 1014, 1009, 972, 970, 972, 1048, 976, 1011, 1017, 1020, 947, 997, 976, 1016, 1021, 1007, 987, 992, 995, 945, 988, 976, 983, 996, 994, 1022, 937, 981, 1018, 999, 1013, 989, 1038, 991, 1012, 1047, 1066, 983, 1053, 1013, 969, 1020, 1030, 1033, 1039, 1003, 942, 1002, 1001, 955, 987, 920, 1008, 1053, 1034, 1053, 996, 1003, 980, 976, 947, 986, 1010, 1009, 991, 962, 1015, 990, 970, 1024, 953, 1005, 970, 966, 1077, 1002, 1075, 1009, 984, 991, 1061, 1018, 1033, 1070, 989, 968, 974, 1050, 956, 990, 1000, 1004, 980, 1008, 1042, 979, 1057, 1008, 974, 971, 981, 954, 944, 1034, 985, 1003, 1025, 1048, 1019, 1019, 999, 975, 1021, 903, 996, 998, 1017, 1005, 1010, 1055, 1012, 948, 968, 1029, 1009], [968, 1066, 982, 1009, 1023, 959, 1021, 1055, 990, 1008, 1006, 932, 1034, 1045, 1074, 1012, 1028, 993, 1052, 1030, 1041, 1005, 981, 1013, 1015, 979, 993, 983, 973, 1038, 967, 1016, 1005, 1000, 1050, 1054, 998, 956, 976, 978, 967, 1014, 999, 985, 987, 987, 993, 1037, 974, 1022, 1020, 961, 981, 973, 1011, 1005, 1012, 984, 987, 971, 1010, 993, 1025, 998, 956, 1039, 1015, 952, 1008, 1012, 955, 1046, 1058, 979, 1033, 1004, 991, 1048, 984, 1003, 1001, 1048, 940, 1036, 1041, 1037, 1024, 983, 993, 1008, 983, 964, 972, 977, 1039, 1010, 1053, 1042, 1001, 1020, 962, 990, 980, 1020, 992, 1034, 980, 1023, 913, 992, 1084, 1035, 964, 1019, 995, 903, 992, 1058, 934, 985, 980, 1053, 981, 993, 1014, 998, 947, 970, 997, 1024, 948, 1031, 1010, 990, 1019, 970, 943, 999, 1023, 1014, 991, 1001, 1015, 981, 1010, 997, 979, 1024, 1062, 1018, 1051, 947, 1021, 1046, 1052, 1039, 986, 991, 1006, 980, 940, 1014, 998, 1078, 1030, 955, 977, 989, 1052, 1029, 1002, 1006, 935, 1015, 997, 949, 1063, 1018, 1024, 992, 943, 960, 1014, 961, 1011, 987, 1004, 1061, 930, 1029, 981, 971, 1022, 1002, 967, 1046, 1083, 1002, 983, 1012, 1000, 995, 960, 1013, 956, 943, 938, 983, 931, 1044, 990, 999, 998, 960, 954, 1025, 1043, 1000, 1005, 1011, 1001, 1029, 1083, 1003, 958, 968, 1028, 991, 965, 1016, 950, 999, 946, 988, 1019, 1040, 985, 1040, 1026, 1018, 1044, 998, 1038, 979, 965, 968, 1009, 1025, 989, 1029, 1021, 1002, 1004, 979, 1008, 969], [1027, 991, 1019, 983, 1002, 967, 1009, 986, 958, 1006, 1016, 991, 1022, 959, 1010, 1058, 993, 994, 954, 969, 997, 1053, 1028, 976, 1048, 982, 971, 977, 982, 1028, 1011, 964, 1073, 961, 996, 1018, 998, 1033, 994, 1000, 1047, 1018, 1051, 1041, 1018, 1009, 971, 995, 980, 1019, 940, 1011, 1006, 1002, 1006, 981, 1034, 989, 1007, 996, 1021, 972, 1001, 1015, 1007, 1009, 1033, 994, 1001, 1038, 1056, 985, 1012, 1008, 1012, 1021, 946, 1021, 998, 992, 1043, 1006, 1008, 977, 977, 985, 962, 1046, 1011, 1057, 1037, 963, 1013, 962, 955, 1000, 975, 1004, 930, 1004, 1051, 996, 1014, 1025, 966, 973, 1012, 961, 995, 1001, 1049, 1027, 961, 962, 930, 987, 953, 979, 1018, 985, 1005, 1038, 983, 1015, 1003, 993, 1046, 978, 1017, 958, 1028, 945, 1032, 959, 1008, 1049, 1040, 1025, 1018, 1039, 1004, 976, 970, 990, 1016, 1020, 942, 1028, 1029, 956, 975, 997, 1027, 969, 975, 1043, 1020, 974, 966, 978, 1035, 1016, 1000, 1006, 986, 974, 976, 1019, 992, 1044, 1017, 1014, 1042, 1075, 1006, 1009, 928, 1007, 1040, 971, 960, 1015, 940, 977, 1013, 995, 1023, 979, 1036, 977, 939, 1019, 963, 961, 987, 1076, 965, 1008, 958, 1018, 1044, 1026, 1010, 1072, 956, 1020, 979, 982, 1001, 1039, 1040, 992, 985, 984, 1058, 1019, 985, 989, 1009, 1046, 1022, 983, 1000, 972, 1045, 992, 1028, 962, 1050, 1028, 1012, 1013, 1007, 965, 973, 1034, 955, 1004, 993, 969, 1008, 977, 967, 1049, 1009, 1026, 974, 974, 992, 996, 971, 1051, 1024, 1080, 1038, 997], [1036, 969, 958, 1011, 985, 1004, 1002, 993, 1023, 1009, 965, 1027, 970, 1011, 936, 993, 1028, 989, 945, 966, 951, 969, 973, 990, 996, 986, 1082, 989, 975, 974, 1050, 1012, 1017, 1047, 1008, 1067, 1010, 1019, 1026, 982, 987, 1034, 992, 990, 1056, 972, 943, 1026, 976, 989, 1038, 1044, 973, 1044, 950, 916, 1059, 987, 976, 998, 947, 966, 1028, 989, 1015, 1021, 927, 1004, 986, 965, 1010, 1011, 1016, 994, 1043, 1021, 950, 1009, 971, 994, 954, 961, 967, 979, 983, 1010, 948, 979, 977, 981, 966, 1018, 976, 994, 957, 971, 968, 986, 990, 993, 975, 1016, 971, 995, 1001, 1025, 988, 971, 984, 1033, 1034, 1039, 1029, 1004, 979, 979, 967, 1003, 986, 1029, 1038, 1043, 1032, 981, 1028, 998, 1039, 1057, 987, 1048, 962, 1000, 1027, 986, 1008, 1000, 1014, 1030, 1082, 1054, 983, 1001, 989, 987, 1070, 977, 956, 1010, 974, 963, 980, 963, 936, 967, 1059, 1027, 1012, 928, 1072, 1011, 1010, 1027, 967, 1011, 1015, 991, 989, 987, 993, 1085, 992, 1037, 1007, 1018, 1002, 974, 997, 1018, 997, 1030, 1021, 994, 1019, 968, 1020, 1046, 962, 981, 1008, 1020, 967, 958, 1011, 989, 930, 954, 983, 959, 982, 953, 1009, 1012, 998, 933, 956, 1013, 1018, 1034, 1058, 993, 1001, 977, 1015, 981, 1004, 982, 932, 1042, 1064, 1023, 965, 1011, 956, 975, 956, 954, 989, 1009, 1036, 991, 995, 1027, 996, 1002, 1035, 993, 970, 980, 1006, 978, 1020, 1022, 1000, 1065, 1045, 1014, 1021, 976, 1007, 1011, 1032, 1035, 1029, 1036, 1023, 998], [978, 990, 989, 980, 1039, 991, 1047, 989, 1018, 1031, 960, 983, 1017, 986, 998, 1027, 994, 1012, 1057, 1003, 1035, 984, 1017, 977, 1009, 963, 998, 983, 1022, 988, 998, 1026, 968, 984, 983, 958, 936, 1078, 992, 989, 1043, 987, 953, 1018, 1039, 996, 1044, 990, 1029, 997, 1000, 1019, 981, 965, 983, 981, 983, 994, 972, 1012, 988, 943, 962, 1041, 971, 999, 1045, 984, 959, 1072, 1015, 1016, 1011, 995, 1011, 950, 934, 986, 1018, 1015, 1006, 964, 992, 1053, 969, 963, 1013, 996, 997, 973, 993, 1055, 1023, 1003, 1001, 1004, 986, 964, 954, 981, 968, 1010, 989, 954, 1038, 1024, 1048, 994, 1044, 1019, 1006, 980, 1023, 1005, 981, 961, 965, 1087, 1055, 981, 977, 1032, 963, 1089, 990, 1011, 1007, 987, 1010, 1023, 1040, 1032, 992, 966, 993, 980, 1018, 946, 1045, 987, 1056, 1011, 1035, 1042, 995, 1064, 997, 1051, 1005, 1042, 969, 1021, 1009, 1011, 1077, 982, 1004, 963, 990, 992, 993, 1047, 1003, 1037, 1015, 934, 987, 1012, 1035, 1027, 1042, 998, 972, 1058, 1011, 1025, 990, 996, 973, 933, 977, 1000, 1047, 973, 996, 995, 1045, 1011, 1003, 970, 1013, 1029, 1011, 977, 1001, 1002, 1019, 941, 976, 1027, 967, 1066, 949, 1071, 1041, 1035, 1000, 981, 1049, 984, 983, 998, 1031, 1012, 975, 1041, 1011, 998, 1031, 945, 1000, 1001, 1066, 1016, 1004, 999, 1011, 936, 987, 1002, 1033, 1011, 1017, 1035, 998, 990, 981, 1041, 991, 935, 995, 1012, 979, 956, 1024, 1011, 1020, 1012, 1030, 1025, 957, 974, 1009, 1006, 1013, 1020], [1036, 1030, 997, 986, 1049, 976, 936, 1033, 984, 1011, 991, 982, 1025, 1025, 991, 1019, 992, 1032, 985, 987, 1031, 998, 971, 1003, 973, 1038, 992, 962, 962, 1030, 1048, 990, 974, 971, 1039, 989, 1002, 1001, 1042, 1075, 1045, 953, 969, 974, 978, 1066, 1027, 1047, 1016, 1069, 967, 1026, 998, 988, 979, 1001, 1036, 1039, 961, 971, 1005, 1017, 972, 999, 992, 1004, 1005, 1024, 1011, 980, 1046, 1058, 939, 977, 1006, 1009, 1059, 1001, 1039, 1003, 988, 1062, 982, 1030, 968, 968, 974, 977, 1023, 1039, 1040, 999, 1017, 1000, 1061, 1005, 993, 1008, 1014, 994, 1024, 1043, 1007, 1008, 1047, 1020, 979, 979, 1025, 974, 994, 999, 1006, 1034, 968, 1014, 1020, 1005, 1028, 1022, 1048, 1056, 977, 989, 956, 1069, 937, 967, 995, 980, 1035, 1069, 1006, 994, 987, 977, 1010, 983, 1003, 1024, 1047, 994, 1008, 981, 1008, 998, 985, 985, 1003, 969, 991, 977, 961, 1047, 1033, 1022, 1036, 958, 1006, 984, 998, 1005, 976, 990, 1029, 1025, 941, 1076, 1042, 994, 972, 1069, 1000, 994, 996, 957, 1008, 982, 1019, 1000, 947, 993, 1028, 1034, 940, 1039, 1014, 959, 997, 960, 975, 983, 1001, 997, 1033, 976, 980, 1050, 1037, 1023, 987, 966, 957, 982, 1083, 987, 1048, 1017, 988, 975, 1045, 965, 1021, 1027, 960, 1064, 935, 1049, 1012, 1018, 1053, 970, 1012, 991, 973, 1019, 979, 1058, 1047, 1011, 1002, 965, 979, 1052, 953, 1020, 1021, 1056, 984, 1017, 1008, 1006, 967, 1036, 995, 1019, 1091, 1036, 1000, 1007, 1019, 1019, 1015, 1004, 997, 990], [973, 990, 1034, 1001, 954, 991, 971, 995, 1066, 1002, 1001, 1027, 966, 969, 985, 979, 1016, 1022, 1010, 1021, 1026, 973, 1025, 1008, 990, 991, 1046, 1010, 945, 993, 1033, 945, 986, 954, 945, 995, 1005, 1022, 1037, 995, 1029, 995, 967, 1022, 1029, 996, 895, 986, 1008, 1037, 1011, 998, 1015, 983, 1038, 1004, 959, 1049, 992, 1010, 1029, 986, 924, 988, 1038, 944, 1054, 1011, 1094, 1021, 1005, 966, 1024, 947, 977, 1003, 1012, 974, 1012, 959, 984, 1006, 1035, 965, 1018, 1012, 1047, 977, 989, 1037, 1036, 980, 1030, 976, 1008, 953, 1029, 1051, 977, 1033, 985, 976, 987, 974, 965, 1032, 973, 1086, 987, 982, 985, 958, 997, 1019, 965, 1000, 975, 992, 1087, 973, 1008, 1015, 1006, 1038, 993, 1001, 1020, 1009, 961, 942, 987, 1030, 1050, 968, 991, 992, 1007, 994, 980, 1015, 995, 991, 1040, 1002, 999, 1005, 1016, 952, 1024, 1003, 1066, 937, 1037, 977, 1005, 999, 1013, 996, 984, 1088, 1041, 978, 975, 1009, 980, 1009, 984, 1013, 1035, 1017, 1020, 1015, 1019, 1004, 997, 1021, 936, 1025, 973, 977, 1015, 961, 938, 983, 997, 1043, 998, 986, 1017, 999, 1027, 1037, 989, 989, 987, 998, 1009, 1021, 1029, 1001, 1004, 983, 1013, 1049, 1033, 978, 1016, 1036, 1006, 989, 981, 956, 922, 977, 1061, 1046, 979, 1010, 996, 1014, 1041, 999, 1006, 989, 974, 1029, 1018, 1021, 1019, 988, 943, 1065, 984, 952, 976, 982, 1001, 988, 973, 951, 1006, 1052, 994, 997, 945, 1037, 954, 993, 1007, 1041, 994, 949, 984, 1054, 939, 993], [1007, 1080, 921, 1008, 962, 1031, 990, 965, 1003, 1018, 1009, 994, 1068, 968, 997, 1037, 1022, 1034, 978, 954, 955, 987, 1007, 1061, 992, 1022, 1031, 1006, 999, 975, 1062, 1055, 993, 1025, 978, 974, 1000, 984, 1016, 981, 972, 996, 1013, 1012, 991, 955, 1030, 1055, 1026, 948, 948, 969, 1013, 967, 971, 1031, 975, 973, 1021, 1014, 1033, 970, 1011, 936, 998, 1045, 987, 1026, 960, 1027, 978, 1001, 988, 989, 999, 1007, 1017, 1040, 973, 1016, 1017, 1040, 1016, 948, 1016, 948, 961, 1010, 1042, 1036, 996, 975, 1009, 993, 965, 1045, 1024, 962, 957, 1025, 1026, 980, 1093, 1033, 974, 1033, 1037, 994, 1034, 970, 945, 986, 1011, 1018, 1038, 997, 987, 1016, 987, 1049, 1003, 971, 1023, 1041, 1074, 968, 985, 965, 979, 996, 952, 958, 994, 988, 991, 997, 969, 1031, 1018, 948, 1013, 986, 993, 977, 1017, 983, 1002, 924, 982, 978, 962, 962, 1043, 984, 1042, 1009, 984, 1031, 1019, 1000, 987, 1004, 955, 999, 991, 1014, 1042, 1013, 959, 977, 984, 1008, 1030, 954, 1043, 973, 992, 1053, 996, 1074, 1066, 990, 922, 981, 1006, 1035, 987, 980, 1008, 1036, 978, 960, 1008, 1002, 980, 979, 1015, 979, 960, 1003, 997, 951, 985, 1048, 951, 1018, 1015, 994, 999, 1010, 1001, 1029, 1045, 970, 1003, 987, 983, 1012, 996, 974, 988, 1016, 1045, 1032, 1033, 1043, 979, 1017, 991, 1020, 986, 955, 966, 1007, 977, 1032, 940, 986, 1053, 999, 1020, 965, 1003, 1027, 996, 971, 969, 941, 1019, 1035, 985, 942, 981, 968, 1022, 1025], [1016, 966, 963, 1023, 958, 1025, 984, 1006, 1003, 982, 990, 1044, 1015, 962, 1013, 978, 1012, 997, 978, 981, 1007, 1000, 997, 984, 1044, 980, 1081, 1066, 972, 1034, 946, 1040, 1048, 950, 962, 1018, 1005, 1025, 1027, 968, 943, 995, 1004, 1019, 1027, 1037, 962, 1038, 1002, 975, 998, 967, 1015, 1002, 1003, 971, 959, 1025, 970, 989, 988, 981, 1005, 989, 984, 1018, 995, 1034, 966, 1037, 920, 992, 1024, 1030, 989, 905, 1000, 1013, 1011, 1040, 1010, 1040, 980, 956, 969, 999, 1008, 983, 1016, 1011, 1019, 1032, 1021, 1013, 1062, 965, 956, 975, 998, 1005, 1078, 983, 1026, 991, 1023, 961, 1034, 1031, 966, 986, 1016, 1023, 1013, 1020, 1045, 1047, 998, 942, 972, 1038, 968, 1006, 950, 1034, 1024, 962, 965, 989, 963, 1028, 1001, 958, 1012, 1004, 996, 1011, 953, 1005, 985, 981, 1039, 1052, 1004, 965, 1067, 977, 1001, 1005, 968, 962, 1049, 1031, 1038, 960, 989, 1044, 1055, 978, 971, 966, 985, 1076, 967, 1018, 1056, 962, 1036, 976, 1013, 1013, 991, 983, 998, 997, 1045, 976, 1033, 1028, 964, 996, 1029, 998, 1070, 983, 1029, 996, 983, 1013, 1014, 1062, 1015, 1027, 1005, 1023, 978, 1007, 998, 1030, 1003, 1017, 1025, 1003, 1009, 1028, 1013, 1025, 1022, 1013, 1010, 1013, 1012, 1014, 994, 1001, 995, 1022, 1033, 1023, 1003, 1016, 1066, 1008, 984, 949, 998, 1004, 990, 1001, 999, 984, 1023, 986, 1019, 992, 1015, 995, 1025, 1029, 1052, 959, 1035, 979, 1019, 997, 979, 1014, 1015, 978, 1008, 985, 1025, 1057, 1001, 1048, 995, 989], [998, 1068, 1003, 1037, 1014, 1054, 1033, 1021, 1041, 1003, 1003, 986, 1002, 1012, 1036, 1000, 1003, 1043, 927, 967, 1059, 1012, 949, 980, 998, 1012, 1004, 938, 1009, 1081, 994, 1077, 962, 1025, 962, 1010, 971, 1000, 904, 976, 1037, 1044, 1051, 1061, 948, 1000, 992, 1016, 1035, 978, 1019, 1011, 1036, 1046, 1002, 1017, 929, 963, 983, 1003, 969, 1015, 986, 986, 995, 1025, 1021, 1026, 1024, 1019, 1035, 1014, 1016, 991, 993, 1048, 1025, 976, 1039, 1029, 1014, 972, 1038, 1025, 1034, 1048, 966, 983, 972, 977, 1035, 1015, 991, 944, 992, 1007, 963, 980, 1032, 1028, 1086, 1057, 954, 986, 1000, 1009, 980, 996, 1027, 963, 1025, 963, 999, 997, 1013, 969, 1010, 965, 992, 1036, 1049, 1026, 991, 962, 1045, 981, 1003, 1007, 1014, 947, 965, 988, 1013, 1001, 1043, 1003, 1002, 1026, 1000, 1058, 1013, 947, 1000, 1028, 974, 1022, 1035, 1014, 1028, 1031, 1017, 1036, 1004, 904, 1032, 1007, 988, 1014, 986, 993, 1030, 1034, 943, 999, 998, 936, 1023, 953, 936, 998, 997, 912, 982, 981, 958, 1019, 1022, 1044, 994, 1013, 969, 938, 1024, 1000, 997, 966, 1042, 994, 1007, 992, 972, 1021, 994, 1040, 1002, 1007, 1023, 995, 995, 1005, 1053, 966, 1049, 1037, 1041, 1012, 958, 993, 1006, 960, 981, 1005, 965, 983, 1005, 1002, 991, 983, 979, 1004, 999, 962, 1016, 1059, 1024, 1017, 1017, 1023, 1011, 1039, 1022, 1003, 1039, 1025, 966, 989, 981, 995, 976, 1013, 1012, 1012, 1041, 1024, 1036, 941, 1037, 974, 984, 1007, 995, 919, 1028, 999, 1035, 1025], [979, 956, 963, 996, 971, 971, 1013, 990, 1004, 965, 984, 984, 1008, 997, 1027, 952, 1052, 1043, 1053, 1035, 1005, 999, 968, 1014, 977, 997, 1017, 993, 986, 1049, 1011, 1075, 981, 1015, 1044, 991, 1011, 1042, 1007, 1011, 1000, 1001, 1015, 1002, 991, 1014, 1009, 1014, 967, 993, 1047, 1054, 973, 1028, 996, 1007, 948, 952, 977, 1067, 975, 1046, 1015, 1034, 951, 966, 996, 1009, 1020, 991, 1032, 976, 927, 986, 1010, 1050, 1030, 1014, 984, 994, 1018, 957, 1081, 998, 1071, 1025, 964, 991, 1000, 1073, 1027, 974, 1008, 973, 985, 982, 1026, 947, 968, 1000, 956, 991, 965, 966, 1014, 1000, 1020, 1046, 965, 999, 998, 1039, 1032, 994, 1010, 978, 989, 992, 1048, 991, 967, 1040, 993, 1008, 967, 1016, 984, 988, 1019, 1007, 1022, 976, 1020, 1045, 1015, 956, 1032, 961, 948, 948, 955, 961, 979, 1018, 1034, 1035, 1009, 1020, 964, 1011, 991, 1014, 990, 976, 985, 991, 998, 1025, 994, 922, 1030, 963, 1014, 1016, 1014, 984, 1056, 1041, 966, 987, 1007, 1004, 944, 1036, 1079, 1001, 989, 1010, 998, 944, 997, 964, 958, 1013, 991, 1027, 971, 1019, 983, 1056, 966, 1007, 1050, 1039, 973, 1011, 1014, 1042, 976, 1013, 968, 1029, 1024, 1002, 1024, 948, 1008, 987, 965, 960, 1018, 981, 1034, 1027, 985, 969, 1042, 1009, 1014, 1029, 997, 983, 1010, 1003, 992, 994, 1034, 926, 1050, 971, 979, 960, 940, 979, 1019, 977, 993, 945, 1044, 987, 1009, 958, 1005, 1007, 1000, 996, 982, 978, 1004, 962, 913, 984, 997, 929, 1008, 951], [1015, 921, 996, 950, 1019, 983, 1014, 993, 988, 1009, 940, 975, 908, 1026, 1020, 1040, 1007, 1007, 984, 1047, 1001, 964, 993, 1003, 941, 1051, 1028, 995, 980, 990, 968, 970, 980, 1019, 993, 981, 1009, 1038, 955, 958, 976, 981, 989, 995, 1018, 1051, 989, 1017, 979, 958, 1050, 924, 999, 1006, 1036, 1020, 958, 1092, 951, 1026, 1013, 977, 938, 1018, 1001, 1027, 1009, 999, 1054, 1001, 955, 1001, 999, 1016, 1031, 1015, 1020, 1017, 963, 931, 1043, 994, 991, 962, 970, 1019, 974, 957, 1055, 993, 1006, 971, 998, 970, 1033, 939, 987, 981, 994, 1018, 975, 1038, 1044, 1041, 971, 955, 1052, 977, 1001, 960, 981, 994, 969, 978, 984, 981, 1030, 1010, 997, 1019, 998, 1026, 962, 1038, 997, 1026, 940, 1110, 1053, 953, 1006, 999, 968, 998, 1010, 974, 1020, 935, 979, 1055, 984, 960, 979, 1020, 956, 983, 992, 972, 979, 1029, 1004, 915, 983, 959, 998, 988, 1000, 1005, 974, 973, 1021, 1011, 1014, 1027, 1054, 954, 965, 970, 981, 1050, 939, 1014, 963, 1058, 986, 1003, 1031, 986, 985, 993, 967, 954, 1001, 1009, 1026, 952, 951, 980, 1044, 942, 1005, 993, 1005, 975, 1029, 981, 968, 1009, 1121, 999, 983, 1010, 1014, 955, 1010, 990, 940, 947, 973, 1024, 918, 986, 1025, 1034, 963, 945, 989, 992, 1010, 1024, 1004, 974, 1009, 1041, 978, 1017, 1055, 979, 1009, 1000, 997, 1011, 906, 972, 968, 1015, 1018, 1038, 948, 989, 947, 994, 1038, 1014, 988, 1016, 1040, 967, 964, 985, 1012, 950, 1003, 975, 1011, 912], [1026, 945, 966, 1021, 1030, 985, 996, 984, 1002, 982, 1075, 959, 983, 992, 958, 998, 978, 1029, 1027, 1051, 972, 970, 1006, 997, 1005, 1061, 1008, 1024, 994, 1036, 932, 1010, 1012, 972, 998, 1002, 988, 999, 981, 961, 1020, 988, 1013, 991, 1065, 1054, 996, 1023, 1035, 991, 992, 1002, 1029, 992, 981, 954, 1000, 1033, 993, 1000, 1038, 1004, 978, 965, 1003, 993, 1013, 957, 994, 1010, 936, 1004, 1006, 1033, 1025, 951, 1045, 970, 1046, 1024, 941, 983, 1000, 1034, 989, 988, 1001, 1068, 1012, 959, 1020, 1061, 1053, 942, 1034, 1019, 1031, 1050, 1017, 995, 983, 1025, 1021, 983, 1069, 1063, 945, 1006, 1011, 1007, 978, 989, 960, 944, 1016, 1009, 983, 972, 998, 1015, 1026, 1006, 962, 988, 953, 1089, 1010, 1032, 994, 1039, 1019, 999, 1028, 1024, 1054, 1007, 1063, 985, 1003, 1005, 999, 991, 938, 1067, 983, 1002, 1019, 997, 1015, 1012, 949, 1028, 980, 1007, 1025, 1009, 954, 952, 968, 976, 975, 1053, 948, 989, 1014, 948, 1003, 1004, 1008, 976, 1005, 997, 970, 946, 992, 1009, 999, 925, 1042, 1004, 970, 962, 959, 1031, 1041, 947, 960, 1000, 1018, 932, 985, 963, 987, 1012, 987, 981, 1077, 1049, 1020, 1039, 1065, 1020, 992, 1036, 1007, 940, 1050, 1016, 1011, 973, 970, 1033, 1018, 1033, 1060, 1043, 921, 1010, 976, 971, 1003, 1000, 1002, 937, 1031, 990, 938, 1016, 989, 1013, 977, 1035, 994, 1031, 1024, 994, 968, 1005, 1026, 1030, 993, 956, 1009, 958, 979, 1017, 979, 943, 1009, 1010, 961, 1010, 1042, 987, 971, 1001], [1022, 957, 990, 1056, 996, 977, 1075, 1032, 995, 930, 1054, 993, 996, 999, 921, 1004, 1055, 991, 1019, 1015, 1012, 1024, 1012, 986, 1007, 1008, 1034, 991, 987, 996, 947, 995, 1011, 1030, 952, 1005, 964, 1010, 997, 975, 989, 1033, 1061, 1005, 1010, 967, 990, 967, 988, 993, 1060, 1010, 1062, 964, 974, 957, 1060, 1003, 965, 975, 1029, 1027, 1057, 998, 1035, 924, 942, 1010, 957, 1030, 1051, 1011, 1025, 1010, 1013, 1002, 1034, 1037, 1046, 994, 950, 963, 1027, 988, 1049, 995, 1011, 1035, 1041, 1014, 1000, 1021, 989, 1042, 984, 1015, 1008, 1007, 986, 996, 1005, 1045, 956, 992, 1036, 957, 1008, 975, 1049, 1009, 1038, 1008, 982, 1023, 988, 1006, 1001, 997, 933, 1052, 1058, 1000, 1009, 1013, 992, 936, 998, 987, 1008, 1003, 983, 968, 1027, 1033, 1008, 1005, 940, 1015, 1006, 994, 1000, 967, 1028, 996, 948, 994, 1053, 983, 983, 980, 972, 973, 986, 1040, 976, 1002, 955, 945, 981, 954, 1006, 961, 1009, 1019, 980, 1011, 1034, 968, 943, 1000, 1000, 1038, 993, 1045, 985, 968, 938, 1028, 962, 1019, 993, 999, 972, 957, 1007, 1025, 1035, 974, 990, 961, 1060, 1010, 1065, 1041, 1004, 1025, 1059, 1086, 1014, 985, 1012, 970, 1003, 1009, 1003, 981, 997, 1021, 977, 964, 1064, 994, 1003, 1020, 1072, 969, 1000, 970, 1013, 955, 926, 1030, 958, 949, 978, 1023, 989, 1021, 1020, 1039, 1014, 987, 1065, 1017, 1043, 968, 1036, 1067, 1007, 988, 1007, 1023, 985, 960, 983, 982, 949, 1040, 1043, 1004, 987, 978, 1023, 1007, 988, 1026], [958, 1044, 1023, 970, 938, 1027, 1013, 1013, 944, 985, 1030, 964, 1041, 991, 1042, 980, 999, 972, 1055, 995, 988, 975, 998, 982, 1012, 1014, 1037, 962, 1021, 1016, 995, 1013, 969, 1036, 1013, 997, 1062, 988, 1033, 933, 1003, 1025, 989, 969, 911, 988, 990, 1002, 972, 1021, 1008, 932, 933, 964, 1025, 1025, 996, 1005, 998, 983, 1035, 990, 986, 1041, 1021, 1010, 995, 971, 1006, 996, 1012, 991, 1023, 995, 939, 979, 991, 964, 974, 993, 966, 1058, 1019, 1018, 1044, 977, 1005, 1020, 950, 1024, 1003, 1005, 989, 962, 969, 1007, 964, 933, 985, 1027, 982, 1014, 1036, 994, 989, 1039, 953, 979, 926, 960, 1038, 1046, 1018, 1044, 1008, 1022, 1082, 1010, 1029, 1002, 981, 1022, 980, 994, 1042, 1031, 971, 999, 993, 1014, 944, 997, 963, 986, 975, 984, 1034, 1013, 967, 1006, 1033, 991, 1012, 1023, 972, 971, 1089, 1006, 966, 1009, 1015, 1040, 986, 1009, 1010, 954, 1032, 1004, 1016, 973, 1006, 974, 982, 966, 977, 959, 994, 968, 1019, 957, 984, 1021, 980, 1014, 972, 1023, 1027, 948, 1006, 1009, 976, 1034, 995, 969, 1009, 993, 993, 1034, 998, 1011, 1003, 1055, 960, 1017, 1032, 982, 1002, 1051, 1018, 1009, 1008, 923, 970, 1031, 967, 1007, 974, 957, 1035, 989, 1073, 1007, 991, 993, 996, 971, 1022, 996, 1058, 1004, 991, 953, 992, 1027, 1005, 948, 955, 974, 979, 977, 1022, 969, 999, 1004, 1016, 1024, 986, 1017, 950, 941, 1019, 1052, 1017, 985, 1000, 1020, 985, 1030, 964, 992, 980, 978, 987, 991, 1011, 1030], [1039, 971, 1021, 1019, 987, 1027, 1042, 962, 1027, 999, 1015, 999, 973, 1002, 984, 1010, 1062, 1032, 1074, 1037, 977, 988, 1006, 1067, 1015, 1008, 969, 1024, 956, 1002, 1034, 981, 1019, 962, 1017, 983, 1021, 1016, 977, 974, 957, 984, 913, 1035, 999, 1027, 1005, 1007, 1005, 1041, 1050, 993, 1059, 1018, 1027, 983, 945, 992, 999, 1018, 1027, 986, 951, 1004, 1027, 1073, 1011, 1013, 969, 983, 1030, 972, 1030, 969, 985, 1004, 951, 991, 996, 1005, 1034, 994, 1015, 1004, 1009, 1056, 1012, 1045, 1031, 1007, 969, 969, 998, 1069, 1083, 1029, 1003, 994, 1001, 952, 981, 1056, 1035, 1005, 1028, 975, 1005, 933, 1009, 989, 1005, 1063, 975, 932, 1028, 1049, 1074, 1038, 1035, 1009, 1027, 1036, 934, 1031, 1020, 989, 987, 957, 1003, 1008, 1032, 1010, 998, 957, 978, 991, 952, 983, 970, 1035, 1013, 993, 1004, 950, 995, 962, 1011, 959, 972, 1050, 950, 1043, 935, 1030, 1023, 1000, 1048, 968, 969, 981, 954, 972, 998, 1028, 999, 983, 1029, 939, 988, 933, 993, 997, 1006, 974, 1033, 1039, 1038, 1011, 1054, 990, 924, 1017, 1049, 1004, 971, 976, 1002, 1012, 987, 1021, 1050, 968, 971, 1019, 1008, 965, 1053, 991, 974, 967, 979, 980, 1022, 981, 1027, 935, 992, 991, 989, 991, 1021, 978, 992, 984, 975, 1079, 969, 1020, 1029, 1057, 996, 999, 974, 1021, 1006, 988, 986, 976, 1018, 1051, 987, 1053, 974, 1061, 1014, 993, 988, 1035, 1005, 954, 1001, 981, 935, 999, 1004, 975, 1042, 986, 1032, 1015, 999, 959, 1008, 965, 1045, 988], [984, 1067, 1040, 1024, 1049, 1063, 925, 1042, 1008, 1005, 1024, 934, 1012, 983, 1047, 1068, 995, 966, 950, 1003, 1014, 1049, 966, 978, 926, 1007, 973, 1041, 990, 997, 924, 1001, 998, 982, 969, 999, 1022, 943, 978, 954, 958, 1023, 1064, 1005, 1009, 992, 970, 975, 1019, 1037, 981, 947, 1031, 1000, 1000, 972, 944, 962, 965, 1026, 978, 959, 997, 1002, 1062, 1027, 914, 996, 983, 973, 1024, 1015, 1036, 983, 984, 1008, 976, 994, 978, 988, 967, 1039, 960, 1002, 1030, 1007, 1000, 1022, 1042, 986, 1047, 1037, 1047, 981, 992, 979, 984, 1029, 1009, 1020, 1004, 994, 986, 931, 992, 990, 1010, 1007, 1039, 996, 993, 966, 941, 946, 980, 1013, 1046, 1001, 1017, 1022, 1036, 977, 992, 1014, 1002, 976, 1008, 974, 1001, 988, 1051, 987, 1012, 1014, 978, 945, 1007, 970, 1047, 996, 990, 954, 1032, 1005, 1039, 1015, 1052, 1025, 1017, 994, 992, 982, 979, 1012, 1002, 953, 968, 1002, 1009, 1038, 1070, 998, 1016, 1001, 938, 1034, 982, 974, 1015, 1060, 1015, 995, 1023, 992, 1019, 1004, 985, 989, 994, 992, 983, 1013, 963, 953, 1002, 961, 977, 1013, 999, 983, 970, 965, 935, 1002, 978, 984, 1008, 1079, 968, 991, 1020, 1022, 930, 1069, 960, 996, 1033, 980, 979, 977, 1045, 1011, 932, 990, 994, 1042, 997, 1001, 1073, 983, 1005, 977, 966, 986, 1007, 1002, 1005, 998, 1024, 988, 976, 1005, 942, 948, 1005, 1029, 952, 951, 1014, 989, 1038, 996, 1006, 962, 987, 968, 983, 1026, 965, 939, 962, 964, 1031, 1024, 1036, 987], [1015, 977, 993, 975, 951, 989, 1008, 964, 991, 1048, 1016, 921, 1013, 1054, 988, 947, 954, 987, 985, 977, 1018, 968, 918, 1021, 966, 1005, 1023, 971, 967, 979, 1028, 1081, 969, 1044, 1036, 1026, 990, 1033, 979, 1014, 986, 1012, 988, 989, 987, 990, 1001, 1003, 1007, 1026, 1022, 1022, 1013, 960, 1062, 1006, 962, 1010, 1001, 996, 1018, 1007, 1009, 1024, 992, 971, 995, 1019, 965, 948, 971, 943, 1095, 989, 969, 980, 1000, 997, 1036, 948, 1007, 959, 999, 1056, 1035, 958, 1074, 994, 1020, 924, 970, 1004, 1023, 1025, 1012, 1027, 973, 988, 993, 948, 1008, 1001, 1027, 952, 1067, 1006, 998, 1051, 1037, 984, 940, 1012, 1012, 962, 1035, 954, 981, 1006, 1054, 1057, 931, 1039, 1040, 983, 1008, 990, 966, 1046, 1030, 1011, 1036, 954, 982, 999, 1026, 982, 1060, 929, 1072, 994, 965, 1039, 961, 1034, 994, 974, 951, 999, 1040, 929, 986, 1008, 953, 1010, 932, 994, 1033, 987, 1025, 993, 979, 997, 1025, 1037, 1049, 1005, 1055, 985, 965, 973, 978, 986, 1003, 976, 983, 971, 1036, 967, 1016, 999, 1052, 998, 1004, 1054, 1005, 1017, 951, 988, 1009, 1059, 941, 1026, 995, 965, 1004, 986, 992, 961, 1064, 1073, 993, 995, 964, 983, 969, 1036, 958, 1023, 995, 1029, 964, 1015, 1011, 1024, 1005, 944, 1013, 958, 1007, 996, 1065, 1014, 1097, 980, 1064, 972, 987, 987, 1001, 1011, 1000, 1018, 1017, 1034, 1036, 1080, 892, 1023, 1062, 1015, 1028, 959, 1024, 973, 971, 958, 999, 1003, 950, 948, 1079, 1002, 1009, 995, 958, 975], [994, 992, 1003, 966, 1059, 947, 965, 993, 953, 995, 980, 960, 1011, 1017, 976, 930, 964, 1010, 949, 1016, 1044, 972, 1120, 1024, 1043, 975, 973, 1030, 948, 1005, 1014, 1027, 961, 992, 994, 1023, 980, 1019, 952, 1030, 1004, 1009, 999, 1050, 987, 1014, 1044, 991, 1009, 1013, 1082, 976, 980, 1003, 1005, 1025, 973, 1046, 992, 950, 1055, 1030, 1052, 998, 928, 1026, 987, 992, 994, 922, 1037, 1009, 981, 993, 1023, 997, 995, 1014, 997, 948, 1030, 929, 970, 959, 1020, 993, 1002, 1064, 974, 993, 987, 1033, 1032, 996, 963, 1011, 1040, 983, 1013, 986, 984, 1004, 1050, 991, 1019, 1021, 999, 968, 1033, 996, 988, 1015, 1036, 997, 910, 985, 1000, 1010, 1002, 998, 982, 1016, 983, 977, 978, 937, 999, 1016, 1000, 986, 1030, 996, 978, 1009, 1023, 1043, 1020, 1008, 1003, 1005, 988, 948, 982, 1008, 999, 962, 1022, 1019, 1003, 979, 1007, 971, 1006, 1030, 966, 980, 973, 991, 1044, 972, 1060, 1005, 1001, 961, 993, 1018, 993, 987, 997, 968, 970, 985, 1006, 1033, 1053, 990, 926, 963, 1008, 992, 1009, 1003, 950, 953, 1002, 1041, 972, 1004, 1008, 1022, 1008, 949, 1015, 927, 974, 1035, 1067, 1004, 973, 1040, 1018, 959, 1022, 992, 1015, 1024, 979, 967, 1017, 1022, 948, 988, 1011, 1005, 1014, 978, 990, 1012, 1004, 1014, 977, 975, 983, 1001, 1025, 1029, 962, 1052, 924, 995, 998, 1009, 956, 1012, 982, 1000, 1031, 1000, 979, 1028, 985, 938, 953, 982, 977, 1020, 991, 1010, 988, 1011, 1029, 1043, 1014, 978, 989, 1055], [1024, 1010, 1012, 1001, 986, 1018, 1006, 925, 1007, 1009, 1019, 988, 1000, 1025, 1036, 1017, 969, 966, 987, 983, 1060, 1021, 1067, 1027, 1029, 1008, 1014, 1029, 1034, 979, 1003, 990, 972, 989, 1018, 1060, 926, 982, 1026, 973, 1021, 987, 1008, 991, 997, 1013, 993, 972, 948, 1039, 979, 1029, 979, 1009, 952, 1020, 1071, 1026, 1071, 950, 1055, 1004, 1029, 974, 1023, 1046, 989, 997, 995, 971, 1003, 973, 995, 959, 1031, 1014, 984, 1025, 948, 997, 995, 989, 1013, 1016, 1118, 945, 984, 1031, 1022, 990, 977, 971, 1032, 943, 1020, 985, 1004, 989, 920, 969, 972, 1003, 995, 1027, 986, 951, 933, 989, 978, 937, 1025, 1078, 1014, 1024, 959, 999, 994, 955, 938, 996, 968, 1002, 949, 1067, 1034, 945, 997, 1005, 996, 979, 986, 974, 937, 1021, 979, 980, 994, 978, 1035, 1005, 1045, 1009, 1023, 1014, 938, 1007, 953, 971, 1004, 1072, 881, 1013, 982, 1015, 984, 974, 978, 992, 1036, 1001, 944, 1012, 1007, 1007, 1000, 1012, 1001, 1007, 996, 1023, 979, 974, 982, 979, 980, 1025, 1004, 993, 991, 1007, 1061, 995, 1029, 994, 1006, 1018, 999, 1029, 1023, 991, 983, 982, 1019, 953, 966, 1026, 1059, 1038, 995, 1066, 946, 980, 989, 979, 1018, 1049, 1020, 975, 1032, 973, 1050, 1031, 1018, 1014, 985, 1005, 1005, 975, 1027, 957, 1035, 1019, 997, 946, 1034, 978, 1018, 1026, 947, 949, 1023, 1019, 1016, 981, 974, 1050, 1005, 966, 973, 996, 986, 1010, 1011, 1030, 955, 970, 1021, 993, 1002, 982, 983, 1020, 987, 1039, 997, 1070], [992, 935, 1017, 1034, 999, 1051, 1033, 974, 1025, 972, 1018, 964, 1000, 969, 972, 971, 1020, 907, 1008, 1014, 924, 1015, 1077, 970, 1038, 995, 997, 1007, 978, 1035, 975, 997, 1059, 982, 986, 1020, 1015, 977, 994, 999, 1013, 1004, 974, 1016, 1033, 994, 985, 983, 1023, 983, 1014, 996, 986, 1019, 984, 971, 938, 1014, 979, 990, 981, 1039, 1007, 1062, 1008, 935, 1012, 1008, 999, 976, 1056, 974, 992, 1006, 1031, 984, 1014, 996, 1028, 1034, 948, 1029, 973, 998, 1034, 1005, 977, 970, 996, 1051, 1013, 1041, 1017, 1019, 970, 946, 981, 956, 1037, 1024, 1065, 998, 1000, 1015, 1059, 953, 985, 962, 1010, 972, 1005, 947, 1005, 1010, 997, 980, 965, 950, 1023, 981, 1022, 1004, 1056, 1019, 1002, 1013, 1018, 1021, 966, 961, 966, 1051, 1000, 984, 973, 985, 924, 1026, 976, 1004, 1047, 1011, 995, 1011, 1061, 1026, 1021, 977, 1006, 1034, 976, 986, 1030, 1037, 1024, 968, 993, 989, 988, 980, 959, 1025, 962, 957, 1009, 986, 1063, 1028, 950, 1008, 967, 1030, 1056, 1018, 989, 935, 1051, 1030, 1002, 993, 998, 984, 1009, 1028, 1065, 1045, 1050, 1019, 993, 975, 1021, 980, 983, 1033, 1047, 984, 1042, 1001, 1006, 1018, 994, 998, 985, 1011, 1013, 972, 1024, 1048, 967, 983, 987, 970, 1003, 933, 996, 1001, 1019, 990, 1002, 965, 940, 989, 993, 1027, 1014, 1052, 1020, 980, 991, 1028, 998, 1029, 1053, 1014, 971, 984, 992, 966, 997, 979, 1036, 1010, 995, 993, 1016, 998, 1051, 958, 999, 979, 970, 970, 949, 1021, 1019, 995], [963, 1001, 985, 1037, 947, 1010, 1030, 988, 1066, 988, 989, 924, 1018, 998, 1057, 950, 975, 1012, 923, 983, 1002, 1010, 975, 996, 949, 982, 1016, 985, 1014, 1007, 1013, 929, 1039, 994, 1054, 964, 1015, 1029, 1045, 962, 1000, 1033, 965, 1002, 1003, 971, 975, 1013, 991, 1005, 1034, 1002, 927, 1030, 998, 962, 995, 997, 962, 1012, 994, 1024, 1011, 1012, 1000, 994, 973, 974, 968, 1063, 979, 1012, 1005, 995, 958, 1011, 1011, 1017, 1032, 983, 984, 1031, 1024, 1007, 971, 966, 957, 1004, 998, 1041, 999, 1021, 1012, 1043, 977, 963, 1027, 979, 958, 993, 1039, 985, 1024, 942, 1015, 1034, 944, 1054, 1047, 1020, 1017, 924, 1006, 1011, 1009, 1012, 1015, 992, 998, 1030, 987, 966, 1050, 988, 958, 1016, 1028, 1071, 988, 1017, 1027, 1037, 968, 986, 1015, 1032, 1017, 960, 1025, 940, 1003, 989, 997, 1020, 998, 1062, 1006, 996, 964, 992, 985, 1008, 1016, 1021, 1008, 1015, 988, 1003, 966, 929, 989, 982, 1035, 966, 1054, 1002, 987, 995, 965, 982, 957, 1008, 1001, 908, 989, 1025, 1001, 1037, 1018, 995, 1010, 989, 978, 957, 1030, 1016, 996, 1011, 1021, 1024, 1049, 962, 977, 1040, 1003, 1007, 1006, 995, 999, 972, 1060, 965, 1016, 1022, 1037, 959, 1020, 1020, 916, 1040, 1025, 970, 987, 1025, 1037, 963, 994, 997, 965, 960, 994, 1004, 1016, 1023, 1017, 1037, 996, 966, 987, 1039, 998, 1003, 1069, 1010, 1020, 981, 944, 1015, 947, 978, 993, 1016, 958, 1015, 1063, 1044, 1004, 963, 1010, 970, 1053, 961, 930, 995, 1025, 1013], [1004, 1033, 978, 1042, 1042, 992, 1045, 1008, 1019, 1015, 1014, 937, 978, 983, 1012, 976, 1035, 981, 1006, 1000, 963, 1031, 1008, 978, 996, 1010, 1028, 957, 1004, 1000, 975, 1037, 968, 1076, 1007, 991, 944, 1013, 983, 984, 997, 1009, 1016, 988, 999, 1027, 982, 1005, 993, 1034, 968, 1026, 906, 981, 1021, 979, 986, 958, 1049, 993, 1039, 1020, 1003, 997, 1013, 965, 1012, 1070, 964, 1023, 973, 985, 947, 991, 988, 1028, 1011, 1022, 991, 979, 925, 969, 1028, 979, 1024, 954, 965, 1031, 1033, 1006, 937, 1065, 1023, 1062, 1019, 1017, 1067, 1030, 1040, 994, 1019, 1039, 978, 1013, 965, 980, 1012, 1053, 971, 1012, 992, 968, 1034, 971, 1021, 1014, 977, 1046, 1012, 979, 998, 970, 1014, 970, 972, 967, 965, 1088, 1017, 1008, 1004, 1089, 996, 1012, 1011, 994, 930, 1008, 970, 1032, 949, 997, 944, 1000, 974, 977, 1011, 986, 947, 1042, 999, 934, 937, 1020, 960, 986, 968, 971, 956, 990, 970, 982, 988, 994, 1059, 999, 972, 1005, 1060, 950, 998, 1038, 959, 951, 979, 1017, 988, 958, 1000, 997, 1048, 1012, 1014, 1055, 951, 968, 951, 1022, 1033, 982, 981, 1019, 976, 990, 979, 974, 1021, 1010, 1025, 1044, 932, 1002, 996, 1005, 985, 1022, 977, 1019, 995, 964, 1002, 1021, 935, 1043, 1009, 991, 1020, 985, 957, 1025, 965, 983, 1055, 961, 999, 1029, 981, 938, 1021, 1009, 977, 1050, 939, 1012, 1007, 971, 976, 1016, 989, 974, 1020, 1010, 1024, 997, 938, 1039, 995, 1017, 951, 986, 1044, 1006, 940, 982, 984, 997], [1011, 949, 1008, 976, 1037, 968, 996, 1067, 1060, 1037, 1005, 1052, 953, 1001, 968, 1062, 1032, 1009, 1052, 1002, 992, 1068, 1003, 1017, 999, 1049, 942, 1033, 1002, 1017, 996, 1001, 989, 968, 961, 984, 980, 1035, 1030, 934, 981, 1016, 1004, 975, 1004, 992, 953, 989, 970, 999, 1011, 1028, 996, 1017, 1004, 1019, 998, 956, 986, 981, 975, 1080, 966, 1032, 977, 1078, 1002, 1002, 983, 990, 1038, 1010, 1017, 983, 993, 995, 998, 974, 1008, 1008, 1013, 1011, 977, 1031, 948, 1008, 1041, 1010, 1027, 1030, 964, 997, 987, 1003, 1001, 977, 1012, 1051, 999, 975, 966, 955, 957, 983, 1007, 1075, 987, 1012, 963, 994, 1007, 993, 1028, 981, 1001, 975, 1013, 985, 984, 918, 991, 1007, 963, 1060, 929, 985, 968, 1046, 1001, 952, 1049, 1014, 951, 977, 1029, 964, 955, 1004, 1020, 981, 1017, 1022, 963, 1002, 991, 997, 938, 985, 1004, 993, 1039, 1003, 983, 980, 973, 1070, 1039, 945, 1001, 973, 996, 966, 983, 960, 1004, 970, 1052, 1047, 1041, 962, 984, 960, 1023, 994, 979, 1017, 996, 1049, 1007, 989, 1015, 989, 1004, 995, 994, 981, 1021, 988, 998, 999, 1015, 1031, 969, 1038, 976, 1025, 1015, 946, 956, 1077, 989, 945, 983, 1008, 1030, 987, 1005, 1013, 978, 997, 988, 965, 1018, 1002, 987, 1012, 987, 1000, 1017, 971, 1010, 992, 963, 986, 1055, 948, 958, 961, 1024, 977, 966, 940, 1022, 1027, 966, 975, 971, 1025, 1022, 1010, 1016, 1002, 1009, 1045, 1028, 952, 970, 946, 1033, 968, 1010, 1047, 938, 1040, 1013, 950], [952, 957, 985, 1062, 1037, 989, 1015, 1006, 1006, 1047, 999, 1004, 1002, 969, 970, 1017, 1005, 936, 991, 1015, 1024, 1042, 1008, 956, 1041, 1003, 991, 1024, 990, 997, 1010, 993, 985, 1009, 1025, 971, 1023, 970, 1049, 1054, 1042, 1030, 976, 952, 997, 987, 986, 1017, 1045, 1020, 988, 1000, 1001, 1015, 918, 996, 961, 950, 958, 1008, 960, 1025, 1009, 1029, 989, 1002, 997, 961, 975, 1016, 1040, 957, 989, 946, 993, 1028, 1039, 1011, 968, 967, 1037, 1003, 1065, 988, 1027, 989, 1068, 1036, 979, 959, 967, 939, 989, 980, 913, 992, 1048, 980, 1010, 1053, 948, 1011, 946, 1056, 1011, 998, 994, 1023, 999, 993, 1043, 936, 1030, 996, 1002, 969, 1066, 1037, 1040, 1014, 972, 984, 989, 1005, 976, 978, 1017, 1035, 1044, 1024, 1003, 1012, 1064, 1022, 1114, 983, 1007, 1025, 1017, 957, 975, 955, 923, 1025, 1028, 1033, 998, 1017, 1025, 1012, 1012, 1041, 1031, 1001, 1037, 1013, 1030, 995, 1025, 998, 950, 1079, 986, 1034, 1017, 993, 1015, 960, 1012, 989, 995, 990, 943, 951, 1010, 1006, 1006, 1049, 1010, 980, 1000, 1000, 1014, 991, 1064, 949, 974, 948, 993, 1025, 997, 1029, 988, 1092, 977, 1013, 952, 1057, 1052, 1018, 1018, 1015, 996, 964, 948, 1053, 1027, 1064, 1019, 1005, 961, 974, 1003, 940, 969, 981, 1009, 1028, 1029, 1052, 1013, 924, 988, 970, 993, 1037, 1019, 1045, 994, 1006, 1003, 1014, 923, 956, 979, 1092, 1011, 972, 1010, 978, 1002, 1017, 1003, 963, 989, 987, 982, 957, 933, 974, 1003, 944, 1056, 966, 1003, 1031], [958, 1000, 1025, 1083, 1012, 1026, 1012, 1029, 958, 1014, 993, 996, 984, 1043, 973, 1013, 977, 1040, 1014, 1091, 956, 1001, 996, 1047, 1022, 966, 995, 971, 1001, 1019, 969, 1039, 1036, 1041, 1000, 1009, 1020, 977, 1065, 1007, 931, 1048, 997, 1035, 1013, 1011, 1036, 926, 1041, 1057, 985, 1012, 986, 946, 1003, 1055, 989, 960, 1008, 980, 993, 983, 967, 1007, 1007, 1024, 1049, 987, 1019, 976, 959, 999, 1003, 978, 992, 912, 958, 1004, 1015, 978, 1039, 988, 955, 993, 988, 1006, 974, 1031, 991, 1016, 996, 1045, 971, 993, 961, 982, 1024, 953, 1034, 991, 1004, 980, 998, 1001, 1008, 1068, 949, 1008, 992, 947, 953, 1008, 1042, 1000, 984, 1003, 1033, 1002, 972, 1027, 1039, 1000, 1013, 1011, 1049, 991, 936, 945, 1011, 1050, 1031, 1010, 1038, 975, 992, 975, 927, 998, 969, 986, 1014, 1024, 939, 1009, 991, 982, 1034, 1026, 938, 997, 1018, 962, 998, 993, 1001, 1034, 1006, 1031, 1012, 995, 942, 1023, 980, 952, 986, 1023, 1000, 991, 1040, 1059, 992, 937, 998, 986, 1016, 1001, 1022, 1048, 978, 1035, 1020, 1051, 939, 987, 1011, 1027, 1017, 1018, 997, 984, 1049, 1021, 977, 917, 957, 998, 1014, 1068, 965, 966, 983, 1008, 1003, 1014, 996, 988, 987, 1045, 979, 1030, 958, 1074, 1002, 1016, 1029, 986, 990, 1024, 1005, 990, 980, 1018, 926, 1010, 1008, 1004, 994, 993, 1039, 928, 1048, 967, 944, 981, 1037, 993, 1031, 1034, 1036, 897, 1028, 964, 989, 992, 985, 973, 1020, 930, 944, 1024, 945, 999, 962, 949, 927, 1025], [1031, 1016, 1052, 1002, 1006, 963, 986, 994, 1041, 1000, 981, 961, 1003, 909, 1046, 1033, 1025, 965, 962, 987, 1001, 1035, 1035, 962, 1014, 1036, 942, 968, 987, 977, 992, 1010, 1003, 1010, 918, 1028, 937, 992, 980, 968, 1011, 961, 1044, 1016, 992, 952, 1017, 1009, 977, 988, 949, 1008, 1026, 983, 1038, 991, 978, 997, 1003, 1013, 980, 1005, 1000, 1079, 1002, 1028, 977, 1039, 951, 1005, 990, 960, 1009, 1019, 968, 966, 975, 1046, 987, 980, 977, 932, 1031, 977, 1018, 973, 1060, 1002, 1015, 1008, 988, 993, 1015, 982, 1031, 974, 999, 961, 1059, 972, 984, 989, 1052, 1012, 970, 978, 995, 1027, 949, 963, 989, 1070, 1004, 969, 1024, 1005, 1008, 1026, 919, 999, 1017, 961, 1025, 993, 1002, 945, 956, 1010, 998, 1013, 990, 995, 1056, 1009, 993, 991, 1057, 984, 1015, 971, 1037, 962, 949, 1011, 1059, 1054, 980, 979, 947, 949, 977, 1029, 951, 984, 989, 987, 1003, 994, 1070, 998, 969, 995, 952, 1042, 1017, 1009, 996, 999, 970, 927, 1048, 987, 1032, 1011, 963, 1040, 1032, 968, 1000, 984, 971, 976, 986, 1004, 1007, 1056, 1037, 988, 1054, 1020, 983, 969, 997, 1040, 1006, 970, 1016, 1022, 1079, 1014, 1020, 1025, 1036, 937, 1078, 1006, 924, 1015, 966, 998, 1077, 999, 999, 1066, 965, 1046, 1041, 966, 990, 980, 988, 1010, 1008, 1013, 1033, 1002, 1036, 1031, 997, 1004, 943, 993, 1047, 923, 944, 1043, 988, 1001, 984, 1038, 1011, 974, 987, 991, 1003, 946, 987, 957, 994, 993, 1040, 1009, 1017, 1061, 997, 1000], [955, 1022, 1013, 1006, 1017, 1068, 1007, 1039, 1053, 987, 1041, 1027, 959, 963, 1026, 918, 997, 957, 1040, 965, 993, 1024, 994, 944, 999, 995, 949, 994, 989, 989, 993, 1020, 998, 1013, 1033, 1007, 977, 1075, 968, 1031, 1029, 1024, 971, 1026, 924, 1058, 951, 1001, 951, 952, 956, 1065, 1030, 1049, 1004, 976, 1004, 995, 980, 948, 1030, 942, 1010, 959, 1077, 1064, 946, 1019, 1007, 1005, 965, 986, 1093, 1012, 1003, 998, 1063, 968, 994, 1032, 930, 1037, 1061, 984, 953, 962, 1028, 1021, 989, 993, 1031, 1040, 969, 973, 1037, 1081, 998, 1009, 974, 1061, 998, 1008, 1063, 1033, 936, 997, 984, 979, 1037, 1043, 1014, 951, 1000, 1027, 940, 1004, 984, 987, 1004, 959, 1048, 1012, 1028, 1025, 997, 1007, 984, 1012, 1004, 965, 1012, 1011, 970, 999, 1011, 994, 990, 996, 986, 981, 1011, 976, 1012, 980, 1054, 955, 963, 995, 967, 978, 957, 1021, 973, 989, 959, 1004, 1059, 1037, 987, 1076, 988, 1037, 1023, 1016, 996, 1006, 949, 978, 1043, 993, 1001, 1018, 1022, 1020, 949, 975, 997, 990, 1003, 1066, 1063, 1031, 1016, 1026, 1021, 988, 980, 1003, 1128, 1049, 1006, 1037, 1010, 999, 995, 1007, 966, 989, 1016, 1025, 1016, 1006, 1016, 966, 974, 1029, 943, 1061, 977, 1018, 981, 1047, 1036, 1014, 1061, 1010, 1012, 1015, 993, 1001, 984, 1000, 1028, 1025, 1019, 963, 1020, 985, 990, 1007, 979, 956, 972, 998, 995, 1030, 1028, 960, 968, 1014, 1026, 981, 1000, 994, 961, 1042, 1031, 974, 1011, 952, 971, 1007, 990, 1007, 1025, 990], [1016, 1013, 1016, 1013, 952, 1001, 941, 1048, 989, 1012, 949, 984, 1011, 993, 1005, 1019, 988, 1003, 968, 981, 1009, 998, 1027, 1031, 978, 1035, 1008, 985, 988, 1030, 1026, 990, 1011, 903, 962, 1032, 986, 992, 968, 1023, 952, 958, 999, 1010, 1004, 957, 1007, 983, 962, 993, 1015, 966, 1005, 964, 1029, 1004, 977, 962, 1031, 997, 1023, 1071, 986, 995, 984, 1039, 998, 997, 1037, 1014, 945, 1036, 964, 1017, 916, 934, 989, 1042, 966, 989, 968, 956, 1036, 1009, 1007, 1004, 994, 946, 1008, 999, 1068, 952, 991, 1019, 1035, 941, 1013, 991, 1006, 972, 949, 984, 970, 971, 988, 1020, 969, 958, 1001, 1006, 1044, 979, 985, 1016, 995, 1005, 970, 963, 1027, 935, 964, 1023, 967, 982, 1000, 974, 1003, 979, 1024, 1021, 1036, 985, 1020, 1001, 974, 1024, 1032, 1054, 983, 944, 1042, 983, 1038, 945, 990, 986, 1052, 1029, 1009, 944, 1039, 983, 1004, 991, 969, 1044, 959, 1019, 910, 973, 991, 1003, 983, 1032, 987, 992, 1000, 1014, 932, 1035, 1032, 993, 1022, 931, 1011, 971, 1016, 1022, 990, 973, 969, 1020, 974, 1006, 990, 1061, 1014, 984, 1018, 1018, 1001, 984, 1022, 1015, 1043, 1005, 998, 986, 1012, 959, 975, 1018, 1018, 1037, 984, 1029, 1000, 971, 994, 973, 1021, 1005, 1015, 1057, 992, 1087, 928, 989, 970, 972, 964, 1029, 1009, 1011, 1011, 1008, 1021, 1016, 1019, 999, 1050, 1017, 1004, 1007, 1020, 1015, 962, 1010, 996, 1022, 1018, 978, 985, 1028, 986, 970, 958, 1045, 1070, 973, 1024, 960, 1001, 1027, 1038, 1000], [1068, 1015, 979, 921, 1030, 1036, 1004, 1003, 1031, 995, 1000, 1069, 1010, 1045, 980, 1022, 961, 975, 1024, 1008, 971, 968, 1028, 983, 969, 984, 1071, 1045, 1073, 977, 1013, 982, 994, 1006, 991, 969, 1000, 959, 983, 960, 1010, 936, 1092, 979, 1087, 956, 1001, 1014, 955, 1019, 1046, 972, 1035, 1010, 1048, 972, 963, 1062, 1034, 974, 937, 987, 996, 992, 968, 960, 971, 1016, 1047, 1013, 1007, 997, 988, 1057, 997, 967, 981, 1025, 976, 997, 969, 1012, 986, 981, 1017, 1027, 940, 1021, 1034, 1003, 977, 985, 1046, 1020, 975, 1003, 997, 1019, 1008, 976, 979, 1015, 998, 1004, 998, 1003, 995, 1008, 1005, 1035, 1003, 1060, 953, 1034, 1015, 1048, 1023, 994, 1037, 952, 976, 966, 1039, 1034, 1003, 992, 974, 1035, 954, 1097, 1050, 973, 1030, 967, 1021, 971, 1012, 973, 1054, 983, 1003, 1027, 1020, 984, 952, 1012, 975, 946, 988, 1024, 971, 1016, 990, 974, 943, 981, 993, 1007, 941, 1018, 1013, 1004, 1033, 1002, 1029, 1034, 1041, 987, 1034, 1048, 967, 969, 960, 983, 1008, 1014, 980, 966, 974, 962, 1045, 1011, 1016, 952, 1014, 1015, 1060, 1025, 982, 941, 965, 944, 1055, 972, 994, 1047, 1010, 1055, 1043, 959, 1000, 1003, 1029, 993, 1005, 1018, 1034, 984, 1022, 977, 1009, 992, 995, 982, 974, 942, 986, 1012, 993, 995, 980, 1073, 993, 1009, 974, 997, 1016, 1055, 993, 1006, 1017, 984, 1004, 1011, 987, 1003, 972, 1005, 991, 1004, 1048, 1035, 957, 1020, 1023, 991, 1059, 981, 1040, 1045, 980, 1024, 975, 1015, 1003, 1021], [1010, 971, 987, 1008, 990, 1025, 1027, 999, 997, 1011, 962, 1032, 1005, 1000, 967, 976, 966, 960, 1001, 1003, 1045, 1037, 1022, 985, 956, 974, 991, 1011, 1022, 1013, 1030, 970, 972, 977, 944, 981, 969, 1033, 1011, 970, 994, 970, 944, 1005, 1001, 1033, 946, 1045, 966, 967, 1007, 1040, 985, 1044, 1006, 954, 997, 998, 998, 960, 1034, 1010, 1011, 1019, 1002, 1010, 995, 991, 991, 976, 994, 1015, 1033, 959, 1044, 1003, 1037, 1014, 1034, 1007, 1043, 1023, 978, 1021, 1066, 1040, 982, 975, 1022, 986, 936, 1000, 955, 992, 1026, 959, 959, 1024, 1030, 1011, 1026, 1029, 1046, 993, 1061, 1034, 1033, 939, 1052, 1036, 1039, 1015, 1007, 987, 978, 1017, 1028, 1027, 1030, 1019, 1036, 941, 1018, 984, 965, 972, 996, 974, 1005, 952, 1023, 977, 978, 998, 938, 990, 1013, 923, 989, 1007, 1048, 1013, 991, 951, 1034, 1050, 933, 1050, 1026, 974, 1032, 968, 1056, 1007, 1007, 991, 991, 975, 1008, 1005, 943, 1005, 996, 1023, 1022, 1010, 976, 988, 919, 998, 1052, 980, 1023, 966, 972, 989, 987, 979, 1016, 958, 1037, 986, 1035, 1013, 1026, 1010, 980, 1046, 1033, 987, 989, 1016, 987, 978, 978, 1065, 976, 985, 1033, 1020, 1012, 967, 1033, 978, 1070, 953, 978, 997, 995, 1040, 1013, 960, 1024, 1005, 992, 965, 972, 940, 966, 1007, 1046, 1048, 897, 986, 901, 983, 963, 966, 979, 1028, 1019, 985, 982, 998, 990, 992, 984, 1032, 999, 1047, 1018, 999, 979, 1023, 998, 1023, 956, 964, 1011, 1015, 989, 1029, 980, 981, 1038, 970], [1022, 965, 998, 988, 966, 970, 1028, 989, 1039, 1024, 1036, 1092, 994, 984, 980, 1045, 988, 1014, 964, 1010, 1008, 950, 1023, 1013, 985, 1007, 1008, 973, 981, 958, 1016, 959, 1029, 1041, 989, 948, 1016, 979, 953, 1061, 1002, 1038, 984, 955, 977, 1000, 1006, 1007, 948, 972, 963, 956, 966, 997, 1010, 947, 1004, 977, 972, 1031, 1052, 1011, 1049, 1011, 1031, 1024, 1003, 990, 994, 1026, 1015, 997, 983, 992, 999, 959, 1031, 1040, 939, 988, 978, 1037, 987, 995, 968, 1019, 966, 1024, 967, 1019, 957, 1003, 936, 981, 995, 1040, 976, 1039, 1003, 914, 977, 980, 956, 1003, 962, 1007, 1014, 1028, 996, 971, 923, 1000, 984, 952, 1002, 1042, 1004, 1048, 987, 997, 991, 930, 1046, 951, 1007, 990, 1030, 998, 987, 996, 1015, 975, 1055, 941, 1072, 987, 955, 1024, 970, 994, 1022, 981, 1026, 1007, 1004, 959, 985, 1009, 935, 965, 1037, 970, 984, 974, 961, 965, 962, 988, 987, 967, 1001, 1030, 991, 970, 993, 1007, 1021, 994, 1044, 1032, 994, 992, 980, 1053, 976, 1007, 1046, 1042, 1069, 1018, 981, 1031, 986, 996, 1066, 989, 1042, 997, 1025, 991, 1016, 1074, 1108, 972, 992, 1016, 993, 1024, 993, 978, 983, 999, 964, 988, 1013, 993, 1026, 1037, 967, 1016, 970, 1020, 1065, 987, 1008, 1002, 1006, 1011, 1022, 1047, 981, 984, 1030, 977, 973, 1005, 974, 970, 981, 1006, 941, 960, 1014, 979, 1014, 1023, 1003, 1015, 997, 1023, 1008, 994, 1011, 995, 1026, 1004, 1026, 977, 1036, 1007, 1044, 989, 1022, 987, 1031, 1014], [985, 1019, 1005, 1053, 1017, 973, 1017, 979, 1000, 960, 992, 981, 968, 994, 952, 971, 1064, 991, 1037, 978, 970, 1011, 1016, 972, 950, 969, 969, 940, 909, 999, 1009, 999, 998, 980, 1020, 1059, 989, 988, 1027, 1024, 991, 988, 1044, 947, 986, 1025, 989, 1031, 1020, 988, 1008, 1093, 1007, 1009, 997, 1019, 1073, 985, 1006, 966, 977, 984, 998, 1011, 1036, 986, 1027, 985, 968, 982, 975, 982, 1027, 998, 1023, 1022, 991, 1045, 932, 988, 974, 992, 964, 987, 934, 980, 971, 1013, 1037, 987, 1015, 962, 1020, 966, 1026, 944, 1012, 1018, 999, 953, 1036, 1005, 1032, 992, 971, 1068, 977, 1035, 1069, 999, 983, 983, 993, 1080, 1014, 963, 990, 1033, 924, 1021, 1000, 1007, 1031, 1053, 1010, 1005, 1002, 985, 975, 1034, 1008, 1010, 1023, 1023, 986, 1027, 981, 1046, 1013, 990, 1013, 933, 989, 999, 1008, 994, 1006, 1020, 1019, 992, 1045, 961, 946, 974, 1014, 955, 1043, 1040, 1015, 990, 1001, 989, 1024, 1032, 966, 961, 1048, 1022, 1016, 994, 1046, 990, 1019, 981, 978, 964, 961, 976, 1068, 994, 995, 999, 1076, 986, 997, 1005, 978, 1021, 987, 1049, 991, 996, 1034, 1054, 1019, 994, 1006, 973, 1048, 923, 1012, 971, 984, 979, 977, 1009, 1038, 981, 1006, 998, 1000, 1019, 985, 999, 1007, 986, 1016, 931, 965, 1013, 1035, 972, 969, 1029, 1036, 1023, 1041, 1037, 998, 999, 959, 1021, 956, 967, 989, 985, 1015, 1002, 998, 968, 998, 1002, 998, 984, 1023, 1008, 999, 998, 966, 961, 968, 927, 1066, 992, 939, 1019], [1021, 1013, 996, 1001, 1046, 1029, 1009, 1010, 997, 956, 953, 959, 1043, 967, 1022, 1055, 962, 994, 1036, 1032, 1012, 1023, 944, 965, 1060, 1001, 951, 954, 995, 1024, 1012, 1005, 1039, 958, 1030, 990, 1007, 1044, 968, 996, 954, 1028, 976, 1019, 1001, 1000, 963, 998, 966, 1045, 1016, 998, 1051, 981, 928, 980, 1004, 993, 1093, 988, 1017, 1016, 978, 996, 936, 1026, 966, 1065, 1014, 1017, 1006, 1014, 1029, 1011, 989, 1013, 1005, 1069, 1040, 1018, 1013, 937, 1011, 988, 1069, 1003, 952, 954, 991, 1018, 994, 991, 1000, 925, 1027, 1066, 1010, 972, 970, 1000, 956, 991, 1025, 995, 1002, 1024, 982, 1014, 1002, 1029, 1034, 963, 1017, 1021, 1006, 1004, 993, 1031, 975, 1091, 956, 998, 993, 936, 976, 977, 960, 946, 933, 939, 1007, 933, 1025, 1032, 1011, 994, 974, 1078, 965, 975, 1047, 966, 1012, 990, 1014, 990, 993, 1034, 934, 1050, 976, 1022, 1038, 1035, 1021, 982, 1000, 1010, 1066, 1021, 1039, 1027, 1030, 976, 933, 1039, 980, 1007, 978, 974, 972, 985, 1004, 1031, 992, 934, 994, 1008, 971, 1005, 1016, 983, 1043, 983, 984, 1009, 994, 1022, 1015, 998, 948, 1017, 1026, 979, 1033, 1014, 1028, 1006, 983, 936, 986, 989, 998, 1003, 990, 994, 1026, 985, 976, 1009, 936, 950, 1080, 977, 1006, 1019, 961, 983, 1001, 1030, 1020, 1025, 938, 994, 1038, 976, 957, 981, 1013, 1025, 985, 1022, 975, 1015, 996, 1008, 1019, 973, 949, 995, 982, 962, 1009, 984, 1028, 1061, 962, 985, 1023, 1029, 1020, 1022, 988, 985, 947, 964], [986, 963, 956, 927, 933, 997, 955, 1009, 945, 1017, 991, 997, 1022, 959, 951, 985, 995, 1010, 1003, 983, 1007, 1022, 997, 1033, 956, 994, 1025, 989, 955, 1018, 1006, 1012, 955, 975, 982, 966, 977, 967, 986, 1056, 1023, 1030, 1035, 986, 1010, 1035, 1001, 1033, 977, 984, 993, 968, 958, 941, 1001, 969, 977, 1029, 942, 986, 1006, 1005, 987, 993, 1007, 984, 975, 1033, 979, 965, 984, 964, 1032, 1003, 993, 999, 987, 985, 1012, 1032, 1048, 989, 956, 944, 1021, 973, 956, 936, 981, 1035, 989, 963, 987, 979, 979, 945, 1019, 1000, 1009, 1021, 989, 974, 1014, 957, 970, 993, 971, 1007, 1065, 923, 971, 980, 988, 989, 968, 991, 981, 989, 1004, 1020, 1002, 968, 968, 1011, 992, 1042, 1026, 1010, 1073, 962, 1000, 1035, 1017, 990, 1024, 988, 997, 947, 1000, 990, 971, 988, 966, 1030, 986, 1051, 1000, 1024, 963, 988, 988, 1055, 1004, 992, 1011, 1001, 950, 1011, 993, 999, 1035, 1003, 1021, 994, 928, 959, 1073, 961, 1050, 1011, 993, 1026, 1012, 993, 1053, 1034, 965, 965, 950, 986, 933, 1052, 967, 1025, 994, 996, 932, 1046, 996, 992, 999, 970, 1019, 946, 987, 947, 964, 1003, 1064, 1004, 974, 1026, 977, 949, 1027, 946, 963, 977, 982, 972, 973, 1037, 1004, 975, 991, 1007, 1021, 992, 1026, 1003, 956, 1059, 997, 977, 1006, 1002, 1029, 997, 974, 948, 1014, 980, 1013, 961, 1053, 995, 1036, 1008, 985, 1049, 991, 978, 1002, 993, 984, 982, 974, 1007, 967, 955, 1021, 1016, 961, 1010, 1040, 1068], [1006, 981, 1029, 975, 1038, 998, 999, 1044, 1004, 969, 1049, 1014, 1075, 976, 999, 1031, 944, 984, 994, 1057, 1006, 1032, 1019, 942, 978, 1074, 965, 981, 1060, 945, 1024, 1064, 914, 1039, 994, 984, 958, 1016, 1003, 988, 1058, 992, 1012, 995, 996, 997, 1056, 986, 952, 984, 986, 1051, 1020, 958, 980, 979, 1008, 1024, 1002, 1001, 1079, 1074, 1041, 989, 1081, 991, 1043, 973, 1024, 1034, 998, 933, 1028, 1020, 1004, 1006, 1002, 1011, 990, 981, 946, 1027, 1057, 966, 978, 954, 933, 1014, 981, 1011, 938, 981, 995, 1006, 998, 999, 985, 1028, 1010, 1038, 1078, 1019, 1004, 1040, 964, 1057, 1038, 1048, 1000, 1022, 1033, 970, 1008, 1006, 1032, 1035, 1077, 992, 995, 995, 1052, 985, 984, 1018, 1034, 987, 960, 1013, 1019, 1008, 1048, 965, 955, 966, 982, 1022, 1003, 986, 942, 1043, 992, 947, 1067, 966, 1018, 1038, 1060, 968, 1021, 1005, 1030, 936, 969, 1013, 1018, 991, 1039, 985, 1031, 987, 1014, 960, 1046, 967, 991, 1011, 1003, 1064, 963, 966, 1028, 1036, 1024, 981, 954, 992, 998, 949, 973, 955, 986, 983, 1032, 975, 1061, 961, 1023, 973, 987, 1016, 961, 991, 1065, 1006, 985, 989, 1012, 1030, 962, 950, 963, 1013, 972, 973, 1023, 1023, 1030, 977, 960, 1035, 994, 1069, 996, 1028, 929, 1034, 1019, 999, 989, 1019, 924, 983, 990, 976, 1018, 1014, 1009, 995, 1013, 1016, 1007, 940, 968, 1019, 952, 943, 1003, 1035, 1014, 1022, 1021, 984, 1037, 959, 1005, 1060, 1004, 1048, 956, 981, 1026, 993, 989, 1038, 967, 1001], [1018, 995, 980, 1024, 974, 1027, 1018, 987, 1018, 1000, 1017, 945, 961, 1031, 1034, 991, 973, 969, 1007, 999, 980, 1019, 973, 1015, 1027, 1010, 974, 967, 1009, 1042, 1048, 1027, 1002, 980, 960, 991, 988, 1000, 964, 1032, 1035, 1036, 1003, 1025, 959, 998, 1013, 1013, 977, 1018, 1018, 966, 986, 974, 943, 994, 1002, 1053, 990, 1003, 991, 1041, 998, 1011, 994, 988, 1019, 1021, 964, 989, 1056, 1004, 987, 1055, 993, 1002, 1032, 1030, 1011, 973, 998, 1006, 1022, 1058, 1022, 972, 995, 1036, 1019, 1013, 998, 1031, 1061, 978, 1012, 1031, 1024, 961, 935, 993, 1053, 989, 999, 1009, 1020, 1001, 1007, 975, 1040, 1040, 1009, 992, 1054, 976, 972, 1056, 977, 1000, 1039, 982, 1052, 990, 997, 996, 1016, 954, 1019, 1033, 1028, 982, 979, 986, 1011, 1046, 1003, 1021, 974, 997, 962, 983, 950, 1013, 1008, 1056, 993, 1006, 1063, 1003, 990, 1003, 978, 971, 945, 996, 989, 1002, 1004, 978, 949, 981, 989, 989, 991, 1048, 1011, 964, 1025, 953, 1023, 973, 965, 971, 998, 983, 1012, 987, 970, 1000, 1028, 957, 1010, 1031, 992, 1024, 1024, 984, 1028, 967, 977, 1000, 986, 952, 1085, 1026, 1022, 989, 1028, 1014, 969, 998, 974, 984, 975, 1019, 1048, 1090, 1022, 947, 1079, 956, 1007, 1024, 996, 933, 1021, 1014, 1034, 1008, 1001, 1032, 1032, 952, 1007, 983, 989, 957, 988, 1019, 1004, 960, 1019, 1036, 1003, 985, 1012, 1011, 990, 974, 1003, 951, 1006, 1020, 992, 972, 974, 1070, 1030, 1073, 1017, 1043, 953, 1029, 987, 989, 1039, 1039], [1001, 1010, 1000, 1051, 952, 1014, 1011, 1030, 1062, 983, 1025, 1018, 983, 1019, 1032, 1044, 996, 989, 1019, 1039, 996, 1019, 1013, 1023, 1027, 1013, 1030, 1005, 1044, 976, 1010, 1026, 994, 984, 972, 1014, 1040, 1005, 1006, 984, 1013, 982, 1032, 999, 990, 983, 995, 1020, 990, 1018, 999, 992, 988, 998, 1040, 950, 972, 972, 915, 1013, 962, 1030, 1032, 933, 1037, 1067, 1007, 1047, 1030, 986, 946, 1092, 1013, 1001, 964, 954, 966, 985, 1008, 992, 1044, 1015, 938, 900, 983, 948, 1075, 988, 972, 989, 970, 991, 1034, 1012, 998, 976, 1000, 962, 997, 1019, 988, 1003, 984, 1022, 1038, 1013, 1067, 1055, 1050, 1019, 972, 1022, 985, 962, 997, 1035, 989, 1017, 989, 989, 1043, 1020, 1015, 1017, 1005, 1009, 1022, 970, 1008, 944, 971, 1015, 964, 990, 988, 1021, 992, 990, 1014, 1021, 1001, 1053, 1057, 974, 997, 987, 1006, 983, 979, 1048, 990, 965, 1032, 963, 978, 1022, 999, 1038, 1013, 977, 1041, 991, 1052, 1038, 1034, 1047, 1016, 949, 980, 1019, 1053, 1006, 1088, 1023, 969, 1021, 1008, 1000, 979, 1007, 1032, 1100, 1000, 1025, 1025, 1014, 976, 1023, 992, 1020, 980, 953, 1001, 1004, 990, 980, 969, 1029, 989, 953, 967, 980, 985, 965, 1023, 926, 973, 988, 1014, 1014, 968, 948, 982, 926, 983, 934, 958, 1042, 1003, 1007, 1030, 1017, 1011, 1032, 1007, 992, 964, 999, 1056, 1004, 1043, 988, 1012, 1021, 965, 963, 1002, 1015, 1070, 1011, 1016, 985, 988, 956, 923, 1002, 1045, 970, 987, 1048, 1019, 1013, 1031, 984, 1008, 1030], [967, 1026, 1015, 992, 996, 984, 967, 995, 1001, 1032, 999, 980, 947, 985, 983, 985, 1005, 953, 954, 949, 1067, 1020, 953, 1026, 997, 1057, 968, 933, 998, 992, 980, 1007, 999, 1071, 930, 982, 1047, 1015, 1005, 1021, 963, 1020, 998, 1042, 966, 1023, 996, 1009, 986, 950, 995, 969, 982, 1050, 1042, 964, 992, 980, 957, 998, 1010, 989, 1047, 1006, 984, 975, 1009, 1030, 1031, 1006, 1013, 1014, 972, 981, 980, 965, 991, 1004, 978, 1052, 1035, 991, 1023, 965, 998, 1011, 1019, 936, 994, 1017, 991, 932, 1011, 964, 994, 1021, 1009, 993, 969, 994, 1003, 1004, 993, 995, 1009, 985, 975, 993, 984, 1031, 1016, 1005, 1014, 1044, 972, 1055, 1013, 995, 966, 1040, 1046, 1003, 998, 1030, 1030, 970, 951, 1012, 933, 960, 898, 958, 1019, 961, 976, 985, 982, 986, 1004, 956, 1024, 1044, 945, 1073, 1007, 976, 974, 943, 938, 971, 993, 994, 1012, 985, 953, 1010, 945, 1060, 1045, 1017, 984, 1039, 975, 987, 1006, 1021, 1020, 990, 997, 1071, 1081, 957, 1044, 1011, 980, 1047, 1007, 1019, 994, 996, 988, 1017, 975, 967, 1001, 956, 992, 936, 968, 999, 994, 1022, 1002, 984, 1031, 1005, 1026, 995, 955, 1001, 945, 985, 986, 1015, 987, 956, 942, 1018, 1035, 1031, 977, 1029, 1017, 993, 949, 997, 942, 990, 985, 999, 1094, 985, 956, 990, 1011, 989, 1016, 1015, 976, 1040, 975, 964, 1020, 948, 1063, 1078, 993, 1011, 936, 1009, 1013, 1013, 986, 973, 1028, 1004, 973, 944, 1011, 1007, 1003, 1033, 1065, 995, 975, 991], [1014, 989, 1034, 985, 973, 971, 1010, 976, 989, 1035, 1029, 949, 999, 1043, 1038, 988, 1005, 1039, 964, 969, 1004, 941, 969, 950, 989, 994, 1023, 1016, 1040, 968, 1027, 1033, 977, 1061, 1021, 1039, 1025, 1004, 961, 1015, 1018, 998, 1010, 1021, 930, 980, 994, 981, 1014, 970, 990, 953, 1002, 953, 1015, 967, 962, 1013, 978, 992, 1007, 1024, 1095, 1001, 1022, 1051, 962, 1052, 1036, 1039, 1052, 919, 1028, 1015, 1000, 946, 955, 1002, 990, 987, 990, 999, 1024, 1027, 1010, 987, 1003, 1030, 981, 981, 1056, 970, 979, 1040, 1005, 1039, 1049, 994, 980, 981, 977, 986, 1019, 1061, 1034, 1031, 988, 1008, 960, 1006, 1035, 996, 1040, 989, 1004, 951, 1037, 1010, 976, 995, 1025, 1065, 943, 1011, 968, 1008, 982, 970, 958, 1019, 944, 1022, 991, 1055, 1005, 1004, 997, 1040, 958, 1055, 1105, 971, 1012, 1014, 965, 1036, 1046, 1022, 1000, 979, 1035, 952, 997, 1033, 1030, 972, 1065, 990, 1000, 1043, 1045, 1032, 1019, 1031, 1030, 968, 1004, 974, 1050, 949, 1014, 1038, 1071, 1011, 957, 1035, 960, 950, 1094, 960, 957, 1038, 1032, 1017, 978, 985, 1035, 948, 934, 1001, 985, 1004, 966, 987, 1006, 1007, 1027, 1002, 965, 929, 965, 961, 985, 998, 936, 1017, 922, 1002, 1024, 1016, 1020, 1020, 973, 996, 1051, 1003, 1026, 979, 997, 1024, 974, 982, 953, 986, 985, 995, 1009, 1013, 1000, 976, 1052, 998, 1030, 993, 1011, 967, 983, 1003, 987, 1013, 973, 1009, 1065, 1034, 1061, 1010, 1003, 1105, 1003, 967, 1002, 1000, 1050, 1059, 988, 974], [1041, 974, 960, 994, 1031, 989, 966, 944, 998, 987, 997, 992, 1032, 1056, 995, 973, 1003, 1041, 1055, 982, 1004, 1080, 966, 1050, 987, 984, 1034, 1017, 963, 974, 1022, 1004, 1019, 997, 996, 990, 974, 991, 1017, 1032, 958, 1018, 960, 1040, 1004, 931, 1000, 959, 1027, 987, 981, 956, 1001, 964, 1039, 1020, 1045, 1003, 1043, 954, 1026, 927, 997, 943, 1016, 972, 954, 995, 1039, 1012, 942, 987, 991, 1049, 1043, 1025, 1002, 993, 984, 1059, 1054, 1016, 1015, 1052, 959, 930, 1017, 961, 1025, 1022, 1002, 1001, 1027, 1045, 1034, 991, 1004, 977, 928, 985, 981, 1002, 1003, 985, 996, 1075, 949, 964, 1027, 998, 988, 1010, 997, 1036, 1018, 1018, 1013, 903, 1002, 1048, 947, 968, 1005, 953, 1013, 996, 995, 950, 966, 991, 992, 1005, 980, 1025, 978, 1007, 1016, 985, 1046, 921, 1068, 1028, 980, 990, 1007, 1026, 1034, 981, 979, 1030, 974, 1076, 991, 994, 975, 1018, 971, 961, 1001, 1061, 997, 997, 945, 974, 1033, 1025, 1043, 1021, 984, 1031, 990, 1016, 1022, 1041, 1027, 1011, 1005, 1001, 1005, 1006, 1017, 975, 973, 1018, 1008, 1048, 1006, 1054, 962, 1072, 1044, 952, 940, 1003, 1029, 1017, 1053, 1000, 1020, 1009, 971, 1011, 1019, 1028, 979, 966, 996, 978, 1055, 1080, 1002, 971, 1002, 1028, 1008, 1028, 1012, 1025, 971, 1042, 994, 1015, 979, 970, 1028, 1111, 890, 1028, 986, 1055, 1052, 1041, 1009, 1008, 972, 1049, 1002, 950, 1041, 987, 982, 1051, 1068, 1059, 991, 956, 1022, 1027, 1029, 1011, 992, 1024, 1080, 1030, 977, 1015], [1007, 967, 1001, 976, 1004, 1013, 979, 1015, 995, 1003, 1011, 1026, 993, 1001, 1001, 1033, 989, 984, 1041, 971, 1000, 994, 1010, 991, 1012, 1049, 978, 990, 1011, 998, 985, 1012, 966, 1025, 1002, 1006, 983, 1019, 990, 1001, 985, 987, 1035, 971, 932, 999, 1007, 1016, 1007, 1038, 1020, 1061, 1015, 1034, 964, 993, 1014, 983, 964, 1008, 990, 984, 976, 1068, 1038, 968, 990, 1053, 998, 1056, 1017, 986, 1037, 1033, 978, 1050, 964, 960, 1014, 982, 1055, 1024, 985, 998, 1036, 954, 987, 980, 1044, 1001, 952, 954, 1016, 1021, 1031, 988, 1013, 1038, 1015, 957, 962, 971, 1012, 1048, 1050, 980, 987, 928, 944, 1022, 1009, 1026, 1021, 1016, 1000, 1013, 1026, 991, 962, 988, 965, 1001, 1011, 1040, 1002, 938, 973, 1027, 997, 1018, 970, 968, 992, 985, 1013, 1004, 1024, 998, 983, 1015, 1009, 1013, 985, 996, 993, 1018, 955, 1004, 1049, 1013, 947, 1032, 996, 1026, 1000, 1022, 991, 1021, 1038, 1031, 1020, 1010, 981, 1043, 1050, 965, 933, 1007, 1013, 1015, 987, 992, 961, 946, 1063, 1083, 942, 965, 1035, 1021, 982, 1006, 1064, 1015, 977, 990, 1062, 988, 981, 1059, 959, 976, 1047, 1008, 1040, 998, 1012, 982, 1010, 992, 986, 1021, 975, 980, 972, 1022, 1046, 1013, 940, 1047, 1021, 994, 1008, 995, 950, 1012, 1028, 974, 986, 1044, 1005, 1031, 1049, 996, 1010, 1053, 1006, 976, 1038, 958, 992, 980, 1008, 1005, 987, 981, 1001, 953, 946, 964, 979, 990, 1004, 978, 977, 973, 1030, 957, 983, 1034, 986, 1004, 974, 991, 1000, 993], [1010, 993, 1006, 1040, 993, 994, 1016, 986, 976, 1020, 992, 1007, 1060, 1020, 1000, 987, 963, 1042, 980, 966, 999, 1016, 1002, 980, 1000, 997, 1006, 1030, 968, 997, 988, 966, 1016, 1002, 998, 959, 1030, 1082, 1018, 961, 1046, 1004, 999, 971, 1005, 943, 1029, 976, 972, 959, 956, 1020, 1062, 991, 985, 980, 979, 1050, 1015, 965, 1045, 1019, 989, 1038, 996, 996, 1024, 1037, 980, 900, 997, 970, 1067, 1029, 954, 1006, 970, 960, 955, 970, 1023, 986, 977, 955, 1068, 968, 1039, 1020, 989, 1072, 1021, 1000, 986, 1021, 958, 975, 1023, 1018, 971, 1000, 1011, 969, 1009, 1000, 1003, 922, 1024, 1035, 972, 1052, 991, 972, 986, 999, 1008, 985, 1014, 960, 990, 960, 1002, 970, 991, 1029, 1045, 952, 1007, 1052, 979, 983, 1021, 1013, 960, 1025, 1029, 1025, 1001, 1020, 1006, 997, 1035, 998, 990, 993, 1015, 1019, 1013, 977, 919, 952, 1009, 936, 965, 1043, 1004, 994, 1061, 980, 972, 948, 964, 979, 1036, 992, 984, 1057, 967, 1005, 970, 974, 1011, 1003, 1025, 1015, 986, 1011, 1036, 1057, 985, 1029, 1014, 991, 983, 1046, 1047, 986, 1017, 1017, 967, 985, 1018, 1051, 965, 1012, 1018, 1028, 1036, 1073, 1034, 991, 913, 1039, 953, 974, 951, 974, 1021, 989, 989, 1028, 1026, 1036, 1008, 920, 1040, 989, 1023, 995, 1038, 928, 1004, 1037, 1019, 1036, 1020, 944, 1011, 1034, 1010, 1003, 1018, 981, 992, 1002, 991, 1061, 1035, 1026, 1047, 1058, 1024, 973, 964, 1029, 976, 1043, 956, 937, 974, 957, 976, 947, 982, 1035, 1003, 1008], [1037, 969, 1019, 1013, 1020, 982, 1039, 953, 996, 1019, 1020, 922, 1054, 975, 979, 947, 981, 954, 1054, 1041, 986, 993, 1010, 1059, 993, 955, 1050, 1010, 1036, 967, 1071, 998, 1035, 971, 1028, 960, 985, 1029, 1007, 984, 968, 1056, 981, 935, 1078, 965, 975, 961, 1018, 1047, 1040, 1020, 1051, 1010, 1036, 995, 929, 1003, 1000, 976, 1040, 1039, 1040, 1004, 983, 956, 993, 972, 989, 957, 973, 1015, 1011, 953, 1016, 1013, 1039, 1012, 973, 1063, 950, 1091, 1007, 995, 989, 1040, 970, 983, 1057, 987, 1002, 1042, 1040, 982, 998, 968, 1007, 1050, 993, 1032, 1004, 1004, 991, 952, 986, 1054, 1061, 993, 1052, 983, 977, 1025, 1028, 956, 979, 992, 1047, 1021, 968, 1019, 967, 940, 1004, 998, 989, 973, 983, 1018, 941, 1032, 973, 982, 986, 1013, 963, 965, 1022, 1056, 1055, 1005, 969, 1045, 1052, 1017, 1037, 1030, 1036, 958, 1018, 978, 1027, 1025, 1010, 1053, 977, 977, 1034, 971, 958, 985, 971, 1055, 1040, 974, 995, 998, 1031, 1025, 939, 1040, 995, 1041, 976, 1028, 1048, 1055, 1035, 1004, 955, 1015, 1004, 1089, 982, 957, 972, 966, 943, 957, 1006, 982, 958, 959, 964, 966, 965, 1019, 959, 958, 1019, 1043, 1065, 1003, 945, 994, 972, 981, 996, 992, 985, 1006, 1029, 1018, 1069, 1001, 994, 959, 1018, 1028, 958, 968, 1031, 955, 970, 1028, 978, 995, 983, 1027, 1013, 998, 994, 1016, 1019, 1021, 1021, 969, 1017, 1035, 1062, 1026, 1000, 981, 1005, 997, 1009, 1021, 1030, 972, 1039, 1026, 994, 1020, 966, 972, 987, 1040], [1037, 994, 1032, 1033, 974, 1008, 998, 979, 1045, 1039, 958, 1016, 969, 1028, 982, 970, 983, 931, 951, 975, 1012, 974, 1008, 983, 990, 960, 961, 1005, 1007, 963, 958, 961, 950, 984, 955, 1025, 1008, 998, 1013, 1001, 1046, 982, 1041, 982, 1032, 973, 1084, 1002, 970, 997, 1051, 1014, 950, 1051, 975, 995, 1049, 1057, 1029, 968, 931, 1034, 995, 1002, 1035, 1005, 993, 994, 976, 1019, 982, 1009, 1059, 1011, 950, 999, 989, 1036, 1045, 932, 1009, 1047, 1021, 1009, 929, 982, 959, 1026, 1013, 1034, 996, 1039, 949, 1049, 989, 1009, 950, 991, 1032, 929, 1014, 1024, 982, 979, 1001, 982, 984, 1005, 973, 953, 979, 1048, 1046, 982, 979, 1010, 1034, 1040, 981, 1041, 1029, 965, 1024, 953, 1014, 933, 1021, 995, 1014, 1001, 997, 1001, 971, 996, 1049, 994, 1004, 989, 1004, 994, 925, 972, 996, 1017, 1050, 1040, 961, 981, 1031, 999, 1011, 1018, 1055, 1051, 999, 1050, 1000, 974, 970, 993, 982, 987, 978, 958, 1028, 959, 1023, 973, 1006, 974, 942, 1002, 967, 1000, 987, 1045, 979, 1007, 953, 1004, 990, 979, 986, 984, 1024, 1013, 1048, 1068, 1030, 993, 959, 992, 1029, 951, 984, 973, 1027, 993, 1028, 993, 980, 924, 1006, 990, 985, 983, 941, 996, 1011, 1036, 1019, 969, 949, 1010, 1009, 1023, 969, 989, 1025, 990, 1007, 1057, 955, 1034, 971, 1021, 1005, 1030, 1000, 1007, 944, 1056, 989, 1057, 963, 993, 960, 1003, 977, 968, 992, 958, 1023, 998, 991, 959, 1010, 1045, 975, 995, 986, 1009, 987, 971, 1002, 979], [987, 967, 1019, 1035, 1055, 994, 957, 970, 981, 1058, 1015, 991, 1025, 997, 958, 1014, 970, 1050, 977, 978, 948, 993, 991, 1038, 945, 1026, 991, 992, 1030, 1006, 970, 1024, 1036, 1028, 998, 949, 991, 988, 969, 1003, 989, 1018, 970, 961, 989, 1004, 1015, 1036, 971, 953, 1023, 987, 985, 1017, 1000, 1013, 1045, 966, 998, 1042, 959, 974, 1020, 961, 957, 995, 1024, 987, 978, 986, 1039, 987, 996, 1002, 995, 1037, 1017, 976, 1015, 1008, 967, 980, 1045, 997, 1000, 995, 1013, 1030, 1012, 1012, 1017, 980, 987, 986, 958, 1046, 992, 1030, 1037, 1017, 959, 1035, 996, 965, 1037, 968, 1016, 1045, 960, 975, 1020, 1021, 1025, 979, 1011, 991, 1025, 988, 961, 986, 1030, 1046, 994, 995, 1019, 998, 1042, 995, 978, 1020, 1038, 1016, 1017, 1062, 1009, 969, 976, 960, 932, 997, 982, 1015, 1025, 1003, 948, 993, 1024, 1036, 969, 1016, 983, 956, 957, 979, 969, 1018, 1015, 946, 993, 966, 956, 1010, 997, 993, 1054, 1026, 999, 1014, 938, 911, 995, 995, 1005, 1007, 987, 1023, 979, 1012, 971, 973, 1059, 1015, 1002, 1037, 1001, 942, 974, 1054, 1021, 955, 1023, 1015, 978, 1031, 1011, 1014, 999, 1012, 988, 965, 993, 1039, 996, 1053, 1015, 971, 1037, 995, 937, 1017, 1022, 970, 962, 972, 952, 1003, 980, 1016, 964, 1040, 1031, 1007, 972, 988, 1024, 1019, 986, 1009, 975, 954, 927, 983, 1021, 1032, 1028, 988, 1004, 1028, 981, 1023, 1026, 1004, 999, 954, 924, 1071, 984, 1024, 951, 966, 1034, 996, 1026, 1014, 953, 1003], [951, 1004, 943, 996, 1035, 1054, 977, 972, 1019, 974, 957, 989, 973, 963, 914, 966, 1076, 1070, 1025, 1044, 1019, 1002, 980, 1062, 959, 990, 922, 1027, 969, 980, 995, 1024, 989, 1073, 997, 1040, 966, 1005, 972, 1017, 983, 1015, 977, 1018, 1022, 1020, 1026, 1022, 1029, 1042, 924, 977, 936, 1027, 1044, 992, 1021, 990, 1018, 971, 1021, 1012, 1048, 993, 982, 997, 978, 996, 1021, 1089, 1047, 981, 975, 1013, 998, 977, 1025, 970, 1019, 974, 937, 1061, 975, 997, 1003, 963, 1052, 991, 1028, 999, 988, 957, 994, 1011, 1022, 935, 1013, 1001, 1001, 994, 1024, 938, 988, 935, 1049, 1038, 1027, 1009, 961, 1047, 1015, 1018, 993, 1018, 998, 1023, 970, 1031, 987, 1013, 1002, 986, 996, 1020, 1037, 974, 984, 974, 949, 991, 994, 1002, 1001, 1013, 1021, 989, 969, 1013, 1014, 1004, 1010, 962, 1020, 977, 1065, 1012, 982, 1033, 1018, 938, 947, 1043, 1052, 988, 989, 972, 955, 1030, 966, 1032, 1010, 977, 970, 962, 995, 1039, 1004, 980, 1066, 978, 1010, 1046, 994, 1009, 1025, 958, 999, 1014, 986, 964, 987, 1009, 1020, 1025, 999, 1018, 965, 1017, 1018, 990, 953, 954, 989, 1046, 979, 983, 1013, 1008, 986, 1029, 1003, 1052, 983, 958, 1015, 1037, 1035, 1004, 1017, 1017, 977, 966, 1006, 949, 1010, 1040, 1003, 973, 991, 1002, 949, 993, 1016, 1021, 960, 986, 995, 984, 995, 1008, 1020, 1064, 1019, 974, 937, 987, 984, 1010, 1068, 995, 1004, 1011, 1001, 977, 923, 989, 964, 1042, 979, 1030, 1003, 991, 960, 978, 1003, 979], [982, 1023, 912, 987, 1033, 1034, 975, 1033, 1025, 934, 1025, 968, 993, 1023, 1027, 969, 1053, 1026, 978, 1016, 991, 985, 982, 1056, 1022, 994, 973, 992, 986, 973, 992, 1029, 1022, 957, 1007, 1023, 950, 968, 1053, 979, 986, 1020, 969, 1016, 1072, 978, 966, 973, 932, 1006, 1000, 941, 1021, 963, 1008, 967, 1031, 985, 998, 996, 1040, 977, 975, 990, 1010, 1004, 1048, 936, 1048, 1016, 1042, 991, 995, 965, 959, 1025, 1002, 987, 1023, 1012, 1000, 976, 1027, 978, 995, 980, 988, 974, 956, 988, 1002, 932, 984, 926, 998, 992, 1021, 1078, 939, 1000, 962, 996, 985, 961, 968, 990, 1023, 956, 967, 998, 1039, 1048, 995, 1031, 1001, 976, 980, 949, 959, 985, 998, 1024, 1047, 1068, 978, 968, 1017, 1011, 1018, 1002, 1013, 974, 984, 954, 1030, 1015, 1013, 1020, 966, 970, 1036, 1019, 984, 1021, 980, 1001, 1006, 1041, 1039, 939, 1009, 1020, 982, 974, 1045, 953, 949, 984, 992, 1037, 972, 1014, 988, 973, 975, 1056, 996, 1042, 1024, 1024, 1032, 1072, 1007, 1005, 1017, 948, 959, 972, 1000, 985, 976, 1054, 956, 1063, 973, 989, 971, 979, 1006, 1006, 1005, 973, 969, 1100, 1044, 1005, 1024, 981, 964, 934, 915, 1048, 1032, 937, 956, 992, 954, 989, 1013, 1035, 974, 982, 939, 1003, 955, 997, 1033, 1010, 950, 926, 989, 997, 968, 1009, 1007, 998, 965, 1002, 960, 996, 1024, 994, 961, 994, 1026, 967, 990, 999, 984, 999, 1016, 985, 987, 994, 992, 1014, 1036, 1003, 947, 1053, 977, 1005, 995, 998, 998, 955], [969, 1011, 971, 1028, 988, 998, 965, 994, 1031, 995, 962, 975, 1022, 1040, 973, 1009, 991, 981, 992, 1011, 1001, 1006, 964, 999, 1029, 1059, 1042, 988, 1064, 974, 999, 1042, 1015, 1041, 1004, 994, 1015, 972, 951, 1040, 1020, 1012, 995, 1028, 989, 986, 1037, 1014, 977, 1011, 945, 1026, 991, 988, 896, 985, 986, 1032, 985, 1004, 1004, 1018, 1015, 1022, 1029, 1003, 952, 1010, 959, 1000, 1043, 1019, 1002, 1019, 972, 1007, 996, 956, 1014, 992, 1007, 981, 996, 986, 1036, 954, 1002, 1008, 1016, 1009, 1031, 986, 999, 1026, 989, 956, 1013, 1060, 966, 1032, 989, 974, 964, 993, 1030, 1010, 1012, 1024, 939, 999, 1026, 1004, 1049, 1035, 1017, 1062, 1011, 980, 1009, 981, 1032, 1006, 971, 1025, 1020, 1069, 1040, 988, 974, 1032, 925, 1018, 957, 968, 961, 963, 954, 987, 974, 988, 962, 959, 1021, 1005, 1001, 1011, 992, 1009, 922, 966, 1004, 932, 1029, 1038, 1011, 1045, 1055, 987, 973, 1035, 998, 987, 1050, 962, 1009, 1056, 1030, 1042, 1026, 1033, 1060, 1034, 968, 1015, 1004, 951, 966, 1000, 1028, 999, 996, 1027, 1044, 933, 1027, 984, 968, 1077, 1000, 1002, 963, 974, 941, 1004, 984, 1017, 1043, 971, 977, 987, 984, 1007, 1008, 923, 961, 1040, 1012, 1014, 990, 957, 983, 1002, 983, 951, 992, 1003, 1020, 964, 996, 980, 994, 1038, 971, 940, 1053, 989, 997, 999, 977, 1012, 1009, 968, 1010, 992, 970, 1028, 1023, 1011, 943, 992, 994, 969, 1018, 976, 975, 944, 961, 966, 1013, 1017, 984, 972, 960, 1034, 1059, 1009], [953, 1017, 1002, 963, 995, 1012, 999, 1010, 907, 962, 1021, 1047, 969, 986, 934, 1007, 1025, 972, 986, 994, 988, 1006, 951, 1013, 1009, 979, 1042, 970, 1001, 1002, 974, 968, 992, 1031, 958, 1017, 995, 993, 979, 1018, 1019, 972, 919, 994, 1023, 1001, 982, 983, 1000, 965, 1009, 1064, 946, 1023, 1055, 968, 991, 1034, 994, 1007, 982, 987, 986, 1006, 975, 1004, 1031, 975, 985, 980, 1033, 999, 982, 971, 973, 1037, 1030, 1002, 935, 984, 1005, 940, 1008, 1002, 965, 1000, 1021, 1009, 1051, 978, 981, 985, 990, 1069, 993, 1008, 1023, 979, 1055, 960, 993, 1002, 1017, 1015, 979, 1005, 1009, 1025, 1058, 989, 1014, 977, 1023, 969, 967, 1043, 1049, 1023, 1015, 991, 1025, 1067, 1019, 1034, 996, 1049, 969, 936, 1040, 1005, 922, 991, 989, 1010, 1023, 1042, 1021, 969, 1044, 1057, 1026, 1004, 1017, 995, 948, 1013, 1023, 960, 1007, 1009, 968, 953, 939, 929, 992, 1028, 985, 1085, 997, 960, 997, 959, 961, 989, 968, 937, 992, 1019, 1024, 996, 977, 965, 1053, 1039, 985, 986, 1004, 1063, 958, 963, 1028, 1009, 1030, 1014, 1074, 968, 1024, 952, 1018, 1019, 1011, 941, 971, 1004, 1018, 1020, 939, 1030, 1015, 982, 1019, 1023, 977, 1020, 1024, 992, 1017, 1039, 960, 984, 963, 964, 966, 1028, 1036, 975, 982, 1054, 1058, 985, 1038, 1026, 990, 1016, 1026, 1056, 991, 985, 984, 1032, 935, 944, 956, 1005, 999, 1009, 1032, 1016, 964, 1017, 970, 1022, 986, 999, 925, 1005, 981, 990, 989, 1018, 952, 991, 976, 1003, 998, 975], [992, 1004, 969, 954, 997, 963, 1055, 1045, 936, 946, 1032, 979, 1030, 1027, 1032, 988, 1021, 958, 1009, 1047, 993, 1052, 1027, 980, 1020, 961, 986, 963, 954, 994, 978, 1009, 994, 998, 958, 971, 1021, 1040, 991, 967, 1064, 979, 949, 966, 1055, 960, 958, 941, 963, 971, 995, 969, 1018, 993, 1029, 999, 1078, 1020, 996, 1019, 1042, 1080, 1012, 1003, 998, 1010, 1025, 1043, 1025, 977, 983, 958, 1003, 1021, 996, 987, 1031, 960, 995, 992, 1014, 965, 1010, 999, 986, 1091, 992, 992, 973, 1002, 1043, 971, 1007, 986, 1050, 1039, 1014, 960, 981, 1020, 1022, 1017, 1033, 1038, 1025, 1022, 1016, 1011, 941, 1031, 977, 1022, 1021, 946, 997, 985, 989, 982, 985, 960, 1018, 976, 986, 1000, 993, 1011, 1059, 1061, 931, 973, 1018, 1056, 1022, 999, 998, 1041, 1022, 1003, 1033, 1068, 982, 1044, 1019, 944, 982, 1005, 1027, 975, 1040, 1023, 999, 980, 1005, 1038, 1013, 1017, 1010, 1027, 972, 905, 1029, 1013, 967, 1015, 976, 1003, 973, 1021, 987, 1033, 914, 994, 1031, 943, 992, 1011, 1026, 1036, 999, 975, 1021, 1027, 952, 990, 959, 991, 977, 1029, 1007, 1032, 1021, 994, 1053, 993, 1014, 1032, 1067, 1009, 968, 1048, 1064, 965, 955, 977, 924, 1008, 1018, 1069, 997, 1015, 1004, 976, 1005, 997, 987, 986, 1005, 972, 929, 1036, 1000, 961, 986, 992, 1018, 1020, 1008, 948, 981, 958, 1041, 1029, 979, 990, 986, 1004, 1011, 1011, 962, 1024, 1005, 982, 1069, 1025, 953, 997, 973, 1036, 1020, 968, 995, 1026, 997, 1024, 1018, 996], [978, 998, 992, 987, 978, 972, 975, 995, 996, 1018, 993, 1048, 961, 1063, 970, 992, 1066, 984, 962, 974, 1008, 990, 956, 953, 916, 978, 1017, 963, 964, 1014, 1021, 963, 952, 981, 971, 1027, 1024, 979, 1036, 972, 1037, 1025, 995, 986, 1054, 997, 988, 1028, 1049, 1028, 1035, 994, 990, 1013, 1024, 1043, 1005, 992, 993, 994, 1055, 983, 966, 1035, 963, 1048, 1013, 952, 1003, 970, 979, 1051, 971, 965, 1077, 989, 996, 955, 1060, 976, 1027, 1029, 1070, 1024, 984, 1018, 968, 980, 985, 1005, 986, 969, 1018, 1051, 1055, 955, 998, 1002, 960, 990, 937, 948, 1024, 1035, 974, 1017, 988, 1015, 969, 975, 1029, 972, 981, 1025, 985, 1006, 1012, 910, 1056, 988, 995, 1032, 1022, 965, 1035, 1044, 988, 1000, 1000, 1021, 1004, 950, 980, 991, 976, 1049, 988, 997, 1047, 999, 993, 946, 1001, 1028, 1010, 947, 1012, 989, 1015, 1080, 950, 975, 1003, 1000, 965, 960, 953, 996, 941, 964, 1034, 949, 947, 931, 996, 981, 1004, 1030, 923, 1027, 987, 998, 941, 997, 979, 952, 978, 1025, 944, 1094, 1050, 1006, 1024, 984, 1024, 1022, 1024, 1011, 1053, 988, 1017, 972, 1010, 1054, 976, 981, 1018, 962, 979, 1024, 960, 1081, 982, 995, 990, 1016, 961, 987, 1016, 1011, 938, 1007, 961, 978, 1010, 987, 977, 970, 1099, 980, 944, 985, 986, 1008, 970, 985, 1000, 980, 1002, 1034, 917, 1024, 1025, 1038, 980, 956, 960, 1015, 977, 988, 982, 970, 961, 1036, 1020, 1026, 1023, 1006, 965, 959, 985, 981, 1036, 1015, 1076, 1009], [992, 1022, 951, 1008, 1029, 1064, 1017, 1012, 1041, 984, 956, 1034, 1034, 970, 1001, 956, 974, 1045, 970, 984, 1062, 1016, 981, 989, 998, 1001, 988, 979, 918, 986, 1008, 990, 930, 970, 997, 1032, 1051, 994, 992, 1060, 1017, 1037, 1048, 973, 973, 958, 983, 1017, 1033, 969, 1003, 985, 954, 993, 946, 1020, 993, 984, 1010, 1048, 1002, 973, 1022, 941, 1029, 1039, 974, 1011, 1018, 1048, 958, 1024, 1053, 999, 950, 1036, 1017, 1050, 980, 1007, 999, 1074, 1008, 1012, 996, 1003, 1027, 1034, 1019, 976, 974, 1043, 1032, 1046, 986, 985, 995, 1035, 1013, 997, 956, 994, 1002, 968, 1016, 971, 1093, 991, 1002, 1037, 1039, 1009, 997, 992, 984, 1013, 1007, 970, 1017, 990, 1043, 1043, 1025, 960, 1011, 1025, 1017, 980, 1023, 982, 1082, 973, 982, 982, 996, 1034, 1016, 990, 1021, 967, 1013, 1028, 974, 949, 999, 975, 948, 966, 977, 1001, 1004, 1063, 1033, 961, 1024, 988, 991, 957, 973, 1048, 1003, 1007, 1012, 1062, 1050, 1030, 985, 1010, 1005, 958, 1052, 1032, 1008, 992, 978, 983, 1011, 1043, 985, 1019, 1005, 1032, 1033, 1007, 971, 1026, 996, 1028, 1013, 1009, 1027, 946, 967, 1048, 1003, 990, 994, 953, 942, 964, 960, 979, 999, 976, 1039, 941, 1002, 1029, 990, 960, 966, 990, 961, 999, 952, 963, 989, 920, 997, 997, 1049, 982, 998, 1031, 1004, 1038, 1015, 979, 957, 1025, 1016, 962, 994, 1008, 1037, 1013, 998, 1010, 986, 971, 1018, 986, 1079, 993, 1028, 1006, 1007, 937, 1019, 956, 1044, 965, 988, 1006, 1011, 1031], [996, 970, 975, 999, 1038, 1028, 988, 950, 1016, 964, 987, 1000, 997, 985, 1009, 995, 991, 981, 980, 1016, 1026, 995, 1029, 1042, 898, 1003, 1035, 1023, 1057, 1049, 990, 1017, 1019, 936, 1021, 1016, 1035, 962, 986, 997, 1041, 1038, 960, 1027, 1028, 1006, 992, 996, 972, 1007, 1049, 971, 1027, 933, 987, 1016, 991, 1016, 1022, 977, 1057, 979, 1019, 1004, 1024, 993, 975, 973, 1054, 973, 982, 1006, 1010, 1008, 941, 984, 1039, 1000, 1024, 982, 1067, 1003, 985, 1031, 1019, 935, 1005, 987, 1016, 922, 993, 1012, 960, 1013, 1024, 1031, 991, 947, 1006, 963, 1050, 992, 986, 952, 992, 997, 1017, 1016, 1024, 996, 951, 1044, 1047, 1035, 979, 1027, 980, 1032, 1036, 969, 999, 1021, 1004, 968, 1038, 1023, 974, 1000, 992, 994, 1043, 963, 974, 980, 1044, 993, 1046, 984, 1041, 975, 1010, 993, 1034, 1014, 1054, 994, 1005, 989, 1034, 1039, 995, 980, 955, 953, 910, 1041, 967, 1013, 953, 1008, 1031, 989, 1036, 1051, 1023, 1026, 974, 978, 980, 985, 984, 951, 974, 1033, 1009, 959, 987, 995, 1005, 994, 1034, 936, 1013, 969, 1000, 979, 1001, 951, 936, 1027, 1016, 989, 985, 1011, 1058, 1053, 930, 1012, 1020, 1005, 1045, 1004, 988, 1002, 1015, 962, 958, 1021, 965, 1055, 1013, 1018, 991, 970, 979, 979, 1029, 1033, 964, 999, 967, 1021, 1053, 967, 979, 966, 1014, 1033, 991, 1050, 992, 1003, 959, 984, 1006, 974, 952, 994, 969, 1008, 953, 1054, 997, 1017, 1004, 995, 952, 1001, 1011, 998, 1064, 979, 986, 1026, 919, 991], [995, 973, 1037, 873, 1051, 994, 1013, 1005, 989, 1011, 989, 945, 1039, 1003, 987, 1026, 988, 942, 989, 957, 1025, 999, 1049, 1019, 1025, 986, 1009, 970, 999, 909, 1015, 995, 1006, 987, 979, 1087, 1026, 988, 1031, 1031, 963, 1016, 1007, 935, 1002, 978, 952, 968, 1001, 1016, 1059, 1010, 1014, 1030, 1015, 1053, 1014, 942, 1015, 1021, 986, 986, 991, 1008, 995, 1012, 1067, 1022, 1020, 996, 986, 947, 987, 1036, 1032, 965, 1004, 1066, 971, 1016, 976, 974, 992, 1020, 1023, 1062, 1019, 957, 977, 1013, 993, 1091, 1026, 992, 1029, 973, 948, 1048, 1010, 1012, 1003, 931, 1064, 1007, 985, 994, 1004, 1000, 982, 1031, 1027, 995, 934, 992, 1001, 982, 1031, 1016, 947, 1026, 950, 982, 1005, 984, 1035, 984, 1013, 1012, 1038, 996, 988, 1059, 1004, 1007, 1007, 973, 1056, 1008, 991, 1016, 997, 997, 991, 1001, 1054, 986, 1019, 956, 1012, 985, 1026, 986, 1007, 977, 990, 977, 947, 1022, 1004, 973, 962, 963, 967, 1007, 1006, 1023, 1005, 966, 1021, 980, 919, 981, 947, 1008, 965, 1042, 942, 977, 956, 1018, 994, 1008, 991, 1042, 967, 1066, 978, 1027, 1038, 1005, 1020, 1001, 991, 1006, 992, 994, 1003, 987, 992, 1049, 984, 971, 971, 991, 1055, 990, 983, 989, 1024, 1010, 1011, 954, 980, 967, 1018, 1035, 970, 1018, 1022, 974, 967, 1019, 988, 980, 965, 1003, 1030, 1019, 1074, 1039, 978, 1009, 930, 997, 970, 1006, 1001, 1017, 1086, 1039, 955, 987, 1025, 983, 975, 971, 986, 914, 1018, 1015, 1009, 1002, 1011, 985, 995, 1026], [985, 1008, 1007, 1055, 982, 987, 1013, 1010, 1001, 1024, 995, 968, 998, 983, 950, 1017, 1037, 994, 948, 984, 957, 1019, 947, 1019, 1055, 963, 955, 987, 958, 951, 940, 930, 984, 955, 1014, 1007, 1000, 1022, 995, 997, 969, 1005, 1059, 1013, 1037, 1038, 949, 1020, 1015, 961, 992, 1025, 898, 977, 1007, 1031, 967, 984, 1051, 957, 994, 1015, 1023, 971, 1007, 1060, 1019, 1072, 981, 974, 1019, 977, 1016, 1053, 1015, 973, 957, 1000, 956, 1026, 958, 1019, 1019, 1012, 1001, 979, 1000, 1031, 1027, 1012, 959, 1027, 998, 1041, 1049, 1010, 997, 1032, 1018, 984, 1002, 989, 1034, 973, 1038, 995, 1031, 1032, 1033, 1010, 1011, 1003, 1040, 1036, 968, 1007, 995, 1001, 968, 993, 969, 935, 964, 1025, 1022, 1024, 974, 1004, 988, 1023, 1042, 956, 1002, 984, 981, 1022, 980, 937, 982, 980, 971, 974, 974, 1073, 992, 994, 967, 1001, 1064, 1016, 1005, 984, 995, 1012, 982, 996, 977, 1036, 971, 1013, 992, 955, 1028, 988, 994, 992, 1095, 979, 999, 1040, 992, 1040, 1038, 1038, 944, 963, 975, 976, 1055, 932, 1047, 1018, 1014, 994, 1022, 993, 1054, 1000, 981, 1023, 980, 999, 968, 1003, 1056, 964, 985, 1004, 987, 1029, 949, 1086, 976, 989, 992, 1042, 1017, 987, 981, 941, 1002, 1001, 980, 1038, 984, 981, 1065, 1004, 977, 1017, 1057, 966, 1025, 968, 964, 1008, 1021, 1008, 957, 1027, 1023, 1005, 990, 1005, 959, 973, 936, 1026, 969, 993, 991, 978, 1018, 1030, 976, 958, 990, 1039, 983, 993, 956, 959, 948, 1017, 982, 982], [978, 1020, 1053, 1032, 1025, 1009, 978, 973, 962, 1025, 1046, 993, 1011, 1006, 982, 1040, 1001, 927, 1002, 992, 1003, 993, 973, 915, 994, 983, 1038, 983, 1044, 963, 984, 1034, 980, 989, 1024, 1015, 999, 1006, 1017, 1005, 1003, 1001, 956, 1042, 967, 965, 1006, 1061, 1029, 968, 978, 1037, 1022, 1002, 993, 936, 982, 986, 1001, 1041, 951, 999, 967, 987, 994, 1047, 1059, 1029, 1007, 1008, 937, 1023, 1033, 967, 1021, 967, 946, 965, 1020, 974, 981, 965, 1003, 1040, 999, 983, 1026, 1045, 997, 997, 1058, 991, 950, 1003, 959, 1002, 967, 1018, 990, 974, 994, 998, 982, 989, 1010, 1011, 1005, 960, 987, 987, 998, 960, 994, 962, 993, 967, 982, 996, 1027, 992, 953, 1020, 988, 980, 933, 1047, 1009, 971, 1012, 954, 969, 935, 1002, 984, 992, 1005, 927, 1004, 955, 998, 1018, 1012, 945, 960, 1009, 982, 1007, 998, 1029, 945, 976, 1016, 955, 1001, 964, 1012, 950, 977, 966, 1080, 1023, 1014, 999, 997, 1032, 1006, 1012, 1001, 999, 963, 958, 1013, 957, 997, 971, 987, 982, 990, 997, 979, 910, 1061, 959, 1021, 1032, 985, 994, 992, 1022, 990, 1003, 990, 974, 1038, 1011, 997, 1025, 1037, 1076, 1017, 1019, 970, 1051, 1063, 936, 963, 1019, 961, 1027, 997, 1058, 998, 1011, 1024, 1004, 1026, 1031, 1009, 975, 1055, 997, 1003, 995, 971, 961, 1013, 1007, 1031, 981, 1024, 1069, 1040, 1010, 953, 944, 999, 1012, 960, 1011, 945, 986, 987, 1001, 1037, 1023, 971, 956, 1021, 968, 1021, 962, 984, 1010, 1036, 1075, 991], [987, 989, 1000, 968, 967, 965, 972, 999, 1017, 990, 1018, 991, 991, 963, 1021, 995, 1003, 1029, 973, 1052, 1005, 999, 958, 1050, 1007, 1013, 994, 1003, 1014, 1001, 978, 1031, 980, 966, 1025, 1029, 971, 1021, 998, 1013, 962, 974, 1027, 1075, 927, 1015, 971, 1037, 1061, 971, 1004, 991, 966, 969, 1039, 980, 1037, 984, 975, 1005, 1037, 987, 950, 1007, 983, 990, 933, 988, 989, 1026, 991, 1026, 960, 970, 999, 974, 929, 1054, 982, 1095, 1042, 981, 1064, 1014, 1001, 1018, 972, 968, 987, 961, 1009, 1014, 1005, 937, 990, 993, 956, 1017, 1064, 993, 1029, 987, 962, 1069, 952, 969, 925, 1029, 1046, 1021, 1000, 942, 1053, 987, 1005, 985, 957, 973, 1000, 1008, 1021, 1053, 1005, 1043, 1003, 1049, 965, 1009, 1018, 1007, 1048, 980, 983, 973, 969, 1033, 964, 967, 1024, 972, 1036, 950, 990, 1043, 950, 1031, 1007, 968, 985, 1040, 1020, 1034, 993, 986, 960, 985, 1068, 994, 982, 931, 1024, 952, 952, 959, 1050, 1009, 1031, 990, 998, 973, 1008, 994, 982, 1024, 1032, 941, 993, 1001, 944, 1035, 1032, 986, 1071, 1032, 997, 994, 961, 1001, 973, 1013, 1002, 989, 1040, 1044, 1081, 1022, 968, 998, 1047, 992, 1002, 969, 1012, 1018, 1001, 1006, 1030, 1029, 1031, 981, 1007, 950, 1044, 1016, 1004, 969, 1024, 1051, 1040, 983, 998, 1013, 964, 1033, 1036, 975, 1048, 968, 1029, 1000, 962, 1022, 976, 1025, 1009, 1026, 1022, 1001, 1057, 962, 995, 1015, 1033, 1066, 994, 985, 1002, 972, 1032, 1041, 1061, 1032, 1001, 955, 992, 1023], [954, 1005, 988, 981, 971, 994, 1011, 1016, 1012, 970, 972, 1048, 950, 957, 974, 985, 980, 965, 961, 997, 998, 955, 1041, 973, 1000, 959, 1057, 1012, 1003, 1078, 982, 1023, 950, 969, 1015, 1046, 1046, 997, 975, 1015, 1017, 976, 1022, 993, 995, 969, 997, 989, 1008, 1034, 1013, 1012, 955, 950, 1033, 996, 1007, 987, 1032, 1013, 1007, 924, 1006, 941, 1003, 1003, 1047, 999, 982, 1036, 973, 1011, 1023, 1020, 1028, 990, 1002, 987, 969, 986, 966, 1024, 984, 935, 966, 1042, 986, 993, 1013, 981, 944, 980, 997, 997, 1029, 1013, 1014, 974, 964, 1003, 1030, 1051, 971, 1039, 1006, 1019, 1022, 1041, 997, 1012, 1026, 1004, 1035, 1011, 1081, 983, 1014, 979, 995, 1002, 951, 996, 1071, 1012, 978, 1072, 963, 974, 1000, 980, 1023, 986, 1034, 1034, 993, 955, 980, 1002, 1020, 1016, 1015, 963, 980, 982, 1013, 959, 1019, 993, 1005, 1000, 1039, 1004, 922, 1005, 1030, 1052, 1009, 1051, 989, 985, 1022, 1030, 983, 974, 1019, 987, 1037, 1016, 1040, 1029, 1002, 1047, 976, 965, 961, 979, 975, 1013, 958, 1021, 1037, 1101, 971, 1028, 1025, 957, 1059, 1055, 1002, 1035, 1016, 978, 1015, 1001, 1026, 983, 1040, 950, 1006, 977, 1020, 1006, 1095, 1020, 975, 953, 1002, 964, 989, 994, 984, 955, 964, 1017, 1022, 1050, 974, 983, 1052, 961, 1015, 1035, 1026, 974, 982, 964, 1025, 1049, 990, 978, 993, 936, 962, 1003, 1006, 1019, 932, 952, 1057, 1017, 1018, 968, 1073, 997, 986, 996, 1017, 998, 993, 1008, 1008, 980, 1012, 980, 992, 1063], [997, 980, 1019, 1025, 1015, 955, 986, 956, 994, 966, 1036, 997, 1005, 1031, 1011, 1006, 998, 1090, 1024, 1051, 998, 997, 1011, 1017, 1052, 1008, 1021, 983, 1039, 1005, 1038, 1009, 1064, 1027, 1054, 1027, 1029, 1019, 968, 1026, 1001, 1003, 1022, 1060, 984, 1016, 1016, 1000, 1018, 1004, 1010, 1004, 998, 1014, 967, 1031, 992, 1029, 1021, 993, 1024, 1044, 994, 1026, 1010, 973, 1008, 988, 981, 1068, 1021, 1042, 1009, 1011, 1028, 960, 1029, 986, 1005, 980, 985, 973, 940, 1005, 1042, 975, 1012, 978, 995, 964, 1006, 981, 993, 982, 1029, 972, 993, 995, 999, 997, 1010, 975, 1005, 998, 976, 997, 987, 1005, 978, 945, 1010, 1021, 1006, 997, 1038, 1026, 918, 980, 1003, 996, 998, 1019, 996, 996, 997, 1003, 1054, 1032, 1007, 966, 975, 961, 1001, 976, 1029, 912, 1012, 990, 1006, 1040, 1005, 962, 1027, 1007, 1039, 1066, 980, 987, 946, 978, 1022, 996, 997, 1012, 984, 1034, 958, 998, 1035, 899, 969, 975, 1035, 924, 1050, 962, 993, 969, 976, 951, 1025, 1033, 1035, 1024, 1045, 966, 1004, 1037, 1021, 1036, 1000, 1002, 1020, 999, 1029, 989, 998, 1033, 1017, 1003, 1016, 1052, 995, 944, 1018, 1039, 974, 989, 1032, 975, 1016, 1038, 1011, 978, 966, 1031, 1015, 989, 1057, 973, 984, 995, 1001, 941, 1012, 1007, 1009, 980, 1017, 1006, 1006, 997, 1038, 994, 947, 940, 944, 1009, 1015, 941, 999, 1028, 1011, 1023, 980, 953, 995, 1005, 1016, 1032, 1000, 1016, 971, 1042, 990, 999, 1003, 994, 1023, 977, 1031, 961, 939, 1025, 950, 986], [1001, 938, 1043, 988, 988, 1012, 1005, 980, 1040, 966, 957, 976, 953, 1034, 1044, 986, 1013, 985, 1021, 992, 980, 979, 1020, 957, 1013, 994, 1060, 994, 973, 1031, 1017, 939, 1012, 964, 967, 962, 1007, 957, 1039, 1009, 994, 991, 1005, 1063, 1000, 981, 1021, 1004, 989, 1013, 1035, 976, 1030, 1004, 995, 1009, 971, 1004, 959, 1015, 984, 977, 949, 954, 983, 1055, 1034, 982, 1033, 1009, 1004, 1058, 1013, 1012, 1032, 1010, 967, 1000, 1038, 989, 1008, 1007, 1017, 1012, 984, 1006, 917, 985, 1080, 1071, 1013, 977, 1036, 979, 963, 1006, 956, 1044, 1037, 989, 1024, 981, 1020, 1015, 1026, 984, 999, 1031, 1065, 1040, 996, 1008, 1037, 1009, 1037, 928, 1010, 1013, 1031, 940, 993, 984, 995, 1003, 1009, 957, 992, 971, 1065, 1015, 1014, 984, 978, 1000, 1024, 968, 1092, 1028, 1010, 976, 966, 990, 1029, 1070, 1033, 995, 983, 981, 1008, 925, 977, 978, 992, 985, 897, 1003, 963, 1086, 997, 1017, 961, 1000, 981, 1053, 941, 1025, 955, 1001, 1048, 987, 1065, 977, 998, 1030, 1001, 1013, 993, 1034, 999, 988, 1004, 995, 988, 958, 1038, 1010, 1004, 965, 952, 997, 986, 939, 1037, 1003, 1056, 1037, 1023, 995, 960, 977, 1056, 1027, 1035, 1028, 1004, 1012, 1022, 1011, 1015, 1025, 967, 966, 994, 1054, 1018, 988, 1006, 1050, 997, 1013, 1019, 1000, 1019, 995, 951, 993, 1030, 998, 993, 998, 984, 1045, 980, 983, 1013, 970, 1061, 1042, 1006, 1039, 997, 983, 987, 964, 1006, 980, 976, 1008, 947, 1004, 1062, 1022, 1004, 992, 1006, 1008], [1010, 1020, 982, 987, 1066, 997, 1001, 1040, 954, 1007, 1022, 1010, 966, 982, 967, 985, 1038, 1043, 1049, 982, 1076, 992, 973, 1005, 992, 1015, 985, 1068, 1053, 1000, 914, 1005, 1044, 997, 1007, 993, 995, 957, 974, 1041, 1023, 959, 1005, 1000, 1037, 970, 1004, 1019, 962, 1006, 990, 1040, 973, 935, 932, 955, 999, 988, 985, 1009, 1025, 1027, 1041, 1033, 980, 992, 981, 986, 944, 1007, 1002, 1015, 973, 1003, 986, 1034, 1031, 978, 1007, 967, 1019, 1001, 998, 1008, 1006, 978, 966, 1039, 992, 1017, 1009, 969, 991, 957, 1024, 1000, 1003, 979, 928, 1018, 987, 1052, 1032, 955, 995, 1036, 919, 1017, 1021, 1006, 1062, 969, 1040, 1047, 1022, 988, 1010, 987, 919, 982, 1013, 964, 967, 995, 1014, 1001, 1032, 1029, 1056, 991, 1024, 1074, 1028, 1030, 985, 977, 1049, 943, 971, 1011, 980, 970, 952, 1044, 1029, 988, 1038, 967, 984, 1027, 1018, 1027, 999, 999, 994, 1011, 1051, 994, 983, 952, 977, 1003, 992, 995, 1020, 1047, 1024, 975, 973, 1048, 1001, 957, 975, 939, 978, 1006, 1020, 1013, 973, 986, 1007, 1013, 980, 1015, 970, 1044, 1027, 1034, 1004, 998, 965, 1017, 997, 1040, 986, 970, 977, 940, 990, 1016, 1009, 970, 968, 993, 986, 992, 958, 1004, 1042, 974, 1070, 1003, 1004, 986, 999, 959, 976, 973, 984, 946, 954, 984, 982, 960, 1016, 1004, 1006, 974, 1039, 1008, 953, 1017, 968, 1011, 1011, 1011, 1010, 1026, 968, 975, 954, 976, 988, 986, 980, 990, 1076, 1067, 1017, 1004, 1012, 1011, 944, 1023, 985, 979], [994, 1020, 1006, 927, 1051, 961, 974, 962, 1019, 994, 1016, 986, 1063, 1016, 1013, 1032, 971, 1002, 994, 994, 986, 1011, 997, 952, 1001, 1005, 1056, 1018, 1009, 936, 989, 980, 1006, 921, 950, 939, 987, 998, 988, 1026, 984, 1033, 991, 1003, 994, 964, 1009, 1034, 999, 1063, 1017, 980, 1031, 999, 1021, 995, 1013, 987, 1010, 1037, 950, 977, 1021, 1007, 1015, 970, 994, 1008, 990, 985, 1005, 1036, 1045, 957, 996, 1031, 987, 1040, 971, 1026, 940, 1005, 946, 979, 1013, 1023, 1030, 1016, 1053, 975, 978, 1058, 1039, 1008, 1041, 1008, 1028, 1011, 1057, 996, 1030, 1053, 992, 1009, 963, 1070, 944, 1028, 965, 1048, 1026, 1026, 932, 1021, 994, 968, 990, 983, 1088, 982, 1013, 962, 958, 1017, 998, 1032, 994, 1028, 1014, 955, 1049, 967, 980, 1049, 939, 1011, 1032, 994, 1019, 1033, 995, 1013, 1007, 1031, 971, 974, 1024, 985, 1000, 996, 1004, 994, 995, 958, 958, 1005, 973, 1009, 1013, 1030, 968, 1046, 986, 1003, 984, 954, 1010, 1009, 996, 972, 1029, 1011, 1021, 1015, 1009, 960, 982, 1033, 1013, 1024, 975, 1001, 1008, 1031, 1018, 986, 999, 1034, 969, 987, 1033, 960, 989, 995, 1017, 1028, 973, 964, 1001, 1001, 980, 978, 960, 970, 1027, 1019, 944, 1023, 1005, 947, 1003, 1026, 988, 1011, 987, 1009, 970, 1029, 989, 961, 980, 982, 959, 930, 1011, 999, 954, 1045, 1001, 986, 986, 1042, 1058, 949, 1006, 1066, 984, 999, 994, 986, 925, 1016, 985, 990, 1013, 956, 1028, 1048, 971, 993, 1037, 995, 972, 1009, 1029, 1028], [984, 1011, 1004, 974, 972, 993, 1001, 996, 977, 983, 992, 992, 994, 1047, 1011, 952, 960, 935, 1001, 1005, 1006, 977, 979, 1058, 997, 1039, 983, 1041, 980, 1030, 1008, 1031, 943, 976, 1041, 1016, 1001, 990, 1006, 1022, 1059, 1061, 1060, 1007, 1031, 953, 984, 978, 1015, 1021, 1010, 951, 966, 990, 999, 970, 1001, 1021, 1024, 1033, 969, 1052, 972, 959, 1036, 979, 1014, 1009, 916, 1012, 1016, 999, 1022, 963, 987, 961, 941, 1031, 991, 990, 1009, 1015, 1031, 1061, 1072, 1008, 1045, 973, 1040, 1030, 986, 1016, 974, 1005, 1030, 979, 964, 1001, 970, 934, 1034, 937, 1023, 950, 991, 1006, 981, 1032, 993, 1007, 1014, 952, 1025, 1013, 973, 972, 956, 984, 1032, 1016, 990, 973, 983, 1025, 960, 964, 984, 1024, 981, 1000, 966, 1010, 1000, 958, 1043, 946, 1010, 997, 985, 978, 1029, 999, 1004, 986, 952, 1042, 1031, 982, 1024, 959, 958, 981, 971, 989, 1022, 993, 968, 1010, 1024, 1036, 993, 1016, 943, 1072, 959, 987, 1011, 1041, 1050, 1009, 1057, 1013, 983, 961, 1037, 1031, 943, 1052, 956, 1014, 969, 996, 1027, 976, 1045, 1009, 979, 960, 979, 957, 1057, 1012, 1020, 1040, 995, 1002, 1044, 1055, 1020, 995, 1049, 1005, 1021, 972, 987, 965, 1013, 1007, 1048, 1021, 962, 1074, 987, 996, 1006, 1000, 986, 1044, 1089, 1024, 997, 974, 1005, 1016, 982, 974, 1034, 1023, 1062, 992, 974, 1030, 980, 1010, 992, 989, 969, 1011, 990, 1012, 1032, 981, 1055, 1037, 932, 946, 999, 1033, 985, 1000, 991, 988, 1007, 1032, 1025, 1000], [979, 967, 1059, 1004, 1014, 925, 996, 1015, 1018, 1023, 960, 1000, 980, 986, 1033, 972, 1030, 953, 1000, 933, 998, 903, 1033, 1021, 1074, 986, 1036, 989, 965, 992, 998, 1015, 987, 1011, 954, 1067, 1016, 959, 999, 1044, 998, 1008, 1024, 1077, 1040, 990, 982, 969, 1035, 1011, 981, 1050, 1020, 1045, 1019, 1030, 986, 1021, 996, 1000, 1008, 1044, 963, 939, 998, 985, 1033, 1030, 986, 1000, 966, 954, 1074, 965, 1001, 1011, 976, 1016, 977, 1026, 1040, 939, 983, 1066, 974, 1020, 1028, 1012, 1010, 973, 971, 957, 983, 956, 1072, 973, 1002, 974, 949, 1027, 1064, 1043, 980, 979, 1050, 966, 980, 1048, 1017, 978, 981, 996, 1029, 1039, 1008, 997, 968, 975, 984, 1028, 941, 998, 1019, 1040, 963, 1047, 1057, 964, 1046, 1024, 1055, 991, 1010, 1004, 1042, 1004, 988, 1005, 1037, 1024, 981, 1050, 1043, 1013, 1032, 1010, 1009, 1042, 1031, 982, 1027, 1033, 1026, 971, 1024, 1002, 943, 1012, 946, 963, 1035, 994, 1007, 1041, 972, 971, 999, 982, 1020, 1002, 995, 984, 997, 1025, 1036, 1003, 979, 977, 943, 1041, 1032, 1029, 1041, 978, 988, 995, 1035, 972, 998, 950, 1009, 1033, 1016, 1025, 1023, 1016, 1014, 1032, 995, 1048, 1039, 1037, 979, 992, 1009, 1043, 1048, 1001, 998, 1038, 969, 1029, 1011, 1012, 999, 983, 945, 1055, 944, 977, 967, 1033, 1051, 991, 984, 1058, 1000, 975, 992, 971, 1020, 1022, 976, 1032, 1037, 996, 929, 963, 994, 1032, 991, 1027, 1032, 926, 964, 1006, 959, 1047, 996, 1054, 964, 983, 953, 1003, 1015, 1025], [1026, 1004, 1040, 933, 976, 1017, 1042, 1033, 996, 973, 980, 1019, 985, 1045, 973, 1009, 985, 983, 1010, 1011, 981, 992, 982, 1060, 900, 1050, 995, 1043, 979, 984, 1008, 977, 1028, 992, 979, 983, 1015, 984, 1010, 1009, 1017, 1015, 971, 984, 1019, 1004, 975, 986, 998, 1000, 1017, 1040, 941, 1049, 953, 1022, 1019, 972, 1003, 981, 973, 970, 954, 975, 996, 990, 978, 987, 1006, 1010, 1013, 964, 1021, 946, 965, 1063, 975, 980, 986, 993, 929, 1057, 920, 1050, 1013, 1026, 967, 1017, 959, 982, 906, 1015, 1001, 1004, 1017, 1018, 1012, 980, 1016, 1020, 962, 987, 1015, 998, 1006, 971, 990, 993, 1049, 981, 1002, 984, 924, 962, 974, 1026, 960, 1023, 991, 987, 942, 1000, 1045, 1028, 1010, 997, 984, 1049, 998, 995, 1062, 946, 983, 992, 995, 988, 971, 982, 1001, 1042, 980, 1028, 1034, 984, 1006, 1037, 1028, 1010, 988, 1025, 1034, 1004, 1003, 989, 1020, 955, 1025, 1000, 1050, 1007, 986, 1000, 1017, 996, 970, 1006, 1001, 974, 988, 1004, 971, 974, 981, 947, 966, 935, 969, 972, 963, 1001, 1065, 974, 994, 985, 954, 1038, 982, 1015, 1048, 939, 968, 982, 1024, 1062, 998, 1008, 959, 983, 1034, 963, 951, 975, 1024, 997, 961, 968, 996, 1014, 1013, 1024, 968, 966, 982, 1021, 994, 996, 1048, 960, 1048, 997, 967, 1010, 970, 972, 1024, 1018, 997, 957, 993, 1082, 988, 1037, 1030, 1057, 979, 928, 1022, 980, 993, 958, 975, 1037, 1006, 941, 1025, 1008, 957, 1043, 1065, 1041, 997, 964, 1021, 972, 981, 940], [973, 990, 985, 1005, 993, 980, 1018, 964, 988, 985, 1020, 1007, 1050, 932, 1014, 1009, 1012, 991, 1002, 1036, 1009, 1018, 987, 1022, 975, 1026, 962, 965, 957, 1031, 1023, 1045, 943, 1014, 1008, 990, 1027, 1059, 937, 948, 1015, 969, 985, 1010, 1003, 933, 994, 1021, 1016, 1076, 991, 1014, 1040, 1044, 947, 1043, 1017, 1030, 992, 976, 1036, 1068, 1039, 991, 935, 1033, 962, 1037, 986, 1000, 1021, 999, 990, 987, 942, 987, 988, 994, 892, 1025, 957, 947, 966, 1024, 993, 944, 1038, 973, 1008, 1043, 1003, 1049, 985, 973, 968, 1031, 990, 974, 1059, 985, 970, 957, 1003, 984, 1044, 1027, 1023, 982, 1024, 1010, 959, 1000, 1069, 983, 973, 973, 990, 991, 948, 973, 995, 1039, 957, 991, 959, 1010, 963, 948, 1005, 1033, 1040, 1011, 949, 945, 1035, 988, 993, 1045, 963, 996, 978, 993, 1044, 991, 994, 1026, 987, 1017, 989, 933, 936, 962, 1026, 1054, 1036, 1014, 1050, 1077, 997, 1009, 975, 1050, 1001, 1020, 970, 1059, 970, 959, 992, 1050, 1001, 1000, 1082, 989, 1023, 1012, 938, 1067, 1014, 1009, 1029, 993, 1066, 987, 1039, 1017, 986, 992, 961, 976, 977, 964, 972, 1045, 981, 997, 969, 1001, 974, 963, 949, 1009, 1046, 1024, 1017, 1017, 992, 988, 988, 1012, 994, 974, 991, 997, 1035, 998, 988, 963, 981, 947, 961, 993, 1042, 1076, 957, 1069, 958, 1014, 996, 1033, 1029, 983, 981, 1001, 1010, 947, 988, 1019, 1012, 982, 1045, 958, 1019, 1017, 951, 1033, 1042, 963, 1044, 1005, 977, 996, 947, 989, 930, 1086], [978, 1010, 1058, 994, 984, 1007, 980, 1044, 991, 1000, 1054, 1003, 953, 1002, 986, 927, 985, 1038, 987, 983, 994, 975, 996, 970, 967, 977, 945, 1053, 1017, 965, 997, 985, 1004, 1018, 1035, 1041, 1010, 1039, 983, 1061, 999, 957, 1084, 998, 1037, 983, 924, 996, 1063, 1015, 993, 988, 1003, 1023, 1001, 961, 975, 972, 963, 940, 1041, 1008, 968, 1030, 1060, 1017, 1015, 991, 959, 982, 962, 1039, 985, 998, 1026, 1026, 1007, 1040, 1013, 1006, 964, 1023, 1027, 985, 988, 1019, 999, 989, 1015, 1015, 987, 978, 992, 982, 1010, 991, 983, 1007, 995, 1020, 1028, 1058, 1003, 1027, 976, 983, 1036, 1011, 942, 1030, 988, 980, 966, 989, 1016, 984, 958, 1010, 1041, 1040, 1029, 977, 1013, 954, 998, 991, 1028, 1043, 1020, 1021, 920, 1025, 1021, 1058, 969, 971, 1015, 970, 1009, 954, 995, 1021, 1054, 1003, 1001, 969, 1024, 940, 984, 1046, 961, 990, 992, 1050, 989, 971, 1031, 968, 947, 960, 925, 1045, 940, 979, 997, 947, 963, 1014, 961, 1022, 981, 983, 992, 1026, 1019, 1021, 970, 1049, 994, 1004, 958, 1005, 945, 980, 1045, 1009, 975, 1015, 977, 947, 953, 991, 1018, 1009, 1002, 954, 1019, 1046, 1031, 1001, 1047, 990, 1065, 1046, 979, 1014, 981, 1018, 1000, 1009, 1033, 1002, 1000, 984, 974, 977, 998, 968, 1019, 1021, 1017, 1018, 993, 989, 1058, 976, 1048, 1052, 990, 948, 965, 991, 1029, 1010, 1055, 1043, 1001, 1074, 953, 983, 977, 966, 994, 1025, 1002, 1053, 970, 1058, 1025, 1050, 985, 967, 1001, 1021, 1013, 996], [1039, 977, 995, 990, 1074, 1041, 1030, 961, 992, 1008, 986, 1004, 1013, 986, 943, 1011, 1025, 1022, 1030, 1018, 1046, 994, 1011, 989, 992, 935, 1026, 990, 1015, 1016, 1003, 916, 1010, 1029, 1003, 1061, 974, 993, 1050, 1002, 998, 1034, 995, 1006, 1019, 1034, 1037, 1029, 978, 1018, 957, 1001, 1078, 980, 1047, 1022, 1024, 970, 967, 1004, 1000, 979, 968, 979, 1052, 1016, 1012, 984, 997, 968, 986, 1020, 1033, 985, 991, 988, 985, 973, 949, 1011, 1037, 999, 1005, 982, 1007, 1041, 987, 956, 1003, 994, 1000, 968, 1015, 995, 973, 998, 971, 991, 1010, 976, 1037, 937, 1003, 980, 1065, 997, 956, 996, 1008, 1009, 999, 998, 1056, 988, 1018, 948, 969, 997, 1002, 1028, 1030, 960, 1052, 989, 1047, 986, 961, 965, 972, 981, 991, 979, 1004, 976, 998, 948, 1031, 983, 1004, 993, 1044, 934, 996, 1001, 1044, 979, 1023, 974, 996, 1047, 1018, 1080, 1007, 1032, 970, 976, 1017, 1053, 1006, 976, 986, 947, 993, 989, 1019, 1001, 1006, 1070, 992, 971, 976, 1085, 1003, 993, 994, 956, 1008, 1026, 990, 1058, 1016, 1082, 1057, 947, 978, 977, 1016, 1015, 1047, 983, 1059, 1041, 992, 1020, 963, 975, 991, 1030, 979, 1022, 977, 999, 1033, 988, 955, 970, 992, 1016, 1049, 1024, 999, 1004, 1012, 1002, 1000, 985, 1029, 1021, 1036, 1045, 996, 954, 945, 1022, 1083, 983, 1003, 926, 1042, 973, 1004, 1035, 1002, 972, 946, 997, 976, 998, 1086, 962, 1045, 962, 1007, 986, 1091, 959, 1003, 976, 992, 1057, 943, 1045, 1003, 1058, 987, 948], [1001, 1050, 986, 922, 971, 1061, 1064, 1014, 1007, 1033, 967, 1007, 993, 1001, 1003, 944, 993, 947, 988, 1016, 1006, 1028, 978, 954, 1032, 1002, 977, 980, 984, 952, 992, 979, 1004, 999, 999, 1042, 992, 998, 965, 1051, 1000, 1001, 934, 1056, 984, 992, 1018, 975, 1051, 1024, 940, 1045, 1030, 1042, 962, 966, 943, 1034, 1019, 993, 995, 1008, 1039, 1018, 1001, 1017, 948, 963, 979, 986, 963, 951, 1040, 1001, 1000, 988, 1006, 977, 1024, 1007, 973, 1023, 996, 954, 1016, 1018, 1004, 953, 991, 970, 1023, 1009, 980, 987, 1005, 1044, 1007, 991, 1019, 1010, 1030, 977, 986, 1016, 1042, 973, 938, 1017, 989, 981, 1010, 1071, 1013, 984, 996, 990, 1043, 953, 1011, 1016, 980, 973, 972, 985, 1016, 989, 1017, 978, 1017, 973, 988, 1005, 988, 998, 965, 1029, 1040, 1034, 966, 942, 1052, 1007, 962, 1008, 964, 1009, 1017, 1025, 1012, 1014, 962, 1001, 993, 998, 1051, 1026, 1052, 988, 987, 976, 938, 1015, 1039, 1065, 960, 933, 1003, 1005, 955, 966, 960, 964, 976, 954, 979, 962, 1031, 1037, 1014, 979, 961, 1013, 1020, 978, 998, 984, 984, 1088, 989, 957, 1028, 937, 984, 994, 978, 1005, 1005, 1006, 1022, 978, 985, 1018, 979, 990, 984, 995, 991, 1021, 995, 1032, 987, 1036, 1054, 965, 1055, 968, 1006, 963, 999, 977, 1018, 1008, 1055, 1010, 1012, 983, 1035, 986, 960, 999, 1050, 998, 1023, 986, 1001, 1014, 964, 1024, 1023, 947, 1020, 1036, 980, 1078, 1003, 957, 988, 1003, 949, 1009, 1026, 1031, 1024, 990, 1010, 1044], [1028, 983, 995, 1067, 1012, 923, 985, 1059, 1000, 1051, 1029, 971, 1029, 987, 993, 1031, 967, 949, 988, 1013, 905, 977, 978, 1012, 1029, 964, 973, 1004, 1041, 1006, 996, 1059, 1011, 964, 1057, 963, 1001, 1023, 984, 1051, 989, 996, 1054, 967, 1013, 1010, 1047, 1008, 1037, 965, 982, 1037, 988, 992, 1003, 963, 1030, 974, 1038, 1023, 954, 1016, 1042, 1006, 981, 1079, 1004, 973, 996, 989, 1028, 962, 1000, 1002, 985, 997, 1026, 975, 1058, 1002, 1029, 963, 1024, 985, 1008, 959, 979, 998, 1040, 1002, 1026, 1035, 984, 1026, 1027, 970, 1024, 974, 984, 1028, 1004, 1005, 1019, 980, 961, 987, 1023, 974, 1017, 994, 981, 936, 964, 959, 988, 960, 1023, 1061, 1005, 951, 984, 986, 944, 988, 999, 1020, 976, 957, 980, 1010, 986, 979, 970, 948, 1010, 955, 1008, 1041, 997, 1045, 1044, 994, 994, 972, 968, 996, 967, 983, 966, 1050, 960, 1026, 995, 998, 1045, 967, 1026, 923, 968, 1011, 974, 969, 1025, 976, 938, 1012, 963, 984, 1070, 1057, 955, 1023, 972, 1007, 1016, 1019, 956, 963, 1040, 1002, 1009, 1014, 948, 989, 997, 1062, 1022, 958, 966, 973, 1027, 962, 979, 1048, 994, 1026, 1021, 939, 1036, 972, 1035, 981, 914, 1058, 1026, 989, 991, 1032, 937, 1047, 1043, 1006, 1007, 960, 1004, 943, 1003, 992, 1013, 1003, 918, 982, 969, 990, 995, 1017, 1029, 1006, 1002, 997, 1058, 945, 1021, 990, 991, 1042, 1009, 999, 1036, 975, 994, 974, 1054, 991, 1010, 1009, 991, 985, 959, 1037, 1001, 996, 1038, 1002, 1008, 1010], [1041, 1005, 1009, 1014, 979, 1020, 1037, 1013, 973, 955, 967, 1017, 988, 1057, 1020, 990, 1021, 992, 970, 1036, 986, 1017, 980, 1050, 981, 1001, 1028, 967, 1013, 1090, 1019, 1024, 1008, 993, 989, 1051, 1016, 983, 980, 990, 1003, 922, 1013, 962, 1009, 936, 975, 968, 998, 1038, 986, 972, 1027, 968, 1007, 987, 996, 1010, 1010, 1034, 989, 1027, 1038, 1015, 991, 1059, 985, 972, 1005, 988, 965, 980, 991, 994, 945, 1004, 972, 948, 988, 985, 1007, 1020, 981, 1018, 1041, 1019, 995, 1020, 1049, 1025, 1028, 935, 996, 978, 1022, 952, 1020, 989, 995, 996, 1033, 1059, 1032, 973, 981, 979, 1008, 985, 1016, 978, 1012, 1011, 946, 1034, 1074, 1010, 994, 968, 1014, 989, 1027, 931, 1001, 1044, 969, 1029, 978, 1035, 989, 1012, 1011, 964, 1010, 997, 964, 978, 1034, 1045, 1009, 989, 957, 989, 1038, 1043, 980, 1062, 984, 972, 1014, 935, 932, 992, 1013, 1005, 966, 956, 982, 1032, 1022, 1024, 1025, 968, 1028, 967, 967, 1070, 1002, 1035, 984, 1031, 1048, 1006, 993, 992, 989, 1038, 966, 997, 940, 1014, 972, 1015, 974, 1007, 995, 972, 989, 1000, 1015, 999, 981, 944, 1026, 1017, 1053, 984, 1052, 1021, 986, 991, 977, 998, 1005, 1073, 1017, 972, 1013, 978, 1000, 989, 1000, 988, 994, 1030, 1035, 1015, 1008, 1000, 971, 1058, 1018, 972, 990, 989, 972, 1011, 964, 999, 1013, 1043, 1013, 1057, 949, 991, 1011, 923, 999, 959, 955, 1006, 967, 1011, 994, 1011, 954, 976, 966, 1021, 955, 1008, 995, 945, 963, 1055, 974, 1016], [1014, 1012, 977, 990, 979, 1031, 1030, 981, 1026, 1012, 1018, 984, 981, 1039, 1015, 1053, 1029, 1037, 991, 1012, 1016, 1026, 906, 1084, 977, 968, 984, 1034, 1038, 1017, 994, 984, 1011, 977, 1019, 1003, 1048, 988, 1020, 1023, 980, 1017, 953, 1001, 976, 1052, 985, 993, 975, 919, 1000, 974, 992, 995, 1021, 1004, 1024, 986, 1030, 1017, 1033, 996, 973, 1027, 970, 974, 981, 969, 1002, 1020, 982, 1022, 973, 972, 1011, 1020, 1056, 1001, 977, 1018, 929, 979, 1037, 987, 1022, 993, 1019, 989, 968, 1017, 1018, 958, 985, 987, 980, 976, 1020, 909, 963, 981, 1033, 1016, 983, 1020, 955, 991, 967, 984, 1008, 1050, 1001, 1035, 1002, 1015, 926, 1044, 1000, 1027, 1028, 983, 1032, 937, 1002, 961, 1037, 986, 990, 1040, 1064, 953, 1002, 1052, 989, 987, 975, 960, 973, 953, 1010, 1036, 1017, 1018, 991, 1040, 945, 1022, 1054, 1000, 991, 973, 996, 980, 999, 1016, 990, 1040, 982, 1025, 1032, 1006, 1022, 1038, 1023, 1039, 1055, 964, 1043, 1035, 958, 1007, 1020, 968, 974, 1008, 1017, 1002, 1010, 975, 980, 995, 989, 993, 1042, 1010, 980, 990, 987, 982, 997, 1010, 935, 1015, 965, 1021, 1026, 970, 964, 1013, 995, 998, 975, 1044, 1010, 949, 967, 1004, 995, 1029, 993, 987, 1028, 994, 968, 990, 992, 987, 1018, 1021, 988, 997, 964, 1041, 1009, 951, 977, 1046, 1003, 978, 1025, 962, 1016, 1004, 1053, 987, 1009, 991, 1007, 984, 1050, 996, 991, 1071, 989, 1006, 963, 973, 1024, 958, 1038, 1017, 1029, 990, 976, 995, 997, 1018], [975, 1014, 999, 1003, 1022, 984, 1006, 1011, 978, 1039, 990, 1022, 998, 1002, 997, 1056, 956, 1000, 1004, 949, 968, 1004, 1030, 971, 978, 1024, 935, 956, 1025, 1022, 971, 1002, 1011, 949, 1038, 951, 984, 927, 970, 1040, 926, 993, 1021, 972, 936, 1015, 980, 1023, 1002, 982, 963, 980, 1005, 1036, 982, 1013, 1018, 991, 980, 1057, 983, 1012, 968, 916, 993, 999, 983, 996, 1021, 925, 1016, 955, 1040, 1032, 990, 962, 1007, 1013, 972, 947, 1058, 997, 1002, 999, 1059, 1032, 1000, 1083, 942, 1013, 1010, 1010, 1013, 1025, 989, 989, 967, 1012, 958, 1049, 1002, 995, 1084, 996, 931, 1043, 975, 984, 1000, 938, 1011, 1030, 973, 989, 972, 1043, 1018, 1000, 997, 1025, 1000, 949, 975, 1010, 955, 1006, 1014, 984, 1017, 947, 1006, 985, 968, 940, 958, 1006, 1017, 989, 1025, 1001, 972, 1003, 1017, 994, 1009, 1024, 968, 984, 997, 999, 1023, 1033, 1030, 999, 981, 998, 1018, 1007, 995, 998, 1046, 997, 992, 960, 1007, 1013, 994, 1028, 1019, 980, 1031, 1000, 951, 981, 985, 1031, 964, 984, 1048, 1021, 967, 987, 968, 972, 1013, 994, 996, 1009, 1017, 974, 1015, 1023, 1023, 1033, 1019, 974, 1004, 1033, 979, 991, 1038, 1004, 997, 966, 1006, 1049, 1005, 1059, 1077, 1013, 1010, 966, 1015, 1036, 940, 976, 1011, 1015, 1005, 988, 1075, 997, 1031, 1006, 1011, 1007, 1009, 986, 966, 970, 1022, 979, 978, 995, 982, 1017, 1000, 955, 972, 1010, 958, 1082, 973, 992, 988, 976, 1018, 1034, 1055, 1019, 985, 1075, 1017, 988, 945, 1002], [962, 988, 1020, 999, 968, 1034, 1069, 968, 1009, 969, 1006, 1027, 1023, 985, 947, 1028, 967, 963, 1005, 935, 961, 1036, 1016, 981, 963, 967, 1020, 1025, 1078, 984, 1036, 1035, 970, 1073, 987, 1069, 1040, 1004, 1028, 962, 1090, 1058, 980, 975, 967, 930, 1017, 986, 978, 1027, 1021, 995, 1024, 998, 1015, 1001, 1033, 982, 1002, 1012, 956, 1023, 1062, 945, 1039, 1028, 1012, 1018, 997, 986, 1025, 1008, 1007, 1012, 981, 958, 1049, 1037, 953, 1022, 997, 981, 1022, 976, 993, 1004, 996, 952, 987, 958, 1043, 969, 978, 1013, 986, 972, 1002, 943, 1032, 1014, 988, 986, 999, 1010, 1021, 1009, 1017, 963, 1026, 984, 1002, 1059, 991, 1012, 984, 966, 1009, 959, 1006, 1017, 999, 956, 996, 1018, 1015, 990, 994, 975, 1008, 1018, 972, 1005, 989, 1017, 1055, 1092, 970, 1001, 1083, 994, 1043, 999, 1004, 1018, 1048, 990, 1048, 978, 1003, 973, 956, 978, 1028, 972, 1043, 997, 966, 1063, 1005, 994, 1064, 1041, 969, 966, 985, 1013, 999, 1028, 1032, 1001, 1019, 1015, 1006, 1043, 1000, 984, 972, 965, 1038, 975, 1008, 995, 1019, 1036, 1007, 946, 992, 1016, 1062, 1001, 1043, 1032, 1005, 940, 1014, 1047, 967, 1004, 1025, 1005, 993, 963, 1038, 932, 980, 1047, 1016, 1006, 948, 1071, 1061, 1008, 969, 992, 991, 1031, 1030, 1042, 1002, 967, 1004, 955, 993, 1043, 984, 1039, 985, 994, 1005, 1049, 1003, 1011, 1073, 961, 1012, 917, 986, 982, 1013, 1014, 956, 956, 995, 1033, 976, 1024, 987, 1028, 1077, 1036, 1000, 974, 1056, 978, 976, 955], [960, 1003, 1010, 991, 966, 994, 960, 994, 972, 1085, 962, 1024, 1023, 960, 1039, 975, 933, 1043, 978, 942, 1076, 1005, 999, 979, 1012, 996, 1021, 1014, 1042, 986, 982, 995, 1036, 1019, 997, 1023, 1034, 1027, 1004, 1012, 992, 984, 1021, 1049, 1017, 980, 991, 1038, 1054, 997, 1024, 1008, 1032, 1054, 973, 964, 1066, 966, 1011, 996, 1009, 1002, 958, 985, 990, 977, 1021, 1041, 989, 1007, 962, 1033, 976, 1005, 1008, 1034, 1019, 988, 984, 982, 1003, 1007, 972, 1063, 1033, 1049, 963, 1000, 985, 1006, 994, 989, 981, 985, 1025, 1040, 1093, 990, 1023, 991, 1049, 1042, 1006, 1011, 1003, 994, 996, 971, 983, 1041, 1008, 1040, 1002, 958, 1001, 1028, 1034, 902, 1011, 1030, 1042, 985, 1000, 998, 955, 980, 955, 976, 1042, 1002, 999, 1036, 1031, 988, 965, 989, 963, 1007, 970, 961, 1016, 1019, 1048, 1035, 1019, 969, 965, 963, 971, 1025, 994, 1029, 1027, 1034, 1097, 994, 968, 1000, 982, 988, 1033, 960, 948, 1052, 918, 1032, 1027, 1051, 1007, 1031, 1007, 1004, 988, 1043, 984, 1003, 980, 1028, 990, 1003, 989, 1081, 1006, 1053, 940, 1020, 971, 966, 1004, 986, 1084, 1001, 974, 1011, 1003, 996, 1000, 1023, 979, 971, 1035, 1068, 1021, 958, 998, 994, 985, 1039, 1028, 975, 1018, 1012, 971, 935, 1014, 939, 1009, 988, 981, 1096, 1015, 997, 972, 1021, 1002, 1011, 1017, 972, 964, 1069, 1015, 958, 976, 983, 979, 1032, 983, 982, 968, 1020, 971, 1004, 1033, 1086, 1018, 1008, 971, 962, 986, 1000, 932, 1019, 997, 963, 957, 995], [1058, 985, 1014, 982, 1019, 959, 1044, 947, 977, 1023, 1035, 955, 1003, 988, 988, 980, 1012, 1012, 1007, 1031, 1054, 954, 996, 954, 1016, 1008, 1026, 998, 986, 967, 1031, 970, 1019, 935, 976, 1029, 1027, 990, 1013, 1022, 925, 1026, 1017, 1070, 992, 999, 1028, 978, 1069, 943, 962, 1004, 1010, 989, 1020, 982, 993, 971, 992, 979, 950, 992, 1022, 995, 995, 1004, 1027, 1010, 959, 1016, 986, 1027, 1046, 1015, 978, 975, 1007, 1031, 965, 1034, 980, 1007, 978, 996, 965, 997, 1065, 1037, 1061, 967, 1032, 1010, 1008, 985, 987, 1005, 1003, 979, 1026, 984, 1007, 954, 1028, 993, 987, 983, 946, 1035, 1014, 1028, 1001, 988, 1008, 989, 994, 1041, 1011, 1000, 1001, 932, 1035, 973, 1030, 1004, 998, 994, 1015, 1011, 1034, 1012, 1067, 922, 945, 1026, 994, 990, 1032, 1008, 958, 1033, 993, 958, 984, 999, 1036, 1039, 969, 998, 1019, 1024, 1036, 959, 926, 946, 968, 999, 996, 1039, 1038, 998, 1002, 956, 1046, 983, 1041, 1004, 1001, 1027, 1064, 989, 981, 1016, 990, 1065, 995, 997, 1027, 984, 963, 1009, 966, 1002, 1027, 991, 1004, 974, 1015, 981, 987, 1026, 981, 1069, 985, 983, 1080, 1010, 973, 997, 986, 999, 1037, 982, 988, 965, 991, 1032, 1056, 1023, 1004, 1016, 986, 949, 958, 974, 968, 998, 1050, 1054, 1019, 1021, 1042, 1024, 1029, 1027, 936, 970, 1037, 1021, 997, 999, 960, 1014, 1002, 957, 957, 969, 962, 1002, 999, 1027, 960, 942, 978, 1006, 977, 977, 1011, 1027, 952, 1013, 912, 1035, 994, 1007, 1012, 1042], [1005, 996, 1018, 1055, 967, 940, 1082, 995, 983, 1004, 1008, 1041, 1024, 1022, 982, 945, 1050, 956, 1007, 991, 1021, 987, 1045, 1039, 1013, 961, 1004, 954, 996, 1006, 1019, 989, 965, 1017, 1047, 980, 990, 1001, 969, 1024, 1029, 1009, 976, 937, 973, 1024, 1033, 996, 1019, 1004, 939, 1005, 1016, 1011, 1053, 1004, 1030, 972, 1006, 1065, 997, 1008, 992, 1017, 986, 969, 1000, 1007, 964, 959, 975, 1043, 1066, 991, 968, 1007, 976, 1003, 985, 983, 984, 980, 974, 1010, 1008, 964, 1042, 1031, 984, 1026, 1012, 981, 1025, 971, 991, 1060, 1006, 983, 1058, 1023, 1047, 1037, 1046, 972, 1052, 973, 982, 1001, 1000, 1039, 959, 990, 1030, 956, 1000, 926, 1010, 1054, 982, 950, 1008, 960, 946, 990, 996, 959, 987, 1032, 985, 1005, 957, 1005, 1053, 1031, 987, 956, 985, 1001, 950, 992, 1013, 989, 1019, 984, 986, 1036, 1027, 1000, 1058, 1026, 969, 927, 940, 996, 993, 1019, 1021, 976, 978, 1037, 939, 990, 979, 949, 1003, 992, 1005, 1014, 984, 1006, 1022, 1024, 1052, 986, 1002, 1035, 991, 1010, 1026, 995, 994, 1019, 975, 967, 1007, 995, 1000, 1023, 1005, 979, 983, 956, 1010, 971, 963, 977, 976, 969, 1029, 996, 965, 1012, 1012, 1044, 1017, 1004, 1025, 984, 1014, 959, 1010, 976, 1032, 1023, 1004, 983, 1018, 996, 992, 960, 1053, 1037, 995, 1050, 1014, 995, 978, 970, 958, 1026, 1062, 941, 960, 968, 1006, 981, 1064, 1010, 993, 1039, 983, 1012, 1006, 1011, 1032, 1062, 1040, 1019, 1027, 1025, 993, 978, 1010, 1011, 990, 973], [968, 973, 1024, 975, 1006, 1001, 1013, 989, 961, 1009, 949, 989, 979, 992, 976, 1000, 1024, 992, 1009, 986, 1012, 1065, 994, 980, 1035, 1054, 972, 978, 976, 1004, 1029, 1012, 1006, 1019, 1041, 1003, 959, 969, 958, 1004, 995, 1005, 1012, 964, 1010, 1016, 1017, 971, 1025, 1040, 1005, 968, 1059, 988, 1026, 1019, 964, 958, 1032, 972, 1040, 1035, 1004, 981, 1002, 1042, 990, 1029, 986, 1018, 995, 1001, 981, 975, 969, 1029, 963, 952, 1006, 1002, 968, 1047, 1027, 998, 1009, 964, 1056, 1032, 988, 978, 994, 989, 992, 978, 1027, 1016, 1027, 995, 1021, 966, 956, 959, 974, 980, 1112, 1046, 955, 988, 1074, 993, 993, 1017, 983, 992, 943, 1006, 1013, 1031, 1029, 983, 1061, 994, 1026, 957, 1000, 1009, 958, 1005, 1022, 1027, 979, 972, 1023, 962, 931, 982, 1049, 995, 1044, 997, 1023, 1029, 1020, 1052, 1012, 1051, 951, 1039, 985, 1023, 1050, 1028, 1007, 992, 968, 992, 981, 997, 1004, 1017, 992, 1032, 987, 1011, 993, 928, 1047, 1025, 982, 1007, 1035, 976, 997, 954, 1011, 1027, 995, 1014, 1032, 997, 1042, 962, 1011, 1055, 1061, 987, 944, 996, 994, 1008, 1013, 1020, 994, 961, 1035, 993, 975, 1005, 1022, 977, 1037, 1023, 1026, 976, 1041, 924, 1004, 995, 1052, 990, 991, 1021, 1006, 986, 1016, 967, 1030, 985, 1048, 1007, 945, 1040, 1025, 984, 965, 951, 993, 1004, 1006, 1011, 1073, 1107, 996, 1054, 943, 1036, 1002, 1051, 970, 1042, 1015, 967, 1024, 959, 983, 980, 1019, 1001, 998, 1061, 961, 1053, 992, 1050, 1012, 969], [975, 1056, 930, 985, 1063, 1018, 997, 1012, 992, 994, 997, 991, 970, 1009, 957, 996, 928, 996, 1014, 1007, 984, 944, 1015, 967, 1021, 1020, 952, 961, 977, 1005, 992, 1031, 992, 1003, 1073, 1031, 981, 992, 1027, 971, 960, 969, 983, 1007, 986, 987, 987, 980, 972, 992, 998, 1003, 966, 990, 1007, 1012, 988, 964, 1052, 943, 1031, 1006, 975, 1044, 1035, 1011, 999, 1026, 936, 989, 1008, 1011, 1016, 941, 1016, 976, 991, 947, 996, 1032, 1046, 1030, 1002, 1011, 968, 1058, 975, 1014, 985, 965, 1006, 962, 1004, 972, 1052, 1009, 959, 1000, 1007, 1026, 960, 1003, 994, 990, 1043, 941, 943, 981, 1018, 973, 992, 1011, 966, 970, 1019, 921, 982, 1069, 1019, 1048, 1009, 1010, 1054, 1022, 977, 1014, 987, 1082, 1017, 1027, 1027, 1000, 1019, 990, 971, 988, 1012, 1084, 982, 1085, 1006, 947, 1014, 931, 993, 975, 1002, 971, 1071, 958, 983, 1038, 1009, 995, 986, 926, 959, 961, 1006, 1046, 1001, 976, 936, 972, 997, 1010, 976, 993, 1028, 995, 951, 995, 983, 1029, 1007, 999, 999, 1019, 982, 1001, 1016, 1003, 1008, 1005, 1045, 1007, 998, 989, 1067, 1032, 996, 996, 1002, 1035, 960, 1035, 973, 965, 1023, 1033, 984, 1009, 978, 1007, 945, 1056, 975, 976, 1007, 1020, 1028, 1011, 1023, 977, 966, 1019, 1020, 991, 993, 971, 1003, 1004, 1001, 1005, 997, 1000, 1004, 974, 981, 1004, 991, 1033, 994, 998, 987, 1021, 1049, 995, 993, 1020, 987, 1016, 1046, 1030, 1031, 986, 959, 979, 1002, 972, 1036, 976, 1038, 1015, 1001, 994], [1005, 1037, 1039, 987, 1001, 953, 974, 1002, 966, 1031, 952, 982, 1013, 938, 972, 969, 988, 988, 993, 1014, 982, 928, 1012, 975, 949, 968, 993, 986, 1014, 1015, 1004, 974, 949, 965, 1005, 1005, 979, 1056, 979, 1016, 1031, 1030, 1047, 1045, 999, 1029, 965, 1012, 1039, 1019, 974, 981, 1005, 1054, 982, 989, 987, 987, 1004, 1013, 1070, 1030, 957, 959, 965, 1001, 971, 1051, 1004, 995, 1033, 1031, 947, 1014, 949, 989, 916, 980, 974, 1019, 967, 930, 969, 1009, 1029, 967, 994, 1000, 988, 977, 1014, 1011, 970, 1005, 1078, 982, 1042, 1011, 969, 958, 1032, 985, 980, 1039, 970, 1015, 1022, 941, 1050, 956, 988, 1035, 999, 998, 976, 1029, 1012, 1040, 968, 976, 1035, 947, 1030, 1002, 978, 1059, 1039, 1008, 951, 937, 998, 1010, 996, 1018, 962, 1013, 965, 1068, 987, 1013, 1024, 1003, 970, 1033, 1019, 1056, 989, 995, 1010, 1010, 958, 978, 1009, 989, 966, 1006, 1023, 996, 1021, 1008, 1059, 1044, 984, 1020, 1046, 1003, 935, 979, 1019, 980, 971, 998, 977, 997, 967, 1003, 979, 985, 976, 1018, 1016, 998, 997, 1031, 985, 1019, 1003, 960, 1003, 991, 1021, 1035, 973, 1037, 1015, 1021, 1046, 997, 1002, 1003, 1021, 933, 980, 1038, 958, 1002, 1003, 971, 1008, 974, 1022, 1012, 1016, 1005, 997, 993, 995, 986, 1002, 963, 1065, 1077, 1040, 984, 1036, 987, 947, 962, 994, 1025, 1068, 983, 1042, 940, 1045, 992, 1073, 960, 1031, 1012, 965, 898, 1107, 988, 1014, 993, 1063, 1019, 1003, 1034, 925, 975, 1020, 960, 1031, 983], [998, 1023, 993, 1033, 940, 1050, 930, 1011, 978, 1054, 998, 975, 979, 1056, 926, 965, 1040, 1044, 1040, 999, 993, 988, 1044, 1012, 1030, 965, 957, 974, 974, 956, 1051, 1034, 979, 995, 1080, 1017, 1019, 997, 999, 1039, 985, 968, 1009, 960, 996, 994, 1066, 1014, 935, 996, 960, 1022, 1032, 1043, 999, 998, 1037, 973, 976, 983, 967, 992, 1011, 1033, 1007, 1001, 972, 997, 978, 961, 993, 1007, 1014, 1023, 1047, 1039, 1014, 1001, 995, 995, 1000, 954, 1058, 966, 960, 1017, 1055, 1056, 1010, 994, 1004, 997, 958, 1026, 946, 968, 976, 971, 947, 992, 995, 1010, 990, 945, 964, 979, 974, 985, 988, 922, 1035, 1032, 1015, 985, 954, 974, 1029, 912, 1007, 975, 1051, 1000, 959, 993, 1010, 976, 981, 982, 1018, 1004, 982, 1004, 1017, 983, 1002, 1054, 1036, 966, 1023, 1005, 1043, 999, 1038, 951, 1009, 956, 993, 1044, 1024, 1039, 983, 1003, 991, 983, 1013, 995, 981, 1010, 981, 986, 1004, 1077, 1028, 1050, 1044, 987, 997, 987, 995, 1015, 1009, 1007, 980, 994, 954, 1012, 978, 942, 977, 1010, 961, 1029, 1022, 1030, 1006, 1006, 1029, 1016, 1018, 1001, 1032, 1028, 969, 1041, 1039, 1048, 982, 1014, 1044, 1021, 995, 970, 990, 955, 993, 1039, 1045, 1002, 1010, 1006, 1011, 997, 1011, 1112, 952, 1021, 990, 1002, 1005, 973, 993, 1027, 992, 1022, 989, 1041, 955, 942, 982, 1014, 999, 1009, 970, 1009, 996, 993, 945, 972, 963, 1000, 1019, 1046, 1019, 1083, 991, 994, 961, 978, 1035, 1038, 1056, 1046, 954, 1018, 982, 965], [1012, 1028, 1017, 963, 953, 1011, 972, 962, 1002, 1008, 1028, 991, 1026, 980, 1052, 1028, 965, 1016, 1033, 1047, 1036, 981, 970, 1020, 1033, 975, 953, 999, 1077, 962, 1016, 996, 913, 998, 992, 1050, 1010, 1017, 1033, 918, 1048, 1041, 972, 1029, 924, 992, 956, 1027, 1028, 1042, 981, 1028, 1067, 1045, 966, 981, 961, 1007, 1032, 1072, 1034, 986, 975, 968, 1000, 1041, 972, 1016, 1007, 990, 1010, 1029, 1040, 1009, 1014, 981, 949, 998, 971, 1032, 992, 956, 1005, 1015, 983, 976, 1000, 962, 989, 997, 917, 1022, 994, 947, 1007, 999, 1016, 1001, 981, 976, 1020, 1001, 1017, 961, 977, 985, 957, 988, 975, 990, 997, 993, 1022, 992, 970, 1004, 1049, 982, 985, 1006, 1044, 992, 961, 940, 1045, 1022, 1045, 1015, 954, 969, 1029, 1023, 1008, 957, 1006, 1003, 1006, 1002, 1064, 993, 1042, 1034, 957, 990, 1012, 1020, 1002, 1004, 1022, 1026, 968, 944, 922, 972, 1000, 968, 1071, 1043, 943, 971, 1009, 988, 964, 1022, 1039, 967, 1039, 1029, 1003, 992, 1030, 1020, 967, 947, 1000, 1013, 975, 1017, 996, 1020, 1002, 1008, 1004, 996, 1024, 1040, 982, 1012, 1048, 1004, 1044, 970, 1064, 1020, 980, 953, 1002, 1012, 994, 973, 1003, 1021, 1001, 992, 998, 950, 970, 975, 995, 1008, 1016, 994, 981, 1012, 991, 985, 1017, 993, 999, 990, 1022, 993, 1030, 1016, 1039, 982, 983, 1005, 977, 1012, 999, 992, 981, 992, 987, 1003, 971, 1044, 1005, 960, 1031, 978, 1025, 995, 1030, 998, 967, 1011, 1014, 976, 948, 999, 1012, 1006, 970, 980], [945, 1033, 961, 1069, 1027, 1052, 1039, 968, 1000, 1037, 996, 1002, 937, 986, 1040, 1006, 1030, 962, 1036, 973, 1022, 991, 958, 1067, 1036, 1015, 985, 970, 974, 980, 969, 1030, 995, 1012, 1014, 989, 984, 1014, 959, 1019, 970, 1040, 966, 1018, 953, 1063, 1061, 988, 1006, 983, 975, 1029, 1036, 1019, 1002, 1030, 1046, 991, 1023, 1013, 978, 1029, 1000, 998, 963, 977, 948, 946, 996, 980, 1015, 938, 992, 1026, 959, 1027, 965, 941, 1043, 1003, 990, 1043, 973, 993, 1034, 1007, 1009, 1078, 972, 953, 953, 942, 1054, 1004, 1036, 1013, 1022, 1001, 990, 1006, 1049, 984, 1032, 1009, 1037, 1010, 983, 996, 973, 1014, 929, 1009, 1065, 993, 986, 986, 998, 1008, 1058, 986, 1025, 1054, 982, 1029, 1066, 1014, 1024, 979, 1017, 957, 995, 1015, 1006, 1043, 961, 1029, 946, 956, 950, 985, 948, 976, 1023, 1041, 1021, 957, 971, 955, 1004, 1071, 982, 1014, 1023, 1043, 991, 985, 967, 934, 1007, 989, 1019, 981, 1065, 980, 1016, 986, 996, 984, 1018, 995, 1059, 1053, 997, 999, 1037, 1053, 1000, 996, 1036, 967, 1057, 1036, 1013, 1015, 1001, 969, 992, 1018, 1025, 989, 981, 938, 1020, 1018, 975, 1020, 975, 985, 912, 1023, 1010, 993, 980, 999, 981, 1015, 976, 1015, 1007, 972, 939, 991, 1038, 1047, 1006, 971, 1004, 989, 917, 972, 1002, 1002, 1024, 1003, 1026, 1002, 968, 1039, 982, 987, 1019, 981, 986, 1038, 1071, 952, 1023, 963, 936, 1014, 1012, 1039, 968, 1009, 988, 967, 1009, 1038, 1071, 930, 1011, 988, 1033, 1004, 999, 1006], [1085, 975, 1008, 997, 988, 1040, 992, 1011, 1011, 998, 1020, 969, 1001, 1022, 1011, 1031, 1030, 990, 1010, 1013, 1079, 1022, 973, 1002, 1020, 1014, 1004, 1029, 929, 1000, 980, 1036, 1048, 1041, 1054, 1016, 947, 995, 1003, 966, 1047, 967, 952, 974, 982, 994, 994, 950, 979, 1020, 1016, 1024, 1019, 992, 922, 1038, 1017, 1001, 1052, 973, 990, 946, 997, 1047, 954, 1062, 1018, 983, 1011, 953, 994, 986, 947, 1050, 1011, 1014, 920, 1003, 995, 974, 913, 1027, 1027, 1010, 997, 978, 964, 1033, 1041, 1011, 990, 975, 1013, 997, 957, 965, 963, 983, 1011, 973, 969, 1023, 1002, 971, 1002, 972, 1005, 1031, 1033, 1035, 1012, 1017, 983, 979, 959, 1011, 1059, 1046, 969, 1006, 971, 970, 989, 997, 964, 1003, 963, 1035, 956, 995, 985, 942, 981, 1099, 1051, 1026, 1021, 1013, 1002, 1008, 1045, 1019, 985, 1006, 968, 1028, 1039, 1000, 1033, 997, 998, 1068, 974, 1041, 976, 1062, 1054, 1013, 1072, 1010, 984, 1005, 955, 1000, 966, 959, 979, 982, 1038, 970, 989, 959, 978, 953, 1015, 1063, 1039, 967, 1024, 1021, 995, 1023, 1033, 954, 951, 997, 1011, 1053, 1025, 1002, 944, 984, 1021, 981, 1009, 965, 953, 986, 990, 1012, 1020, 990, 980, 952, 1011, 1046, 1051, 1004, 1048, 1037, 1046, 989, 1003, 1016, 998, 969, 992, 1027, 994, 1003, 995, 994, 1003, 1005, 1039, 970, 1000, 1065, 997, 1002, 994, 1021, 1051, 1027, 1027, 1031, 969, 959, 969, 993, 963, 985, 1012, 992, 971, 949, 982, 976, 1037, 1029, 1054, 970, 956, 985, 979, 1017], [1004, 1072, 937, 1009, 990, 1014, 1001, 980, 1018, 1016, 1008, 990, 1019, 1013, 971, 1019, 1033, 946, 1041, 976, 1034, 1035, 997, 985, 1028, 997, 1012, 1005, 1044, 995, 996, 956, 1015, 1001, 975, 936, 1006, 994, 1012, 927, 989, 1000, 1029, 998, 1039, 972, 974, 1069, 1002, 1037, 1011, 1024, 991, 1031, 958, 961, 1012, 1006, 1045, 956, 1053, 966, 1003, 1007, 1023, 971, 1012, 981, 1059, 940, 983, 962, 1003, 1056, 1014, 1046, 973, 992, 1030, 973, 982, 1016, 979, 1050, 1033, 1095, 933, 1014, 1062, 989, 1037, 1012, 1007, 924, 995, 953, 928, 1012, 981, 1049, 986, 1007, 978, 988, 1021, 978, 1013, 937, 1014, 1010, 1005, 1036, 978, 996, 959, 984, 985, 1050, 1055, 1061, 1043, 1010, 1017, 958, 1008, 1017, 1018, 1015, 1034, 975, 962, 951, 1018, 1030, 972, 991, 995, 1027, 997, 998, 1014, 985, 1054, 938, 970, 1051, 976, 1002, 988, 1004, 946, 942, 1035, 1026, 1025, 1027, 1071, 1045, 1025, 1027, 1046, 975, 967, 1014, 1038, 1013, 986, 976, 995, 998, 972, 1065, 1021, 932, 1037, 992, 1034, 1038, 1000, 968, 985, 1012, 1051, 989, 1008, 1011, 960, 1006, 1072, 995, 1068, 979, 974, 989, 968, 1010, 1046, 1064, 999, 1024, 1030, 1013, 1057, 1006, 978, 1043, 1017, 1000, 1018, 1023, 964, 1029, 1030, 968, 986, 1012, 990, 981, 951, 996, 1009, 991, 953, 976, 1040, 1016, 991, 957, 983, 997, 1012, 1008, 998, 1006, 973, 954, 991, 1086, 991, 936, 1012, 1009, 986, 984, 1043, 1001, 999, 986, 963, 1008, 1017, 990, 1052, 1012, 1006, 1042], [1013, 1031, 1018, 1065, 969, 968, 993, 1024, 993, 1046, 1034, 989, 999, 1035, 1008, 984, 988, 1014, 944, 909, 1012, 1017, 986, 937, 952, 971, 976, 984, 1019, 1005, 1001, 1001, 955, 968, 976, 987, 1056, 979, 938, 1018, 976, 999, 961, 971, 989, 969, 1024, 964, 1022, 985, 1047, 969, 991, 1050, 956, 974, 1004, 1014, 1032, 1026, 1010, 952, 957, 984, 992, 1018, 1023, 1007, 1009, 1013, 968, 1024, 970, 1036, 1041, 992, 994, 999, 1036, 963, 986, 1005, 1006, 1031, 1092, 990, 997, 1005, 987, 1076, 988, 962, 980, 966, 951, 959, 1049, 983, 976, 969, 992, 940, 958, 959, 1027, 1016, 993, 969, 1039, 1011, 927, 1027, 1002, 947, 1004, 983, 1008, 1008, 1002, 996, 994, 993, 953, 1000, 1035, 978, 945, 981, 1012, 1034, 990, 1008, 1024, 1018, 978, 1012, 919, 990, 1013, 958, 988, 968, 1021, 1019, 1004, 1000, 994, 969, 994, 985, 998, 1015, 931, 964, 978, 1002, 1018, 975, 1022, 1048, 1057, 990, 989, 1025, 963, 1031, 926, 1051, 966, 1027, 1045, 987, 991, 1023, 1042, 1030, 951, 997, 1012, 953, 1008, 974, 1040, 1036, 1044, 1030, 961, 986, 989, 1025, 981, 1003, 992, 1006, 1056, 1031, 966, 982, 953, 975, 938, 1039, 941, 1031, 1018, 957, 1019, 972, 921, 1064, 941, 1010, 1011, 948, 1037, 1029, 971, 1020, 985, 1003, 1013, 1006, 978, 1023, 1005, 961, 975, 1043, 1001, 1015, 1006, 1037, 993, 1033, 984, 929, 1052, 981, 978, 1036, 1013, 969, 967, 1016, 1015, 976, 1034, 862, 1015, 1014, 1017, 1014, 1002, 995, 1027, 965], [1028, 976, 987, 982, 1028, 963, 1047, 1003, 1009, 981, 993, 1060, 949, 1019, 976, 994, 933, 1031, 1046, 959, 978, 1008, 1012, 1006, 1030, 996, 983, 939, 989, 957, 1015, 1042, 990, 982, 993, 967, 1000, 1039, 1020, 1008, 1053, 1013, 1002, 998, 1002, 961, 1031, 980, 954, 992, 1017, 1004, 1002, 968, 985, 1046, 1006, 976, 1087, 1011, 994, 947, 1020, 974, 1017, 1000, 978, 988, 1036, 1011, 1013, 1055, 976, 985, 954, 964, 980, 998, 958, 1038, 1014, 966, 1041, 936, 992, 979, 990, 1004, 980, 984, 967, 995, 989, 958, 988, 1013, 1024, 988, 1060, 954, 1035, 957, 997, 983, 1022, 1064, 1022, 988, 1042, 976, 1012, 1041, 989, 952, 1010, 1040, 1015, 976, 948, 1001, 980, 1003, 1048, 974, 1001, 1019, 943, 1019, 1000, 1033, 1017, 982, 1028, 972, 1010, 1004, 976, 1024, 964, 1005, 999, 1027, 991, 980, 1018, 976, 1040, 958, 1040, 950, 970, 998, 1034, 999, 926, 1042, 980, 1017, 1009, 949, 1038, 986, 1065, 963, 1020, 1005, 988, 1038, 1042, 1010, 1020, 963, 969, 1003, 1016, 1006, 1004, 963, 973, 1012, 1003, 1010, 1006, 1022, 970, 1059, 1017, 945, 1014, 1012, 1064, 1052, 989, 1040, 970, 1025, 1005, 962, 985, 1009, 1011, 1033, 944, 984, 959, 1007, 963, 1023, 1010, 1049, 1000, 1029, 1004, 953, 998, 1003, 999, 979, 1033, 1002, 1040, 943, 1007, 1000, 998, 976, 1019, 1027, 1014, 969, 998, 1038, 1015, 984, 1005, 988, 1067, 1000, 970, 1036, 977, 976, 1061, 942, 978, 1028, 975, 950, 1034, 1053, 997, 988, 1033, 1044, 1009, 948], [1000, 921, 1019, 977, 1091, 1001, 939, 960, 1053, 965, 995, 979, 985, 962, 996, 973, 996, 1006, 986, 1012, 1027, 1007, 962, 1050, 1010, 1010, 988, 1074, 993, 989, 1009, 972, 995, 978, 990, 1015, 988, 1027, 1004, 926, 951, 912, 990, 1056, 958, 974, 957, 960, 949, 976, 1034, 937, 982, 1018, 1026, 984, 1004, 1025, 999, 1007, 975, 953, 1013, 1017, 956, 968, 975, 955, 1001, 981, 1018, 977, 960, 973, 1024, 932, 913, 999, 958, 1016, 964, 989, 962, 973, 984, 1030, 1013, 975, 992, 974, 989, 978, 1002, 982, 986, 997, 960, 967, 979, 964, 1032, 1007, 997, 969, 1015, 985, 1005, 1017, 973, 980, 978, 981, 1022, 987, 979, 972, 985, 1024, 963, 984, 963, 1011, 961, 1009, 1028, 1055, 969, 993, 977, 951, 982, 981, 1016, 991, 945, 1016, 975, 953, 973, 1042, 1090, 1001, 964, 982, 1009, 991, 984, 974, 951, 970, 965, 935, 962, 938, 1018, 974, 993, 1002, 995, 958, 998, 1025, 1042, 1029, 985, 1010, 1007, 999, 1015, 1027, 1064, 1102, 968, 948, 1016, 1002, 986, 952, 1010, 1013, 998, 960, 980, 1057, 970, 1078, 1013, 949, 1037, 993, 990, 975, 924, 935, 996, 1023, 974, 1012, 1000, 993, 1061, 923, 957, 986, 991, 1001, 1065, 959, 1038, 1061, 1017, 1056, 990, 1024, 989, 989, 1047, 1031, 1028, 1038, 993, 1010, 966, 1033, 958, 1029, 1054, 1033, 936, 1006, 965, 988, 933, 966, 1027, 1029, 1004, 966, 979, 997, 1075, 986, 1019, 972, 1002, 1019, 1051, 998, 1000, 1018, 993, 962, 1084, 1043, 937, 983], [1010, 982, 1014, 1004, 992, 974, 1004, 1001, 1027, 1082, 971, 1026, 1004, 1008, 1006, 985, 942, 1013, 1019, 1041, 1035, 997, 967, 1028, 949, 1005, 954, 985, 1024, 958, 962, 998, 1024, 966, 1010, 966, 968, 1017, 975, 1010, 985, 980, 995, 987, 993, 987, 1035, 1023, 992, 932, 951, 957, 1035, 968, 1050, 995, 986, 1001, 1058, 975, 975, 1082, 993, 1006, 996, 1017, 1002, 1015, 997, 990, 1003, 944, 1064, 1053, 1033, 980, 1027, 993, 1010, 1002, 964, 960, 1017, 999, 1007, 980, 979, 964, 1055, 956, 971, 1017, 1046, 1012, 1027, 1073, 1028, 1043, 1000, 1015, 1019, 1014, 978, 992, 1011, 961, 985, 1047, 975, 972, 1073, 1032, 1034, 1035, 993, 1042, 1002, 954, 966, 992, 956, 976, 1030, 935, 989, 978, 1045, 1018, 997, 1044, 1033, 988, 995, 904, 1034, 1008, 1016, 987, 962, 971, 1064, 986, 1021, 1036, 974, 999, 1019, 973, 973, 1068, 1021, 962, 969, 1024, 1072, 1017, 1013, 1002, 994, 1004, 963, 1006, 1029, 1038, 997, 1022, 997, 992, 999, 960, 1019, 974, 1051, 947, 946, 1010, 1058, 1000, 981, 1023, 996, 1007, 1041, 1031, 1036, 1058, 1030, 996, 964, 989, 1013, 966, 1009, 1003, 995, 1047, 988, 994, 982, 1067, 997, 990, 995, 995, 1008, 978, 1005, 976, 1062, 952, 1035, 962, 1048, 1013, 1022, 978, 993, 937, 1009, 1005, 963, 995, 1007, 965, 1009, 953, 996, 1040, 982, 999, 998, 980, 944, 1026, 999, 991, 996, 1023, 1046, 1017, 965, 932, 1054, 954, 998, 986, 1042, 1014, 999, 1017, 943, 966, 971, 1020, 1014, 992], [995, 1061, 982, 958, 1014, 1016, 1018, 1054, 1027, 1044, 1028, 1068, 997, 1042, 982, 998, 952, 1064, 1012, 938, 964, 1054, 1062, 981, 998, 1021, 992, 1014, 1015, 999, 1035, 1013, 1025, 1007, 963, 988, 1023, 1018, 1000, 992, 996, 1024, 1030, 1030, 982, 1019, 983, 1021, 1010, 1029, 1024, 1030, 1004, 925, 982, 1005, 950, 1035, 968, 965, 1001, 1030, 979, 950, 996, 997, 1018, 1020, 1026, 1004, 1002, 1007, 1034, 1002, 951, 1010, 954, 982, 1003, 1023, 1095, 1022, 1031, 991, 997, 978, 1000, 1001, 1064, 1019, 1005, 1019, 1031, 998, 990, 1037, 978, 1051, 957, 991, 1017, 953, 996, 953, 977, 1033, 1026, 918, 1082, 1000, 971, 1011, 938, 955, 970, 1068, 1056, 1065, 979, 983, 1034, 990, 979, 979, 1031, 1011, 985, 1049, 992, 1021, 1008, 1044, 983, 1034, 1043, 1012, 1033, 976, 967, 1015, 964, 949, 936, 996, 1030, 984, 1006, 984, 906, 967, 1030, 969, 1036, 1020, 1003, 1059, 1001, 972, 998, 945, 979, 1003, 992, 962, 1016, 986, 1027, 1022, 953, 1019, 978, 1025, 1008, 1008, 963, 1031, 1006, 997, 990, 980, 1058, 986, 1029, 1034, 1036, 996, 1006, 926, 988, 976, 1038, 1002, 1011, 1052, 960, 970, 1020, 1029, 1012, 1027, 1027, 1000, 1046, 977, 997, 1026, 981, 1034, 1012, 909, 959, 987, 993, 1009, 1003, 1056, 992, 1037, 1052, 967, 960, 1019, 1015, 980, 1036, 1025, 1039, 1024, 997, 990, 996, 960, 989, 1012, 978, 1020, 983, 1018, 985, 1041, 1021, 1034, 1042, 1055, 983, 1055, 983, 1036, 989, 994, 1082, 964, 1018, 988, 1052, 967], [988, 999, 1017, 976, 927, 977, 956, 957, 1033, 1044, 1040, 1017, 987, 1011, 987, 952, 989, 987, 979, 1002, 987, 1033, 941, 990, 988, 967, 1012, 1013, 1007, 1016, 1030, 998, 1033, 995, 978, 991, 1006, 948, 985, 1059, 967, 1036, 1014, 1003, 954, 985, 942, 1023, 963, 1031, 1071, 1009, 997, 1072, 989, 1009, 985, 1024, 1043, 1018, 1007, 977, 1063, 1009, 1015, 1013, 917, 1029, 1009, 1004, 1041, 984, 995, 1032, 996, 1024, 1006, 1014, 1040, 1013, 1038, 920, 968, 951, 1084, 1012, 985, 1017, 1019, 987, 962, 987, 1031, 979, 1044, 1035, 984, 1025, 1030, 1016, 999, 990, 1006, 1010, 955, 1006, 1030, 979, 992, 1001, 1004, 1065, 994, 975, 1025, 1023, 982, 971, 1012, 1021, 961, 1008, 1004, 1028, 1010, 1013, 999, 1035, 1016, 994, 987, 961, 1008, 1026, 1009, 1049, 995, 1029, 1034, 1008, 936, 1040, 999, 965, 1001, 955, 993, 977, 1027, 1009, 998, 1008, 1015, 1022, 1012, 955, 1027, 1052, 985, 1056, 1003, 1007, 965, 1017, 1036, 1064, 1051, 1055, 961, 957, 1012, 1030, 1017, 978, 1026, 1038, 1006, 1031, 1005, 986, 996, 991, 1002, 1027, 968, 936, 1030, 1010, 997, 984, 1048, 1001, 994, 995, 1046, 1008, 1001, 1058, 950, 1004, 1039, 981, 1010, 1021, 1046, 996, 1051, 1097, 980, 993, 989, 995, 1023, 1025, 1023, 980, 1011, 948, 1006, 932, 1030, 1003, 1071, 1009, 963, 1031, 994, 963, 998, 1039, 1012, 1005, 946, 1019, 973, 946, 981, 1036, 986, 913, 1055, 961, 1023, 983, 1012, 1004, 1008, 1039, 1056, 996, 979, 1051, 1014, 997, 962, 981], [955, 1008, 1023, 977, 999, 1005, 949, 990, 1025, 1000, 1050, 1013, 968, 1080, 1020, 1014, 1017, 989, 1043, 1016, 1022, 1025, 1029, 1007, 995, 999, 1032, 1055, 1006, 1003, 978, 1017, 987, 1015, 1029, 991, 970, 1025, 997, 1044, 931, 998, 961, 1001, 982, 1005, 997, 979, 1003, 963, 967, 1039, 1023, 1008, 1038, 1008, 1046, 1022, 1018, 974, 1001, 1056, 1022, 1013, 969, 1027, 986, 983, 1009, 969, 1047, 993, 1020, 1038, 1002, 1008, 990, 1025, 956, 1011, 1007, 1030, 1047, 912, 996, 999, 985, 974, 952, 960, 956, 974, 990, 1010, 957, 1006, 1005, 969, 963, 1057, 999, 987, 991, 950, 996, 961, 981, 1020, 980, 983, 1017, 991, 1040, 1005, 941, 1010, 1006, 996, 967, 971, 1007, 1018, 1036, 1021, 980, 989, 1047, 1039, 1008, 967, 956, 1045, 979, 1014, 979, 1000, 1001, 957, 973, 999, 986, 1001, 1070, 1020, 997, 1040, 1008, 1004, 976, 1009, 1023, 984, 1011, 1056, 1007, 1000, 1021, 1035, 1018, 982, 984, 969, 1004, 933, 963, 996, 987, 1016, 983, 1028, 1067, 995, 1023, 944, 1042, 983, 931, 1026, 986, 1020, 1031, 977, 1039, 1009, 1009, 1044, 1012, 991, 948, 1032, 993, 962, 1005, 1089, 1015, 1009, 961, 1028, 956, 1006, 971, 973, 1052, 1010, 977, 1017, 990, 1016, 1021, 924, 972, 1061, 1032, 973, 1008, 1006, 1020, 1027, 994, 1006, 1018, 960, 957, 1071, 1034, 988, 1027, 969, 980, 1010, 1022, 936, 983, 1004, 1032, 1020, 1059, 1020, 979, 978, 1039, 1047, 1033, 1035, 1033, 1012, 1042, 1016, 980, 1013, 1013, 970, 992, 1040, 1062, 990], [965, 1024, 1025, 941, 1045, 1045, 969, 1003, 1008, 954, 1094, 922, 1034, 1023, 994, 994, 1019, 1014, 998, 1031, 1040, 971, 1024, 1061, 999, 995, 1012, 951, 989, 991, 987, 988, 991, 1007, 1021, 982, 973, 1024, 994, 958, 977, 1017, 1025, 1027, 997, 977, 1002, 1036, 1004, 1004, 994, 967, 1026, 1029, 1002, 988, 990, 960, 1015, 993, 1048, 1047, 967, 963, 1047, 938, 1012, 1037, 971, 1010, 1027, 982, 987, 1030, 974, 943, 1009, 932, 1019, 987, 994, 991, 993, 1046, 1009, 1021, 993, 1020, 975, 972, 1001, 1002, 1021, 981, 930, 1025, 999, 984, 989, 953, 1052, 1012, 981, 1011, 1019, 998, 1074, 988, 1022, 1016, 1030, 1026, 1020, 1002, 976, 1019, 1018, 1015, 1027, 989, 998, 991, 1036, 932, 997, 953, 1022, 962, 961, 971, 1007, 1013, 1053, 1040, 1041, 1001, 1039, 992, 1046, 1010, 1003, 1007, 976, 990, 983, 924, 1008, 986, 959, 1042, 1026, 1015, 994, 977, 1041, 1025, 952, 1012, 996, 1019, 1028, 956, 970, 1027, 988, 967, 1035, 972, 982, 1016, 989, 924, 1058, 1032, 1011, 1014, 985, 961, 1094, 973, 1038, 1008, 996, 1022, 953, 1038, 1038, 944, 1002, 1007, 1023, 1005, 969, 983, 998, 988, 969, 952, 1016, 1025, 951, 951, 968, 1004, 1025, 1023, 1000, 973, 1032, 1006, 1062, 1059, 965, 1014, 932, 985, 1009, 995, 1013, 979, 957, 1064, 1016, 1025, 1000, 1053, 988, 998, 991, 995, 1035, 1015, 986, 997, 1019, 996, 1084, 1087, 1022, 964, 1033, 1039, 1012, 992, 989, 1021, 963, 998, 1004, 1014, 1036, 1031, 965, 990, 994, 1001], [1007, 1038, 1015, 977, 1019, 1006, 1024, 1027, 1007, 997, 983, 982, 1008, 1005, 1015, 976, 973, 994, 971, 1028, 964, 977, 964, 991, 992, 949, 981, 1025, 1052, 1010, 1008, 1007, 990, 1014, 1028, 1032, 1026, 1028, 975, 1013, 964, 1008, 1034, 970, 986, 976, 1028, 1009, 939, 973, 964, 1044, 1024, 969, 966, 987, 972, 1031, 992, 1064, 1005, 993, 1039, 1050, 989, 1005, 1022, 1010, 1055, 1066, 1005, 1051, 1023, 998, 960, 1009, 996, 960, 978, 981, 1042, 993, 983, 962, 988, 999, 1008, 1057, 973, 1049, 963, 1053, 977, 1038, 1053, 1054, 941, 951, 1014, 997, 1020, 989, 1028, 1030, 996, 999, 999, 966, 1018, 1002, 1011, 1031, 941, 993, 1002, 975, 974, 985, 994, 974, 952, 1017, 989, 1030, 977, 1014, 916, 994, 1019, 1015, 979, 957, 998, 1054, 1095, 1011, 999, 1045, 998, 988, 1022, 1046, 990, 1034, 1001, 1028, 966, 960, 973, 984, 977, 1018, 1012, 1036, 988, 996, 994, 1034, 1027, 1023, 1010, 1003, 1023, 985, 992, 1001, 999, 1001, 1021, 1037, 1019, 1022, 1010, 984, 1004, 973, 976, 985, 948, 1009, 985, 989, 999, 1008, 946, 958, 971, 1001, 998, 954, 992, 1035, 999, 1032, 951, 948, 1027, 978, 981, 1049, 1020, 1037, 967, 975, 959, 1045, 1022, 1001, 1004, 938, 927, 986, 957, 988, 1015, 1045, 1013, 985, 959, 1027, 982, 1036, 995, 999, 939, 1030, 1022, 1005, 1006, 1029, 988, 1010, 1009, 1033, 1029, 978, 1015, 997, 1040, 963, 1045, 982, 1005, 1034, 1009, 1005, 1013, 974, 999, 1041, 975, 1009, 984, 1047, 993, 943], [1025, 973, 1037, 1004, 1012, 1036, 986, 990, 976, 969, 963, 1069, 1010, 991, 930, 963, 1032, 1029, 982, 995, 1039, 981, 1001, 1025, 1002, 982, 1048, 984, 984, 1056, 1007, 1029, 1083, 973, 973, 960, 935, 995, 983, 1068, 981, 1028, 1015, 1014, 1007, 951, 1023, 935, 993, 987, 1012, 1045, 1000, 973, 1023, 986, 963, 953, 964, 1039, 1054, 944, 1002, 983, 1037, 966, 982, 1006, 1018, 1077, 1029, 1007, 969, 1024, 980, 985, 1017, 1031, 982, 910, 1033, 977, 970, 1005, 999, 1006, 949, 1010, 975, 1060, 1081, 997, 993, 997, 981, 1016, 977, 1037, 1008, 990, 1054, 983, 978, 1018, 992, 1048, 1011, 1026, 999, 970, 1007, 1023, 1013, 987, 1071, 948, 1022, 1020, 958, 992, 961, 1008, 980, 976, 1029, 1041, 996, 1002, 1002, 1025, 1051, 994, 1027, 998, 999, 1000, 1028, 1015, 1035, 1023, 922, 993, 976, 1049, 1031, 978, 961, 1032, 1077, 991, 949, 1014, 1019, 978, 1000, 1006, 1007, 1006, 1017, 986, 1043, 965, 952, 999, 999, 993, 988, 995, 960, 965, 1030, 963, 931, 1076, 974, 976, 966, 1012, 1015, 1024, 938, 1039, 997, 1017, 1038, 1002, 928, 1019, 1039, 1016, 1027, 1009, 998, 989, 1015, 998, 973, 984, 995, 987, 967, 980, 1055, 1003, 1030, 1011, 1011, 997, 1019, 951, 994, 1031, 981, 961, 1007, 1030, 1005, 1022, 1003, 1020, 955, 1002, 1019, 998, 1010, 1027, 1006, 992, 1001, 1018, 974, 976, 939, 1021, 1030, 997, 991, 964, 994, 1026, 973, 994, 997, 955, 1001, 1004, 930, 1050, 980, 1033, 960, 1023, 1017, 1038, 999, 1033], [1032, 1008, 945, 993, 1048, 990, 1004, 1017, 1040, 1006, 1008, 999, 1065, 1029, 978, 1024, 1030, 939, 1034, 973, 995, 986, 1047, 1003, 1023, 991, 1050, 1036, 950, 1039, 978, 996, 935, 1000, 1014, 955, 979, 999, 967, 983, 984, 983, 987, 1005, 1036, 980, 964, 1010, 1019, 1031, 955, 942, 1031, 968, 1010, 1004, 1053, 1010, 963, 966, 1015, 973, 988, 1051, 998, 986, 1029, 1022, 1018, 1003, 988, 996, 1035, 962, 1047, 985, 975, 1014, 1010, 1001, 955, 1025, 1006, 972, 997, 1028, 921, 1018, 965, 1034, 961, 943, 996, 1006, 1014, 970, 1039, 1000, 983, 971, 967, 1103, 957, 1023, 1059, 1035, 1030, 1024, 1044, 993, 972, 1013, 1021, 1008, 1040, 1035, 1001, 1000, 1066, 1000, 1014, 988, 1031, 1037, 983, 1023, 1061, 1007, 994, 999, 1032, 1051, 987, 990, 973, 986, 988, 966, 1031, 1003, 1010, 1036, 981, 1020, 998, 1003, 974, 1024, 991, 922, 991, 924, 955, 1031, 971, 975, 1019, 1003, 965, 990, 1037, 966, 1019, 980, 1002, 1038, 972, 1000, 992, 1030, 978, 1048, 1032, 980, 994, 980, 959, 992, 1011, 986, 990, 955, 1026, 1021, 1016, 1022, 941, 1029, 975, 987, 995, 938, 1003, 989, 1026, 1039, 957, 1015, 981, 1048, 933, 981, 939, 1089, 950, 1050, 979, 1049, 993, 1019, 1003, 997, 948, 964, 1012, 984, 960, 992, 1026, 1028, 988, 962, 959, 1029, 973, 1034, 984, 949, 1013, 1003, 944, 976, 939, 1002, 1041, 1014, 1017, 1049, 991, 1092, 1040, 980, 1022, 1052, 1000, 1003, 989, 929, 1009, 1019, 1042, 1010, 975, 1000, 1047, 1039], [1034, 1063, 1028, 974, 1014, 981, 964, 1019, 979, 1018, 1026, 1007, 1037, 981, 1014, 1000, 1015, 996, 990, 958, 1024, 1036, 965, 1019, 992, 960, 981, 1020, 1005, 1017, 1035, 963, 1022, 1031, 976, 1010, 1029, 981, 1010, 1032, 1039, 984, 981, 1000, 1042, 1003, 1032, 1004, 951, 985, 1009, 971, 994, 999, 924, 1028, 991, 966, 1034, 966, 1065, 1001, 1002, 986, 993, 968, 983, 957, 1019, 1055, 1006, 989, 940, 1053, 977, 1017, 975, 992, 977, 988, 974, 1009, 933, 970, 1014, 960, 1034, 1040, 1015, 1010, 994, 956, 1002, 1031, 972, 1007, 1002, 1021, 993, 985, 987, 985, 958, 951, 942, 1021, 959, 973, 1004, 1052, 1011, 974, 1037, 1066, 964, 1009, 1006, 1031, 1017, 1000, 991, 993, 1054, 982, 967, 985, 1020, 1015, 959, 968, 992, 1009, 1010, 1004, 973, 1032, 1011, 1023, 982, 1037, 941, 942, 1018, 1051, 1005, 980, 987, 993, 1018, 1007, 1010, 1037, 1014, 1013, 1010, 1066, 990, 1013, 964, 1022, 976, 959, 1013, 961, 1011, 967, 987, 982, 930, 1057, 998, 921, 994, 993, 1023, 973, 994, 1021, 1001, 1028, 1008, 999, 995, 1034, 970, 993, 988, 1037, 984, 984, 983, 1031, 957, 1068, 1023, 959, 999, 1059, 1001, 1003, 999, 1007, 1047, 1046, 1006, 1048, 994, 990, 962, 958, 1026, 978, 1059, 1015, 1003, 959, 1018, 982, 1067, 990, 966, 979, 990, 967, 968, 1079, 1035, 997, 995, 994, 1044, 956, 1020, 995, 1028, 970, 986, 1010, 976, 1006, 1017, 1021, 997, 993, 978, 1017, 974, 1019, 1010, 987, 994, 965, 1017, 1037, 987, 981], [980, 1002, 941, 985, 1040, 973, 1042, 1046, 1050, 1021, 985, 1016, 995, 978, 1046, 1013, 998, 1003, 1019, 967, 1047, 996, 1014, 946, 989, 986, 978, 1010, 1000, 966, 1045, 1019, 998, 999, 977, 965, 997, 1020, 1000, 1049, 1020, 996, 989, 959, 961, 984, 1041, 1028, 1020, 971, 1011, 1008, 1036, 1034, 1029, 1007, 1073, 952, 933, 966, 994, 959, 1024, 999, 985, 1037, 1010, 1018, 1009, 1036, 1004, 1021, 1007, 1005, 998, 1008, 1003, 985, 1015, 1014, 992, 1062, 997, 1006, 1011, 996, 904, 1009, 1015, 984, 967, 990, 992, 980, 1014, 1007, 1016, 964, 1039, 1001, 1020, 1019, 967, 1009, 1020, 1004, 1003, 996, 1020, 1030, 1014, 1040, 980, 997, 1004, 1001, 942, 953, 1006, 975, 1024, 994, 969, 961, 1005, 937, 1016, 991, 1030, 997, 958, 989, 928, 972, 1073, 994, 961, 986, 923, 1064, 1005, 1032, 970, 939, 989, 960, 955, 945, 1046, 1002, 1058, 988, 1027, 1032, 1014, 980, 1024, 1019, 976, 983, 971, 984, 1030, 989, 957, 990, 958, 1053, 1050, 1042, 978, 985, 959, 989, 969, 972, 1050, 983, 999, 977, 1010, 981, 1027, 990, 1049, 966, 979, 1079, 992, 941, 990, 978, 994, 962, 1055, 985, 982, 946, 988, 1016, 976, 992, 1043, 928, 940, 976, 997, 1051, 1047, 999, 995, 983, 986, 999, 936, 983, 1039, 1028, 1042, 946, 982, 959, 1009, 975, 928, 1035, 974, 985, 935, 967, 1021, 1000, 906, 955, 1000, 974, 1026, 964, 973, 906, 1005, 1066, 1019, 1023, 994, 1078, 1006, 984, 1014, 946, 1011, 985, 1025, 1027, 1018, 1019], [999, 1016, 1000, 1023, 969, 1018, 1039, 949, 969, 943, 982, 978, 966, 979, 934, 946, 1004, 993, 985, 1010, 950, 1011, 1088, 1005, 979, 1046, 966, 1024, 1032, 1037, 995, 1014, 993, 923, 988, 995, 1017, 1023, 975, 960, 986, 995, 1039, 973, 1031, 1013, 1028, 1026, 1054, 997, 1039, 959, 1061, 955, 983, 956, 956, 1003, 1034, 927, 1003, 1018, 977, 1016, 1022, 1035, 984, 972, 986, 1017, 989, 994, 1003, 1005, 1048, 1026, 1025, 946, 940, 1023, 979, 1039, 973, 1051, 993, 995, 929, 982, 969, 1020, 984, 1018, 1006, 902, 1078, 1020, 998, 988, 1011, 957, 985, 1087, 975, 1035, 992, 987, 994, 1034, 999, 994, 994, 971, 1031, 1007, 957, 1006, 978, 1021, 999, 962, 1000, 984, 1036, 969, 967, 940, 984, 989, 1070, 1008, 1013, 1000, 984, 1033, 1008, 992, 1003, 1011, 1016, 1053, 1000, 1036, 1012, 1001, 987, 992, 1030, 1041, 1005, 1053, 1027, 959, 965, 969, 1026, 1018, 1002, 1001, 992, 1007, 1023, 982, 981, 1057, 1005, 1009, 1008, 1023, 1014, 1032, 993, 983, 982, 954, 1029, 997, 976, 1008, 1009, 1029, 996, 1071, 996, 994, 998, 938, 975, 1010, 1011, 1016, 983, 950, 1057, 1056, 937, 974, 970, 942, 1031, 1021, 976, 1003, 981, 991, 1029, 965, 1016, 1064, 984, 1028, 1023, 961, 981, 1040, 1001, 1025, 990, 1009, 931, 980, 1006, 960, 1014, 986, 1019, 984, 1024, 971, 997, 1014, 1039, 1003, 1038, 960, 1009, 993, 931, 1069, 977, 1024, 994, 1024, 957, 1024, 993, 1017, 1002, 1009, 1036, 1033, 955, 1001, 1028, 1062, 987, 994], [954, 940, 981, 975, 1002, 1038, 1023, 1016, 976, 1007, 985, 1009, 1007, 1027, 1013, 1026, 1014, 986, 1014, 976, 964, 977, 938, 975, 960, 1001, 1036, 1001, 943, 973, 1066, 980, 955, 1022, 1073, 1006, 997, 1001, 960, 950, 967, 961, 1000, 990, 1005, 1000, 1050, 1009, 962, 1010, 1011, 990, 968, 1010, 1001, 1027, 980, 1010, 1005, 1014, 1009, 1000, 1037, 1001, 1028, 1033, 966, 1010, 977, 1005, 1022, 984, 990, 971, 1001, 952, 1045, 975, 979, 981, 1006, 1052, 968, 959, 1072, 964, 1040, 976, 1070, 903, 959, 992, 1041, 981, 1032, 972, 982, 956, 1001, 986, 1053, 1025, 960, 941, 973, 1031, 959, 997, 1008, 951, 1017, 1050, 1005, 1007, 996, 970, 1002, 1001, 1013, 974, 1012, 960, 1014, 968, 994, 1016, 1035, 1020, 1010, 1033, 938, 993, 1057, 1003, 981, 999, 978, 940, 1038, 1017, 1017, 1032, 1024, 1029, 940, 989, 983, 980, 984, 1052, 1003, 1016, 1003, 981, 896, 1026, 1026, 984, 988, 997, 1014, 1039, 969, 988, 939, 1023, 981, 1020, 1002, 1007, 1036, 1019, 973, 982, 1007, 992, 974, 1052, 1004, 1044, 1004, 1000, 949, 1002, 1009, 961, 961, 945, 1028, 1022, 987, 1001, 1019, 1011, 943, 1014, 1035, 1015, 959, 1013, 977, 984, 1009, 991, 1030, 1007, 1008, 1002, 980, 1078, 976, 1020, 1003, 1037, 960, 999, 1027, 941, 983, 979, 964, 982, 1012, 1038, 1010, 965, 1038, 969, 1004, 1037, 1004, 1002, 1043, 1010, 969, 1011, 990, 1027, 1022, 1007, 1009, 1005, 1029, 976, 925, 1007, 946, 1022, 1007, 989, 1011, 964, 990, 964, 951, 949], [934, 1032, 1013, 1038, 1009, 1033, 972, 1006, 995, 1042, 1026, 981, 976, 1012, 1003, 991, 977, 991, 958, 940, 996, 966, 960, 1061, 966, 995, 1040, 988, 947, 1000, 963, 1054, 968, 1039, 1038, 997, 1034, 1042, 995, 1042, 992, 993, 975, 967, 943, 945, 1017, 1017, 932, 984, 1008, 1024, 1008, 993, 1012, 962, 996, 983, 999, 995, 1020, 1025, 1071, 996, 1031, 1004, 1017, 1033, 972, 1006, 964, 1029, 981, 959, 981, 977, 984, 976, 980, 1049, 1006, 1012, 1039, 984, 1037, 1001, 955, 993, 990, 975, 989, 989, 984, 968, 1032, 990, 995, 990, 1052, 1003, 1038, 964, 1019, 1018, 1080, 1049, 986, 951, 937, 1030, 1039, 1026, 1034, 1015, 928, 998, 1007, 1006, 953, 1014, 1012, 1053, 1024, 980, 1039, 1000, 1054, 978, 993, 1043, 976, 961, 1014, 967, 942, 1063, 976, 1016, 1049, 1038, 948, 993, 1010, 984, 978, 1018, 1023, 1019, 969, 999, 991, 985, 956, 1022, 1056, 1031, 954, 1056, 955, 967, 1019, 1035, 968, 1003, 1008, 993, 1009, 1044, 1043, 996, 999, 998, 975, 1005, 1047, 970, 975, 1087, 990, 975, 1043, 1001, 1025, 991, 981, 982, 1016, 1038, 962, 1012, 989, 996, 968, 1089, 1030, 1037, 966, 979, 971, 933, 979, 998, 1007, 996, 993, 1037, 1007, 970, 974, 1033, 1018, 1026, 1012, 988, 987, 975, 988, 1019, 989, 999, 990, 1031, 982, 1051, 1035, 1031, 1002, 1003, 1013, 1008, 1005, 958, 1011, 1014, 940, 1098, 1014, 984, 949, 968, 981, 1025, 1050, 1003, 1071, 1017, 973, 1019, 998, 982, 1024, 1014, 985, 1035, 973, 977], [999, 1069, 991, 1006, 1008, 1026, 967, 1012, 959, 988, 979, 967, 993, 949, 968, 1002, 948, 1008, 1009, 963, 1016, 1025, 988, 1044, 1057, 1014, 965, 1020, 1005, 1006, 1020, 940, 1010, 1026, 1018, 1035, 1041, 995, 1076, 999, 1005, 1036, 1061, 974, 975, 1028, 1012, 964, 974, 987, 998, 1043, 1027, 1016, 960, 984, 1025, 948, 975, 977, 935, 1037, 992, 1068, 1040, 1057, 1052, 983, 1008, 1012, 1047, 1004, 989, 986, 996, 987, 992, 1024, 979, 1036, 996, 1005, 1044, 971, 1002, 1029, 1041, 1035, 1000, 1002, 971, 1026, 1011, 982, 995, 1002, 1001, 988, 1004, 992, 977, 1018, 1012, 995, 981, 1045, 967, 1002, 1006, 952, 995, 998, 961, 1020, 1040, 980, 1050, 988, 969, 953, 996, 1018, 995, 994, 940, 991, 1017, 975, 995, 971, 1002, 985, 1017, 997, 972, 978, 1000, 949, 1010, 1025, 1010, 968, 968, 979, 994, 1021, 997, 992, 1015, 973, 989, 1077, 963, 1002, 946, 1019, 1021, 980, 936, 1011, 980, 1004, 1016, 982, 996, 976, 1039, 1044, 1008, 933, 970, 996, 1015, 983, 1009, 1070, 1023, 990, 949, 1011, 998, 1044, 1007, 979, 970, 1010, 1016, 1022, 1008, 1005, 975, 1017, 991, 965, 980, 935, 1007, 1041, 1024, 1005, 1031, 974, 1066, 1064, 1000, 942, 949, 1019, 971, 953, 964, 1055, 1014, 1055, 955, 956, 968, 1043, 979, 995, 1048, 954, 1019, 999, 961, 996, 1029, 1025, 1044, 1008, 965, 1011, 993, 986, 983, 996, 1074, 935, 982, 975, 942, 949, 1007, 1056, 1021, 1016, 984, 981, 1063, 1048, 967, 1011, 990, 947, 956, 1009], [1023, 1062, 1023, 953, 967, 998, 963, 1027, 1061, 1055, 1008, 1017, 1012, 1014, 984, 991, 1012, 995, 981, 982, 960, 1029, 1014, 1012, 991, 990, 1016, 1041, 993, 1000, 1029, 1012, 1026, 1005, 991, 988, 985, 993, 1030, 970, 1022, 972, 999, 1041, 1015, 986, 998, 1006, 1009, 1010, 1011, 945, 969, 994, 997, 982, 997, 956, 902, 969, 959, 949, 1001, 1007, 995, 979, 963, 999, 1010, 1025, 916, 990, 1042, 948, 1017, 1018, 1012, 992, 1033, 999, 957, 1004, 1019, 994, 1031, 1048, 1013, 1065, 963, 962, 1013, 1027, 1032, 1062, 1002, 1005, 988, 970, 1026, 991, 935, 968, 1040, 1006, 991, 1004, 1029, 994, 1072, 986, 1016, 1044, 1033, 996, 990, 1037, 970, 974, 987, 1033, 996, 1010, 1048, 1016, 984, 924, 1013, 1075, 1040, 964, 1036, 982, 1038, 989, 999, 972, 1013, 995, 1039, 1033, 986, 1052, 1059, 1045, 952, 978, 952, 1055, 1030, 1015, 1081, 995, 1038, 992, 991, 1009, 998, 1035, 1026, 993, 1039, 1008, 1021, 1027, 973, 983, 949, 1010, 950, 990, 1011, 1030, 942, 972, 1056, 1054, 1024, 994, 997, 1012, 1003, 1032, 941, 1012, 959, 1000, 969, 997, 990, 1029, 949, 1022, 993, 980, 969, 1043, 1008, 1021, 997, 984, 984, 993, 1005, 972, 961, 1003, 966, 940, 1007, 1044, 961, 986, 977, 953, 972, 958, 998, 1009, 973, 970, 1012, 956, 1027, 1032, 1017, 1022, 950, 1043, 948, 1017, 1011, 965, 978, 1023, 1018, 983, 1030, 990, 1044, 1097, 1000, 1017, 951, 933, 1015, 1051, 1009, 1015, 1029, 1010, 1000, 1022, 999, 1022, 970, 1034], [954, 982, 986, 977, 1029, 999, 981, 985, 955, 970, 1045, 1020, 1017, 1027, 1018, 991, 1016, 1011, 1013, 1012, 980, 986, 1055, 1001, 955, 977, 1019, 999, 1029, 986, 974, 992, 1035, 958, 1082, 997, 1015, 976, 1002, 1080, 1029, 991, 950, 1032, 982, 1014, 1046, 967, 1031, 982, 983, 995, 994, 982, 1040, 958, 1021, 1004, 999, 1030, 997, 1033, 989, 954, 1046, 1041, 1055, 984, 951, 960, 1008, 976, 1041, 981, 978, 1000, 984, 943, 1047, 1059, 987, 1039, 1004, 1043, 1014, 1020, 977, 1002, 1004, 963, 1027, 995, 1018, 973, 1040, 1022, 991, 968, 955, 972, 927, 1002, 1006, 965, 952, 1002, 995, 967, 1008, 997, 979, 964, 1040, 1018, 1016, 987, 987, 1048, 953, 998, 993, 986, 1018, 1002, 986, 979, 1036, 1015, 974, 1037, 953, 945, 1036, 899, 950, 942, 1050, 992, 979, 986, 951, 1002, 994, 1022, 1007, 991, 1002, 1072, 1008, 938, 1025, 1013, 1041, 1068, 1058, 1011, 1021, 999, 946, 940, 1015, 1021, 1022, 1001, 1006, 997, 1003, 980, 986, 995, 995, 951, 971, 1010, 1013, 1079, 987, 993, 1027, 1009, 948, 1010, 928, 1029, 1006, 1005, 987, 991, 1003, 945, 1055, 969, 991, 1010, 1047, 1043, 960, 1000, 1018, 970, 1017, 1041, 1041, 941, 976, 1049, 978, 1030, 957, 969, 1002, 979, 1029, 1003, 1005, 941, 1056, 965, 973, 972, 1022, 1036, 997, 982, 980, 975, 986, 1049, 1028, 992, 964, 957, 970, 1003, 1042, 993, 1046, 998, 1028, 1033, 995, 982, 970, 978, 1026, 969, 1004, 1017, 1038, 980, 996, 1071, 1012, 1027, 1024, 1013], [1008, 1039, 1010, 1028, 950, 1036, 963, 993, 1036, 960, 982, 1029, 972, 979, 967, 1017, 1026, 1016, 974, 975, 998, 945, 1007, 1005, 985, 1018, 1023, 963, 996, 999, 1031, 974, 1041, 948, 977, 966, 998, 1027, 1001, 991, 993, 1019, 1027, 1029, 977, 944, 1021, 1044, 989, 1029, 993, 1023, 944, 1011, 1014, 992, 1036, 954, 1009, 984, 984, 958, 1035, 987, 976, 1027, 1018, 1042, 1009, 1045, 1015, 1006, 983, 999, 955, 1009, 1041, 970, 1022, 950, 973, 1006, 988, 999, 1000, 999, 985, 1023, 1003, 1006, 1013, 961, 1006, 1011, 1052, 1036, 1007, 993, 970, 1012, 976, 953, 1001, 990, 971, 1037, 989, 1011, 995, 927, 992, 1043, 1002, 978, 996, 968, 1001, 1027, 1033, 997, 1004, 1009, 972, 997, 1001, 983, 1048, 1016, 1076, 1023, 976, 1031, 993, 1029, 1075, 1015, 960, 1008, 1044, 994, 964, 987, 1009, 979, 1002, 1016, 1002, 938, 998, 1006, 991, 1013, 970, 985, 1024, 981, 1046, 970, 1016, 1015, 990, 1009, 1025, 1011, 951, 1000, 1009, 994, 1030, 981, 1107, 995, 1042, 1049, 984, 1009, 988, 1036, 1024, 990, 1010, 973, 951, 999, 979, 1035, 995, 1029, 970, 1018, 966, 928, 937, 992, 944, 1039, 1003, 994, 1011, 993, 1028, 962, 1032, 1000, 1061, 980, 1052, 1043, 1029, 983, 1025, 1002, 1040, 1045, 976, 999, 1006, 970, 1059, 1007, 1013, 1001, 1000, 993, 1005, 1033, 1039, 1028, 975, 1024, 1007, 987, 1020, 1033, 1021, 982, 1014, 968, 993, 1097, 990, 976, 996, 1003, 1023, 1071, 1030, 1010, 1004, 990, 954, 1065, 988, 1012, 940, 996], [974, 931, 995, 1082, 986, 965, 1027, 1039, 1024, 1002, 997, 993, 1036, 979, 1042, 1033, 1042, 978, 1002, 1023, 953, 1027, 997, 1037, 1004, 954, 1009, 982, 960, 962, 988, 1028, 1024, 1009, 1018, 993, 1027, 996, 1041, 1014, 985, 1082, 997, 1000, 1033, 1018, 1027, 954, 1023, 970, 981, 958, 1006, 975, 943, 1058, 990, 986, 1029, 958, 993, 996, 999, 1035, 993, 1054, 979, 1048, 1009, 995, 1000, 1011, 958, 1028, 1011, 1035, 1044, 913, 1006, 993, 1002, 1015, 1015, 1026, 981, 1006, 1034, 1050, 998, 1003, 1016, 1048, 992, 1010, 994, 1002, 1004, 1009, 1007, 1016, 963, 1005, 946, 974, 974, 1030, 1016, 1003, 963, 975, 997, 1041, 1003, 1019, 1032, 948, 1000, 1006, 1025, 992, 1016, 958, 996, 1028, 1059, 963, 1001, 995, 966, 996, 1005, 1000, 943, 951, 982, 1019, 1009, 925, 1004, 950, 1016, 975, 994, 968, 1022, 1022, 1075, 1005, 995, 996, 1003, 1009, 954, 1043, 1001, 997, 991, 944, 1040, 971, 984, 944, 1035, 1002, 986, 1002, 1026, 959, 1002, 1027, 1003, 981, 991, 997, 978, 1007, 983, 994, 967, 1013, 992, 1042, 975, 989, 1011, 933, 942, 996, 1030, 987, 983, 1029, 997, 1012, 968, 1020, 971, 1000, 1021, 990, 1054, 991, 1044, 959, 1024, 998, 992, 1003, 990, 972, 963, 998, 987, 988, 972, 1033, 994, 1045, 1004, 947, 1010, 999, 997, 978, 984, 1003, 1025, 1002, 1005, 1004, 1036, 996, 1027, 979, 987, 1029, 1070, 962, 1039, 1013, 955, 1013, 970, 959, 966, 991, 960, 985, 1027, 1079, 992, 1010, 982, 979, 1033, 1037], [996, 965, 990, 1036, 999, 1010, 997, 971, 977, 981, 964, 1012, 986, 994, 968, 972, 1018, 1007, 1005, 1006, 980, 1026, 982, 988, 961, 961, 1050, 1006, 1018, 1013, 997, 986, 981, 995, 999, 952, 1001, 1013, 1005, 1003, 932, 969, 1051, 997, 1011, 1014, 990, 1039, 978, 1057, 1027, 951, 1024, 990, 986, 1038, 993, 975, 935, 978, 972, 1000, 992, 996, 961, 998, 1019, 1036, 1017, 1029, 969, 1013, 997, 1041, 967, 995, 961, 940, 986, 996, 1025, 972, 948, 964, 966, 992, 1004, 961, 964, 938, 1033, 978, 1040, 1025, 958, 1006, 988, 980, 938, 987, 994, 1005, 983, 1015, 1020, 1025, 1010, 987, 976, 1018, 974, 1002, 1046, 990, 988, 1022, 1042, 1024, 993, 992, 1027, 971, 951, 975, 1019, 1032, 1016, 1044, 1012, 948, 1006, 1021, 1027, 1044, 1032, 982, 1003, 964, 983, 1043, 1001, 1054, 999, 1023, 954, 1015, 1075, 953, 1001, 996, 1003, 983, 1029, 986, 980, 974, 1008, 1016, 1007, 974, 1011, 999, 1031, 982, 1006, 1022, 976, 983, 1017, 1049, 997, 1010, 990, 975, 997, 1022, 1055, 1039, 1007, 965, 1005, 1063, 1015, 997, 1001, 964, 1038, 994, 1016, 963, 1002, 1027, 970, 994, 990, 1009, 1044, 943, 964, 956, 990, 987, 1003, 989, 1058, 981, 982, 1027, 1025, 1045, 1024, 981, 1019, 997, 973, 976, 1053, 984, 1003, 967, 1022, 986, 968, 1001, 1025, 1034, 981, 1037, 1038, 1019, 1006, 988, 1068, 952, 1016, 946, 1000, 1014, 961, 979, 965, 985, 961, 1019, 990, 1081, 1028, 982, 1026, 992, 979, 1025, 982, 1010, 1016, 977], [981, 981, 979, 1006, 1000, 946, 941, 987, 1000, 980, 1019, 979, 995, 976, 1030, 976, 936, 986, 972, 1039, 966, 1028, 960, 1006, 944, 1072, 1019, 964, 1015, 1034, 998, 1072, 978, 982, 991, 933, 966, 1024, 999, 939, 974, 1019, 988, 1040, 984, 1006, 1049, 984, 1031, 1041, 967, 1016, 973, 1005, 950, 1024, 980, 985, 993, 984, 1029, 978, 965, 1002, 984, 1005, 1058, 978, 987, 1067, 968, 993, 997, 1027, 1038, 1031, 997, 1050, 1008, 1022, 992, 1046, 1004, 1015, 1002, 1078, 961, 1009, 1001, 966, 983, 982, 985, 968, 962, 1007, 1024, 966, 995, 991, 1015, 994, 962, 1059, 1009, 947, 999, 1022, 1011, 1001, 988, 1021, 957, 1016, 943, 993, 1006, 966, 984, 1026, 929, 904, 971, 1035, 1004, 1028, 991, 1025, 1009, 986, 991, 984, 977, 1042, 1035, 1011, 972, 943, 1026, 966, 969, 1041, 969, 977, 912, 975, 991, 1012, 991, 978, 1060, 929, 978, 1017, 1035, 958, 1023, 927, 961, 1022, 1009, 980, 989, 979, 1007, 1088, 998, 977, 1009, 1015, 970, 1021, 993, 1037, 983, 1047, 973, 969, 1016, 1016, 974, 1024, 1000, 1002, 993, 1051, 998, 1017, 952, 1034, 1027, 958, 1009, 1015, 1018, 1035, 1001, 995, 1061, 1030, 1033, 946, 1015, 1050, 1037, 975, 991, 990, 976, 996, 1014, 1037, 981, 984, 1033, 1000, 1057, 1028, 989, 996, 1003, 1021, 989, 1004, 1006, 987, 928, 1006, 924, 953, 1003, 1010, 998, 1006, 983, 1013, 1000, 974, 979, 963, 1057, 983, 987, 972, 1071, 1036, 948, 1018, 997, 1001, 969, 1022, 1019, 989, 953, 1016], [994, 1000, 968, 1009, 1007, 1006, 932, 1018, 1030, 998, 981, 987, 1068, 978, 1065, 969, 1019, 1026, 1042, 1000, 1046, 1012, 934, 1023, 987, 1018, 1002, 1003, 1017, 989, 1016, 1065, 960, 1021, 976, 1022, 994, 1026, 968, 955, 935, 943, 979, 1015, 990, 1000, 969, 1007, 958, 1000, 992, 990, 1008, 992, 1021, 1007, 984, 1001, 965, 977, 987, 1003, 1011, 995, 1020, 1005, 1014, 981, 959, 1011, 963, 987, 1041, 937, 966, 1018, 1025, 971, 968, 985, 985, 1014, 993, 956, 1001, 1023, 1014, 1026, 1002, 976, 999, 987, 982, 944, 1013, 1019, 1005, 1003, 965, 1001, 1029, 986, 1023, 992, 1025, 1006, 1011, 987, 982, 979, 986, 942, 978, 1015, 1032, 995, 1004, 1027, 1012, 948, 1019, 1021, 996, 1028, 987, 982, 1015, 1080, 1057, 999, 975, 1050, 1012, 1037, 1006, 977, 1046, 961, 988, 981, 983, 993, 990, 1013, 988, 1027, 983, 984, 975, 1021, 959, 1025, 974, 1013, 978, 1006, 1005, 990, 978, 981, 1011, 1044, 1060, 998, 1042, 971, 997, 988, 974, 976, 996, 955, 1030, 1010, 973, 1064, 1019, 975, 1034, 998, 948, 994, 1008, 920, 1020, 991, 1040, 1052, 991, 984, 998, 948, 1015, 966, 998, 1024, 1024, 1013, 1023, 1014, 976, 1094, 941, 968, 952, 1001, 995, 964, 989, 978, 968, 965, 964, 982, 976, 992, 1049, 1010, 999, 986, 998, 1025, 1016, 973, 973, 962, 1014, 1002, 1038, 1033, 968, 1013, 993, 1014, 1003, 1040, 1009, 1030, 1016, 1013, 999, 1039, 993, 1001, 1020, 985, 1042, 1014, 1018, 1002, 1008, 1012, 963, 1047, 999, 1025], [1018, 1046, 1043, 946, 953, 944, 1027, 1011, 991, 953, 1016, 970, 997, 1032, 1020, 969, 1027, 1001, 1028, 1014, 954, 1021, 1048, 1040, 923, 1031, 976, 971, 1016, 1014, 990, 1001, 1019, 1022, 959, 988, 990, 980, 1028, 1005, 1069, 1025, 940, 1012, 993, 1045, 906, 990, 966, 974, 1006, 985, 968, 958, 986, 1040, 1023, 991, 1030, 958, 979, 1017, 1002, 975, 1020, 986, 999, 942, 1034, 991, 990, 1005, 1024, 999, 1058, 980, 1002, 985, 1017, 1039, 949, 995, 958, 994, 990, 1043, 972, 949, 990, 1015, 996, 1015, 1000, 1018, 995, 1006, 1012, 972, 1066, 982, 966, 989, 1006, 992, 1008, 1023, 1032, 1013, 1039, 970, 1032, 1005, 1114, 971, 1022, 989, 1053, 1083, 958, 946, 986, 1005, 991, 1053, 1031, 957, 1022, 983, 1055, 971, 1065, 1017, 990, 986, 997, 1023, 993, 929, 1001, 1025, 989, 995, 957, 1032, 1016, 950, 977, 984, 935, 978, 987, 1047, 1009, 1048, 939, 988, 993, 1064, 977, 935, 997, 1064, 998, 1018, 933, 1016, 930, 965, 1001, 947, 951, 978, 1040, 1070, 1080, 974, 1046, 1023, 1047, 1047, 948, 993, 954, 1002, 1014, 1036, 1013, 1042, 1056, 977, 1038, 949, 1028, 965, 983, 1009, 1049, 1005, 1045, 992, 980, 1013, 972, 993, 983, 1051, 988, 979, 974, 974, 988, 965, 983, 1023, 971, 986, 1008, 1000, 1006, 998, 1045, 975, 955, 1018, 1037, 1011, 960, 1032, 978, 968, 1020, 994, 954, 1031, 966, 987, 976, 991, 1026, 982, 1036, 979, 998, 982, 998, 973, 1021, 1029, 965, 1009, 992, 968, 1021, 1018, 1026, 1021], [963, 954, 1003, 1034, 1027, 1046, 1011, 985, 1065, 1002, 1005, 1015, 1002, 1070, 1010, 978, 1007, 957, 1023, 977, 1011, 959, 987, 1009, 949, 970, 988, 1000, 945, 999, 1050, 1002, 972, 1040, 1019, 1006, 990, 999, 980, 1015, 1004, 1003, 1005, 992, 964, 958, 968, 987, 1008, 1012, 988, 951, 1123, 1045, 991, 1043, 995, 1011, 983, 1014, 1002, 975, 987, 1039, 1018, 1044, 973, 994, 1069, 1022, 1022, 1003, 1047, 973, 1028, 976, 992, 953, 958, 935, 965, 971, 1019, 1003, 1031, 962, 1013, 980, 1119, 975, 1039, 1032, 956, 1040, 977, 1026, 1017, 997, 972, 944, 963, 966, 983, 1012, 1046, 955, 941, 1022, 1006, 1001, 943, 1007, 1013, 989, 1007, 992, 998, 1004, 1023, 920, 980, 1005, 1032, 1030, 990, 1010, 997, 922, 1030, 1067, 953, 964, 1040, 997, 1030, 999, 1008, 1046, 977, 999, 1011, 984, 979, 986, 952, 1008, 1035, 980, 1018, 997, 985, 1013, 1049, 999, 1069, 981, 965, 1006, 978, 996, 1021, 1031, 990, 1032, 1006, 989, 1018, 993, 1000, 984, 1005, 1030, 938, 964, 1046, 955, 980, 981, 982, 1008, 974, 960, 957, 948, 963, 1033, 999, 988, 916, 1050, 1000, 1010, 1014, 986, 1021, 1024, 995, 976, 979, 947, 996, 980, 1048, 981, 975, 1017, 973, 1038, 1011, 986, 1022, 996, 1006, 984, 1016, 1009, 972, 1020, 1006, 972, 997, 991, 1013, 1036, 1033, 950, 990, 981, 1049, 985, 1000, 941, 976, 997, 1006, 988, 1026, 988, 1012, 1025, 1054, 1066, 1007, 1015, 1024, 992, 989, 982, 1008, 1054, 991, 934, 1037, 975, 1001, 973], [1051, 1016, 952, 982, 1010, 992, 1021, 1011, 977, 1012, 1009, 981, 1045, 980, 926, 1028, 995, 1040, 982, 1017, 955, 1005, 1030, 973, 987, 996, 992, 986, 982, 1027, 953, 986, 1014, 983, 1039, 1024, 982, 978, 947, 976, 991, 977, 972, 1042, 1005, 925, 1022, 965, 1071, 969, 1046, 1003, 973, 1011, 1016, 1006, 1027, 1016, 1016, 1061, 962, 959, 954, 1054, 994, 972, 1040, 1048, 1001, 983, 984, 1039, 1050, 997, 939, 1049, 954, 982, 1072, 994, 995, 1003, 994, 1032, 1026, 974, 1017, 1011, 1039, 994, 988, 1017, 1043, 1006, 1042, 1051, 961, 1019, 970, 995, 1044, 1007, 980, 1006, 1014, 986, 1030, 1062, 1045, 960, 946, 955, 957, 1015, 1038, 994, 1009, 980, 1027, 998, 911, 1030, 993, 996, 1039, 974, 1023, 1008, 997, 989, 963, 1000, 956, 959, 974, 988, 954, 985, 1018, 986, 1019, 1008, 997, 956, 998, 1028, 991, 955, 991, 1029, 985, 942, 1003, 1009, 1036, 1003, 985, 924, 949, 1029, 972, 999, 1018, 1004, 943, 1054, 1003, 981, 1035, 958, 1045, 1003, 993, 990, 965, 1020, 1007, 979, 1051, 959, 969, 970, 1022, 1013, 964, 971, 991, 1015, 997, 990, 998, 1007, 976, 1023, 1020, 965, 997, 951, 1017, 995, 1014, 955, 985, 1024, 992, 1049, 979, 1034, 1003, 954, 1044, 1007, 985, 974, 994, 1009, 1030, 1007, 1022, 982, 982, 1002, 1014, 990, 1052, 1010, 997, 1004, 929, 960, 957, 1003, 1015, 983, 1054, 977, 1019, 976, 1007, 999, 985, 1002, 993, 924, 1017, 967, 986, 996, 973, 1030, 988, 972, 1015, 1045, 1034, 990], [990, 991, 1000, 991, 1000, 991, 1064, 1016, 979, 1056, 990, 1021, 955, 1000, 935, 950, 1030, 1028, 978, 1027, 1060, 960, 1006, 1002, 959, 971, 991, 959, 1036, 1010, 1014, 996, 1034, 1037, 1012, 1029, 1022, 997, 1012, 1046, 1051, 1042, 1034, 971, 957, 963, 1068, 996, 992, 1013, 997, 1060, 1040, 1005, 982, 988, 984, 1024, 977, 979, 1012, 1012, 960, 1014, 982, 964, 1015, 978, 1020, 990, 982, 1007, 1018, 972, 960, 1041, 1047, 1011, 1036, 966, 953, 1009, 917, 983, 1005, 1037, 1001, 944, 1039, 1019, 1009, 978, 1012, 1034, 950, 1071, 972, 1016, 1003, 983, 1027, 978, 1033, 1001, 988, 1027, 946, 1029, 1012, 986, 1072, 981, 1015, 973, 966, 1036, 1040, 1013, 990, 970, 1043, 991, 1012, 1011, 998, 1048, 1019, 993, 978, 1031, 1020, 1005, 985, 1035, 991, 1039, 1028, 974, 992, 1019, 978, 971, 974, 983, 1031, 1032, 1009, 996, 989, 976, 966, 971, 1030, 979, 992, 975, 1065, 1006, 1005, 1000, 1037, 1007, 1023, 1028, 999, 1013, 1020, 1005, 1001, 1028, 1054, 974, 996, 1062, 1021, 969, 944, 981, 945, 956, 1038, 960, 998, 986, 1027, 1019, 992, 1016, 1020, 974, 986, 1028, 1025, 970, 999, 997, 1002, 998, 988, 991, 1011, 948, 973, 1015, 985, 959, 1053, 1019, 960, 1023, 969, 1015, 1017, 1006, 1070, 1038, 1012, 988, 1050, 982, 970, 1012, 1030, 988, 965, 1008, 941, 1042, 979, 976, 936, 981, 1026, 960, 1007, 1013, 1033, 975, 1045, 1015, 1027, 1040, 1018, 1016, 1047, 1006, 1004, 1007, 1000, 1007, 939, 1031, 1048, 946, 1097, 1003], [1008, 1003, 966, 998, 1023, 1050, 948, 951, 1037, 1007, 907, 1003, 1060, 975, 994, 934, 994, 985, 980, 996, 1024, 984, 987, 1003, 1019, 990, 998, 938, 1000, 967, 944, 958, 1035, 1050, 960, 983, 987, 968, 998, 974, 1049, 1044, 975, 985, 989, 988, 995, 1011, 974, 969, 985, 927, 1013, 1003, 985, 1069, 1005, 1026, 989, 1026, 1011, 961, 1027, 982, 973, 1027, 962, 1028, 973, 1030, 980, 1002, 987, 1056, 977, 986, 998, 1046, 1066, 1039, 999, 1041, 1028, 1005, 950, 993, 964, 1022, 1001, 987, 1041, 998, 965, 950, 972, 1030, 1009, 1034, 1016, 1044, 977, 996, 1003, 994, 1057, 1045, 948, 967, 1001, 963, 1012, 1002, 970, 967, 993, 961, 1036, 1003, 1005, 1051, 1065, 1003, 986, 1010, 930, 983, 1020, 989, 957, 1032, 1033, 944, 1023, 1030, 994, 949, 1019, 971, 1063, 1012, 999, 1033, 1012, 998, 982, 1000, 1006, 1004, 997, 997, 997, 1037, 1017, 1011, 983, 952, 1016, 1030, 996, 991, 1050, 1005, 1021, 962, 998, 1019, 985, 987, 1014, 1007, 943, 998, 1029, 1007, 1022, 989, 1058, 966, 1030, 992, 986, 950, 995, 954, 977, 1005, 988, 1012, 1034, 1001, 1039, 965, 1038, 1040, 989, 988, 936, 987, 998, 1011, 987, 963, 987, 1030, 1010, 971, 1090, 985, 990, 1011, 983, 950, 1014, 985, 1024, 1028, 997, 1016, 987, 1040, 989, 1004, 965, 997, 999, 994, 1028, 1027, 982, 1032, 998, 1013, 974, 1035, 1022, 965, 1025, 975, 999, 1016, 1019, 971, 998, 1016, 1012, 985, 1045, 985, 1039, 1030, 1006, 1012, 974, 1034, 1012, 1017], [983, 1034, 983, 1038, 997, 1009, 996, 954, 959, 990, 959, 1015, 984, 990, 1045, 1015, 1027, 1060, 1000, 989, 987, 1012, 954, 1031, 1026, 1000, 1006, 999, 988, 992, 994, 1021, 1058, 1059, 978, 1011, 1009, 1041, 1032, 1048, 1042, 1024, 974, 1040, 1018, 1043, 980, 1033, 1037, 1016, 1052, 1009, 994, 1039, 1004, 985, 1020, 1011, 993, 966, 1045, 1001, 984, 1045, 1047, 1020, 972, 954, 949, 1090, 992, 1013, 1003, 1028, 987, 1001, 926, 972, 999, 945, 985, 994, 1030, 982, 968, 960, 1024, 1020, 961, 1003, 993, 998, 999, 1025, 1010, 966, 1011, 981, 1044, 1024, 1051, 975, 978, 994, 1018, 981, 1033, 1015, 1013, 1012, 1033, 1030, 973, 1024, 1037, 1035, 1008, 1027, 1032, 1031, 1004, 1022, 975, 1001, 970, 962, 1048, 906, 1036, 1014, 1018, 1012, 1010, 989, 1016, 1021, 962, 1007, 997, 1002, 1035, 1021, 1014, 974, 984, 1015, 989, 1014, 1015, 1012, 1047, 1013, 971, 1004, 1057, 962, 995, 1018, 1006, 987, 1000, 985, 1001, 1047, 950, 981, 1022, 1017, 1011, 997, 971, 942, 1050, 997, 963, 965, 974, 1027, 985, 964, 1024, 1033, 1003, 1018, 974, 969, 1033, 1027, 1028, 1007, 948, 982, 1007, 979, 981, 968, 976, 954, 1014, 937, 1022, 961, 1005, 1031, 980, 1010, 1001, 964, 1028, 1009, 1029, 1020, 990, 963, 965, 981, 1035, 986, 1006, 995, 952, 954, 947, 996, 1011, 1011, 975, 996, 991, 986, 915, 1001, 1020, 971, 1022, 997, 963, 1009, 993, 1053, 990, 994, 993, 1002, 980, 1016, 999, 959, 1014, 971, 1015, 941, 996, 1003, 978, 992], [967, 1025, 1058, 1031, 988, 982, 942, 1004, 963, 1022, 951, 957, 997, 981, 1029, 1054, 944, 1030, 1005, 982, 998, 1012, 1008, 976, 1030, 984, 986, 1033, 1030, 992, 976, 1056, 1001, 1002, 991, 1047, 1020, 965, 1008, 981, 992, 1063, 949, 1037, 1042, 1003, 975, 1016, 957, 1028, 956, 953, 1015, 964, 1050, 1027, 1001, 999, 1021, 1029, 946, 987, 1002, 991, 929, 951, 1002, 956, 992, 991, 1007, 993, 970, 994, 952, 954, 973, 1010, 993, 993, 962, 1005, 1014, 1005, 995, 1027, 1009, 996, 1001, 995, 965, 1009, 966, 1043, 1075, 1017, 1033, 1000, 980, 945, 963, 1008, 958, 1002, 1019, 982, 1002, 997, 963, 1050, 997, 964, 1043, 988, 988, 1042, 999, 983, 986, 1030, 1022, 977, 1005, 1051, 982, 1033, 980, 978, 1034, 968, 1015, 1051, 948, 1026, 1018, 1005, 1049, 992, 940, 993, 1043, 966, 1013, 986, 962, 1002, 959, 1014, 967, 960, 1009, 993, 997, 1017, 1003, 985, 966, 988, 959, 1061, 1025, 969, 1025, 1002, 994, 983, 1005, 1080, 1054, 1069, 978, 986, 947, 1025, 979, 973, 1007, 949, 988, 968, 954, 942, 971, 994, 978, 932, 1021, 962, 962, 949, 1007, 1014, 1020, 997, 939, 916, 983, 978, 1012, 998, 1013, 984, 966, 1048, 995, 989, 996, 1011, 1038, 1031, 963, 1023, 986, 1057, 1007, 1026, 973, 1075, 952, 948, 996, 980, 1012, 1028, 1042, 949, 1010, 994, 965, 1001, 964, 980, 989, 1016, 1048, 992, 967, 1009, 1028, 949, 1007, 967, 981, 1003, 1021, 1028, 1055, 1021, 937, 1014, 991, 988, 948, 1024, 1013, 1039], [1041, 962, 1029, 954, 996, 986, 965, 1008, 935, 970, 987, 1084, 1033, 980, 961, 1027, 1042, 1043, 1013, 981, 1012, 968, 1018, 1005, 1019, 981, 987, 976, 1028, 1013, 995, 1034, 1033, 1049, 992, 984, 970, 934, 961, 1047, 1008, 923, 1002, 1001, 998, 1007, 973, 977, 984, 978, 946, 991, 992, 968, 953, 1001, 987, 1004, 975, 991, 1002, 1018, 1041, 1029, 1033, 1002, 962, 986, 1036, 985, 983, 962, 1014, 1023, 998, 1001, 988, 1060, 972, 964, 1024, 1022, 998, 1041, 1026, 1047, 957, 979, 1005, 1030, 982, 1009, 1041, 1029, 1037, 999, 978, 1010, 963, 976, 996, 1037, 1014, 991, 963, 1006, 976, 1034, 1020, 932, 1002, 1003, 988, 1007, 1038, 1027, 1036, 1002, 979, 1017, 1020, 972, 975, 1020, 1000, 971, 1029, 1002, 943, 1068, 1010, 963, 981, 1014, 969, 972, 998, 982, 983, 1008, 1029, 1019, 1022, 979, 980, 1006, 987, 1060, 937, 1016, 1024, 954, 969, 942, 1017, 1027, 1031, 964, 1011, 986, 956, 940, 1007, 979, 976, 994, 1047, 966, 1065, 949, 967, 958, 984, 1013, 1001, 978, 1062, 980, 1012, 1015, 982, 1019, 1024, 949, 982, 994, 942, 1026, 965, 975, 989, 972, 996, 1023, 946, 955, 973, 971, 957, 976, 1034, 998, 986, 1011, 1068, 901, 1022, 1029, 989, 963, 1042, 965, 973, 1033, 1011, 1044, 1037, 975, 969, 993, 999, 1031, 1011, 1011, 1058, 963, 995, 967, 995, 1027, 1049, 1026, 996, 1001, 1029, 975, 978, 1002, 1044, 998, 935, 1030, 970, 1005, 1032, 1026, 972, 1003, 1011, 962, 1050, 1008, 1021, 1001, 1027, 948], [1032, 1018, 1001, 994, 985, 964, 998, 967, 974, 992, 977, 981, 993, 994, 998, 1013, 994, 960, 985, 1002, 995, 935, 980, 1002, 990, 910, 1003, 974, 985, 1033, 1049, 976, 950, 986, 1005, 1017, 965, 1043, 1043, 1091, 1000, 975, 1033, 1010, 1005, 1031, 973, 1029, 1001, 964, 1054, 1033, 991, 1011, 970, 1016, 1064, 1029, 1041, 1030, 1007, 961, 964, 968, 1050, 1056, 993, 992, 1008, 1026, 993, 968, 954, 999, 991, 984, 1000, 961, 996, 1040, 982, 1012, 1022, 974, 955, 1027, 977, 951, 1000, 1014, 963, 989, 1026, 1046, 989, 1037, 1016, 1002, 1033, 949, 987, 1002, 1008, 944, 984, 982, 1030, 1010, 991, 1043, 1045, 991, 1060, 1016, 1020, 978, 969, 987, 966, 998, 951, 979, 982, 996, 1036, 970, 1047, 1014, 966, 1047, 986, 975, 1037, 949, 1023, 1033, 1007, 967, 1045, 1032, 995, 1019, 1021, 1018, 1005, 984, 1027, 1016, 1012, 1020, 1004, 1072, 1013, 1060, 1035, 951, 990, 978, 1025, 994, 946, 1006, 1015, 1008, 1008, 991, 1013, 1018, 1000, 1039, 1013, 1004, 1017, 1047, 992, 988, 949, 999, 1002, 1030, 1006, 1011, 1022, 967, 975, 1043, 1023, 1017, 939, 1046, 1005, 965, 981, 1042, 1025, 1021, 1011, 1055, 1056, 1028, 998, 1004, 993, 992, 997, 1042, 978, 989, 1018, 980, 965, 1003, 923, 988, 1011, 955, 1013, 954, 949, 977, 1016, 1069, 1047, 1034, 924, 1054, 1001, 987, 978, 1002, 979, 978, 999, 1039, 974, 983, 1042, 978, 1016, 1026, 1008, 967, 1033, 1016, 969, 1023, 968, 1026, 994, 1001, 1041, 978, 1001, 1034, 991, 1002], [1004, 994, 1006, 973, 1010, 1060, 967, 1042, 1002, 999, 960, 1014, 1023, 989, 980, 1005, 987, 985, 995, 993, 972, 1027, 1024, 1004, 990, 1022, 1006, 1047, 973, 1053, 1017, 1015, 982, 1001, 1028, 965, 984, 1023, 993, 997, 998, 979, 974, 1016, 962, 1005, 1008, 1062, 951, 957, 1008, 996, 986, 1012, 1035, 980, 1023, 1008, 989, 1075, 974, 998, 951, 1039, 1008, 1017, 959, 1019, 952, 1019, 966, 1031, 1031, 931, 1027, 1032, 1008, 991, 1036, 1004, 956, 1042, 1031, 1035, 986, 965, 968, 961, 1029, 1042, 975, 978, 994, 1045, 995, 998, 1017, 949, 1025, 930, 938, 971, 997, 1018, 996, 1007, 952, 979, 981, 959, 985, 1051, 988, 991, 983, 998, 1024, 1017, 937, 1012, 1023, 1008, 1040, 956, 996, 955, 949, 995, 1036, 1022, 965, 976, 957, 991, 985, 977, 998, 982, 1003, 990, 1029, 989, 1027, 1081, 993, 998, 1002, 981, 1005, 998, 958, 1049, 1059, 963, 1005, 916, 958, 1006, 1019, 1028, 1011, 998, 1024, 1006, 997, 953, 1027, 977, 1017, 948, 1009, 1004, 982, 1006, 970, 1088, 995, 998, 995, 1018, 958, 940, 1008, 1078, 1026, 935, 982, 1021, 973, 997, 1007, 1014, 959, 963, 1020, 995, 1047, 1021, 1017, 1020, 1060, 1017, 1003, 1060, 994, 1002, 976, 1026, 976, 990, 982, 1051, 967, 1011, 1014, 1019, 991, 969, 1053, 1048, 966, 1030, 996, 1027, 990, 1096, 984, 1013, 1007, 993, 981, 1020, 989, 1032, 972, 1033, 938, 993, 1027, 1012, 1010, 1010, 967, 993, 994, 985, 985, 915, 1052, 969, 1045, 1014, 936, 1047, 962, 994], [943, 1005, 1022, 1068, 943, 998, 1049, 1035, 1006, 1009, 1002, 1029, 967, 982, 1028, 986, 982, 1053, 996, 938, 1014, 1029, 962, 998, 1025, 973, 1054, 993, 1022, 1064, 996, 1084, 988, 1029, 997, 953, 1015, 981, 1013, 941, 962, 1028, 974, 1009, 988, 974, 967, 992, 1018, 1000, 981, 1023, 1003, 1011, 982, 974, 981, 1000, 1016, 1038, 986, 991, 954, 990, 1006, 1011, 1002, 979, 1007, 1034, 1077, 960, 1027, 1006, 984, 977, 1008, 1040, 955, 1024, 1013, 996, 1022, 1037, 1005, 1044, 1030, 1068, 971, 997, 954, 998, 1010, 988, 1022, 1013, 972, 1018, 972, 1012, 988, 1016, 991, 1031, 964, 1009, 999, 973, 1028, 1031, 1014, 905, 988, 962, 1016, 991, 965, 1006, 1008, 957, 992, 993, 1024, 990, 981, 964, 991, 1004, 980, 1022, 1008, 994, 1024, 1015, 999, 1012, 972, 979, 990, 1002, 974, 1027, 1062, 1042, 970, 978, 984, 1015, 998, 1007, 988, 999, 986, 1001, 1000, 1023, 1024, 1005, 1006, 1028, 1018, 1054, 974, 1042, 956, 1012, 1023, 1002, 990, 965, 1039, 1003, 957, 990, 1030, 948, 1044, 980, 971, 981, 947, 968, 1044, 944, 1006, 992, 952, 957, 1022, 1002, 1028, 995, 993, 1048, 1009, 1085, 993, 1030, 1003, 1006, 1016, 1014, 997, 1011, 1006, 985, 1019, 1055, 1032, 1018, 1011, 987, 997, 995, 1006, 1026, 977, 967, 996, 989, 953, 1012, 972, 1001, 1034, 1026, 1020, 1020, 1011, 980, 953, 1017, 979, 1007, 977, 1014, 1019, 984, 1006, 1007, 1050, 984, 978, 998, 1066, 1041, 1016, 1000, 938, 973, 976, 1015, 1045, 1006, 1018, 1010], [962, 1017, 969, 983, 982, 964, 1012, 999, 973, 1006, 982, 975, 1027, 1041, 1030, 955, 926, 958, 1013, 990, 975, 1004, 1026, 1004, 989, 1027, 1017, 997, 1037, 964, 1096, 1033, 959, 986, 975, 988, 988, 1027, 957, 1003, 975, 1026, 1015, 1031, 998, 961, 966, 1016, 981, 947, 995, 987, 996, 994, 992, 953, 977, 1006, 992, 1032, 965, 1015, 959, 1015, 1000, 1071, 983, 1014, 987, 1021, 1038, 989, 1074, 1007, 1048, 1027, 1010, 1013, 996, 1031, 960, 1002, 998, 988, 1041, 1038, 1062, 1028, 1024, 985, 1027, 973, 969, 1000, 1013, 995, 1070, 1042, 998, 1026, 1002, 1016, 986, 995, 990, 1003, 1004, 1036, 974, 997, 1004, 1032, 1022, 990, 990, 958, 1024, 1041, 1015, 1046, 1037, 971, 1019, 948, 990, 993, 1033, 999, 966, 1010, 985, 1019, 1023, 1009, 1005, 997, 1039, 1030, 912, 928, 1014, 992, 986, 1006, 996, 1033, 1022, 993, 984, 994, 1066, 994, 1033, 1038, 987, 987, 937, 1014, 953, 999, 961, 995, 1027, 1066, 1014, 988, 972, 964, 1085, 1005, 995, 1002, 991, 1050, 1005, 990, 972, 1009, 1002, 990, 998, 1025, 979, 1014, 976, 1020, 1033, 1003, 1031, 1017, 989, 992, 954, 1053, 1031, 986, 992, 1016, 968, 949, 970, 987, 967, 980, 1035, 965, 1014, 968, 1048, 1011, 988, 972, 958, 1009, 1016, 964, 961, 999, 1004, 1010, 1027, 974, 954, 1040, 985, 991, 967, 993, 981, 963, 979, 1029, 1011, 1014, 967, 1036, 985, 945, 1014, 952, 1000, 1015, 997, 949, 970, 1008, 995, 1029, 1034, 1005, 1032, 973, 973, 1000, 1017, 958], [1006, 977, 1004, 1035, 1005, 1034, 1015, 1036, 950, 962, 973, 992, 1012, 1013, 1008, 1065, 1045, 1055, 948, 981, 1012, 987, 990, 949, 1001, 1012, 994, 986, 985, 1011, 984, 991, 996, 990, 1069, 959, 990, 1044, 1011, 1020, 1030, 1003, 948, 1042, 936, 1032, 1038, 992, 1004, 980, 1026, 1008, 1022, 1064, 1023, 992, 1019, 1026, 1012, 998, 1021, 1038, 989, 1002, 976, 1013, 1036, 987, 905, 991, 1008, 1004, 1001, 981, 1002, 998, 1067, 1005, 1016, 1000, 1021, 993, 986, 1022, 987, 1019, 1024, 989, 1002, 978, 1008, 1012, 1020, 989, 988, 964, 979, 1027, 1004, 1031, 1033, 930, 971, 1004, 1043, 1005, 1018, 1045, 994, 1073, 990, 1022, 1022, 1023, 1044, 971, 1048, 1015, 1052, 978, 1036, 984, 985, 945, 1015, 955, 1001, 993, 998, 987, 996, 968, 949, 975, 1035, 1016, 999, 1050, 1011, 1015, 937, 1007, 1004, 998, 1027, 1010, 1044, 975, 1085, 999, 997, 1006, 1015, 988, 1002, 979, 968, 1006, 1040, 1020, 1028, 1039, 1015, 996, 992, 954, 997, 1011, 975, 991, 1057, 994, 979, 943, 1009, 983, 990, 1000, 1026, 1026, 963, 995, 994, 991, 1018, 954, 1022, 1061, 1027, 972, 958, 1010, 1043, 1055, 1030, 985, 1019, 1022, 977, 992, 1012, 968, 987, 928, 1000, 965, 982, 1017, 1008, 1029, 1002, 1046, 998, 1008, 1030, 1021, 953, 1044, 982, 991, 982, 971, 1059, 1023, 983, 996, 1036, 1019, 998, 1039, 1012, 956, 1007, 1010, 995, 987, 1023, 1042, 1017, 977, 948, 1016, 985, 1006, 1029, 978, 1048, 1081, 1068, 1023, 994, 964, 986, 989, 989, 981], [957, 1004, 964, 1049, 1023, 994, 1022, 984, 1004, 967, 977, 1022, 991, 1019, 1012, 1044, 1017, 1001, 999, 1013, 992, 965, 958, 1005, 944, 1005, 1019, 1001, 996, 1000, 936, 986, 981, 990, 997, 1043, 1001, 1022, 1031, 969, 984, 1044, 1016, 978, 994, 1008, 949, 989, 970, 1034, 1025, 1036, 958, 981, 999, 988, 959, 950, 1042, 1020, 1003, 987, 974, 1029, 990, 1003, 989, 1022, 961, 1027, 1036, 1008, 995, 1023, 962, 1005, 983, 1022, 1045, 993, 1002, 1018, 1010, 1058, 1003, 980, 988, 1010, 962, 992, 1034, 1036, 1030, 1016, 1020, 986, 927, 982, 1047, 999, 972, 1050, 1012, 995, 920, 944, 971, 1025, 1015, 1004, 1019, 974, 1041, 1036, 991, 1043, 975, 929, 972, 1022, 995, 1058, 1024, 971, 960, 1018, 1005, 1028, 998, 948, 1025, 966, 991, 1027, 1008, 969, 977, 1064, 1012, 977, 1008, 997, 1000, 960, 1017, 1036, 990, 1011, 975, 978, 1036, 1047, 1042, 1012, 1031, 987, 943, 971, 1012, 976, 993, 1048, 1017, 1027, 932, 1020, 986, 949, 980, 1017, 1015, 952, 941, 1032, 997, 1024, 1060, 1005, 932, 1018, 1050, 1003, 1063, 990, 1051, 1014, 1043, 1001, 968, 996, 971, 964, 1023, 945, 990, 1006, 988, 985, 1008, 1003, 958, 1017, 1012, 1008, 996, 1015, 1044, 986, 947, 1000, 995, 983, 957, 1007, 969, 1066, 975, 1029, 1026, 998, 1025, 1020, 1050, 1038, 975, 964, 961, 1002, 1076, 1034, 975, 980, 995, 952, 1028, 1030, 979, 1028, 951, 1017, 960, 986, 1030, 1022, 1026, 902, 1015, 1026, 1018, 1034, 994, 1012, 960, 998, 1059, 957], [1007, 1005, 1020, 924, 1022, 999, 998, 1015, 956, 962, 940, 976, 1056, 989, 1008, 1047, 1034, 1000, 967, 1015, 958, 1029, 986, 1014, 979, 1037, 988, 1003, 985, 984, 1002, 1011, 1049, 948, 1013, 989, 1012, 1002, 963, 982, 977, 978, 1059, 995, 1045, 952, 938, 971, 999, 1013, 1082, 970, 1053, 1034, 1030, 981, 1024, 977, 1009, 1049, 940, 972, 981, 975, 1009, 1001, 987, 988, 995, 1019, 1007, 980, 1036, 954, 1016, 1005, 1074, 1022, 1018, 965, 970, 1018, 994, 993, 977, 1035, 1029, 1042, 1019, 1027, 983, 981, 986, 1004, 1007, 953, 986, 1026, 1008, 977, 980, 978, 1031, 1001, 976, 1054, 1002, 1021, 984, 1016, 1044, 1022, 972, 1003, 992, 1027, 1003, 1019, 1016, 1007, 1000, 999, 1006, 1028, 978, 1000, 1011, 1049, 1035, 1020, 953, 936, 972, 997, 996, 958, 999, 968, 1007, 996, 984, 985, 1047, 992, 1047, 980, 989, 1021, 1018, 1057, 1021, 974, 984, 1010, 1039, 974, 995, 984, 1040, 1015, 983, 1009, 975, 1000, 942, 939, 1030, 1030, 982, 1001, 1026, 1033, 997, 1049, 1016, 1049, 984, 1072, 1010, 1020, 1030, 1033, 1018, 1011, 971, 1039, 1009, 997, 1014, 959, 975, 1046, 1005, 987, 1003, 1068, 1019, 1001, 1033, 987, 1015, 935, 1052, 991, 991, 999, 1052, 969, 959, 998, 983, 1000, 1012, 1050, 898, 1012, 985, 983, 1005, 1010, 981, 944, 1025, 1018, 1019, 984, 1016, 1011, 937, 992, 993, 1011, 1014, 974, 1027, 958, 1001, 977, 998, 914, 974, 986, 1043, 1014, 981, 961, 997, 960, 1095, 991, 987, 1022, 955, 1040, 970, 1037], [1018, 1015, 1008, 991, 1013, 951, 992, 1003, 985, 1003, 978, 930, 1044, 1019, 1016, 981, 991, 1033, 985, 969, 1045, 916, 1042, 1033, 1002, 995, 995, 1026, 1049, 1007, 974, 961, 919, 1000, 945, 946, 995, 992, 1055, 981, 987, 1025, 975, 992, 952, 1034, 949, 1014, 1014, 1015, 1012, 991, 987, 985, 1008, 945, 1023, 975, 1001, 998, 930, 957, 1023, 1027, 972, 949, 1062, 1051, 1027, 979, 957, 1011, 973, 1014, 1065, 1003, 989, 1014, 1131, 1000, 987, 1036, 1009, 1035, 991, 1027, 1027, 991, 1010, 990, 954, 942, 980, 974, 1038, 1072, 981, 1027, 1014, 1013, 980, 1000, 980, 972, 992, 961, 966, 995, 1006, 964, 1026, 981, 968, 980, 992, 1015, 1054, 931, 1023, 968, 1029, 949, 956, 1020, 1034, 1039, 932, 1014, 962, 1030, 1074, 987, 1032, 935, 993, 1024, 1029, 976, 978, 985, 921, 941, 974, 983, 1038, 1021, 1017, 1038, 999, 988, 1072, 1000, 1024, 982, 972, 937, 1000, 995, 1048, 995, 981, 961, 1020, 964, 1019, 927, 975, 1077, 962, 1009, 968, 1024, 1059, 1038, 996, 993, 1011, 1008, 1033, 950, 958, 1058, 971, 1014, 1025, 1020, 990, 1007, 1003, 937, 944, 993, 959, 1043, 1010, 1032, 1037, 992, 957, 1013, 976, 1004, 1029, 1013, 924, 1026, 955, 1023, 999, 987, 974, 1004, 1002, 943, 940, 976, 975, 1041, 985, 978, 982, 990, 1028, 981, 1018, 1020, 968, 1008, 1058, 973, 1012, 995, 925, 1017, 1053, 990, 1014, 954, 995, 961, 1016, 1007, 983, 1061, 1042, 1005, 914, 1009, 1032, 1025, 1045, 1048, 945, 1006, 995, 992], [966, 1030, 963, 1039, 1016, 1021, 1051, 1000, 1012, 1000, 1014, 1063, 1017, 1085, 952, 1017, 991, 1034, 1002, 1003, 1001, 974, 1004, 1028, 970, 939, 974, 1015, 987, 960, 1039, 1011, 963, 966, 1024, 1070, 965, 1013, 967, 999, 978, 992, 968, 987, 1019, 946, 1037, 991, 964, 985, 971, 1022, 1014, 1041, 1003, 978, 1041, 987, 992, 989, 1026, 963, 992, 1035, 1026, 1014, 982, 1034, 1009, 991, 938, 983, 1029, 1027, 1001, 977, 1006, 1011, 1006, 954, 1015, 1056, 1037, 965, 966, 1065, 1012, 992, 966, 1022, 1014, 1000, 1058, 957, 999, 999, 988, 1008, 986, 930, 1002, 986, 1005, 1048, 998, 1041, 1020, 1051, 1016, 1007, 966, 1020, 1000, 1020, 946, 937, 1016, 987, 1017, 1028, 977, 1075, 1033, 1033, 973, 932, 1004, 981, 1011, 1045, 1015, 1007, 1018, 1036, 986, 1008, 971, 1016, 993, 1001, 1015, 974, 1038, 943, 1009, 1004, 979, 1026, 1006, 1022, 978, 1042, 1052, 994, 970, 1014, 1021, 1019, 984, 999, 1023, 994, 965, 987, 1025, 1041, 987, 975, 961, 1025, 991, 1026, 1036, 1004, 1029, 1003, 961, 993, 927, 1083, 1025, 1018, 1030, 1010, 989, 1019, 1017, 988, 987, 1018, 997, 999, 955, 1003, 983, 1024, 1031, 997, 1038, 995, 1019, 1030, 998, 963, 1003, 1016, 1020, 1018, 981, 990, 1008, 1021, 1001, 994, 1020, 1018, 954, 980, 982, 939, 1028, 920, 1001, 1017, 961, 1005, 1060, 959, 1016, 998, 996, 953, 1024, 952, 1017, 1038, 992, 1016, 949, 985, 1068, 1002, 964, 1026, 1008, 999, 991, 992, 1012, 991, 1048, 1016, 1037, 1007, 953, 984], [991, 968, 996, 1027, 1028, 1023, 1027, 964, 1017, 1040, 963, 954, 972, 1023, 1031, 1037, 982, 980, 989, 965, 1008, 1022, 994, 1003, 955, 1031, 1027, 953, 1053, 969, 1001, 1002, 1064, 1024, 970, 992, 972, 1021, 1032, 976, 959, 1014, 1000, 933, 984, 1052, 993, 1018, 1041, 1060, 958, 935, 997, 1000, 1047, 1019, 987, 1000, 991, 1026, 1006, 986, 997, 959, 1036, 979, 1014, 941, 974, 972, 965, 1018, 980, 1019, 1021, 982, 996, 1014, 1038, 999, 1005, 991, 1025, 1006, 1023, 995, 1007, 1027, 1023, 956, 1043, 1047, 993, 986, 1000, 1015, 993, 984, 1009, 1006, 956, 1014, 1015, 985, 1035, 1022, 963, 936, 1023, 979, 978, 993, 1013, 1058, 988, 1004, 1015, 955, 982, 1011, 973, 1014, 1008, 982, 932, 958, 950, 922, 969, 980, 984, 1038, 985, 990, 1008, 981, 1001, 976, 1041, 965, 1017, 960, 963, 1023, 964, 940, 1006, 1042, 959, 1012, 999, 1003, 993, 1001, 1034, 1065, 1012, 1024, 1007, 986, 987, 917, 1029, 1023, 1003, 1025, 1005, 1031, 1019, 1062, 1006, 912, 1014, 995, 1014, 1034, 1026, 962, 1059, 1035, 1028, 1006, 1055, 1017, 976, 997, 1026, 1038, 969, 977, 1008, 1028, 1024, 943, 908, 1013, 977, 1027, 962, 958, 988, 1040, 993, 946, 1029, 982, 984, 1024, 1002, 1016, 933, 953, 1012, 1023, 978, 1053, 970, 1002, 987, 997, 975, 984, 1006, 1032, 975, 1062, 1001, 1020, 1004, 991, 1038, 1052, 988, 981, 959, 1075, 954, 973, 1018, 952, 974, 967, 1021, 1015, 938, 1023, 1000, 1024, 1015, 952, 1031, 1030, 985, 1012, 1042, 1021], [948, 1020, 1023, 1004, 1009, 1003, 985, 975, 1033, 952, 977, 983, 979, 1056, 1045, 1008, 1000, 1009, 962, 1033, 972, 927, 989, 1007, 995, 1019, 959, 943, 1033, 1022, 965, 1022, 1000, 1031, 976, 976, 1023, 1004, 1028, 1035, 1064, 982, 990, 954, 960, 1018, 929, 1047, 1021, 990, 990, 995, 957, 985, 982, 972, 965, 959, 993, 1052, 947, 1043, 999, 989, 976, 1059, 1055, 1027, 1005, 1005, 1048, 1018, 1004, 1020, 1025, 960, 1000, 998, 1019, 980, 951, 1042, 1072, 1066, 961, 970, 1006, 1015, 985, 998, 999, 1050, 971, 1007, 961, 981, 941, 962, 967, 1006, 961, 991, 1012, 1059, 1053, 950, 1024, 919, 998, 1067, 1005, 1002, 983, 1038, 1026, 1046, 984, 971, 964, 1022, 1010, 969, 970, 993, 1022, 997, 997, 981, 1066, 995, 979, 980, 984, 1028, 984, 1019, 1090, 943, 1073, 998, 983, 996, 1108, 1102, 1031, 1031, 1024, 1056, 1035, 1015, 988, 1045, 988, 1000, 973, 1023, 987, 1000, 1023, 980, 971, 978, 1038, 1003, 985, 964, 968, 1058, 1010, 1035, 1034, 1008, 908, 926, 1004, 1005, 996, 1036, 967, 1033, 934, 1030, 936, 1025, 972, 1002, 1071, 997, 988, 962, 983, 1002, 1006, 1036, 1009, 1019, 974, 959, 1036, 989, 1013, 1012, 953, 981, 994, 954, 996, 993, 933, 987, 1037, 938, 972, 1019, 990, 979, 1003, 1020, 969, 959, 992, 988, 963, 1030, 959, 1030, 992, 992, 1004, 1011, 947, 964, 1018, 977, 948, 1018, 1023, 1031, 946, 967, 995, 966, 1023, 1016, 994, 947, 1029, 1046, 1012, 1009, 1014, 1038, 1060, 994, 1062, 1053], [974, 999, 964, 953, 973, 996, 979, 977, 1002, 1039, 1018, 962, 988, 956, 1013, 1036, 1036, 1049, 1051, 964, 1034, 1014, 1019, 996, 989, 1058, 1012, 1002, 1009, 1000, 965, 995, 997, 1017, 999, 975, 981, 972, 1013, 989, 1035, 1018, 1023, 992, 972, 994, 967, 1033, 985, 1040, 1011, 962, 995, 996, 976, 1027, 1003, 1023, 1010, 1003, 1011, 985, 972, 971, 1001, 1017, 967, 972, 987, 1042, 1002, 966, 1063, 940, 998, 1015, 1024, 1027, 956, 999, 951, 968, 970, 972, 969, 1072, 931, 894, 974, 986, 1061, 1013, 1020, 967, 1007, 988, 995, 988, 984, 1018, 988, 1034, 997, 1047, 970, 995, 1026, 1024, 971, 998, 1051, 1020, 942, 1015, 989, 996, 996, 941, 989, 977, 986, 977, 989, 999, 943, 996, 1035, 1007, 999, 1023, 997, 928, 1044, 1007, 988, 987, 987, 1029, 1074, 936, 1036, 1003, 1004, 1027, 940, 977, 992, 958, 1005, 972, 955, 980, 1006, 937, 984, 969, 990, 966, 942, 980, 998, 1029, 1002, 976, 1046, 944, 969, 1026, 1017, 959, 972, 1011, 962, 1009, 1074, 1028, 1006, 991, 992, 951, 1001, 1012, 986, 1013, 1007, 962, 1017, 964, 1006, 1018, 989, 921, 981, 902, 995, 991, 1020, 1034, 1015, 1024, 1021, 1016, 949, 993, 1028, 1021, 999, 944, 976, 960, 987, 1012, 1009, 1032, 1030, 1023, 1007, 975, 985, 973, 1013, 1008, 975, 1012, 971, 911, 1012, 991, 1060, 1011, 959, 1034, 1010, 993, 1028, 993, 976, 987, 943, 987, 1029, 920, 1013, 1044, 970, 944, 987, 1000, 1018, 1000, 1012, 986, 1013, 1005, 972, 1015], [1000, 1033, 966, 948, 995, 972, 987, 1026, 1018, 958, 988, 1048, 974, 994, 919, 1029, 995, 1012, 1034, 1017, 978, 1047, 1050, 956, 1001, 1048, 1018, 1020, 965, 1013, 960, 1046, 989, 988, 1054, 997, 987, 981, 988, 1058, 1038, 1029, 1007, 986, 1002, 972, 934, 1054, 1026, 1025, 1015, 1040, 997, 1023, 1002, 979, 988, 988, 990, 1025, 988, 990, 986, 1037, 992, 1049, 969, 986, 995, 1011, 1031, 962, 965, 990, 998, 1016, 937, 1018, 990, 993, 1023, 983, 999, 1030, 1022, 980, 972, 1001, 998, 1012, 1071, 961, 1048, 1109, 1041, 1010, 1048, 1028, 1027, 1004, 994, 954, 1017, 987, 995, 1009, 982, 986, 962, 984, 952, 972, 960, 1011, 939, 992, 1009, 1044, 1014, 1010, 1031, 1052, 1021, 991, 990, 964, 971, 963, 977, 1003, 977, 1033, 978, 1024, 1039, 1006, 975, 956, 950, 980, 999, 1073, 989, 987, 1042, 1046, 1014, 964, 1046, 973, 983, 958, 965, 1008, 943, 998, 1031, 993, 1020, 1026, 1015, 1025, 1001, 995, 1001, 1021, 1050, 991, 960, 1000, 996, 1000, 994, 1022, 950, 987, 1004, 1039, 1012, 1041, 1006, 979, 999, 974, 997, 981, 1024, 1016, 1005, 928, 999, 1033, 1047, 1017, 948, 973, 1022, 1048, 1013, 1081, 1012, 984, 1015, 1004, 981, 978, 1014, 1015, 1022, 988, 967, 996, 982, 1024, 1023, 1013, 997, 1004, 995, 1013, 947, 1002, 1025, 964, 977, 1022, 992, 996, 1009, 1005, 981, 984, 1002, 991, 944, 999, 1033, 1056, 1012, 1015, 974, 1005, 1042, 991, 957, 976, 996, 1013, 937, 983, 999, 1021, 969, 963, 1034, 1039], [925, 982, 972, 1011, 1005, 995, 957, 963, 1001, 1006, 981, 1047, 1008, 1012, 1041, 910, 970, 1021, 990, 959, 996, 934, 976, 971, 1041, 1033, 1009, 1036, 1004, 1065, 933, 962, 983, 973, 1060, 1058, 1040, 1055, 1011, 988, 1047, 1002, 1064, 1028, 1118, 980, 965, 1004, 1029, 1009, 980, 999, 993, 1038, 1001, 994, 939, 1017, 1011, 981, 1010, 966, 1049, 1025, 990, 1034, 990, 1018, 993, 1076, 1000, 1011, 978, 989, 1006, 1037, 946, 1010, 1026, 1055, 974, 1014, 967, 1002, 940, 1010, 940, 999, 971, 1013, 1031, 1073, 925, 1065, 958, 999, 1017, 1016, 955, 1022, 1024, 1019, 914, 1016, 961, 961, 980, 1006, 1028, 1017, 1025, 974, 1029, 977, 945, 969, 984, 992, 996, 1016, 975, 1004, 984, 1053, 964, 1010, 986, 1032, 968, 964, 1065, 1023, 1008, 976, 1011, 1036, 957, 983, 1037, 1006, 1022, 1013, 1016, 963, 1041, 938, 964, 1012, 967, 920, 970, 972, 1006, 992, 987, 1014, 1017, 985, 999, 1020, 1015, 964, 977, 1006, 954, 1064, 991, 1023, 981, 997, 922, 994, 958, 1037, 995, 1018, 963, 1023, 1066, 951, 998, 1046, 978, 942, 994, 977, 1009, 1033, 917, 953, 1051, 975, 1042, 971, 1017, 984, 994, 979, 1039, 1007, 1030, 1003, 1036, 987, 1034, 1009, 1012, 1037, 1015, 1068, 984, 1055, 998, 934, 958, 1011, 981, 1003, 1008, 981, 999, 982, 1011, 974, 1032, 982, 955, 1033, 967, 1008, 980, 997, 1016, 1008, 1003, 1003, 1025, 974, 961, 1006, 935, 1002, 1050, 970, 1052, 978, 1013, 998, 982, 967, 985, 1015, 1009, 1006, 996, 991], [982, 1010, 1034, 1015, 992, 1055, 974, 1049, 1017, 1037, 1014, 1002, 1026, 968, 991, 994, 1031, 1002, 942, 923, 952, 984, 951, 998, 1031, 943, 1000, 1000, 1005, 987, 1036, 1034, 1048, 1013, 996, 1051, 990, 1006, 1027, 1005, 971, 1014, 999, 1032, 932, 1003, 1023, 1033, 989, 1028, 1040, 1037, 967, 1016, 982, 973, 962, 1035, 1028, 991, 998, 1011, 992, 1037, 985, 993, 1020, 1004, 994, 1084, 1035, 1000, 1010, 944, 984, 979, 994, 1053, 985, 955, 1014, 971, 996, 989, 1047, 1019, 966, 1066, 1067, 1008, 996, 989, 1024, 1016, 1025, 970, 1036, 1006, 1011, 955, 946, 1027, 1001, 990, 1040, 1001, 1040, 1044, 1004, 967, 989, 912, 992, 1028, 954, 1036, 1017, 1029, 1031, 986, 988, 985, 1042, 967, 986, 996, 1035, 974, 952, 1038, 1005, 1008, 986, 973, 992, 1066, 1008, 1011, 1052, 1027, 971, 969, 994, 1024, 1004, 1012, 1021, 975, 1021, 1007, 990, 1010, 974, 1016, 1025, 1013, 974, 1027, 999, 1031, 974, 1004, 997, 966, 1015, 1013, 998, 995, 964, 995, 1018, 972, 981, 997, 1015, 978, 975, 1015, 1053, 1022, 961, 1002, 990, 962, 1019, 995, 1031, 998, 1029, 1019, 1018, 973, 1004, 1035, 986, 1017, 1008, 986, 984, 975, 1018, 978, 952, 946, 1005, 980, 963, 938, 1037, 995, 974, 958, 1030, 1005, 988, 972, 999, 1057, 1052, 990, 984, 1033, 980, 965, 1060, 992, 975, 1016, 998, 985, 974, 985, 998, 999, 979, 1011, 979, 965, 1051, 1010, 1007, 971, 992, 1014, 1041, 977, 1068, 1029, 1058, 1029, 999, 970, 997, 946, 1014, 1045], [987, 1012, 1010, 969, 985, 1068, 1025, 952, 979, 976, 1025, 976, 1014, 966, 997, 956, 962, 1074, 1059, 1008, 1012, 971, 971, 994, 1057, 954, 992, 993, 997, 1005, 998, 1038, 1006, 1038, 997, 1007, 956, 967, 977, 1005, 934, 1029, 1034, 1004, 954, 1028, 961, 1049, 1035, 1041, 1015, 994, 958, 983, 990, 987, 1026, 1027, 1045, 957, 1032, 1034, 946, 984, 1018, 990, 1046, 990, 999, 994, 1005, 1048, 989, 1020, 1019, 940, 1041, 953, 1054, 995, 1003, 990, 957, 1015, 981, 1004, 978, 1010, 1027, 984, 984, 1013, 968, 1001, 1044, 1014, 1018, 994, 1049, 933, 1104, 1012, 960, 1008, 1031, 1008, 1049, 985, 988, 983, 1029, 975, 1032, 1023, 979, 981, 1004, 995, 985, 991, 989, 1025, 998, 981, 947, 968, 992, 1034, 984, 951, 969, 1048, 911, 957, 917, 911, 1003, 1010, 1000, 972, 1049, 1006, 958, 966, 965, 1009, 986, 982, 1038, 1038, 951, 962, 977, 985, 993, 1007, 977, 941, 1005, 1019, 997, 989, 957, 1060, 999, 988, 975, 1021, 990, 987, 1013, 959, 1060, 1064, 997, 996, 1041, 1010, 1039, 953, 1043, 1038, 1007, 990, 944, 952, 987, 980, 989, 1017, 974, 1015, 1043, 989, 951, 1023, 1012, 1015, 1027, 1008, 997, 993, 999, 1007, 960, 1000, 1018, 996, 1016, 1004, 1011, 952, 970, 1048, 1003, 1040, 1056, 987, 1020, 1011, 1032, 974, 972, 972, 1000, 970, 1025, 1002, 1009, 1047, 957, 1009, 1002, 976, 979, 948, 1006, 1059, 1008, 996, 1026, 1052, 1004, 1031, 995, 940, 978, 1002, 1025, 952, 1006, 1021, 969, 1041, 1045, 1021], [1032, 1003, 997, 1021, 988, 1044, 998, 976, 982, 949, 1021, 986, 1078, 1004, 971, 977, 1006, 1044, 1003, 961, 969, 1002, 952, 983, 1001, 1054, 948, 948, 969, 958, 1003, 975, 973, 979, 950, 995, 1072, 996, 1034, 1016, 1027, 998, 988, 1020, 1080, 1014, 985, 959, 1026, 974, 969, 988, 1079, 1029, 948, 958, 950, 1018, 1024, 927, 1009, 972, 1043, 990, 992, 998, 1020, 1008, 1030, 1022, 1048, 1062, 983, 1001, 1014, 1065, 983, 1002, 1034, 989, 1030, 984, 927, 1030, 995, 1017, 1041, 1022, 1018, 982, 1015, 970, 957, 1038, 1039, 1085, 1045, 960, 940, 1046, 992, 1003, 1017, 995, 964, 1063, 1003, 958, 986, 993, 1022, 979, 1003, 1052, 1019, 1035, 989, 1020, 1007, 1069, 1021, 1034, 1032, 1001, 950, 946, 969, 992, 1020, 1046, 1007, 1034, 1016, 1021, 971, 1016, 959, 1009, 1015, 1045, 1022, 983, 982, 1005, 1011, 1004, 1060, 984, 1042, 952, 1039, 961, 987, 985, 1015, 1003, 1002, 988, 984, 1006, 957, 1025, 973, 989, 1013, 1003, 985, 1013, 1019, 941, 1050, 1037, 965, 1050, 1013, 1035, 1027, 1073, 962, 981, 988, 987, 986, 986, 998, 982, 995, 1075, 972, 1067, 975, 979, 1008, 1001, 1005, 1029, 1010, 1043, 1068, 1039, 975, 1012, 1029, 1072, 982, 1013, 1031, 1021, 982, 1000, 954, 1020, 983, 1000, 1009, 1005, 1051, 1040, 1026, 964, 965, 981, 996, 997, 1032, 1024, 1022, 964, 1021, 979, 941, 1008, 941, 998, 1035, 1060, 1031, 1024, 1020, 1047, 1069, 982, 1042, 994, 977, 990, 1082, 975, 966, 926, 982, 967, 955, 989, 965, 985], [974, 986, 1053, 989, 982, 966, 957, 967, 998, 1009, 972, 1011, 977, 1020, 1061, 939, 1033, 1086, 1003, 1007, 1027, 958, 1070, 983, 1024, 1024, 1019, 975, 1005, 1017, 954, 1039, 979, 1020, 997, 963, 956, 974, 1030, 988, 1010, 967, 1046, 1017, 1003, 985, 995, 1040, 976, 997, 991, 1048, 1043, 1010, 1035, 969, 965, 1063, 957, 1021, 1050, 1066, 978, 985, 1008, 1005, 986, 971, 962, 985, 1038, 1037, 1040, 1015, 982, 1077, 1017, 1011, 983, 1023, 1035, 978, 1011, 1013, 1027, 993, 1017, 1042, 1012, 1029, 1012, 1031, 983, 952, 943, 996, 998, 980, 1058, 1006, 1042, 1000, 960, 985, 927, 992, 990, 983, 965, 985, 1023, 996, 970, 982, 942, 948, 1028, 978, 1023, 967, 964, 989, 991, 1061, 953, 999, 1002, 990, 963, 1001, 1004, 1021, 968, 1037, 958, 944, 956, 954, 951, 1031, 1022, 951, 1031, 964, 995, 1030, 1038, 1047, 968, 1009, 1025, 1014, 1029, 1034, 1023, 953, 974, 1048, 1016, 975, 1007, 1067, 958, 1005, 925, 1041, 1058, 1085, 1006, 970, 957, 975, 966, 995, 1018, 1043, 1029, 1058, 1007, 990, 1006, 947, 977, 990, 989, 1000, 1017, 965, 1032, 987, 998, 1041, 976, 1028, 1103, 1037, 984, 1024, 1035, 1024, 1007, 1053, 961, 958, 964, 1019, 1043, 970, 1050, 1018, 963, 955, 1035, 1019, 1080, 981, 1027, 1019, 966, 994, 1022, 1014, 1014, 964, 991, 1040, 1029, 1023, 1033, 936, 939, 980, 990, 997, 931, 1019, 978, 988, 973, 1016, 995, 968, 958, 986, 967, 978, 978, 1043, 1020, 1044, 987, 968, 947, 977, 1028, 996], [990, 988, 933, 1016, 978, 1038, 1010, 1049, 1035, 1041, 994, 987, 1008, 1055, 978, 927, 969, 977, 1001, 1047, 974, 1019, 1035, 956, 1016, 1018, 1015, 1005, 1020, 1025, 1011, 1048, 944, 970, 1043, 993, 979, 1026, 1016, 968, 992, 1051, 1054, 949, 1034, 996, 983, 1027, 978, 974, 1059, 992, 1011, 981, 991, 981, 998, 985, 1014, 1025, 969, 1015, 1015, 982, 959, 967, 1036, 954, 951, 985, 1013, 978, 1006, 997, 1030, 912, 1025, 1051, 997, 980, 970, 954, 975, 953, 947, 957, 936, 972, 1021, 1067, 994, 1014, 994, 975, 1012, 989, 993, 1036, 1025, 1003, 1082, 980, 991, 965, 1016, 1075, 1004, 1028, 995, 1057, 987, 1014, 990, 961, 1015, 1004, 985, 942, 999, 1014, 984, 1062, 1033, 971, 1025, 977, 968, 980, 1032, 1070, 1008, 982, 990, 950, 1015, 1020, 1008, 984, 1018, 930, 1018, 944, 958, 973, 1010, 1076, 1000, 982, 1015, 1030, 1056, 1002, 1008, 1000, 1007, 977, 941, 966, 1010, 1064, 962, 985, 974, 945, 1014, 1022, 952, 1029, 987, 988, 1013, 1032, 996, 981, 964, 1047, 990, 1032, 988, 994, 1013, 973, 1009, 988, 1039, 1023, 995, 1018, 1006, 949, 1012, 1062, 987, 913, 996, 1002, 1008, 961, 991, 1034, 953, 953, 1007, 988, 925, 990, 1039, 976, 985, 991, 1053, 1045, 1033, 1008, 940, 994, 971, 1013, 1001, 981, 977, 1014, 1005, 985, 1009, 1038, 948, 999, 971, 988, 1043, 1004, 1023, 1020, 961, 987, 1097, 970, 1003, 1000, 1049, 1005, 1011, 1050, 1033, 992, 986, 984, 993, 981, 943, 1016, 950, 1008, 1003, 986], [990, 1035, 966, 1048, 1009, 953, 995, 961, 1009, 1012, 993, 995, 1000, 1058, 1050, 982, 958, 1028, 961, 970, 1049, 1028, 997, 985, 1019, 981, 1012, 1020, 1016, 1007, 1016, 1023, 1018, 975, 978, 946, 988, 988, 962, 1013, 993, 986, 939, 988, 1076, 984, 1017, 999, 1009, 944, 1029, 1038, 996, 1051, 1017, 1016, 992, 966, 985, 966, 1006, 933, 1005, 1045, 1024, 1007, 993, 1062, 935, 981, 1048, 998, 994, 1009, 1015, 1033, 1024, 980, 990, 966, 1003, 1039, 963, 1056, 1032, 990, 1044, 948, 1069, 962, 991, 957, 1016, 944, 981, 987, 1002, 1069, 985, 974, 1034, 984, 966, 1037, 1018, 987, 990, 1021, 1092, 1029, 1040, 1011, 980, 995, 971, 1018, 991, 946, 993, 930, 993, 921, 972, 983, 1070, 1022, 980, 989, 1008, 1000, 962, 993, 991, 991, 985, 981, 1024, 1020, 961, 986, 997, 1024, 975, 1021, 1006, 1042, 1006, 984, 1027, 1003, 974, 976, 1048, 1005, 980, 977, 985, 985, 998, 1018, 994, 990, 1024, 980, 984, 1008, 1007, 1051, 1043, 1003, 952, 1041, 989, 1002, 996, 973, 966, 995, 1018, 953, 1013, 1020, 1009, 1022, 977, 990, 1015, 936, 1008, 1004, 974, 1026, 944, 987, 1074, 1042, 984, 945, 985, 1016, 1031, 973, 961, 1001, 974, 1030, 997, 955, 1016, 926, 999, 990, 933, 998, 963, 996, 986, 1027, 1071, 1016, 973, 1017, 949, 1039, 945, 983, 1008, 1019, 948, 1016, 991, 1024, 991, 1023, 933, 1011, 1032, 1021, 1018, 1085, 956, 964, 1084, 1010, 1050, 1013, 993, 1066, 1052, 1015, 983, 1043, 1030, 879, 1033, 1011], [1015, 981, 963, 1040, 1026, 956, 1005, 1040, 985, 1030, 1012, 977, 1000, 985, 983, 981, 927, 1050, 1036, 1012, 981, 1022, 1008, 1027, 990, 1005, 1007, 958, 982, 1025, 973, 953, 965, 965, 1036, 985, 1026, 1010, 972, 988, 966, 989, 1002, 1033, 976, 1052, 944, 1040, 1038, 1016, 979, 966, 993, 1012, 975, 1004, 975, 965, 1018, 974, 1064, 1002, 1002, 992, 1022, 977, 1019, 989, 947, 972, 997, 1018, 1030, 962, 1009, 1050, 1005, 972, 989, 1050, 1090, 979, 1026, 1036, 1022, 1018, 1006, 1007, 976, 1030, 970, 1033, 1027, 987, 1021, 1024, 1027, 1008, 973, 1025, 993, 976, 965, 1018, 987, 971, 1025, 995, 1021, 984, 1042, 958, 985, 954, 974, 1058, 1030, 1011, 990, 995, 963, 951, 998, 970, 1057, 1020, 1046, 945, 983, 986, 1034, 1040, 988, 944, 991, 998, 967, 962, 977, 957, 1048, 999, 1079, 985, 963, 1045, 1026, 1008, 989, 990, 1046, 970, 966, 947, 967, 990, 1004, 1017, 1027, 993, 959, 977, 993, 1015, 954, 961, 940, 975, 1003, 982, 1000, 1029, 1003, 1022, 993, 1008, 944, 995, 977, 1049, 1008, 972, 986, 1033, 1010, 956, 1049, 987, 966, 972, 1017, 965, 1055, 1000, 1006, 994, 1017, 983, 1031, 994, 1007, 989, 958, 979, 999, 976, 1001, 982, 1012, 951, 971, 1017, 976, 998, 1022, 976, 982, 1032, 990, 976, 1032, 982, 986, 939, 922, 981, 973, 1021, 1019, 1022, 1037, 1013, 1016, 984, 1033, 973, 982, 994, 989, 971, 985, 922, 988, 1056, 959, 972, 981, 992, 945, 994, 1055, 1036, 1073, 989, 1016, 1023], [997, 1036, 1040, 1000, 1046, 1017, 993, 969, 1002, 1049, 1063, 981, 998, 987, 1025, 1015, 1038, 1028, 961, 971, 1012, 980, 964, 1022, 1017, 975, 956, 998, 986, 1034, 977, 964, 1029, 986, 1044, 977, 1008, 1054, 1014, 974, 1009, 995, 987, 1006, 1003, 997, 986, 1016, 974, 1009, 961, 989, 1017, 1068, 1036, 1050, 1074, 949, 994, 1004, 966, 961, 1040, 950, 1035, 1033, 999, 1005, 1002, 998, 1002, 987, 973, 989, 1034, 1012, 979, 1037, 1042, 1032, 984, 1037, 1027, 1003, 972, 984, 965, 992, 1054, 995, 935, 1052, 981, 997, 974, 1014, 991, 1041, 959, 1039, 1034, 1030, 1066, 961, 956, 1019, 1043, 980, 981, 1035, 994, 957, 989, 979, 1005, 975, 1010, 994, 970, 1004, 982, 957, 997, 939, 1007, 973, 1038, 971, 982, 1011, 1025, 1027, 996, 1029, 954, 999, 1031, 912, 989, 1036, 932, 949, 1008, 1063, 1011, 959, 1024, 964, 1003, 1011, 1052, 1047, 1068, 1025, 986, 1044, 1008, 1024, 1054, 998, 957, 974, 1053, 972, 1040, 929, 975, 1025, 937, 985, 1029, 1028, 962, 979, 959, 1014, 967, 997, 1034, 1003, 989, 1022, 1014, 1002, 1019, 974, 1040, 1012, 1069, 998, 1047, 1027, 1002, 1035, 1005, 1051, 991, 1021, 1022, 1036, 997, 981, 1016, 973, 1021, 1049, 1027, 980, 1026, 979, 970, 947, 1036, 1013, 1063, 964, 939, 1050, 1013, 990, 1035, 1012, 980, 961, 1009, 1072, 1013, 962, 999, 978, 1060, 1014, 1000, 992, 1035, 996, 978, 1033, 913, 1006, 945, 1044, 1005, 1061, 988, 936, 1021, 1066, 985, 942, 997, 983, 995, 981, 978, 997], [1036, 1048, 1014, 940, 1019, 974, 1005, 999, 1007, 1027, 1021, 1001, 975, 1046, 995, 988, 997, 1040, 998, 1047, 1038, 1023, 970, 963, 1005, 963, 1031, 1030, 1003, 978, 982, 986, 996, 997, 967, 1008, 975, 938, 960, 1093, 951, 983, 1069, 1036, 1008, 987, 1004, 984, 1065, 1035, 1015, 961, 937, 1019, 989, 976, 984, 1001, 1000, 1018, 1029, 1001, 1004, 1064, 986, 951, 992, 1026, 1045, 988, 1009, 1019, 1067, 1039, 948, 964, 1016, 972, 999, 1011, 1008, 965, 1053, 1008, 989, 1007, 1007, 966, 1019, 1076, 1003, 1060, 990, 993, 1029, 957, 978, 971, 908, 1019, 993, 1021, 982, 974, 934, 982, 1010, 973, 1016, 983, 947, 1085, 944, 1017, 1010, 1007, 1000, 970, 1049, 969, 992, 953, 1000, 1019, 1033, 939, 1002, 1007, 959, 1023, 987, 940, 1064, 990, 1021, 988, 1005, 953, 978, 994, 1034, 1026, 1035, 971, 1037, 987, 971, 993, 1045, 1035, 1001, 1031, 1013, 1014, 958, 1021, 1069, 981, 982, 1055, 1009, 1029, 1017, 957, 943, 996, 1023, 964, 925, 953, 1040, 1040, 1000, 953, 1028, 993, 963, 1002, 999, 1016, 1011, 1000, 993, 1011, 977, 971, 1029, 1013, 967, 1013, 1042, 992, 1003, 1019, 985, 1008, 1013, 1035, 1034, 1025, 1059, 991, 1027, 1053, 972, 996, 1083, 994, 1003, 1009, 1017, 1032, 1006, 1002, 1022, 999, 971, 966, 988, 992, 979, 1042, 1013, 987, 1015, 1050, 1056, 961, 1021, 1017, 993, 981, 970, 982, 968, 982, 987, 1008, 988, 1003, 1104, 1055, 1014, 992, 1003, 1068, 1016, 1011, 1006, 976, 1013, 1024, 1002, 1005, 1037, 1021], [1025, 1039, 989, 963, 1019, 992, 1004, 1005, 1005, 1055, 998, 948, 962, 975, 1006, 966, 959, 974, 963, 1018, 1006, 1007, 1012, 1021, 975, 971, 966, 983, 1000, 996, 973, 943, 1059, 1040, 1001, 1007, 1014, 1045, 955, 963, 992, 1022, 952, 992, 980, 1022, 1013, 1001, 1026, 1025, 968, 1041, 1017, 1015, 1040, 973, 1023, 985, 980, 988, 1030, 1011, 988, 986, 974, 987, 996, 998, 964, 1006, 997, 1028, 977, 981, 982, 988, 1073, 1016, 1036, 964, 1008, 1020, 978, 997, 1023, 1029, 1034, 933, 993, 998, 994, 941, 985, 974, 1011, 1011, 974, 988, 977, 1035, 1025, 996, 1097, 1043, 987, 1027, 950, 998, 1027, 942, 968, 1000, 945, 996, 988, 1022, 1050, 1029, 1035, 1022, 942, 987, 982, 1085, 993, 1000, 994, 1041, 984, 988, 971, 1001, 1012, 983, 1062, 968, 1011, 966, 1019, 1026, 958, 1012, 943, 1031, 990, 994, 991, 982, 1070, 978, 1003, 967, 1012, 954, 959, 1031, 1032, 976, 946, 969, 982, 966, 965, 1044, 978, 984, 980, 1001, 1040, 946, 974, 966, 978, 1030, 987, 963, 990, 947, 1058, 1052, 1102, 984, 999, 979, 1003, 1022, 1017, 1019, 998, 962, 1007, 996, 1028, 1050, 988, 967, 1003, 1002, 1013, 990, 976, 987, 1045, 1028, 935, 1047, 987, 956, 988, 961, 1030, 1000, 980, 997, 975, 1034, 959, 1048, 996, 995, 996, 983, 967, 1075, 952, 1009, 1009, 972, 1030, 997, 973, 946, 1032, 980, 1003, 1033, 982, 999, 920, 997, 986, 928, 1066, 961, 943, 1008, 946, 1004, 1049, 1041, 984, 980, 988, 978, 979, 1009], [968, 1015, 995, 1014, 1020, 1054, 939, 969, 1017, 1063, 1002, 992, 986, 1011, 987, 985, 1012, 1026, 986, 943, 965, 1012, 1023, 1018, 1039, 1046, 995, 940, 1006, 1007, 1030, 903, 1007, 978, 997, 977, 1014, 992, 1024, 968, 1009, 1012, 1022, 1006, 1015, 1057, 1025, 1010, 984, 1020, 998, 1012, 1055, 958, 1000, 1037, 956, 959, 1047, 975, 997, 959, 995, 977, 963, 982, 984, 970, 1007, 966, 1040, 1006, 983, 995, 944, 1014, 974, 1026, 1030, 1053, 1025, 933, 1042, 944, 979, 985, 957, 963, 998, 1004, 924, 987, 986, 991, 990, 1052, 983, 1032, 980, 1011, 995, 1018, 1024, 1042, 1006, 1014, 980, 1014, 962, 968, 1003, 1018, 1016, 1042, 994, 938, 975, 992, 1015, 1006, 959, 967, 970, 967, 1023, 992, 1019, 1001, 1027, 1067, 1022, 1053, 1023, 967, 1023, 944, 919, 982, 1023, 979, 1012, 998, 1034, 1005, 1007, 965, 998, 959, 986, 996, 1009, 982, 967, 1004, 943, 964, 941, 1049, 979, 981, 1018, 1012, 1040, 1035, 974, 997, 1029, 1026, 966, 993, 984, 974, 1006, 1010, 1004, 1062, 966, 1002, 1034, 1011, 1028, 987, 1008, 990, 1034, 1025, 1042, 972, 945, 1003, 995, 981, 976, 1009, 1025, 1022, 1013, 1025, 966, 972, 902, 1042, 966, 995, 1027, 975, 998, 994, 1018, 940, 1018, 975, 1073, 959, 988, 1037, 1020, 994, 985, 937, 1011, 1015, 1016, 955, 936, 1008, 1010, 1030, 956, 987, 948, 1013, 953, 996, 976, 1000, 997, 1027, 975, 1049, 972, 973, 1005, 1070, 971, 1048, 984, 1012, 961, 1004, 989, 1012, 975, 949, 1027, 1050], [1043, 1038, 1001, 1003, 989, 965, 977, 954, 982, 1004, 946, 1016, 1032, 958, 1045, 1034, 1022, 1050, 997, 1009, 940, 979, 1025, 1014, 1028, 964, 1025, 1039, 956, 983, 953, 1001, 1036, 965, 991, 1015, 983, 973, 1032, 988, 952, 1070, 1024, 1013, 1031, 978, 1026, 1085, 996, 1013, 1046, 999, 1050, 971, 999, 964, 1016, 953, 1001, 1008, 1049, 985, 1025, 1085, 978, 1025, 970, 998, 959, 950, 1001, 989, 926, 1021, 1033, 983, 964, 1007, 1021, 1056, 986, 979, 959, 1003, 974, 1011, 1015, 977, 997, 1053, 1080, 1048, 997, 979, 965, 1034, 1032, 968, 988, 1028, 1014, 1076, 972, 961, 1046, 1003, 959, 1006, 1056, 969, 969, 1002, 1016, 975, 1006, 1051, 1028, 948, 1011, 990, 960, 981, 981, 949, 1027, 1021, 1001, 1067, 991, 1007, 969, 997, 969, 1001, 1010, 972, 947, 1026, 976, 1049, 940, 983, 977, 1014, 1034, 994, 1031, 970, 939, 1021, 1017, 960, 1013, 1022, 981, 1071, 1020, 978, 1015, 1054, 977, 937, 1009, 1044, 987, 968, 986, 1006, 1002, 1034, 975, 991, 937, 1011, 1018, 971, 1034, 1010, 988, 990, 969, 995, 1022, 1003, 940, 1017, 981, 1006, 1074, 1002, 969, 1001, 1010, 1019, 995, 983, 1003, 975, 961, 980, 996, 992, 979, 1033, 1005, 940, 1019, 988, 990, 1046, 989, 1024, 958, 1025, 999, 1007, 1021, 986, 977, 990, 983, 1012, 968, 1035, 1047, 1011, 1015, 970, 990, 1011, 1027, 1030, 1028, 1061, 959, 999, 1017, 1023, 987, 997, 940, 1042, 1003, 964, 977, 943, 1092, 1029, 942, 973, 1006, 955, 978, 1009, 988, 965], [980, 1036, 1057, 976, 1013, 992, 1058, 999, 1036, 982, 964, 979, 1002, 1040, 1015, 1088, 967, 994, 1020, 1036, 911, 959, 1017, 968, 1024, 1052, 977, 1011, 1029, 976, 988, 1003, 1032, 972, 1013, 1034, 1037, 1010, 996, 1022, 989, 1020, 998, 976, 1008, 1029, 978, 974, 1003, 1038, 973, 1074, 1034, 962, 979, 1026, 992, 988, 1000, 967, 1009, 969, 942, 1009, 1001, 918, 957, 993, 983, 998, 974, 1021, 1012, 1027, 1018, 1054, 983, 952, 985, 993, 1042, 999, 1019, 1026, 1002, 1045, 978, 1021, 1004, 1010, 1023, 1046, 985, 943, 961, 1063, 994, 1000, 938, 954, 1018, 993, 1033, 998, 1020, 938, 993, 996, 1013, 1019, 1041, 1021, 1061, 1006, 1017, 984, 988, 985, 992, 1016, 991, 1044, 997, 969, 1036, 1034, 1018, 943, 937, 1025, 1014, 1037, 1012, 995, 1004, 1029, 1028, 1023, 1005, 997, 1009, 1058, 966, 993, 1019, 1000, 1039, 968, 1031, 987, 1038, 995, 983, 1040, 988, 964, 1043, 1036, 1011, 947, 969, 1037, 987, 1000, 1064, 1064, 1000, 1006, 973, 972, 1014, 999, 1010, 994, 989, 1012, 936, 981, 952, 970, 1029, 1011, 971, 1002, 1027, 1014, 1011, 960, 950, 939, 1033, 1028, 1000, 1011, 1034, 1009, 1029, 985, 964, 1058, 1038, 933, 982, 949, 1011, 968, 978, 1014, 1012, 980, 1014, 992, 1032, 1002, 964, 1043, 960, 984, 1013, 1087, 1021, 964, 1033, 1034, 983, 1012, 1028, 989, 966, 944, 1016, 952, 985, 981, 984, 1005, 1019, 1004, 956, 921, 1065, 978, 977, 956, 1038, 1010, 1015, 995, 987, 1043, 975, 1017, 1023, 1050, 988, 1004], [1021, 1008, 1038, 967, 997, 1013, 1017, 1009, 1029, 1003, 1032, 966, 1020, 917, 1007, 1026, 953, 1030, 1028, 1011, 1004, 948, 1018, 978, 1016, 1020, 1020, 1037, 1027, 973, 1031, 1007, 921, 970, 960, 981, 1039, 996, 1021, 1026, 1041, 955, 963, 980, 1020, 1024, 994, 976, 1046, 986, 1002, 982, 1081, 1046, 983, 1003, 940, 991, 968, 988, 1003, 1020, 984, 1028, 990, 1002, 1047, 948, 1008, 1010, 966, 982, 972, 981, 1017, 968, 955, 969, 1008, 1054, 1016, 1006, 1044, 963, 1032, 1018, 1081, 1008, 1020, 1003, 1032, 996, 932, 964, 994, 1003, 998, 1066, 1025, 1064, 992, 996, 965, 984, 1072, 965, 972, 1030, 971, 952, 996, 1006, 1002, 942, 1014, 942, 974, 1012, 1034, 987, 967, 984, 1008, 1007, 1029, 1009, 1049, 1014, 982, 1050, 981, 1042, 1057, 1014, 1003, 968, 1056, 988, 1019, 1015, 1006, 966, 997, 938, 1015, 1029, 993, 991, 981, 965, 965, 988, 1018, 1003, 1009, 1015, 952, 1024, 980, 979, 1008, 1032, 1042, 1020, 992, 1036, 977, 997, 968, 1015, 1070, 984, 1035, 976, 1007, 973, 994, 1036, 983, 1023, 998, 950, 982, 1029, 953, 1002, 979, 957, 965, 984, 976, 1001, 1010, 1000, 1059, 1039, 970, 973, 997, 972, 1042, 1057, 999, 961, 961, 996, 1091, 1013, 1049, 1060, 1033, 982, 977, 1013, 1046, 1036, 931, 1011, 1017, 1032, 975, 1004, 965, 1000, 1022, 1004, 1036, 1008, 952, 1016, 1013, 1012, 1003, 985, 958, 996, 946, 980, 1076, 1026, 1014, 1035, 1001, 942, 1022, 926, 992, 1019, 972, 1055, 980, 952, 975, 1013, 966, 1036], [981, 991, 1076, 1001, 1003, 979, 1042, 1014, 1060, 976, 997, 1008, 991, 1015, 1016, 998, 970, 1025, 1061, 1007, 953, 1004, 1053, 1056, 1046, 1040, 950, 998, 1031, 1002, 1001, 1044, 967, 975, 947, 1048, 1009, 986, 970, 1011, 1037, 1002, 993, 1027, 987, 1035, 995, 1012, 970, 980, 956, 978, 978, 984, 990, 1004, 1023, 1008, 994, 1001, 968, 982, 1009, 989, 1081, 999, 1005, 1017, 934, 961, 1000, 992, 1011, 1058, 995, 1013, 963, 1014, 1026, 993, 980, 962, 950, 1027, 1009, 1016, 1059, 952, 1020, 1034, 970, 986, 1019, 1019, 1024, 1003, 1040, 967, 1008, 1072, 1044, 1024, 1008, 975, 984, 970, 1026, 1017, 961, 1041, 987, 989, 986, 954, 986, 971, 1001, 998, 984, 1004, 1004, 1026, 981, 986, 962, 1026, 1013, 983, 1010, 1000, 1011, 1012, 1047, 992, 997, 1003, 1037, 1013, 988, 986, 1025, 1023, 1050, 1089, 1010, 962, 977, 1025, 967, 1047, 1034, 993, 959, 1017, 1005, 1011, 1009, 1023, 1002, 1052, 1054, 1003, 1012, 1047, 979, 1051, 1060, 989, 1042, 969, 1017, 1057, 983, 994, 971, 1006, 1000, 1051, 966, 1022, 1033, 1035, 1014, 979, 975, 981, 1045, 998, 955, 1019, 990, 983, 970, 1044, 1012, 1029, 1036, 995, 1001, 998, 978, 1018, 1004, 990, 1030, 974, 1016, 1012, 999, 1009, 1010, 979, 1027, 994, 1000, 947, 989, 993, 1011, 1030, 1009, 953, 981, 1028, 1036, 1024, 1026, 1050, 1008, 1048, 1033, 1020, 1072, 997, 968, 1011, 939, 1023, 979, 1012, 971, 994, 994, 1010, 920, 1014, 1027, 1001, 1010, 996, 941, 908, 1010, 980, 1008, 1025], [998, 1001, 1010, 1004, 1049, 987, 1019, 979, 1004, 1006, 1016, 1026, 996, 993, 985, 1038, 1036, 1045, 984, 1005, 1013, 984, 999, 1010, 974, 965, 1075, 989, 947, 929, 1016, 1089, 1068, 996, 997, 1035, 1088, 1031, 981, 988, 963, 1037, 1034, 1006, 979, 991, 1003, 1056, 999, 961, 1030, 1025, 974, 963, 1031, 960, 1020, 1042, 1005, 1002, 1075, 997, 964, 966, 974, 959, 1037, 947, 980, 996, 950, 1031, 1019, 976, 1013, 918, 1000, 981, 946, 1033, 968, 971, 984, 978, 990, 969, 968, 985, 1024, 958, 1035, 1012, 964, 968, 983, 993, 1040, 1021, 1000, 951, 985, 968, 988, 928, 1028, 1002, 987, 980, 961, 1020, 917, 974, 1014, 982, 969, 1000, 989, 984, 1007, 1007, 1009, 977, 1043, 1001, 985, 944, 1006, 985, 992, 996, 998, 986, 992, 984, 976, 977, 1017, 991, 979, 1009, 953, 1010, 941, 1021, 1019, 1021, 997, 1021, 952, 969, 978, 1051, 966, 1017, 963, 1028, 995, 937, 983, 994, 1003, 988, 977, 981, 1012, 964, 985, 963, 988, 952, 978, 1053, 1017, 985, 1061, 975, 965, 975, 1045, 1012, 1049, 936, 995, 986, 962, 965, 995, 995, 980, 987, 985, 990, 1030, 967, 1006, 992, 929, 997, 1031, 1031, 994, 1012, 1005, 1078, 1023, 958, 1012, 1027, 1011, 972, 948, 990, 997, 1030, 1048, 1010, 955, 948, 1047, 1016, 1037, 956, 938, 1001, 994, 990, 1005, 1015, 949, 1026, 963, 984, 1007, 1024, 993, 986, 912, 970, 1027, 1025, 1003, 960, 937, 1045, 1004, 1014, 959, 972, 985, 1079, 991, 953, 990, 979, 1039, 1015], [987, 1010, 965, 1018, 1019, 1012, 977, 997, 999, 996, 962, 1101, 1034, 993, 966, 955, 956, 1005, 1054, 982, 981, 1003, 1030, 1041, 1019, 1011, 1025, 1014, 1004, 974, 965, 1015, 988, 934, 1015, 977, 1007, 997, 968, 1014, 970, 934, 985, 1043, 988, 975, 1018, 1002, 1009, 1022, 1021, 1007, 960, 975, 956, 1104, 956, 1020, 969, 952, 1024, 1058, 1050, 1022, 971, 1051, 1007, 983, 954, 1059, 973, 1037, 1034, 989, 1007, 1028, 976, 1000, 991, 960, 1049, 964, 995, 1047, 1030, 978, 977, 986, 966, 934, 996, 926, 1048, 978, 965, 1073, 1027, 998, 1030, 1038, 1028, 1039, 1017, 987, 964, 1011, 984, 1038, 958, 1014, 1033, 999, 1032, 1055, 971, 1025, 993, 1028, 1012, 1015, 1061, 1046, 992, 996, 935, 949, 1006, 1005, 951, 952, 977, 963, 1010, 969, 1016, 983, 1027, 993, 957, 1008, 1049, 988, 996, 1046, 969, 989, 978, 999, 985, 1024, 1006, 1052, 1012, 972, 955, 950, 1005, 1021, 1015, 990, 988, 1056, 1004, 1023, 1026, 1039, 1013, 1009, 974, 946, 974, 1023, 950, 984, 967, 962, 1061, 1000, 998, 1068, 1015, 989, 977, 1023, 1014, 990, 949, 997, 984, 999, 1007, 937, 1023, 996, 1015, 994, 1022, 992, 957, 1023, 1006, 995, 967, 990, 1079, 978, 992, 1049, 1010, 1000, 1036, 1006, 1020, 956, 991, 1022, 965, 1031, 1012, 1024, 959, 974, 995, 976, 1020, 1004, 1070, 974, 1009, 1034, 950, 961, 1068, 1019, 1019, 986, 988, 1036, 1011, 967, 1012, 1023, 942, 984, 984, 985, 982, 1037, 1004, 1020, 975, 977, 1002, 974, 1010, 1052], [1017, 996, 978, 1045, 1002, 972, 978, 926, 985, 1043, 1007, 959, 968, 999, 977, 1020, 1010, 1006, 998, 1010, 1014, 1011, 1020, 989, 991, 1056, 1001, 990, 941, 1017, 1030, 977, 950, 1021, 1009, 989, 974, 919, 1013, 1028, 1024, 1006, 929, 1001, 1000, 1030, 1062, 1032, 992, 1015, 1000, 979, 988, 1017, 1016, 1063, 1059, 966, 969, 1012, 1029, 1022, 972, 978, 1021, 995, 1017, 970, 999, 970, 1028, 968, 1013, 1015, 992, 1007, 979, 970, 975, 1049, 993, 998, 970, 1046, 986, 963, 991, 1053, 966, 971, 992, 939, 989, 1023, 1034, 1052, 1055, 1005, 1058, 958, 977, 948, 973, 1066, 989, 981, 1014, 1032, 1044, 1004, 937, 1026, 1030, 978, 931, 959, 1036, 1028, 971, 923, 1011, 1060, 972, 926, 1006, 988, 1022, 1018, 1002, 961, 1017, 987, 1016, 948, 949, 1041, 959, 926, 1046, 1035, 962, 1017, 967, 988, 988, 1013, 950, 964, 1005, 1029, 926, 998, 992, 1046, 1010, 1003, 1002, 1024, 956, 1020, 956, 1006, 1023, 994, 1008, 1003, 1066, 1042, 982, 982, 1023, 1023, 928, 980, 991, 971, 1016, 1001, 992, 1034, 984, 966, 1012, 971, 982, 997, 990, 979, 995, 1004, 1048, 1000, 1010, 968, 954, 1006, 1032, 955, 1048, 980, 1053, 1006, 1013, 1007, 1017, 988, 992, 947, 1035, 1020, 993, 973, 1002, 999, 1005, 977, 983, 987, 989, 1029, 1006, 998, 967, 1009, 964, 999, 1081, 999, 975, 1014, 939, 1029, 981, 1006, 985, 973, 1046, 1005, 1017, 967, 968, 1017, 1028, 1012, 973, 959, 968, 1033, 1011, 974, 924, 1001, 1002, 1036, 1044, 1029], [988, 1046, 985, 1021, 1019, 1004, 994, 996, 967, 979, 963, 994, 976, 993, 973, 1006, 1027, 975, 1026, 1034, 983, 1014, 996, 979, 958, 1004, 1002, 1001, 1040, 1016, 980, 1007, 1041, 1010, 970, 1037, 1024, 1025, 1004, 971, 985, 1039, 1018, 1032, 1022, 988, 985, 981, 993, 986, 1052, 964, 995, 1029, 1025, 982, 1035, 1070, 1027, 1021, 1004, 1001, 1022, 998, 967, 969, 1000, 1022, 1021, 1010, 954, 1021, 1026, 969, 996, 1017, 980, 1024, 1038, 969, 956, 992, 1016, 998, 995, 1004, 996, 965, 952, 966, 1065, 1032, 1006, 999, 1033, 1011, 1011, 1017, 976, 1029, 998, 997, 990, 985, 994, 1019, 1023, 1021, 993, 1009, 951, 1000, 1009, 1016, 1043, 1015, 1033, 966, 990, 998, 976, 1025, 1039, 969, 936, 941, 1055, 1011, 944, 961, 1000, 1080, 1041, 1023, 1013, 942, 987, 984, 1016, 1014, 1007, 978, 1094, 1041, 957, 968, 1005, 992, 987, 1027, 958, 1010, 954, 1023, 1001, 1046, 1042, 968, 1066, 976, 964, 1022, 1040, 928, 1000, 1028, 1020, 1052, 974, 981, 996, 967, 1023, 988, 983, 981, 959, 994, 1014, 1000, 1008, 1076, 1035, 1002, 1000, 1024, 1003, 1004, 1004, 996, 968, 960, 1012, 952, 1043, 1012, 1011, 1008, 1028, 1044, 1002, 975, 1028, 951, 1012, 1003, 1016, 1031, 984, 987, 982, 972, 1009, 1045, 988, 987, 950, 987, 993, 998, 992, 1026, 1014, 979, 1001, 1006, 1003, 996, 987, 1011, 1024, 1066, 1064, 980, 986, 1035, 994, 958, 1039, 1014, 1080, 1019, 996, 960, 1005, 982, 1075, 976, 974, 993, 999, 998, 963, 1056, 1037, 1037], [996, 1030, 1017, 1018, 985, 953, 988, 1008, 969, 948, 1009, 966, 949, 1021, 1036, 981, 1000, 965, 1014, 1029, 1010, 1002, 984, 1012, 1013, 1002, 1029, 1021, 1028, 1044, 1064, 930, 968, 1008, 992, 989, 1004, 942, 1032, 968, 989, 1070, 961, 1045, 965, 1031, 977, 1021, 1055, 983, 989, 975, 1059, 936, 993, 1003, 1001, 992, 1042, 988, 987, 1011, 978, 997, 969, 1005, 964, 1009, 1022, 1012, 1008, 990, 970, 990, 975, 975, 975, 982, 995, 987, 1022, 1007, 977, 966, 1002, 1009, 1002, 948, 1020, 1017, 1020, 1004, 1035, 1021, 1005, 976, 999, 1002, 995, 1020, 989, 994, 966, 999, 1001, 943, 1025, 996, 986, 987, 1006, 1000, 1007, 1027, 997, 1033, 994, 988, 1035, 1026, 988, 1019, 1032, 1035, 986, 975, 979, 1023, 1006, 1041, 1006, 994, 993, 978, 1068, 992, 999, 1002, 1004, 1022, 1006, 1004, 1060, 1065, 965, 1001, 1013, 973, 1008, 1026, 997, 996, 1021, 1050, 985, 1021, 1043, 987, 997, 1056, 995, 983, 1034, 1025, 996, 992, 1027, 974, 1031, 971, 993, 1007, 1024, 958, 983, 975, 985, 972, 1012, 1001, 965, 1023, 1002, 1048, 1010, 987, 971, 1020, 1009, 1066, 1041, 941, 977, 1015, 1044, 963, 1047, 1011, 1042, 1039, 968, 984, 1002, 1025, 986, 962, 966, 1000, 954, 1011, 1016, 979, 995, 1063, 1042, 1072, 1012, 992, 1001, 995, 1025, 1011, 918, 996, 1025, 1032, 983, 1033, 1056, 1024, 1031, 1038, 1030, 976, 1037, 1020, 953, 1035, 998, 1010, 1022, 1010, 995, 1028, 979, 1031, 1007, 998, 1022, 1064, 998, 1007, 978, 1012, 939, 938], [1015, 1027, 936, 1054, 997, 1002, 972, 943, 973, 993, 952, 1007, 1032, 1013, 961, 982, 931, 952, 977, 1031, 962, 1017, 1017, 1029, 961, 1003, 1030, 968, 1031, 1031, 1009, 1007, 1026, 971, 1051, 970, 996, 988, 1005, 960, 1052, 1032, 947, 1002, 1045, 1013, 1007, 1034, 1024, 982, 1025, 991, 992, 1054, 1050, 963, 1030, 1030, 1026, 979, 967, 1002, 1047, 986, 1035, 991, 1034, 1006, 997, 1021, 996, 986, 1065, 1009, 1011, 1048, 1001, 988, 1007, 952, 991, 1002, 915, 973, 1007, 1026, 1040, 974, 1011, 999, 1003, 966, 928, 971, 1010, 1035, 1019, 985, 1049, 978, 1033, 1015, 1037, 955, 975, 1020, 954, 1005, 996, 1046, 1034, 996, 970, 1020, 976, 979, 952, 951, 1026, 991, 1004, 1022, 989, 1011, 1027, 1073, 1055, 974, 1011, 974, 975, 977, 982, 987, 1000, 917, 996, 992, 962, 959, 1010, 1007, 993, 980, 1001, 1024, 1029, 982, 995, 1010, 961, 1040, 993, 967, 999, 1009, 1005, 998, 994, 1023, 1030, 1057, 972, 1019, 1050, 1008, 1010, 1004, 996, 998, 1018, 1011, 1009, 1054, 968, 1021, 1001, 1001, 1044, 990, 997, 992, 979, 935, 971, 1063, 1000, 1039, 990, 1001, 964, 1061, 969, 1027, 1094, 968, 958, 974, 1024, 952, 984, 1005, 1039, 1076, 1032, 967, 1005, 1024, 990, 948, 984, 937, 1001, 1027, 1016, 1029, 1016, 981, 963, 998, 1037, 967, 1007, 991, 986, 993, 1043, 975, 948, 1007, 948, 962, 954, 993, 985, 1010, 973, 1052, 1004, 996, 1017, 1019, 997, 997, 949, 986, 975, 989, 998, 1035, 1025, 1000, 1021, 1042, 991, 990]] diff --git a/experiments/genDoubleStoc.py b/experiments/genDoubleStoc.py new file mode 100644 index 0000000..4c55723 --- /dev/null +++ b/experiments/genDoubleStoc.py @@ -0,0 +1,418 @@ +import networkx as nx +from networkx.algorithms import isomorphism +from math import * +import numpy as np +from optparse import OptionParser + + +n= 4 +nbmaxiter = 6 +profM=n*pow(2,n) +prof = profM + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + +def calculetmix(epsilon): + resTMIX=[] + global treatedlist + global n + if rf != False: + treatedlist =get_treatedlist(rf) + #print "taillle de la liste ",len(treatedlist) + n= int(log(len(treatedlist[0]))/log(2)) + print "n",n + l2n = range(int(pow(2,n))) + pi0 = [pow(2,-n) for _ in range(int(pow(2,n)))] + #treatedlist = [treatedlist[11]] + cpt = 0 + for perm in treatedlist: + M = np.zeros((pow(2,n),pow(2,n))) + for conf in l2n: + r = bin(perm[conf],n) + for cp in range(n): + confbp = bin(conf,n) + confbp[cp] = r[cp] + M[conf-1][dec(confbp,n)-1] = 1/float(n) + mx=0 + #print "Markov chain",M + eigs = np.linalg.eigvals(M) + #print "valp",eigs + error = 1E-10 + modulusofegs = [abs(l) for l in eigs] + modulusofegs = [l if (1-l)>error else 0 for l in modulusofegs] + #print "modulusofegs",modulusofegs + lambdastar = max(modulusofegs) + #print "lambdastar",lambdastar + trel = 1.0/(1-lambdastar) + def tmixSup(epsilon) : + pimin = 1.0/int(pow(2,n)) + #print "pimin",pimin + return np.log(1.0/(epsilon*pimin))*trel + def tmixInf(epsilon) : + pimin = 1.0/int(pow(2,n)) + #print "pimin",pimin + return (trel-1)*np.log(1.0/(2*epsilon)) + + + print "F_"+str(cpt+1), perm, int(tmixInf(epsilon)), int(tmixSup(epsilon))+1 + resTMIX +=[(perm, int(tmixInf(epsilon)), int(tmixSup(epsilon))+1)] + cpt+=1 + + def compare(x,y): + return cmp(x[1],y[1]) + resTMIX.sort(cmp=compare) + print resTMIX + + + +def is_double_stoc(M): + (nbl,nbc) =M.shape + return all( [abs (sum([M[i,j] for i in range(nbl)])-1.0)<1E-6 for j in range(nbc)]) + + + +def matriceAdjacenceDe(G): + l2n = range(int(pow(2,n))) + P = np.zeros((2**n,2**n)) + L = G.edges() + for i in l2n: + k = 0 + for j in l2n: + if i != j : + if (i,j) in L: + P[i][j] = 1/float(n) + k+=1 + P[i][i]=(n-k)/float(n) + return P + + +def graphe_OK(G): + M = matriceAdjacenceDe(G) + r = True + r = r and is_double_stoc(M) + r = r and nx.is_strongly_connected(G) + return r + + +def graphe_de_liste(l): + G = nx.DiGraph() + l2n = range(int(pow(2,n))) + for conf in l2n: + G.add_node(conf) + # r est l'image binaire de conf en parallele + r = bin(l[conf],n) + # on construit poentiellement les n image en unitaire + for cp in range(n): + # confbp est conf sauf en cp ou c'est r[cp] + confbp = bin(conf,n) + confbp[cp] = r[cp] + # on ajoute l'arc + G.add_edge(conf,dec(confbp,n)) + return G + + +acc={} +def genereGrapheHamiltonien(G): + global acc + def largeur(profondeur, effectues): + #print "profondeur",profondeur + global acc + effectues_p = [] + for (c,vi) in effectues: + (_,d) = c[len(c)-1] + for v in G.neighbors(d): + if v not in vi: + effectues_p += [([_ for _ in c]+[(d,v)],set([_ for _ in vi]+[v]))] + acc[profondeur] = effectues_p + if profondeur <= pow(2,n) : + largeur(profondeur+1,effectues_p) + largeur(4,[([(0,1)],set([0,1]))]) + res = acc[pow(2,n)+1] + ret=[] + for (c,vertices) in res : + assert len(vertices) == pow(2,n) + (_,t) = c[len(c)-1] + if G.has_edge(t,0) : + ret +=[c +[(t,0)]] + + return ret + + +def graphSansListe(G,l): + Gp = nx.DiGraph() + Gp.add_edges_from(G.edges()) + Gp.remove_edges_from(l) + return Gp + +def genereTousLesGraphesSansCycleHamiltonien(G): + r = [graphSansListe(G,l) for l in genereGrapheHamiltonien(G)] + res = [r[0]] + for g in r[1:] : + if all([not(isomorphic(g,g2)) for g2 in res]): + res.append(g) + return [grapheToList(G) for G in res] + +def graphe_de_edges(l): + G = nx.DiGraph() + l2n = range(int(pow(2,n))) + for conf in l2n: + G.add_node(conf) + for (o,e) in l: + G.add_edge(o,e) + return G + +# s'il y a des doublons ce n'est pas une perm +def isperm(L): + return len(set(L)) == len(L) + + +def grapheToList(G): + l2n = range(int(pow(2,n))) + edges = G.edges() + images = range(int(pow(2,n))) + for o in l2n: + e = o + eb= bin(e,n) + for j in range(n): + epb = bin(e,n) + epb[j] = 1-epb[j] + if (o,dec(epb,n)) in edges: + eb[j] = 1-eb[j] + images[o]=dec(eb,n) + return images + +def isomorphic(g1,g2): + GM = isomorphism.DiGraphMatcher(g1,g2) + return GM.is_isomorphic() + +def parcours_p(visited,resG,l): + + t = len(l) + for j in range(t): + lp = l[0:j]+l[j+1:] + G = graphe_de_edges(lp) + if nx.is_strongly_connected(G) : + if all([not(isomorphic(G,g2)) for g2 in visited]): + visited.append(G) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print gtl,len(resG) + parcours_p(visited,resG,G.edges()) + + +def parcours_l_dual(visited,resG,GGedges): + global prof + print "\n en entrant",int(prof),"a visiter",len(visited) + prof -=1 + nvisited =[] + for i in range(len(visited)) : + #if i%10 == 0 : + print "ds calcul",i,len(nvisited) + ld = visited[i].edges() + lr = list(GGedges-set(ld)) + + t = len(lr) + for j in range(t): + lp = [x for x in ld]+[lr[j]] + G= graphe_de_edges(list(GGedges-set(lp))) + if nx.is_strongly_connected(G) : + Gd= graphe_de_edges(lp) + if all([not(isomorphic(Gd,g2)) for g2 in nvisited]): + nvisited.append(Gd) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print "\n",gtl + if nvisited != [] : + parcours_l_dual(nvisited,resG,GGedges) + + +def parcours_l(visited,resG): + global prof + if prof < profM - nbmaxiter : + assert False + print "\n en entrant",int(prof),"a vistier",len(visited) + prof -=1 + nvisited =[] + for i in range(len(visited)) : + #if i%100 == 0 : + #print "ds calcul",i,len(nvisited) + l = visited[i].edges() + t = len(l) + for j in range(t): + lp = l[0:j]+l[j+1:] + G = graphe_de_edges(lp) + if nx.is_strongly_connected(G) : + if all([not(isomorphic(G,g2)) for g2 in nvisited]): + nvisited.append(G) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print "\n",gtl + if nvisited != [] : + parcours_l(nvisited,resG) + + + + + +def main(): + global treatedlist + l = range(int(pow(2,n))) + l.reverse() + G = graphe_de_liste(l) + treatedlist = genereTousLesGraphesSansCycleHamiltonien(G) + print treatedlist + #Ginit = nx.DiGraph() + #Ginit.add_edge(0,2) + #resG = [G] + # parcours en profondeur : deux graphes sont voinsin si l'un contient + # un arc de plus que l'autre + #visited=[] + #parcours_p(visited,resG,G.edges()) + #parcours_l([G],resG) + #parcours_l_dual([Ginit],resG,set(G.edges())) + + #print [grapheToList(X) for X in resG] + + + + + +def main_old(): + resl=[] + global treatedlist + if rf != False: + treatedlist =get_treatedlist(rf) + else : + treatedlist = [ perm for perm in permute_in_place(range(8))] + print "taillle de la liste ",len(treatedlist) + res = [] + resG= [] + global n + n= int(log(len(treatedlist[0]))/log(2)) + print "n",n + + nbit = 40 + + l2n = range(int(pow(2,n))) + # pour chaque permutation de l ensemble [0,...,2^[n-1}} + nnb = 0 + #for perm in permute_in_place(range(4)): + D=[0 for x in range(len(treatedlist))] + count=-1 + for perm in treatedlist: + count +=1 + nnb +=1 + #if nnb%1000 == 0 : + # print nnb + # si elle contient un element stable on l enleve (GTPIC n est pas SCC) + if all([ ident!=perm[ident] for ident in l2n]): + # on construit le GTPIC + #G = nx.DiGraph() + G = nx.DiGraph() + # pour chaque noeud + for conf in l2n: + G.add_node(conf) + # r est l'image binaire de conf en parallele + r = bin(perm[conf]) + # on construit poentiellement les n image en unitaire + for cp in range(n): + # confbp est conf sauf en cp ou c'est r[cp] + confbp = bin(conf) + confbp[cp] = r[cp] + # on ajoute l'arc + G.add_edge(conf,dec(confbp)) + flg = False + if nx.is_strongly_connected(G): + if len(resG)==0: + res.append(perm) + resG.append(G) + flg=True + else : + def isomorphic(g1,g2): + GM = isomorphism.DiGraphMatcher(g1,g2) + return GM.is_isomorphic() + if all([not(isomorphic(G,g2)) for g2 in resG]): + resG.append(G) + res.append(perm) + flg=True + #else: + # print "pas scc",perm + if flg == True : + T=[0 for i in l2n] + T[0] = 1 + P = np.zeros((2**n,2**n)) + for i in l2n: + k = 0 + for j in l2n: + L = G.edges() + if i != j : + if (i,j) in L: + P[i][j] = 1/float(n) + k+=1 + P[i][i]=(n-k)/float(n) + + + if is_double_stoc(P): + d=pow(2,n) + t=0 + unif = 1/float(pow(2,n)) + cpt=0 + while (d >0.00001 and t <10000): + cpt+=1 + #print cpt + T =[ sum ([T[j]*P[j][i] for j in l2n]) for i in l2n] + #print T + dp = sum([abs(x-unif) for x in T])*(pow(2,n)) + if dp < d : + D[count] = t + d = dp + t +=1 + #print dp + print perm, t, d, D[count] + resl +=[perm] + print resl + return resl +rf=False + +def options(): + global rf + parser = OptionParser() + parser.add_option("-i", "--input", dest="i", + help="file of sequences") + (options, args) = parser.parse_args() + if (options.i != None): + rf = options.i + + +if __name__ == "__main__": + options() + print "------" + #main() + calculetmix(1E-4) + diff --git a/experiments/genDoubleStoc.py~ b/experiments/genDoubleStoc.py~ new file mode 100644 index 0000000..2bec034 --- /dev/null +++ b/experiments/genDoubleStoc.py~ @@ -0,0 +1,418 @@ +import networkx as nx +from networkx.algorithms import isomorphism +from math import * +import numpy as np +from optparse import OptionParser + + +n= 5 +nbmaxiter = 6 +profM=n*pow(2,n) +prof = profM + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + +def calculetmix(epsilon): + resTMIX=[] + global treatedlist + global n + if rf != False: + treatedlist =get_treatedlist(rf) + #print "taillle de la liste ",len(treatedlist) + n= int(log(len(treatedlist[0]))/log(2)) + print "n",n + l2n = range(int(pow(2,n))) + pi0 = [pow(2,-n) for _ in range(int(pow(2,n)))] + #treatedlist = [treatedlist[11]] + cpt = 0 + for perm in treatedlist: + M = np.zeros((pow(2,n),pow(2,n))) + for conf in l2n: + r = bin(perm[conf],n) + for cp in range(n): + confbp = bin(conf,n) + confbp[cp] = r[cp] + M[conf-1][dec(confbp,n)-1] = 1/float(n) + mx=0 + #print "Markov chain",M + eigs = np.linalg.eigvals(M) + #print "valp",eigs + error = 1E-10 + modulusofegs = [abs(l) for l in eigs] + modulusofegs = [l if (1-l)>error else 0 for l in modulusofegs] + #print "modulusofegs",modulusofegs + lambdastar = max(modulusofegs) + #print "lambdastar",lambdastar + trel = 1.0/(1-lambdastar) + def tmixSup(epsilon) : + pimin = 1.0/int(pow(2,n)) + #print "pimin",pimin + return np.log(1.0/(epsilon*pimin))*trel + def tmixInf(epsilon) : + pimin = 1.0/int(pow(2,n)) + #print "pimin",pimin + return (trel-1)*np.log(1.0/(2*epsilon)) + + + print "F_"+str(cpt+1), perm, int(tmixInf(epsilon)), int(tmixSup(epsilon))+1 + resTMIX +=[(perm, int(tmixInf(epsilon)), int(tmixSup(epsilon))+1)] + cpt+=1 + + def compare(x,y): + return cmp(x[1],y[1]) + resTMIX.sort(cmp=compare) + print resTMIX + + + +def is_double_stoc(M): + (nbl,nbc) =M.shape + return all( [abs (sum([M[i,j] for i in range(nbl)])-1.0)<1E-6 for j in range(nbc)]) + + + +def matriceAdjacenceDe(G): + l2n = range(int(pow(2,n))) + P = np.zeros((2**n,2**n)) + L = G.edges() + for i in l2n: + k = 0 + for j in l2n: + if i != j : + if (i,j) in L: + P[i][j] = 1/float(n) + k+=1 + P[i][i]=(n-k)/float(n) + return P + + +def graphe_OK(G): + M = matriceAdjacenceDe(G) + r = True + r = r and is_double_stoc(M) + r = r and nx.is_strongly_connected(G) + return r + + +def graphe_de_liste(l): + G = nx.DiGraph() + l2n = range(int(pow(2,n))) + for conf in l2n: + G.add_node(conf) + # r est l'image binaire de conf en parallele + r = bin(l[conf],n) + # on construit poentiellement les n image en unitaire + for cp in range(n): + # confbp est conf sauf en cp ou c'est r[cp] + confbp = bin(conf,n) + confbp[cp] = r[cp] + # on ajoute l'arc + G.add_edge(conf,dec(confbp,n)) + return G + + +acc={} +def genereGrapheHamiltonien(G): + global acc + def largeur(profondeur, effectues): + #print "profondeur",profondeur + global acc + effectues_p = [] + for (c,vi) in effectues: + (_,d) = c[len(c)-1] + for v in G.neighbors(d): + if v not in vi: + effectues_p += [([_ for _ in c]+[(d,v)],set([_ for _ in vi]+[v]))] + acc[profondeur] = effectues_p + if profondeur <= pow(2,n) : + largeur(profondeur+1,effectues_p) + largeur(4,[([(0,1)],set([0,1]))]) + res = acc[pow(2,n)+1] + ret=[] + for (c,vertices) in res : + assert len(vertices) == pow(2,n) + (_,t) = c[len(c)-1] + if G.has_edge(t,0) : + ret +=[c +[(t,0)]] + + return ret + + +def graphSansListe(G,l): + Gp = nx.DiGraph() + Gp.add_edges_from(G.edges()) + Gp.remove_edges_from(l) + return Gp + +def genereTousLesGraphesSansCycleHamiltonien(G): + r = [graphSansListe(G,l) for l in genereGrapheHamiltonien(G)] + res = [r[0]] + for g in r[1:] : + if all([not(isomorphic(g,g2)) for g2 in res]): + res.append(g) + return [grapheToList(G) for G in res] + +def graphe_de_edges(l): + G = nx.DiGraph() + l2n = range(int(pow(2,n))) + for conf in l2n: + G.add_node(conf) + for (o,e) in l: + G.add_edge(o,e) + return G + +# s'il y a des doublons ce n'est pas une perm +def isperm(L): + return len(set(L)) == len(L) + + +def grapheToList(G): + l2n = range(int(pow(2,n))) + edges = G.edges() + images = range(int(pow(2,n))) + for o in l2n: + e = o + eb= bin(e,n) + for j in range(n): + epb = bin(e,n) + epb[j] = 1-epb[j] + if (o,dec(epb,n)) in edges: + eb[j] = 1-eb[j] + images[o]=dec(eb,n) + return images + +def isomorphic(g1,g2): + GM = isomorphism.DiGraphMatcher(g1,g2) + return GM.is_isomorphic() + +def parcours_p(visited,resG,l): + + t = len(l) + for j in range(t): + lp = l[0:j]+l[j+1:] + G = graphe_de_edges(lp) + if nx.is_strongly_connected(G) : + if all([not(isomorphic(G,g2)) for g2 in visited]): + visited.append(G) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print gtl,len(resG) + parcours_p(visited,resG,G.edges()) + + +def parcours_l_dual(visited,resG,GGedges): + global prof + print "\n en entrant",int(prof),"a visiter",len(visited) + prof -=1 + nvisited =[] + for i in range(len(visited)) : + #if i%10 == 0 : + print "ds calcul",i,len(nvisited) + ld = visited[i].edges() + lr = list(GGedges-set(ld)) + + t = len(lr) + for j in range(t): + lp = [x for x in ld]+[lr[j]] + G= graphe_de_edges(list(GGedges-set(lp))) + if nx.is_strongly_connected(G) : + Gd= graphe_de_edges(lp) + if all([not(isomorphic(Gd,g2)) for g2 in nvisited]): + nvisited.append(Gd) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print "\n",gtl + if nvisited != [] : + parcours_l_dual(nvisited,resG,GGedges) + + +def parcours_l(visited,resG): + global prof + if prof < profM - nbmaxiter : + assert False + print "\n en entrant",int(prof),"a vistier",len(visited) + prof -=1 + nvisited =[] + for i in range(len(visited)) : + #if i%100 == 0 : + #print "ds calcul",i,len(nvisited) + l = visited[i].edges() + t = len(l) + for j in range(t): + lp = l[0:j]+l[j+1:] + G = graphe_de_edges(lp) + if nx.is_strongly_connected(G) : + if all([not(isomorphic(G,g2)) for g2 in nvisited]): + nvisited.append(G) + M = matriceAdjacenceDe(G) + if is_double_stoc(M): + resG.append(G) + gtl = grapheToList(G) + print "\n",gtl + if nvisited != [] : + parcours_l(nvisited,resG) + + + + + +def main(): + global treatedlist + l = range(int(pow(2,n))) + l.reverse() + G = graphe_de_liste(l) + treatedlist = genereTousLesGraphesSansCycleHamiltonien(G) + print treatedlist + #Ginit = nx.DiGraph() + #Ginit.add_edge(0,2) + #resG = [G] + # parcours en profondeur : deux graphes sont voinsin si l'un contient + # un arc de plus que l'autre + #visited=[] + #parcours_p(visited,resG,G.edges()) + #parcours_l([G],resG) + #parcours_l_dual([Ginit],resG,set(G.edges())) + + #print [grapheToList(X) for X in resG] + + + + + +def main_old(): + resl=[] + global treatedlist + if rf != False: + treatedlist =get_treatedlist(rf) + else : + treatedlist = [ perm for perm in permute_in_place(range(8))] + print "taillle de la liste ",len(treatedlist) + res = [] + resG= [] + global n + n= int(log(len(treatedlist[0]))/log(2)) + print "n",n + + nbit = 40 + + l2n = range(int(pow(2,n))) + # pour chaque permutation de l ensemble [0,...,2^[n-1}} + nnb = 0 + #for perm in permute_in_place(range(4)): + D=[0 for x in range(len(treatedlist))] + count=-1 + for perm in treatedlist: + count +=1 + nnb +=1 + #if nnb%1000 == 0 : + # print nnb + # si elle contient un element stable on l enleve (GTPIC n est pas SCC) + if all([ ident!=perm[ident] for ident in l2n]): + # on construit le GTPIC + #G = nx.DiGraph() + G = nx.DiGraph() + # pour chaque noeud + for conf in l2n: + G.add_node(conf) + # r est l'image binaire de conf en parallele + r = bin(perm[conf]) + # on construit poentiellement les n image en unitaire + for cp in range(n): + # confbp est conf sauf en cp ou c'est r[cp] + confbp = bin(conf) + confbp[cp] = r[cp] + # on ajoute l'arc + G.add_edge(conf,dec(confbp)) + flg = False + if nx.is_strongly_connected(G): + if len(resG)==0: + res.append(perm) + resG.append(G) + flg=True + else : + def isomorphic(g1,g2): + GM = isomorphism.DiGraphMatcher(g1,g2) + return GM.is_isomorphic() + if all([not(isomorphic(G,g2)) for g2 in resG]): + resG.append(G) + res.append(perm) + flg=True + #else: + # print "pas scc",perm + if flg == True : + T=[0 for i in l2n] + T[0] = 1 + P = np.zeros((2**n,2**n)) + for i in l2n: + k = 0 + for j in l2n: + L = G.edges() + if i != j : + if (i,j) in L: + P[i][j] = 1/float(n) + k+=1 + P[i][i]=(n-k)/float(n) + + + if is_double_stoc(P): + d=pow(2,n) + t=0 + unif = 1/float(pow(2,n)) + cpt=0 + while (d >0.00001 and t <10000): + cpt+=1 + #print cpt + T =[ sum ([T[j]*P[j][i] for j in l2n]) for i in l2n] + #print T + dp = sum([abs(x-unif) for x in T])*(pow(2,n)) + if dp < d : + D[count] = t + d = dp + t +=1 + #print dp + print perm, t, d, D[count] + resl +=[perm] + print resl + return resl +rf=False + +def options(): + global rf + parser = OptionParser() + parser.add_option("-i", "--input", dest="i", + help="file of sequences") + (options, args) = parser.parse_args() + if (options.i != None): + rf = options.i + + +if __name__ == "__main__": + options() + print "------" + main() + calculetmix(1E-4) + diff --git a/experiments/genHamiltonian.py b/experiments/genHamiltonian.py new file mode 100644 index 0000000..deefc04 --- /dev/null +++ b/experiments/genHamiltonian.py @@ -0,0 +1,279 @@ +import networkx as nx +from networkx.algorithms import isomorphism +from math import * +import numpy as np +from optparse import OptionParser +import random as rd +from copy import * +from combinaisons import * + + +# Implemantation of the balanced gray code algorithm,construction B +# detailled in "Totally Balanced and exponentially Balanced Gray codes", +# A J. van Zanten, I.N. Suparta 2004 + + + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + +def flatten(x): + result = [] + for el in x: + if hasattr(el, "__iter__") and not isinstance(el, basestring): + result.extend(flatten(el)) + else: + result.append(el) + return result + + + +def genereToutesLesSousListes(n,su): + # specificique puisque la taille mini est 2 et commence par [0,1] + print "n",n,"su",su + r= [[0,1]] + for j in xrange(su-2): + print j + rp = [] + for li in r : + for el in range(li[-1]+1,n): + rp += [ li+[el]] + r= [x for x in rp] + return r + + + + + +def extraitSousListe(Snm2,sublisIndex,n): + #l is sublistdindices + nm2 = len(Snm2) + indexOfSnm2 = xrange(nm2) + # l is an even positive number + #assert l >= 0 and l%2 == 0 and l<= nm2 + l = len(sublisIndex) + #print "l",l,"n",n,"len(Snm2)",nm2 + # we have to select l elements, but the two first are always selected + #Silindex = [0,1]+rd.sample(xrange(2,nm2),l-2) + Silindex = sublisIndex + Silindex.sort() + Sil = [Snm2[x] for x in Silindex] + + dif = list(set(indexOfSnm2)-set(Silindex)) + dif.sort() + + Uinitial=[[]] + UinitialIndex = [[]] + cur = 2 + + for k in xrange(2,l): + Uinitial += [[Snm2[x] for x in range(cur,Silindex[k])]] + UinitialIndex = [[x for x in range(cur,Silindex[k])]] + cur = Silindex[k]+1 + v = [Snm2[x] for x in range(cur,nm2)] + + #print "Snm2",Snm2,"Silindex",Silindex,"Sil",Sil,"dif",dif,"Uinitial",Uinitial,"UinitialIndex",UinitialIndex,"v",v + return (Silindex,Sil,Uinitial,v) + + + + +def replace(Silindex,Sil,u,n,l,v): + def uExtended(u,j,n): + # If j is odd, we are in u(n-1,n), and u(n,n-1) otherwise + (X,Y) = (n-1,n) if i%2 == 1 else (n,n-1) + + uir = [_ for _ in u[i]] + uir.reverse() + R = [_ for _ in u[i]]+ [X] + uir + [Y] + [_ for _ in u[i]] + return R + + lu = len(u) + + Up = [n-1]+[uExtended(u,i,n) for i in range(1,lu)] + + U=[] + for j in xrange(l-2+1): + U += [Sil[j]] + U += [Up[j]] + U += [Sil[-1]] + U += v + return flatten(U) + + +def generateGrayCode(Snm2,sublistdindices): + + #Snm2 = [3,2,3,1,3,2,3,1] + n= int(log(len(Snm2))/log(2))+2 + l=int(pow(2,n)/n) + #step 1 + (Silindex,Sil,Uinitial,v) = extraitSousListe(Snm2,sublistdindices,n) + + + #step 2 : replace in Snm2 and genereate U + U = replace(Silindex,Sil,Uinitial,n,l,v) + + #step 3 : compute V and W + V = [_ for _ in v] + V.reverse() + V += [n] + [_ for _ in v] + W = [n-1] + [_ for _ in Snm2] +[n] + + #step 4 : swap value n-1 and s1 in W + Wp = [W[1]] + [n-1] + [_ for _ in W[2:]] + + #step 5 : generate Sn + Ur = [_ for _ in U] + Ur.reverse() + + Sn = Ur + V + Wp + return Sn + + +def is_totallyBalanced(l): + res = [0 for _ in range(max(l))] + for j in l : + res[j-1] +=1 + return (max(res) == min(res)) + +def is_onlyBalanced(l): + res = [0 for _ in range(max(l))] + for j in l : + res[j-1] +=1 + return max(res)- min(res) < 3 + + +def grapheToList(G,n): + l2n = range(int(pow(2,n))) + edges = G.edges() + images = range(int(pow(2,n))) + for o in l2n: + e = o + eb= bin(e,n) + for j in range(n): + epb = bin(e,n) + epb[j] = 1-epb[j] + if (o,dec(epb,n)) in edges: + eb[j] = 1-eb[j] + images[o]=dec(eb,n) + return images + + +def Sn2map(l): + n= int(log(len(l))/log(2)) + init = bin(0,n) + cheminb=[] + a = copy(init) + for i in l: + a[n-i] = 1 - a[n-i] + cheminb += [copy(a)] + chemin=[dec(x,n) for x in cheminb] + lc = len(chemin) + enl=[(chemin[i%lc],chemin[(i+1)%lc]) for i in range(lc)] + assert len(set(range(int(pow(2,n))))-set(chemin)) == 0 + # cheminp est le chemin hamiltonien correspondant a l + # on construit la fonction sans ce chemin hamiltonien + G = nx.DiGraph() + for i in range(2**n): + ib = bin(i,n) + for k in range(n): + ibp = [_ for _ in ib] + ibp[k]=1-ibp[k] + # si l'arrete ne doit pas etre enlevee + if (i,dec(ibp,n)) not in enl : + G.add_edge(i,dec(ibp,n)) + + #resl = grapheToList(G,n) + return (G,grapheToList(G,n)) + + + + + + +def main(): + snm2 = [[1,2,1,2]] + #snm2 = [[4, 5, 6, 2, 6, 5, 1, 5, 6, 2, 6, 5, 3, 5, 6, 1, 6, 5, 4, 5, 6, 1, 3, 2, 3, 4, 1, 4, 6, 4, 1, 4, 3, 2, 3, 5, 3, 2, 3, 4, 1, 4, 3, 5, 2, 6, 2, 5, 3, 4, 1, 4, 3, 2, 3, 1, 4, 1, 3, 2, 1, 2, 4, 6]] + resG=[] + p = 3 + for k in range(p): + print "taille de snm2", len(snm2) + snm2p = [] + for sn in snm2 : + n= int(log(len(sn))/log(2))+2 + ln= int(pow(2,n)/n) + #subls = genereToutesLesSousListes(int(pow(2,n-2)),ln) + #print "subls",subls + ll = range(int(pow(2,n-2))) + #for l in subls: + compteur = 0 + for l in xuniqueCombinations(ll[2:], ln-2): + compteur +=1 + l = [0,1]+l + nouveauCode = generateGrayCode(sn,l) + + + flg = False + + (G,nc) = Sn2map(nouveauCode) + #on verifie que la fonction est nouvelle + if nx.is_strongly_connected(G): + if len(resG)==0: + resG.append(G) + flg=True + else : + def isomorphic(g1,g2): + GM = isomorphism.DiGraphMatcher(g1,g2) + return GM.is_isomorphic() + if all([not(isomorphic(G,g2)) for g2 in resG]): + resG.append(G) + flg=True + if is_onlyBalanced(nouveauCode) : + snm2p +=[nouveauCode] + if is_totallyBalanced(nouveauCode) : + print "TB", nc + else : + print "OB", nc + snm2=deepcopy(snm2p) + + + + + + + +def options(): + global rf + parser = OptionParser() + parser.add_option("-i", "--input", dest="i", + help="file of sequences") + (options, args) = parser.parse_args() + if (options.i != None): + rf = options.i + + +if __name__ == "__main__": + options() + print "------" + main() + + diff --git a/experiments/genPrologFile.py b/experiments/genPrologFile.py new file mode 100644 index 0000000..c166ee9 --- /dev/null +++ b/experiments/genPrologFile.py @@ -0,0 +1,109 @@ + + + +n=2 +deuxExpN = pow(2,n) + + + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + +def dist(i,j): + ib = bin(i,deuxExpN) + jb = bin(j,deuxExpN) + return sum([1 if ib[k] !=jb[k] else 0 for k in range(deuxExpN)]) + +st = "sc"+str(n)+"(X1):-\n" +for i in range(1,deuxExpN): + st += "\t mmult(X1,X"+str(i)+",X"+str(i+1)+"),\n" +st += "\t summ(X1,X2,S2),\n" +for i in range(2,deuxExpN): + st += "\t summ(S"+str(i)+",X"+str(i+1)+",S"+str(i+1)+"),\n" +st += "\t touspositifs(S"+str(deuxExpN)+").\n\n" + + + + +st += "bistoc(X):-\n" +# construction de X +X=[] +for i in range(deuxExpN): + XL=[] + for j in range(deuxExpN) : + XL.append('M'+str(i)+"X"+str(j)) + + X.append(XL) + + +st += "\t X=" +str(X).replace('\'','')+",\n" + +# domaine des variables +for i in range(deuxExpN): + for j in range(deuxExpN): + if dist(i,j)> 1 : + st += "\t M"+str(i)+"X"+str(j)+" is 0 ,\n" + else : + if i == j : + st += "\t M"+str(i)+"X"+str(j)+" in 0.."+str(n)+",\n" + else : + st += "\t M"+str(i)+"X"+str(j)+" in 0..1"+",\n" + +# stochastiques + +for i in range(deuxExpN): + stl ="" + for j in range(deuxExpN): + stl += "M"+str(i)+"X"+str(j) +"+ " + stl = stl[:-2] + st += "\t "+stl + " #="+str(n)+" ,\n" + + +# bistochastiques + +for i in range(deuxExpN): + stl,stlb ="","" + for j in range(deuxExpN): + stlb += "M"+str(j)+"X"+str(i) +"+ " + stlb = stlb[:-2] + st += "\t "+stlb + " #="+str(n)+" ,\n" + + +# label +lbl= [] +for i in range(deuxExpN): + for j in range(deuxExpN): + lbl.append('M'+str(i)+"X"+str(j)) + +st += "\t label("+ str(lbl).replace('\'','')+"),\n" + +st+= "\t sc"+str(n)+"(X), \n" +st+= "\t open('res"+str(n)+".txt',append,Stream),\n" +st+= "\t write(Stream,X),\n" +st+= "\t close(Stream).\n\n" + +print st + + +""" + sc2(X). +""" diff --git a/experiments/hamiltonien4.txt b/experiments/hamiltonien4.txt new file mode 100644 index 0000000..bbcc33f --- /dev/null +++ b/experiments/hamiltonien4.txt @@ -0,0 +1,15 @@ +------ +[[14, 6, 12, 4, 15, 11, 8, 10, 5, 7, 13, 0, 1, 3, 9, 2], [14, 6, 12, 4, 15, 8, 1, 9, 5, 7, 13, 0, 11, 10, 3, 2], [14, 6, 12, 4, 15, 8, 11, 9, 5, 7, 13, 0, 2, 10, 3, 1], [14, 6, 12, 4, 15, 2, 8, 10, 5, 7, 13, 0, 11, 3, 9, 1], [14, 6, 12, 4, 15, 11, 1, 9, 5, 7, 13, 0, 2, 10, 3, 8], [14, 6, 9, 8, 15, 11, 1, 10, 5, 7, 13, 12, 2, 0, 3, 4], [14, 6, 9, 4, 15, 11, 8, 12, 5, 7, 13, 0, 2, 10, 3, 1], [14, 6, 9, 13, 15, 2, 8, 10, 5, 7, 4, 12, 11, 0, 3, 1], [14, 6, 9, 13, 15, 11, 8, 0, 5, 7, 4, 12, 2, 10, 3, 1], [14, 6, 15, 8, 3, 11, 13, 10, 5, 7, 4, 12, 2, 0, 9, 1], [14, 6, 15, 8, 9, 11, 13, 0, 5, 7, 4, 12, 2, 10, 3, 1]] +n 4 +F_1 [14, 6, 12, 4, 15, 11, 8, 10, 5, 7, 13, 0, 1, 3, 9, 2] 18 39 +F_2 [14, 6, 12, 4, 15, 8, 1, 9, 5, 7, 13, 0, 11, 10, 3, 2] 15 34 +F_3 [14, 6, 12, 4, 15, 8, 11, 9, 5, 7, 13, 0, 2, 10, 3, 1] 15 34 +F_4 [14, 6, 12, 4, 15, 2, 8, 10, 5, 7, 13, 0, 11, 3, 9, 1] 20 41 +F_5 [14, 6, 12, 4, 15, 11, 1, 9, 5, 7, 13, 0, 2, 10, 3, 8] 13 32 +F_6 [14, 6, 9, 8, 15, 11, 1, 10, 5, 7, 13, 12, 2, 0, 3, 4] 13 32 +F_7 [14, 6, 9, 4, 15, 11, 8, 12, 5, 7, 13, 0, 2, 10, 3, 1] 15 34 +F_8 [14, 6, 9, 13, 15, 2, 8, 10, 5, 7, 4, 12, 11, 0, 3, 1] 15 34 +F_9 [14, 6, 9, 13, 15, 11, 8, 0, 5, 7, 4, 12, 2, 10, 3, 1] 18 38 +F_10 [14, 6, 15, 8, 3, 11, 13, 10, 5, 7, 4, 12, 2, 0, 9, 1] 13 32 +F_11 [14, 6, 15, 8, 9, 11, 13, 0, 5, 7, 4, 12, 2, 10, 3, 1] 16 36 +[([14, 6, 12, 4, 15, 11, 1, 9, 5, 7, 13, 0, 2, 10, 3, 8], 13, 32), ([14, 6, 9, 8, 15, 11, 1, 10, 5, 7, 13, 12, 2, 0, 3, 4], 13, 32), ([14, 6, 15, 8, 3, 11, 13, 10, 5, 7, 4, 12, 2, 0, 9, 1], 13, 32), ([14, 6, 12, 4, 15, 8, 1, 9, 5, 7, 13, 0, 11, 10, 3, 2], 15, 34), ([14, 6, 12, 4, 15, 8, 11, 9, 5, 7, 13, 0, 2, 10, 3, 1], 15, 34), ([14, 6, 9, 4, 15, 11, 8, 12, 5, 7, 13, 0, 2, 10, 3, 1], 15, 34), ([14, 6, 9, 13, 15, 2, 8, 10, 5, 7, 4, 12, 11, 0, 3, 1], 15, 34), ([14, 6, 15, 8, 9, 11, 13, 0, 5, 7, 4, 12, 2, 10, 3, 1], 16, 36), ([14, 6, 12, 4, 15, 11, 8, 10, 5, 7, 13, 0, 1, 3, 9, 2], 18, 39), ([14, 6, 9, 13, 15, 11, 8, 0, 5, 7, 4, 12, 2, 10, 3, 1], 18, 38), ([14, 6, 12, 4, 15, 2, 8, 10, 5, 7, 13, 0, 11, 3, 9, 1], 20, 41)] diff --git a/experiments/hamiltonien5.txt b/experiments/hamiltonien5.txt new file mode 100644 index 0000000..e69de29 diff --git a/experiments/iter_f0d.eps b/experiments/iter_f0d.eps new file mode 100644 index 0000000..e69de29 diff --git a/experiments/mtrx.pl b/experiments/mtrx.pl new file mode 100644 index 0000000..f820f6c --- /dev/null +++ b/experiments/mtrx.pl @@ -0,0 +1,54 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + + + +suml([],[],[]). + +suml(L1,L2,[N|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + N is E1 + E2, + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #>= 0, + tp(L). + diff --git a/experiments/prng.py b/experiments/prng.py new file mode 100644 index 0000000..0d6e0bc --- /dev/null +++ b/experiments/prng.py @@ -0,0 +1,108 @@ +from random import * +import numpy as np +from time import * +from math import * +from random import * + + + +# let elem be a integer. +# This function returns the binary value of elem +# expressed on n bits. +def bin(elem,n): + q = -1 + res =[0 for i in range(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + + +# let ch be a binary number expressed on n bits. +# This function returns the decimal value of this +# binary number. +def dec(ch,n): + l = len(ch) + acc = 0 + for i in range(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + + +# Let be given a function f defined as a list of size 2^n +# that contains the images f[x] of the element at index x +# where x is an index, 0 <= x <= 2^n-1. +# Let X be an index, 0 <= x <= 2^n-1, and k be an index, 0 <= k <= n-1, +# this function returns the map fp such that fp[x][k] = y +# where y is x except at bit k where the value is the bit f[x][k]. +def f_to_map(f): + # size of + lf = len(f) + # number of bits + n= int(log(len(f))/log(2)) + # fp is the returned two dimensional array + fp = np.zeros((2**n,n)) + for i in xrange(lf): + ib = bin(i,n) + imgib = bin(f[i],n) + for j in xrange(n): + ibp = [_ for _ in ib] + ibp[j] = imgib[j] + fp[i,j] = dec(ibp,n) + return fp + + + +# let fmap be a function expressed as a map. +# let n be the largest value returned by the prng (i.e. the number of bits) +# let randf be a prng that can return integer from 0 to n-1 +# let b be the number of iterations +# le x0 be a integer value such that 0 <= x0 <= 2^n-1 +def ourPrng(fmap,n,randf,b,x0): + x = x0 + for _ in xrange(b): + s = randf(0,n-1) + x = fmap[x][s] + return x + + + +# Let be given a function f defined as a list of size N +# that contains the images f[x] of the element at index x and +# let b be the number of iterations that has to be executed and +# rand be a prng that can randomly find integer between two bounds. +# This function cumputes the NxN array successors such that +# successors[i][j] is the number of times i has been followed by j +# where 0 <= i <= N-1 and 0 <= j <= N-1. +def testPrng(f,rand,b): + lf = len(f) + successors=[[0 for _ in range(lf)] for _ in range(lf)] + x0 = 0 + fp = f_to_map(f) + n= int(log(len(f))/log(2)) + for _ in range(lf*lf*1000): + old_x = x0 + x0 = int(ourPrng(fp,n,rand,b,x0)) + successors[old_x][x0] +=1 + return successors + +def main(): + l1 = testPrng([13, 10, 9, 14, 3, 11, 1, 12, 15, 4, 7, 5, 2, 6, 0, 8],randint,32) + print l1 + l2 = testPrng([55, 60, 45, 56, 58, 62, 61, 40, 53, 38, 52, 54, 35, 51, 33, 49, 39, 14, 47, 46, 59, 43, 57, 44, 37, 6, 36, 4, 3, 50, 1, 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 15, 2, 7, 5, 11, 34, 9, 32],randint,49) + print l2 + l3 = testPrng([223, 250, 249, 254, 187, 234, 241, 252, 183, 230, 229, 180, 227, 178, 240, 248, 237, 236, 253, 172, 251, 238, 201, 224, 247, 166, 165, 244, 163, 242, 161, 225, 215, 220, 205, 216, 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209, 239, 142, 207, 206, 139, 203, 193, 136, 135, 196, 199, 132, 194, 130, 129, 200, 159, 186, 185, 190, 59, 170, 177, 188, 191, 246, 245, 52, 243, 50, 176, 184, 173, 46, 189, 174, 235, 42, 233, 232, 231, 38, 37, 228, 35, 226, 33, 168, 151, 156, 141, 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153, 145, 175, 14, 143, 204, 11, 202, 169, 8, 7, 198, 197, 4, 195, 2, 1, 192, 255, 124, 109, 120, 107, 126, 125, 112, 103, 114, 116, 100, 123, 98, 121, 113, 79, 106, 111, 110, 75, 122, 97, 108, 71, 118, 117, 68, 115, 66, 96, 104, 127, 90, 89, 94, 83, 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72, 74, 78, 105, 64, 69, 102, 101, 70, 99, 67, 73, 65, 55, 60, 45, 56, 51, 62, 61, 48, 119, 182, 181, 53, 179, 54, 57, 49, 15, 44, 47, 40, 171, 58, 9, 32, 167, 6, 5, 164, 3, 162, 41, 160, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16, 24, 13, 10, 29, 140, 43, 138, 137, 12, 39, 134, 133, 36, 131, 34, 0, 128],randint,75) + print l3 + + +if __name__ == "__main__": + main() + + + diff --git a/experiments/qian/analyseReport.py b/experiments/qian/analyseReport.py new file mode 100644 index 0000000..8e24efc --- /dev/null +++ b/experiments/qian/analyseReport.py @@ -0,0 +1,84 @@ +lf = ['finalAnalysisReport_jf_oldci_stable_b_4bit.txt', 'finalAnalysisReport_jf_oldci_stable_b_6bit.txt','finalAnalysisReport_jf_oldci_stable_b_8bit.txt'] + +fd =[open(f,"r") for f in lf] + +lignes=[fdi.readlines()[7:] for fdi in fd] + +label = ["Frequency (Monobit)","Frequency within a Block","Runs","Longest Run of Ones in a Block","Binary Matrix Rank","Discrete Fourier Transform (Spectral)","Non-overlapping Template Matching*","Overlapping Template Matching","Maurer's \"Universal Statistical\"","Linear Complexity","Serial* (m=10)","Approximate Entropy (m=10)","Cumulative Sums (Cusum) *","Random Excursions *","Random Excursions Variant *"] + +endl="\\\\ \\hline \n" + + +st="" + +#freq + +def traitenlignes(num1,num2): + sti="" + for l in lignes: + #calcul des moyennes mv ms + mv,ms=0,0 + for j in range(num1,num2+1): + + stl=[] + for x in l[j].split(" "): + if x !='': + stl += [x] + + idxdiv = 0 + for i in range(len(stl)): + if stl[i].find('/') != -1: + idxdiv = i + mv += float(stl[idxdiv-1]) + rate = stl[idxdiv].split("/") + ms += float(rate[0])/float(rate[1]) + + sti += "& " + str(mv/(num2-num1+1))[:5] + " (" + str(ms/(num2-num1+1))[0:5] +")" + return sti + endl + + + +def traite1ligne(numl): + sti="" + for l in lignes: + stl=[] + splitee = l[numl].split(" ") + for x in l[numl].split(" "): + if x !='': + stl += [x] + + idxdiv = 0 + for i in range(len(stl)): + #print splitee[i],i + if stl[i].find('/') != -1: + idxdiv = i + #print idxdiv + + r = str(float(stl[idxdiv].split("/")[0])/100) + sti += "& " + stl[idxdiv-1][:5] + " (" + r[0:5]+")" + return sti + endl + +st += label[0] + traite1ligne(0) +st += label[1] + traite1ligne(1) +st += label[2] + traite1ligne(4) +st += label[3] + traite1ligne(5) +st += label[4] + traite1ligne(6) +st += label[5] + traite1ligne(7) +st += label[6] + traitenlignes(8,155) +st += label[7] + traite1ligne(156) +st += label[8] + traite1ligne(157) +st += label[9] + traite1ligne(185) +st += label[10] + traitenlignes(185,186) +st += label[11] + traite1ligne(187) +st += label[12] + traitenlignes(2,3) +st += label[13] + traitenlignes(159,166) +st += label[14] + traitenlignes(167,184) + + +print st + + + + + + diff --git a/experiments/qian/analyseReport.py~ b/experiments/qian/analyseReport.py~ new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/experiments/qian/analyseReport.py~ @@ -0,0 +1 @@ + diff --git a/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_4bit.txt b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_4bit.txt new file mode 100644 index 0000000..a482892 --- /dev/null +++ b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_4bit.txt @@ -0,0 +1,208 @@ +------------------------------------------------------------------------------ +RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES +------------------------------------------------------------------------------ + generator is +------------------------------------------------------------------------------ + C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST +------------------------------------------------------------------------------ + 9 10 10 6 13 9 9 15 7 12 0.678686 99/100 Frequency + 12 5 8 16 5 15 6 13 11 9 0.102526 99/100 BlockFrequency + 9 8 5 12 11 12 9 14 9 11 0.759756 99/100 CumulativeSums + 9 7 13 12 5 6 10 15 11 12 0.401199 99/100 CumulativeSums + 12 12 10 6 12 5 17 5 10 11 0.171867 98/100 Runs + 9 12 13 7 4 9 11 11 6 18 0.115387 98/100 LongestRun + 10 6 11 9 14 11 7 13 14 5 0.401199 97/100 Rank + 14 12 10 10 13 8 8 12 9 4 0.554420 98/100 FFT + 8 9 9 10 14 10 10 16 6 8 0.554420 100/100 NonOverlappingTemplate + 7 10 12 10 2 13 8 5 17 16 0.017912 100/100 NonOverlappingTemplate + 9 8 12 11 10 13 8 7 12 10 0.935716 98/100 NonOverlappingTemplate + 8 15 11 6 5 8 7 13 12 15 0.202268 100/100 NonOverlappingTemplate + 12 14 10 7 8 7 16 6 10 10 0.401199 99/100 NonOverlappingTemplate + 12 11 12 11 11 7 13 5 9 9 0.779188 99/100 NonOverlappingTemplate + 12 13 10 7 3 9 11 13 10 12 0.474986 96/100 NonOverlappingTemplate + 9 12 11 6 11 11 11 12 7 10 0.924076 98/100 NonOverlappingTemplate + 9 10 11 12 9 11 12 7 13 6 0.867692 99/100 NonOverlappingTemplate + 10 10 8 10 11 6 17 16 6 6 0.129620 99/100 NonOverlappingTemplate + 11 8 16 13 6 2 8 11 9 16 0.045675 98/100 NonOverlappingTemplate + 7 12 14 10 15 8 11 5 8 10 0.455937 100/100 NonOverlappingTemplate + 15 7 12 14 10 11 9 6 12 4 0.262249 99/100 NonOverlappingTemplate + 8 10 9 13 11 8 14 11 13 3 0.401199 99/100 NonOverlappingTemplate + 8 9 7 22 9 8 4 11 10 12 0.015598 99/100 NonOverlappingTemplate + 9 7 6 14 11 14 16 8 8 7 0.262249 99/100 NonOverlappingTemplate + 7 10 6 11 14 12 12 11 5 12 0.534146 99/100 NonOverlappingTemplate + 7 14 7 14 7 8 17 8 9 9 0.224821 100/100 NonOverlappingTemplate + 8 12 9 9 7 10 12 14 11 8 0.883171 100/100 NonOverlappingTemplate + 11 8 6 12 10 8 12 14 9 10 0.834308 100/100 NonOverlappingTemplate + 10 10 11 14 13 8 11 7 7 9 0.834308 100/100 NonOverlappingTemplate + 8 7 8 14 6 7 17 8 17 8 0.058984 98/100 NonOverlappingTemplate + 12 10 8 8 6 9 10 11 11 15 0.779188 98/100 NonOverlappingTemplate + 8 7 11 9 11 12 10 10 12 10 0.983453 100/100 NonOverlappingTemplate + 17 8 6 10 7 10 11 8 12 11 0.455937 96/100 NonOverlappingTemplate + 8 6 16 8 10 10 12 11 9 10 0.678686 99/100 NonOverlappingTemplate + 9 11 8 5 14 13 11 8 13 8 0.595549 99/100 NonOverlappingTemplate + 9 13 9 10 4 10 14 8 13 10 0.574903 98/100 NonOverlappingTemplate + 8 9 17 7 7 12 4 10 11 15 0.129620 100/100 NonOverlappingTemplate + 6 5 11 7 13 6 14 11 5 22 0.001895 99/100 NonOverlappingTemplate + 10 7 12 6 10 10 9 10 12 14 0.834308 99/100 NonOverlappingTemplate + 8 14 13 8 13 9 10 7 9 9 0.798139 99/100 NonOverlappingTemplate + 5 9 15 9 11 8 10 12 9 12 0.678686 100/100 NonOverlappingTemplate + 5 9 12 8 12 9 18 8 9 10 0.289667 98/100 NonOverlappingTemplate + 10 5 5 6 9 15 14 12 12 12 0.213309 98/100 NonOverlappingTemplate + 6 14 10 12 5 14 7 11 12 9 0.419021 100/100 NonOverlappingTemplate + 7 15 5 7 12 15 9 9 11 10 0.350485 100/100 NonOverlappingTemplate + 9 16 10 7 12 8 12 9 9 8 0.699313 99/100 NonOverlappingTemplate + 10 13 14 6 9 9 10 9 9 11 0.867692 98/100 NonOverlappingTemplate + 11 13 8 11 5 7 11 11 9 14 0.657933 99/100 NonOverlappingTemplate + 10 15 11 8 12 9 9 11 9 6 0.798139 100/100 NonOverlappingTemplate + 10 8 15 9 7 12 7 12 11 9 0.759756 100/100 NonOverlappingTemplate + 11 12 10 11 13 10 8 13 9 3 0.554420 98/100 NonOverlappingTemplate + 16 7 8 12 13 12 10 3 14 5 0.075719 100/100 NonOverlappingTemplate + 15 11 15 9 14 3 6 8 12 7 0.090936 100/100 NonOverlappingTemplate + 9 8 6 7 11 9 10 13 11 16 0.554420 98/100 NonOverlappingTemplate + 14 5 7 7 10 12 13 7 14 11 0.366918 97/100 NonOverlappingTemplate + 7 7 15 10 14 6 10 9 8 14 0.383827 99/100 NonOverlappingTemplate + 9 9 13 12 8 10 11 7 11 10 0.964295 99/100 NonOverlappingTemplate + 5 17 6 16 5 6 12 14 10 9 0.026948 100/100 NonOverlappingTemplate + 6 12 9 10 11 8 9 8 15 12 0.739918 99/100 NonOverlappingTemplate + 3 13 7 12 8 6 8 13 11 19 0.028817 100/100 NonOverlappingTemplate + 6 12 10 10 11 12 11 10 9 9 0.971699 98/100 NonOverlappingTemplate + 12 14 8 13 9 8 7 11 8 10 0.816537 99/100 NonOverlappingTemplate + 13 14 8 8 9 9 8 12 9 10 0.883171 99/100 NonOverlappingTemplate + 11 10 9 12 10 12 6 14 5 11 0.657933 99/100 NonOverlappingTemplate + 8 7 11 5 14 15 11 9 12 8 0.437274 99/100 NonOverlappingTemplate + 6 11 10 12 12 12 11 10 7 9 0.911413 100/100 NonOverlappingTemplate + 8 7 9 9 13 5 13 12 9 15 0.455937 99/100 NonOverlappingTemplate + 10 6 11 12 6 11 10 13 10 11 0.851383 100/100 NonOverlappingTemplate + 15 6 13 11 14 9 7 9 10 6 0.401199 97/100 NonOverlappingTemplate + 5 7 13 11 14 9 12 10 13 6 0.437274 100/100 NonOverlappingTemplate + 12 10 7 7 8 10 11 16 13 6 0.455937 100/100 NonOverlappingTemplate + 10 9 11 5 9 18 11 8 8 11 0.334538 100/100 NonOverlappingTemplate + 11 10 9 9 16 12 9 6 10 8 0.699313 99/100 NonOverlappingTemplate + 8 9 8 8 12 9 11 15 10 10 0.883171 100/100 NonOverlappingTemplate + 9 7 14 10 16 10 7 17 5 5 0.048716 99/100 NonOverlappingTemplate + 6 14 8 13 8 11 15 7 10 8 0.455937 100/100 NonOverlappingTemplate + 8 9 13 10 7 11 11 9 13 9 0.935716 100/100 NonOverlappingTemplate + 11 12 11 8 10 13 4 13 7 11 0.595549 99/100 NonOverlappingTemplate + 16 7 14 8 8 5 10 12 11 9 0.350485 96/100 NonOverlappingTemplate + 7 5 9 8 7 11 11 13 15 14 0.350485 99/100 NonOverlappingTemplate + 7 14 10 16 9 8 7 8 9 12 0.494392 98/100 NonOverlappingTemplate + 10 8 9 14 8 11 8 9 9 14 0.851383 100/100 NonOverlappingTemplate + 8 9 9 10 14 10 10 16 6 8 0.554420 100/100 NonOverlappingTemplate + 17 6 9 9 12 10 7 7 14 9 0.304126 98/100 NonOverlappingTemplate + 7 15 8 6 8 9 14 10 14 9 0.419021 98/100 NonOverlappingTemplate + 12 10 12 10 13 6 4 12 11 10 0.595549 100/100 NonOverlappingTemplate + 13 11 10 7 13 7 11 14 7 7 0.616305 98/100 NonOverlappingTemplate + 5 16 10 8 10 13 13 10 10 5 0.289667 99/100 NonOverlappingTemplate + 6 12 8 13 9 15 10 8 11 8 0.657933 98/100 NonOverlappingTemplate + 11 11 11 10 9 14 12 4 7 11 0.637119 97/100 NonOverlappingTemplate + 9 7 9 6 11 9 12 15 10 12 0.719747 99/100 NonOverlappingTemplate + 20 8 16 6 7 4 11 13 9 6 0.006661 98/100 NonOverlappingTemplate + 11 10 10 12 8 9 10 9 11 10 0.998821 99/100 NonOverlappingTemplate + 7 11 9 10 10 5 11 15 13 9 0.616305 98/100 NonOverlappingTemplate + 11 12 14 10 11 11 17 5 4 5 0.071177 100/100 NonOverlappingTemplate + 17 11 9 11 15 4 9 11 7 6 0.122325 99/100 NonOverlappingTemplate + 7 10 9 6 7 17 10 14 11 9 0.334538 99/100 NonOverlappingTemplate + 10 6 7 11 9 13 7 14 11 12 0.678686 100/100 NonOverlappingTemplate + 6 12 10 9 10 5 11 12 12 13 0.699313 100/100 NonOverlappingTemplate + 8 8 11 15 10 8 12 11 11 6 0.739918 100/100 NonOverlappingTemplate + 16 7 10 12 11 11 11 6 8 8 0.574903 97/100 NonOverlappingTemplate + 12 7 12 8 12 11 6 14 6 12 0.554420 100/100 NonOverlappingTemplate + 19 8 8 13 11 11 8 10 7 5 0.129620 98/100 NonOverlappingTemplate + 16 13 12 8 8 10 11 5 14 3 0.096578 97/100 NonOverlappingTemplate + 8 14 9 8 12 6 11 8 8 16 0.437274 100/100 NonOverlappingTemplate + 13 12 7 7 7 10 7 14 9 14 0.514124 99/100 NonOverlappingTemplate + 9 6 6 7 13 10 14 5 15 15 0.115387 100/100 NonOverlappingTemplate + 6 12 12 13 7 11 13 8 10 8 0.739918 99/100 NonOverlappingTemplate + 11 16 12 5 12 10 12 8 11 3 0.171867 99/100 NonOverlappingTemplate + 4 10 10 11 10 6 11 13 10 15 0.455937 98/100 NonOverlappingTemplate + 13 4 13 10 11 13 11 9 6 10 0.514124 98/100 NonOverlappingTemplate + 8 8 10 9 11 12 12 13 14 3 0.419021 99/100 NonOverlappingTemplate + 10 13 7 9 11 11 11 8 7 13 0.883171 100/100 NonOverlappingTemplate + 10 3 9 15 10 15 10 6 13 9 0.181557 99/100 NonOverlappingTemplate + 9 11 13 4 15 6 8 9 13 12 0.304126 99/100 NonOverlappingTemplate + 9 11 13 7 12 9 8 7 15 9 0.699313 100/100 NonOverlappingTemplate + 14 6 13 9 14 8 11 8 4 13 0.262249 99/100 NonOverlappingTemplate + 8 15 7 12 8 12 10 8 8 12 0.719747 100/100 NonOverlappingTemplate + 9 9 6 10 12 14 15 8 10 7 0.574903 98/100 NonOverlappingTemplate + 12 13 9 12 13 8 8 9 9 7 0.867692 100/100 NonOverlappingTemplate + 14 9 8 7 13 13 10 11 6 9 0.678686 100/100 NonOverlappingTemplate + 5 10 13 10 7 13 8 11 9 14 0.595549 98/100 NonOverlappingTemplate + 7 5 15 14 10 8 12 8 9 12 0.419021 100/100 NonOverlappingTemplate + 10 14 8 9 14 5 8 9 12 11 0.616305 97/100 NonOverlappingTemplate + 9 19 12 8 9 10 5 10 5 13 0.090936 99/100 NonOverlappingTemplate + 8 14 10 8 10 11 9 9 17 4 0.262249 99/100 NonOverlappingTemplate + 12 11 10 9 12 7 11 7 13 8 0.897763 98/100 NonOverlappingTemplate + 11 15 11 12 10 8 9 10 5 9 0.719747 99/100 NonOverlappingTemplate + 11 16 12 7 10 9 13 13 6 3 0.145326 100/100 NonOverlappingTemplate + 14 14 6 7 12 10 14 7 8 8 0.401199 99/100 NonOverlappingTemplate + 11 7 14 4 9 9 9 11 12 14 0.474986 99/100 NonOverlappingTemplate + 8 8 12 15 14 7 7 11 9 9 0.595549 99/100 NonOverlappingTemplate + 10 13 10 10 10 7 5 14 10 11 0.739918 99/100 NonOverlappingTemplate + 10 6 8 10 14 11 9 9 10 13 0.851383 100/100 NonOverlappingTemplate + 12 7 15 11 9 15 9 8 5 9 0.383827 99/100 NonOverlappingTemplate + 9 10 9 9 10 11 14 13 7 8 0.897763 98/100 NonOverlappingTemplate + 8 9 15 12 15 8 12 9 9 3 0.224821 100/100 NonOverlappingTemplate + 11 9 9 14 14 12 6 5 11 9 0.514124 100/100 NonOverlappingTemplate + 10 15 7 12 12 3 12 13 9 7 0.249284 98/100 NonOverlappingTemplate + 7 9 7 12 9 7 7 13 15 14 0.419021 100/100 NonOverlappingTemplate + 13 10 11 8 13 7 2 11 14 11 0.249284 100/100 NonOverlappingTemplate + 9 18 8 11 10 15 7 9 8 5 0.145326 97/100 NonOverlappingTemplate + 8 12 11 8 16 12 6 8 7 12 0.474986 100/100 NonOverlappingTemplate + 11 11 10 14 8 16 5 13 6 6 0.191687 99/100 NonOverlappingTemplate + 11 8 11 10 10 10 7 9 13 11 0.978072 99/100 NonOverlappingTemplate + 5 12 14 8 7 10 13 13 9 9 0.554420 100/100 NonOverlappingTemplate + 11 11 10 7 12 6 11 8 10 14 0.816537 99/100 NonOverlappingTemplate + 12 9 7 8 7 14 10 12 10 11 0.851383 99/100 NonOverlappingTemplate + 8 12 8 12 9 10 10 9 14 8 0.924076 99/100 NonOverlappingTemplate + 13 11 3 4 7 12 15 12 16 7 0.032923 100/100 NonOverlappingTemplate + 12 15 8 5 10 13 13 7 8 9 0.437274 100/100 NonOverlappingTemplate + 9 7 6 9 10 13 14 7 14 11 0.554420 99/100 NonOverlappingTemplate + 8 9 8 8 16 10 9 11 10 11 0.816537 98/100 NonOverlappingTemplate + 13 7 8 3 14 12 15 5 13 10 0.090936 99/100 NonOverlappingTemplate + 8 6 4 12 9 11 8 15 11 16 0.171867 100/100 NonOverlappingTemplate + 10 8 9 14 9 10 8 9 9 14 0.883171 100/100 NonOverlappingTemplate + 17 9 13 8 8 11 6 11 8 9 0.437274 99/100 OverlappingTemplate + 14 7 9 3 11 14 15 7 11 9 0.171867 99/100 Universal + 7 11 14 6 9 10 14 7 10 12 0.616305 100/100 ApproximateEntropy + 7 6 2 10 5 8 5 6 2 6 0.224821 55/57 RandomExcursions + 9 5 6 4 8 6 2 7 4 6 0.474986 55/57 RandomExcursions + 6 4 4 11 8 10 4 4 2 4 0.048716 56/57 RandomExcursions + 8 9 5 8 1 7 4 2 8 5 0.102526 55/57 RandomExcursions + 12 2 6 10 2 3 5 4 8 5 0.010988 57/57 RandomExcursions + 9 8 5 7 4 7 2 6 4 5 0.437274 57/57 RandomExcursions + 9 5 8 4 4 7 6 2 5 7 0.437274 55/57 RandomExcursions + 11 7 7 4 4 3 7 6 3 5 0.224821 57/57 RandomExcursions + 8 7 6 6 9 4 4 5 2 6 0.474986 56/57 RandomExcursionsVariant + 8 8 8 4 7 4 6 4 2 6 0.437274 57/57 RandomExcursionsVariant + 6 11 2 9 10 4 0 4 4 7 0.004629 56/57 RandomExcursionsVariant + 6 7 10 9 9 0 8 2 2 4 0.006196 56/57 RandomExcursionsVariant + 8 5 8 12 7 3 7 1 3 3 0.014550 56/57 RandomExcursionsVariant + 8 4 11 5 7 7 4 2 4 5 0.162606 55/57 RandomExcursionsVariant + 5 6 5 3 8 5 8 6 6 5 0.834308 57/57 RandomExcursionsVariant + 8 5 4 10 5 1 5 4 7 8 0.162606 57/57 RandomExcursionsVariant + 12 4 6 4 5 4 6 6 6 4 0.249284 55/57 RandomExcursionsVariant + 8 5 6 5 3 9 3 7 3 8 0.334538 57/57 RandomExcursionsVariant + 6 9 3 6 6 8 2 8 3 6 0.275709 56/57 RandomExcursionsVariant + 6 8 6 5 5 6 4 3 7 7 0.834308 57/57 RandomExcursionsVariant + 7 4 2 9 9 4 7 3 7 5 0.224821 57/57 RandomExcursionsVariant + 6 7 8 8 5 5 3 2 6 7 0.514124 57/57 RandomExcursionsVariant + 5 15 5 4 5 4 2 5 4 8 0.003996 57/57 RandomExcursionsVariant + 7 12 9 1 3 3 3 8 5 6 0.010988 57/57 RandomExcursionsVariant + 7 5 7 8 4 6 2 6 6 6 0.719747 57/57 RandomExcursionsVariant + 7 3 6 14 3 2 3 3 8 8 0.002203 57/57 RandomExcursionsVariant + 6 8 12 9 19 9 10 6 9 12 0.171867 100/100 Serial + 7 11 11 15 10 9 11 5 10 11 0.699313 100/100 Serial + 9 19 9 10 10 12 12 5 6 8 0.137282 98/100 LinearComplexity + + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +The minimum pass rate for each statistical test with the exception of the +random excursion (variant) test is approximately = 96 for a +sample size = 100 binary sequences. + +The minimum pass rate for the random excursion (variant) test +is approximately = 54 for a sample size = 57 binary sequences. + +For further guidelines construct a probability table using the MAPLE program +provided in the addendum section of the documentation. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_6bit.txt b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_6bit.txt new file mode 100644 index 0000000..9354d9f --- /dev/null +++ b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_6bit.txt @@ -0,0 +1,208 @@ +------------------------------------------------------------------------------ +RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES +------------------------------------------------------------------------------ + generator is +------------------------------------------------------------------------------ + C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST +------------------------------------------------------------------------------ + 9 10 5 6 10 14 13 10 13 10 0.574903 99/100 Frequency + 11 12 7 13 11 9 9 6 13 9 0.816537 98/100 BlockFrequency + 8 7 10 13 6 8 12 9 12 15 0.574903 99/100 CumulativeSums + 8 4 13 6 12 16 11 6 12 12 0.162606 99/100 CumulativeSums + 11 5 14 11 8 10 14 10 9 8 0.657933 98/100 Runs + 14 9 9 12 8 5 12 10 14 7 0.534146 100/100 LongestRun + 10 12 12 8 9 14 6 9 6 14 0.554420 99/100 Rank + 14 15 10 6 12 9 9 11 4 10 0.350485 98/100 FFT + 9 15 14 7 6 10 10 6 8 15 0.262249 98/100 NonOverlappingTemplate + 6 14 10 10 7 9 7 12 9 16 0.419021 100/100 NonOverlappingTemplate + 5 11 14 8 12 8 8 9 17 8 0.262249 100/100 NonOverlappingTemplate + 9 7 10 8 18 8 12 9 11 8 0.419021 100/100 NonOverlappingTemplate + 9 7 7 14 13 9 9 8 8 16 0.437274 100/100 NonOverlappingTemplate + 8 15 5 11 12 14 7 4 8 16 0.066882 98/100 NonOverlappingTemplate + 11 8 13 11 10 13 10 13 9 2 0.366918 100/100 NonOverlappingTemplate + 14 16 15 8 4 14 4 10 9 6 0.028817 98/100 NonOverlappingTemplate + 11 8 11 13 5 12 9 12 11 8 0.798139 98/100 NonOverlappingTemplate + 14 9 11 15 5 5 10 10 9 12 0.366918 99/100 NonOverlappingTemplate + 12 9 7 12 15 10 6 11 9 9 0.719747 100/100 NonOverlappingTemplate + 10 11 6 13 6 10 14 9 12 9 0.699313 99/100 NonOverlappingTemplate + 11 8 11 7 14 9 15 9 9 7 0.657933 98/100 NonOverlappingTemplate + 9 5 16 11 10 11 7 8 13 10 0.474986 99/100 NonOverlappingTemplate + 7 11 9 13 8 13 21 10 4 4 0.007160 99/100 NonOverlappingTemplate + 16 11 14 11 6 11 9 8 7 7 0.401199 97/100 NonOverlappingTemplate + 12 16 12 11 10 6 8 8 10 7 0.554420 99/100 NonOverlappingTemplate + 11 10 12 12 12 7 5 10 14 7 0.616305 100/100 NonOverlappingTemplate + 13 10 15 9 11 10 12 6 8 6 0.574903 99/100 NonOverlappingTemplate + 9 9 8 9 13 12 12 9 9 10 0.978072 99/100 NonOverlappingTemplate + 14 6 8 9 15 5 10 20 3 10 0.004981 99/100 NonOverlappingTemplate + 8 6 13 10 7 12 13 12 7 12 0.657933 100/100 NonOverlappingTemplate + 9 9 10 9 9 10 10 10 16 8 0.883171 100/100 NonOverlappingTemplate + 6 17 9 11 13 7 15 12 4 6 0.055361 98/100 NonOverlappingTemplate + 5 9 15 7 16 8 8 10 12 10 0.289667 100/100 NonOverlappingTemplate + 7 7 12 12 9 7 8 14 15 9 0.514124 99/100 NonOverlappingTemplate + 8 11 5 9 13 11 12 12 9 10 0.834308 99/100 NonOverlappingTemplate + 9 6 12 12 16 6 11 8 9 11 0.494392 100/100 NonOverlappingTemplate + 8 9 7 6 10 9 18 12 10 11 0.350485 100/100 NonOverlappingTemplate + 7 12 4 14 16 11 14 8 5 9 0.096578 99/100 NonOverlappingTemplate + 11 11 9 13 12 7 14 8 7 8 0.759756 100/100 NonOverlappingTemplate + 10 11 4 9 12 8 12 12 9 13 0.699313 100/100 NonOverlappingTemplate + 15 15 8 9 11 15 5 7 4 11 0.085587 97/100 NonOverlappingTemplate + 12 9 10 10 14 9 9 8 10 9 0.971699 99/100 NonOverlappingTemplate + 6 14 6 13 8 9 10 14 10 10 0.554420 100/100 NonOverlappingTemplate + 13 11 4 6 11 12 13 14 9 7 0.334538 98/100 NonOverlappingTemplate + 7 9 9 11 8 11 10 8 14 13 0.867692 99/100 NonOverlappingTemplate + 18 14 12 5 14 8 13 7 5 4 0.013569 100/100 NonOverlappingTemplate + 9 16 7 8 7 7 17 5 14 10 0.071177 100/100 NonOverlappingTemplate + 7 9 13 7 7 10 16 12 8 11 0.514124 99/100 NonOverlappingTemplate + 16 5 9 9 8 8 6 11 12 16 0.171867 99/100 NonOverlappingTemplate + 7 11 8 8 11 11 7 14 6 17 0.275709 99/100 NonOverlappingTemplate + 12 11 7 9 8 13 11 5 9 15 0.534146 99/100 NonOverlappingTemplate + 7 6 6 16 14 13 5 10 12 11 0.153763 98/100 NonOverlappingTemplate + 11 7 6 8 11 9 14 12 10 12 0.779188 100/100 NonOverlappingTemplate + 9 13 10 12 8 9 9 8 15 7 0.759756 99/100 NonOverlappingTemplate + 14 8 12 12 11 5 7 4 12 15 0.171867 99/100 NonOverlappingTemplate + 10 10 17 8 5 10 12 15 8 5 0.137282 98/100 NonOverlappingTemplate + 10 11 13 9 18 7 10 10 9 3 0.145326 99/100 NonOverlappingTemplate + 10 9 17 13 8 5 9 13 8 8 0.304126 100/100 NonOverlappingTemplate + 5 11 11 8 10 11 11 16 10 7 0.554420 98/100 NonOverlappingTemplate + 8 11 15 10 8 9 12 9 7 11 0.834308 100/100 NonOverlappingTemplate + 10 17 11 11 9 7 9 10 10 6 0.554420 99/100 NonOverlappingTemplate + 12 10 11 7 10 10 3 14 11 12 0.494392 100/100 NonOverlappingTemplate + 10 4 3 9 13 10 12 18 12 9 0.051942 100/100 NonOverlappingTemplate + 13 10 10 10 10 3 9 10 8 17 0.262249 100/100 NonOverlappingTemplate + 10 9 16 10 10 9 5 5 18 8 0.075719 100/100 NonOverlappingTemplate + 11 11 9 8 11 12 13 10 6 9 0.924076 100/100 NonOverlappingTemplate + 10 12 8 11 11 6 14 8 9 11 0.851383 100/100 NonOverlappingTemplate + 11 12 10 14 12 6 11 8 9 7 0.779188 100/100 NonOverlappingTemplate + 11 9 12 8 8 14 12 4 11 11 0.616305 98/100 NonOverlappingTemplate + 10 11 6 6 11 6 14 15 11 10 0.419021 99/100 NonOverlappingTemplate + 13 13 12 9 8 12 8 7 11 7 0.798139 98/100 NonOverlappingTemplate + 8 14 10 7 7 8 13 13 12 8 0.657933 99/100 NonOverlappingTemplate + 10 8 6 12 11 11 11 10 11 10 0.971699 99/100 NonOverlappingTemplate + 12 11 14 11 8 9 14 10 5 6 0.494392 100/100 NonOverlappingTemplate + 7 12 15 4 13 10 13 6 11 9 0.275709 100/100 NonOverlappingTemplate + 11 10 8 7 8 8 13 10 9 16 0.657933 99/100 NonOverlappingTemplate + 11 7 11 4 15 8 9 10 15 10 0.334538 98/100 NonOverlappingTemplate + 11 10 10 8 10 8 8 17 9 9 0.699313 98/100 NonOverlappingTemplate + 8 3 13 12 3 9 11 16 18 7 0.007160 96/100 NonOverlappingTemplate + 19 10 10 9 10 7 8 14 8 5 0.122325 99/100 NonOverlappingTemplate + 7 12 11 14 7 9 9 14 6 11 0.595549 99/100 NonOverlappingTemplate + 7 7 7 9 6 17 15 5 10 17 0.023545 98/100 NonOverlappingTemplate + 9 15 14 7 6 10 10 6 8 15 0.262249 98/100 NonOverlappingTemplate + 14 9 8 7 17 6 9 10 7 13 0.249284 99/100 NonOverlappingTemplate + 9 9 7 16 9 12 17 7 7 7 0.171867 100/100 NonOverlappingTemplate + 10 11 5 7 9 12 13 10 12 11 0.798139 100/100 NonOverlappingTemplate + 8 14 12 13 7 9 11 7 12 7 0.678686 100/100 NonOverlappingTemplate + 13 11 8 9 11 9 11 8 10 10 0.987896 99/100 NonOverlappingTemplate + 6 7 9 8 12 14 13 12 7 12 0.574903 99/100 NonOverlappingTemplate + 8 8 11 11 11 9 13 10 11 8 0.978072 100/100 NonOverlappingTemplate + 8 13 11 14 5 9 9 13 7 11 0.574903 100/100 NonOverlappingTemplate + 7 6 10 11 12 10 8 7 16 13 0.455937 100/100 NonOverlappingTemplate + 5 9 3 9 8 10 10 10 13 23 0.002203 99/100 NonOverlappingTemplate + 6 6 10 9 9 10 15 7 13 15 0.334538 99/100 NonOverlappingTemplate + 10 9 11 7 10 6 11 8 10 18 0.383827 100/100 NonOverlappingTemplate + 9 11 5 6 12 18 11 9 6 13 0.129620 99/100 NonOverlappingTemplate + 12 9 6 12 11 14 11 10 12 3 0.383827 100/100 NonOverlappingTemplate + 10 14 11 9 8 9 7 15 9 8 0.719747 99/100 NonOverlappingTemplate + 10 6 10 10 9 7 15 8 6 19 0.085587 98/100 NonOverlappingTemplate + 13 11 9 9 10 7 14 5 9 13 0.616305 98/100 NonOverlappingTemplate + 4 8 9 10 14 14 7 13 12 9 0.383827 100/100 NonOverlappingTemplate + 16 15 6 9 10 9 13 9 7 6 0.249284 100/100 NonOverlappingTemplate + 11 5 10 4 11 13 17 9 13 7 0.122325 100/100 NonOverlappingTemplate + 6 17 12 11 9 9 13 6 13 4 0.115387 100/100 NonOverlappingTemplate + 15 5 6 19 10 10 9 10 5 11 0.042808 99/100 NonOverlappingTemplate + 14 10 7 11 7 5 12 11 14 9 0.514124 99/100 NonOverlappingTemplate + 10 7 11 9 12 5 10 7 12 17 0.334538 100/100 NonOverlappingTemplate + 9 15 5 4 7 8 10 12 16 14 0.075719 98/100 NonOverlappingTemplate + 7 13 10 14 9 8 14 11 9 5 0.514124 99/100 NonOverlappingTemplate + 9 13 10 7 4 10 18 9 8 12 0.171867 98/100 NonOverlappingTemplate + 10 7 9 9 7 13 13 9 12 11 0.883171 98/100 NonOverlappingTemplate + 7 13 12 7 13 7 10 5 14 12 0.401199 99/100 NonOverlappingTemplate + 9 10 12 16 10 6 11 5 12 9 0.455937 100/100 NonOverlappingTemplate + 9 9 12 10 13 11 6 11 10 9 0.946308 99/100 NonOverlappingTemplate + 5 16 8 9 11 5 10 15 6 15 0.071177 100/100 NonOverlappingTemplate + 12 16 11 9 7 8 10 8 11 8 0.699313 98/100 NonOverlappingTemplate + 15 12 8 13 2 9 12 12 7 10 0.191687 96/100 NonOverlappingTemplate + 9 10 10 7 9 11 11 8 6 19 0.249284 99/100 NonOverlappingTemplate + 8 10 8 11 13 9 14 9 7 11 0.867692 100/100 NonOverlappingTemplate + 7 3 7 10 13 14 14 16 6 10 0.066882 99/100 NonOverlappingTemplate + 12 9 9 10 7 12 16 6 10 9 0.616305 99/100 NonOverlappingTemplate + 10 13 11 10 8 7 12 10 6 13 0.816537 100/100 NonOverlappingTemplate + 9 12 6 11 9 5 18 11 4 15 0.042808 100/100 NonOverlappingTemplate + 20 13 7 10 8 4 11 10 9 8 0.058984 98/100 NonOverlappingTemplate + 13 12 15 12 9 5 8 9 10 7 0.514124 96/100 NonOverlappingTemplate + 8 16 10 11 11 8 7 7 7 15 0.366918 99/100 NonOverlappingTemplate + 4 9 7 7 16 13 9 6 13 16 0.062821 99/100 NonOverlappingTemplate + 11 13 8 7 4 15 9 14 10 9 0.334538 97/100 NonOverlappingTemplate + 10 13 8 11 13 7 11 9 11 7 0.883171 100/100 NonOverlappingTemplate + 8 13 13 12 9 8 10 6 14 7 0.616305 100/100 NonOverlappingTemplate + 3 12 7 9 9 14 10 9 14 13 0.304126 100/100 NonOverlappingTemplate + 9 10 9 9 10 9 17 9 9 9 0.779188 100/100 NonOverlappingTemplate + 7 12 12 7 7 10 14 10 12 9 0.779188 99/100 NonOverlappingTemplate + 4 7 15 13 10 11 8 15 12 5 0.129620 100/100 NonOverlappingTemplate + 8 6 11 9 10 16 14 9 5 12 0.319084 100/100 NonOverlappingTemplate + 11 9 9 8 12 9 12 11 13 6 0.897763 98/100 NonOverlappingTemplate + 14 12 8 7 10 11 10 11 6 11 0.816537 96/100 NonOverlappingTemplate + 13 7 13 8 9 15 9 4 8 14 0.249284 97/100 NonOverlappingTemplate + 5 6 10 12 8 9 13 9 15 13 0.401199 98/100 NonOverlappingTemplate + 13 14 13 8 10 6 12 10 9 5 0.494392 99/100 NonOverlappingTemplate + 9 11 12 14 11 4 13 6 6 14 0.236810 100/100 NonOverlappingTemplate + 7 8 8 11 13 12 10 9 14 8 0.816537 99/100 NonOverlappingTemplate + 7 9 13 5 10 18 8 11 6 13 0.129620 99/100 NonOverlappingTemplate + 9 9 7 12 11 9 13 9 15 6 0.657933 96/100 NonOverlappingTemplate + 6 14 13 8 14 8 12 7 12 6 0.366918 99/100 NonOverlappingTemplate + 6 12 8 16 9 7 11 9 11 11 0.595549 100/100 NonOverlappingTemplate + 8 6 17 12 5 10 10 8 7 17 0.066882 99/100 NonOverlappingTemplate + 15 8 12 7 8 14 12 9 6 9 0.494392 97/100 NonOverlappingTemplate + 10 12 7 14 10 11 4 10 10 12 0.637119 99/100 NonOverlappingTemplate + 13 4 7 7 11 7 11 9 15 16 0.137282 99/100 NonOverlappingTemplate + 6 7 6 11 16 12 12 6 12 12 0.275709 100/100 NonOverlappingTemplate + 6 9 10 5 9 10 14 10 12 15 0.455937 100/100 NonOverlappingTemplate + 7 7 9 13 10 14 7 12 8 13 0.637119 98/100 NonOverlappingTemplate + 8 16 11 7 12 7 7 10 9 13 0.514124 98/100 NonOverlappingTemplate + 6 9 14 6 13 10 10 11 12 9 0.699313 100/100 NonOverlappingTemplate + 7 7 7 9 6 17 15 5 10 17 0.023545 98/100 NonOverlappingTemplate + 11 11 8 8 8 14 11 6 9 14 0.699313 100/100 OverlappingTemplate + 13 22 6 15 6 3 5 11 12 7 0.000474 97/100 Universal + 11 15 6 10 11 13 13 7 9 5 0.383827 99/100 ApproximateEntropy + 6 6 6 7 8 3 4 6 8 7 0.922036 60/61 RandomExcursions + 6 5 8 6 7 7 5 3 6 8 0.941144 60/61 RandomExcursions + 5 4 12 6 5 1 10 6 8 4 0.086458 60/61 RandomExcursions + 4 8 5 10 3 9 5 8 7 2 0.287306 61/61 RandomExcursions + 5 4 9 6 8 9 4 7 6 3 0.654467 61/61 RandomExcursions + 3 4 3 14 6 6 7 4 6 8 0.070445 61/61 RandomExcursions + 3 5 7 12 7 3 3 5 9 7 0.170294 60/61 RandomExcursions + 2 4 11 4 4 7 9 7 8 5 0.242986 61/61 RandomExcursions + 10 4 6 12 4 4 7 2 4 8 0.095617 61/61 RandomExcursionsVariant + 7 7 7 11 5 4 4 7 5 4 0.619772 61/61 RandomExcursionsVariant + 7 9 7 7 6 5 7 2 2 9 0.422034 60/61 RandomExcursionsVariant + 8 6 7 10 5 6 2 4 8 5 0.551026 61/61 RandomExcursionsVariant + 8 8 7 7 7 6 3 8 3 4 0.723129 59/61 RandomExcursionsVariant + 8 12 3 7 7 5 7 3 3 6 0.222869 61/61 RandomExcursionsVariant + 7 8 8 6 5 9 2 5 6 5 0.723129 61/61 RandomExcursionsVariant + 5 7 7 8 8 4 5 5 7 5 0.957319 60/61 RandomExcursionsVariant + 6 9 8 3 5 3 8 7 5 7 0.689019 60/61 RandomExcursionsVariant + 5 13 6 9 6 3 6 3 3 7 0.105618 61/61 RandomExcursionsVariant + 7 7 7 11 6 6 4 3 6 4 0.585209 60/61 RandomExcursionsVariant + 5 5 10 5 9 6 6 6 6 3 0.723129 60/61 RandomExcursionsVariant + 5 5 9 5 6 4 2 6 10 9 0.392456 60/61 RandomExcursionsVariant + 3 9 6 6 4 9 7 5 2 10 0.287306 60/61 RandomExcursionsVariant + 4 8 5 5 16 7 2 4 3 7 0.005166 60/61 RandomExcursionsVariant + 4 3 10 10 9 4 6 7 6 2 0.186566 61/61 RandomExcursionsVariant + 3 7 7 11 9 7 3 5 4 5 0.337162 61/61 RandomExcursionsVariant + 4 7 5 11 8 8 3 5 5 5 0.484646 61/61 RandomExcursionsVariant + 7 11 11 8 16 8 12 11 7 9 0.637119 99/100 Serial + 14 10 7 6 9 14 10 11 6 13 0.494392 97/100 Serial + 8 10 9 15 12 9 11 9 7 10 0.867692 99/100 LinearComplexity + + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +The minimum pass rate for each statistical test with the exception of the +random excursion (variant) test is approximately = 96 for a +sample size = 100 binary sequences. + +The minimum pass rate for the random excursion (variant) test +is approximately = 58 for a sample size = 61 binary sequences. + +For further guidelines construct a probability table using the MAPLE program +provided in the addendum section of the documentation. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_8bit.txt b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_8bit.txt new file mode 100644 index 0000000..8434b5b --- /dev/null +++ b/experiments/qian/finalAnalysisReport_jf_oldci_stable_b_8bit.txt @@ -0,0 +1,208 @@ +------------------------------------------------------------------------------ +RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES +------------------------------------------------------------------------------ + generator is +------------------------------------------------------------------------------ + C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST +------------------------------------------------------------------------------ + 16 10 10 11 11 11 6 8 9 8 0.699313 96/100 Frequency + 10 14 8 5 9 11 7 14 14 8 0.419021 99/100 BlockFrequency + 15 10 12 14 9 7 10 4 9 10 0.419021 97/100 CumulativeSums + 14 9 9 10 12 11 5 9 8 13 0.719747 97/100 CumulativeSums + 11 10 8 9 11 8 5 14 15 9 0.554420 99/100 Runs + 11 6 11 7 12 9 16 12 8 8 0.534146 98/100 LongestRun + 8 10 12 11 14 9 7 8 11 10 0.911413 99/100 Rank + 7 13 19 7 10 6 7 8 14 9 0.080519 99/100 FFT + 10 10 4 12 11 5 15 9 9 15 0.224821 99/100 NonOverlappingTemplate + 7 14 11 6 9 8 8 6 22 9 0.011791 100/100 NonOverlappingTemplate + 9 7 12 11 7 12 8 10 9 15 0.759756 100/100 NonOverlappingTemplate + 12 9 13 9 9 12 7 12 7 10 0.897763 99/100 NonOverlappingTemplate + 8 8 11 12 10 9 8 6 13 15 0.657933 100/100 NonOverlappingTemplate + 5 11 11 18 12 9 12 6 10 6 0.153763 99/100 NonOverlappingTemplate + 8 13 15 11 8 4 11 9 9 12 0.474986 99/100 NonOverlappingTemplate + 16 8 9 12 8 7 14 6 12 8 0.366918 98/100 NonOverlappingTemplate + 7 6 8 11 12 10 9 12 15 10 0.699313 99/100 NonOverlappingTemplate + 9 16 10 5 10 10 10 15 7 8 0.350485 99/100 NonOverlappingTemplate + 11 7 6 14 10 6 16 20 3 7 0.002758 100/100 NonOverlappingTemplate + 9 9 11 14 7 9 8 8 10 15 0.719747 100/100 NonOverlappingTemplate + 14 10 9 10 8 9 10 17 7 6 0.383827 100/100 NonOverlappingTemplate + 5 13 10 12 16 8 11 7 7 11 0.366918 100/100 NonOverlappingTemplate + 12 12 8 8 13 13 7 13 9 5 0.554420 98/100 NonOverlappingTemplate + 15 9 8 11 5 10 11 11 9 11 0.739918 98/100 NonOverlappingTemplate + 8 7 9 14 8 9 9 6 14 16 0.319084 100/100 NonOverlappingTemplate + 13 5 9 10 9 20 8 8 10 8 0.096578 99/100 NonOverlappingTemplate + 9 8 12 12 6 14 8 10 12 9 0.798139 98/100 NonOverlappingTemplate + 14 6 8 7 12 6 14 12 8 13 0.366918 97/100 NonOverlappingTemplate + 12 6 13 9 8 14 9 8 9 12 0.739918 99/100 NonOverlappingTemplate + 10 6 11 11 6 9 9 12 16 10 0.574903 99/100 NonOverlappingTemplate + 8 14 5 11 13 10 6 13 13 7 0.366918 98/100 NonOverlappingTemplate + 13 13 9 8 9 12 10 6 8 12 0.816537 97/100 NonOverlappingTemplate + 10 11 9 8 8 12 9 13 11 9 0.978072 99/100 NonOverlappingTemplate + 7 9 13 11 10 14 8 12 7 9 0.798139 99/100 NonOverlappingTemplate + 10 8 10 11 10 6 13 8 13 11 0.883171 99/100 NonOverlappingTemplate + 13 10 7 10 14 8 5 12 14 7 0.419021 99/100 NonOverlappingTemplate + 16 15 14 6 9 9 5 5 11 10 0.102526 99/100 NonOverlappingTemplate + 6 9 5 10 7 11 16 14 11 11 0.304126 100/100 NonOverlappingTemplate + 9 10 6 12 13 14 8 11 7 10 0.739918 99/100 NonOverlappingTemplate + 9 14 8 13 11 6 11 10 11 7 0.759756 99/100 NonOverlappingTemplate + 14 4 11 11 7 6 13 13 11 10 0.366918 97/100 NonOverlappingTemplate + 14 12 6 12 10 14 3 9 11 9 0.289667 98/100 NonOverlappingTemplate + 15 13 13 10 9 3 11 10 5 11 0.213309 99/100 NonOverlappingTemplate + 8 7 10 12 13 11 9 9 10 11 0.964295 100/100 NonOverlappingTemplate + 11 10 15 13 5 12 6 6 9 13 0.304126 99/100 NonOverlappingTemplate + 7 13 5 10 6 13 15 11 9 11 0.383827 99/100 NonOverlappingTemplate + 4 10 10 11 14 11 11 8 9 12 0.699313 99/100 NonOverlappingTemplate + 7 11 6 10 13 5 15 14 10 9 0.334538 100/100 NonOverlappingTemplate + 12 7 11 13 9 10 12 5 10 11 0.798139 98/100 NonOverlappingTemplate + 11 4 10 18 10 5 13 12 11 6 0.075719 99/100 NonOverlappingTemplate + 10 10 8 6 7 15 6 15 11 12 0.350485 99/100 NonOverlappingTemplate + 10 13 6 10 13 10 11 8 8 11 0.883171 100/100 NonOverlappingTemplate + 13 11 9 12 9 8 8 12 6 12 0.851383 100/100 NonOverlappingTemplate + 10 11 5 8 11 13 8 10 11 13 0.798139 99/100 NonOverlappingTemplate + 10 5 10 10 14 12 11 14 10 4 0.366918 99/100 NonOverlappingTemplate + 5 11 11 10 12 13 18 3 12 5 0.032923 100/100 NonOverlappingTemplate + 9 10 16 7 8 12 13 5 9 11 0.437274 100/100 NonOverlappingTemplate + 12 10 8 11 8 12 12 9 9 9 0.983453 99/100 NonOverlappingTemplate + 9 13 12 8 10 6 10 9 11 12 0.911413 100/100 NonOverlappingTemplate + 10 11 7 11 17 12 7 6 9 10 0.437274 99/100 NonOverlappingTemplate + 9 8 13 9 13 11 11 7 11 8 0.911413 99/100 NonOverlappingTemplate + 9 12 12 14 10 7 9 8 10 9 0.911413 99/100 NonOverlappingTemplate + 6 12 16 12 9 10 7 12 8 8 0.514124 100/100 NonOverlappingTemplate + 13 15 9 10 12 15 5 8 9 4 0.162606 99/100 NonOverlappingTemplate + 3 9 11 10 20 5 6 12 14 10 0.011791 100/100 NonOverlappingTemplate + 11 15 7 10 14 7 10 8 11 7 0.595549 97/100 NonOverlappingTemplate + 7 13 6 12 10 10 7 12 13 10 0.739918 100/100 NonOverlappingTemplate + 19 10 6 9 13 13 9 11 3 7 0.040108 97/100 NonOverlappingTemplate + 9 10 13 10 8 10 8 10 8 14 0.924076 98/100 NonOverlappingTemplate + 15 9 17 7 7 10 6 10 12 7 0.202268 100/100 NonOverlappingTemplate + 8 6 8 11 11 8 14 16 9 9 0.494392 99/100 NonOverlappingTemplate + 6 8 13 9 16 9 11 9 8 11 0.595549 98/100 NonOverlappingTemplate + 14 10 8 8 6 7 5 17 15 10 0.096578 98/100 NonOverlappingTemplate + 12 11 11 8 11 6 13 12 9 7 0.834308 99/100 NonOverlappingTemplate + 10 10 8 15 10 8 6 10 12 11 0.798139 97/100 NonOverlappingTemplate + 9 11 9 8 9 11 9 12 10 12 0.994250 99/100 NonOverlappingTemplate + 7 8 11 11 15 6 11 7 15 9 0.419021 98/100 NonOverlappingTemplate + 12 11 17 9 9 10 8 3 12 9 0.249284 98/100 NonOverlappingTemplate + 8 9 16 4 8 8 14 9 13 11 0.262249 99/100 NonOverlappingTemplate + 8 8 14 8 11 8 9 12 12 10 0.897763 97/100 NonOverlappingTemplate + 16 8 9 15 11 6 11 8 10 6 0.319084 97/100 NonOverlappingTemplate + 10 9 8 8 8 12 9 13 9 14 0.883171 99/100 NonOverlappingTemplate + 10 10 4 12 11 5 15 9 9 15 0.224821 99/100 NonOverlappingTemplate + 10 11 10 8 6 9 13 12 14 7 0.739918 100/100 NonOverlappingTemplate + 7 12 5 10 9 4 8 12 19 14 0.035174 100/100 NonOverlappingTemplate + 9 8 9 8 11 13 8 12 14 8 0.851383 98/100 NonOverlappingTemplate + 14 15 9 11 5 11 5 11 7 12 0.289667 98/100 NonOverlappingTemplate + 9 5 13 13 15 9 7 12 9 8 0.455937 99/100 NonOverlappingTemplate + 10 8 7 4 11 12 12 13 13 10 0.574903 98/100 NonOverlappingTemplate + 11 15 12 9 10 8 9 7 6 13 0.637119 100/100 NonOverlappingTemplate + 13 12 9 14 7 10 5 10 8 12 0.616305 99/100 NonOverlappingTemplate + 11 9 8 10 6 11 6 11 20 8 0.108791 96/100 NonOverlappingTemplate + 10 8 6 8 11 7 13 7 13 17 0.275709 98/100 NonOverlappingTemplate + 7 9 11 14 12 7 15 4 12 9 0.304126 100/100 NonOverlappingTemplate + 11 5 4 14 12 15 16 6 6 11 0.040108 99/100 NonOverlappingTemplate + 5 16 12 10 9 12 7 9 10 10 0.534146 100/100 NonOverlappingTemplate + 15 7 7 10 16 3 12 11 12 7 0.102526 99/100 NonOverlappingTemplate + 5 9 5 13 9 13 11 14 12 9 0.419021 98/100 NonOverlappingTemplate + 12 5 9 7 10 13 9 15 11 9 0.574903 100/100 NonOverlappingTemplate + 13 8 11 14 14 4 10 11 5 10 0.289667 100/100 NonOverlappingTemplate + 13 10 14 9 9 11 7 13 7 7 0.699313 99/100 NonOverlappingTemplate + 9 10 17 8 5 12 12 11 3 13 0.102526 100/100 NonOverlappingTemplate + 10 12 13 8 6 6 17 11 7 10 0.289667 99/100 NonOverlappingTemplate + 12 9 8 12 13 16 8 12 4 6 0.224821 97/100 NonOverlappingTemplate + 6 7 13 8 10 7 11 14 11 13 0.595549 99/100 NonOverlappingTemplate + 11 5 3 9 13 14 10 13 10 12 0.249284 100/100 NonOverlappingTemplate + 10 5 8 11 11 6 10 9 18 12 0.236810 100/100 NonOverlappingTemplate + 13 8 11 5 8 13 14 11 8 9 0.595549 98/100 NonOverlappingTemplate + 11 9 11 10 11 8 7 14 14 5 0.595549 99/100 NonOverlappingTemplate + 9 8 4 13 13 16 9 6 13 9 0.202268 100/100 NonOverlappingTemplate + 11 14 8 12 11 5 9 12 8 10 0.739918 99/100 NonOverlappingTemplate + 7 9 5 10 14 10 10 9 9 17 0.334538 100/100 NonOverlappingTemplate + 11 8 9 10 11 10 15 12 5 9 0.719747 98/100 NonOverlappingTemplate + 8 8 4 12 11 7 12 9 13 16 0.289667 98/100 NonOverlappingTemplate + 13 12 13 8 12 11 10 7 7 7 0.759756 98/100 NonOverlappingTemplate + 7 11 12 13 9 10 14 7 11 6 0.678686 100/100 NonOverlappingTemplate + 7 9 8 12 7 9 20 11 11 6 0.102526 97/100 NonOverlappingTemplate + 9 8 8 7 9 13 8 11 13 14 0.759756 97/100 NonOverlappingTemplate + 3 10 9 11 10 12 12 8 14 11 0.534146 100/100 NonOverlappingTemplate + 7 9 11 12 10 13 10 11 8 9 0.964295 100/100 NonOverlappingTemplate + 15 9 10 8 9 10 13 11 7 8 0.798139 99/100 NonOverlappingTemplate + 14 10 7 12 11 4 13 10 11 8 0.534146 99/100 NonOverlappingTemplate + 9 13 7 8 13 11 12 8 7 12 0.798139 99/100 NonOverlappingTemplate + 12 13 5 11 8 7 12 16 11 5 0.224821 98/100 NonOverlappingTemplate + 9 14 13 10 11 7 12 6 12 6 0.574903 100/100 NonOverlappingTemplate + 11 6 6 9 11 13 14 11 14 5 0.334538 99/100 NonOverlappingTemplate + 10 16 14 11 9 9 6 7 8 10 0.494392 100/100 NonOverlappingTemplate + 8 11 5 8 13 11 10 14 7 13 0.554420 100/100 NonOverlappingTemplate + 9 12 7 10 13 11 8 9 10 11 0.964295 99/100 NonOverlappingTemplate + 5 8 11 8 10 9 13 13 10 13 0.719747 100/100 NonOverlappingTemplate + 17 3 12 15 6 12 15 7 9 4 0.009535 100/100 NonOverlappingTemplate + 8 7 8 6 11 7 16 15 10 12 0.289667 100/100 NonOverlappingTemplate + 14 9 7 16 9 6 9 5 14 11 0.202268 99/100 NonOverlappingTemplate + 17 9 8 13 8 15 4 7 10 9 0.129620 98/100 NonOverlappingTemplate + 13 9 8 7 7 11 12 9 11 13 0.851383 99/100 NonOverlappingTemplate + 11 13 13 8 16 5 7 9 9 9 0.383827 100/100 NonOverlappingTemplate + 11 10 6 12 7 13 11 4 14 12 0.383827 98/100 NonOverlappingTemplate + 14 9 10 9 9 10 7 9 13 10 0.924076 98/100 NonOverlappingTemplate + 10 10 8 9 10 12 3 13 14 11 0.494392 99/100 NonOverlappingTemplate + 10 11 8 13 7 14 5 12 5 15 0.224821 99/100 NonOverlappingTemplate + 6 7 10 11 12 11 14 9 9 11 0.834308 99/100 NonOverlappingTemplate + 12 11 12 8 11 7 2 13 9 15 0.202268 100/100 NonOverlappingTemplate + 9 15 11 15 6 8 7 8 11 10 0.474986 99/100 NonOverlappingTemplate + 12 14 4 7 11 9 7 12 11 13 0.437274 100/100 NonOverlappingTemplate + 15 8 16 10 7 16 7 7 10 4 0.058984 96/100 NonOverlappingTemplate + 12 10 14 5 12 7 11 10 8 11 0.699313 100/100 NonOverlappingTemplate + 14 10 9 11 10 8 18 7 5 8 0.191687 99/100 NonOverlappingTemplate + 14 12 9 9 10 7 12 12 7 8 0.816537 98/100 NonOverlappingTemplate + 4 9 12 8 10 5 18 14 10 10 0.090936 100/100 NonOverlappingTemplate + 12 13 8 13 16 8 9 10 8 3 0.213309 99/100 NonOverlappingTemplate + 12 13 7 9 9 9 9 12 11 9 0.955835 100/100 NonOverlappingTemplate + 11 15 11 10 15 7 11 7 7 6 0.383827 100/100 NonOverlappingTemplate + 10 11 10 8 11 6 10 9 12 13 0.935716 99/100 NonOverlappingTemplate + 9 6 11 8 14 14 7 11 9 11 0.678686 100/100 NonOverlappingTemplate + 9 10 7 15 9 5 12 10 12 11 0.637119 99/100 NonOverlappingTemplate + 10 9 8 8 8 12 9 13 9 14 0.883171 99/100 NonOverlappingTemplate + 14 8 10 6 11 16 10 5 7 13 0.236810 99/100 OverlappingTemplate + 8 15 10 10 11 7 14 8 7 10 0.657933 99/100 Universal + 9 13 6 10 11 11 8 12 6 14 0.657933 98/100 ApproximateEntropy + 7 9 5 4 9 4 6 8 4 4 0.671779 58/60 RandomExcursions + 6 2 2 4 6 5 10 6 14 5 0.020085 58/60 RandomExcursions + 7 8 4 5 3 9 7 5 6 6 0.834308 60/60 RandomExcursions + 6 7 6 7 6 8 3 4 7 6 0.949602 60/60 RandomExcursions + 5 4 5 4 4 7 4 10 8 9 0.534146 60/60 RandomExcursions + 5 7 5 4 8 6 6 9 7 3 0.834308 60/60 RandomExcursions + 4 5 5 3 8 6 11 6 6 6 0.602458 60/60 RandomExcursions + 4 9 8 4 4 7 6 7 4 7 0.804337 57/60 RandomExcursions + 8 8 10 6 5 3 3 4 6 7 0.534146 59/60 RandomExcursionsVariant + 9 6 9 8 2 4 6 6 4 6 0.568055 59/60 RandomExcursionsVariant + 9 6 7 4 7 5 7 3 7 5 0.862344 59/60 RandomExcursionsVariant + 8 7 7 4 6 4 6 9 3 6 0.804337 60/60 RandomExcursionsVariant + 8 6 3 11 8 3 5 6 4 6 0.407091 60/60 RandomExcursionsVariant + 4 7 5 6 12 4 2 5 11 4 0.082177 60/60 RandomExcursionsVariant + 3 6 3 5 9 2 4 12 7 9 0.074177 60/60 RandomExcursionsVariant + 4 5 5 6 4 8 5 4 10 9 0.602458 60/60 RandomExcursionsVariant + 6 7 4 5 4 7 13 7 3 4 0.195163 59/60 RandomExcursionsVariant + 4 5 6 4 5 6 11 6 7 6 0.739918 60/60 RandomExcursionsVariant + 4 5 6 4 7 6 7 6 11 4 0.671779 60/60 RandomExcursionsVariant + 5 3 6 6 6 10 4 4 7 9 0.602458 60/60 RandomExcursionsVariant + 5 5 5 7 6 7 8 7 6 4 0.985035 60/60 RandomExcursionsVariant + 5 6 5 8 8 6 4 6 1 11 0.299251 60/60 RandomExcursionsVariant + 4 6 8 5 4 9 5 4 9 6 0.739918 60/60 RandomExcursionsVariant + 2 5 6 6 9 6 2 7 7 10 0.350485 60/60 RandomExcursionsVariant + 2 6 8 6 4 6 7 7 10 4 0.568055 60/60 RandomExcursionsVariant + 2 10 5 6 3 5 7 4 9 9 0.275709 60/60 RandomExcursionsVariant + 9 11 12 7 9 15 8 10 11 8 0.834308 100/100 Serial + 7 12 6 12 12 16 11 6 11 7 0.350485 100/100 Serial + 16 9 4 6 16 11 8 6 10 14 0.062821 100/100 LinearComplexity + + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +The minimum pass rate for each statistical test with the exception of the +random excursion (variant) test is approximately = 96 for a +sample size = 100 binary sequences. + +The minimum pass rate for the random excursion (variant) test +is approximately = 57 for a sample size = 60 binary sequences. + +For further guidelines construct a probability table using the MAPLE program +provided in the addendum section of the documentation. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experiments/res2.txt b/experiments/res2.txt new file mode 100644 index 0000000..1c6a0fe --- /dev/null +++ b/experiments/res2.txt @@ -0,0 +1 @@ +[[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]][[0,1,1,0],[1,0,0,1],[1,0,1,0],[0,1,0,1]][[0,1,1,0],[1,1,0,0],[1,0,0,1],[0,0,1,1]][[1,0,1,0],[0,1,0,1],[1,0,0,1],[0,1,1,0]][[1,0,1,0],[1,1,0,0],[0,0,1,1],[0,1,0,1]][[1,1,0,0],[0,1,0,1],[1,0,1,0],[0,0,1,1]][[1,1,0,0],[1,0,0,1],[0,0,1,1],[0,1,1,0]] \ No newline at end of file diff --git a/experiments/res8.txt b/experiments/res8.txt new file mode 100644 index 0000000..30f6e7b --- /dev/null +++ b/experiments/res8.txt @@ -0,0 +1,3050 @@ +------ + + en entrant 24 a vistier 1 +ds calcul 0 0 + + en entrant 23 a vistier 1 +ds calcul 0 0 + +[6, 7, 5, 4, 3, 2, 1, 0] + + en entrant 22 a vistier 11 +ds calcul 0 0 +ds calcul 1 12 +ds calcul 2 17 +ds calcul 3 32 +ds calcul 4 37 +ds calcul 5 41 +ds calcul 6 44 +ds calcul 7 46 +ds calcul 8 47 +ds calcul 9 47 +ds calcul 10 47 + + en entrant 21 a vistier 47 +ds calcul 0 0 + +[4, 7, 7, 4, 3, 2, 1, 0] +ds calcul 1 20 +ds calcul 2 38 +ds calcul 3 54 +ds calcul 4 67 +ds calcul 5 74 +ds calcul 6 79 +ds calcul 7 88 +ds calcul 8 95 +ds calcul 9 101 +ds calcul 10 105 +ds calcul 11 106 +ds calcul 12 107 +ds calcul 13 121 + +[6, 7, 4, 5, 3, 2, 1, 0] +ds calcul 14 133 + +[6, 7, 1, 4, 3, 2, 5, 0] +ds calcul 15 142 +ds calcul 16 145 + +[6, 7, 5, 4, 3, 2, 0, 1] +ds calcul 17 146 + +[6, 4, 7, 5, 3, 2, 1, 0] +ds calcul 18 160 +ds calcul 19 172 +ds calcul 20 184 +ds calcul 21 190 +ds calcul 22 197 +ds calcul 23 204 +ds calcul 24 206 +ds calcul 25 212 +ds calcul 26 215 +ds calcul 27 218 +ds calcul 28 221 +ds calcul 29 223 +ds calcul 30 223 +ds calcul 31 223 +ds calcul 32 223 +ds calcul 33 225 +ds calcul 34 230 +ds calcul 35 231 +ds calcul 36 232 +ds calcul 37 232 +ds calcul 38 234 +ds calcul 39 235 +ds calcul 40 236 +ds calcul 41 236 +ds calcul 42 239 +ds calcul 43 239 +ds calcul 44 239 +ds calcul 45 240 +ds calcul 46 241 + + en entrant 20 a vistier 241 +ds calcul 0 0 +ds calcul 1 9 +ds calcul 2 18 +ds calcul 3 26 +ds calcul 4 42 +ds calcul 5 57 +ds calcul 6 70 +ds calcul 7 82 +ds calcul 8 94 +ds calcul 9 105 +ds calcul 10 114 +ds calcul 11 123 +ds calcul 12 131 +ds calcul 13 138 +ds calcul 14 144 +ds calcul 15 149 +ds calcul 16 153 +ds calcul 17 156 +ds calcul 18 158 +ds calcul 19 159 +ds calcul 20 159 +ds calcul 21 174 +ds calcul 22 182 +ds calcul 23 197 +ds calcul 24 208 +ds calcul 25 220 +ds calcul 26 232 +ds calcul 27 241 +ds calcul 28 250 +ds calcul 29 258 +ds calcul 30 266 +ds calcul 31 273 +ds calcul 32 279 +ds calcul 33 283 +ds calcul 34 287 +ds calcul 35 290 +ds calcul 36 292 +ds calcul 37 293 +ds calcul 38 293 +ds calcul 39 302 +ds calcul 40 314 +ds calcul 41 326 +ds calcul 42 338 +ds calcul 43 347 +ds calcul 44 355 +ds calcul 45 364 +ds calcul 46 370 +ds calcul 47 377 +ds calcul 48 383 +ds calcul 49 388 +ds calcul 50 392 +ds calcul 51 395 +ds calcul 52 397 +ds calcul 53 398 +ds calcul 54 398 +ds calcul 55 401 +ds calcul 56 409 +ds calcul 57 417 +ds calcul 58 424 +ds calcul 59 432 +ds calcul 60 439 +ds calcul 61 445 +ds calcul 62 449 +ds calcul 63 453 +ds calcul 64 456 +ds calcul 65 456 +ds calcul 66 457 +ds calcul 67 457 +ds calcul 68 462 +ds calcul 69 471 +ds calcul 70 477 +ds calcul 71 483 +ds calcul 72 486 +ds calcul 73 486 +ds calcul 74 487 +ds calcul 75 494 +ds calcul 76 499 +ds calcul 77 503 +ds calcul 78 504 +ds calcul 79 504 +ds calcul 80 510 +ds calcul 81 516 +ds calcul 82 522 +ds calcul 83 525 +ds calcul 84 528 +ds calcul 85 531 +ds calcul 86 533 +ds calcul 87 533 +ds calcul 88 533 +ds calcul 89 535 +ds calcul 90 536 +ds calcul 91 539 +ds calcul 92 542 +ds calcul 93 542 +ds calcul 94 542 +ds calcul 95 542 +ds calcul 96 542 +ds calcul 97 544 +ds calcul 98 547 +ds calcul 99 547 +ds calcul 100 547 +ds calcul 101 547 +ds calcul 102 549 +ds calcul 103 549 +ds calcul 104 549 +ds calcul 105 549 +ds calcul 106 549 +ds calcul 107 549 +ds calcul 108 554 +ds calcul 109 565 +ds calcul 110 576 +ds calcul 111 584 +ds calcul 112 592 +ds calcul 113 595 +ds calcul 114 600 +ds calcul 115 606 +ds calcul 116 609 +ds calcul 117 612 +ds calcul 118 615 +ds calcul 119 615 +ds calcul 120 615 +ds calcul 121 615 +ds calcul 122 617 +ds calcul 123 626 +ds calcul 124 629 +ds calcul 125 636 +ds calcul 126 639 +ds calcul 127 645 +ds calcul 128 648 +ds calcul 129 651 +ds calcul 130 654 +ds calcul 131 654 +ds calcul 132 654 +ds calcul 133 654 +ds calcul 134 657 +ds calcul 135 659 +ds calcul 136 662 +ds calcul 137 662 +ds calcul 138 665 +ds calcul 139 667 +ds calcul 140 667 +ds calcul 141 667 +ds calcul 142 667 +ds calcul 143 667 +ds calcul 144 667 +ds calcul 145 667 +ds calcul 146 667 +ds calcul 147 670 +ds calcul 148 681 +ds calcul 149 689 +ds calcul 150 697 +ds calcul 151 704 +ds calcul 152 710 +ds calcul 153 716 +ds calcul 154 721 +ds calcul 155 724 +ds calcul 156 727 +ds calcul 157 729 +ds calcul 158 729 +ds calcul 159 729 +ds calcul 160 729 +ds calcul 161 736 +ds calcul 162 742 +ds calcul 163 747 +ds calcul 164 754 +ds calcul 165 758 +ds calcul 166 763 +ds calcul 167 766 +ds calcul 168 767 +ds calcul 169 769 +ds calcul 170 770 +ds calcul 171 770 +ds calcul 172 770 +ds calcul 173 775 +ds calcul 174 779 +ds calcul 175 784 +ds calcul 176 790 +ds calcul 177 793 +ds calcul 178 798 +ds calcul 179 801 +ds calcul 180 801 +ds calcul 181 802 +ds calcul 182 802 +ds calcul 183 802 +ds calcul 184 802 +ds calcul 185 805 +ds calcul 186 808 +ds calcul 187 809 +ds calcul 188 809 +ds calcul 189 809 +ds calcul 190 809 +ds calcul 191 809 +ds calcul 192 812 +ds calcul 193 812 +ds calcul 194 813 +ds calcul 195 813 +ds calcul 196 813 +ds calcul 197 813 +ds calcul 198 813 +ds calcul 199 813 +ds calcul 200 813 +ds calcul 201 813 +ds calcul 202 813 +ds calcul 203 813 +ds calcul 204 813 +ds calcul 205 813 +ds calcul 206 813 +ds calcul 207 814 +ds calcul 208 815 +ds calcul 209 816 +ds calcul 210 816 +ds calcul 211 816 +ds calcul 212 816 +ds calcul 213 816 +ds calcul 214 816 +ds calcul 215 816 +ds calcul 216 816 +ds calcul 217 816 +ds calcul 218 816 +ds calcul 219 816 +ds calcul 220 816 +ds calcul 221 816 +ds calcul 222 816 +ds calcul 223 816 +ds calcul 224 816 +ds calcul 225 816 +ds calcul 226 817 +ds calcul 227 817 +ds calcul 228 817 +ds calcul 229 817 +ds calcul 230 817 +ds calcul 231 817 +ds calcul 232 817 +ds calcul 233 817 +ds calcul 234 817 +ds calcul 235 817 +ds calcul 236 817 +ds calcul 237 817 +ds calcul 238 817 +ds calcul 239 817 +ds calcul 240 817 + + en entrant 19 a vistier 817 +ds calcul 0 0 + +[4, 5, 7, 6, 3, 2, 1, 0] +ds calcul 1 16 +ds calcul 2 30 +ds calcul 3 43 +ds calcul 4 54 +ds calcul 5 62 +ds calcul 6 68 +ds calcul 7 72 +ds calcul 8 75 +ds calcul 9 76 + +[4, 3, 7, 4, 3, 6, 1, 0] +ds calcul 10 91 +ds calcul 11 106 +ds calcul 12 119 +ds calcul 13 130 +ds calcul 14 137 +ds calcul 15 144 +ds calcul 16 149 +ds calcul 17 152 +ds calcul 18 153 +ds calcul 19 165 + +[4, 7, 7, 0, 3, 2, 1, 4] +ds calcul 20 171 + +[4, 7, 7, 4, 2, 3, 1, 0] +ds calcul 21 180 +ds calcul 22 188 +ds calcul 23 193 + +[4, 7, 7, 4, 3, 0, 1, 2] +ds calcul 24 197 +ds calcul 25 198 +ds calcul 26 199 +ds calcul 27 214 +ds calcul 28 227 +ds calcul 29 239 +ds calcul 30 251 +ds calcul 31 262 +ds calcul 32 270 +ds calcul 33 279 +ds calcul 34 286 +ds calcul 35 293 +ds calcul 36 299 +ds calcul 37 304 +ds calcul 38 308 +ds calcul 39 311 +ds calcul 40 313 +ds calcul 41 314 +ds calcul 42 314 +ds calcul 43 327 +ds calcul 44 339 +ds calcul 45 351 + +[4, 7, 1, 4, 7, 2, 3, 0] +ds calcul 46 362 +ds calcul 47 371 +ds calcul 48 379 +ds calcul 49 387 +ds calcul 50 394 +ds calcul 51 400 +ds calcul 52 405 +ds calcul 53 409 +ds calcul 54 412 +ds calcul 55 414 +ds calcul 56 415 +ds calcul 57 415 +ds calcul 58 425 +ds calcul 59 435 +ds calcul 60 445 +ds calcul 61 452 +ds calcul 62 460 +ds calcul 63 467 +ds calcul 64 473 +ds calcul 65 478 +ds calcul 66 482 +ds calcul 67 485 +ds calcul 68 487 +ds calcul 69 488 +ds calcul 70 488 +ds calcul 71 499 +ds calcul 72 509 +ds calcul 73 517 +ds calcul 74 524 +ds calcul 75 531 +ds calcul 76 536 +ds calcul 77 541 +ds calcul 78 545 +ds calcul 79 548 +ds calcul 80 550 +ds calcul 81 551 +ds calcul 82 551 +ds calcul 83 562 +ds calcul 84 571 +ds calcul 85 580 +ds calcul 86 588 +ds calcul 87 595 +ds calcul 88 600 +ds calcul 89 605 +ds calcul 90 609 +ds calcul 91 611 +ds calcul 92 613 +ds calcul 93 614 +ds calcul 94 614 +ds calcul 95 622 +ds calcul 96 630 +ds calcul 97 638 +ds calcul 98 645 +ds calcul 99 651 +ds calcul 100 656 +ds calcul 101 660 +ds calcul 102 663 +ds calcul 103 665 +ds calcul 104 666 +ds calcul 105 666 +ds calcul 106 673 +ds calcul 107 680 +ds calcul 108 686 +ds calcul 109 690 +ds calcul 110 694 +ds calcul 111 697 +ds calcul 112 699 +ds calcul 113 700 +ds calcul 114 700 +ds calcul 115 707 +ds calcul 116 714 +ds calcul 117 720 +ds calcul 118 724 +ds calcul 119 728 +ds calcul 120 731 +ds calcul 121 733 +ds calcul 122 734 +ds calcul 123 734 +ds calcul 124 740 +ds calcul 125 745 +ds calcul 126 749 +ds calcul 127 753 +ds calcul 128 756 +ds calcul 129 758 +ds calcul 130 759 +ds calcul 131 759 +ds calcul 132 764 +ds calcul 133 769 +ds calcul 134 773 +ds calcul 135 776 +ds calcul 136 778 +ds calcul 137 779 +ds calcul 138 779 +ds calcul 139 784 +ds calcul 140 788 +ds calcul 141 790 +ds calcul 142 791 +ds calcul 143 792 +ds calcul 144 792 +ds calcul 145 795 +ds calcul 146 798 +ds calcul 147 800 +ds calcul 148 801 +ds calcul 149 801 +ds calcul 150 804 +ds calcul 151 806 +ds calcul 152 807 +ds calcul 153 807 +ds calcul 154 808 +ds calcul 155 808 +ds calcul 156 808 +ds calcul 157 808 +ds calcul 158 808 +ds calcul 159 808 +ds calcul 160 821 +ds calcul 161 834 +ds calcul 162 845 +ds calcul 163 856 +ds calcul 164 865 +ds calcul 165 872 +ds calcul 166 879 +ds calcul 167 885 +ds calcul 168 891 +ds calcul 169 895 +ds calcul 170 899 +ds calcul 171 902 +ds calcul 172 904 +ds calcul 173 905 +ds calcul 174 905 +ds calcul 175 915 +ds calcul 176 921 +ds calcul 177 925 +ds calcul 178 932 +ds calcul 179 939 +ds calcul 180 944 +ds calcul 181 946 +ds calcul 182 947 +ds calcul 183 958 +ds calcul 184 970 +ds calcul 185 982 +ds calcul 186 991 +ds calcul 187 1000 +ds calcul 188 1007 +ds calcul 189 1015 +ds calcul 190 1022 +ds calcul 191 1028 +ds calcul 192 1030 +ds calcul 193 1034 +ds calcul 194 1037 +ds calcul 195 1039 +ds calcul 196 1040 +ds calcul 197 1040 +ds calcul 198 1048 +ds calcul 199 1055 +ds calcul 200 1062 +ds calcul 201 1069 +ds calcul 202 1075 +ds calcul 203 1079 +ds calcul 204 1083 +ds calcul 205 1086 +ds calcul 206 1088 +ds calcul 207 1089 +ds calcul 208 1089 +ds calcul 209 1099 +ds calcul 210 1107 +ds calcul 211 1115 +ds calcul 212 1121 +ds calcul 213 1128 +ds calcul 214 1134 +ds calcul 215 1139 +ds calcul 216 1143 +ds calcul 217 1146 +ds calcul 218 1148 +ds calcul 219 1149 +ds calcul 220 1149 +ds calcul 221 1158 +ds calcul 222 1167 +ds calcul 223 1175 +ds calcul 224 1182 +ds calcul 225 1189 +ds calcul 226 1194 +ds calcul 227 1198 +ds calcul 228 1202 +ds calcul 229 1205 +ds calcul 230 1205 +ds calcul 231 1206 +ds calcul 232 1206 +ds calcul 233 1213 +ds calcul 234 1220 +ds calcul 235 1226 +ds calcul 236 1229 +ds calcul 237 1233 +ds calcul 238 1236 +ds calcul 239 1238 +ds calcul 240 1239 +ds calcul 241 1239 +ds calcul 242 1245 +ds calcul 243 1251 +ds calcul 244 1257 +ds calcul 245 1260 +ds calcul 246 1264 +ds calcul 247 1267 +ds calcul 248 1269 +ds calcul 249 1270 +ds calcul 250 1270 +ds calcul 251 1277 +ds calcul 252 1283 +ds calcul 253 1286 +ds calcul 254 1289 +ds calcul 255 1292 +ds calcul 256 1293 +ds calcul 257 1294 +ds calcul 258 1294 +ds calcul 259 1300 +ds calcul 260 1302 +ds calcul 261 1306 +ds calcul 262 1310 +ds calcul 263 1313 +ds calcul 264 1314 +ds calcul 265 1315 +ds calcul 266 1315 +ds calcul 267 1319 +ds calcul 268 1323 +ds calcul 269 1327 +ds calcul 270 1330 +ds calcul 271 1332 +ds calcul 272 1333 +ds calcul 273 1333 +ds calcul 274 1336 +ds calcul 275 1340 +ds calcul 276 1343 +ds calcul 277 1344 +ds calcul 278 1344 +ds calcul 279 1344 +ds calcul 280 1346 +ds calcul 281 1347 +ds calcul 282 1348 +ds calcul 283 1348 +ds calcul 284 1350 +ds calcul 285 1352 +ds calcul 286 1353 +ds calcul 287 1353 +ds calcul 288 1354 +ds calcul 289 1354 +ds calcul 290 1354 +ds calcul 291 1354 +ds calcul 292 1354 +ds calcul 293 1354 +ds calcul 294 1366 +ds calcul 295 1373 +ds calcul 296 1378 +ds calcul 297 1386 +ds calcul 298 1392 +ds calcul 299 1398 +ds calcul 300 1402 +ds calcul 301 1403 +ds calcul 302 1404 +ds calcul 303 1409 +ds calcul 304 1417 +ds calcul 305 1424 +ds calcul 306 1432 +ds calcul 307 1439 +ds calcul 308 1445 +ds calcul 309 1450 +ds calcul 310 1454 +ds calcul 311 1457 +ds calcul 312 1458 +ds calcul 313 1459 +ds calcul 314 1459 +ds calcul 315 1468 +ds calcul 316 1476 +ds calcul 317 1483 +ds calcul 318 1490 +ds calcul 319 1495 +ds calcul 320 1501 +ds calcul 321 1506 +ds calcul 322 1510 +ds calcul 323 1513 +ds calcul 324 1514 +ds calcul 325 1515 +ds calcul 326 1515 +ds calcul 327 1524 +ds calcul 328 1531 +ds calcul 329 1540 +ds calcul 330 1546 +ds calcul 331 1553 +ds calcul 332 1558 +ds calcul 333 1563 +ds calcul 334 1567 +ds calcul 335 1570 +ds calcul 336 1570 +ds calcul 337 1571 +ds calcul 338 1571 +ds calcul 339 1577 +ds calcul 340 1584 +ds calcul 341 1590 +ds calcul 342 1594 +ds calcul 343 1598 +ds calcul 344 1601 +ds calcul 345 1603 +ds calcul 346 1604 +ds calcul 347 1604 +ds calcul 348 1609 +ds calcul 349 1614 +ds calcul 350 1619 +ds calcul 351 1621 +ds calcul 352 1623 +ds calcul 353 1625 +ds calcul 354 1626 +ds calcul 355 1626 +ds calcul 356 1632 +ds calcul 357 1638 +ds calcul 358 1644 +ds calcul 359 1648 +ds calcul 360 1651 +ds calcul 361 1654 +ds calcul 362 1656 +ds calcul 363 1657 +ds calcul 364 1657 +ds calcul 365 1661 +ds calcul 366 1665 +ds calcul 367 1668 +ds calcul 368 1669 +ds calcul 369 1670 +ds calcul 370 1670 +ds calcul 371 1673 +ds calcul 372 1678 +ds calcul 373 1682 +ds calcul 374 1685 +ds calcul 375 1686 +ds calcul 376 1686 +ds calcul 377 1686 +ds calcul 378 1691 +ds calcul 379 1695 +ds calcul 380 1698 +ds calcul 381 1699 +ds calcul 382 1699 +ds calcul 383 1699 +ds calcul 384 1702 +ds calcul 385 1703 +ds calcul 386 1704 +ds calcul 387 1705 +ds calcul 388 1705 +ds calcul 389 1706 +ds calcul 390 1708 +ds calcul 391 1708 +ds calcul 392 1708 +ds calcul 393 1709 +ds calcul 394 1709 +ds calcul 395 1709 +ds calcul 396 1709 +ds calcul 397 1709 +ds calcul 398 1709 +ds calcul 399 1713 +ds calcul 400 1718 +ds calcul 401 1721 +ds calcul 402 1726 +ds calcul 403 1730 +ds calcul 404 1735 +ds calcul 405 1739 +ds calcul 406 1741 +ds calcul 407 1742 +ds calcul 408 1743 +ds calcul 409 1743 +ds calcul 410 1749 +ds calcul 411 1755 +ds calcul 412 1759 +ds calcul 413 1762 +ds calcul 414 1765 +ds calcul 415 1765 +ds calcul 416 1766 +ds calcul 417 1766 +ds calcul 418 1771 +ds calcul 419 1776 +ds calcul 420 1778 +ds calcul 421 1780 +ds calcul 422 1782 +ds calcul 423 1782 +ds calcul 424 1782 +ds calcul 425 1788 +ds calcul 426 1794 +ds calcul 427 1798 +ds calcul 428 1801 +ds calcul 429 1804 +ds calcul 430 1804 +ds calcul 431 1805 +ds calcul 432 1805 +ds calcul 433 1808 +ds calcul 434 1812 +ds calcul 435 1815 +ds calcul 436 1818 +ds calcul 437 1818 +ds calcul 438 1818 +ds calcul 439 1818 +ds calcul 440 1822 +ds calcul 441 1826 +ds calcul 442 1829 +ds calcul 443 1829 +ds calcul 444 1829 +ds calcul 445 1829 +ds calcul 446 1829 +ds calcul 447 1829 +ds calcul 448 1829 +ds calcul 449 1829 +ds calcul 450 1829 +ds calcul 451 1829 +ds calcul 452 1829 +ds calcul 453 1829 +ds calcul 454 1829 +ds calcul 455 1829 +ds calcul 456 1829 +ds calcul 457 1829 +ds calcul 458 1835 +ds calcul 459 1840 +ds calcul 460 1843 +ds calcul 461 1843 +ds calcul 462 1844 +ds calcul 463 1850 +ds calcul 464 1856 +ds calcul 465 1861 +ds calcul 466 1864 +ds calcul 467 1867 +ds calcul 468 1870 +ds calcul 469 1870 +ds calcul 470 1870 +ds calcul 471 1870 +ds calcul 472 1871 +ds calcul 473 1875 +ds calcul 474 1878 +ds calcul 475 1878 +ds calcul 476 1878 +ds calcul 477 1878 +ds calcul 478 1878 +ds calcul 479 1880 +ds calcul 480 1883 +ds calcul 481 1883 +ds calcul 482 1883 +ds calcul 483 1883 +ds calcul 484 1883 +ds calcul 485 1883 +ds calcul 486 1883 +ds calcul 487 1883 +ds calcul 488 1886 +ds calcul 489 1887 +ds calcul 490 1890 +ds calcul 491 1893 +ds calcul 492 1894 +ds calcul 493 1894 +ds calcul 494 1894 +ds calcul 495 1896 +ds calcul 496 1899 +ds calcul 497 1900 +ds calcul 498 1900 +ds calcul 499 1900 +ds calcul 500 1902 +ds calcul 501 1903 +ds calcul 502 1903 +ds calcul 503 1903 +ds calcul 504 1903 +ds calcul 505 1905 +ds calcul 506 1908 +ds calcul 507 1911 +ds calcul 508 1912 +ds calcul 509 1912 +ds calcul 510 1912 +ds calcul 511 1915 +ds calcul 512 1918 +ds calcul 513 1921 +ds calcul 514 1922 +ds calcul 515 1922 +ds calcul 516 1922 +ds calcul 517 1925 +ds calcul 518 1928 +ds calcul 519 1931 +ds calcul 520 1931 +ds calcul 521 1931 +ds calcul 522 1931 +ds calcul 523 1931 +ds calcul 524 1931 +ds calcul 525 1931 +ds calcul 526 1931 +ds calcul 527 1931 +ds calcul 528 1931 +ds calcul 529 1931 +ds calcul 530 1931 +ds calcul 531 1931 +ds calcul 532 1931 +ds calcul 533 1931 +ds calcul 534 1931 +ds calcul 535 1931 +ds calcul 536 1931 +ds calcul 537 1931 +ds calcul 538 1931 +ds calcul 539 1931 +ds calcul 540 1931 +ds calcul 541 1931 +ds calcul 542 1931 +ds calcul 543 1931 +ds calcul 544 1931 +ds calcul 545 1931 +ds calcul 546 1931 +ds calcul 547 1931 +ds calcul 548 1931 +ds calcul 549 1931 +ds calcul 550 1938 +ds calcul 551 1945 +ds calcul 552 1948 +ds calcul 553 1949 +ds calcul 554 1950 +ds calcul 555 1959 +ds calcul 556 1968 +ds calcul 557 1974 +ds calcul 558 1978 +ds calcul 559 1984 +ds calcul 560 1987 +ds calcul 561 1990 +ds calcul 562 1993 +ds calcul 563 1993 +ds calcul 564 1993 +ds calcul 565 1993 +ds calcul 566 2001 +ds calcul 567 2010 +ds calcul 568 2016 +ds calcul 569 2021 +ds calcul 570 2026 +ds calcul 571 2029 +ds calcul 572 2032 +ds calcul 573 2033 +ds calcul 574 2033 +ds calcul 575 2033 +ds calcul 576 2033 +ds calcul 577 2038 +ds calcul 578 2044 +ds calcul 579 2047 +ds calcul 580 2050 +ds calcul 581 2053 +ds calcul 582 2053 +ds calcul 583 2053 +ds calcul 584 2053 +ds calcul 585 2058 +ds calcul 586 2064 +ds calcul 587 2067 +ds calcul 588 2069 +ds calcul 589 2072 +ds calcul 590 2072 +ds calcul 591 2072 +ds calcul 592 2072 +ds calcul 593 2075 +ds calcul 594 2077 +ds calcul 595 2078 +ds calcul 596 2081 +ds calcul 597 2084 +ds calcul 598 2084 +ds calcul 599 2084 +ds calcul 600 2084 +ds calcul 601 2087 +ds calcul 602 2090 +ds calcul 603 2092 +ds calcul 604 2092 +ds calcul 605 2092 +ds calcul 606 2092 +ds calcul 607 2092 +ds calcul 608 2092 +ds calcul 609 2092 +ds calcul 610 2092 +ds calcul 611 2092 +ds calcul 612 2092 +ds calcul 613 2092 +ds calcul 614 2092 +ds calcul 615 2092 + +[6, 7, 4, 5, 2, 3, 1, 0] +ds calcul 616 2097 + +[6, 7, 4, 5, 1, 2, 3, 0] +ds calcul 617 2100 +ds calcul 618 2105 +ds calcul 619 2112 +ds calcul 620 2117 +ds calcul 621 2120 + +[6, 7, 4, 0, 3, 2, 5, 1] +ds calcul 622 2122 +ds calcul 623 2124 +ds calcul 624 2125 +ds calcul 625 2125 +ds calcul 626 2125 +ds calcul 627 2128 +ds calcul 628 2128 +ds calcul 629 2128 +ds calcul 630 2134 +ds calcul 631 2137 +ds calcul 632 2138 +ds calcul 633 2140 +ds calcul 634 2140 +ds calcul 635 2140 +ds calcul 636 2140 +ds calcul 637 2143 +ds calcul 638 2145 +ds calcul 639 2146 +ds calcul 640 2149 +ds calcul 641 2152 +ds calcul 642 2153 +ds calcul 643 2153 +ds calcul 644 2153 +ds calcul 645 2153 +ds calcul 646 2153 +ds calcul 647 2153 +ds calcul 648 2153 +ds calcul 649 2153 +ds calcul 650 2153 +ds calcul 651 2153 +ds calcul 652 2153 +ds calcul 653 2153 +ds calcul 654 2153 +ds calcul 655 2155 +ds calcul 656 2157 +ds calcul 657 2157 +ds calcul 658 2158 +ds calcul 659 2158 + +[6, 7, 1, 4, 3, 0, 5, 2] +ds calcul 660 2159 +ds calcul 661 2161 +ds calcul 662 2161 +ds calcul 663 2161 +ds calcul 664 2161 +ds calcul 665 2161 +ds calcul 666 2161 +ds calcul 667 2161 +ds calcul 668 2169 +ds calcul 669 2173 +ds calcul 670 2175 +ds calcul 671 2183 +ds calcul 672 2190 +ds calcul 673 2197 +ds calcul 674 2200 +ds calcul 675 2204 +ds calcul 676 2207 + +[6, 4, 7, 0, 3, 2, 5, 1] +ds calcul 677 2209 +ds calcul 678 2211 +ds calcul 679 2212 +ds calcul 680 2212 +ds calcul 681 2212 +ds calcul 682 2218 +ds calcul 683 2223 +ds calcul 684 2226 +ds calcul 685 2229 +ds calcul 686 2231 +ds calcul 687 2231 +ds calcul 688 2231 +ds calcul 689 2231 +ds calcul 690 2236 +ds calcul 691 2241 +ds calcul 692 2244 +ds calcul 693 2246 +ds calcul 694 2248 +ds calcul 695 2248 +ds calcul 696 2248 +ds calcul 697 2248 +ds calcul 698 2252 +ds calcul 699 2256 +ds calcul 700 2259 +ds calcul 701 2261 +ds calcul 702 2261 +ds calcul 703 2261 +ds calcul 704 2261 +ds calcul 705 2264 +ds calcul 706 2267 +ds calcul 707 2268 +ds calcul 708 2268 +ds calcul 709 2268 +ds calcul 710 2268 +ds calcul 711 2271 +ds calcul 712 2274 +ds calcul 713 2276 +ds calcul 714 2276 +ds calcul 715 2276 +ds calcul 716 2276 +ds calcul 717 2278 +ds calcul 718 2280 +ds calcul 719 2281 +ds calcul 720 2281 +ds calcul 721 2281 +ds calcul 722 2281 +ds calcul 723 2281 +ds calcul 724 2281 +ds calcul 725 2281 +ds calcul 726 2281 +ds calcul 727 2281 +ds calcul 728 2281 +ds calcul 729 2281 +ds calcul 730 2284 +ds calcul 731 2286 +ds calcul 732 2289 +ds calcul 733 2291 +ds calcul 734 2292 +ds calcul 735 2292 +ds calcul 736 2292 +ds calcul 737 2295 +ds calcul 738 2296 +ds calcul 739 2298 +ds calcul 740 2299 +ds calcul 741 2299 +ds calcul 742 2299 +ds calcul 743 2300 +ds calcul 744 2301 +ds calcul 745 2302 +ds calcul 746 2302 +ds calcul 747 2302 +ds calcul 748 2305 +ds calcul 749 2307 +ds calcul 750 2308 +ds calcul 751 2309 +ds calcul 752 2309 +ds calcul 753 2309 +ds calcul 754 2309 +ds calcul 755 2309 +ds calcul 756 2310 +ds calcul 757 2310 +ds calcul 758 2310 +ds calcul 759 2311 +ds calcul 760 2313 +ds calcul 761 2313 +ds calcul 762 2313 +ds calcul 763 2313 +ds calcul 764 2313 +ds calcul 765 2313 +ds calcul 766 2313 +ds calcul 767 2313 +ds calcul 768 2313 +ds calcul 769 2313 +ds calcul 770 2313 +ds calcul 771 2313 +ds calcul 772 2314 +ds calcul 773 2315 +ds calcul 774 2316 +ds calcul 775 2316 +ds calcul 776 2317 +ds calcul 777 2317 +ds calcul 778 2317 +ds calcul 779 2317 +ds calcul 780 2317 +ds calcul 781 2317 +ds calcul 782 2317 +ds calcul 783 2317 +ds calcul 784 2317 +ds calcul 785 2318 +ds calcul 786 2319 +ds calcul 787 2319 +ds calcul 788 2319 +ds calcul 789 2319 +ds calcul 790 2319 +ds calcul 791 2320 +ds calcul 792 2320 +ds calcul 793 2320 +ds calcul 794 2321 +ds calcul 795 2321 +ds calcul 796 2321 +ds calcul 797 2321 +ds calcul 798 2321 +ds calcul 799 2321 +ds calcul 800 2321 +ds calcul 801 2321 +ds calcul 802 2321 +ds calcul 803 2321 + +[6, 4, 5, 0, 7, 2, 3, 1] +ds calcul 804 2322 +ds calcul 805 2322 +ds calcul 806 2322 +ds calcul 807 2322 +ds calcul 808 2322 +ds calcul 809 2322 +ds calcul 810 2322 +ds calcul 811 2322 +ds calcul 812 2322 +ds calcul 813 2322 +ds calcul 814 2322 +ds calcul 815 2322 +ds calcul 816 2322 + + en entrant 18 a vistier 2322 +ds calcul 0 0 +ds calcul 1 7 +ds calcul 2 21 +ds calcul 3 26 +ds calcul 4 37 +ds calcul 5 48 +ds calcul 6 57 +ds calcul 7 65 +ds calcul 8 73 +ds calcul 9 78 +ds calcul 10 84 +ds calcul 11 88 +ds calcul 12 92 +ds calcul 13 95 +ds calcul 14 97 +ds calcul 15 98 +ds calcul 16 98 +ds calcul 17 111 +ds calcul 18 116 +ds calcul 19 127 +ds calcul 20 137 +ds calcul 21 144 +ds calcul 22 151 +ds calcul 23 158 +ds calcul 24 163 +ds calcul 25 167 +ds calcul 26 171 +ds calcul 27 174 +ds calcul 28 176 +ds calcul 29 177 +ds calcul 30 177 +ds calcul 31 183 +ds calcul 32 194 +ds calcul 33 203 +ds calcul 34 210 +ds calcul 35 218 +ds calcul 36 224 +ds calcul 37 230 +ds calcul 38 234 +ds calcul 39 238 +ds calcul 40 241 +ds calcul 41 243 +ds calcul 42 244 +ds calcul 43 244 +ds calcul 44 253 +ds calcul 45 261 +ds calcul 46 264 +ds calcul 47 270 +ds calcul 48 276 +ds calcul 49 280 +ds calcul 50 284 +ds calcul 51 287 +ds calcul 52 289 +ds calcul 53 290 +ds calcul 54 290 +ds calcul 55 293 +ds calcul 56 299 +ds calcul 57 302 +ds calcul 58 306 +ds calcul 59 309 +ds calcul 60 311 +ds calcul 61 312 +ds calcul 62 312 +ds calcul 63 316 +ds calcul 64 320 +ds calcul 65 323 +ds calcul 66 324 +ds calcul 67 325 +ds calcul 68 325 +ds calcul 69 327 +ds calcul 70 329 +ds calcul 71 330 +ds calcul 72 330 +ds calcul 73 332 +ds calcul 74 332 +ds calcul 75 332 +ds calcul 76 332 +ds calcul 77 339 +ds calcul 78 351 +ds calcul 79 361 +ds calcul 80 372 +ds calcul 81 379 +ds calcul 82 387 +ds calcul 83 390 +ds calcul 84 396 +ds calcul 85 402 +ds calcul 86 407 +ds calcul 87 410 +ds calcul 88 413 +ds calcul 89 415 +ds calcul 90 416 +ds calcul 91 416 +ds calcul 92 430 +ds calcul 93 443 +ds calcul 94 453 +ds calcul 95 464 +ds calcul 96 473 +ds calcul 97 478 +ds calcul 98 485 +ds calcul 99 488 +ds calcul 100 494 +ds calcul 101 499 +ds calcul 102 503 +ds calcul 103 506 +ds calcul 104 508 +ds calcul 105 509 +ds calcul 106 509 +ds calcul 107 521 +ds calcul 108 530 +ds calcul 109 540 +ds calcul 110 548 +ds calcul 111 553 +ds calcul 112 558 +ds calcul 113 561 +ds calcul 114 566 +ds calcul 115 570 +ds calcul 116 573 +ds calcul 117 575 +ds calcul 118 576 +ds calcul 119 576 +ds calcul 120 584 +ds calcul 121 593 +ds calcul 122 596 +ds calcul 123 601 +ds calcul 124 607 +ds calcul 125 612 +ds calcul 126 616 +ds calcul 127 619 +ds calcul 128 621 +ds calcul 129 622 +ds calcul 130 622 +ds calcul 131 624 +ds calcul 132 628 +ds calcul 133 632 +ds calcul 134 635 +ds calcul 135 637 +ds calcul 136 637 +ds calcul 137 637 +ds calcul 138 640 +ds calcul 139 645 +ds calcul 140 649 +ds calcul 141 652 +ds calcul 142 654 +ds calcul 143 655 +ds calcul 144 655 +ds calcul 145 658 +ds calcul 146 661 +ds calcul 147 662 +ds calcul 148 662 +ds calcul 149 662 +ds calcul 150 663 +ds calcul 151 663 +ds calcul 152 663 +ds calcul 153 663 +ds calcul 154 668 +ds calcul 155 678 +ds calcul 156 685 +ds calcul 157 693 +ds calcul 158 699 +ds calcul 159 705 +ds calcul 160 710 +ds calcul 161 713 +ds calcul 162 716 +ds calcul 163 718 +ds calcul 164 719 +ds calcul 165 719 +ds calcul 166 728 +ds calcul 167 736 +ds calcul 168 741 +ds calcul 169 743 +ds calcul 170 744 +ds calcul 171 745 +ds calcul 172 753 +ds calcul 173 759 +ds calcul 174 765 +ds calcul 175 769 +ds calcul 176 773 +ds calcul 177 776 +ds calcul 178 778 +ds calcul 179 779 +ds calcul 180 779 +ds calcul 181 784 +ds calcul 182 790 +ds calcul 183 791 +ds calcul 184 795 +ds calcul 185 798 +ds calcul 186 800 +ds calcul 187 801 +ds calcul 188 801 +ds calcul 189 805 +ds calcul 190 808 +ds calcul 191 810 +ds calcul 192 811 +ds calcul 193 811 +ds calcul 194 812 +ds calcul 195 813 +ds calcul 196 813 +ds calcul 197 813 +ds calcul 198 813 +ds calcul 199 813 +ds calcul 200 825 +ds calcul 201 836 +ds calcul 202 848 +ds calcul 203 859 +ds calcul 204 867 +ds calcul 205 875 +ds calcul 206 882 +ds calcul 207 889 +ds calcul 208 895 +ds calcul 209 898 +ds calcul 210 902 +ds calcul 211 905 +ds calcul 212 907 +ds calcul 213 908 +ds calcul 214 908 +ds calcul 215 913 +ds calcul 216 924 +ds calcul 217 934 +ds calcul 218 940 +ds calcul 219 948 +ds calcul 220 955 +ds calcul 221 961 +ds calcul 222 966 +ds calcul 223 970 +ds calcul 224 973 +ds calcul 225 975 +ds calcul 226 976 +ds calcul 227 976 +ds calcul 228 986 +ds calcul 229 996 +ds calcul 230 1003 +ds calcul 231 1010 +ds calcul 232 1016 +ds calcul 233 1021 +ds calcul 234 1026 +ds calcul 235 1030 +ds calcul 236 1033 +ds calcul 237 1035 +ds calcul 238 1036 +ds calcul 239 1036 +ds calcul 240 1047 +ds calcul 241 1055 +ds calcul 242 1064 +ds calcul 243 1071 +ds calcul 244 1078 +ds calcul 245 1083 +ds calcul 246 1088 +ds calcul 247 1092 +ds calcul 248 1094 +ds calcul 249 1096 +ds calcul 250 1097 +ds calcul 251 1097 +ds calcul 252 1104 +ds calcul 253 1112 +ds calcul 254 1119 +ds calcul 255 1126 +ds calcul 256 1132 +ds calcul 257 1137 +ds calcul 258 1141 +ds calcul 259 1144 +ds calcul 260 1146 +ds calcul 261 1147 +ds calcul 262 1147 +ds calcul 263 1152 +ds calcul 264 1158 +ds calcul 265 1163 +ds calcul 266 1167 +ds calcul 267 1170 +ds calcul 268 1171 +ds calcul 269 1172 +ds calcul 270 1172 +ds calcul 271 1178 +ds calcul 272 1185 +ds calcul 273 1191 +ds calcul 274 1196 +ds calcul 275 1200 +ds calcul 276 1203 +ds calcul 277 1205 +ds calcul 278 1206 +ds calcul 279 1206 +ds calcul 280 1211 +ds calcul 281 1215 +ds calcul 282 1219 +ds calcul 283 1222 +ds calcul 284 1224 +ds calcul 285 1225 +ds calcul 286 1225 +ds calcul 287 1231 +ds calcul 288 1236 +ds calcul 289 1240 +ds calcul 290 1243 +ds calcul 291 1245 +ds calcul 292 1246 +ds calcul 293 1246 +ds calcul 294 1251 +ds calcul 295 1255 +ds calcul 296 1257 +ds calcul 297 1259 +ds calcul 298 1260 +ds calcul 299 1260 +ds calcul 300 1263 +ds calcul 301 1266 +ds calcul 302 1268 +ds calcul 303 1269 +ds calcul 304 1269 +ds calcul 305 1272 +ds calcul 306 1274 +ds calcul 307 1275 +ds calcul 308 1275 +ds calcul 309 1276 +ds calcul 310 1276 +ds calcul 311 1276 +ds calcul 312 1276 +ds calcul 313 1276 +ds calcul 314 1276 +ds calcul 315 1286 +ds calcul 316 1297 +ds calcul 317 1307 +ds calcul 318 1314 +ds calcul 319 1321 +ds calcul 320 1328 +ds calcul 321 1334 +ds calcul 322 1339 +ds calcul 323 1343 +ds calcul 324 1346 +ds calcul 325 1348 +ds calcul 326 1349 +ds calcul 327 1349 +ds calcul 328 1359 +ds calcul 329 1369 +ds calcul 330 1377 +ds calcul 331 1384 +ds calcul 332 1391 +ds calcul 333 1396 +ds calcul 334 1401 +ds calcul 335 1405 +ds calcul 336 1408 +ds calcul 337 1410 +ds calcul 338 1411 +ds calcul 339 1411 +ds calcul 340 1422 +ds calcul 341 1431 +ds calcul 342 1438 +ds calcul 343 1446 +ds calcul 344 1453 +ds calcul 345 1458 +ds calcul 346 1463 +ds calcul 347 1467 +ds calcul 348 1469 +ds calcul 349 1471 +ds calcul 350 1472 +ds calcul 351 1472 +ds calcul 352 1480 +ds calcul 353 1487 +ds calcul 354 1495 +ds calcul 355 1502 +ds calcul 356 1508 +ds calcul 357 1512 +ds calcul 358 1516 +ds calcul 359 1519 +ds calcul 360 1521 +ds calcul 361 1522 +ds calcul 362 1522 +ds calcul 363 1529 +ds calcul 364 1536 +ds calcul 365 1542 +ds calcul 366 1545 +ds calcul 367 1549 +ds calcul 368 1552 +ds calcul 369 1554 +ds calcul 370 1555 +ds calcul 371 1555 +ds calcul 372 1561 +ds calcul 373 1567 +ds calcul 374 1572 +ds calcul 375 1575 +ds calcul 376 1578 +ds calcul 377 1580 +ds calcul 378 1581 +ds calcul 379 1581 +ds calcul 380 1587 +ds calcul 381 1593 +ds calcul 382 1597 +ds calcul 383 1601 +ds calcul 384 1604 +ds calcul 385 1606 +ds calcul 386 1607 +ds calcul 387 1607 +ds calcul 388 1613 +ds calcul 389 1618 +ds calcul 390 1622 +ds calcul 391 1625 +ds calcul 392 1627 +ds calcul 393 1628 +ds calcul 394 1628 +ds calcul 395 1633 +ds calcul 396 1637 +ds calcul 397 1639 +ds calcul 398 1641 +ds calcul 399 1642 +ds calcul 400 1642 +ds calcul 401 1645 +ds calcul 402 1645 +ds calcul 403 1647 +ds calcul 404 1648 +ds calcul 405 1648 +ds calcul 406 1651 +ds calcul 407 1653 +ds calcul 408 1654 +ds calcul 409 1654 +ds calcul 410 1655 +ds calcul 411 1655 +ds calcul 412 1655 +ds calcul 413 1655 +ds calcul 414 1655 +ds calcul 415 1655 +ds calcul 416 1664 +ds calcul 417 1670 +ds calcul 418 1676 +ds calcul 419 1681 +ds calcul 420 1686 +ds calcul 421 1690 +ds calcul 422 1693 +ds calcul 423 1695 +ds calcul 424 1695 +ds calcul 425 1695 +ds calcul 426 1704 +ds calcul 427 1709 +ds calcul 428 1716 +ds calcul 429 1722 +ds calcul 430 1726 +ds calcul 431 1730 +ds calcul 432 1733 +ds calcul 433 1735 +ds calcul 434 1736 +ds calcul 435 1736 +ds calcul 436 1742 +ds calcul 437 1749 +ds calcul 438 1756 +ds calcul 439 1762 +ds calcul 440 1767 +ds calcul 441 1771 +ds calcul 442 1774 +ds calcul 443 1776 +ds calcul 444 1777 +ds calcul 445 1777 +ds calcul 446 1783 +ds calcul 447 1788 +ds calcul 448 1791 +ds calcul 449 1794 +ds calcul 450 1796 +ds calcul 451 1797 +ds calcul 452 1797 +ds calcul 453 1804 +ds calcul 454 1810 +ds calcul 455 1815 +ds calcul 456 1819 +ds calcul 457 1822 +ds calcul 458 1824 +ds calcul 459 1825 +ds calcul 460 1825 +ds calcul 461 1831 +ds calcul 462 1836 +ds calcul 463 1840 +ds calcul 464 1843 +ds calcul 465 1845 +ds calcul 466 1846 +ds calcul 467 1846 +ds calcul 468 1851 +ds calcul 469 1855 +ds calcul 470 1858 +ds calcul 471 1859 +ds calcul 472 1860 +ds calcul 473 1860 +ds calcul 474 1863 +ds calcul 475 1866 +ds calcul 476 1868 +ds calcul 477 1869 +ds calcul 478 1869 +ds calcul 479 1872 +ds calcul 480 1874 +ds calcul 481 1875 +ds calcul 482 1875 +ds calcul 483 1876 +ds calcul 484 1876 +ds calcul 485 1876 +ds calcul 486 1876 +ds calcul 487 1876 +ds calcul 488 1876 +ds calcul 489 1886 +ds calcul 490 1894 +ds calcul 491 1900 +ds calcul 492 1907 +ds calcul 493 1911 +ds calcul 494 1915 +ds calcul 495 1919 +ds calcul 496 1920 +ds calcul 497 1920 +ds calcul 498 1921 +ds calcul 499 1921 +ds calcul 500 1928 +ds calcul 501 1934 +ds calcul 502 1941 +ds calcul 503 1946 +ds calcul 504 1951 +ds calcul 505 1955 +ds calcul 506 1958 +ds calcul 507 1960 +ds calcul 508 1961 +ds calcul 509 1961 +ds calcul 510 1967 +ds calcul 511 1972 +ds calcul 512 1977 +ds calcul 513 1981 +ds calcul 514 1984 +ds calcul 515 1986 +ds calcul 516 1987 +ds calcul 517 1987 +ds calcul 518 1992 +ds calcul 519 1997 +ds calcul 520 2001 +ds calcul 521 2004 +ds calcul 522 2006 +ds calcul 523 2007 +ds calcul 524 2007 +ds calcul 525 2011 +ds calcul 526 2015 +ds calcul 527 2019 +ds calcul 528 2022 +ds calcul 529 2024 +ds calcul 530 2025 +ds calcul 531 2025 +ds calcul 532 2029 +ds calcul 533 2032 +ds calcul 534 2034 +ds calcul 535 2035 +ds calcul 536 2035 +ds calcul 537 2039 +ds calcul 538 2041 +ds calcul 539 2042 +ds calcul 540 2043 +ds calcul 541 2043 +ds calcul 542 2046 +ds calcul 543 2048 +ds calcul 544 2049 +ds calcul 545 2049 +ds calcul 546 2050 +ds calcul 547 2050 +ds calcul 548 2050 +ds calcul 549 2050 +ds calcul 550 2050 +ds calcul 551 2050 +ds calcul 552 2058 +ds calcul 553 2066 +ds calcul 554 2074 +ds calcul 555 2081 +ds calcul 556 2086 +ds calcul 557 2091 +ds calcul 558 2095 +ds calcul 559 2097 +ds calcul 560 2099 +ds calcul 561 2100 +ds calcul 562 2100 +ds calcul 563 2107 +ds calcul 564 2114 +ds calcul 565 2119 +ds calcul 566 2123 +ds calcul 567 2127 +ds calcul 568 2129 +ds calcul 569 2131 +ds calcul 570 2132 +ds calcul 571 2132 +ds calcul 572 2139 +ds calcul 573 2146 +ds calcul 574 2151 +ds calcul 575 2155 +ds calcul 576 2159 +ds calcul 577 2161 +ds calcul 578 2163 +ds calcul 579 2164 +ds calcul 580 2164 +ds calcul 581 2170 +ds calcul 582 2174 +ds calcul 583 2178 +ds calcul 584 2182 +ds calcul 585 2184 +ds calcul 586 2185 +ds calcul 587 2186 +ds calcul 588 2186 +ds calcul 589 2191 +ds calcul 590 2196 +ds calcul 591 2200 +ds calcul 592 2202 +ds calcul 593 2203 +ds calcul 594 2204 +ds calcul 595 2204 +ds calcul 596 2208 +ds calcul 597 2211 +ds calcul 598 2212 +ds calcul 599 2213 +ds calcul 600 2213 +ds calcul 601 2216 +ds calcul 602 2218 +ds calcul 603 2218 +ds calcul 604 2219 +ds calcul 605 2219 +ds calcul 606 2221 +ds calcul 607 2221 +ds calcul 608 2222 +ds calcul 609 2222 +ds calcul 610 2222 +ds calcul 611 2222 +ds calcul 612 2222 +ds calcul 613 2222 +ds calcul 614 2222 +ds calcul 615 2229 +ds calcul 616 2235 +ds calcul 617 2239 +ds calcul 618 2243 +ds calcul 619 2246 +ds calcul 620 2248 +ds calcul 621 2249 +ds calcul 622 2249 +ds calcul 623 2255 +ds calcul 624 2261 +ds calcul 625 2266 +ds calcul 626 2270 +ds calcul 627 2273 +ds calcul 628 2275 +ds calcul 629 2276 +ds calcul 630 2276 +ds calcul 631 2282 +ds calcul 632 2287 +ds calcul 633 2291 +ds calcul 634 2295 +ds calcul 635 2298 +ds calcul 636 2300 +ds calcul 637 2301 +ds calcul 638 2301 +ds calcul 639 2306 +ds calcul 640 2311 +ds calcul 641 2315 +ds calcul 642 2318 +ds calcul 643 2320 +ds calcul 644 2321 +ds calcul 645 2321 +ds calcul 646 2326 +ds calcul 647 2330 +ds calcul 648 2332 +ds calcul 649 2333 +ds calcul 650 2333 +ds calcul 651 2333 +ds calcul 652 2336 +ds calcul 653 2339 +ds calcul 654 2341 +ds calcul 655 2342 +ds calcul 656 2342 +ds calcul 657 2344 +ds calcul 658 2346 +ds calcul 659 2347 +ds calcul 660 2347 +ds calcul 661 2348 +ds calcul 662 2348 +ds calcul 663 2348 +ds calcul 664 2348 +ds calcul 665 2348 +ds calcul 666 2348 +ds calcul 667 2353 +ds calcul 668 2356 +ds calcul 669 2360 +ds calcul 670 2363 +ds calcul 671 2365 +ds calcul 672 2366 +ds calcul 673 2366 +ds calcul 674 2366 +ds calcul 675 2370 +ds calcul 676 2374 +ds calcul 677 2377 +ds calcul 678 2379 +ds calcul 679 2380 +ds calcul 680 2380 +ds calcul 681 2384 +ds calcul 682 2388 +ds calcul 683 2390 +ds calcul 684 2391 +ds calcul 685 2391 +ds calcul 686 2391 +ds calcul 687 2394 +ds calcul 688 2395 +ds calcul 689 2396 +ds calcul 690 2396 +ds calcul 691 2398 +ds calcul 692 2400 +ds calcul 693 2401 +ds calcul 694 2401 +ds calcul 695 2402 +ds calcul 696 2402 +ds calcul 697 2402 +ds calcul 698 2402 +ds calcul 699 2402 +ds calcul 700 2402 +ds calcul 701 2408 +ds calcul 702 2411 +ds calcul 703 2414 +ds calcul 704 2417 +ds calcul 705 2418 +ds calcul 706 2419 +ds calcul 707 2419 +ds calcul 708 2424 +ds calcul 709 2428 +ds calcul 710 2431 +ds calcul 711 2434 +ds calcul 712 2436 +ds calcul 713 2437 +ds calcul 714 2437 +ds calcul 715 2441 +ds calcul 716 2444 +ds calcul 717 2446 +ds calcul 718 2447 +ds calcul 719 2447 +ds calcul 720 2447 +ds calcul 721 2449 +ds calcul 722 2451 +ds calcul 723 2452 +ds calcul 724 2452 +ds calcul 725 2452 +ds calcul 726 2454 +ds calcul 727 2455 +ds calcul 728 2455 +ds calcul 729 2456 +ds calcul 730 2456 +ds calcul 731 2456 +ds calcul 732 2456 +ds calcul 733 2456 +ds calcul 734 2456 +ds calcul 735 2460 +ds calcul 736 2464 +ds calcul 737 2467 +ds calcul 738 2468 +ds calcul 739 2469 +ds calcul 740 2469 +ds calcul 741 2471 +ds calcul 742 2474 +ds calcul 743 2476 +ds calcul 744 2477 +ds calcul 745 2477 +ds calcul 746 2479 +ds calcul 747 2481 +ds calcul 748 2482 +ds calcul 749 2482 +ds calcul 750 2484 +ds calcul 751 2486 +ds calcul 752 2487 +ds calcul 753 2487 +ds calcul 754 2488 +ds calcul 755 2488 +ds calcul 756 2488 +ds calcul 757 2488 +ds calcul 758 2488 +ds calcul 759 2488 +ds calcul 760 2492 +ds calcul 761 2495 +ds calcul 762 2496 +ds calcul 763 2497 +ds calcul 764 2497 +ds calcul 765 2500 +ds calcul 766 2503 +ds calcul 767 2505 +ds calcul 768 2506 +ds calcul 769 2506 +ds calcul 770 2508 +ds calcul 771 2510 +ds calcul 772 2511 +ds calcul 773 2511 +ds calcul 774 2512 +ds calcul 775 2512 +ds calcul 776 2512 +ds calcul 777 2512 +ds calcul 778 2512 +ds calcul 779 2512 +ds calcul 780 2515 +ds calcul 781 2517 +ds calcul 782 2518 +ds calcul 783 2518 +ds calcul 784 2518 +ds calcul 785 2520 +ds calcul 786 2521 +ds calcul 787 2521 +ds calcul 788 2521 +ds calcul 789 2521 +ds calcul 790 2521 +ds calcul 791 2521 +ds calcul 792 2521 +ds calcul 793 2522 +ds calcul 794 2523 +ds calcul 795 2523 +ds calcul 796 2524 +ds calcul 797 2524 +ds calcul 798 2524 +ds calcul 799 2524 +ds calcul 800 2524 +ds calcul 801 2524 +ds calcul 802 2525 +ds calcul 803 2525 +ds calcul 804 2525 +ds calcul 805 2525 +ds calcul 806 2525 +ds calcul 807 2525 +ds calcul 808 2525 +ds calcul 809 2531 +ds calcul 810 2540 +ds calcul 811 2550 +ds calcul 812 2559 +ds calcul 813 2564 +ds calcul 814 2570 +ds calcul 815 2576 +ds calcul 816 2580 +ds calcul 817 2584 +ds calcul 818 2587 +ds calcul 819 2589 +ds calcul 820 2590 +ds calcul 821 2590 +ds calcul 822 2601 +ds calcul 823 2612 +ds calcul 824 2622 +ds calcul 825 2629 +ds calcul 826 2635 +ds calcul 827 2642 +ds calcul 828 2648 +ds calcul 829 2650 +ds calcul 830 2654 +ds calcul 831 2657 +ds calcul 832 2659 +ds calcul 833 2660 +ds calcul 834 2660 +ds calcul 835 2667 +ds calcul 836 2675 +ds calcul 837 2681 +ds calcul 838 2686 +ds calcul 839 2691 +ds calcul 840 2696 +ds calcul 841 2700 +ds calcul 842 2703 +ds calcul 843 2705 +ds calcul 844 2706 +ds calcul 845 2706 +ds calcul 846 2715 +ds calcul 847 2721 +ds calcul 848 2728 +ds calcul 849 2734 +ds calcul 850 2739 +ds calcul 851 2743 +ds calcul 852 2747 +ds calcul 853 2750 +ds calcul 854 2750 +ds calcul 855 2751 +ds calcul 856 2751 +ds calcul 857 2755 +ds calcul 858 2761 +ds calcul 859 2767 +ds calcul 860 2771 +ds calcul 861 2775 +ds calcul 862 2778 +ds calcul 863 2780 +ds calcul 864 2781 +ds calcul 865 2781 +ds calcul 866 2786 +ds calcul 867 2791 +ds calcul 868 2793 +ds calcul 869 2796 +ds calcul 870 2798 +ds calcul 871 2799 +ds calcul 872 2799 +ds calcul 873 2805 +ds calcul 874 2808 +ds calcul 875 2811 +ds calcul 876 2814 +ds calcul 877 2815 +ds calcul 878 2816 +ds calcul 879 2816 +ds calcul 880 2820 +ds calcul 881 2824 +ds calcul 882 2827 +ds calcul 883 2829 +ds calcul 884 2830 +ds calcul 885 2830 +ds calcul 886 2833 +ds calcul 887 2837 +ds calcul 888 2840 +ds calcul 889 2841 +ds calcul 890 2841 +ds calcul 891 2841 +ds calcul 892 2843 +ds calcul 893 2844 +ds calcul 894 2845 +ds calcul 895 2845 +ds calcul 896 2847 +ds calcul 897 2849 +ds calcul 898 2850 +ds calcul 899 2850 +ds calcul 900 2851 +ds calcul 901 2851 +ds calcul 902 2851 +ds calcul 903 2851 +ds calcul 904 2851 +ds calcul 905 2851 +ds calcul 906 2858 +ds calcul 907 2863 +ds calcul 908 2869 +ds calcul 909 2875 +ds calcul 910 2879 +ds calcul 911 2883 +ds calcul 912 2886 +ds calcul 913 2888 +ds calcul 914 2889 +ds calcul 915 2889 +ds calcul 916 2893 +ds calcul 917 2900 +ds calcul 918 2907 +ds calcul 919 2912 +ds calcul 920 2914 +ds calcul 921 2915 +ds calcul 922 2922 +ds calcul 923 2927 +ds calcul 924 2929 +ds calcul 925 2930 +ds calcul 926 2935 +ds calcul 927 2939 +ds calcul 928 2943 +ds calcul 929 2946 +ds calcul 930 2948 +ds calcul 931 2949 +ds calcul 932 2949 +ds calcul 933 2954 +ds calcul 934 2957 +ds calcul 935 2958 +ds calcul 936 2961 +ds calcul 937 2963 +ds calcul 938 2964 +ds calcul 939 2964 +ds calcul 940 2966 +ds calcul 941 2967 +ds calcul 942 2969 +ds calcul 943 2970 +ds calcul 944 2970 +ds calcul 945 2970 +ds calcul 946 2970 +ds calcul 947 2970 +ds calcul 948 2978 +ds calcul 949 2985 +ds calcul 950 2990 +ds calcul 951 2997 +ds calcul 952 3003 +ds calcul 953 3005 +ds calcul 954 3009 +ds calcul 955 3012 +ds calcul 956 3014 +ds calcul 957 3015 +ds calcul 958 3015 +ds calcul 959 3024 +ds calcul 960 3032 +ds calcul 961 3040 +ds calcul 962 3046 +ds calcul 963 3053 +ds calcul 964 3059 +ds calcul 965 3064 +ds calcul 966 3068 +ds calcul 967 3071 +ds calcul 968 3073 +ds calcul 969 3074 +ds calcul 970 3074 +ds calcul 971 3083 +ds calcul 972 3092 +ds calcul 973 3099 +ds calcul 974 3107 +ds calcul 975 3114 +ds calcul 976 3119 +ds calcul 977 3121 +ds calcul 978 3125 +ds calcul 979 3128 +ds calcul 980 3128 +ds calcul 981 3129 +ds calcul 982 3129 +ds calcul 983 3136 +ds calcul 984 3143 +ds calcul 985 3149 +ds calcul 986 3151 +ds calcul 987 3155 +ds calcul 988 3158 +ds calcul 989 3160 +ds calcul 990 3161 +ds calcul 991 3161 +ds calcul 992 3168 +ds calcul 993 3174 +ds calcul 994 3180 +ds calcul 995 3182 +ds calcul 996 3186 +ds calcul 997 3189 +ds calcul 998 3191 +ds calcul 999 3192 +ds calcul 1000 3192 +ds calcul 1001 3198 +ds calcul 1002 3203 +ds calcul 1003 3204 +ds calcul 1004 3206 +ds calcul 1005 3208 +ds calcul 1006 3209 +ds calcul 1007 3209 +ds calcul 1008 3215 +ds calcul 1009 3219 +ds calcul 1010 3221 +ds calcul 1011 3225 +ds calcul 1012 3228 +ds calcul 1013 3230 +ds calcul 1014 3231 +ds calcul 1015 3231 +ds calcul 1016 3236 +ds calcul 1017 3238 +ds calcul 1018 3242 +ds calcul 1019 3245 +ds calcul 1020 3247 +ds calcul 1021 3248 +ds calcul 1022 3248 +ds calcul 1023 3250 +ds calcul 1024 3254 +ds calcul 1025 3257 +ds calcul 1026 3258 +ds calcul 1027 3258 +ds calcul 1028 3258 +ds calcul 1029 3259 +ds calcul 1030 3259 +ds calcul 1031 3261 +ds calcul 1032 3263 +ds calcul 1033 3264 +ds calcul 1034 3264 +ds calcul 1035 3265 +ds calcul 1036 3265 +ds calcul 1037 3265 +ds calcul 1038 3265 +ds calcul 1039 3265 +ds calcul 1040 3265 +ds calcul 1041 3272 +ds calcul 1042 3278 +ds calcul 1043 3282 +ds calcul 1044 3286 +ds calcul 1045 3289 +ds calcul 1046 3291 +ds calcul 1047 3292 +ds calcul 1048 3292 +ds calcul 1049 3297 +ds calcul 1050 3302 +ds calcul 1051 3304 +ds calcul 1052 3307 +ds calcul 1053 3309 +ds calcul 1054 3310 +ds calcul 1055 3310 +ds calcul 1056 3316 +ds calcul 1057 3319 +ds calcul 1058 3321 +ds calcul 1059 3324 +ds calcul 1060 3325 +ds calcul 1061 3326 +ds calcul 1062 3326 +ds calcul 1063 3331 +ds calcul 1064 3335 +ds calcul 1065 3339 +ds calcul 1066 3342 +ds calcul 1067 3343 +ds calcul 1068 3344 +ds calcul 1069 3344 +ds calcul 1070 3347 +ds calcul 1071 3351 +ds calcul 1072 3354 +ds calcul 1073 3355 +ds calcul 1074 3355 +ds calcul 1075 3355 +ds calcul 1076 3357 +ds calcul 1077 3358 +ds calcul 1078 3359 +ds calcul 1079 3359 +ds calcul 1080 3361 +ds calcul 1081 3362 +ds calcul 1082 3363 +ds calcul 1083 3363 +ds calcul 1084 3363 +ds calcul 1085 3363 +ds calcul 1086 3363 +ds calcul 1087 3363 +ds calcul 1088 3363 +ds calcul 1089 3363 +ds calcul 1090 3370 +ds calcul 1091 3377 +ds calcul 1092 3382 +ds calcul 1093 3388 +ds calcul 1094 3393 +ds calcul 1095 3396 +ds calcul 1096 3399 +ds calcul 1097 3400 +ds calcul 1098 3400 +ds calcul 1099 3400 +ds calcul 1100 3406 +ds calcul 1101 3412 +ds calcul 1102 3417 +ds calcul 1103 3421 +ds calcul 1104 3424 +ds calcul 1105 3426 +ds calcul 1106 3427 +ds calcul 1107 3427 +ds calcul 1108 3433 +ds calcul 1109 3438 +ds calcul 1110 3443 +ds calcul 1111 3447 +ds calcul 1112 3450 +ds calcul 1113 3452 +ds calcul 1114 3453 +ds calcul 1115 3453 +ds calcul 1116 3458 +ds calcul 1117 3462 +ds calcul 1118 3464 +ds calcul 1119 3466 +ds calcul 1120 3467 +ds calcul 1121 3467 +ds calcul 1122 3472 +ds calcul 1123 3474 +ds calcul 1124 3478 +ds calcul 1125 3481 +ds calcul 1126 3482 +ds calcul 1127 3483 +ds calcul 1128 3483 +ds calcul 1129 3487 +ds calcul 1130 3491 +ds calcul 1131 3494 +ds calcul 1132 3496 +ds calcul 1133 3497 +ds calcul 1134 3497 +ds calcul 1135 3501 +ds calcul 1136 3504 +ds calcul 1137 3505 +ds calcul 1138 3505 +ds calcul 1139 3505 +ds calcul 1140 3507 +ds calcul 1141 3508 +ds calcul 1142 3509 +ds calcul 1143 3509 +ds calcul 1144 3510 +ds calcul 1145 3510 +ds calcul 1146 3510 +ds calcul 1147 3510 +ds calcul 1148 3510 +ds calcul 1149 3510 +ds calcul 1150 3516 +ds calcul 1151 3523 +ds calcul 1152 3528 +ds calcul 1153 3531 +ds calcul 1154 3535 +ds calcul 1155 3538 +ds calcul 1156 3538 +ds calcul 1157 3539 +ds calcul 1158 3539 +ds calcul 1159 3545 +ds calcul 1160 3551 +ds calcul 1161 3556 +ds calcul 1162 3559 +ds calcul 1163 3563 +ds calcul 1164 3566 +ds calcul 1165 3566 +ds calcul 1166 3567 +ds calcul 1167 3567 +ds calcul 1168 3574 +ds calcul 1169 3580 +ds calcul 1170 3583 +ds calcul 1171 3586 +ds calcul 1172 3589 +ds calcul 1173 3589 +ds calcul 1174 3590 +ds calcul 1175 3590 +ds calcul 1176 3596 +ds calcul 1177 3600 +ds calcul 1178 3604 +ds calcul 1179 3607 +ds calcul 1180 3607 +ds calcul 1181 3608 +ds calcul 1182 3608 +ds calcul 1183 3612 +ds calcul 1184 3616 +ds calcul 1185 3620 +ds calcul 1186 3623 +ds calcul 1187 3623 +ds calcul 1188 3624 +ds calcul 1189 3624 +ds calcul 1190 3627 +ds calcul 1191 3630 +ds calcul 1192 3630 +ds calcul 1193 3630 +ds calcul 1194 3630 +ds calcul 1195 3632 +ds calcul 1196 3633 +ds calcul 1197 3634 +ds calcul 1198 3634 +ds calcul 1199 3636 +ds calcul 1200 3636 +ds calcul 1201 3637 +ds calcul 1202 3637 +ds calcul 1203 3637 +ds calcul 1204 3637 +ds calcul 1205 3637 +ds calcul 1206 3637 +ds calcul 1207 3640 +ds calcul 1208 3643 +ds calcul 1209 3647 +ds calcul 1210 3650 +ds calcul 1211 3651 +ds calcul 1212 3652 +ds calcul 1213 3652 +ds calcul 1214 3656 +ds calcul 1215 3659 +ds calcul 1216 3663 +ds calcul 1217 3666 +ds calcul 1218 3668 +ds calcul 1219 3668 +ds calcul 1220 3668 +ds calcul 1221 3670 +ds calcul 1222 3674 +ds calcul 1223 3677 +ds calcul 1224 3678 +ds calcul 1225 3678 +ds calcul 1226 3678 +ds calcul 1227 3679 +ds calcul 1228 3680 +ds calcul 1229 3680 +ds calcul 1230 3681 +ds calcul 1231 3683 +ds calcul 1232 3683 +ds calcul 1233 3683 +ds calcul 1234 3684 +ds calcul 1235 3684 +ds calcul 1236 3684 +ds calcul 1237 3684 +ds calcul 1238 3684 +ds calcul 1239 3684 +ds calcul 1240 3687 +ds calcul 1241 3690 +ds calcul 1242 3693 +ds calcul 1243 3694 +ds calcul 1244 3695 +ds calcul 1245 3695 +ds calcul 1246 3698 +ds calcul 1247 3701 +ds calcul 1248 3704 +ds calcul 1249 3706 +ds calcul 1250 3706 +ds calcul 1251 3706 +ds calcul 1252 3709 +ds calcul 1253 3712 +ds calcul 1254 3715 +ds calcul 1255 3716 +ds calcul 1256 3716 +ds calcul 1257 3716 +ds calcul 1258 3718 +ds calcul 1259 3719 +ds calcul 1260 3719 +ds calcul 1261 3719 +ds calcul 1262 3721 +ds calcul 1263 3721 +ds calcul 1264 3721 +ds calcul 1265 3722 +ds calcul 1266 3722 +ds calcul 1267 3722 +ds calcul 1268 3722 +ds calcul 1269 3722 +ds calcul 1270 3722 +ds calcul 1271 3728 +ds calcul 1272 3731 +ds calcul 1273 3734 +ds calcul 1274 3737 +ds calcul 1275 3737 +ds calcul 1276 3738 +ds calcul 1277 3738 +ds calcul 1278 3741 +ds calcul 1279 3744 +ds calcul 1280 3747 +ds calcul 1281 3748 +ds calcul 1282 3748 +ds calcul 1283 3748 +ds calcul 1284 3749 +ds calcul 1285 3750 +ds calcul 1286 3750 +ds calcul 1287 3751 +ds calcul 1288 3751 +ds calcul 1289 3751 +ds calcul 1290 3752 +ds calcul 1291 3752 +ds calcul 1292 3752 +ds calcul 1293 3752 +ds calcul 1294 3752 +ds calcul 1295 3756 +ds calcul 1296 3760 +ds calcul 1297 3763 +ds calcul 1298 3763 +ds calcul 1299 3763 +ds calcul 1300 3763 +ds calcul 1301 3764 +ds calcul 1302 3764 +ds calcul 1303 3766 +ds calcul 1304 3767 +ds calcul 1305 3768 +ds calcul 1306 3768 +ds calcul 1307 3769 +ds calcul 1308 3770 +ds calcul 1309 3770 +ds calcul 1310 3770 +ds calcul 1311 3770 +ds calcul 1312 3770 +ds calcul 1313 3770 +ds calcul 1314 3770 +ds calcul 1315 3770 +ds calcul 1316 3771 +ds calcul 1317 3773 +ds calcul 1318 3774 +ds calcul 1319 3774 +ds calcul 1320 3776 +ds calcul 1321 3777 +ds calcul 1322 3777 +ds calcul 1323 3777 +ds calcul 1324 3778 +ds calcul 1325 3780 +ds calcul 1326 3780 +ds calcul 1327 3780 +ds calcul 1328 3781 +ds calcul 1329 3781 +ds calcul 1330 3781 +ds calcul 1331 3781 +ds calcul 1332 3781 +ds calcul 1333 3781 +ds calcul 1334 3783 +ds calcul 1335 3783 +ds calcul 1336 3783 +ds calcul 1337 3784 +ds calcul 1338 3785 +ds calcul 1339 3785 +ds calcul 1340 3785 +ds calcul 1341 3785 +ds calcul 1342 3785 +ds calcul 1343 3785 +ds calcul 1344 3785 +ds calcul 1345 3785 +ds calcul 1346 3785 +ds calcul 1347 3785 +ds calcul 1348 3785 +ds calcul 1349 3785 +ds calcul 1350 3785 +ds calcul 1351 3785 +ds calcul 1352 3785 +ds calcul 1353 3785 +ds calcul 1354 3785 +ds calcul 1355 3788 +ds calcul 1356 3796 +ds calcul 1357 3803 +ds calcul 1358 3810 +ds calcul 1359 3817 +ds calcul 1360 3823 +ds calcul 1361 3826 +ds calcul 1362 3830 +ds calcul 1363 3833 +ds calcul 1364 3834 +ds calcul 1365 3835 +ds calcul 1366 3835 +ds calcul 1367 3840 +ds calcul 1368 3847 +ds calcul 1369 3853 +ds calcul 1370 3859 +ds calcul 1371 3862 +ds calcul 1372 3862 +ds calcul 1373 3863 +ds calcul 1374 3869 +ds calcul 1375 3875 +ds calcul 1376 3879 +ds calcul 1377 3880 +ds calcul 1378 3881 +ds calcul 1379 3886 +ds calcul 1380 3891 +ds calcul 1381 3896 +ds calcul 1382 3898 +ds calcul 1383 3900 +ds calcul 1384 3902 +ds calcul 1385 3903 +ds calcul 1386 3903 +ds calcul 1387 3904 +ds calcul 1388 3908 +ds calcul 1389 3911 +ds calcul 1390 3912 +ds calcul 1391 3913 +ds calcul 1392 3913 +ds calcul 1393 3916 +ds calcul 1394 3918 +ds calcul 1395 3921 +ds calcul 1396 3923 +ds calcul 1397 3923 +ds calcul 1398 3923 +ds calcul 1399 3925 +ds calcul 1400 3926 +ds calcul 1401 3926 +ds calcul 1402 3926 +ds calcul 1403 3926 +ds calcul 1404 3926 +ds calcul 1405 3933 +ds calcul 1406 3938 +ds calcul 1407 3942 +ds calcul 1408 3945 +ds calcul 1409 3946 +ds calcul 1410 3953 +ds calcul 1411 3959 +ds calcul 1412 3963 +ds calcul 1413 3967 +ds calcul 1414 3970 +ds calcul 1415 3971 +ds calcul 1416 3972 +ds calcul 1417 3972 +ds calcul 1418 3977 +ds calcul 1419 3982 +ds calcul 1420 3985 +ds calcul 1421 3987 +ds calcul 1422 3989 +ds calcul 1423 3990 +ds calcul 1424 3990 +ds calcul 1425 3996 +ds calcul 1426 4002 +ds calcul 1427 4006 +ds calcul 1428 4009 +ds calcul 1429 4012 +ds calcul 1430 4013 +ds calcul 1431 4014 +ds calcul 1432 4014 +ds calcul 1433 4018 +ds calcul 1434 4023 +ds calcul 1435 4027 +ds calcul 1436 4030 +ds calcul 1437 4031 +ds calcul 1438 4031 +ds calcul 1439 4031 +ds calcul 1440 4036 +ds calcul 1441 4040 +ds calcul 1442 4043 +ds calcul 1443 4044 +ds calcul 1444 4044 +ds calcul 1445 4044 +ds calcul 1446 4047 +ds calcul 1447 4048 +ds calcul 1448 4048 +ds calcul 1449 4049 +ds calcul 1450 4049 +ds calcul 1451 4050 +ds calcul 1452 4050 +ds calcul 1453 4050 +ds calcul 1454 4050 +ds calcul 1455 4050 +ds calcul 1456 4050 +ds calcul 1457 4050 +ds calcul 1458 4050 +ds calcul 1459 4050 +ds calcul 1460 4056 +ds calcul 1461 4060 +ds calcul 1462 4065 +ds calcul 1463 4068 +ds calcul 1464 4072 +ds calcul 1465 4074 +ds calcul 1466 4076 +ds calcul 1467 4076 +ds calcul 1468 4076 +ds calcul 1469 4081 +ds calcul 1470 4087 +ds calcul 1471 4092 +ds calcul 1472 4096 +ds calcul 1473 4099 +ds calcul 1474 4100 +ds calcul 1475 4101 +ds calcul 1476 4101 +ds calcul 1477 4105 +ds calcul 1478 4109 +ds calcul 1479 4113 +ds calcul 1480 4115 +ds calcul 1481 4117 +ds calcul 1482 4117 +ds calcul 1483 4117 +ds calcul 1484 4121 +ds calcul 1485 4125 +ds calcul 1486 4129 +ds calcul 1487 4131 +ds calcul 1488 4133 +ds calcul 1489 4134 +ds calcul 1490 4134 +ds calcul 1491 4138 +ds calcul 1492 4141 +ds calcul 1493 4141 +ds calcul 1494 4142 +ds calcul 1495 4142 +ds calcul 1496 4145 +ds calcul 1497 4149 +ds calcul 1498 4152 +ds calcul 1499 4152 +ds calcul 1500 4152 +ds calcul 1501 4152 +ds calcul 1502 4156 +ds calcul 1503 4159 +ds calcul 1504 4159 +ds calcul 1505 4159 +ds calcul 1506 4159 +ds calcul 1507 4160 +ds calcul 1508 4160 +ds calcul 1509 4160 +ds calcul 1510 4160 +ds calcul 1511 4160 +ds calcul 1512 4160 +ds calcul 1513 4160 +ds calcul 1514 4160 +ds calcul 1515 4160 +ds calcul 1516 4166 +ds calcul 1517 4173 +ds calcul 1518 4178 +ds calcul 1519 4182 +ds calcul 1520 4186 +ds calcul 1521 4189 +ds calcul 1522 4189 +ds calcul 1523 4190 +ds calcul 1524 4190 +ds calcul 1525 4194 +ds calcul 1526 4198 +ds calcul 1527 4202 +ds calcul 1528 4204 +ds calcul 1529 4206 +ds calcul 1530 4206 +ds calcul 1531 4206 +ds calcul 1532 4212 +ds calcul 1533 4218 +ds calcul 1534 4223 +ds calcul 1535 4227 +ds calcul 1536 4230 +ds calcul 1537 4233 +ds calcul 1538 4233 +ds calcul 1539 4234 +ds calcul 1540 4234 +ds calcul 1541 4238 +ds calcul 1542 4242 +ds calcul 1543 4245 +ds calcul 1544 4245 +ds calcul 1545 4246 +ds calcul 1546 4246 +ds calcul 1547 4249 +ds calcul 1548 4254 +ds calcul 1549 4258 +ds calcul 1550 4261 +ds calcul 1551 4261 +ds calcul 1552 4261 +ds calcul 1553 4261 +ds calcul 1554 4265 +ds calcul 1555 4268 +ds calcul 1556 4268 +ds calcul 1557 4268 +ds calcul 1558 4268 +ds calcul 1559 4271 +ds calcul 1560 4271 +ds calcul 1561 4271 +ds calcul 1562 4272 +ds calcul 1563 4272 +ds calcul 1564 4273 +ds calcul 1565 4273 +ds calcul 1566 4273 +ds calcul 1567 4273 +ds calcul 1568 4273 +ds calcul 1569 4273 +ds calcul 1570 4273 +ds calcul 1571 4273 +ds calcul 1572 4276 +ds calcul 1573 4279 +ds calcul 1574 4282 +ds calcul 1575 4283 +ds calcul 1576 4283 +ds calcul 1577 4283 +ds calcul 1578 4283 +ds calcul 1579 4287 +ds calcul 1580 4290 +ds calcul 1581 4293 +ds calcul 1582 4294 +ds calcul 1583 4294 +ds calcul 1584 4294 +ds calcul 1585 4298 +ds calcul 1586 4301 +ds calcul 1587 4304 +ds calcul 1588 4305 +ds calcul 1589 4305 +ds calcul 1590 4305 +ds calcul 1591 4306 +ds calcul 1592 4307 +ds calcul 1593 4307 +ds calcul 1594 4307 +ds calcul 1595 4307 +ds calcul 1596 4309 +ds calcul 1597 4309 +ds calcul 1598 4309 +ds calcul 1599 4310 +ds calcul 1600 4310 +ds calcul 1601 4310 +ds calcul 1602 4310 +ds calcul 1603 4310 +ds calcul 1604 4310 +ds calcul 1605 4311 +ds calcul 1606 4313 +ds calcul 1607 4315 +ds calcul 1608 4316 +ds calcul 1609 4316 +ds calcul 1610 4318 +ds calcul 1611 4320 +ds calcul 1612 4322 +ds calcul 1613 4323 +ds calcul 1614 4323 +ds calcul 1615 4325 +ds calcul 1616 4327 +ds calcul 1617 4329 +ds calcul 1618 4330 +ds calcul 1619 4330 +ds calcul 1620 4330 +ds calcul 1621 4330 +ds calcul 1622 4331 +ds calcul 1623 4331 +ds calcul 1624 4331 +ds calcul 1625 4331 +ds calcul 1626 4331 +ds calcul 1627 4334 +ds calcul 1628 4337 +ds calcul 1629 4340 +ds calcul 1630 4340 +ds calcul 1631 4340 +ds calcul 1632 4340 +ds calcul 1633 4344 +ds calcul 1634 4347 +ds calcul 1635 4350 +ds calcul 1636 4351 +ds calcul 1637 4351 +ds calcul 1638 4351 +ds calcul 1639 4355 +ds calcul 1640 4358 +ds calcul 1641 4361 +ds calcul 1642 4362 +ds calcul 1643 4362 +ds calcul 1644 4362 +ds calcul 1645 4362 +ds calcul 1646 4363 +ds calcul 1647 4363 +ds calcul 1648 4363 +ds calcul 1649 4365 +ds calcul 1650 4365 +ds calcul 1651 4365 +ds calcul 1652 4366 +ds calcul 1653 4366 +ds calcul 1654 4366 +ds calcul 1655 4366 +ds calcul 1656 4366 +ds calcul 1657 4366 +ds calcul 1658 4368 +ds calcul 1659 4369 +ds calcul 1660 4369 +ds calcul 1661 4369 +ds calcul 1662 4369 +ds calcul 1663 4369 +ds calcul 1664 4369 +ds calcul 1665 4369 +ds calcul 1666 4369 +ds calcul 1667 4369 +ds calcul 1668 4369 +ds calcul 1669 4369 +ds calcul 1670 4369 +ds calcul 1671 4371 +ds calcul 1672 4372 +ds calcul 1673 4372 +ds calcul 1674 4375 +ds calcul 1675 4376 +ds calcul 1676 4376 +ds calcul 1677 4376 +ds calcul 1678 4376 +ds calcul 1679 4376 +ds calcul 1680 4376 +ds calcul 1681 4376 +ds calcul 1682 4376 +ds calcul 1683 4376 +ds calcul 1684 4376 +ds calcul 1685 4376 +ds calcul 1686 4376 +ds calcul 1687 4379 +ds calcul 1688 4379 +ds calcul 1689 4379 +ds calcul 1690 4379 +ds calcul 1691 4379 +ds calcul 1692 4379 +ds calcul 1693 4379 +ds calcul 1694 4379 +ds calcul 1695 4379 +ds calcul 1696 4379 +ds calcul 1697 4379 +ds calcul 1698 4379 +ds calcul 1699 4379 +ds calcul 1700 4379 +ds calcul 1701 4379 +ds calcul 1702 4379 +ds calcul 1703 4379 +ds calcul 1704 4379 +ds calcul 1705 4379 +ds calcul 1706 4379 +ds calcul 1707 4379 +ds calcul 1708 4379 +ds calcul 1709 4379 +ds calcul 1710 4384 +ds calcul 1711 4387 +ds calcul 1712 4387 +ds calcul 1713 4387 +ds calcul 1714 4390 +ds calcul 1715 4393 +ds calcul 1716 4393 +ds calcul 1717 4393 +ds calcul 1718 4393 +ds calcul 1719 4394 +ds calcul 1720 4394 +ds calcul 1721 4394 +ds calcul 1722 4397 +ds calcul 1723 4399 +ds calcul 1724 4400 +ds calcul 1725 4400 +ds calcul 1726 4400 +ds calcul 1727 4402 +ds calcul 1728 4404 +ds calcul 1729 4404 +ds calcul 1730 4404 +ds calcul 1731 4407 +ds calcul 1732 4409 +ds calcul 1733 4409 +ds calcul 1734 4409 +ds calcul 1735 4409 +ds calcul 1736 4411 +ds calcul 1737 4412 +ds calcul 1738 4413 +ds calcul 1739 4413 +ds calcul 1740 4413 +ds calcul 1741 4413 +ds calcul 1742 4413 +ds calcul 1743 4413 +ds calcul 1744 4417 +ds calcul 1745 4420 +ds calcul 1746 4423 +ds calcul 1747 4423 +ds calcul 1748 4423 +ds calcul 1749 4423 +ds calcul 1750 4427 +ds calcul 1751 4430 +ds calcul 1752 4433 +ds calcul 1753 4433 +ds calcul 1754 4433 +ds calcul 1755 4433 +ds calcul 1756 4433 +ds calcul 1757 4433 +ds calcul 1758 4433 +ds calcul 1759 4433 +ds calcul 1760 4433 +ds calcul 1761 4433 +ds calcul 1762 4433 +ds calcul 1763 4433 +ds calcul 1764 4433 +ds calcul 1765 4433 +ds calcul 1766 4433 +ds calcul 1767 4435 +ds calcul 1768 4437 +ds calcul 1769 4439 +ds calcul 1770 4439 +ds calcul 1771 4439 +ds calcul 1772 4441 +ds calcul 1773 4443 +ds calcul 1774 4445 +ds calcul 1775 4445 +ds calcul 1776 4445 +ds calcul 1777 4445 +ds calcul 1778 4445 +ds calcul 1779 4445 +ds calcul 1780 4445 +ds calcul 1781 4445 +ds calcul 1782 4445 +ds calcul 1783 4449 +ds calcul 1784 4452 +ds calcul 1785 4455 +ds calcul 1786 4455 +ds calcul 1787 4455 +ds calcul 1788 4455 +ds calcul 1789 4459 +ds calcul 1790 4462 +ds calcul 1791 4465 +ds calcul 1792 4465 +ds calcul 1793 4465 +ds calcul 1794 4465 +ds calcul 1795 4465 +ds calcul 1796 4465 +ds calcul 1797 4465 +ds calcul 1798 4465 +ds calcul 1799 4465 +ds calcul 1800 4465 +ds calcul 1801 4465 +ds calcul 1802 4465 +ds calcul 1803 4465 +ds calcul 1804 4465 +ds calcul 1805 4465 +ds calcul 1806 4465 +ds calcul 1807 4465 +ds calcul 1808 4465 +ds calcul 1809 4465 +ds calcul 1810 4465 +ds calcul 1811 4465 +ds calcul 1812 4465 +ds calcul 1813 4465 +ds calcul 1814 4465 +ds calcul 1815 4465 +ds calcul 1816 4465 +ds calcul 1817 4465 +ds calcul 1818 4465 +ds calcul 1819 4465 +ds calcul 1820 4465 +ds calcul 1821 4465 +ds calcul 1822 4465 +ds calcul 1823 4465 +ds calcul 1824 4465 +ds calcul 1825 4465 +ds calcul 1826 4465 +ds calcul 1827 4465 +ds calcul 1828 4465 +ds calcul 1829 4465 +ds calcul 1830 4466 +ds calcul 1831 4469 +ds calcul 1832 4472 +ds calcul 1833 4472 +ds calcul 1834 4472 +ds calcul 1835 4472 +ds calcul 1836 4474 +ds calcul 1837 4477 +ds calcul 1838 4477 +ds calcul 1839 4477 +ds calcul 1840 4477 +ds calcul 1841 4477 +ds calcul 1842 4477 +ds calcul 1843 4477 +ds calcul 1844 4477 +ds calcul 1845 4479 +ds calcul 1846 4482 +ds calcul 1847 4485 +ds calcul 1848 4485 +ds calcul 1849 4485 +ds calcul 1850 4485 +ds calcul 1851 4488 +ds calcul 1852 4491 +ds calcul 1853 4494 +ds calcul 1854 4494 +ds calcul 1855 4494 +ds calcul 1856 4494 +ds calcul 1857 4497 +ds calcul 1858 4500 +ds calcul 1859 4500 +ds calcul 1860 4500 +ds calcul 1861 4500 +ds calcul 1862 4500 +ds calcul 1863 4500 +ds calcul 1864 4500 +ds calcul 1865 4500 +ds calcul 1866 4500 +ds calcul 1867 4500 +ds calcul 1868 4500 +ds calcul 1869 4500 +ds calcul 1870 4500 +ds calcul 1871 4500 +ds calcul 1872 4500 +ds calcul 1873 4500 +ds calcul 1874 4500 +ds calcul 1875 4500 +ds calcul 1876 4500 +ds calcul 1877 4500 +ds calcul 1878 4500 +ds calcul 1879 4500 +ds calcul 1880 4500 diff --git a/experiments/resultat16.txt b/experiments/resultat16.txt new file mode 100644 index 0000000..4756d1d --- /dev/null +++ b/experiments/resultat16.txt @@ -0,0 +1,27 @@ +[13, 14, 15, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] +[13, 14, 15, 8, 11, 10, 9, 12, 7, 6, 5, 4, 3, 2, 1, 0] +[5, 14, 15, 12, 11, 10, 9, 8, 15, 6, 5, 4, 3, 2, 1, 0] +[13, 12, 15, 10, 11, 10, 9, 12, 7, 6, 5, 4, 3, 2, 1, 0] +[13, 14, 15, 8, 11, 10, 9, 12, 7, 6, 4, 5, 3, 2, 1, 0] +[13, 14, 14, 9, 11, 10, 9, 12, 7, 6, 5, 4, 3, 2, 1, 0] +[13, 14, 5, 12, 11, 10, 9, 8, 14, 7, 7, 4, 3, 2, 1, 0] +[13, 14, 5, 12, 11, 10, 9, 8, 15, 7, 4, 6, 3, 2, 1, 0] +[4, 15, 15, 12, 11, 10, 9, 8, 15, 6, 5, 4, 3, 2, 1, 0] +[13, 12, 15, 10, 11, 10, 9, 12, 7, 6, 5, 4, 3, 0, 1, 2] +[13, 4, 15, 10, 11, 10, 9, 12, 7, 14, 5, 4, 3, 2, 1, 0] +[13, 12, 15, 0, 11, 10, 9, 12, 7, 14, 5, 6, 3, 2, 1, 0] +[5, 12, 15, 10, 11, 10, 9, 12, 15, 6, 5, 4, 3, 2, 1, 0] +[13, 12, 15, 2, 11, 10, 9, 12, 7, 6, 5, 12, 3, 2, 1, 0] + + + +[7, 14, 13, 12, 11, 10, 9, 8, 15, 6, 5, 4, 3, 2, 1, 0] +[6, 15, 13, 12, 11, 10, 9, 8, 15, 6, 5, 4, 3, 2, 1, 0] +[7, 15, 13, 12, 11, 10, 9, 8, 6, 14, 5, 4, 3, 2, 1, 0] +[7, 6, 13, 12, 11, 10, 9, 8, 15, 14, 5, 4, 3, 2, 1, 0] +[7, 12, 13, 14, 11, 10, 9, 8, 15, 6, 5, 4, 3, 2, 1, 0] +[7, 14, 13, 4, 11, 10, 9, 8, 15, 6, 5, 12, 3, 2, 1, 0] +[7, 14, 13, 8, 11, 10, 9, 12, 15, 6, 5, 4, 3, 2, 1, 0] +[7, 14, 13, 12, 11, 10, 9, 0, 15, 6, 5, 4, 3, 2, 1, 8] + + diff --git a/experiments/resultat8 b/experiments/resultat8 new file mode 100644 index 0000000..3124dd6 --- /dev/null +++ b/experiments/resultat8 @@ -0,0 +1,4 @@ +------ +[4, 5, 6, 7, 3, 2, 1, 0] +[4, 5, 6, 7, 2, 3, 1, 0] +[4, 5, 6, 7, 2, 0, 3, 1] diff --git a/experiments/resultat8.txt b/experiments/resultat8.txt new file mode 100644 index 0000000..e69de29 diff --git a/experiments/smm.pl b/experiments/smm.pl new file mode 100644 index 0000000..e250541 --- /dev/null +++ b/experiments/smm.pl @@ -0,0 +1,128 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + +suml([],[],[]). + +suml(L1,L2,[E1 + E2|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #> 0, + tp(L). + + + + + + +sc3(X):- + mmult(X,X,X2), + mmult(X,X2,X3), + mmult(X,X3,X4), + mmult(X,X4,X6), + mmult(X,X4,X6), + mmult(X,X6,X7), + mmult(X,X7,X8), + summ(X,X2,S1), + summ(S1,X3,S2), + summ(S2,X4,S3), + summ(S3,X5,S4), + summ(S4,X6,S5), + summ(S5,X7,S6), + summ(S6,X8,S7), + touspositifs(S7). + +sc2(X):- + mmult(X,X,X2), + mmult(X,X2,X3), + mmult(X,X3,X4), + summ(X,X2,S1), + summ(S1,X3,S2), + summ(S2,X4,S3), + touspositifs(S3). + + + + + +bistoc(X):- + X=[[A,B,C,0],[F,E,0,G],[H,0,I,J],[0,K,L,M]], + A in 0..2, + E in 0..2, + I in 0..2, + M in 0..2, + B in 0..1, + C in 0..1, + F in 0..1, + G in 0..1, + H in 0..1, + J in 0..1, + K in 0..1, + L in 0..1, + A + B + C #= 2, + E + F+ G #= 2, + H+ I+ J#= 2, + K+L +M #= 2, + A+F + H#= 2, + B+E +K #= 2, + C+I + L#= 2, + G+ J+M #= 2, + label([A,B,C,F,E,G,H,I,J,K,L,M]), + sc2(X). + + +display_m([]). +display_m([El|R]):- + write(El), + display_m(R). + + +solution(L):- + get_time(T0), + findall(X,bistoc(X),L), + get_time(T1), + DT is T1 - T0, + write('but : '),writeln(DT), + display_m(L). + + + + diff --git a/experiments/smm2.pl b/experiments/smm2.pl new file mode 100644 index 0000000..ea6a95e --- /dev/null +++ b/experiments/smm2.pl @@ -0,0 +1,116 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + +suml([],[],[]). + +suml(L1,L2,[E1 + E2|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #> 0, + tp(L). + + + + +sc2(X):- + mmult(X,X,X2), + mmult(X,X2,X3), + mmult(X,X3,X4), + summ(X,X2,S1), + summ(S1,X3,S2), + summ(S2,X4,S3), + touspositifs(S3). + + + + + +bistoc(X):- + X=[[A,B,C,0],[F,E,0,G],[H,0,I,J],[0,K,L,M]], + A in 0..2, + E in 0..2, + I in 0..2, + M in 0..2, + B in 0..1, + C in 0..1, + F in 0..1, + G in 0..1, + H in 0..1, + J in 0..1, + K in 0..1, + L in 0..1, + A + B + C #= 2, + E + F+ G #= 2, + H+ I+ J#= 2, + K+L +M #= 2, + A+F + H#= 2, + B+E +K #= 2, + C+I + L#= 2, + G+ J+M #= 2, + label([A,B,C,F,E,G,H,I,J,K,L,M]), + sc2(X), + open('res2.txt',append,Stream), + write(Stream,X), + close(Stream). + + +display_m([]). +display_m([El|R]):- + write(El), + display_m(R). + + +solution(L):- + get_time(T0), + findall(X,bistoc(X),L), + get_time(T1), + DT is T1 - T0, + write('but : '),writeln(DT). + + + + + + + + + diff --git a/experiments/smm2bis.pl b/experiments/smm2bis.pl new file mode 100644 index 0000000..554f442 --- /dev/null +++ b/experiments/smm2bis.pl @@ -0,0 +1,110 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + +suml([],[],[]). + +suml(L1,L2,[E1 + E2|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #> 0, + tp(L). + + + + +sc2(X):- + mmult(X,X,X2), + mmult(X,X2,X3), + mmult(X,X3,X4), + summ(X,X2,S1), + summ(S1,X3,S2), + summ(S2,X4,S3), + touspositifs(S3). + + + + + +bistoc(M):- + M=[[M0_0, M0_1, 0, M0_3], [M1_0, M1_1, 0, M1_3], + [M2_0, 0, M2_2, M2_3], [0, M3_1, M3_2, M3_3]], + [M0_0, M1_1, M2_2, M3_3] ins 0..2, + [M0_1, M0_3, M1_0, M1_3, M2_0, M2_3, M3_1, M3_2] ins 0..1, + M0_0+ M0_1+ M0_2 #=2, M1_0+ M1_1+ M1_3 #=2, + M2_0+ M2_2+ M2_3 #=2, M3_1+ M3_2+ M3_3 #=2, + M0_0+ M1_0+ M2_0 #=2, M0_1+ M1_1+ M3_1 #=2, + M0_2+ M2_2+ M3_2 #=2, M1_3+ M2_3+ M3_3 #=2, + mmult(M,M,M2), + mmult(M,M2,M3), + mmult(M,M3,M4), + summ(M,M2,S2), + summ(S2,M3,S3), + summ(S3,M4,S4), + allpositive(S4), + label([M0_0, M0_1, M0_3, M1_0, M1_1, M1_3, M2_0, M2_2, M2_3, M3_1, M3_2, M3_3]), + + open('res2.txt',append,Stream), + write(Stream,M), + close(Stream). + + +display_m([]). +display_m([El|R]):- + write(El), + display_m(R). + + +solution(L):- + get_time(T0), + findall(X,bistoc(X),L), + get_time(T1), + DT is T1 - T0, + write('but : '),writeln(DT). + + + + + + + + + diff --git a/experiments/smm3.pl b/experiments/smm3.pl new file mode 100644 index 0000000..d73a749 --- /dev/null +++ b/experiments/smm3.pl @@ -0,0 +1,184 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + +suml([],[],[]). + +suml(L1,L2,[E1 + E2|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #> 0, + tp(L). + + +sc3(X1):- + mmult(X1,X1,X2), + mmult(X1,X2,X3), + mmult(X1,X3,X4), + mmult(X1,X4,X5), + mmult(X1,X5,X6), + mmult(X1,X6,X7), + mmult(X1,X7,X8), + summ(X1,X2,S2), + summ(S2,X3,S3), + summ(S3,X4,S4), + summ(S4,X5,S5), + summ(S5,X6,S6), + summ(S6,X7,S7), + summ(S7,X8,S8), + touspositifs(S8). + +bistoc(X):- + X=[[M0X0, M0X1, M0X2, M0X3, M0X4, M0X5, M0X6, M0X7], [M1X0, M1X1, M1X2, M1X3, M1X4, M1X5, M1X6, M1X7], [M2X0, M2X1, M2X2, M2X3, M2X4, M2X5, M2X6, M2X7], [M3X0, M3X1, M3X2, M3X3, M3X4, M3X5, M3X6, M3X7], [M4X0, M4X1, M4X2, M4X3, M4X4, M4X5, M4X6, M4X7], [M5X0, M5X1, M5X2, M5X3, M5X4, M5X5, M5X6, M5X7], [M6X0, M6X1, M6X2, M6X3, M6X4, M6X5, M6X6, M6X7], [M7X0, M7X1, M7X2, M7X3, M7X4, M7X5, M7X6, M7X7]], + M0X0 in 0..3, + M0X1 in 0..1, + M0X2 in 0..1, + M0X3 is 0 , + M0X4 in 0..1, + M0X5 is 0 , + M0X6 is 0 , + M0X7 is 0 , + M1X0 in 0..1, + M1X1 in 0..3, + M1X2 is 0 , + M1X3 in 0..1, + M1X4 is 0 , + M1X5 in 0..1, + M1X6 is 0 , + M1X7 is 0 , + M2X0 in 0..1, + M2X1 is 0 , + M2X2 in 0..3, + M2X3 in 0..1, + M2X4 is 0 , + M2X5 is 0 , + M2X6 in 0..1, + M2X7 is 0 , + M3X0 is 0 , + M3X1 in 0..1, + M3X2 in 0..1, + M3X3 in 0..3, + M3X4 is 0 , + M3X5 is 0 , + M3X6 is 0 , + M3X7 in 0..1, + M4X0 in 0..1, + M4X1 is 0 , + M4X2 is 0 , + M4X3 is 0 , + M4X4 in 0..3, + M4X5 in 0..1, + M4X6 in 0..1, + M4X7 is 0 , + M5X0 is 0 , + M5X1 in 0..1, + M5X2 is 0 , + M5X3 is 0 , + M5X4 in 0..1, + M5X5 in 0..3, + M5X6 is 0 , + M5X7 in 0..1, + M6X0 is 0 , + M6X1 is 0 , + M6X2 in 0..1, + M6X3 is 0 , + M6X4 in 0..1, + M6X5 is 0 , + M6X6 in 0..3, + M6X7 in 0..1, + M7X0 is 0 , + M7X1 is 0 , + M7X2 is 0 , + M7X3 in 0..1, + M7X4 is 0 , + M7X5 in 0..1, + M7X6 in 0..1, + M7X7 in 0..3, + M0X0+ M0X1+ M0X2+ M0X3+ M0X4+ M0X5+ M0X6+ M0X7 #=3 , + M1X0+ M1X1+ M1X2+ M1X3+ M1X4+ M1X5+ M1X6+ M1X7 #=3 , + M2X0+ M2X1+ M2X2+ M2X3+ M2X4+ M2X5+ M2X6+ M2X7 #=3 , + M3X0+ M3X1+ M3X2+ M3X3+ M3X4+ M3X5+ M3X6+ M3X7 #=3 , + M4X0+ M4X1+ M4X2+ M4X3+ M4X4+ M4X5+ M4X6+ M4X7 #=3 , + M5X0+ M5X1+ M5X2+ M5X3+ M5X4+ M5X5+ M5X6+ M5X7 #=3 , + M6X0+ M6X1+ M6X2+ M6X3+ M6X4+ M6X5+ M6X6+ M6X7 #=3 , + M7X0+ M7X1+ M7X2+ M7X3+ M7X4+ M7X5+ M7X6+ M7X7 #=3 , + M0X0+ M0X1+ M0X2+ M0X3+ M0X4+ M0X5+ M0X6+ M0X7 #=3 , + M0X0+ M1X0+ M2X0+ M3X0+ M4X0+ M5X0+ M6X0+ M7X0 #=3 , + M1X0+ M1X1+ M1X2+ M1X3+ M1X4+ M1X5+ M1X6+ M1X7 #=3 , + M0X1+ M1X1+ M2X1+ M3X1+ M4X1+ M5X1+ M6X1+ M7X1 #=3 , + M2X0+ M2X1+ M2X2+ M2X3+ M2X4+ M2X5+ M2X6+ M2X7 #=3 , + M0X2+ M1X2+ M2X2+ M3X2+ M4X2+ M5X2+ M6X2+ M7X2 #=3 , + M3X0+ M3X1+ M3X2+ M3X3+ M3X4+ M3X5+ M3X6+ M3X7 #=3 , + M0X3+ M1X3+ M2X3+ M3X3+ M4X3+ M5X3+ M6X3+ M7X3 #=3 , + M4X0+ M4X1+ M4X2+ M4X3+ M4X4+ M4X5+ M4X6+ M4X7 #=3 , + M0X4+ M1X4+ M2X4+ M3X4+ M4X4+ M5X4+ M6X4+ M7X4 #=3 , + M5X0+ M5X1+ M5X2+ M5X3+ M5X4+ M5X5+ M5X6+ M5X7 #=3 , + M0X5+ M1X5+ M2X5+ M3X5+ M4X5+ M5X5+ M6X5+ M7X5 #=3 , + M6X0+ M6X1+ M6X2+ M6X3+ M6X4+ M6X5+ M6X6+ M6X7 #=3 , + M0X6+ M1X6+ M2X6+ M3X6+ M4X6+ M5X6+ M6X6+ M7X6 #=3 , + M7X0+ M7X1+ M7X2+ M7X3+ M7X4+ M7X5+ M7X6+ M7X7 #=3 , + M0X7+ M1X7+ M2X7+ M3X7+ M4X7+ M5X7+ M6X7+ M7X7 #=3 , + label([M0X0, M0X1, M0X2, M0X3, M0X4, M0X5, M0X6, M0X7, M1X0, M1X1, M1X2, M1X3, M1X4, M1X5, M1X6, M1X7, M2X0, M2X1, M2X2, M2X3, M2X4, M2X5, M2X6, M2X7, M3X0, M3X1, M3X2, M3X3, M3X4, M3X5, M3X6, M3X7, M4X0, M4X1, M4X2, M4X3, M4X4, M4X5, M4X6, M4X7, M5X0, M5X1, M5X2, M5X3, M5X4, M5X5, M5X6, M5X7, M6X0, M6X1, M6X2, M6X3, M6X4, M6X5, M6X6, M6X7, M7X0, M7X1, M7X2, M7X3, M7X4, M7X5, M7X6, M7X7]), + sc3(X), + open('res3.txt',append,Stream), + write(Stream,X), + close(Stream). + + + + +display_m([]). +display_m([El|R]):- + write(El), + display_m(R). + + +solution(L):- + get_time(T0), + findall(X,bistoc(X),L), + get_time(T1), + DT is T1 - T0, + write('but : '),writeln(DT), + display_m(L). + + + + diff --git a/experiments/smm4.pl b/experiments/smm4.pl new file mode 100644 index 0000000..f40afca --- /dev/null +++ b/experiments/smm4.pl @@ -0,0 +1,417 @@ +:-use_module(library(clpfd)). + + +% N is the dot product of lists V1 and V2. +dot(V1, V2, N) :- maplist(product,V1,V2,P), sumlist(P,N). +product(N1,N2,N3) :- N3 is N1*N2. + +% Matrix multiplication with matrices represented +% as lists of lists. M3 is the product of M1 and M2 +mmult(M1, M2, M3) :- transpose(M2,MT), maplist(mm_helper(MT), M1, M3). +mm_helper(M2, I1, M3) :- maplist(dot(I1), M2, M3). + + +suml([],[],[]). + +suml(L1,L2,[E1 + E2|R2]):- + L1 = [E1|T1], + L2 = [E2|T2], + suml(T1,T2,R2). + + + +summ([],[],[]). +summ(M1,M2,[Lr|R2]):- + M1 = [E1|T1], + M2 = [E2|T2], + suml(E1,E2,Lr), + summ(T1,T2,R2). + + +flatten(List, Flattened):- + flatten(List, [], Flattened). + +flatten([], Flattened, Flattened). +flatten([Item|Tail], L, Flattened):- + flatten(Item, L1, Flattened), + flatten(Tail, L, L1). +flatten(Item, Flattened, [Item|Flattened]):- + \+ is_list(Item). + +touspositifs(X):- + flatten(X,XF), + tp(XF). + +tp([]). +tp(X):- + X = [E|L], + E #> 0, + tp(L). + + +sc4(X1):- + mmult(X1,X1,X2), + mmult(X1,X2,X3), + mmult(X1,X3,X4), + mmult(X1,X4,X5), + mmult(X1,X5,X6), + mmult(X1,X6,X7), + mmult(X1,X7,X8), + mmult(X1,X8,X9), + mmult(X1,X9,X10), + mmult(X1,X10,X11), + mmult(X1,X11,X12), + mmult(X1,X12,X13), + mmult(X1,X13,X14), + mmult(X1,X14,X15), + mmult(X1,X15,X16), + summ(X1,X2,S2), + summ(S2,X3,S3), + summ(S3,X4,S4), + summ(S4,X5,S5), + summ(S5,X6,S6), + summ(S6,X7,S7), + summ(S7,X8,S8), + summ(S8,X9,S9), + summ(S9,X10,S10), + summ(S10,X11,S11), + summ(S11,X12,S12), + summ(S12,X13,S13), + summ(S13,X14,S14), + summ(S14,X15,S15), + summ(S15,X16,S16), + touspositifs(S16). + +bistoc(X):- + X=[[M0X0, M0X1, M0X2, M0X3, M0X4, M0X5, M0X6, M0X7, M0X8, M0X9, M0X10, M0X11, M0X12, M0X13, M0X14, M0X15], [M1X0, M1X1, M1X2, M1X3, M1X4, M1X5, M1X6, M1X7, M1X8, M1X9, M1X10, M1X11, M1X12, M1X13, M1X14, M1X15], [M2X0, M2X1, M2X2, M2X3, M2X4, M2X5, M2X6, M2X7, M2X8, M2X9, M2X10, M2X11, M2X12, M2X13, M2X14, M2X15], [M3X0, M3X1, M3X2, M3X3, M3X4, M3X5, M3X6, M3X7, M3X8, M3X9, M3X10, M3X11, M3X12, M3X13, M3X14, M3X15], [M4X0, M4X1, M4X2, M4X3, M4X4, M4X5, M4X6, M4X7, M4X8, M4X9, M4X10, M4X11, M4X12, M4X13, M4X14, M4X15], [M5X0, M5X1, M5X2, M5X3, M5X4, M5X5, M5X6, M5X7, M5X8, M5X9, M5X10, M5X11, M5X12, M5X13, M5X14, M5X15], [M6X0, M6X1, M6X2, M6X3, M6X4, M6X5, M6X6, M6X7, M6X8, M6X9, M6X10, M6X11, M6X12, M6X13, M6X14, M6X15], [M7X0, M7X1, M7X2, M7X3, M7X4, M7X5, M7X6, M7X7, M7X8, M7X9, M7X10, M7X11, M7X12, M7X13, M7X14, M7X15], [M8X0, M8X1, M8X2, M8X3, M8X4, M8X5, M8X6, M8X7, M8X8, M8X9, M8X10, M8X11, M8X12, M8X13, M8X14, M8X15], [M9X0, M9X1, M9X2, M9X3, M9X4, M9X5, M9X6, M9X7, M9X8, M9X9, M9X10, M9X11, M9X12, M9X13, M9X14, M9X15], [M10X0, M10X1, M10X2, M10X3, M10X4, M10X5, M10X6, M10X7, M10X8, M10X9, M10X10, M10X11, M10X12, M10X13, M10X14, M10X15], [M11X0, M11X1, M11X2, M11X3, M11X4, M11X5, M11X6, M11X7, M11X8, M11X9, M11X10, M11X11, M11X12, M11X13, M11X14, M11X15], [M12X0, M12X1, M12X2, M12X3, M12X4, M12X5, M12X6, M12X7, M12X8, M12X9, M12X10, M12X11, M12X12, M12X13, M12X14, M12X15], [M13X0, M13X1, M13X2, M13X3, M13X4, M13X5, M13X6, M13X7, M13X8, M13X9, M13X10, M13X11, M13X12, M13X13, M13X14, M13X15], [M14X0, M14X1, M14X2, M14X3, M14X4, M14X5, M14X6, M14X7, M14X8, M14X9, M14X10, M14X11, M14X12, M14X13, M14X14, M14X15], [M15X0, M15X1, M15X2, M15X3, M15X4, M15X5, M15X6, M15X7, M15X8, M15X9, M15X10, M15X11, M15X12, M15X13, M15X14, M15X15]], + M0X0 in 0..4, + M0X1 in 0..1, + M0X2 in 0..1, + M0X3 is 0 , + M0X4 in 0..1, + M0X5 is 0 , + M0X6 is 0 , + M0X7 is 0 , + M0X8 in 0..1, + M0X9 is 0 , + M0X10 is 0 , + M0X11 is 0 , + M0X12 is 0 , + M0X13 is 0 , + M0X14 is 0 , + M0X15 is 0 , + M1X0 in 0..1, + M1X1 in 0..4, + M1X2 is 0 , + M1X3 in 0..1, + M1X4 is 0 , + M1X5 in 0..1, + M1X6 is 0 , + M1X7 is 0 , + M1X8 is 0 , + M1X9 in 0..1, + M1X10 is 0 , + M1X11 is 0 , + M1X12 is 0 , + M1X13 is 0 , + M1X14 is 0 , + M1X15 is 0 , + M2X0 in 0..1, + M2X1 is 0 , + M2X2 in 0..4, + M2X3 in 0..1, + M2X4 is 0 , + M2X5 is 0 , + M2X6 in 0..1, + M2X7 is 0 , + M2X8 is 0 , + M2X9 is 0 , + M2X10 in 0..1, + M2X11 is 0 , + M2X12 is 0 , + M2X13 is 0 , + M2X14 is 0 , + M2X15 is 0 , + M3X0 is 0 , + M3X1 in 0..1, + M3X2 in 0..1, + M3X3 in 0..4, + M3X4 is 0 , + M3X5 is 0 , + M3X6 is 0 , + M3X7 in 0..1, + M3X8 is 0 , + M3X9 is 0 , + M3X10 is 0 , + M3X11 in 0..1, + M3X12 is 0 , + M3X13 is 0 , + M3X14 is 0 , + M3X15 is 0 , + M4X0 in 0..1, + M4X1 is 0 , + M4X2 is 0 , + M4X3 is 0 , + M4X4 in 0..4, + M4X5 in 0..1, + M4X6 in 0..1, + M4X7 is 0 , + M4X8 is 0 , + M4X9 is 0 , + M4X10 is 0 , + M4X11 is 0 , + M4X12 in 0..1, + M4X13 is 0 , + M4X14 is 0 , + M4X15 is 0 , + M5X0 is 0 , + M5X1 in 0..1, + M5X2 is 0 , + M5X3 is 0 , + M5X4 in 0..1, + M5X5 in 0..4, + M5X6 is 0 , + M5X7 in 0..1, + M5X8 is 0 , + M5X9 is 0 , + M5X10 is 0 , + M5X11 is 0 , + M5X12 is 0 , + M5X13 in 0..1, + M5X14 is 0 , + M5X15 is 0 , + M6X0 is 0 , + M6X1 is 0 , + M6X2 in 0..1, + M6X3 is 0 , + M6X4 in 0..1, + M6X5 is 0 , + M6X6 in 0..4, + M6X7 in 0..1, + M6X8 is 0 , + M6X9 is 0 , + M6X10 is 0 , + M6X11 is 0 , + M6X12 is 0 , + M6X13 is 0 , + M6X14 in 0..1, + M6X15 is 0 , + M7X0 is 0 , + M7X1 is 0 , + M7X2 is 0 , + M7X3 in 0..1, + M7X4 is 0 , + M7X5 in 0..1, + M7X6 in 0..1, + M7X7 in 0..4, + M7X8 is 0 , + M7X9 is 0 , + M7X10 is 0 , + M7X11 is 0 , + M7X12 is 0 , + M7X13 is 0 , + M7X14 is 0 , + M7X15 in 0..1, + M8X0 in 0..1, + M8X1 is 0 , + M8X2 is 0 , + M8X3 is 0 , + M8X4 is 0 , + M8X5 is 0 , + M8X6 is 0 , + M8X7 is 0 , + M8X8 in 0..4, + M8X9 in 0..1, + M8X10 in 0..1, + M8X11 is 0 , + M8X12 in 0..1, + M8X13 is 0 , + M8X14 is 0 , + M8X15 is 0 , + M9X0 is 0 , + M9X1 in 0..1, + M9X2 is 0 , + M9X3 is 0 , + M9X4 is 0 , + M9X5 is 0 , + M9X6 is 0 , + M9X7 is 0 , + M9X8 in 0..1, + M9X9 in 0..4, + M9X10 is 0 , + M9X11 in 0..1, + M9X12 is 0 , + M9X13 in 0..1, + M9X14 is 0 , + M9X15 is 0 , + M10X0 is 0 , + M10X1 is 0 , + M10X2 in 0..1, + M10X3 is 0 , + M10X4 is 0 , + M10X5 is 0 , + M10X6 is 0 , + M10X7 is 0 , + M10X8 in 0..1, + M10X9 is 0 , + M10X10 in 0..4, + M10X11 in 0..1, + M10X12 is 0 , + M10X13 is 0 , + M10X14 in 0..1, + M10X15 is 0 , + M11X0 is 0 , + M11X1 is 0 , + M11X2 is 0 , + M11X3 in 0..1, + M11X4 is 0 , + M11X5 is 0 , + M11X6 is 0 , + M11X7 is 0 , + M11X8 is 0 , + M11X9 in 0..1, + M11X10 in 0..1, + M11X11 in 0..4, + M11X12 is 0 , + M11X13 is 0 , + M11X14 is 0 , + M11X15 in 0..1, + M12X0 is 0 , + M12X1 is 0 , + M12X2 is 0 , + M12X3 is 0 , + M12X4 in 0..1, + M12X5 is 0 , + M12X6 is 0 , + M12X7 is 0 , + M12X8 in 0..1, + M12X9 is 0 , + M12X10 is 0 , + M12X11 is 0 , + M12X12 in 0..4, + M12X13 in 0..1, + M12X14 in 0..1, + M12X15 is 0 , + M13X0 is 0 , + M13X1 is 0 , + M13X2 is 0 , + M13X3 is 0 , + M13X4 is 0 , + M13X5 in 0..1, + M13X6 is 0 , + M13X7 is 0 , + M13X8 is 0 , + M13X9 in 0..1, + M13X10 is 0 , + M13X11 is 0 , + M13X12 in 0..1, + M13X13 in 0..4, + M13X14 is 0 , + M13X15 in 0..1, + M14X0 is 0 , + M14X1 is 0 , + M14X2 is 0 , + M14X3 is 0 , + M14X4 is 0 , + M14X5 is 0 , + M14X6 in 0..1, + M14X7 is 0 , + M14X8 is 0 , + M14X9 is 0 , + M14X10 in 0..1, + M14X11 is 0 , + M14X12 in 0..1, + M14X13 is 0 , + M14X14 in 0..4, + M14X15 in 0..1, + M15X0 is 0 , + M15X1 is 0 , + M15X2 is 0 , + M15X3 is 0 , + M15X4 is 0 , + M15X5 is 0 , + M15X6 is 0 , + M15X7 in 0..1, + M15X8 is 0 , + M15X9 is 0 , + M15X10 is 0 , + M15X11 in 0..1, + M15X12 is 0 , + M15X13 in 0..1, + M15X14 in 0..1, + M15X15 in 0..4, + M0X0+ M0X1+ M0X2+ M0X3+ M0X4+ M0X5+ M0X6+ M0X7+ M0X8+ M0X9+ M0X10+ M0X11+ M0X12+ M0X13+ M0X14+ M0X15 #=4 , + M1X0+ M1X1+ M1X2+ M1X3+ M1X4+ M1X5+ M1X6+ M1X7+ M1X8+ M1X9+ M1X10+ M1X11+ M1X12+ M1X13+ M1X14+ M1X15 #=4 , + M2X0+ M2X1+ M2X2+ M2X3+ M2X4+ M2X5+ M2X6+ M2X7+ M2X8+ M2X9+ M2X10+ M2X11+ M2X12+ M2X13+ M2X14+ M2X15 #=4 , + M3X0+ M3X1+ M3X2+ M3X3+ M3X4+ M3X5+ M3X6+ M3X7+ M3X8+ M3X9+ M3X10+ M3X11+ M3X12+ M3X13+ M3X14+ M3X15 #=4 , + M4X0+ M4X1+ M4X2+ M4X3+ M4X4+ M4X5+ M4X6+ M4X7+ M4X8+ M4X9+ M4X10+ M4X11+ M4X12+ M4X13+ M4X14+ M4X15 #=4 , + M5X0+ M5X1+ M5X2+ M5X3+ M5X4+ M5X5+ M5X6+ M5X7+ M5X8+ M5X9+ M5X10+ M5X11+ M5X12+ M5X13+ M5X14+ M5X15 #=4 , + M6X0+ M6X1+ M6X2+ M6X3+ M6X4+ M6X5+ M6X6+ M6X7+ M6X8+ M6X9+ M6X10+ M6X11+ M6X12+ M6X13+ M6X14+ M6X15 #=4 , + M7X0+ M7X1+ M7X2+ M7X3+ M7X4+ M7X5+ M7X6+ M7X7+ M7X8+ M7X9+ M7X10+ M7X11+ M7X12+ M7X13+ M7X14+ M7X15 #=4 , + M8X0+ M8X1+ M8X2+ M8X3+ M8X4+ M8X5+ M8X6+ M8X7+ M8X8+ M8X9+ M8X10+ M8X11+ M8X12+ M8X13+ M8X14+ M8X15 #=4 , + M9X0+ M9X1+ M9X2+ M9X3+ M9X4+ M9X5+ M9X6+ M9X7+ M9X8+ M9X9+ M9X10+ M9X11+ M9X12+ M9X13+ M9X14+ M9X15 #=4 , + M10X0+ M10X1+ M10X2+ M10X3+ M10X4+ M10X5+ M10X6+ M10X7+ M10X8+ M10X9+ M10X10+ M10X11+ M10X12+ M10X13+ M10X14+ M10X15 #=4 , + M11X0+ M11X1+ M11X2+ M11X3+ M11X4+ M11X5+ M11X6+ M11X7+ M11X8+ M11X9+ M11X10+ M11X11+ M11X12+ M11X13+ M11X14+ M11X15 #=4 , + M12X0+ M12X1+ M12X2+ M12X3+ M12X4+ M12X5+ M12X6+ M12X7+ M12X8+ M12X9+ M12X10+ M12X11+ M12X12+ M12X13+ M12X14+ M12X15 #=4 , + M13X0+ M13X1+ M13X2+ M13X3+ M13X4+ M13X5+ M13X6+ M13X7+ M13X8+ M13X9+ M13X10+ M13X11+ M13X12+ M13X13+ M13X14+ M13X15 #=4 , + M14X0+ M14X1+ M14X2+ M14X3+ M14X4+ M14X5+ M14X6+ M14X7+ M14X8+ M14X9+ M14X10+ M14X11+ M14X12+ M14X13+ M14X14+ M14X15 #=4 , + M15X0+ M15X1+ M15X2+ M15X3+ M15X4+ M15X5+ M15X6+ M15X7+ M15X8+ M15X9+ M15X10+ M15X11+ M15X12+ M15X13+ M15X14+ M15X15 #=4 , + M0X0+ M0X1+ M0X2+ M0X3+ M0X4+ M0X5+ M0X6+ M0X7+ M0X8+ M0X9+ M0X10+ M0X11+ M0X12+ M0X13+ M0X14+ M0X15 #=4 , + M0X0+ M1X0+ M2X0+ M3X0+ M4X0+ M5X0+ M6X0+ M7X0+ M8X0+ M9X0+ M10X0+ M11X0+ M12X0+ M13X0+ M14X0+ M15X0 #=4 , + M1X0+ M1X1+ M1X2+ M1X3+ M1X4+ M1X5+ M1X6+ M1X7+ M1X8+ M1X9+ M1X10+ M1X11+ M1X12+ M1X13+ M1X14+ M1X15 #=4 , + M0X1+ M1X1+ M2X1+ M3X1+ M4X1+ M5X1+ M6X1+ M7X1+ M8X1+ M9X1+ M10X1+ M11X1+ M12X1+ M13X1+ M14X1+ M15X1 #=4 , + M2X0+ M2X1+ M2X2+ M2X3+ M2X4+ M2X5+ M2X6+ M2X7+ M2X8+ M2X9+ M2X10+ M2X11+ M2X12+ M2X13+ M2X14+ M2X15 #=4 , + M0X2+ M1X2+ M2X2+ M3X2+ M4X2+ M5X2+ M6X2+ M7X2+ M8X2+ M9X2+ M10X2+ M11X2+ M12X2+ M13X2+ M14X2+ M15X2 #=4 , + M3X0+ M3X1+ M3X2+ M3X3+ M3X4+ M3X5+ M3X6+ M3X7+ M3X8+ M3X9+ M3X10+ M3X11+ M3X12+ M3X13+ M3X14+ M3X15 #=4 , + M0X3+ M1X3+ M2X3+ M3X3+ M4X3+ M5X3+ M6X3+ M7X3+ M8X3+ M9X3+ M10X3+ M11X3+ M12X3+ M13X3+ M14X3+ M15X3 #=4 , + M4X0+ M4X1+ M4X2+ M4X3+ M4X4+ M4X5+ M4X6+ M4X7+ M4X8+ M4X9+ M4X10+ M4X11+ M4X12+ M4X13+ M4X14+ M4X15 #=4 , + M0X4+ M1X4+ M2X4+ M3X4+ M4X4+ M5X4+ M6X4+ M7X4+ M8X4+ M9X4+ M10X4+ M11X4+ M12X4+ M13X4+ M14X4+ M15X4 #=4 , + M5X0+ M5X1+ M5X2+ M5X3+ M5X4+ M5X5+ M5X6+ M5X7+ M5X8+ M5X9+ M5X10+ M5X11+ M5X12+ M5X13+ M5X14+ M5X15 #=4 , + M0X5+ M1X5+ M2X5+ M3X5+ M4X5+ M5X5+ M6X5+ M7X5+ M8X5+ M9X5+ M10X5+ M11X5+ M12X5+ M13X5+ M14X5+ M15X5 #=4 , + M6X0+ M6X1+ M6X2+ M6X3+ M6X4+ M6X5+ M6X6+ M6X7+ M6X8+ M6X9+ M6X10+ M6X11+ M6X12+ M6X13+ M6X14+ M6X15 #=4 , + M0X6+ M1X6+ M2X6+ M3X6+ M4X6+ M5X6+ M6X6+ M7X6+ M8X6+ M9X6+ M10X6+ M11X6+ M12X6+ M13X6+ M14X6+ M15X6 #=4 , + M7X0+ M7X1+ M7X2+ M7X3+ M7X4+ M7X5+ M7X6+ M7X7+ M7X8+ M7X9+ M7X10+ M7X11+ M7X12+ M7X13+ M7X14+ M7X15 #=4 , + M0X7+ M1X7+ M2X7+ M3X7+ M4X7+ M5X7+ M6X7+ M7X7+ M8X7+ M9X7+ M10X7+ M11X7+ M12X7+ M13X7+ M14X7+ M15X7 #=4 , + M8X0+ M8X1+ M8X2+ M8X3+ M8X4+ M8X5+ M8X6+ M8X7+ M8X8+ M8X9+ M8X10+ M8X11+ M8X12+ M8X13+ M8X14+ M8X15 #=4 , + M0X8+ M1X8+ M2X8+ M3X8+ M4X8+ M5X8+ M6X8+ M7X8+ M8X8+ M9X8+ M10X8+ M11X8+ M12X8+ M13X8+ M14X8+ M15X8 #=4 , + M9X0+ M9X1+ M9X2+ M9X3+ M9X4+ M9X5+ M9X6+ M9X7+ M9X8+ M9X9+ M9X10+ M9X11+ M9X12+ M9X13+ M9X14+ M9X15 #=4 , + M0X9+ M1X9+ M2X9+ M3X9+ M4X9+ M5X9+ M6X9+ M7X9+ M8X9+ M9X9+ M10X9+ M11X9+ M12X9+ M13X9+ M14X9+ M15X9 #=4 , + M10X0+ M10X1+ M10X2+ M10X3+ M10X4+ M10X5+ M10X6+ M10X7+ M10X8+ M10X9+ M10X10+ M10X11+ M10X12+ M10X13+ M10X14+ M10X15 #=4 , + M0X10+ M1X10+ M2X10+ M3X10+ M4X10+ M5X10+ M6X10+ M7X10+ M8X10+ M9X10+ M10X10+ M11X10+ M12X10+ M13X10+ M14X10+ M15X10 #=4 , + M11X0+ M11X1+ M11X2+ M11X3+ M11X4+ M11X5+ M11X6+ M11X7+ M11X8+ M11X9+ M11X10+ M11X11+ M11X12+ M11X13+ M11X14+ M11X15 #=4 , + M0X11+ M1X11+ M2X11+ M3X11+ M4X11+ M5X11+ M6X11+ M7X11+ M8X11+ M9X11+ M10X11+ M11X11+ M12X11+ M13X11+ M14X11+ M15X11 #=4 , + M12X0+ M12X1+ M12X2+ M12X3+ M12X4+ M12X5+ M12X6+ M12X7+ M12X8+ M12X9+ M12X10+ M12X11+ M12X12+ M12X13+ M12X14+ M12X15 #=4 , + M0X12+ M1X12+ M2X12+ M3X12+ M4X12+ M5X12+ M6X12+ M7X12+ M8X12+ M9X12+ M10X12+ M11X12+ M12X12+ M13X12+ M14X12+ M15X12 #=4 , + M13X0+ M13X1+ M13X2+ M13X3+ M13X4+ M13X5+ M13X6+ M13X7+ M13X8+ M13X9+ M13X10+ M13X11+ M13X12+ M13X13+ M13X14+ M13X15 #=4 , + M0X13+ M1X13+ M2X13+ M3X13+ M4X13+ M5X13+ M6X13+ M7X13+ M8X13+ M9X13+ M10X13+ M11X13+ M12X13+ M13X13+ M14X13+ M15X13 #=4 , + M14X0+ M14X1+ M14X2+ M14X3+ M14X4+ M14X5+ M14X6+ M14X7+ M14X8+ M14X9+ M14X10+ M14X11+ M14X12+ M14X13+ M14X14+ M14X15 #=4 , + M0X14+ M1X14+ M2X14+ M3X14+ M4X14+ M5X14+ M6X14+ M7X14+ M8X14+ M9X14+ M10X14+ M11X14+ M12X14+ M13X14+ M14X14+ M15X14 #=4 , + M15X0+ M15X1+ M15X2+ M15X3+ M15X4+ M15X5+ M15X6+ M15X7+ M15X8+ M15X9+ M15X10+ M15X11+ M15X12+ M15X13+ M15X14+ M15X15 #=4 , + M0X15+ M1X15+ M2X15+ M3X15+ M4X15+ M5X15+ M6X15+ M7X15+ M8X15+ M9X15+ M10X15+ M11X15+ M12X15+ M13X15+ M14X15+ M15X15 #=4 , + label([M0X0, M0X1, M0X2, M0X3, M0X4, M0X5, M0X6, M0X7, M0X8, M0X9, M0X10, M0X11, M0X12, M0X13, M0X14, M0X15, M1X0, M1X1, M1X2, M1X3, M1X4, M1X5, M1X6, M1X7, M1X8, M1X9, M1X10, M1X11, M1X12, M1X13, M1X14, M1X15, M2X0, M2X1, M2X2, M2X3, M2X4, M2X5, M2X6, M2X7, M2X8, M2X9, M2X10, M2X11, M2X12, M2X13, M2X14, M2X15, M3X0, M3X1, M3X2, M3X3, M3X4, M3X5, M3X6, M3X7, M3X8, M3X9, M3X10, M3X11, M3X12, M3X13, M3X14, M3X15, M4X0, M4X1, M4X2, M4X3, M4X4, M4X5, M4X6, M4X7, M4X8, M4X9, M4X10, M4X11, M4X12, M4X13, M4X14, M4X15, M5X0, M5X1, M5X2, M5X3, M5X4, M5X5, M5X6, M5X7, M5X8, M5X9, M5X10, M5X11, M5X12, M5X13, M5X14, M5X15, M6X0, M6X1, M6X2, M6X3, M6X4, M6X5, M6X6, M6X7, M6X8, M6X9, M6X10, M6X11, M6X12, M6X13, M6X14, M6X15, M7X0, M7X1, M7X2, M7X3, M7X4, M7X5, M7X6, M7X7, M7X8, M7X9, M7X10, M7X11, M7X12, M7X13, M7X14, M7X15, M8X0, M8X1, M8X2, M8X3, M8X4, M8X5, M8X6, M8X7, M8X8, M8X9, M8X10, M8X11, M8X12, M8X13, M8X14, M8X15, M9X0, M9X1, M9X2, M9X3, M9X4, M9X5, M9X6, M9X7, M9X8, M9X9, M9X10, M9X11, M9X12, M9X13, M9X14, M9X15, M10X0, M10X1, M10X2, M10X3, M10X4, M10X5, M10X6, M10X7, M10X8, M10X9, M10X10, M10X11, M10X12, M10X13, M10X14, M10X15, M11X0, M11X1, M11X2, M11X3, M11X4, M11X5, M11X6, M11X7, M11X8, M11X9, M11X10, M11X11, M11X12, M11X13, M11X14, M11X15, M12X0, M12X1, M12X2, M12X3, M12X4, M12X5, M12X6, M12X7, M12X8, M12X9, M12X10, M12X11, M12X12, M12X13, M12X14, M12X15, M13X0, M13X1, M13X2, M13X3, M13X4, M13X5, M13X6, M13X7, M13X8, M13X9, M13X10, M13X11, M13X12, M13X13, M13X14, M13X15, M14X0, M14X1, M14X2, M14X3, M14X4, M14X5, M14X6, M14X7, M14X8, M14X9, M14X10, M14X11, M14X12, M14X13, M14X14, M14X15, M15X0, M15X1, M15X2, M15X3, M15X4, M15X5, M15X6, M15X7, M15X8, M15X9, M15X10, M15X11, M15X12, M15X13, M15X14, M15X15]), + sc4(X), + open('res4.txt',append,Stream), + write(Stream,X), + close(Stream). + + + + + +display_m([]). +display_m([El|R]):- + write(El), + display_m(R). + + +solution(L):- + get_time(T0), + findall(X,bistoc(X),L), + get_time(T1), + DT is T1 - T0, + write('but : '),writeln(DT), + display_m(L). + + + + diff --git a/experiments/testVP.py b/experiments/testVP.py new file mode 100644 index 0000000..e9d5aec --- /dev/null +++ b/experiments/testVP.py @@ -0,0 +1,4 @@ +import numpy as np + +A = np.zeros(12) +A[0,0] diff --git a/graphe1.pdf b/graphe1.pdf new file mode 100644 index 0000000..0e0e765 Binary files /dev/null and b/graphe1.pdf differ diff --git a/graphe2.pdf b/graphe2.pdf new file mode 100644 index 0000000..9ea5f8e Binary files /dev/null and b/graphe2.pdf differ diff --git a/intro.tex b/intro.tex new file mode 100644 index 0000000..7b342b6 --- /dev/null +++ b/intro.tex @@ -0,0 +1,71 @@ + +From the last two decades, many researchers have investigated the use +of chaotic systems to build pseudorandom +sequences~\cite{915396,915385,5376454}. Two main features can +intuitively explain this interest: first of all, chaotic systems have +unpredictable or disorder-like behavior which is needed for producing +complex sequences. Furthermore, such systems are extremely sensitive +to the initial states too: a tiny difference in the input +may lead to dramatic changes in output. + +Moreover, the property of chaos is often reduced to iterate a +\emph{chaotic} function, namely the logistic map\footnote{The logistic +map is defined by $X^0 \in [0,1], X^{n+1} = \mu X^n(1-X^n), \mu \in +[0,4]$.}~\cite{915396,915385}, the Arnolds cat map\footnote{Discrete +Arnolds cat map is defined by $(X^0, Y^0)\in [0,N]^2, X^{n+1} = 2 Y^n ++ X^n$ mod $N$, $Y^{n+1} = X^n+Y^n$ mod $N$.}~\cite{5376454}\ldots +Au\-thors +are thus focused on finding parameters of such kind of functions which +are the most suitable for generating random-like sequences. More +precisely, they have thus to find function parameters that avoid +parasitic attractors and that lead to a uniform distribution of the +output. To check how accurate are their generated +sequences~\cite{bfgw13:ij}, authors are then left to submit their +chaos-based PRNG with good parameters on statistical batteries of +tests~\cite{DBLP:journals/corr/abs-1112-5239}, namely: +DieHARD~\cite{Marsaglia1996}, NIST~\cite{Nist10}, and +TestU01~\cite{LEcuyerS07}. + + + +Devaney has formalized~\cite{Devaney} the fundamental properties of +the chaotic maps, namely: sensitive dependence on initial conditions, +transitivity, and density of periodic points. For short, a system is +sensitive to initial conditions if any point contains, in any +neighborhood, another point with a completely different future +trajectory. Topological transitivity is established when, for any +element, any neighborhood of its future evolution eventually overlaps +with any other open set. On the contrary, a dense set of periodic +points is an element of regularity that a chaotic dynamical system has +to exhibit. However, because of the finiteness of the memory of a +computer, only a kind of discrete chaos is generated. This induces +that chaotic properties, which could have been proven on $\Reels$, can +however be lost on floating point numbers, which is the interpretation +domain of $\Reels$. + +To avoid this loss of chaos, we had constructed chaos-based PRNGs +that iterate a continuous functions $G_f$ defined on the discrete +domain $\llbracket 1 ; n \rrbracket^{\Nats} \times \{0,1\}^n$ where +$f$ is a Boolean function (\textit{i.e.}, $f : \{0,1\}^n \rightarrow +\{0,1\}^n$). These PRNGs are named +$\textit{CIPRNG}_f^1(u)$~\cite{bgw09:ip,guyeuxTaiwan10}, +$\textit{CIPRNG}_f^2(u,v)$~\cite{wbg10:ip}, and +$\textit{XOR~CIPRNG}(S)$~\cite{DBLP:journals/corr/abs-1112-5239}, +where \textit{CI} stands for \emph{Chaotic Iterations}, which have +been particularized according to the function they iterate. + +Chaotic properties have been well established for both the +$\textit{XOR~CIPRNG}$ and $\textit{CIPRNG}_f^1(u)$ under certain +conditions for the iteration function $f$, it has been formerly +deduced that it was the case too for the whole $\textit{CIPRNG}_f^2$ +category of generators. However, contrarily to what has been too much +rapidly deduced, this claim is not obvious (a subsequence of a chaotic +sequence is not necessarily a chaotic sequence too) and it +necessitates a rigorous proof, which is the aim of this article. + +The remainder of the paper is organized as follows. +Section~\ref{sec:notations} recalls definitions of chaos properties +and of the family of \textit{CIPRNG}. Section~\ref{sec:wellchosen} +gives the complete proof of chaos for the $\textit{CIPRNG}_f^2$ +category. This is the main contribution of this work. The paper ends +with a conclusion section where intended future work is presented. diff --git a/iter_f0-eps-converted-to.pdf b/iter_f0-eps-converted-to.pdf new file mode 100644 index 0000000..ca12a76 Binary files /dev/null and b/iter_f0-eps-converted-to.pdf differ diff --git a/iter_f0.dot b/iter_f0.dot new file mode 100644 index 0000000..11581f2 --- /dev/null +++ b/iter_f0.dot @@ -0,0 +1,31 @@ + +[(200, 200), (217.32050807568876, 210), (220, 200), (237.32050807568876, 210), (200, 180), (217.32050807568876, 190), (220, 180), (237.32050807568876, 190)] + +digraph { + graph [rankdir=LR] + 000 [label='000', pos = + 000 -> 000; + 000 -> 010; + 000 -> 001; + 010 -> 010; + 010 -> 110; + 010 -> 011; + 001 -> 000; + 001 -> 001; + 001 -> 101; + 101 -> 101; + 101 -> 100; + 101 -> 111; + 110 -> 110; + 110 -> 100; + 110 -> 111; + 011 -> 010; + 011 -> 001; + 011 -> 011; + 100 -> 000; + 100 -> 101; + 100 -> 100; + 111 -> 110; + 111 -> 011; + 111 -> 111; +} diff --git a/iter_f0.eps b/iter_f0.eps new file mode 100644 index 0000000..cef1a44 --- /dev/null +++ b/iter_f0.eps @@ -0,0 +1,76 @@ +digraph { + graph [bb="0,0,340.71,252"]; + node [label="\N"]; + 000 [height=0.5, + label=000, + pos="27,162", + shape=none, + width=0.75]; + 000 -> 000 [color=blue, + pos="e,54.241,155.26 54.241,168.74 64.024,168.89 72,166.64 72,162 72,159.17 69.038,157.23 64.51,156.18"]; + 001 [height=0.5, + label=001, + pos="151.71,234", + shape=none, + width=0.75]; + 000 -> 001 [pos="e,124.65,224.71 47.47,180.04 65.919,192.5 93.402,208.61 115.53,220.09"]; + 010 [height=0.5, + label=010, + pos="171,162", + shape=none, + width=0.75]; + 000 -> 010 [pos="e,143.55,162 54.085,162 76.47,162 108.5,162 133.37,162"]; + 001 -> 000 [pos="e,54.057,171.29 131.24,215.96 112.79,203.5 85.306,187.39 63.173,175.91"]; + 001 -> 001 [color=blue, + pos="e,178.95,227.26 178.95,240.74 188.73,240.89 196.71,238.64 196.71,234 196.71,231.17 193.75,229.23 189.22,228.18"]; + 101 [height=0.5, + label=101, + pos="151.71,90", + shape=none, + width=0.75]; + 001 -> 101 [pos="e,151.71,108.09 151.71,215.76 151.71,191.2 151.71,147.25 151.71,118.35"]; + 010 -> 010 [color=blue, + pos="e,198.24,155.26 198.24,168.74 208.02,168.89 216,166.64 216,162 216,159.17 213.04,157.23 208.51,156.18"]; + 011 [height=0.5, + label=011, + pos="295.71,234", + shape=none, + width=0.75]; + 010 -> 011 [pos="e,268.65,224.71 191.47,180.04 209.92,192.5 237.4,208.61 259.53,220.09"]; + 110 [height=0.5, + label=110, + pos="171,18", + shape=none, + width=0.75]; + 010 -> 110 [pos="e,171,36.09 171,143.76 171,119.2 171,75.247 171,46.354"]; + 011 -> 001 [pos="e,179.16,234 268.62,234 246.24,234 214.21,234 189.34,234"]; + 011 -> 010 [pos="e,198.06,171.29 275.24,215.96 256.79,203.5 229.31,187.39 207.17,175.91"]; + 011 -> 011 [color=blue, + pos="e,322.95,227.26 322.95,240.74 332.73,240.89 340.71,238.64 340.71,234 340.71,231.17 337.75,229.23 333.22,228.18"]; + 100 [height=0.5, + label=100, + pos="27,18", + shape=none, + width=0.75]; + 100 -> 000 [pos="e,27,143.91 27,36.238 27,60.799 27,104.75 27,133.65"]; + 100 -> 100 [color=blue, + pos="e,54.241,11.257 54.241,24.743 64.024,24.888 72,22.641 72,18 72,15.172 69.038,13.233 64.51,12.182"]; + 100 -> 110 [pos="e,143.55,23.437 54.085,23.411 76.47,24.966 108.5,25.166 133.37,24.014"]; + 101 -> 100 [pos="e,54.007,33.592 124.65,74.377 106.51,63.904 82.427,50.001 62.718,38.622"]; + 101 -> 101 [color=blue, + pos="e,178.95,83.257 178.95,96.743 188.73,96.888 196.71,94.641 196.71,90 196.71,87.172 193.75,85.233 189.22,84.182"]; + 111 [height=0.5, + label=111, + pos="295.71,90", + shape=none, + width=0.75]; + 101 -> 111 [pos="e,268.25,95.437 178.79,95.411 201.18,96.966 233.2,97.166 258.08,96.014"]; + 110 -> 100 [pos="e,54.453,12.563 143.91,12.589 121.53,11.034 89.503,10.834 64.627,11.986"]; + 110 -> 110 [color=blue, + pos="e,198.24,11.257 198.24,24.743 208.02,24.888 216,22.641 216,18 216,15.172 213.04,13.233 208.51,12.182"]; + 110 -> 111 [pos="e,268.7,74.408 198.06,33.623 216.2,44.096 240.28,57.999 259.99,69.378"]; + 111 -> 011 [pos="e,295.71,215.91 295.71,108.24 295.71,132.8 295.71,176.75 295.71,205.65"]; + 111 -> 101 [pos="e,179.16,84.563 268.62,84.589 246.24,83.034 214.21,82.834 189.34,83.986"]; + 111 -> 111 [color=blue, + pos="e,322.95,83.257 322.95,96.743 332.73,96.888 340.71,94.641 340.71,90 340.71,87.172 337.75,85.233 333.22,84.182"]; +} diff --git a/iter_f0b-eps-converted-to.pdf b/iter_f0b-eps-converted-to.pdf new file mode 100644 index 0000000..00d7330 Binary files /dev/null and b/iter_f0b-eps-converted-to.pdf differ diff --git a/iter_f0b.dot b/iter_f0b.dot new file mode 100644 index 0000000..9c35d1e --- /dev/null +++ b/iter_f0b.dot @@ -0,0 +1,45 @@ +digraph { +000 [shape="none"label="000", pos="10,10!"]; +001 [shape="none"label="001", pos="11.7320508076,11!"]; +010 [shape="none", label="010", pos="12,10!"]; +011 [shape="none", label="011", pos="13.7320508076,11!"]; +100 [shape="none", label="100", pos="10,8!"]; +101 [shape="none", label="101", pos="11.7320508076,9!"]; +110 [shape="none", label="110", pos="12,8!"]; +111 [shape="none", label="111", pos="13.7320508076,9!"]; + 000 -> 000; + 000 -> 010; + 000 -> 001; + 010 -> 010; + 010 -> 110; + 010 -> 011; + 001 -> 000; + 001 -> 001; + 001 -> 101; + 101 -> 101; + 101 -> 100; + 101 -> 111; + 110 -> 110; + 110 -> 100; + 110 -> 111; + 011 -> 010; + 011 -> 001; + 011 -> 011; + 100 -> 000; + 100 -> 101; + 100 -> 100; + 111 -> 110; + 111 -> 011; + 111 -> 111; +/* + 000 -> 100 [style="dashed"] + 100 -> 101 [style="dashed"] + 101 -> 001 [style="dashed"] + 001 -> 011 [style="dashed"] + 011 -> 111 [style="dashed"] + 111 -> 110 [style="dashed"] + 110 -> 010 [style="dashed"] + 010 -> 000 [style="dashed"] +*/ + +} diff --git a/iter_f0b.eps b/iter_f0b.eps new file mode 100644 index 0000000..c704fbf --- /dev/null +++ b/iter_f0b.eps @@ -0,0 +1,734 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 385 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 349 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 000->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.24 168.74 moveto +64.02 168.89 72 166.64 72 162 curveto +72 159.17 69.04 157.23 64.51 156.18 curveto +stroke +0 0 0 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 000->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 180.04 moveto +65.92 192.5 93.4 208.61 115.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 000->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 162 moveto +76.47 162 108.5 162 133.37 162 curveto +stroke +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath stroke +grestore +% 001->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 215.96 moveto +112.79 203.5 85.31 187.39 63.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath stroke +grestore +% 001->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.95 240.74 moveto +188.73 240.89 196.71 238.64 196.71 234 curveto +196.71 231.17 193.75 229.23 189.22 228.18 curveto +stroke +0 0 0 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 001->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 151.71 215.76 moveto +151.71 191.2 151.71 147.25 151.71 118.35 curveto +stroke +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath stroke +grestore +% 010->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.24 168.74 moveto +208.02 168.89 216 166.64 216 162 curveto +216 159.17 213.04 157.23 208.51 156.18 curveto +stroke +0 0 0 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath stroke +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 010->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 180.04 moveto +209.92 192.5 237.4 208.61 259.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 010->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 171 143.76 moveto +171 119.2 171 75.25 171 46.35 curveto +stroke +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath stroke +grestore +% 011->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 234 moveto +246.24 234 214.21 234 189.34 234 curveto +stroke +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath stroke +grestore +% 011->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 215.96 moveto +256.79 203.5 229.31 187.39 207.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath stroke +grestore +% 011->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 322.95 240.74 moveto +332.73 240.89 340.71 238.64 340.71 234 curveto +340.71 231.17 337.75 229.23 333.22 228.18 curveto +stroke +0 0 0 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath stroke +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 100->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 27 36.24 moveto +27 60.8 27 104.75 27 133.65 curveto +stroke +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath stroke +grestore +% 100->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.24 24.74 moveto +64.02 24.89 72 22.64 72 18 curveto +72 15.17 69.04 13.23 64.51 12.18 curveto +stroke +0 0 0 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath stroke +grestore +% 100->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 36.04 moveto +65.92 48.5 93.4 64.61 115.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath stroke +grestore +% 101->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 71.96 moveto +112.79 59.5 85.31 43.39 63.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath stroke +grestore +% 101->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.95 96.74 moveto +188.73 96.89 196.71 94.64 196.71 90 curveto +196.71 87.17 193.75 85.23 189.22 84.18 curveto +stroke +0 0 0 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 101->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.79 90 moveto +201.18 90 233.2 90 258.08 90 curveto +stroke +0 0 0 edgecolor +newpath 258.25 93.5 moveto +268.25 90 lineto +258.25 86.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.25 93.5 moveto +268.25 90 lineto +258.25 86.5 lineto +closepath stroke +grestore +% 110->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.91 18 moveto +121.53 18 89.5 18 64.63 18 curveto +stroke +0 0 0 edgecolor +newpath 64.45 14.5 moveto +54.45 18 lineto +64.45 21.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.45 14.5 moveto +54.45 18 lineto +64.45 21.5 lineto +closepath stroke +grestore +% 110->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.24 24.74 moveto +208.02 24.89 216 22.64 216 18 curveto +216 15.17 213.04 13.23 208.51 12.18 curveto +stroke +0 0 0 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath stroke +grestore +% 110->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 36.04 moveto +209.92 48.5 237.4 64.61 259.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath stroke +grestore +% 111->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 295.71 108.24 moveto +295.71 132.8 295.71 176.75 295.71 205.65 curveto +stroke +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath stroke +grestore +% 111->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 71.96 moveto +256.79 59.5 229.31 43.39 207.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath stroke +grestore +% 111->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 322.95 96.74 moveto +332.73 96.89 340.71 94.64 340.71 90 curveto +340.71 87.17 337.75 85.23 333.22 84.18 curveto +stroke +0 0 0 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 385 296 +end +restore +%%EOF diff --git a/iter_f0c.dot b/iter_f0c.dot new file mode 100644 index 0000000..2085927 --- /dev/null +++ b/iter_f0c.dot @@ -0,0 +1,45 @@ +digraph { +000 [shape="none"label="000", pos="10,10!"]; +001 [shape="none"label="001", pos="11.7320508076,11!"]; +010 [shape="none", label="010", pos="12,10!"]; +011 [shape="none", label="011", pos="13.7320508076,11!"]; +100 [shape="none", label="100", pos="10,8!"]; +101 [shape="none", label="101", pos="11.7320508076,9!"]; +110 [shape="none", label="110", pos="12,8!"]; +111 [shape="none", label="111", pos="13.7320508076,9!"]; + 000 -> 000 [color="blue"] + 000 -> 010; + 000 -> 001; + 010 -> 010 [color="blue"] + 010 -> 110; + 010 -> 011; + 001 -> 000; + 001 -> 001 [color="blue"] + 001 -> 101; + 101 -> 101 [color="blue"] + 101 -> 100; + 101 -> 111; + 110 -> 110 [color="blue"] + 110 -> 100; + 110 -> 111; + 011 -> 010; + 011 -> 001; + 011 -> 011 [color="blue"] + 100 -> 000; + 100 -> 100 [color="blue"] + 100 -> 110 + 111 -> 111 [color="blue"] + 111 -> 011; + 111 -> 101 +/* + 000 -> 100 [style="dashed"] + 100 -> 101 [style="dashed"] + 101 -> 001 [style="dashed"] + 001 -> 011 [style="dashed"] + 011 -> 111 [style="dashed"] + 111 -> 110 [style="dashed"] + 110 -> 010 [style="dashed"] + 010 -> 000 [style="dashed"] +*/ + +} diff --git a/iter_f0d.dot b/iter_f0d.dot new file mode 100644 index 0000000..348f327 --- /dev/null +++ b/iter_f0d.dot @@ -0,0 +1,53 @@ +digraph { +000 [shape="none"label="000", pos="10,10!"]; +001 [shape="none"label="001", pos="11.7320508076,11!"]; +010 [shape="none", label="010", pos="12,10!"]; +011 [shape="none", label="011", pos="13.7320508076,11!"]; +100 [shape="none", label="100", pos="10,8!"]; +101 [shape="none", label="101", pos="11.7320508076,9!"]; +110 [shape="none", label="110", pos="12,8!"]; +111 [shape="none", label="111", pos="13.7320508076,9!"]; + 000 -> 000 [color="blue"] + 000 -> 100 [color="blue",style="dashed"] + 000 -> 010; + 000 -> 001; + 010 -> 010 [color="blue"] + 010 -> 000 [color="blue",style="dashed"] + 010 -> 110; + 010 -> 011; + 001 -> 000; + 001 -> 001 [color="blue"] + 001 -> 011 [color="blue",style="dashed"] + 001 -> 101; + 101 -> 001 [color="blue",style="dashed"] + 101 -> 101 [color="blue"] + 101 -> 100; + 101 -> 111; + 110 -> 110 [color="blue"] + 110 -> 010 [color="blue",style="dashed"] + 110 -> 100; + 110 -> 111; + 011 -> 010; + 011 -> 001; + 011 -> 011 [color="blue"] + 011 -> 111 [color="blue",style="dashed"] + 100 -> 000; + 100 -> 101 [color="blue",style="dashed"] + 100 -> 100 [color="blue"] + 100 -> 110 + 111 -> 111 [color="blue"] + 111 -> 110 [color="blue",style="dashed"] + 111 -> 011; + 111 -> 101 +/* + 000 -> 100 [style="dashed"] + 100 -> 101 [style="dashed"] + 101 -> 001 [style="dashed"] + 001 -> 011 [style="dashed"] + 011 -> 111 [style="dashed"] + 111 -> 110 [style="dashed"] + 110 -> 010 [style="dashed"] + 010 -> 000 [style="dashed"] +*/ + +} diff --git a/iter_f0d.eps b/iter_f0d.eps new file mode 100644 index 0000000..8e4f8dc --- /dev/null +++ b/iter_f0d.eps @@ -0,0 +1,902 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 385 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 349 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 000->000 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 168.74 moveto +64.02 168.89 72 166.64 72 162 curveto +72 159.17 69.04 157.23 64.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 000->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 180.04 moveto +65.92 192.5 93.4 208.61 115.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 000->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 167.41 moveto +76.47 168.97 108.5 169.17 133.37 168.01 curveto +stroke +0 0 0 edgecolor +newpath 133.76 171.5 moveto +143.55 167.44 lineto +133.36 164.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.76 171.5 moveto +143.55 167.44 lineto +133.36 164.51 lineto +closepath stroke +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 000->100 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 31.67 143.76 moveto +34.13 119.2 34.41 75.25 32.5 46.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 35.96 45.77 moveto +31.66 36.09 lineto +28.98 46.34 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 35.96 45.77 moveto +31.66 36.09 lineto +28.98 46.34 lineto +closepath stroke +grestore +% 001->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 215.96 moveto +112.79 203.5 85.31 187.39 63.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath stroke +grestore +% 001->001 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 240.74 moveto +188.73 240.89 196.71 238.64 196.71 234 curveto +196.71 231.17 193.75 229.23 189.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath stroke +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 001->011 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 178.79 239.41 moveto +201.18 240.97 233.2 241.17 258.08 240.01 curveto +stroke +0.66667 1 1 edgecolor +newpath 258.47 243.5 moveto +268.25 239.44 lineto +258.07 236.51 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 258.47 243.5 moveto +268.25 239.44 lineto +258.07 236.51 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 001->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 156.38 215.76 moveto +158.84 191.2 159.12 147.25 157.21 118.35 curveto +stroke +0 0 0 edgecolor +newpath 160.67 117.77 moveto +156.37 108.09 lineto +153.69 118.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 160.67 117.77 moveto +156.37 108.09 lineto +153.69 118.34 lineto +closepath stroke +grestore +% 010->000 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 143.91 156.59 moveto +121.53 155.03 89.5 154.83 64.63 155.99 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.24 152.5 moveto +54.45 156.56 lineto +64.64 159.49 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.24 152.5 moveto +54.45 156.56 lineto +64.64 159.49 lineto +closepath stroke +grestore +% 010->010 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 168.74 moveto +208.02 168.89 216 166.64 216 162 curveto +216 159.17 213.04 157.23 208.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath stroke +grestore +% 010->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 180.04 moveto +209.92 192.5 237.4 208.61 259.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 010->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 175.67 143.76 moveto +178.13 119.2 178.41 75.25 176.5 46.35 curveto +stroke +0 0 0 edgecolor +newpath 179.96 45.77 moveto +175.66 36.09 lineto +172.98 46.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 179.96 45.77 moveto +175.66 36.09 lineto +172.98 46.34 lineto +closepath stroke +grestore +% 011->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 228.59 moveto +246.24 227.03 214.21 226.83 189.34 227.99 curveto +stroke +0 0 0 edgecolor +newpath 188.95 224.5 moveto +179.16 228.56 lineto +189.34 231.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 188.95 224.5 moveto +179.16 228.56 lineto +189.34 231.49 lineto +closepath stroke +grestore +% 011->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 215.96 moveto +256.79 203.5 229.31 187.39 207.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath stroke +grestore +% 011->011 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 240.74 moveto +332.73 240.89 340.71 238.64 340.71 234 curveto +340.71 231.17 337.75 229.23 333.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 011->111 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 300.38 215.76 moveto +302.84 191.2 303.12 147.25 301.21 118.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 304.67 117.77 moveto +300.37 108.09 lineto +297.69 118.34 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 304.67 117.77 moveto +300.37 108.09 lineto +297.69 118.34 lineto +closepath stroke +grestore +% 100->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 22.33 36.24 moveto +19.87 60.8 19.59 104.75 21.5 133.65 curveto +stroke +0 0 0 edgecolor +newpath 18.04 134.23 moveto +22.34 143.91 lineto +25.02 133.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 18.04 134.23 moveto +22.34 143.91 lineto +25.02 133.66 lineto +closepath stroke +grestore +% 100->100 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 24.74 moveto +64.02 24.89 72 22.64 72 18 curveto +72 15.17 69.04 13.23 64.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath stroke +grestore +% 100->101 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 47.47 36.04 moveto +65.92 48.5 93.4 64.61 115.53 76.09 curveto +stroke +0.66667 1 1 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath stroke +grestore +% 100->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 23.41 moveto +76.47 24.97 108.5 25.17 133.37 24.01 curveto +stroke +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath stroke +grestore +% 101->001 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 147.03 108.24 moveto +144.57 132.8 144.3 176.75 146.21 205.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 142.75 206.23 moveto +147.05 215.91 lineto +149.72 205.66 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 142.75 206.23 moveto +147.05 215.91 lineto +149.72 205.66 lineto +closepath stroke +grestore +% 101->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 71.96 moveto +112.79 59.5 85.31 43.39 63.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath stroke +grestore +% 101->101 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 96.74 moveto +188.73 96.89 196.71 94.64 196.71 90 curveto +196.71 87.17 193.75 85.23 189.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath stroke +grestore +% 101->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.79 95.41 moveto +201.18 96.97 233.2 97.17 258.08 96.01 curveto +stroke +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath stroke +grestore +% 110->010 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 166.33 36.24 moveto +163.87 60.8 163.59 104.75 165.5 133.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 162.04 134.23 moveto +166.34 143.91 lineto +169.02 133.66 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 162.04 134.23 moveto +166.34 143.91 lineto +169.02 133.66 lineto +closepath stroke +grestore +% 110->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.91 12.59 moveto +121.53 11.03 89.5 10.83 64.63 11.99 curveto +stroke +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath stroke +grestore +% 110->110 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 24.74 moveto +208.02 24.89 216 22.64 216 18 curveto +216 15.17 213.04 13.23 208.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath stroke +grestore +% 110->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 36.04 moveto +209.92 48.5 237.4 64.61 259.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath stroke +grestore +% 111->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 291.03 108.24 moveto +288.57 132.8 288.3 176.75 290.21 205.65 curveto +stroke +0 0 0 edgecolor +newpath 286.75 206.23 moveto +291.05 215.91 lineto +293.72 205.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 286.75 206.23 moveto +291.05 215.91 lineto +293.72 205.66 lineto +closepath stroke +grestore +% 111->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 84.59 moveto +246.24 83.03 214.21 82.83 189.34 83.99 curveto +stroke +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath stroke +grestore +% 111->110 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 275.24 71.96 moveto +256.79 59.5 229.31 43.39 207.17 31.91 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath stroke +grestore +% 111->111 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 96.74 moveto +332.73 96.89 340.71 94.64 340.71 90 curveto +340.71 87.17 337.75 85.23 333.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 385 296 +end +restore +%%EOF diff --git a/iter_f0e.dot b/iter_f0e.dot new file mode 100644 index 0000000..ee012f8 --- /dev/null +++ b/iter_f0e.dot @@ -0,0 +1,29 @@ +digraph { +000 [shape="none"label="000", pos="10,10!"]; +001 [shape="none"label="001", pos="11.7320508076,11!"]; +010 [shape="none", label="010", pos="12,10!"]; +011 [shape="none", label="011", pos="13.7320508076,11!"]; +100 [shape="none", label="100", pos="10,8!"]; +101 [shape="none", label="101", pos="11.7320508076,9!"]; +110 [shape="none", label="110", pos="12,8!"]; +111 [shape="none", label="111", pos="13.7320508076,9!"]; + 000 -> 100 [color="blue",style="dashed"] + 010 -> 000 [color="blue",style="dashed"] + 001 -> 011 [color="blue",style="dashed"] + 101 -> 001 [color="blue",style="dashed"] + 110 -> 010 [color="blue",style="dashed"] + 011 -> 111 [color="blue",style="dashed"] + 100 -> 101 [color="blue",style="dashed"] + 111 -> 110 [color="blue",style="dashed"] +/* + 000 -> 100 [style="dashed"] + 100 -> 101 [style="dashed"] + 101 -> 001 [style="dashed"] + 001 -> 011 [style="dashed"] + 011 -> 111 [style="dashed"] + 111 -> 110 [style="dashed"] + 110 -> 010 [style="dashed"] + 010 -> 000 [style="dashed"] +*/ + +} diff --git a/talk/#assync.tex# b/talk/#assync.tex# new file mode 100644 index 0000000..b5a9dd5 --- /dev/null +++ b/talk/#assync.tex# @@ -0,0 +1,31 @@ +\begin{itemize} +\item Calculs effectués sur chaque n{\oe}ud: réécriture de +$$ +w_l^{(k+1)} = w_l^{(k+1)} + \theta^{(k)}. \left( \sum_{i \in N} a_{il}.q_i^{(k)} \right) +$$ +\item Conditions pour la convergence asynchrone du calcul\footnote{Nedić, A., Bertsekas, D. P., \& Borkar, V. S. (2001). Distributed asynchronous incremental subgradient methods. Studies in Computational Mathematics, 8, 381-407.} +\begin{itemize} +\item Majoration des sous-gradients par une constante $C$ +\item $\theta$: sous la forme $\omega / t^{q}$ avec $3/4 < q \leq 1$ + \end{itemize} +\item Premières expérimentations: +\begin{itemize} +\item Pour chaque variable $X$ à modifier: + $X^{k+1} = f(X^{k}) if \textit{random()} Simulation of Chaotic systems: Double pendulum, Protein dynamics +\item \ldots +\end{itemize} +\item Practical requirements: +\begin{itemize} +\item Reproducibility: same seed $\leadsto$ same stream +\item Successfull pass on PRNG batteries of tests +currently the NIST suite~\cite{Nist10}, and DieHARD~\cite{Marsaglia1996} +\item<-2> Should have chaotic properties if needed +\end{itemize} +\end{itemize} + diff --git a/talk/cv.tex~ b/talk/cv.tex~ new file mode 100644 index 0000000..24bfbce --- /dev/null +++ b/talk/cv.tex~ @@ -0,0 +1,8 @@ +\vspace{-1em} +\includegraphics[width=9cm]{reseau.png} +\vspace{-3em} +\begin{itemize} +\item Objectif: maximiser la durée de vie du réseau $T_{\textit{net}}$ +\item Objectif équivalent: minimiser l'inverse $q = \dfrac{1}{T_{\textit{net}}}$ +\end{itemize} + diff --git a/talk/dsscintuition.tex b/talk/dsscintuition.tex new file mode 100644 index 0000000..daac4f1 --- /dev/null +++ b/talk/dsscintuition.tex @@ -0,0 +1,18 @@ +\begin{block}{From Theory} +Find all the $2^n\times 2^n$ matrices $M=\dfrac{1}{n}.\hat{M}$ such that: +\begin{enumerate} +\item $\hat{M}_{ij}=0$ if $j$ is not a neighbor of $i$ +%, \textit{i.e.}, there is no edge from $i$ to $j$ in the $n$-cube. +\item $0 \le \hat{M}_{ii} \le n$: the number of loops around $i$ is lesser than $n$ +\item Otherwise $\hat{M}_{ij}=1$ if the edge from $i$ to $j$ is kept and 0 otherwise +\item For any index of line $i$, $1 \le i\le 2^n$, $n = \sum_{1 \le j\le 2^n} \hat{M}_{ij}$: + the matrix is right stochastic +\item For any index of column $j$, + $1 \le j\le 2^n$, $n = \sum_{1 \le i\le 2^n} \hat{M}_{ij}$: + the matrix is left stochastic +\item All the values of $\sum_{1\le k\le 2^n}\hat{M}^k$ are strictly positive: the induced graph is strongly connected +\end{enumerate} +\end{block} + + + diff --git a/talk/dsscintuition.tex~ b/talk/dsscintuition.tex~ new file mode 100644 index 0000000..240e33b --- /dev/null +++ b/talk/dsscintuition.tex~ @@ -0,0 +1,18 @@ +\begin{block}{From Theory} +Find all the $2^n\times 2^n$ matrices $\dfrac{1}{n}.M$ such that: +\begin{enumerate} +\item $M_{ij}=0$ if $j$ is not a neighbor of $i$ +%, \textit{i.e.}, there is no edge from $i$ to $j$ in the $n$-cube. +\item $0 \le M_{ii} \le n$: the number of loops around $i$ is lesser than $n$ +\item Otherwise $M_{ij}=1$ if the edge from $i$ to $j$ is kept and 0 otherwise +\item For any index of line $i$, $1 \le i\le 2^n$, $n = \sum_{1 \le j\le 2^n} M_{ij}$: + the matrix is right stochastic +\item For any index of column $j$, + $1 \le j\le 2^n$, $n = \sum_{1 \le i\le 2^n} M_{ij}$: + the matrix is left stochastic +\item All the values of $\sum_{1\le k\le 2^n}M^k$ are strictly positive, (the induced graph is strongly connected) +\end{enumerate} +\end{block} + + + diff --git a/talk/dsscintuition2.tex b/talk/dsscintuition2.tex new file mode 100644 index 0000000..3b91ef3 --- /dev/null +++ b/talk/dsscintuition2.tex @@ -0,0 +1,36 @@ +\begin{exampleblock}{To Practice} +\begin{itemize} +\item Definitively not efficient enough: a \emph{generate and test} approach +\item $f^*(x_1,x_2,x_3) = +(x_2 \oplus x_3, \overline{x_1}\overline{x_3} + x_1\overline{x_2}, +\overline{x_1}\overline{x_3} + x_1x_2)$: function with the smallest MT, $n=3$ +\item<2> $f^*$: the $3$-cube in which the \emph{Hamiltonian cycle} +$000,100,101,001,011,111,110,010,000$ +has been removed +\end{itemize} +\vspace{-1em} +\begin{minipage}{0.49\textwidth} +\includegraphics<1>[scale=0.5]{iter_f0c} +\includegraphics<2>[scale=0.5]{iter_f0d} +\end{minipage} +\begin{minipage}{0.49\textwidth} +\vspace{-1em} +\[ +M=\dfrac{1}{3} \left( +\begin{array}{llllllll} +1&1&1&0&0&0&0&0 \\ +1&1&0&0&0&1&0&0 \\ +0&0&1&1&0&0&1&0 \\ +0&1&1&1&0&0&0&0 \\ +1&0&0&0&1&0&1&0 \\ +0&0&0&0&1&1&0&1 \\ +0&0&0&0&1&0&1&1 \\ +0&0&0&1&0&1&0&1 +\end{array} +\right) +\] +\end{minipage} +\end{exampleblock} + + + diff --git a/talk/dsscintuition2.tex~ b/talk/dsscintuition2.tex~ new file mode 100644 index 0000000..eefb8fc --- /dev/null +++ b/talk/dsscintuition2.tex~ @@ -0,0 +1,20 @@ +\begin{exampleblock}{To Practice} +\begin{itemize} +\item Definitively not efficient enough: a \emph{generate and test} approach +\item $f^*(x_1,x_2,x_3) = (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3})$: function with the smallest MT, $n=3$ +\item $f^*$: the $3$-cube in which the \emph{Hamiltonian cycle} +$000,100,101,001,011,111,110,010,000$ +has been removed +\end{itemize} +\vspace{-3em} +\begin{figure} +\begin{center} +\includegraphics[scale=0.5]{iter_f0b.eps} +\end{center} +\caption{Iteration Graph $\Gamma(f^*)$ of the function $f^*$}\label{fig:iteration:f*} +\end{figure} + +\end{exampleblock} + + + diff --git a/talk/expcontext.tex b/talk/expcontext.tex new file mode 100644 index 0000000..fdb9f04 --- /dev/null +++ b/talk/expcontext.tex @@ -0,0 +1,12 @@ +For each $n=4,5,6,7,8$ +\begin{itemize} +\item Generation of Balanced Gray Codes $\leadsto$ + functions $f$ to iterate +\item Selection of the function $f*$ minimizing the mixing time $b$ +\item Reproduced in the paper +\item Evaluation through NIST and DieHARD +\item $\leadsto$ all the generators pass the NIST and the DieHARD +batteries of tests +\end{itemize} + + diff --git a/talk/expcontext.tex.bak b/talk/expcontext.tex.bak new file mode 100644 index 0000000..881c1b5 --- /dev/null +++ b/talk/expcontext.tex.bak @@ -0,0 +1,12 @@ +For each $n=4,5,6,7,8$ +\begin{itemize} +\item Generation of Ballanced Gray Codes $\leadsto$ + functions $f$ to iterate +\item Selection of the function $f*$ minimizing the mixing time $b$ +\item Reproduced in the paper +\item Evaluation through NIST and DieHARD +\item $\leadsto$ all the generators pass the NIST and the DieHARD +batteries of tests +\end{itemize} + + diff --git a/talk/expcontext.tex~ b/talk/expcontext.tex~ new file mode 100644 index 0000000..c4027ad --- /dev/null +++ b/talk/expcontext.tex~ @@ -0,0 +1,2 @@ +\begin{itemize} +\item \ No newline at end of file diff --git a/talk/formalisation.tex~ b/talk/formalisation.tex~ new file mode 100644 index 0000000..35933e6 --- /dev/null +++ b/talk/formalisation.tex~ @@ -0,0 +1 @@ +\begin{itemize} \ No newline at end of file diff --git a/talk/formalisationenergie.tex b/talk/formalisationenergie.tex new file mode 100644 index 0000000..ca1dad2 --- /dev/null +++ b/talk/formalisationenergie.tex @@ -0,0 +1,13 @@ +\begin{itemize} +\item Puissance d'encodage au n{\oe}ud $i$: $P_{si}$, \alert<2>{$P_{si} > 0$}. +\item Distorsion bornée: \alert<2>{$\sigma^2 e^{-\gamma . R_h.P_{sh}^{}2/3} \leq D_h$}. +\item Charge initiale du n{\oe}ud $i$: $B_i$ +\item Puissance dissipée au n{\oe}ud $i$: +$$ +P_{si}+ P_{ti} + P_{ri}= +\alert<2>{P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.y_l + +\sum_{l \in L} a_{il}^{-}.c^r.y_l \leq q.B_i}. +$$ + +\end{itemize} + diff --git a/talk/formalisationenergie.tex.bak b/talk/formalisationenergie.tex.bak new file mode 100644 index 0000000..7d873ec --- /dev/null +++ b/talk/formalisationenergie.tex.bak @@ -0,0 +1,12 @@ +\begin{itemize} +\item Puissance d'encodage au n{\oe}ud $i$: $P_{si}$, \alert<2>{$P_{si} > 0$}. +\item Distortion bornée: \alert<2>{$\sigma^2 e^{-\gamma . R_h.P_{sh}^{}2/3} \leq D_h$}. +\item Puissance dissipée au n{\oe}ud $i$: +$$ +P_{si}+ P_{ti} + P_{ri}= +\alert<2>{P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.y_l + +\sum_{l \in L} a_{il}^{-}.c^r.y_l}. +$$ + +\end{itemize} + diff --git a/talk/formalisationenergie.tex~ b/talk/formalisationenergie.tex~ new file mode 100644 index 0000000..397f606 --- /dev/null +++ b/talk/formalisationenergie.tex~ @@ -0,0 +1,12 @@ +\begin{itemize} +\item Puissance d'encodage au n{\oe}ud $i$: $P_{si}$, \alert<2>{$P_{si} > 0$}. +\item Distorsion bornée: \alert<2>{$\sigma^2 e^{-\gamma . R_h.P_{sh}^{}2/3} \leq D_h$}. +\item Puissance dissipée au n{\oe}ud $i$: +$$ +P_{si}+ P_{ti} + P_{ri}= +\alert<2>{P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.y_l + +\sum_{l \in L} a_{il}^{-}.c^r.y_l}. +$$ + +\end{itemize} + diff --git a/talk/formalisationflux.tex b/talk/formalisationflux.tex new file mode 100644 index 0000000..4e20fd8 --- /dev/null +++ b/talk/formalisationflux.tex @@ -0,0 +1,32 @@ +%\vspace{-2em} +\begin{itemize} +\item Article publiée en 2009\footnote{Yifeng He; Lee, I.; Ling Guan, "Distributed Algorithms for Network Lifetime Maximization in Wireless Visual Sensor Networks," Circuits and Systems for Video Technology, IEEE Transactions on , vol.19, no.5, pp.704,718, May 2009} +\item Graphe orienté fort. connexe, +$a_{il} = +\left\{ + \begin{array}{rl} + 1 & \textrm{si $l=(i,\_)$ } \\ + -1 & \textrm{si $l=(\_,i)$} \\ + 0 & \textrm{sinon} + \end{array} + \right.$ +\item $V$ l'ensemble des capteurs vidéos de $N$. +\item Encodage de la vidéo au n{\oe}ud $h$ au taux $R_h$, \alert<2>{$R_h \geq 0$} \\ + $\leadsto$ Taux de production $\eta_{hi}$ du n{\oe}ud $i$ pour la session $h$ + $\eta_{hi} = +\left\{ + \begin{array}{rl} + R_h & \textrm{si $i$ est $h$} \\ + -R_h & \textrm{si $i$ est le puits} \\ + 0 & \textrm{sinon} + \end{array} + \right.$ +\item Flux de la session $h$ dans l'arc $l$: $x_{hl}$, \alert<2>{$x_{hl}\geq 0$} +\item Pour $y_l$ la somme des flux dans $l$: +\alert<2>{$\forall l \in L +\sum_{h \in V}x_{hl} = y_l$} +\item Conservation du flux: +\alert<2>{$\forall h \in V, \forall i \in N +\sum_{l \in L }a_{il}x_{hl} = \eta_{hi}$} +\end{itemize} + diff --git a/talk/formalisationflux.tex~ b/talk/formalisationflux.tex~ new file mode 100644 index 0000000..07fd5de --- /dev/null +++ b/talk/formalisationflux.tex~ @@ -0,0 +1,31 @@ +%\vspace{-2em} +\begin{itemize} +\item Graphe orienté fort. connexe, +$a_{il} = +\left\{ + \begin{array}{rl} + 1 & \textrm{si $l=(i,\_)$ } \\ + -1 & \textrm{si $l=(\_,i)$} \\ + 0 & \textrm{sinon} + \end{array} + \right.$ +\item $V$ l'ensemble des capteurs vidéos de $N$. +\item Encodage de la vidéo au n{\oe}ud $h$ au taux $R_h$, \alert<2>{$R_h>0$} \\ + $\leadsto$ Taux de production $\eta_{hi}$ du n{\oe}ud $i$ pour la session $h$ + $\eta_{hi} = +\left\{ + \begin{array}{rl} + R_h & \textrm{si $i$ est $h$} \\ + -R_h & \textrm{si $i$ est le puits} \\ + 0 & \textrm{sinon} + \end{array} + \right.$ +\item Flux de la session $h$ dans l'arc $l$: $x_{hl}$, \alert<2>{$x_{hl}>0$} +\item Pour $y_l$ la somme des flux dans $l$: +\alert<2>{$\forall l \in L +\sum_{h \in V}x_{hl} = y_l$} +\item Conservation du flux: +\alert<2>{$\forall h \in V, \forall i \in N +\sum_{l \in L }a_{il}x_{hl} = \eta_{hi}$} +\end{itemize} + diff --git a/talk/formalisationglobale.tex b/talk/formalisationglobale.tex new file mode 100644 index 0000000..1530578 --- /dev/null +++ b/talk/formalisationglobale.tex @@ -0,0 +1,18 @@ +\begin{itemize} +\item Trouver $R$, $x$, $P_s$ minimisant $q$ t.q. + +\item $\sum_{l \in L }a_{il}x_{hl} = \eta_{hi},\forall h \in V, \forall i \in N $ + +\item $ \sum_{h \in V}x_{hl} = y_l,\forall l \in L$ +\item $\dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} \leq R_h \forall h \in V$ + +\item $P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.y_l + +\sum_{l \in L} a_{il}^{-}.c^r.y_l \leq q.B_i, \forall i \in N$ + +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\end{itemize} diff --git a/talk/formalisationglobale.tex~ b/talk/formalisationglobale.tex~ new file mode 100644 index 0000000..0b97c95 --- /dev/null +++ b/talk/formalisationglobale.tex~ @@ -0,0 +1,15 @@ +$$ +\begin{array}{rl} + +$$ + + +\item Puissance d'encodage au n{\oe}ud $i$: $P_{si}$, \alert<2>{$P_{si} > 0$}. +\item Distorsion bornée: \alert<2>{$\sigma^2 e^{-\gamma . R_h.P_{sh}^{}2/3} \leq D_h$}. +\item Charge initiale du n{\oe}ud $i$: $B_i$ +\item Puissance dissipée au n{\oe}ud $i$: +$$ +P_{si}+ P_{ti} + P_{ri}= +\alert<2>{P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.y_l + +\sum_{l \in L} a_{il}^{-}.c^r.y_l \leq q.B_i}. +$$ diff --git a/talk/formalisationsimplifiee.tex b/talk/formalisationsimplifiee.tex new file mode 100644 index 0000000..4889d50 --- /dev/null +++ b/talk/formalisationsimplifiee.tex @@ -0,0 +1,21 @@ +\begin{itemize} +\item Trouver $R$, $x$, $P_s$, $q_i$ minimisant $\sum_{i \in N }q_i^2$ t.q. + +\item $\sum_{l \in L }a_{il}x_{hl} = \eta_{hi},\forall h \in V, \forall i \in N $ + +\item $\dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} \leq R_h, \forall h \in V$ + +\item $P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) + +\sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) \leq q.B_i, \forall i \in N$ + +\item $\sum_{i \in N} a_{il}.q_i = 0 \forall l \in L$ + +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/formalisationsimplifiee.tex~ b/talk/formalisationsimplifiee.tex~ new file mode 100644 index 0000000..5783373 --- /dev/null +++ b/talk/formalisationsimplifiee.tex~ @@ -0,0 +1,19 @@ +\begin{itemize} +\item Trouver $R$, $x$, $P_s$ minimisant $\sum_{i \in N }q_i^2$ t.q. + +\item $\sum_{l \in L }a_{il}x_{hl} = \eta_{hi},\forall h \in V, \forall i \in N $ + +\item $\dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} \leq R_h \forall h \in V$ + +\item $P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) + +\sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) \leq q.B_i, \forall i \in N$ + +\item $\sum_{i \in N} a_{il}.q_i = 0 forall l \in L$ + +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\end{itemize} diff --git a/talk/g.dot b/talk/g.dot new file mode 100644 index 0000000..6f25f41 --- /dev/null +++ b/talk/g.dot @@ -0,0 +1,10 @@ +digraph { + 00 -> 00 + 00 -> 10 + 01 -> 00 + 01 -> 11 + 10 -> 11 + 10 -> 00 + 11 -> 10 + 11 -> 01 +} diff --git a/talk/g.pdf b/talk/g.pdf new file mode 100644 index 0000000..4f69e01 Binary files /dev/null and b/talk/g.pdf differ diff --git a/talk/gp.dot b/talk/gp.dot new file mode 100644 index 0000000..161e9d2 --- /dev/null +++ b/talk/gp.dot @@ -0,0 +1,5 @@ +digraph{ + 1 -> 1 [label=" -"] + 1 -> 2 [label=" +"] + 2 -> 2 [label=" -"] +} \ No newline at end of file diff --git a/talk/gp.pdf b/talk/gp.pdf new file mode 100644 index 0000000..0a99b1f Binary files /dev/null and b/talk/gp.pdf differ diff --git a/talk/h.dot b/talk/h.dot new file mode 100644 index 0000000..b23b196 --- /dev/null +++ b/talk/h.dot @@ -0,0 +1,10 @@ +digraph { + 00 -> 00 + 00 -> 10 + 01 -> 11 + 01 -> 01 + 10 -> 11 + 10 -> 00 + 11 -> 10 + 11 -> 01 +} diff --git a/talk/h.pdf b/talk/h.pdf new file mode 100644 index 0000000..df4d68b Binary files /dev/null and b/talk/h.pdf differ diff --git a/talk/hp.dot b/talk/hp.dot new file mode 100644 index 0000000..a8145cf --- /dev/null +++ b/talk/hp.dot @@ -0,0 +1,5 @@ +digraph{ + 1 -> 1 [label=" -"] + 1 -> 2 [label=" +-"] + 2 -> 2 [label=" +-"] +} \ No newline at end of file diff --git a/talk/hp.pdf b/talk/hp.pdf new file mode 100644 index 0000000..d474682 Binary files /dev/null and b/talk/hp.pdf differ diff --git a/talk/interation1.tex b/talk/interation1.tex new file mode 100644 index 0000000..c7a89e1 --- /dev/null +++ b/talk/interation1.tex @@ -0,0 +1,23 @@ +\begin{itemize} +\item +$ u_{hi}^{(k+1)} = u_{hi}^{(k)} - \theta^{(k)}. \left( + \eta_{hi}^{(k)} - \sum_{l \in L }a_{il}x_{hl}^{(k)} \right) $ +\item +$v_{h}^{(k+1)}= \max\left\{0,v_{h}^{(k)} - \theta^{(k)}.\left( R_h^{(k)} - \dfrac{\ln(\sigma^2/D_h)}{\gamma.(P_{sh}^{(k)})^{2/3}} \right)\right\}$ +\item + $\begin{array}{rcl} + \lambda_{i}^{(k+1)} = \lambda_{i}^{(k)} - \theta^{(k)}&.&\left( + q^{(k)}.B_i - + \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl}^{(k)} \right) \right. \\ + && - \left. \sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl}^{(k)} \right) - P_{si}^{(k)} \right) +\end{array} +$ + +\item +$w_l^{(k+1)} = w_l^{(k+1)} + \theta^{(k)}. \left( \sum_{i \in N} a_{il}.q_i^{(k)} \right)$ + + +\item +$\theta^{(k)} = \omega / t^{1/2}$ +\end{itemize} + diff --git a/talk/interation1.tex~ b/talk/interation1.tex~ new file mode 100644 index 0000000..863d0c5 --- /dev/null +++ b/talk/interation1.tex~ @@ -0,0 +1,24 @@ +Trouver $R$, $x$, $P_s$, $q_i$ minimisant +$$ +\begin{array}{l} + L(R,x,P_s,q,u,v,\lambda,w)= \\ + \sum_{i \in N }q_i^2 + \sum_{h \in V, l \in L }\delta.x_{hl}^2 ++ \sum_{h \in V }\delta.R_{h}^2 \\ ++ \sum_{h \in V }\sum_{i \in N } u_{hi} \left(\sum_{l \in L }a_{il}x_{hl} - \eta_{hi}\right) \\ ++ \sum_{h \in V}v_{h}.\left( \dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} - R_h \right) \\ ++ \sum_{i \in N} \lambda_{i}. \left( P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) \right. +\\ +\qquad \qquad \qquad + \left. \sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) - q.B_i \right) \\ ++ \sum_{l \in L} w_l. \left( \sum_{i \in N} a_{il}.q_i \right) +\end{array} +$$ +\begin{itemize} +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/interation2.tex b/talk/interation2.tex new file mode 100644 index 0000000..af326e2 --- /dev/null +++ b/talk/interation2.tex @@ -0,0 +1,45 @@ +\begin{enumerate} +\item +$q_i^{(k)} = \arg\min_{q_i>0} +\left( +q^2 + q. +\left( +\sum_{l \in L } a_{il}w_l^{(k)}- +\lambda_i^{(k)}B_i +\right) +\right)$ + +\item +$ +P_{sh}^{(k)} += +\arg \min_{p > 0} +\left( +v_h^{(k)}.\dfrac{\ln(\sigma^2/D_h)}{\gamma p ^{2/3}} + \lambda_h^{(k)}p +\right) +$ + +\item +$ +R_h^{(k)} += +\arg \min_{r \geq 0 } +\left( +\delta r^2 +-v_h^{(k)}.r - \sum_{i \in N} u_{hi}^{(k)} \eta_{hi} +\right) +$ +\item +$ +x_{hl}^{(k)} = +\arg \min_{x \geq 0} +\left( +\delta.x^2 + x. +\sum_{i \in N} \left( +\lambda_{i}^{(k)}.(c^s_l.a_{il}^{+} + +c^r. a_{il}^{-} )+ + u_{hi}^{(k)} a_{il} +\right) +\right) + $ +\end{enumerate} diff --git a/talk/interation2.tex~ b/talk/interation2.tex~ new file mode 100644 index 0000000..863d0c5 --- /dev/null +++ b/talk/interation2.tex~ @@ -0,0 +1,24 @@ +Trouver $R$, $x$, $P_s$, $q_i$ minimisant +$$ +\begin{array}{l} + L(R,x,P_s,q,u,v,\lambda,w)= \\ + \sum_{i \in N }q_i^2 + \sum_{h \in V, l \in L }\delta.x_{hl}^2 ++ \sum_{h \in V }\delta.R_{h}^2 \\ ++ \sum_{h \in V }\sum_{i \in N } u_{hi} \left(\sum_{l \in L }a_{il}x_{hl} - \eta_{hi}\right) \\ ++ \sum_{h \in V}v_{h}.\left( \dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} - R_h \right) \\ ++ \sum_{i \in N} \lambda_{i}. \left( P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) \right. +\\ +\qquad \qquad \qquad + \left. \sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) - q.B_i \right) \\ ++ \sum_{l \in L} w_l. \left( \sum_{i \in N} a_{il}.q_i \right) +\end{array} +$$ +\begin{itemize} +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/iter_f0b-eps-converted-to.pdf b/talk/iter_f0b-eps-converted-to.pdf new file mode 100644 index 0000000..63042fe Binary files /dev/null and b/talk/iter_f0b-eps-converted-to.pdf differ diff --git a/talk/iter_f0b.eps b/talk/iter_f0b.eps new file mode 100644 index 0000000..c704fbf --- /dev/null +++ b/talk/iter_f0b.eps @@ -0,0 +1,734 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 385 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 349 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 000->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.24 168.74 moveto +64.02 168.89 72 166.64 72 162 curveto +72 159.17 69.04 157.23 64.51 156.18 curveto +stroke +0 0 0 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 000->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 180.04 moveto +65.92 192.5 93.4 208.61 115.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 000->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 162 moveto +76.47 162 108.5 162 133.37 162 curveto +stroke +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath stroke +grestore +% 001->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 215.96 moveto +112.79 203.5 85.31 187.39 63.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath stroke +grestore +% 001->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.95 240.74 moveto +188.73 240.89 196.71 238.64 196.71 234 curveto +196.71 231.17 193.75 229.23 189.22 228.18 curveto +stroke +0 0 0 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 001->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 151.71 215.76 moveto +151.71 191.2 151.71 147.25 151.71 118.35 curveto +stroke +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath stroke +grestore +% 010->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.24 168.74 moveto +208.02 168.89 216 166.64 216 162 curveto +216 159.17 213.04 157.23 208.51 156.18 curveto +stroke +0 0 0 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath stroke +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 010->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 180.04 moveto +209.92 192.5 237.4 208.61 259.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 010->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 171 143.76 moveto +171 119.2 171 75.25 171 46.35 curveto +stroke +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath stroke +grestore +% 011->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 234 moveto +246.24 234 214.21 234 189.34 234 curveto +stroke +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath stroke +grestore +% 011->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 215.96 moveto +256.79 203.5 229.31 187.39 207.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath stroke +grestore +% 011->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 322.95 240.74 moveto +332.73 240.89 340.71 238.64 340.71 234 curveto +340.71 231.17 337.75 229.23 333.22 228.18 curveto +stroke +0 0 0 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath stroke +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 100->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 27 36.24 moveto +27 60.8 27 104.75 27 133.65 curveto +stroke +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath stroke +grestore +% 100->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.24 24.74 moveto +64.02 24.89 72 22.64 72 18 curveto +72 15.17 69.04 13.23 64.51 12.18 curveto +stroke +0 0 0 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath stroke +grestore +% 100->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 36.04 moveto +65.92 48.5 93.4 64.61 115.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath stroke +grestore +% 101->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 71.96 moveto +112.79 59.5 85.31 43.39 63.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath stroke +grestore +% 101->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.95 96.74 moveto +188.73 96.89 196.71 94.64 196.71 90 curveto +196.71 87.17 193.75 85.23 189.22 84.18 curveto +stroke +0 0 0 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 101->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.79 90 moveto +201.18 90 233.2 90 258.08 90 curveto +stroke +0 0 0 edgecolor +newpath 258.25 93.5 moveto +268.25 90 lineto +258.25 86.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.25 93.5 moveto +268.25 90 lineto +258.25 86.5 lineto +closepath stroke +grestore +% 110->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.91 18 moveto +121.53 18 89.5 18 64.63 18 curveto +stroke +0 0 0 edgecolor +newpath 64.45 14.5 moveto +54.45 18 lineto +64.45 21.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.45 14.5 moveto +54.45 18 lineto +64.45 21.5 lineto +closepath stroke +grestore +% 110->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.24 24.74 moveto +208.02 24.89 216 22.64 216 18 curveto +216 15.17 213.04 13.23 208.51 12.18 curveto +stroke +0 0 0 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath stroke +grestore +% 110->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 36.04 moveto +209.92 48.5 237.4 64.61 259.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath stroke +grestore +% 111->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 295.71 108.24 moveto +295.71 132.8 295.71 176.75 295.71 205.65 curveto +stroke +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath stroke +grestore +% 111->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 71.96 moveto +256.79 59.5 229.31 43.39 207.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath stroke +grestore +% 111->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 322.95 96.74 moveto +332.73 96.89 340.71 94.64 340.71 90 curveto +340.71 87.17 337.75 85.23 333.22 84.18 curveto +stroke +0 0 0 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 385 296 +end +restore +%%EOF diff --git a/talk/iter_f0c.eps b/talk/iter_f0c.eps new file mode 100644 index 0000000..c7adb7b --- /dev/null +++ b/talk/iter_f0c.eps @@ -0,0 +1,734 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 385 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 349 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 000->000 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 168.74 moveto +64.02 168.89 72 166.64 72 162 curveto +72 159.17 69.04 157.23 64.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 000->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 180.04 moveto +65.92 192.5 93.4 208.61 115.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 000->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 162 moveto +76.47 162 108.5 162 133.37 162 curveto +stroke +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.55 165.5 moveto +143.55 162 lineto +133.55 158.5 lineto +closepath stroke +grestore +% 001->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 215.96 moveto +112.79 203.5 85.31 187.39 63.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath stroke +grestore +% 001->001 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 240.74 moveto +188.73 240.89 196.71 238.64 196.71 234 curveto +196.71 231.17 193.75 229.23 189.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 001->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 151.71 215.76 moveto +151.71 191.2 151.71 147.25 151.71 118.35 curveto +stroke +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 155.21 118.09 moveto +151.71 108.09 lineto +148.21 118.09 lineto +closepath stroke +grestore +% 010->010 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 168.74 moveto +208.02 168.89 216 166.64 216 162 curveto +216 159.17 213.04 157.23 208.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath stroke +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 010->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 180.04 moveto +209.92 192.5 237.4 208.61 259.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 010->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 171 143.76 moveto +171 119.2 171 75.25 171 46.35 curveto +stroke +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 174.5 46.09 moveto +171 36.09 lineto +167.5 46.09 lineto +closepath stroke +grestore +% 011->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 234 moveto +246.24 234 214.21 234 189.34 234 curveto +stroke +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 189.16 230.5 moveto +179.16 234 lineto +189.16 237.5 lineto +closepath stroke +grestore +% 011->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 215.96 moveto +256.79 203.5 229.31 187.39 207.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath stroke +grestore +% 011->011 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 240.74 moveto +332.73 240.89 340.71 238.64 340.71 234 curveto +340.71 231.17 337.75 229.23 333.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath stroke +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 100->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 27 36.24 moveto +27 60.8 27 104.75 27 133.65 curveto +stroke +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 23.5 133.91 moveto +27 143.91 lineto +30.5 133.91 lineto +closepath stroke +grestore +% 100->100 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 24.74 moveto +64.02 24.89 72 22.64 72 18 curveto +72 15.17 69.04 13.23 64.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath stroke +grestore +% 100->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 23.41 moveto +76.47 24.97 108.5 25.17 133.37 24.01 curveto +stroke +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath stroke +grestore +% 101->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 124.65 74.38 moveto +106.51 63.9 82.43 50 62.72 38.62 curveto +stroke +0 0 0 edgecolor +newpath 64.42 35.56 moveto +54.01 33.59 lineto +60.92 41.62 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.42 35.56 moveto +54.01 33.59 lineto +60.92 41.62 lineto +closepath stroke +grestore +% 101->101 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 96.74 moveto +188.73 96.89 196.71 94.64 196.71 90 curveto +196.71 87.17 193.75 85.23 189.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 101->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.79 95.41 moveto +201.18 96.97 233.2 97.17 258.08 96.01 curveto +stroke +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath stroke +grestore +% 110->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.91 12.59 moveto +121.53 11.03 89.5 10.83 64.63 11.99 curveto +stroke +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath stroke +grestore +% 110->110 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 24.74 moveto +208.02 24.89 216 22.64 216 18 curveto +216 15.17 213.04 13.23 208.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath stroke +grestore +% 110->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.06 33.62 moveto +216.2 44.1 240.28 58 259.99 69.38 curveto +stroke +0 0 0 edgecolor +newpath 258.29 72.44 moveto +268.7 74.41 lineto +261.79 66.38 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.29 72.44 moveto +268.7 74.41 lineto +261.79 66.38 lineto +closepath stroke +grestore +% 111->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 295.71 108.24 moveto +295.71 132.8 295.71 176.75 295.71 205.65 curveto +stroke +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 292.21 205.91 moveto +295.71 215.91 lineto +299.21 205.91 lineto +closepath stroke +grestore +% 111->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 84.59 moveto +246.24 83.03 214.21 82.83 189.34 83.99 curveto +stroke +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath stroke +grestore +% 111->111 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 96.74 moveto +332.73 96.89 340.71 94.64 340.71 90 curveto +340.71 87.17 337.75 85.23 333.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 385 296 +end +restore +%%EOF diff --git a/talk/iter_f0c.pdf b/talk/iter_f0c.pdf new file mode 100644 index 0000000..292e393 Binary files /dev/null and b/talk/iter_f0c.pdf differ diff --git a/talk/iter_f0d.eps b/talk/iter_f0d.eps new file mode 100644 index 0000000..8e4f8dc --- /dev/null +++ b/talk/iter_f0d.eps @@ -0,0 +1,902 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 385 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 349 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 000->000 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 168.74 moveto +64.02 168.89 72 166.64 72 162 curveto +72 159.17 69.04 157.23 64.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 152.67 moveto +54.24 155.26 lineto +63.89 159.64 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 000->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 47.47 180.04 moveto +65.92 192.5 93.4 208.61 115.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 114.15 223.31 moveto +124.65 224.71 lineto +117.31 217.07 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 000->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 167.41 moveto +76.47 168.97 108.5 169.17 133.37 168.01 curveto +stroke +0 0 0 edgecolor +newpath 133.76 171.5 moveto +143.55 167.44 lineto +133.36 164.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.76 171.5 moveto +143.55 167.44 lineto +133.36 164.51 lineto +closepath stroke +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 000->100 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 31.67 143.76 moveto +34.13 119.2 34.41 75.25 32.5 46.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 35.96 45.77 moveto +31.66 36.09 lineto +28.98 46.34 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 35.96 45.77 moveto +31.66 36.09 lineto +28.98 46.34 lineto +closepath stroke +grestore +% 001->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 215.96 moveto +112.79 203.5 85.31 187.39 63.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 172.69 moveto +54.06 171.29 lineto +61.4 178.93 lineto +closepath stroke +grestore +% 001->001 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 240.74 moveto +188.73 240.89 196.71 238.64 196.71 234 curveto +196.71 231.17 193.75 229.23 189.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 224.67 moveto +178.95 227.26 lineto +188.59 231.64 lineto +closepath stroke +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 001->011 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 178.79 239.41 moveto +201.18 240.97 233.2 241.17 258.08 240.01 curveto +stroke +0.66667 1 1 edgecolor +newpath 258.47 243.5 moveto +268.25 239.44 lineto +258.07 236.51 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 258.47 243.5 moveto +268.25 239.44 lineto +258.07 236.51 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 001->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 156.38 215.76 moveto +158.84 191.2 159.12 147.25 157.21 118.35 curveto +stroke +0 0 0 edgecolor +newpath 160.67 117.77 moveto +156.37 108.09 lineto +153.69 118.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 160.67 117.77 moveto +156.37 108.09 lineto +153.69 118.34 lineto +closepath stroke +grestore +% 010->000 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 143.91 156.59 moveto +121.53 155.03 89.5 154.83 64.63 155.99 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.24 152.5 moveto +54.45 156.56 lineto +64.64 159.49 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.24 152.5 moveto +54.45 156.56 lineto +64.64 159.49 lineto +closepath stroke +grestore +% 010->010 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 168.74 moveto +208.02 168.89 216 166.64 216 162 curveto +216 159.17 213.04 157.23 208.51 156.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 152.67 moveto +198.24 155.26 lineto +207.89 159.64 lineto +closepath stroke +grestore +% 010->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 180.04 moveto +209.92 192.5 237.4 208.61 259.53 220.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 223.31 moveto +268.65 224.71 lineto +261.31 217.07 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 010->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 175.67 143.76 moveto +178.13 119.2 178.41 75.25 176.5 46.35 curveto +stroke +0 0 0 edgecolor +newpath 179.96 45.77 moveto +175.66 36.09 lineto +172.98 46.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 179.96 45.77 moveto +175.66 36.09 lineto +172.98 46.34 lineto +closepath stroke +grestore +% 011->001 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 228.59 moveto +246.24 227.03 214.21 226.83 189.34 227.99 curveto +stroke +0 0 0 edgecolor +newpath 188.95 224.5 moveto +179.16 228.56 lineto +189.34 231.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 188.95 224.5 moveto +179.16 228.56 lineto +189.34 231.49 lineto +closepath stroke +grestore +% 011->010 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 275.24 215.96 moveto +256.79 203.5 229.31 187.39 207.17 175.91 curveto +stroke +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 208.56 172.69 moveto +198.06 171.29 lineto +205.4 178.93 lineto +closepath stroke +grestore +% 011->011 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 240.74 moveto +332.73 240.89 340.71 238.64 340.71 234 curveto +340.71 231.17 337.75 229.23 333.22 228.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 224.67 moveto +322.95 227.26 lineto +332.59 231.64 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 011->111 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 300.38 215.76 moveto +302.84 191.2 303.12 147.25 301.21 118.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 304.67 117.77 moveto +300.37 108.09 lineto +297.69 118.34 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 304.67 117.77 moveto +300.37 108.09 lineto +297.69 118.34 lineto +closepath stroke +grestore +% 100->000 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 22.33 36.24 moveto +19.87 60.8 19.59 104.75 21.5 133.65 curveto +stroke +0 0 0 edgecolor +newpath 18.04 134.23 moveto +22.34 143.91 lineto +25.02 133.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 18.04 134.23 moveto +22.34 143.91 lineto +25.02 133.66 lineto +closepath stroke +grestore +% 100->100 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 54.24 24.74 moveto +64.02 24.89 72 22.64 72 18 curveto +72 15.17 69.04 13.23 64.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.51 8.67 moveto +54.24 11.26 lineto +63.89 15.64 lineto +closepath stroke +grestore +% 100->101 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 47.47 36.04 moveto +65.92 48.5 93.4 64.61 115.53 76.09 curveto +stroke +0.66667 1 1 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 114.15 79.31 moveto +124.65 80.71 lineto +117.31 73.07 lineto +closepath stroke +grestore +% 100->110 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 54.09 23.41 moveto +76.47 24.97 108.5 25.17 133.37 24.01 curveto +stroke +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 133.76 27.5 moveto +143.55 23.44 lineto +133.36 20.51 lineto +closepath stroke +grestore +% 101->001 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 147.03 108.24 moveto +144.57 132.8 144.3 176.75 146.21 205.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 142.75 206.23 moveto +147.05 215.91 lineto +149.72 205.66 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 142.75 206.23 moveto +147.05 215.91 lineto +149.72 205.66 lineto +closepath stroke +grestore +% 101->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 131.24 71.96 moveto +112.79 59.5 85.31 43.39 63.17 31.91 curveto +stroke +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.56 28.69 moveto +54.06 27.29 lineto +61.4 34.93 lineto +closepath stroke +grestore +% 101->101 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 178.95 96.74 moveto +188.73 96.89 196.71 94.64 196.71 90 curveto +196.71 87.17 193.75 85.23 189.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 189.22 80.67 moveto +178.95 83.26 lineto +188.59 87.64 lineto +closepath stroke +grestore +% 101->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 178.79 95.41 moveto +201.18 96.97 233.2 97.17 258.08 96.01 curveto +stroke +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.47 99.5 moveto +268.25 95.44 lineto +258.07 92.51 lineto +closepath stroke +grestore +% 110->010 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 166.33 36.24 moveto +163.87 60.8 163.59 104.75 165.5 133.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 162.04 134.23 moveto +166.34 143.91 lineto +169.02 133.66 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 162.04 134.23 moveto +166.34 143.91 lineto +169.02 133.66 lineto +closepath stroke +grestore +% 110->100 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.91 12.59 moveto +121.53 11.03 89.5 10.83 64.63 11.99 curveto +stroke +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.24 8.5 moveto +54.45 12.56 lineto +64.64 15.49 lineto +closepath stroke +grestore +% 110->110 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 198.24 24.74 moveto +208.02 24.89 216 22.64 216 18 curveto +216 15.17 213.04 13.23 208.51 12.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.51 8.67 moveto +198.24 11.26 lineto +207.89 15.64 lineto +closepath stroke +grestore +% 110->111 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 191.47 36.04 moveto +209.92 48.5 237.4 64.61 259.53 76.09 curveto +stroke +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 258.15 79.31 moveto +268.65 80.71 lineto +261.31 73.07 lineto +closepath stroke +grestore +% 111->011 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 291.03 108.24 moveto +288.57 132.8 288.3 176.75 290.21 205.65 curveto +stroke +0 0 0 edgecolor +newpath 286.75 206.23 moveto +291.05 215.91 lineto +293.72 205.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 286.75 206.23 moveto +291.05 215.91 lineto +293.72 205.66 lineto +closepath stroke +grestore +% 111->101 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 268.62 84.59 moveto +246.24 83.03 214.21 82.83 189.34 83.99 curveto +stroke +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 188.95 80.5 moveto +179.16 84.56 lineto +189.34 87.49 lineto +closepath stroke +grestore +% 111->110 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 275.24 71.96 moveto +256.79 59.5 229.31 43.39 207.17 31.91 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.56 28.69 moveto +198.06 27.29 lineto +205.4 34.93 lineto +closepath stroke +grestore +% 111->111 +gsave +1 setlinewidth +0.66667 1 1 edgecolor +newpath 322.95 96.74 moveto +332.73 96.89 340.71 94.64 340.71 90 curveto +340.71 87.17 337.75 85.23 333.22 84.18 curveto +stroke +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 333.22 80.67 moveto +322.95 83.26 lineto +332.59 87.64 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 385 296 +end +restore +%%EOF diff --git a/talk/iter_f0d.pdf b/talk/iter_f0d.pdf new file mode 100644 index 0000000..54fa72f Binary files /dev/null and b/talk/iter_f0d.pdf differ diff --git a/talk/iter_f0e.eps b/talk/iter_f0e.eps new file mode 100644 index 0000000..06c1322 --- /dev/null +++ b/talk/iter_f0e.eps @@ -0,0 +1,414 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.36.0 (20140111.2315) +%%Title: %3 +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 367 296 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 331 260 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% 000 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 158.3 moveto 21 (000) alignedtext +grestore +% 100 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +16.5 14.3 moveto 21 (100) alignedtext +grestore +% 000->100 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 27 143.76 moveto +27 119.2 27 75.25 27 46.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 30.5 46.09 moveto +27 36.09 lineto +23.5 46.09 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 30.5 46.09 moveto +27 36.09 lineto +23.5 46.09 lineto +closepath stroke +grestore +% 001 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 230.3 moveto 21 (001) alignedtext +grestore +% 011 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 230.3 moveto 21 (011) alignedtext +grestore +% 001->011 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 178.79 234 moveto +201.18 234 233.2 234 258.08 234 curveto +stroke +0.66667 1 1 edgecolor +newpath 258.25 237.5 moveto +268.25 234 lineto +258.25 230.5 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 258.25 237.5 moveto +268.25 234 lineto +258.25 230.5 lineto +closepath stroke +grestore +% 010 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 158.3 moveto 21 (010) alignedtext +grestore +% 010->000 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 143.91 162 moveto +121.53 162 89.5 162 64.63 162 curveto +stroke +0.66667 1 1 edgecolor +newpath 64.45 158.5 moveto +54.45 162 lineto +64.45 165.5 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 64.45 158.5 moveto +54.45 162 lineto +64.45 165.5 lineto +closepath stroke +grestore +% 111 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +285.21 86.3 moveto 21 (111) alignedtext +grestore +% 011->111 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 295.71 215.76 moveto +295.71 191.2 295.71 147.25 295.71 118.35 curveto +stroke +0.66667 1 1 edgecolor +newpath 299.21 118.09 moveto +295.71 108.09 lineto +292.21 118.09 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 299.21 118.09 moveto +295.71 108.09 lineto +292.21 118.09 lineto +closepath stroke +grestore +% 101 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +141.21 86.3 moveto 21 (101) alignedtext +grestore +% 100->101 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 54.06 33.62 moveto +72.2 44.1 96.28 58 115.99 69.38 curveto +stroke +0.66667 1 1 edgecolor +newpath 114.29 72.44 moveto +124.7 74.41 lineto +117.79 66.38 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 114.29 72.44 moveto +124.7 74.41 lineto +117.79 66.38 lineto +closepath stroke +grestore +% 101->001 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 151.71 108.24 moveto +151.71 132.8 151.71 176.75 151.71 205.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 148.21 205.91 moveto +151.71 215.91 lineto +155.21 205.91 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 148.21 205.91 moveto +151.71 215.91 lineto +155.21 205.91 lineto +closepath stroke +grestore +% 110 +gsave +0 0 0 nodecolor +14 /Times-Roman set_font +160.5 14.3 moveto 21 (110) alignedtext +grestore +% 110->010 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 171 36.24 moveto +171 60.8 171 104.75 171 133.65 curveto +stroke +0.66667 1 1 edgecolor +newpath 167.5 133.91 moveto +171 143.91 lineto +174.5 133.91 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 167.5 133.91 moveto +171 143.91 lineto +174.5 133.91 lineto +closepath stroke +grestore +% 111->110 +gsave +1 setlinewidth +dashed +0.66667 1 1 edgecolor +newpath 268.65 74.38 moveto +250.51 63.9 226.43 50 206.72 38.62 curveto +stroke +0.66667 1 1 edgecolor +newpath 208.42 35.56 moveto +198.01 33.59 lineto +204.92 41.62 lineto +closepath fill +1 setlinewidth +solid +0.66667 1 1 edgecolor +newpath 208.42 35.56 moveto +198.01 33.59 lineto +204.92 41.62 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 367 296 +end +restore +%%EOF diff --git a/talk/iter_f0e.pdf b/talk/iter_f0e.pdf new file mode 100644 index 0000000..94e07bc Binary files /dev/null and b/talk/iter_f0e.pdf differ diff --git a/talk/lagrange.tex b/talk/lagrange.tex new file mode 100644 index 0000000..186b680 --- /dev/null +++ b/talk/lagrange.tex @@ -0,0 +1,25 @@ +\begin{itemize} +\item Trouver $R$, $x$, $P_s$, $q_i$ minimisant $\sum_{i \in N }q_i^2$ t.q. + +\item $\sum_{l \in L }a_{il}x_{hl} = \eta_{hi},\forall h \in V, \forall i \in N$ +\alert{$ \leadsto$ $u_{hi}$} + +\item $\dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} \leq R_h, \forall h \in V$ +\alert{$ \leadsto$ $v_{h}$} +\item $P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) + +\sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) \leq q.B_i, \forall i \in N$ +\alert{$ \leadsto$ $\lambda_{i}$} + +\item $\sum_{i \in N} a_{il}.q_i = 0 \forall l \in L$ +\alert{$ \leadsto$ $w_{l}$} + + +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/lagrange.tex~ b/talk/lagrange.tex~ new file mode 100644 index 0000000..f1b8aa4 --- /dev/null +++ b/talk/lagrange.tex~ @@ -0,0 +1,25 @@ +\begin{itemize} +\item Trouver $R$, $x$, $P_s$, $q_i$ minimisant $\sum_{i \in N }q_i^2$ t.q. + +\item $\sum_{l \in L }a_{il}x_{hl} = \eta_{hi},\forall h \in V, \forall i \in N$ +\alert{$ \leadsto$ $u_{hi}$} + +\item $\dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} \leq R_h, \forall h \in V$ +\alert{$ \leadsto$ $v_{h}$} +\item $P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) + +\sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) \leq q.B_i, \forall i \in N$ +\alert{$ \leadsto$ $\lambda_{i}$} + +\item $\sum_{i \in N} a_{il}.q_i = 0 \forall l \in L$ +\alert{$ \leadsto$ $w_{l}$ + + +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/lagrangeoperateur.tex b/talk/lagrangeoperateur.tex new file mode 100644 index 0000000..dfe1aa2 --- /dev/null +++ b/talk/lagrangeoperateur.tex @@ -0,0 +1,24 @@ +Trouver $R$, $x$, $P_s$, $q_i$ minimisant +$$ +\begin{array}{l} + L(R,x,P_s,q,u,v,\lambda,w)= \\ + \sum_{i \in N }q_i^2 + \alert<2>{\sum_{h \in V, l \in L } \delta.x_{hl}^2} ++ \alert<2>{\sum_{h \in V }\delta.R_{h}^2} \\ ++ \sum_{h \in V }\sum_{i \in N } u_{hi} \left(\sum_{l \in L }a_{il}x_{hl} - \eta_{hi}\right) \\ ++ \sum_{h \in V}v_{h}.\left( \dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} - R_h \right) \\ ++ \sum_{i \in N} \lambda_{i}. \left( P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) \right. +\\ +\qquad \qquad \qquad + \left. \sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) - q.B_i \right) \\ ++ \sum_{l \in L} w_l. \left( \sum_{i \in N} a_{il}.q_i \right) +\end{array} +$$ +\begin{itemize} +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/lagrangeoperateur.tex~ b/talk/lagrangeoperateur.tex~ new file mode 100644 index 0000000..863d0c5 --- /dev/null +++ b/talk/lagrangeoperateur.tex~ @@ -0,0 +1,24 @@ +Trouver $R$, $x$, $P_s$, $q_i$ minimisant +$$ +\begin{array}{l} + L(R,x,P_s,q,u,v,\lambda,w)= \\ + \sum_{i \in N }q_i^2 + \sum_{h \in V, l \in L }\delta.x_{hl}^2 ++ \sum_{h \in V }\delta.R_{h}^2 \\ ++ \sum_{h \in V }\sum_{i \in N } u_{hi} \left(\sum_{l \in L }a_{il}x_{hl} - \eta_{hi}\right) \\ ++ \sum_{h \in V}v_{h}.\left( \dfrac{\ln(\sigma^2/D_h)}{\gamma.P_{sh}^{2/3}} - R_h \right) \\ ++ \sum_{i \in N} \lambda_{i}. \left( P_{si}+ \sum_{l \in L}a_{il}^{+}.c^s_l.\left( \sum_{h \in V}x_{hl} \right) \right. +\\ +\qquad \qquad \qquad + \left. \sum_{l \in L} a_{il}^{-}.c^r.\left( \sum_{h \in V}x_{hl} \right) - q.B_i \right) \\ ++ \sum_{l \in L} w_l. \left( \sum_{i \in N} a_{il}.q_i \right) +\end{array} +$$ +\begin{itemize} +\item $x_{hl}\geq0, \forall h \in V, \forall l \in L$ + +\item $R_h \geq 0, \forall h \in V$ + +\item $P_{sh} > 0,\forall h \in V$ + +\item $q_i > 0,\forall i \in N$ + +\end{itemize} diff --git a/talk/logo-CNRS.jpg b/talk/logo-CNRS.jpg new file mode 100644 index 0000000..9a7bdce Binary files /dev/null and b/talk/logo-CNRS.jpg differ diff --git a/talk/logo-ENSMM.jpg b/talk/logo-ENSMM.jpg new file mode 100644 index 0000000..7b424f1 Binary files /dev/null and b/talk/logo-ENSMM.jpg differ diff --git a/talk/logo-FEMTO.jpg b/talk/logo-FEMTO.jpg new file mode 100644 index 0000000..ed7886b Binary files /dev/null and b/talk/logo-FEMTO.jpg differ diff --git a/talk/logo-UFC.jpg b/talk/logo-UFC.jpg new file mode 100644 index 0000000..eaccf2f Binary files /dev/null and b/talk/logo-UFC.jpg differ diff --git a/talk/logo-UTBM.jpg b/talk/logo-UTBM.jpg new file mode 100644 index 0000000..6950e31 Binary files /dev/null and b/talk/logo-UTBM.jpg differ diff --git a/talk/main-nup.pdf b/talk/main-nup.pdf new file mode 100644 index 0000000..0d1d582 Binary files /dev/null and b/talk/main-nup.pdf differ diff --git a/talk/main.aux b/talk/main.aux new file mode 100644 index 0000000..80a32a6 --- /dev/null +++ b/talk/main.aux @@ -0,0 +1,97 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{toc}{\beamer@endinputifotherversion {3.24pt}} +\@writefile{nav}{\beamer@endinputifotherversion {3.24pt}} +\select@language{english} +\@writefile{toc}{\select@language{english}} +\@writefile{lof}{\select@language{english}} +\@writefile{lot}{\select@language{english}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}} +\@writefile{toc}{\beamer@sectionintoc {1}{Introduction}{2}{0}{1}} +\@writefile{nav}{\headcommand {\sectionentry {1}{Introduction}{2}{Introduction}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{1}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{1}}} +\@writefile{nav}{\headcommand {\slideentry {1}{0}{2}{2/3}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {2}{3}}} +\@writefile{nav}{\headcommand {\slideentry {1}{0}{3}{4/4}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {4}{4}}} +\@writefile{nav}{\headcommand {\slideentry {1}{0}{4}{5/5}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {5}{5}}} +\@writefile{nav}{\headcommand {\slideentry {1}{0}{5}{6/6}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {6}{6}}} +\@writefile{toc}{\beamer@sectionintoc {2}{Preliminaries}{7}{0}{2}} +\@writefile{nav}{\headcommand {\sectionentry {2}{Preliminaries}{7}{Preliminaries}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {2}{6}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {2}{6}}} +\@writefile{nav}{\headcommand {\slideentry {2}{0}{6}{7/7}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}} +\@writefile{nav}{\headcommand {\slideentry {2}{0}{7}{8/8}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}} +\@writefile{nav}{\headcommand {\slideentry {2}{0}{8}{9/9}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {9}{9}}} +\@writefile{nav}{\headcommand {\slideentry {2}{0}{9}{10/10}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {10}{10}}} +\@writefile{nav}{\headcommand {\slideentry {2}{0}{10}{11/11}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}} +\@writefile{toc}{\beamer@sectionintoc {3}{Generation of DSSC Matrices}{12}{0}{3}} +\@writefile{nav}{\headcommand {\sectionentry {3}{Generation of DSSC Matrices}{12}{Generation of DSSC Matrices}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {7}{11}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {7}{11}}} +\@writefile{nav}{\headcommand {\slideentry {3}{0}{11}{12/12}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {12}{12}}} +\@writefile{nav}{\headcommand {\slideentry {3}{0}{12}{13/13}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {13}{13}}} +\@writefile{nav}{\headcommand {\slideentry {3}{0}{13}{14/15}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {14}{15}}} +\@writefile{toc}{\beamer@sectionintoc {4}{On Removing Hamiltonian Cycles}{16}{0}{4}} +\@writefile{nav}{\headcommand {\sectionentry {4}{On Removing Hamiltonian Cycles}{16}{On Removing Hamiltonian Cycles}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {12}{15}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {12}{15}}} +\@writefile{nav}{\headcommand {\slideentry {4}{0}{14}{16/16}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {16}{16}}} +\@writefile{nav}{\headcommand {\slideentry {4}{0}{15}{17/17}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {17}{17}}} +\@writefile{nav}{\headcommand {\slideentry {4}{0}{16}{18/18}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {18}{18}}} +\@writefile{nav}{\headcommand {\slideentry {4}{0}{17}{19/19}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {19}{19}}} +\@writefile{toc}{\beamer@sectionintoc {5}{Experiments}{20}{0}{5}} +\@writefile{nav}{\headcommand {\sectionentry {5}{Experiments}{20}{Experiments}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {16}{19}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {16}{19}}} +\@writefile{nav}{\headcommand {\slideentry {5}{0}{18}{20/20}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {20}{20}}} +\@writefile{nav}{\headcommand {\slideentry {5}{0}{19}{21/21}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {21}{21}}} +\@writefile{toc}{\beamer@sectionintoc {6}{Conclusion}{22}{0}{6}} +\@writefile{nav}{\headcommand {\sectionentry {6}{Conclusion}{22}{Conclusion}{0}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {20}{21}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {20}{21}}} +\@writefile{nav}{\headcommand {\slideentry {6}{0}{20}{22/22}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {22}{22}}} +\@writefile{nav}{\headcommand {\slideentry {6}{0}{21}{23/23}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {23}{23}}} +\@writefile{nav}{\headcommand {\slideentry {6}{0}{22}{24/24}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {24}{24}}} +\@writefile{nav}{\headcommand {\beamer@partpages {1}{24}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {22}{24}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {22}{24}}} +\@writefile{nav}{\headcommand {\beamer@documentpages {24}}} +\@writefile{nav}{\headcommand {\def \inserttotalframenumber {22}}} diff --git a/talk/main.log b/talk/main.log new file mode 100644 index 0000000..a83bed5 --- /dev/null +++ b/talk/main.log @@ -0,0 +1,1755 @@ +This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) (format=pdflatex 2014.4.22) 9 NOV 2014 21:06 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**main.tex +(./main.tex +LaTeX2e <2011/06/27> +Babel <3.9h> and hyphenation patterns for 4 languages loaded. +(/usr/share/texmf/tex/latex/beamer/base/beamer.cls +(/usr/share/texmf/tex/latex/beamer/base/beamerbasercs.sty +Package: beamerbasercs 2012/11/13 (rcs-revision cb16a617839f) +) +Document Class: beamer 2012/10/15 development version 3.24 A class for typesett +ing presentations (rcs-revision 24853e6b98cf) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasemodes.sty +Package: beamerbasemodes 2012/04/15 (rcs-revision cc6557182d97) +\beamer@tempbox=\box26 +\beamer@tempcount=\count79 +\c@beamerpauses=\count80 + +(/usr/share/texmf/tex/latex/beamer/base/beamerbasedecode.sty +Package: beamerbasedecode 2010/05/01 (rcs-revision efa082c6111d) +\beamer@slideinframe=\count81 +\beamer@minimum=\count82 +) +\beamer@commentbox=\box27 +\beamer@modecount=\count83 +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +\headheight=\dimen102 +\headdp=\dimen103 +\footheight=\dimen104 +\sidebarheight=\dimen105 +\beamer@tempdim=\dimen106 +\beamer@finalheight=\dimen107 +\beamer@animht=\dimen108 +\beamer@animdp=\dimen109 +\beamer@animwd=\dimen110 +\beamer@leftmargin=\dimen111 +\beamer@rightmargin=\dimen112 +\beamer@leftsidebar=\dimen113 +\beamer@rightsidebar=\dimen114 +\beamer@boxsize=\dimen115 +\beamer@vboxoffset=\dimen116 +\beamer@descdefault=\dimen117 +\beamer@descriptionwidth=\dimen118 +\beamer@lastskip=\skip41 +\beamer@areabox=\box28 +\beamer@animcurrent=\box29 +\beamer@animshowbox=\box30 +\beamer@sectionbox=\box31 +\beamer@logobox=\box32 +\beamer@linebox=\box33 +\beamer@sectioncount=\count84 +\beamer@subsubsectionmax=\count85 +\beamer@subsectionmax=\count86 +\beamer@sectionmax=\count87 +\beamer@totalheads=\count88 +\beamer@headcounter=\count89 +\beamer@partstartpage=\count90 +\beamer@sectionstartpage=\count91 +\beamer@subsectionstartpage=\count92 +\beamer@animationtempa=\count93 +\beamer@animationtempb=\count94 +\beamer@xpos=\count95 +\beamer@ypos=\count96 +\beamer@showpartnumber=\count97 +\beamer@currentsubsection=\count98 +\beamer@coveringdepth=\count99 +\beamer@sectionadjust=\count100 +\beamer@tocsectionnumber=\count101 + +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseoptions.sty +Package: beamerbaseoptions 2010/04/27 (rcs-revision 982469101dd6) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 1999/03/16 v1.13 key=value parser (DPC) +\KV@toks@=\toks14 +)) +\beamer@paperwidth=\skip42 +\beamer@paperheight=\skip43 + +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count102 +\Gm@cntv=\count103 +\c@Gm@tempcnt=\count104 +\Gm@bindingoffset=\dimen119 +\Gm@wd@mp=\dimen120 +\Gm@odd@mp=\dimen121 +\Gm@even@mp=\dimen122 +\Gm@layoutwidth=\dimen123 +\Gm@layoutheight=\dimen124 +\Gm@layouthoffset=\dimen125 +\Gm@layoutvoffset=\dimen126 +\Gm@dimlist=\toks15 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2007/10/19 v1.4h Standard LaTeX file (size option) +) +(/usr/share/texmf/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count105 +)) +\Gin@req@height=\dimen127 +\Gin@req@width=\dimen128 +) +(/usr/share/texmf/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texmf/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks16 +) +(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box34 + +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texmf/tex/generic/pgf/utilities/pgfrcs.code.tex +Package: pgfrcs 2010/10/25 v2.10 (rcs-revision 1.24) +)) +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2010/06/30 v2.10 (rcs-revision 1.37) + +(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks17 +\pgfkeys@temptoks=\toks18 + +(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +\pgfkeys@tmptoks=\toks19 +)) +\pgf@x=\dimen129 +\pgf@y=\dimen130 +\pgf@xa=\dimen131 +\pgf@ya=\dimen132 +\pgf@xb=\dimen133 +\pgf@yb=\dimen134 +\pgf@xc=\dimen135 +\pgf@yc=\dimen136 +\w@pgf@writea=\write3 +\r@pgf@reada=\read1 +\c@pgf@counta=\count106 +\c@pgf@countb=\count107 +\c@pgf@countc=\count108 +\c@pgf@countd=\count109 + +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2008/05/14 (rcs-revision 1.7) +) +Package pgfsys Info: Driver file for pgf: pgfsys-pdftex.def on input line 900. + +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2009/05/22 (rcs-revision 1.26) + +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2008/05/19 (rcs-revision 1.10) +))) +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2008/07/18 (rcs-revision 1.7) +\pgfsyssoftpath@smallbuffer@items=\count110 +\pgfsyssoftpath@bigbuffer@items=\count111 +) +(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) +)) +(/usr/share/texmf/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2010/04/11 v2.10 (rcs-revision 1.7) + +(/usr/share/texmf/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texmf/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/share/texmf/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen137 +\pgfmath@count=\count112 +\pgfmath@box=\box35 +\pgfmath@toks=\toks20 +\pgfmath@stack@operand=\toks21 +\pgfmath@stack@operation=\toks22 +) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.code.tex +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex))) +(/usr/share/texmf/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count113 +)) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2010/04/09 (rcs-revision 1.20) +\pgf@picminx=\dimen138 +\pgf@picmaxx=\dimen139 +\pgf@picminy=\dimen140 +\pgf@picmaxy=\dimen141 +\pgf@pathminx=\dimen142 +\pgf@pathmaxx=\dimen143 +\pgf@pathminy=\dimen144 +\pgf@pathmaxy=\dimen145 +\pgf@xx=\dimen146 +\pgf@xy=\dimen147 +\pgf@yx=\dimen148 +\pgf@yy=\dimen149 +\pgf@zx=\dimen150 +\pgf@zy=\dimen151 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2010/08/03 (rcs-revision 1.24) +\pgf@path@lastx=\dimen152 +\pgf@path@lasty=\dimen153 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2008/04/22 (rcs-revision 1.12) +\pgf@shorten@end@additional=\dimen154 +\pgf@shorten@start@additional=\dimen155 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2010/09/08 (rcs-revision 1.34) +\pgfpic=\box36 +\pgf@hbox=\box37 +\pgf@layerbox@main=\box38 +\pgf@picture@serial@count=\count114 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2008/04/22 (rcs-revision 1.9) +\pgflinewidth=\dimen156 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +File: pgfcoretransformations.code.tex 2009/06/10 (rcs-revision 1.11) +\pgf@pt@x=\dimen157 +\pgf@pt@y=\dimen158 +\pgf@pt@temp=\dimen159 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +File: pgfcorepathprocessing.code.tex 2008/10/09 (rcs-revision 1.8) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2008/04/23 (rcs-revision 1.11) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2008/11/23 (rcs-revision 1.13) +\pgf@max=\dimen160 +\pgf@sys@shading@range@num=\count115 +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2010/03/25 (rcs-revision 1.16) + +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2010/09/01 (rcs-revision 1.17) +\pgfexternal@startupbox=\box39 +)) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2010/08/27 (rcs-revision 1.2) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2008/01/17 (rcs-revision 1.2) +) +(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2009/07/02 (rcs-revision 1.3) +))) +(/usr/share/texmf/tex/latex/pgf/utilities/xxcolor.sty +Package: xxcolor 2003/10/24 ver 0.1 +\XC@nummixins=\count116 +\XC@countmixins=\count117 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) +) +\@linkdim=\dimen161 +\Hy@linkcounter=\count118 +\Hy@pagecounter=\count119 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +) +\Hy@SavedSpaceFactor=\count120 + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Option `bookmarks' set `true' on input line 4319. +Package hyperref Info: Option `bookmarksopen' set `true' on input line 4319. +Package hyperref Info: Option `implicit' set `false' on input line 4319. +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode OFF; no redefinition of LaTeX internals. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count121 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen162 +\Fld@menulength=\count122 +\Field@Width=\dimen163 +\Fld@charsize=\dimen164 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring OFF on input line 6315. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count123 + + +Package hyperref Message: Stopped early. + +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count124 +\c@bookmark@seq@number=\count125 + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +)) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaserequires.sty +Package: beamerbaserequires 2010/05/01 (rcs-revision efa082c6111d) + +(/usr/share/texmf/tex/latex/beamer/base/beamerbasecompatibility.sty +Package: beamerbasecompatibility 2012/05/01 (rcs-revision 67c48b3b652d) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasefont.sty +Package: beamerbasefont 2012/09/19 (rcs-revision 733629cd0c6c) + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\@emptytoks=\toks23 +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +))) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetranslator.sty +Package: beamerbasetranslator 2010/06/11 (rcs-revision 85fd1cc7fc42) + +(/usr/share/texmf/tex/latex/beamer/base/translator/translator.sty +Package: translator 2010/06/12 ver 1.10 + +(/usr/share/texmf/tex/latex/beamer/base/translator/translator-language-mappings +.tex))) (/usr/share/texmf/tex/latex/beamer/base/beamerbasemisc.sty +Package: beamerbasemisc 2012/02/24 (rcs-revision 2ff5461be705) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetwoscreens.sty +Package: beamerbasetwoscreens 2010/05/01 (rcs-revision efa082c6111d) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseoverlay.sty +Package: beamerbaseoverlay 2012/11/11 (rcs-revision 6afbc49b1109) +\beamer@argscount=\count126 +\beamer@lastskipcover=\skip44 +\beamer@trivlistdepth=\count127 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetitle.sty +Package: beamerbasetitle 2010/09/21 (rcs-revision f0446ed0b6ae) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasesection.sty +Package: beamerbasesection 2012/11/11 (rcs-revision 0056eef6f17f) +\c@lecture=\count128 +\c@part=\count129 +\c@section=\count130 +\c@subsection=\count131 +\c@subsubsection=\count132 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframe.sty +Package: beamerbaseframe 2012/09/13 (rcs-revision dcd846607320) +\beamer@framebox=\box40 +\beamer@frametitlebox=\box41 +\beamer@zoombox=\box42 +\beamer@zoomcount=\count133 +\beamer@zoomframecount=\count134 +\beamer@frametextheight=\dimen165 +\c@subsectionslide=\count135 +\beamer@frametopskip=\skip45 +\beamer@framebottomskip=\skip46 +\beamer@frametopskipautobreak=\skip47 +\beamer@framebottomskipautobreak=\skip48 +\beamer@envbody=\toks24 +\framewidth=\dimen166 +\c@framenumber=\count136 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseverbatim.sty +Package: beamerbaseverbatim 2012/08/30 (rcs-revision dfdb135076b3) +\beamer@verbatimfileout=\write4 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframesize.sty +Package: beamerbaseframesize 2011/09/12 (rcs-revision 70f9d8411e54) +\beamer@splitbox=\box43 +\beamer@autobreakcount=\count137 +\beamer@autobreaklastheight=\dimen167 +\beamer@frametitletoks=\toks25 +\beamer@framesubtitletoks=\toks26 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseframecomponents.sty +Package: beamerbaseframecomponents 2012/09/13 (rcs-revision dcd846607320) +\beamer@footins=\box44 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasecolor.sty +Package: beamerbasecolor 2010/06/06 (rcs-revision d1a9b48be06d) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasenotes.sty +Package: beamerbasenotes 2010/05/01 (rcs-revision efa082c6111d) +\beamer@frameboxcopy=\box45 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetoc.sty +Package: beamerbasetoc 2012/10/02 (rcs-revision 5ed0f4010e8a) +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetemplates.sty +Package: beamerbasetemplates 2010/05/01 (rcs-revision efa082c6111d) +\beamer@sbttoks=\toks27 + +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseauxtemplates.sty +Package: beamerbaseauxtemplates 2012/05/01 (rcs-revision 67c48b3b652d) + +(/usr/share/texmf/tex/latex/beamer/base/beamerbaseboxes.sty +Package: beamerbaseboxes 2012/05/13 (rcs-revision 56972908a390) +\bmb@box=\box46 +\bmb@colorbox=\box47 +\bmb@boxshadow=\box48 +\bmb@boxshadowball=\box49 +\bmb@boxshadowballlarge=\box50 +\bmb@temp=\dimen168 +\bmb@dima=\dimen169 +\bmb@dimb=\dimen170 +\bmb@prevheight=\dimen171 +) +\beamer@blockheadheight=\dimen172 +)) +(/usr/share/texmf/tex/latex/beamer/base/beamerbaselocalstructure.sty +Package: beamerbaselocalstructure 2012/11/13 (rcs-revision ddfba79dac19) + +(/usr/share/texlive/texmf-dist/tex/latex/tools/enumerate.sty +Package: enumerate 1999/03/05 v3.00 enumerate extensions (DPC) +\@enLab=\toks28 +) +\c@figure=\count138 +\c@table=\count139 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasenavigation.sty +Package: beamerbasenavigation 2012/04/03 (rcs-revision 42a0f21a412d) +\beamer@section@min@dim=\dimen173 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasetheorems.sty +Package: beamerbasetheorems 2010/06/06 (rcs-revision 7e7cc5e53e9d) + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2013/01/14 v2.14 AMS math features +\@mathmargin=\skip51 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 +\@emptytoks=\toks29 +\ex@=\dimen174 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d +\pmbraise@=\dimen175 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count140 +LaTeX Info: Redefining \frac on input line 210. +\uproot@=\count141 +\leftroot@=\count142 +LaTeX Info: Redefining \overline on input line 306. +\classnum@=\count143 +\DOTSCASE@=\count144 +LaTeX Info: Redefining \ldots on input line 378. +LaTeX Info: Redefining \dots on input line 381. +LaTeX Info: Redefining \cdots on input line 466. +\Mathstrutbox@=\box51 +\strutbox@=\box52 +\big@size=\dimen176 +LaTeX Font Info: Redeclaring font encoding OML on input line 566. +LaTeX Font Info: Redeclaring font encoding OMS on input line 567. +\macc@depth=\count145 +\c@MaxMatrixCols=\count146 +\dotsspace@=\muskip11 +\c@parentequation=\count147 +\dspbrk@lvl=\count148 +\tag@help=\toks30 +\row@=\count149 +\column@=\count150 +\maxfields@=\count151 +\andhelp@=\toks31 +\eqnshift@=\dimen177 +\alignsep@=\dimen178 +\tagshift@=\dimen179 +\tagwidth@=\dimen180 +\totwidth@=\dimen181 +\lineht@=\dimen182 +\@envbody=\toks32 +\multlinegap=\skip52 +\multlinetaggap=\skip53 +\mathdisplay@stack=\toks33 +LaTeX Info: Redefining \[ on input line 2665. +LaTeX Info: Redefining \] on input line 2666. +) +(/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty +Package: amsthm 2004/08/06 v2.20 +\thm@style=\toks34 +\thm@bodyfont=\toks35 +\thm@headfont=\toks36 +\thm@notefont=\toks37 +\thm@headpunct=\toks38 +\thm@preskip=\skip54 +\thm@postskip=\skip55 +\thm@headsep=\skip56 +\dth@everypar=\toks39 +) +\c@theorem=\count152 +) +(/usr/share/texmf/tex/latex/beamer/base/beamerbasethemes.sty +Package: beamerbasethemes 2010/05/01 (rcs-revision efa082c6111d) +)) +(/usr/share/texmf/tex/latex/beamer/base/themes/theme/beamerthemedefault.sty +Package: beamerthemedefault 2010/06/17 (rcs-revision d02a7cf4d8ae) + +(/usr/share/texmf/tex/latex/beamer/base/themes/font/beamerfontthemedefault.sty +Package: beamerfontthemedefault 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/share/texmf/tex/latex/beamer/base/themes/color/beamercolorthemedefault.st +y +Package: beamercolorthemedefault 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/share/texmf/tex/latex/beamer/base/themes/inner/beamerinnerthemedefault.st +y +Package: beamerinnerthemedefault 2012/05/01 (rcs-revision 67c48b3b652d) +\beamer@dima=\dimen183 +\beamer@dimb=\dimen184 +) +(/usr/share/texmf/tex/latex/beamer/base/themes/outer/beamerouterthemedefault.st +y +Package: beamerouterthemedefault 2012/10/02 (rcs-revision 5ed0f4010e8a) +))) (./beamerthemefemto.sty +Package: beamerthemefemto 2012/06/05 beamer theme femto package + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty +Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) +) +(/usr/share/texmf/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texmf/tex/latex/pgf/basiclayer/pgf.sty +Package: pgf 2008/01/15 v2.10 (rcs-revision 1.12) + +(/usr/share/texmf/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2010/09/09 (rcs-revision 1.13) +\pgfnodeparttextbox=\box53 +) +(/usr/share/texmf/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2010/10/22 (rcs-revision 1.8) +) +(/usr/share/texmf/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2007/07/03 v2.10 (rcs-revision 1.7) +\pgf@nodesepstart=\dimen185 +\pgf@nodesepend=\dimen186 +) +(/usr/share/texmf/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2007/07/23 v2.10 (rcs-revision 1.1) +)) +(/usr/share/texmf/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texmf/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texmf/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2010/03/23 v2.10 (rcs-revision 1.18) +\pgffor@iter=\dimen187 +\pgffor@skip=\dimen188 +\pgffor@stack=\toks40 +\pgffor@toks=\toks41 +)) +(/usr/share/texmf/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2010/10/13 v2.10 (rcs-revision 1.76) + +(/usr/share/texmf/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +File: pgflibraryplothandlers.code.tex 2010/05/31 v2.10 (rcs-revision 1.15) +\pgf@plot@mark@count=\count153 +\pgfplotmarksize=\dimen189 +) +\tikz@lastx=\dimen190 +\tikz@lasty=\dimen191 +\tikz@lastxsaved=\dimen192 +\tikz@lastysaved=\dimen193 +\tikzleveldistance=\dimen194 +\tikzsiblingdistance=\dimen195 +\tikz@figbox=\box54 +\tikz@tempbox=\box55 +\tikztreelevel=\count154 +\tikznumberofchildren=\count155 +\tikznumberofcurrentchild=\count156 +\tikz@fig@count=\count157 + +(/usr/share/texmf/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2010/08/24 (rcs-revision 1.4) +\pgfmatrixcurrentrow=\count158 +\pgfmatrixcurrentcolumn=\count159 +\pgf@matrix@numberofcolumns=\count160 +) +\tikz@expandcount=\count161 + +(/usr/share/texmf/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopat +hs.code.tex +File: tikzlibrarytopaths.code.tex 2008/06/17 v2.10 (rcs-revision 1.2) +)))) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2008/03/30 v1.1d Input encoding file +\inpenc@prehook=\toks42 +\inpenc@posthook=\toks43 + +(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def +File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc +Now handling font encoding OML ... +... no UTF-8 mapping file for font encoding OML +Now handling font encoding T1 ... +... processing UTF-8 mapping file for font encoding T1 + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu +File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0102 (decimal 258) + defining Unicode char U+0103 (decimal 259) + defining Unicode char U+0104 (decimal 260) + defining Unicode char U+0105 (decimal 261) + defining Unicode char U+0106 (decimal 262) + defining Unicode char U+0107 (decimal 263) + defining Unicode char U+010C (decimal 268) + defining Unicode char U+010D (decimal 269) + defining Unicode char U+010E (decimal 270) + defining Unicode char U+010F (decimal 271) + defining Unicode char U+0110 (decimal 272) + defining Unicode char U+0111 (decimal 273) + defining Unicode char U+0118 (decimal 280) + defining Unicode char U+0119 (decimal 281) + defining Unicode char U+011A (decimal 282) + defining Unicode char U+011B (decimal 283) + defining Unicode char U+011E (decimal 286) + defining Unicode char U+011F (decimal 287) + defining Unicode char U+0130 (decimal 304) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0132 (decimal 306) + defining Unicode char U+0133 (decimal 307) + defining Unicode char U+0139 (decimal 313) + defining Unicode char U+013A (decimal 314) + defining Unicode char U+013D (decimal 317) + defining Unicode char U+013E (decimal 318) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0143 (decimal 323) + defining Unicode char U+0144 (decimal 324) + defining Unicode char U+0147 (decimal 327) + defining Unicode char U+0148 (decimal 328) + defining Unicode char U+014A (decimal 330) + defining Unicode char U+014B (decimal 331) + defining Unicode char U+0150 (decimal 336) + defining Unicode char U+0151 (decimal 337) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0154 (decimal 340) + defining Unicode char U+0155 (decimal 341) + defining Unicode char U+0158 (decimal 344) + defining Unicode char U+0159 (decimal 345) + defining Unicode char U+015A (decimal 346) + defining Unicode char U+015B (decimal 347) + defining Unicode char U+015E (decimal 350) + defining Unicode char U+015F (decimal 351) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0162 (decimal 354) + defining Unicode char U+0163 (decimal 355) + defining Unicode char U+0164 (decimal 356) + defining Unicode char U+0165 (decimal 357) + defining Unicode char U+016E (decimal 366) + defining Unicode char U+016F (decimal 367) + defining Unicode char U+0170 (decimal 368) + defining Unicode char U+0171 (decimal 369) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+0179 (decimal 377) + defining Unicode char U+017A (decimal 378) + defining Unicode char U+017B (decimal 379) + defining Unicode char U+017C (decimal 380) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201A (decimal 8218) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+201E (decimal 8222) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2423 (decimal 9251) +) +Now handling font encoding OT1 ... +... processing UTF-8 mapping file for font encoding OT1 + +(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu +File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00B8 (decimal 184) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) +) +Now handling font encoding OMS ... +... processing UTF-8 mapping file for font encoding OMS + +(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu +File: omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) +) +Now handling font encoding OMX ... +... no UTF-8 mapping file for font encoding OMX +Now handling font encoding U ... +... no UTF-8 mapping file for font encoding U +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2423 (decimal 9251) +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 43. +)) +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/stmaryrd.sty +Package: stmaryrd 1994/03/03 St Mary's Road symbol package +\symstmry=\mathgroup6 +LaTeX Font Info: Overwriting symbol font `stmry' in version `bold' +(Font) U/stmry/m/n --> U/stmry/b/n on input line 89. +) +(/usr/share/texlive/texmf-dist/tex/latex/doublestroke/dsfont.sty +Package: dsfont 1995/08/01 v0.1 Double stroke roman fonts +) +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2013/12/03 3.9h The Babel package + +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2012/08/20 v3.3p English support from the babel system + +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2013/12/03 3.9h Babel common definitions +LaTeX Info: Redefining \textlatin on input line 137. +\babel@savecnt=\count162 +\U@D=\dimen196 +) +\l@british = a dialect from \language\l@english +\l@UKenglish = a dialect from \language\l@english +\l@canadian = a dialect from \language\l@american +\l@australian = a dialect from \language\l@british +\l@newzealand = a dialect from \language\l@british +)) +(/usr/share/texlive/texmf-dist/tex/latex/algorithm2e/algorithm2e.sty +Package: algorithm2e 2013/01/06 v5.00 algorithms environments +\c@AlgoLine=\count163 + +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +Package: xspace 2009/10/20 v1.13 Space after command names (DPC,MH) +) +(/usr/share/texlive/texmf-dist/tex/latex/relsize/relsize.sty +Package: relsize 2013/03/29 ver 4.1 +) +******************************************************** +Package `algorithm2e' Release 5.0 -- january 06 2013 -- +- algorithm2e-announce@lirmm.fr mailing list for announcement about releases +- algorithm2e-discussion@lirmm.fr mailing list for discussion about package +subscribe by emailing sympa@lirmm.fr with 'subscribe ' +- Author: Christophe Fiorio (cfiorio@um2.fr) +******************************************************** +\skiptotal=\skip57 +\skiplinenumber=\skip58 +\skiprule=\skip59 +\skiphlne=\skip60 +\skiptext=\skip61 +\skiplength=\skip62 +\algomargin=\skip63 +\skipalgocfslide=\skip64 +\algowidth=\dimen197 +\inoutsize=\dimen198 +\inoutindent=\dimen199 +\interspacetitleruled=\dimen200 +\interspacealgoruled=\dimen201 +\interspacetitleboxruled=\dimen202 +\algocf@inoutbox=\box56 +\algocf@inputbox=\box57 +\AlCapSkip=\skip65 +\AlCapHSkip=\skip66 +\algoskipindent=\skip67 +\algocf@nlbox=\box58 +\algocf@hangingbox=\box59 +\algocf@untilbox=\box60 +\algocf@skipuntil=\skip68 +\algocf@capbox=\box61 +\algoheightruledefault=\skip69 +\algoheightrule=\skip70 +\algotitleheightruledefault=\skip71 +\algotitleheightrule=\skip72 +\c@algocfline=\count164 +\c@algocfproc=\count165 +\c@algocf=\count166 +\algocf@algoframe=\box62 +\algocf@algobox=\box63 +) (/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty +Package: alltt 1997/06/16 v2.0g defines alltt environment +) +(/usr/share/texlive/texmf-dist/tex/latex/subfig/subfig.sty +Package: subfig 2005/06/28 ver: 1.3 subfig package + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2013/05/02 v3.3-89 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2013/05/02 v1.6-88 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 57. +\captionmargin=\dimen203 +\captionmargin@=\dimen204 +\captionwidth=\dimen205 +\caption@tempdima=\dimen206 +\caption@indent=\dimen207 +\caption@parindent=\dimen208 +\caption@hangindent=\dimen209 +) +\c@ContinuedFloat=\count167 +Package caption Info: beamer document class. +Package caption Info: hyperref package is loaded. +Package caption Info: Hyperref support is turned off +(caption) because hyperref has stopped early. +) +\c@KVtest=\count168 +\sf@farskip=\skip73 +\sf@captopadj=\dimen210 +\sf@capskip=\skip74 +\sf@nearskip=\skip75 +\c@subfigure=\count169 +\c@subfigure@save=\count170 +\c@depth=\count171 +\c@subtable=\count172 +\c@subtable@save=\count173 +\sf@top=\skip76 +\sf@bottom=\skip77 +) + +Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): +(hyperref) removing `math shift' on input line 72. + + +Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): +(hyperref) removing `math shift' on input line 72. + +(./main.aux) +\openout1 = `main.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 72. +LaTeX Font Info: ... okay on input line 72. +LaTeX Font Info: Try loading font information for T1+phv on input line 72. + (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd +File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. +) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: custom +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: includehead includefoot +* h-part:(L,W,R)=(28.45274pt, 307.28987pt, 28.45274pt) +* v-part:(T,H,B)=(0.0pt, 273.14662pt, 0.0pt) +* \paperwidth=364.19536pt +* \paperheight=273.14662pt +* \textwidth=307.28987pt +* \textheight=244.6939pt +* \oddsidemargin=-43.81725pt +* \evensidemargin=-43.81725pt +* \topmargin=-72.26999pt +* \headheight=14.22636pt +* \headsep=0.0pt +* \topskip=11.0pt +* \footskip=14.22636pt +* \marginparwidth=4.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count174 +\scratchdimen=\dimen211 +\scratchbox=\box64 +\nofMPsegments=\count175 +\nofMParguments=\count176 +\everyMPshowfont=\toks44 +\MPscratchCnt=\count177 +\MPscratchDim=\dimen212 +\MPnumerator=\count178 +\makeMPintoPDFobject=\count179 +\everyMPtoPDFconversion=\toks45 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.jpg,.png,.pdf,.bmp,.pdftex,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +ABD: EveryShipout initializing macros +\AtBeginShipoutBox=\box65 +Package hyperref Info: Link coloring OFF on input line 72. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count180 +) +LaTeX Info: Redefining \ref on input line 72. +LaTeX Info: Redefining \pageref on input line 72. +LaTeX Info: Redefining \nameref on input line 72. + +(./main.out) (./main.out) +\@outlinefile=\write5 +\openout5 = `main.out'. + +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/cmss/m/n on input line 72. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 72. +\symnumbers=\mathgroup7 +\sympureletters=\mathgroup8 +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `normal' +(Font) OT1/cmss/m/n --> T1/ptm/m/n on input line 72. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> T1/phv/bx/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> T1/phv/bx/n on input line 72. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> T1/phv/m/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> T1/phv/m/n on input line 72. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> T1/phv/m/it on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> T1/phv/m/it on input line 72. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> T1/pcr/m/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> T1/pcr/m/n on input line 72. +LaTeX Font Info: Overwriting symbol font `numbers' in version `bold' +(Font) T1/phv/m/n --> T1/phv/bx/n on input line 72. +LaTeX Font Info: Overwriting symbol font `pureletters' in version `bold' +(Font) T1/phv/m/it --> T1/phv/bx/it on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold' +(Font) OT1/cmss/bx/n --> T1/ptm/bx/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) T1/phv/bx/n --> T1/phv/bx/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) T1/phv/m/n --> T1/phv/bx/n on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) T1/phv/m/it --> T1/phv/bx/it on input line 72. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) T1/pcr/m/n --> T1/pcr/bx/n on input line 72. + +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-basic-dicti +onary/translator-basic-dictionary-English.dict +Dictionary: translator-basic-dictionary, Language: English +) +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-bibliograph +y-dictionary/translator-bibliography-dictionary-English.dict +Dictionary: translator-bibliography-dictionary, Language: English +) +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-environment +-dictionary/translator-environment-dictionary-English.dict +Dictionary: translator-environment-dictionary, Language: English +) +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-months-dict +ionary/translator-months-dictionary-English.dict +Dictionary: translator-months-dictionary, Language: English +) +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-numbers-dic +tionary/translator-numbers-dictionary-English.dict +Dictionary: translator-numbers-dictionary, Language: English +) +(/usr/share/texmf/tex/latex/beamer/base/translator/dicts/translator-theorem-dic +tionary/translator-theorem-dictionary-English.dict +Dictionary: translator-theorem-dictionary, Language: English +) +LaTeX Info: Redefining \includegraphics on input line 72. +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: subfig package v1.3 is loaded. +Package caption Info: End \AtBeginDocument code. + (./main.nav) +LaTeX Font Info: Try loading font information for U+msa on input line 77. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Try loading font information for U+msb on input line 77. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Try loading font information for U+stmry on input line 77. + +(/usr/share/texlive/texmf-dist/tex/latex/stmaryrd/Ustmry.fd) +LaTeX Font Info: Font shape `T1/phv/m/it' in size <17.28> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 77. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <12> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 77. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <10> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 77. + + +File: logo-UFC.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-UFC.jpg used on input line 77. +(pdftex.def) Requested size: 19.91692pt x 11.17287pt. + + +File: logo-CNRS.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-CNRS.jpg used on input line 77. +(pdftex.def) Requested size: 17.07164pt x 17.07056pt. + + +File: logo-ENSMM.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-ENSMM.jpg used on input line 77. +(pdftex.def) Requested size: 36.98857pt x 6.96614pt. + + +File: logo-UTBM.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-UTBM.jpg used on input line 77. +(pdftex.def) Requested size: 34.1433pt x 14.2247pt. + + +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 77. +(pdftex.def) Requested size: 156.49014pt x 83.48598pt. + + +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 77. +(pdftex.def) Requested size: 79.6678pt x 31.03986pt. + [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./logo-UFC.jpg> <./logo-CN +RS.jpg> <./logo-ENSMM.jpg> <./logo-UTBM.jpg> <./Hexagones.jpg> <./logo-FEMTO.jp +g>] +(./prng.tex +LaTeX Font Info: Try loading font information for OMS+phv on input line 3. + (/usr/share/texlive/texmf-dist/tex/latex/psnfss/omsphv.fd +File: omsphv.fd +) +LaTeX Font Info: Font shape `OMS/phv/m/n' in size <10> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 3. +LaTeX Font Info: Font shape `OMS/phv/m/n' in size <8> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 6. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <7> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 17. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <5> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 17. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <8> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 19. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <6> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 19. +) +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 89. +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 89. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 89. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [2 + +] (./prng.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 89. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + + +Package pdftex.def Info: Hexagones.jpg used on input line 89. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [3 + +] (./chaoticprng.tex +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 1. +) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 90. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + + +Package pdftex.def Info: Hexagones.jpg used on input line 90. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [4 + +] (./problematic.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 91. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + + +Package pdftex.def Info: Hexagones.jpg used on input line 91. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [5 + +] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 92. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 92. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + +[6 + +] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 95. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 95. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [7 + +] (./booleanMap.tex +LaTeX Font Info: Try loading font information for U+dsrom on input line 2. +(/usr/share/texlive/texmf-dist/tex/latex/doublestroke/Udsrom.fd +File: Udsrom.fd 1995/08/01 v0.1 Double stroke roman font definitions +) +LaTeX Font Info: Try loading font information for T1+ptm on input line 17. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. +)) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 96. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 96. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [8 + +] (./markov.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 97. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 97. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [9 + +] (./markov2.tex + +File: g.pdf Graphic file (type pdf) + +Package pdftex.def Info: g.pdf used on input line 18. +(pdftex.def) Requested size: 33.72539pt x 104.38815pt. + + +File: h.pdf Graphic file (type pdf) + +Package pdftex.def Info: h.pdf used on input line 34. +(pdftex.def) Requested size: 32.11942pt x 104.38815pt. + +Overfull \hbox (1.38857pt too wide) in paragraph at lines 34--34 +[][] + [] + + +Overfull \hbox (12.54387pt too wide) in paragraph at lines 34--34 +[]$[] []$ + [] + +) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 98. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 98. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [10 + + <./g.pdf> <./h.pdf>] (./mx.tex +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <12> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 7. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <12> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 7. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <8> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 7. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <6> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 7. +) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 99. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 99. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [11 + +] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 102. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 102. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [12 + +] (./dsscintuition.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 103. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 103. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [13 + +] (./dsscintuition2.tex + +File: iter_f0c.pdf Graphic file (type pdf) + +Package pdftex.def Info: iter_f0c.pdf used on input line 13. +(pdftex.def) Requested size: 175.15395pt x 130.48718pt. + +Overfull \hbox (24.58023pt too wide) in paragraph at lines 13--15 +[][] + [] + + +Overfull \hbox (23.50548pt too wide) detected at line 31 +\T1/phv/m/sl/10 M \OT1/cmss/m/n/10 = [] [] + [] + +) +Overfull \vbox (15.1091pt too high) detected at line 104 + [] + +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 104. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 104. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [14 + + <./iter_f0c.pdf>] +(./dsscintuition2.tex +File: iter_f0d.pdf Graphic file (type pdf) + + +Package pdftex.def Info: iter_f0d.pdf used on input line 14. +(pdftex.def) Requested size: 175.15395pt x 130.48718pt. + +Overfull \hbox (24.58023pt too wide) in paragraph at lines 14--15 +[][] + [] + + +Overfull \hbox (23.50548pt too wide) detected at line 31 +\T1/phv/m/sl/10 M \OT1/cmss/m/n/10 = [] [] + [] + +) +Overfull \vbox (15.1091pt too high) detected at line 104 + [] + +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 104. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 104. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [15 + + <./iter_f0d.pdf>] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 108. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 108. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [16 + +] (./rhctheory.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 109. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 109. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [17 + +] (./rhcgraycodes.tex + +File: iter_f0e.pdf Graphic file (type pdf) + +Package pdftex.def Info: iter_f0e.pdf used on input line 25. +(pdftex.def) Requested size: 166.12021pt x 130.48718pt. +) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 110. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 110. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [18 + + <./iter_f0e.pdf>] +(./rhcgraycodesgen.tex + +Package amsmath Warning: Foreign command \atopwithdelims; +(amsmath) \frac or \genfrac should be used instead +(amsmath) on input line 17. + +) +File: logo-FEMTO.jpg Graphic file (type jpg) + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 111. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 111. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [19 + +] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 114. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 114. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [20 + +] (./expcontext.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 115. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 115. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [21 + +] (./main.toc) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 118. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 118. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [22 + +] (./conclusion.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 119. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 119. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [23 + +] (./thanks.tex) +File: logo-FEMTO.jpg Graphic file (type jpg) + + +Package pdftex.def Info: logo-FEMTO.jpg used on input line 120. +(pdftex.def) Requested size: 34.14322pt x 13.30025pt. +File: Hexagones.jpg Graphic file (type jpg) + +Package pdftex.def Info: Hexagones.jpg used on input line 120. +(pdftex.def) Requested size: 110.96556pt x 59.19487pt. + [24 + +] +\tf@nav=\write6 +\openout6 = `main.nav'. + +\tf@toc=\write7 +\openout7 = `main.toc'. + +\tf@snm=\write8 +\openout8 = `main.snm'. + +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 126. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 126. + (./main.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 126. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 126. +Package rerunfilecheck Info: File `main.out' has not changed. +(rerunfilecheck) Checksum: 9D3299484F5159467F0B77665E023C91;313. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 126. + ) +Here is how much of TeX's memory you used: + 21808 strings out of 494999 + 396176 string characters out of 6180228 + 497897 words of memory out of 5000000 + 24373 multiletter control sequences out of 15000+600000 + 86200 words of font info for 112 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 50i,21n,57p,422b,1056s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}< +/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb> +Output written on main.pdf (24 pages, 367155 bytes). +PDF statistics: + 340 PDF objects out of 1000 (max. 8388607) + 266 compressed objects within 3 object streams + 54 named destinations out of 1000 (max. 500000) + 158 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/talk/main.nav b/talk/main.nav new file mode 100644 index 0000000..b0290e8 --- /dev/null +++ b/talk/main.nav @@ -0,0 +1,68 @@ +\beamer@endinputifotherversion {3.24pt} +\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}} +\headcommand {\beamer@framepages {1}{1}} +\headcommand {\sectionentry {1}{Introduction}{2}{Introduction}{0}} +\headcommand {\beamer@sectionpages {1}{1}} +\headcommand {\beamer@subsectionpages {1}{1}} +\headcommand {\slideentry {1}{0}{2}{2/3}{}{0}} +\headcommand {\beamer@framepages {2}{3}} +\headcommand {\slideentry {1}{0}{3}{4/4}{}{0}} +\headcommand {\beamer@framepages {4}{4}} +\headcommand {\slideentry {1}{0}{4}{5/5}{}{0}} +\headcommand {\beamer@framepages {5}{5}} +\headcommand {\slideentry {1}{0}{5}{6/6}{}{0}} +\headcommand {\beamer@framepages {6}{6}} +\headcommand {\sectionentry {2}{Preliminaries}{7}{Preliminaries}{0}} +\headcommand {\beamer@sectionpages {2}{6}} +\headcommand {\beamer@subsectionpages {2}{6}} +\headcommand {\slideentry {2}{0}{6}{7/7}{}{0}} +\headcommand {\beamer@framepages {7}{7}} +\headcommand {\slideentry {2}{0}{7}{8/8}{}{0}} +\headcommand {\beamer@framepages {8}{8}} +\headcommand {\slideentry {2}{0}{8}{9/9}{}{0}} +\headcommand {\beamer@framepages {9}{9}} +\headcommand {\slideentry {2}{0}{9}{10/10}{}{0}} +\headcommand {\beamer@framepages {10}{10}} +\headcommand {\slideentry {2}{0}{10}{11/11}{}{0}} +\headcommand {\beamer@framepages {11}{11}} +\headcommand {\sectionentry {3}{Generation of DSSC Matrices}{12}{Generation of DSSC Matrices}{0}} +\headcommand {\beamer@sectionpages {7}{11}} +\headcommand {\beamer@subsectionpages {7}{11}} +\headcommand {\slideentry {3}{0}{11}{12/12}{}{0}} +\headcommand {\beamer@framepages {12}{12}} +\headcommand {\slideentry {3}{0}{12}{13/13}{}{0}} +\headcommand {\beamer@framepages {13}{13}} +\headcommand {\slideentry {3}{0}{13}{14/15}{}{0}} +\headcommand {\beamer@framepages {14}{15}} +\headcommand {\sectionentry {4}{On Removing Hamiltonian Cycles}{16}{On Removing Hamiltonian Cycles}{0}} +\headcommand {\beamer@sectionpages {12}{15}} +\headcommand {\beamer@subsectionpages {12}{15}} +\headcommand {\slideentry {4}{0}{14}{16/16}{}{0}} +\headcommand {\beamer@framepages {16}{16}} +\headcommand {\slideentry {4}{0}{15}{17/17}{}{0}} +\headcommand {\beamer@framepages {17}{17}} +\headcommand {\slideentry {4}{0}{16}{18/18}{}{0}} +\headcommand {\beamer@framepages {18}{18}} +\headcommand {\slideentry {4}{0}{17}{19/19}{}{0}} +\headcommand {\beamer@framepages {19}{19}} +\headcommand {\sectionentry {5}{Experiments}{20}{Experiments}{0}} +\headcommand {\beamer@sectionpages {16}{19}} +\headcommand {\beamer@subsectionpages {16}{19}} +\headcommand {\slideentry {5}{0}{18}{20/20}{}{0}} +\headcommand {\beamer@framepages {20}{20}} +\headcommand {\slideentry {5}{0}{19}{21/21}{}{0}} +\headcommand {\beamer@framepages {21}{21}} +\headcommand {\sectionentry {6}{Conclusion}{22}{Conclusion}{0}} +\headcommand {\beamer@sectionpages {20}{21}} +\headcommand {\beamer@subsectionpages {20}{21}} +\headcommand {\slideentry {6}{0}{20}{22/22}{}{0}} +\headcommand {\beamer@framepages {22}{22}} +\headcommand {\slideentry {6}{0}{21}{23/23}{}{0}} +\headcommand {\beamer@framepages {23}{23}} +\headcommand {\slideentry {6}{0}{22}{24/24}{}{0}} +\headcommand {\beamer@framepages {24}{24}} +\headcommand {\beamer@partpages {1}{24}} +\headcommand {\beamer@subsectionpages {22}{24}} +\headcommand {\beamer@sectionpages {22}{24}} +\headcommand {\beamer@documentpages {24}} +\headcommand {\def \inserttotalframenumber {22}} diff --git a/talk/main.out b/talk/main.out new file mode 100644 index 0000000..2014078 --- /dev/null +++ b/talk/main.out @@ -0,0 +1,6 @@ +\BOOKMARK [2][]{Outline0.1}{Introduction}{}% 1 +\BOOKMARK [2][]{Outline0.2}{Preliminaries}{}% 2 +\BOOKMARK [2][]{Outline0.3}{Generation of DSSC Matrices}{}% 3 +\BOOKMARK [2][]{Outline0.4}{On Removing Hamiltonian Cycles}{}% 4 +\BOOKMARK [2][]{Outline0.5}{Experiments}{}% 5 +\BOOKMARK [2][]{Outline0.6}{Conclusion}{}% 6 diff --git a/talk/main.snm b/talk/main.snm new file mode 100644 index 0000000..e69de29 diff --git a/talk/main.tex b/talk/main.tex new file mode 100644 index 0000000..95837ab --- /dev/null +++ b/talk/main.tex @@ -0,0 +1,132 @@ +\documentclass{beamer} +\usepackage{beamerthemefemto} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsfonts,amsmath,amssymb,stmaryrd,dsfont} +\usepackage[english]{babel} +\usepackage{algorithm2e} +\usepackage{alltt} +\usepackage[font=footnotesize]{subfig} +%\usepackage[amsmath,thmmarks,thref,framed]{ntheorem} + + + + +%\theoremstyle{plain} +%\theoremsymbol{\ensuremath{\clubsuit}} +%\theoremseparator{.} +%\theoremprework{\hrulefill} +%\theorempostwork{\hrulefill\newline} +%\renewtheorem{theorem}[theorem]{Théorème} + + + +\newcommand{\inputFrameb}[2]{ +\frame{ +\frametitle{#1} +\begin{small} +\input{#2} +\end{small} +}} + +\newcommand{\Nats}[0]{\ensuremath{\mathds{N}}} +\newcommand{\Z}[0]{\ensuremath{\mathbb{Z}}} +\newcommand{\R}[0]{\ensuremath{\mathds{R}}} +\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} +\newcommand{\StratSet}[0]{\ensuremath{\mathbb{S}}} + + +\newcommand{\fc}[1]{\ensuremath{\overline{#1}}} +%\renewcommand\footnotelayout{\tiny} +\let\oldfootnotesize\footnotesize +\renewcommand*{\footnotesize}{\oldfootnotesize\scriptsize} + +\usepackage{graphicx} +\DeclareGraphicsExtensions{.jpg, .png , .pdf, .bmp, .pdftex} + + +\title[Traversing a $n$-cube for PRNGs] +{Traversing a $n$-cube without Balanced Hamiltonian Cycle \\ + to Generate Pseudorandom Numbers} + + +\author[couchot@femto-st.fr]{J.-F. Couchot, P.-C. Heam, C. Guyeux, Q. Wang, and J. M. Bahi} + + + +\institute[Institut FEMTO-ST/Guangdong University of Technology]{FEMTO-ST Institute, University of Franche-Comt\'{e}, France\\ +College of Automation, Guangdong University of Technology, China} + + +\date[jm2014]{2014/09/25} + +% ____ _____ ____ _ _ _____ +% | _ \| ____| __ )| | | |_ _| +% | | | | _| | _ \| | | | | | +% | |_| | |___| |_) | |_| | | | +% |____/|_____|____/ \___/ |_| +% + +%\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} + +\begin{document} +\setbeamertemplate{background}{\titrefemto} + +\begin{frame}[plain] +\titlepage +\end{frame} + +\setbeamertemplate{background}{\pagefemto} + +% \begin{frame}{Outline} +\setbeamertemplate{section in toc}[sections numbered] +% \tableofcontents +% \end{frame} + + + +\section{Introduction} +\inputFrameb{Pseudo Random Number Generation}{prng} +\inputFrameb{Chaotic PRNG}{chaoticprng} +\inputFrameb{Problematic}{problematic} +\frame{\frametitle{Outline}\tableofcontents[hideallsubsections]} + +\section{Preliminaries} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Boolean Map}{booleanMap} +\inputFrameb{Iteration Graph and Markov Matrix}{markov} +\inputFrameb{Iteration Graph and Markov Matrix (cont'd)}{markov2} +\inputFrameb{Our PRNG}{mx} + +\section{Generation of DSSC Matrices} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{A typical CLPFD}{dsscintuition} +\inputFrameb{A typical CLPFD (cont'd)}{dsscintuition2} + + +\section{On Removing Hamiltonian Cycles} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Theoretical Aspects}{rhctheory} +\inputFrameb{Cyclic Balanced Gray Codes}{rhcgraycodes} +\inputFrameb{Generation of Balanced Gray Codes}{rhcgraycodesgen} + +\section{Experiments} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Experiments}{expcontext} + +\section{Conclusion} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Conclusion \& Future Work}{conclusion} +\inputFrameb{Thanks}{thanks} + + +% \section{Conclusion et perspectives} +% \frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} + +\end{document} +% _____ ___ _ _ +% | ___|_ _| \ | | +% | |_ | || \| | +% | _| | || |\ | +% |_| |___|_| \_| +% diff --git a/talk/main.tex.bak b/talk/main.tex.bak new file mode 100644 index 0000000..1b4b24b --- /dev/null +++ b/talk/main.tex.bak @@ -0,0 +1,113 @@ +\documentclass{beamer} +\usepackage{beamerthemefemto} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsfonts,amsmath,amssymb,stmaryrd,dsfont} +\usepackage[french]{babel} +\usepackage{algorithm2e} +\usepackage{alltt} +%\usepackage[amsmath,thmmarks,thref,framed]{ntheorem} + + + + +%\theoremstyle{plain} +%\theoremsymbol{\ensuremath{\clubsuit}} +%\theoremseparator{.} +%\theoremprework{\hrulefill} +%\theorempostwork{\hrulefill\newline} +%\renewtheorem{theorem}[theorem]{Théorème} + + + +\newcommand{\inputFrameb}[2]{ +\frame{ +\frametitle{#1} +%\begin{small} +\input{#2} +%\end{small} +}} + +\newcommand{\Nats}[0]{\ensuremath{\mathds{N}}} +\newcommand{\Z}[0]{\ensuremath{\mathbb{Z}}} +\newcommand{\R}[0]{\ensuremath{\mathds{R}}} +\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} +\newcommand{\StratSet}[0]{\ensuremath{\mathbb{S}}} + + +\newcommand{\fc}[1]{\ensuremath{\overline{#1}}} +%\renewcommand\footnotelayout{\tiny} +\let\oldfootnotesize\footnotesize +\renewcommand*{\footnotesize}{\oldfootnotesize\scriptsize} + +\usepackage{graphicx} +\DeclareGraphicsExtensions{.jpg, .png , .pdf, .bmp, .pdftex} + + +\title[durée de vie d'un réseau de capteurs vidéos]{Optimisation de la durée de vie d'un réseau de capteurs vidéos} + +\author[couchot@femto-st.fr]{Jean-Fran\c{c}ois {\sc Couchot}, Ahmed \sc{Mostefaoui}} + +\institute[Institut FEMTO-ST]{\textit{Institut FEMTO-ST - Département DISC- Équipe AND}} + +\date[AMTECH'13]{31 Mai 2013} + +% ____ _____ ____ _ _ _____ +% | _ \| ____| __ )| | | |_ _| +% | | | | _| | _ \| | | | | | +% | |_| | |___| |_) | |_| | | | +% |____/|_____|____/ \___/ |_| +% + +%\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} + +\begin{document} +\setbeamertemplate{background}{\titrefemto} + +\begin{frame}[plain] +\titlepage +\end{frame} + +\setbeamertemplate{background}{\pagefemto} + +% \begin{frame}{Plan} +\setbeamertemplate{section in toc}[sections numbered] +% \tableofcontents +% \end{frame} + +\frame{\frametitle{Plan}\tableofcontents[hideallsubsections]} + +\section{Problématique générale} +\frame{\frametitle{Plan}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Contexte: réseau de capteurs vidéos}{cv} +\inputFrameb{Formalisation: réseau et flux}{formalisationflux} +\inputFrameb{Formalisation: énergie}{formalisationenergie} +\inputFrameb{Formulation globale}{formalisationglobale} +\inputFrameb{Formulation simplifiée}{formalisationsimplifiee} + +\section{Démarche d'optimisation} +\frame{\frametitle{Plan}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Multiplicateurs de Lagrange}{lagrange} +\inputFrameb{Opérateur de Lagrange}{lagrangeoperateur} +\inputFrameb{Approche itérative: variables duales}{interation1.tex} +\inputFrameb{Approche itérative: variables primaires}{interation2.tex} + + +\section{Travaux en cours} +\frame{\frametitle{Plan}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Analyse des résultats}{rem0.tex} +\inputFrameb{Approche itérative: quelques remarques}{rem1.tex} +\inputFrameb{Approche itérative assynchrone}{assync.tex} +\inputFrameb{Merci}{merci.tex} + + +% \section{Conclusion et perspectives} +% \frame{\frametitle{Plan}\tableofcontents[currentsection,hideallsubsections]} + +\end{document} +% _____ ___ _ _ +% | ___|_ _| \ | | +% | |_ | || \| | +% | _| | || |\ | +% |_| |___|_| \_| +% diff --git a/talk/main.tex~ b/talk/main.tex~ new file mode 100644 index 0000000..8adc0cf --- /dev/null +++ b/talk/main.tex~ @@ -0,0 +1,133 @@ +\documentclass[handout]{beamer} +\usepackage{beamerthemefemto} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsfonts,amsmath,amssymb,stmaryrd,dsfont} +\usepackage[french]{babel} +\usepackage{algorithm2e} +\usepackage{alltt} +\usepackage[font=footnotesize]{subfig} +%\usepackage[amsmath,thmmarks,thref,framed]{ntheorem} + + + + +%\theoremstyle{plain} +%\theoremsymbol{\ensuremath{\clubsuit}} +%\theoremseparator{.} +%\theoremprework{\hrulefill} +%\theorempostwork{\hrulefill\newline} +%\renewtheorem{theorem}[theorem]{Théorème} + + + +\newcommand{\inputFrameb}[2]{ +\frame{ +\frametitle{#1} +\begin{small} +\input{#2} +\end{small} +}} + +\newcommand{\Nats}[0]{\ensuremath{\mathds{N}}} +\newcommand{\Z}[0]{\ensuremath{\mathbb{Z}}} +\newcommand{\R}[0]{\ensuremath{\mathds{R}}} +\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} +\newcommand{\StratSet}[0]{\ensuremath{\mathbb{S}}} + + +\newcommand{\fc}[1]{\ensuremath{\overline{#1}}} +%\renewcommand\footnotelayout{\tiny} +\let\oldfootnotesize\footnotesize +\renewcommand*{\footnotesize}{\oldfootnotesize\scriptsize} + +\usepackage{graphicx} +\DeclareGraphicsExtensions{.jpg, .png , .pdf, .bmp, .pdftex} + + +\title[Traversing a $n$-cube for PRNGs] +{Traversing a $n$-cube without Balanced Hamiltonian Cycle \\ + to Generate Pseudorandom Numbers} + + +\author[couchot@femto-st.fr]{J.-F. Couchot, P.-C. Heam, C. Guyeux, Q. Wang, and J. M. Bahi} + + + +\institute[Institut FEMTO-ST/Guangdong University of Technology]{ +FEMTO-ST Institute, University of Franche-Comt\'{e}, France\\ +College of Automation, Guangdong University of Technology, China} + + +\date[]{} + +% ____ _____ ____ _ _ _____ +% | _ \| ____| __ )| | | |_ _| +% | | | | _| | _ \| | | | | | +% | |_| | |___| |_) | |_| | | | +% |____/|_____|____/ \___/ |_| +% + +%\newcommand{\Bool}[0]{\ensuremath{\mathds{B}}} + +\begin{document} +\setbeamertemplate{background}{\titrefemto} + +\begin{frame}[plain] +\titlepage +\end{frame} + +\setbeamertemplate{background}{\pagefemto} + +% \begin{frame}{Outline} +\setbeamertemplate{section in toc}[sections numbered] +% \tableofcontents +% \end{frame} + + + +\section{Introduction} +\inputFrameb{Pseudo Random Number Generation}{prng} +\inputFrameb{Chaotic PRNG}{chaoticprng} +\inputFrameb{Problematic}{problematic} +\frame{\frametitle{Outline}\tableofcontents[hideallsubsections]} + +\section{Preliminaries} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Boolean Map}{booleanMap} +\inputFrameb{Iteration Graph and Markov Matrix}{markov} +\inputFrameb{Iteration Graph and Markov Matrix (cont'd)}{markov2} +\inputFrameb{Our PRNG}{mx} + +\section{Generation of DSSC Matrices} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{A typical CLPFD}{dsscintuition} +\inputFrameb{A typical CLPFD (cont'd)}{dsscintuition2} + + +\section{On Removing Hamiltonian Cycles} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Theoretical Aspects}{rhctheory} +\inputFrameb{Cyclic Balanced Gray Codes}{rhcgraycodes} +\inputFrameb{Generation of Balanced Gray Codes}{rhcgraycodesgen} + +\section{Experiments} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Experiments}{expcontext} + +\section{Conclusion} +\frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} +\inputFrameb{Conclusion \& Future Work}{conclusion} +\inputFrameb{Thanks}{thanks} + + +% \section{Conclusion et perspectives} +% \frame{\frametitle{Outline}\tableofcontents[currentsection,hideallsubsections]} + +\end{document} +% _____ ___ _ _ +% | ___|_ _| \ | | +% | |_ | || \| | +% | _| | || |\ | +% |_| |___|_| \_| +% diff --git a/talk/main.thm b/talk/main.thm new file mode 100644 index 0000000..e69de29 diff --git a/talk/main.toc b/talk/main.toc new file mode 100644 index 0000000..bf7f141 --- /dev/null +++ b/talk/main.toc @@ -0,0 +1,8 @@ +\beamer@endinputifotherversion {3.24pt} +\select@language {english} +\beamer@sectionintoc {1}{Introduction}{2}{0}{1} +\beamer@sectionintoc {2}{Preliminaries}{7}{0}{2} +\beamer@sectionintoc {3}{Generation of DSSC Matrices}{12}{0}{3} +\beamer@sectionintoc {4}{On Removing Hamiltonian Cycles}{16}{0}{4} +\beamer@sectionintoc {5}{Experiments}{20}{0}{5} +\beamer@sectionintoc {6}{Conclusion}{22}{0}{6} diff --git a/talk/markov.tex b/talk/markov.tex new file mode 100644 index 0000000..2efe281 --- /dev/null +++ b/talk/markov.tex @@ -0,0 +1,21 @@ +\begin{block}{Iteration Graph} +The {\emph{iteration graph}} $\Gamma(f)$: +directed graph s. t. +\begin{itemize} +\item the set of vertices: $\Bool^n$ +\item the set of edges: $(x,F_f(i,x)) \in \Gamma(f)$, $x\in\Bool^n$, +$i\in \llbracket1;n\rrbracket$ +\end{itemize} +\end{block} + +\begin{block}{Markov Matrix} +Matrix $M$: +\[ +\begin{array}{l} +M_{ij} = \frac{1}{n} \textrm{ if $i \neq j$ and $(i,j) \in \Gamma(f)$} \\ +M_{ij} = 0 \textrm{ if $i \neq j$ and $(i,j) \not \in \Gamma(f)$} \\ +M_{ii} = 1 - \sum\limits_{j=1, j\neq i}^n M_{ij} +\end{array} +\] +\end{block} + diff --git a/talk/markov.tex~ b/talk/markov.tex~ new file mode 100644 index 0000000..cd98232 --- /dev/null +++ b/talk/markov.tex~ @@ -0,0 +1,57 @@ +\begin{block}{Iteration Graph} +The {\emph{iteration graph}} $\Gamma(f)$: +directed graph s. t. +\begin{itemize} +\item the set of vertices: $\Bool^n$ +\item the set of edges: $(x,F_f(i,x)) \in \Gamma(f)$, $x\in\Bool^n$, +$i\in \llbracket1;n\rrbracket$ +\end{itemize} +\end{block} + +\begin{block}{Markov Matrix} +Matrix $M$: +\[ +\begin{array}{l} +M_{ij} = \frac{1}{n} \textrm{ if $i \neq j$ and $(i,j) \in \Gamma(f)$} \\ +M_{ij} = 0 \textrm{ if $i \neq j$ and $(i,j) \not \in \Gamma(f)$} \\ +M_{ii} = 1 - \sum\limits_{j=1, j\neq i}^n M_{ij} +\end{array} +\] +\end{block} + +\begin{exampleblock}{$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2})$, $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$} +\vspace{-1em} +\begin{figure}%[t] + \subfloat[$\Gamma(g)$, $M_g$]{ + \begin{minipage}{0.11\textwidth} + \includegraphics[scale=0.4]{g.pdf} + \end{minipage} + \begin{minipage}{0.25\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{c} + 1 0 1 0 \\ + 1 0 0 1 \\ + 1 0 0 1 \\ + 0 1 1 0 + \end{array} + \right)$ + \end{minipage} + } + \subfloat[$\Gamma(h)$, $M_h$]{ + \begin{minipage}{0.10\textwidth} + \includegraphics[scale=0.4]{h.pdf} + \end{minipage} + \begin{minipage}{0.25\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{c} + 1 0 1 0 \\ + 0 1 0 1 \\ + 1 0 0 1 \\ + 0 1 1 0 + \end{array} + \right) + $ + \end{minipage} + } +\end{figure} +\end{exampleblock} diff --git a/talk/markov2.tex b/talk/markov2.tex new file mode 100644 index 0000000..b71f8e8 --- /dev/null +++ b/talk/markov2.tex @@ -0,0 +1,36 @@ +\begin{exampleblock}{$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2})$, $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$} +\vspace{-1em} +\begin{figure}%[t] + \subfloat[$\Gamma(g)$, $M_g$]{ + \begin{minipage}{0.11\textwidth} + \includegraphics[scale=0.4]{g.pdf} + \end{minipage} + \begin{minipage}{0.38\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{cccc} + 1 &0 &1 & 0 \\ + 1 &0 &0 & 1 \\ + 1 &0 &0 & 1 \\ + 0 &1 &1 & 0 + \end{array} + \right)$ + \end{minipage} + } + \subfloat[$\Gamma(h)$, $M_h$]{ + \begin{minipage}{0.10\textwidth} + \includegraphics[scale=0.4]{h.pdf} + \end{minipage} + \begin{minipage}{0.25\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{cccc} + 1 &0 & 1& 0 \\ + 0 &1 & 0& 1 \\ + 1 &0 & 0& 1 \\ + 0 &1 & 1& 0 + \end{array} + \right) + $ + \end{minipage} + } +\end{figure} +\end{exampleblock} diff --git a/talk/markov2.tex~ b/talk/markov2.tex~ new file mode 100644 index 0000000..d36002f --- /dev/null +++ b/talk/markov2.tex~ @@ -0,0 +1,36 @@ +\begin{exampleblock}{$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2})$, $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$} +\vspace{-1em} +\begin{figure}%[t] + \subfloat[$\Gamma(g)$, $M_g$]{ + \begin{minipage}{0.11\textwidth} + \includegraphics[scale=0.4]{g.pdf} + \end{minipage} + \begin{minipage}{0.25\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{c} + 1 0 1 0 \\ + 1 0 0 1 \\ + 1 0 0 1 \\ + 0 1 1 0 + \end{array} + \right)$ + \end{minipage} + } + \subfloat[$\Gamma(h)$, $M_h$]{ + \begin{minipage}{0.10\textwidth} + \includegraphics[scale=0.4]{h.pdf} + \end{minipage} + \begin{minipage}{0.25\textwidth} + $\dfrac{1}{2}\left( + \begin{array}{c} + 1 0 1 0 \\ + 0 1 0 1 \\ + 1 0 0 1 \\ + 0 1 1 0 + \end{array} + \right) + $ + \end{minipage} + } +\end{figure} +\end{exampleblock} diff --git a/talk/merci.tex b/talk/merci.tex new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/talk/merci.tex @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/talk/mx.tex b/talk/mx.tex new file mode 100644 index 0000000..55428d9 --- /dev/null +++ b/talk/mx.tex @@ -0,0 +1,28 @@ + +\begin{block}{Mixing Time} +The smallest iteration number that is sufficient to obtain +a deviation lesser $\varepsilon$ between rows of $M$ and a given distribution. +\end{block} + +\begin{block}{PRNG $\chi_{\textit{14Secrypt}}$} +\begin{algorithm}[H] +\begin{scriptsize} +\KwIn{a function $f$, an iteration number $b$, a \textit{Random} PRNG, an initial configuration $x^0$ ($n$ bits)} +\KwOut{a configuration $x$ ($n$ bits)} +$x\leftarrow x^0$\; +\For{$i=0,\dots,b-1$} +{ +$s\leftarrow{\textit{Random}(n)}$\; +$x\leftarrow{F_f(s,x)}$\; +} +return $x$\; +\end{scriptsize} +\end{algorithm} +\begin{itemize} +\item From $x^0$: a random walk in $\Gamma(f)$ thanks to \textit{Random} + of length $b$ +\end{itemize} +\end{block} + + + diff --git a/talk/mx.tex~ b/talk/mx.tex~ new file mode 100644 index 0000000..734cb8e --- /dev/null +++ b/talk/mx.tex~ @@ -0,0 +1,30 @@ + +\begin{block}{Mixing Time} +The smallest iteration number that is sufficient to obtain +a deviation lesser $\varepsilon$ between rows of $M$ and a given distribution. +\end{block} + +\begin{block}{PRNG $\chi_{\textit{14Secrypt}}$} +\begin{itemize} +\item Imputs: $f$, $b$, $x^0$, a \textit{Random} PRNG +\begin{algorithm}[H] +\begin{scriptsize} +\KwIn{a function $f$, an iteration number $b$, an initial configuration $x^0$ ($n$ bits)} +\KwOut{a configuration $x$ ($n$ bits)} +$x\leftarrow x^0$\; +\For{$i=0,\dots,b-1$} +{ +$s\leftarrow{\textit{Random}(n)}$\; +$x\leftarrow{F_f(s,x)}$\; +} +return $x$\; +\end{scriptsize} +\end{algorithm} + +\item From $x^0$: a random walk in $\Gamma(f)$ thanks to \textit{Random} + of length $b$ +\end{itemize} +\end{block} + + + diff --git a/talk/pbprng.tex.bak b/talk/pbprng.tex.bak new file mode 100644 index 0000000..058a792 --- /dev/null +++ b/talk/pbprng.tex.bak @@ -0,0 +1,28 @@ +\vspace{-1em} +\begin{scriptsize} +\begin{alltt} +111000100100000100010101100001010001110011100000 +010000010001101011001010001101110000111101111010 +100111111001110111001001110011010100100011111000 +100000000111111010110111000111101000101111011010 +\end{alltt} +\end{scriptsize} +\vspace{-1em} +\begin{itemize} +\item PRNG: algorithme déterministe de + génération de nombres suivant certaines propriétés de hasard +\item Utilisation en technologies mobiles: +\begin{itemize} +\item Clefs d'échange sur le réseau (WEP, HTTPS, chiffrement) +\item Mesure de distances (GPS) +\end{itemize} +\item Devrait être cryptographiquement sécurisé: +\begin{itemize} +\item Passer avec succes des tests statistiques (NIST, U01,\ldots) +\item Pour une séquence aléatoire donnée de $k$ bits: + aucun algorithme en temps polynomial + pouvant prédire le $k+1$ème avec une probabilité supérieure à 50\% +\item Connaître l'état $s$ de l'algorithme ne permet pas + de reconstruire les nombres aléatoires générés jusqu'à $s$. +\end{itemize} +\end{itemize} diff --git a/talk/prng.tex b/talk/prng.tex new file mode 100644 index 0000000..74ff44c --- /dev/null +++ b/talk/prng.tex @@ -0,0 +1,26 @@ +\vspace{-1.5em} +\begin{itemize} +\item Fields of Applications: +\vspace{-0.5em} +\begin{itemize} +\item Security: hash function, steganography, cryptography +\item Time Synchronization: GPS +\item Numerical simulations: Monte-Carlo algorithms +\item<2->\alert{Simulation of Chaotic systems: protein dynamics e.g.} +\end{itemize} +\item Some requirements: +\vspace{-0.5em} +\begin{itemize} +%\item Reproducibility: same seed $\leadsto$ same stream +\item For cryptography: cryptographically secure +\item Successful pass on PRNG batteries of tests: +NIST\footnote{E.~Barker and A.~Roginsky. +\newblock Draft {N}{I}{S}{T} special publication 800-131 recommendation for the + transitioning of cryptographic algorithms and key sizes, 2010.}, +DieHARD\footnote{G.~Marsaglia. +\newblock DieHARD: a battery of tests of randomness. +\newblock {\em http://stat.fsu.edu/~geo/diehard.html}, 1996} +\item<2-> \alert{Should have chaotic properties } +\end{itemize} +\end{itemize} + diff --git a/talk/prng.tex.bak b/talk/prng.tex.bak new file mode 100644 index 0000000..ecaf063 --- /dev/null +++ b/talk/prng.tex.bak @@ -0,0 +1,22 @@ +\begin{itemize} +\item Fields of Applications: +\begin{itemize} +\item Security: hash function, steganography, stream cipher +\item Time Synchronization: GPS +\item Numerical simulations: Monte-Carlo algorithms +\item<2->Simulation of Chaotic systems: double pendulum, protein dynamics +\end{itemize} +\item Practical requirements: +\begin{itemize} +\item Reproducibility: same seed $\leadsto$ same stream +\item Successfull pass on PRNG batteries of tests: +the NIST \footnote{E.~Barker and A.~Roginsky. +\newblock Draft {N}{I}{S}{T} special publication 800-131 recommendation for the + transitioning of cryptographic algorithms and key sizes, 2010.}, +and DieHARD~\footnote{G.~Marsaglia. +\newblock Diehard: a battery of tests of randomness. +\newblock {\em http://stat.fsu.edu/~geo/diehard.html}, 1996} +\item<2-> Should have chaotic properties if needed +\end{itemize} +\end{itemize} + diff --git a/talk/prng.tex~ b/talk/prng.tex~ new file mode 100644 index 0000000..59fb060 --- /dev/null +++ b/talk/prng.tex~ @@ -0,0 +1,22 @@ +\begin{itemize} +\item Fields of Applications: +\begin{itemize} +\item Security: hash function, steganography, stream cipher +\item Time Synchronization: GPS +\item Numerical simulations: Monte-Carlo algorithms +\item<2->\alert{Simulation of Chaotic systems: protein dynamics e.g.} +\end{itemize} +\item Requirements: +\begin{itemize} +\item Reproducibility: same seed $\leadsto$ same stream +\item Successful pass on PRNG batteries of tests: +NIST\footnote{E.~Barker and A.~Roginsky. +\newblock Draft {N}{I}{S}{T} special publication 800-131 recommendation for the + transitioning of cryptographic algorithms and key sizes, 2010.}, +DieHARD\footnote{G.~Marsaglia. +\newblock DieHARD: a battery of tests of randomness. +\newblock {\em http://stat.fsu.edu/~geo/diehard.html}, 1996} +\item<2-> \alert{Should have chaotic properties } +\end{itemize} +\end{itemize} + diff --git a/talk/problematic.tex b/talk/problematic.tex new file mode 100644 index 0000000..1d6bd60 --- /dev/null +++ b/talk/problematic.tex @@ -0,0 +1,16 @@ +\begin{block}{A (coarse) two steps approach} +\begin{enumerate} +\item Sufficient conditions to retrieve Boolean maps whose graphs are +strongly connected are given +\item Further filter those whose Markov matrix is doubly stochastic +\end{enumerate} +\end{block} +\begin{block}{Drawback} +Delaying the second requirement to a final step whereas this is a necessary condition +\end{block} + +\begin{block}{Content of this work} +A completely new approach to generate Boolean functions, whose Markov matrix +is doubly stochastic and whose graph of iterations is strongly connected +(\alert{denoted as DSSC Matrix}) +\end{block} diff --git a/talk/problematic.tex~ b/talk/problematic.tex~ new file mode 100644 index 0000000..2e5ef70 --- /dev/null +++ b/talk/problematic.tex~ @@ -0,0 +1,16 @@ +\begin{block}{A (coarse) two steps approach} +\begin{enumerate} +\item Sufficient conditions to retrieve Boolean maps whose graphs are +strongly connected are given +\item Further filter those whose Markov matrix is doubly stochastic +\end{enumerate} +\end{block} +\begin{block}{Drawback} +Delaying the second requirement to a final step whereas this is a necessary condition +\end{block} + +\begin{block}{Content of this work} +A completely new approach to generate Boolean functions, whose Markov matrix +is doubly stochastic and whose graph of iterations is strongly connected +(denoted as DSSC Matrix) +\end{block} diff --git a/talk/qualitePRNG.tex.bak b/talk/qualitePRNG.tex.bak new file mode 100644 index 0000000..79c8dc1 --- /dev/null +++ b/talk/qualitePRNG.tex.bak @@ -0,0 +1,11 @@ +Evaluation des algorithmes: +\begin{itemize} +\item + Génération aléatoire de fonctions vérifiant + les critères du théorème précédent + et méthode constructive pour en générer~\footnote{Jacques Bahi, Jean-François Couchot, Christophe Guyeux, and Adrien Richard. On the Link Between Strongly Connected Iteration Graphs and Chaotic Boolean Discrete-Time Dynamical Systems. In FCT'11, 18th Int. Symp. on Fundamentals of Computation Theory, volume 6914 of LNCS, Oslo, Norway, pages 126--137, August 2011} +\item Succès à toutes les batteries de test~\footnote{Jacques Bahi, Xiaole Fang, Christophe Guyeux, and Qianxue Wang. Suitability of chaotic iterations schemes using XORshift for security applications. JNCA, Journal of Network and Computer Applications, *(*):***--***, 2013. Note: Accepted manuscript. To appear.} +\item Preuve de crypto sécurité et comparaison de complexité~\footnote{A Complexity Approach for Steganalysis. Journées Codes et Stéganographie, Hôtel de la Monnaie, Rennes, France, March 2012} + + +\end{itemize} diff --git a/talk/rem0.tex b/talk/rem0.tex new file mode 100644 index 0000000..6883003 --- /dev/null +++ b/talk/rem0.tex @@ -0,0 +1,13 @@ +\begin{itemize} +\item Validité du remplacement de $\sum_{i \in N }q_i^2$ par + $\sum_{i \in N }q_i^2 + {\sum_{h \in V, l \in L } \delta.x_{hl}^2} ++ {\sum_{h \in V }\delta.R_{h}^2}$? +\item Résultats expérimentaux avec $\delta = 0,2$ +\begin{itemize} +\item $q_i \approx 0,105$ et $0,1 \leq R_h \leq 0,15$ +\item $\sum_{i \in N }q_i^2 \approx 0.11$ vs. +$\sum_{i \in N }q_i^2 + {\sum_{h \in V, l \in L } \delta.x_{hl}^2} ++ {\sum_{h \in V }\delta.R_{h}^2} \geq 0,20$ +\item Non négligeable! +\end{itemize} +\end{itemize} diff --git a/talk/rem0.tex.bak b/talk/rem0.tex.bak new file mode 100644 index 0000000..944c8bf --- /dev/null +++ b/talk/rem0.tex.bak @@ -0,0 +1,13 @@ +\begin{itemize} +\item Validité du remplacement de $\sum_{i \in N }q_i^2$ par + $\sum_{i \in N }q_i^2 + {\sum_{h \in V, l \in L } \delta.x_{hl}^2} ++ {\sum_{h \in V }\delta.R_{h}^2}$? +\item Résultats experimentaux avec $\delta = 0,2$ +\begin{itemize} +\item $q_i \approx 0,105$ et $0,1 \leq R_h \leq 0,15$ +\item $\sum_{i \in N }q_i^2 \approx 0.11$ vs. +$\sum_{i \in N }q_i^2 + {\sum_{h \in V, l \in L } \delta.x_{hl}^2} ++ {\sum_{h \in V }\delta.R_{h}^2} \geq 0,20$ +\item Non négligeable! +\end{itemize} +\end{itemize} diff --git a/talk/rem0.tex~ b/talk/rem0.tex~ new file mode 100644 index 0000000..e69de29 diff --git a/talk/rem1.tex b/talk/rem1.tex new file mode 100644 index 0000000..fe7ef1e --- /dev/null +++ b/talk/rem1.tex @@ -0,0 +1,51 @@ +\begin{enumerate} +\item +$q_i^{(k)} = \arg\min_{q_i>0} +\left( +q^2 + q. +\left( +\sum_{l \in L } a_{il}w_l^{(k)}- +\lambda_i^{(k)}B_i +\right) +\right)$ + +\item +$ +P_{sh}^{(k)} += +\arg \min_{p > 0} +\left( +v_h^{(k)}.\dfrac{\ln(\sigma^2/D_h)}{\gamma p ^{2/3}} + \lambda_h^{(k)}p +\right) +$ + +\item +$ +R_h^{(k)} += +\arg \min_{r \geq 0 } +\left( +\delta r^2 +-v_h^{(k)}.r - \sum_{i \in N} u_{hi}^{(k)} \eta_{hi} +\right) +$ +\item +$ +x_{hl}^{(k)} = +\arg \min_{x \geq 0} +\left( +\delta.x^2 + x. +\sum_{i \in N} \left( +\lambda_{i}^{(k)}.(c^s_l.a_{il}^{+} + +c^r. a_{il}^{-} )+ + u_{hi}^{(k)} a_{il} +\right) +\right) + $ +\end{enumerate} +\begin{itemize} +\item Toutes les fonctions sont dérivables! +\item $ \leadsto$ pour 1. 3. 4., calcul direct du min! +\item 2. str. décroissante si $\lambda_h^{(k)}$ $\leadsto$ l'argmin est infini! +\item Convexité de 3. et 4. artificielle? Arbitraire? +\end{itemize} diff --git a/talk/rem1.tex~ b/talk/rem1.tex~ new file mode 100644 index 0000000..b234d5c --- /dev/null +++ b/talk/rem1.tex~ @@ -0,0 +1,51 @@ +\begin{enumerate} +\item +$q_i^{(k)} = \arg\min_{q_i>0} +\left( +q^2 + q. +\left( +\sum_{l \in L } a_{il}w_l^{(k)}- +\lambda_i^{(k)}B_i +\right) +\right)$ + +\item +$ +P_{sh}^{(k)} += +\arg \min_{p > 0} +\left( +v_h^{(k)}.\dfrac{\ln(\sigma^2/D_h)}{\gamma p ^{2/3}} + \lambda_h^{(k)}p +\right) +$ + +\item +$ +R_h^{(k)} += +\arg \min_{r \geq 0 } +\left( +\delta r^2 +-v_h^{(k)}.r - \sum_{i \in N} u_{hi}^{(k)} \eta_{hi} +\right) +$ +\item +$ +x_{hl}^{(k)} = +\arg \min_{x \geq 0} +\left( +\delta.x^2 + x. +\sum_{i \in N} \left( +\lambda_{i}^{(k)}.(c^s_l.a_{il}^{+} + +c^r. a_{il}^{-} )+ + u_{hi}^{(k)} a_{il} +\right) +\right) + $ +\end{enumerate} +\begin{itemize} +\item Toutes les fonctions sont dérivables! +\item $ \leadsto$ le min de 1. 3. 4. se calcule directement! +\item 2. str. décroissante si $\lambda_h^{(k)}$ $\leadsto$ l'argmin est infini! +\item Convexité de 3. et 4. artificielle? Arbitraire? +\end{itemize} diff --git a/talk/reseau.png b/talk/reseau.png new file mode 100644 index 0000000..a932c8f Binary files /dev/null and b/talk/reseau.png differ diff --git a/talk/rhcgraycodes.tex b/talk/rhcgraycodes.tex new file mode 100644 index 0000000..b8e16e9 --- /dev/null +++ b/talk/rhcgraycodes.tex @@ -0,0 +1,27 @@ +\begin{itemize} +\item Lower bound\footnote{T. Feder and C. Subi. +\newblock Nearly tight bounds on the number of hamiltonian circuits of the + hypercube and generalizations. +\newblock {\em Inf. Process. Lett.}, 109(5):267--272, February 2009.} of number of Gray codes in $\Bool^n$: $\left(\frac{n*\log2}{e \log \log n}*(1 - o(1))\right)^{2^n}$ (more than $10^{13}$ when n is 6). + +\item Restriction to balanced codes: the number of edges that modify + the bit $i$ in $\Gamma(f)$ have to be close to each other +\end{itemize} + +\vspace{-1em} +\begin{exampleblock}{Study of previous code} +\vspace{-2em} +\begin{minipage}{0.70\textwidth} +\vspace{-4em} +\begin{itemize} +\item $L^*=000,100,101,001,011,111,110,010$ +\item Its transition sequence: $S=3,1,3,2,3,1,3,2$ +%\item Its transition count function: $\textit{TC}_3(1)= \textit{TC}_3(2)=2$ and $\textit{TC}_3(3)=4$. +\end{itemize} +\end{minipage} +\vspace{-4em} +\begin{minipage}{0.29\textwidth} +\vspace{-1.7em} +\hspace{-2.8cm}\includegraphics[scale=0.5]{iter_f0e} +\end{minipage} +\end{exampleblock} diff --git a/talk/rhcgraycodes.tex.bak b/talk/rhcgraycodes.tex.bak new file mode 100644 index 0000000..080573a --- /dev/null +++ b/talk/rhcgraycodes.tex.bak @@ -0,0 +1,22 @@ +\begin{itemize} +\item Lower bound\footnote{T. Feder and C. Subi. +\newblock Nearly tight bounds on the number of hamiltonian circuits of the + hypercube and generalizations. +\newblock {\em Inf. Process. Lett.}, 109(5):267--272, February 2009.} of numerof Gray codes in $\Bool^n$: $\left(\frac{n*\log2}{e \log \log n}*(1 - o(1))\right)^{2^n}$ (more than $10^{13}$ when n is 6). + +\item Restriction to balanced codes: the number of edges that modify + the bit $i$ in $\Gamma(f)$ have to be close to each other +\end{itemize} + +\begin{exampleblock}{Study of previous code} +\begin{minipage}{0.48\textwidth} +\begin{itemize} +\item Let $L^*=000,100,101,001,011,111,110,010$ +\item Its transition sequence: $S=3,1,3,2,3,1,3,2$ +\item Its transition count function: $\textit{TC}_3(1)= \textit{TC}_3(2)=2$ and $\textit{TC}_3(3)=4$. +\end{itemize} +\end{minipage} +\begin{minipage}{0.48\textwidth} +\includegraphics[scale=0.5]{iter_f0e} +\end{minipage} +\end{exampleblock} diff --git a/talk/rhcgraycodes.tex~ b/talk/rhcgraycodes.tex~ new file mode 100644 index 0000000..a013864 --- /dev/null +++ b/talk/rhcgraycodes.tex~ @@ -0,0 +1,22 @@ +\begin{itemize} +\item Lower bound\footnote{T. Feder and C. Subi. +\newblock Nearly tight bounds on the number of hamiltonian circuits of the + hypercube and generalizations. +\newblock {\em Inf. Process. Lett.}, 109(5):267--272, February 2009.} of number of Gray codes in $\Bool^n$: $\left(\frac{n*\log2}{e \log \log n}*(1 - o(1))\right)^{2^n}$ (more than $10^{13}$ when n is 6). + +\item Restriction to balanced codes: the number of edges that modify + the bit $i$ in $\Gamma(f)$ have to be close to each other +\end{itemize} + +\begin{exampleblock}{Study of previous code} +\begin{minipage}{0.48\textwidth} +\begin{itemize} +\item Let $L^*=000,100,101,001,011,111,110,010$ +\item Its transition sequence: $S=3,1,3,2,3,1,3,2$ +\item Its transition count function: $\textit{TC}_3(1)= \textit{TC}_3(2)=2$ and $\textit{TC}_3(3)=4$. +\end{itemize} +\end{minipage} +\begin{minipage}{0.48\textwidth} +\includegraphics[scale=0.5]{iter_f0e} +\end{minipage} +\end{exampleblock} diff --git a/talk/rhcgraycodesgen.tex b/talk/rhcgraycodesgen.tex new file mode 100644 index 0000000..7a55f38 --- /dev/null +++ b/talk/rhcgraycodesgen.tex @@ -0,0 +1,32 @@ +\begin{itemize} +\item Algorithm~\footnote{ +A.~J.~van Zanten and I.~N. Suparta. +\newblock Totally balanced and exponentially balanced gray codes. + {\em Discrete Analysis and Operational Research}, 11:81--98, 2004.}: +inductive construction of $n$-bits Gray code given a $n-2$-bit Gray code +\item +\emph{ +Let $l$ be an even positive integer. Find +$u_1, u_2, \dots , u_{l-2}, v$ (maybe empty) subsequences of $S_{n-2}$ +such that $S_{n-2}$ is the concatenation of +$ +s_{i_1}, u_0, s_{i_2}, u_1, s_{i_3}, u_2, . . . , s_{i_l-1}, u_{l-2}, s_{i_l}, v +$ +where $i_1 = 1$, $i_2 = 2$, and $u_0 = \emptyset$ (the empty sequence). +} +\item $\leadsto \#_n = \sum_{l'=1}^{2^{n-3}} {2^{n-2}-2 \choose 2l'-2}$ distinct + $u$ subsequences +\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|} +\hline +$n$ & 4& 5 & 6 & 7 & 8 \\ +\hline +$\#_n$ & +1& 31 & 8191 & 5.3e8 & 2.3e18 \\ +\hline +$\#'_n$ & +1 & 15 & 3003 & 1.4e8 & 4.5e17 \\ +\hline +\end{tabular} +\item A first simplification $\leadsto$ $\#'_n$ +\end{itemize} + diff --git a/talk/rhcgraycodesgen.tex.bak b/talk/rhcgraycodesgen.tex.bak new file mode 100644 index 0000000..1447926 --- /dev/null +++ b/talk/rhcgraycodesgen.tex.bak @@ -0,0 +1,32 @@ +\begin{itemize} +\item Algorithm~\footnote{ +A.~J.~van Zanten and I.~N. Suparta. +\newblock Totally balanced and exponentially balanced gray codes. + {\em Discrete Analysis and Operational Research}, 11:81--98, 2004.}: +inductive construction of $n$-bits Gray code given a $n-2$-bit Gray code +\item +\emph{ +Let $l$ be an even positive integer. Find +$u_1, u_2, \dots , u_{l-2}, v$ (maybe empty) subsequences of $S_{n-2}$ +such that $S_{n-2}$ is the concatenation of +$ +s_{i_1}, u_0, s_{i_2}, u_1, s_{i_3}, u_2, . . . , s_{i_l-1}, u_{l-2}, s_{i_l}, v +$ +where $i_1 = 1$, $i_2 = 2$, and $u_0 = \emptyset$ (the empty sequence). +} +\item $\leadsto \#_n = \sum_{l'=1}^{2^{n-3}} {2^{n-2}-2 \choose 2l'-2}$ distincts + $u$ subesquences +\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|} +\hline +$n$ & 4& 5 & 6 & 7 & 8 \\ +\hline +$\#_n$ & +1& 31 & 8191 & 5.3e8 & 2.3e18 \\ +\hline +$\#'_n$ & +1 & 15 & 3003 & 1.4e8 & 4.5e17 \\ +\hline +\end{tabular} +\item A first simplification $\leadsto$ $\#'_n$ +\end{itemize} + diff --git a/talk/rhcgraycodesgen.tex~ b/talk/rhcgraycodesgen.tex~ new file mode 100644 index 0000000..080573a --- /dev/null +++ b/talk/rhcgraycodesgen.tex~ @@ -0,0 +1,22 @@ +\begin{itemize} +\item Lower bound\footnote{T. Feder and C. Subi. +\newblock Nearly tight bounds on the number of hamiltonian circuits of the + hypercube and generalizations. +\newblock {\em Inf. Process. Lett.}, 109(5):267--272, February 2009.} of numerof Gray codes in $\Bool^n$: $\left(\frac{n*\log2}{e \log \log n}*(1 - o(1))\right)^{2^n}$ (more than $10^{13}$ when n is 6). + +\item Restriction to balanced codes: the number of edges that modify + the bit $i$ in $\Gamma(f)$ have to be close to each other +\end{itemize} + +\begin{exampleblock}{Study of previous code} +\begin{minipage}{0.48\textwidth} +\begin{itemize} +\item Let $L^*=000,100,101,001,011,111,110,010$ +\item Its transition sequence: $S=3,1,3,2,3,1,3,2$ +\item Its transition count function: $\textit{TC}_3(1)= \textit{TC}_3(2)=2$ and $\textit{TC}_3(3)=4$. +\end{itemize} +\end{minipage} +\begin{minipage}{0.48\textwidth} +\includegraphics[scale=0.5]{iter_f0e} +\end{minipage} +\end{exampleblock} diff --git a/talk/rhctheory.tex b/talk/rhctheory.tex new file mode 100644 index 0000000..4868308 --- /dev/null +++ b/talk/rhctheory.tex @@ -0,0 +1,23 @@ +\begin{theorem} +The Markov Matrix $M$ resulting from the $n$-cube in +which an Hamiltonian +cycle is removed, is doubly stochastic +\end{theorem} + +\begin{theorem} +The iteration graph issued from the $n$-cube where an Hamiltonian +cycle is removed is strongly connected +\end{theorem} + + +\begin{block}{We are then left} + \begin{itemize} + \item To focus on the generation of Hamiltonian cycles in the + $n$-cube, \textit{i.e.}, + \item To find cyclic Gray codes: + sequences of $2^n$ codewords ($n$-bits strings) + where two successive elements differ in only one bit position and + and where the last codeword + differs in only one bit position from the first one + \end{itemize} +\end{block} diff --git a/talk/rhctheory.tex~ b/talk/rhctheory.tex~ new file mode 100644 index 0000000..0e68eab --- /dev/null +++ b/talk/rhctheory.tex~ @@ -0,0 +1,21 @@ +\begin{theorem} +The Markov Matrix $M$ resulting from the $n$-cube in +which an Hamiltonian +cycle is removed, is doubly stochastic. +\end{theorem} + +\begin{theorem} +The iteration graph issued from the $n$-cube where an Hamiltonian +cycle is removed is strongly connected. +\end{theorem} + + +\begin{block}{We are then left} +\begin{itemize} +\item To focus on the generation of Hamiltonian cycles in the +$n$-cube, \textit{i.e.}, +\item To find cyclic Gray codes: + sequences of $2^n$ codewords ($n$-bits strings) + where two successive elements differ in only one bit position and + and where the last codeword + differs in only one bit position from the first one. diff --git a/talk/sense.jpg b/talk/sense.jpg new file mode 100644 index 0000000..697d443 Binary files /dev/null and b/talk/sense.jpg differ diff --git a/talk/texput.log b/talk/texput.log new file mode 100644 index 0000000..e73dd84 --- /dev/null +++ b/talk/texput.log @@ -0,0 +1,21 @@ +This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) (format=pdflatex 2013.4.28) 30 MAY 2013 13:57 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**paper.tex + +! Emergency stop. +<*> paper.tex + +End of file on the terminal! + + +Here is how much of TeX's memory you used: + 3 strings out of 495059 + 106 string characters out of 3182030 + 45057 words of memory out of 3000000 + 3288 multiletter control sequences out of 15000+200000 + 3640 words of font info for 14 fonts, out of 3000000 for 9000 + 14 hyphenation exceptions out of 8191 + 0i,0n,0p,1b,6s stack positions out of 5000i,500n,10000p,200000b,50000s +! ==> Fatal error occurred, no output PDF file produced! diff --git a/talk/thanks.tex b/talk/thanks.tex new file mode 100644 index 0000000..b75b658 --- /dev/null +++ b/talk/thanks.tex @@ -0,0 +1 @@ +:-) \ No newline at end of file diff --git a/talk/wsn.png b/talk/wsn.png new file mode 100644 index 0000000..765a04f Binary files /dev/null and b/talk/wsn.png differ