{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Prise en main de Sagemath\n",
"\n",
"Sagemath est une interface (en Python) pour une vaste collection de librairies et de logiciels mathématiques. \n",
"Comme on peut le voir dans la documentation\n",
"[https://doc.sagemath.org/html/en/reference/index.html](https://doc.sagemath.org/html/en/reference/index.html),\n",
"une large partie des concepts mathématiques sont manipulables dans Sagemath.\n",
"Nous allons nous concentrer sur les modules les plus utiles pour la réalisation de vos projets.\n",
"\n",
"#### Partie 1\n",
"- [ ] [Les trucs utiles](#utils)\n",
"- [ ] [Les nombres](#numbers)\n",
" - [ ] [Exercice 1](#exo-1)\n",
" - [ ] [Exercice 2](#exo-2)\n",
"- [ ] [L'algèbre linéaire](#linear-algebra)\n",
" - [ ] [Exercice 3](#exo-3)\n",
" - [ ] [Exercice 4](#exo-4)\n",
" \n",
"#### Partie 2\n",
"- [ ] [L'aléatoire](#random)\n",
" - [ ] [Exercice 5](#exo-5)\n",
" - [ ] [Exercice 6](#exo-6)\n",
"- [ ] [Les arbres](#trees)\n",
" - [ ] [Exercice 7](#exo-7)\n",
"- [ ] [Les graphes](#graphe)\n",
" - [ ] [Exercice 8](#exo-8)\n",
"- [ ] [L'anneau symbolique](#symbolic)\n",
" - [ ] [Exercice 9](#exo-9)\n",
" \n",
"#### Bonus \n",
"- [ ] [Exercice 4' : récurrences à coefficients constants](#exo-4p)\n",
"- [ ] [Exercice 4'' : récurrences à coefficients polynomiaux](#exo-4pp)\n",
"- [ ] [Exercice 7' : Profil d'arbres](#exo-trees)\n",
"- [ ] [Exercice : Fermeture transitive](#exo-transitive-closure)\n",
"- [ ] [Exercice : Équations différentielles](#exo-eq-diff)\n",
"- [ ] [Les nombres complexes](#complex)\n",
" - [ ] [Exercice : interprétation géométrique des nombres complexes](#exo-complex-geom)\n",
" - [ ] [Exercice : Ensemble de Mandelbrot)](#exo-mandelbrot) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Les truc utiles\n",
"\n",
"### La fonction ```show```\n",
"\n",
"La fonction ```show``` peut-être invoquée sur n'importe quel objet Sagemath.\n",
"Elle permet de visualiser l'objet de la manière la plus adaptée (exemples ci-dessous)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f = sqrt(x) - 3*x**2 + 14/7 - log(pi/2)\n",
"show(f)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"show(graphs.PetersenGraph())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"show(random_matrix(ZZ,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### La fonction ```latex```\n",
"\n",
"La fonction ```latex``` peut-être invoquée sur n'importe quel objet Sagemath.\n",
"Elle génère le code Latex permettant de le visualiser (exemples ci-dessous)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"latex(f)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"latex(graphs.PetersenGraph())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"latex(random_matrix(ZZ,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Les nombres\n",
"\n",
"De nombreux ensembles de nombres sont implémentées dans Sagemath.\n",
"Dans le cadre de ce cours nous nous intéresserons qu'aux suivants :\n",
"+ ```ZZ``` les entiers relatifs\n",
"+ ```QQ``` les rationnels\n",
"+ ```RDF``` les ```double```\n",
"+ ```RealField``` les flottants multi-précisions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Représentation binaire des entiers\n",
"\n",
"Comme vous le savez (en tous cas je l'espère) nos machines manipulent exclusivement des données binaires.\n",
"Les entiers décimaux (en base 10) que nous connaissons sont donc généralement représentés en binaire\n",
"(en base 2) dans nos machines.\n",
"\n",
"#### Entiers en base 2\n",
"L'écriture $a_n a_{n-1} \\dots a_1 a_0$ en base 2 (donc les $a_i$ valent $0$ ou $1$) d'un entier $N$\n",
"vérifie\n",
"$$\n",
"N = \\sum_{i=0}^n a_i 2^i\n",
"$$\n",
"Plus généralement, l'écriture en base $b$ s'obtient en remplaçant $2$ par $b$ et les valeurs des $a_i$\n",
"comprises entre $0$ et $b-1$.\n",
"\n",
"__Disclaimer :__ Je vais écrire ce qui suit en gros parce que :\n",
"+ c'est important pour votre vie d'informaticien\n",
"+ parce que j'en ai marre de voir des gens galérer avec les logarithmes\n",
"+ parce que vos profs de maths ne vous l'ont sûrement jamais dit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Le logarithme $\\log_b$ c'est rien d'autre qu'une fonction qui mesure la taille de l'écriture d'un nombre en base $b$.\n",
"\n",
"Maintenant que c'est dit, quand on vous posera la question \"Qu'est-ce que la fonction logarithme ?\" vous \n",
"ne répondrez plus \"la fonction réciproque de l'exponentielle\" mais bien \"La fonction qui mesure la taille\n",
"d'un nombre\".\n",
"\n",
"Je vais quand même vous prouver ce commandement.\n",
"Nous allons démontrer par récurrence que $\\lfloor \\log_2 N \\rfloor + 1$ est le nombre de bit nécessaire \n",
"pour représenter $N > 0$ en base 2.\n",
"\n",
"On remarque que pour représenter $0$ il nous faut quand même au moins un chiffre : le zéro.\n",
"\n",
"Soit $N = 1$, alors $N = 1 \\cdot 2^0$ et $\\lfloor \\log_2 N \\rfloor + 1 = 1$ donc la propriété est vraie.\n",
"\n",
"Supposons donc par récurrence que $\\lfloor \\log_2 N \\rfloor + 1$ est la taille en bit de $N \\geq 1$.\n",
"On distingue deux cas :\n",
"\n",
"+ $N$ est de la forme $2^k - 1$, alors $\\log_2 (N+1) = \\log_2 2^k = k$ et l'hypothèse de récurrence est \n",
" vérifiée.\n",
" \n",
"+ $N$ n'est pas de la forme $2^k - 1$, alors $N+1$ est de la même taille $N$ :\n",
" $\\lfloor \\log_2 (N+1) \\rfloor + 1 = \\lfloor \\log_2 N\\left(1+\\frac{1}{N}\\right) \\rfloor + 1$\n",
" or $N > 1$ (car $n\\geq 1$ et $N$ n'est pas de la forme $2^k-1$) donc $\\left(1+\\frac{1}{N}\\right) < 2$ et \n",
" donc $\\lfloor \\log_2 N\\left(1+\\frac{1} {N}\\right) \\rfloor = \\lfloor \\log_2 N \\rfloor \\Rightarrow$ \n",
" l'hypothèse de récurrence est vérifiée."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Représentation en machine\n",
"\n",
"Jusqu'à maintenant on parlait de représentation binaire, en un sens cela est purement théorique.\n",
"Dans votre machine, les nombres sont stockés en binaire mais aussi avec une précision limitée, par exemple\n",
"`int` sur 32/64 bits en C par exemple.\n",
"En Python, par défaut, les entiers sont multiprécisions et grossissent selon le besoin.\n",
"\n",
"De plus, il faut aussi représenter les nombres négatifs. Sur le papier on ajoute un '-' devant le nombre\n",
"mais en machine on utilise la [représentation en complément à 2](https://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Les entiers\n",
"\n",
"Les entiers Sagemath sont implémentées par dessus la librairie GNU GMP.\n",
"Ainsi, ils peuvent être aussi grands que la mémoire de l'ordinateur le permet.\n",
"\n",
"Les entiers vivent dans l'anneau ```ZZ```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ZZ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n = -42\n",
"type(n)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n = 2**2048\n",
"n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"45 in ZZ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"33.2 in ZZ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"gcd(36,24)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Les rationnels\n",
"\n",
"Comme les entiers, ils sont implémentés par dessus GNU GMP.\n",
"\n",
"Ils vivent dans l'anneau ```QQ```."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"q = 3/17\n",
"type(q)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"q.numerator()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"q.denominator()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"34/4"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"5/2 in QQ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"2.5 in QQ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"QQ(54.5473243572)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sqrt(2) in QQ"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi in QQ"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### La représentation binaire des flottants\n",
"\n",
"Pour les nombres à virgules, la représentation en binaire fonctionne de la même manière :\n",
"$$\n",
"2.625 = 1 \\cdot 2^1 + 0 \\cdot 2^0 + 1 \\cdot 2^{-1} + 0 \\cdot 2^{-2} + 1 \\cdot 2^{-3} = 10.101_2\n",
"$$\n",
"\n",
"Une manière de représenter les nombres à virgules seraient de représenter indépendamment partie entière\n",
"et partie flottante, mais alors il faudrait aussi stocker la taille des représentations de chaque morceau.\n",
"\n",
"Un autre choix est donc fait de manière standardisé : la norme (IEEE-754)[https://fr.wikipedia.org/wiki/IEEE_754].\n",
"Sans rentrer dans les détails (nombreux et retors) de cette norme, l'idée de cette représentation\n",
"est similaire à celle de la notation scientifique.\n",
"On représente un nombre comme un triplet : signe, ordre de grandeur, partie flottante.\n",
"Plus précisément voici l'exemple des `float` C sur 32 bits :\n",
"$$\n",
"n = s \\cdot 2^e \\cdot m\n",
"$$\n",
"où $s$ est le bit de signe, $e$ est l'exposant sur 8 bits (compris entre $-126$ et $127$) et $m$ la *mantisse* sur 24 bits.\n",
"Quand on parle de la précision d'un flottant on parle en fait de la précision de sa mantisse (vu comme un\n",
"entier).\n",
"\n",
"Il faut donc retenir que si l'on ajoute un énorme flottant (avec exposant $100$) à un tout petit flottant\n",
"(exposant $-100$) alors le petit flottant est \"effacé\" : il n'apparaîtra pas dans la mantisse du\n",
"résultat (à part si elle fait plus de 200 bits de précision). C'est ce qu'on appelle une erreur d'arrondi.\n",
"\n",
"C'est le moment d'un autre message en gros\n",
"\n",
"# Attention lorsque l'on compare des flottants : les erreurs d'arrondi ne sont jamais loin\n",
"\n",
"C'est pour cela que généralement on compare à $\\epsilon$ près : au lieu de `f1 == f2` on pourra\n",
"préférer `abs(f1 -f2) < 1e-6` par exemple.\n",
"On peut s'attendre à une précision de l'ordre de 7 décimales pour des flottants 32 bits (`float`) et de \n",
"16 décimales pour des flottants 64 bits (`double`)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Les ```doubles```\n",
"\n",
"Ils sont implémentées par dessus les ```double``` du langage C.\n",
"\n",
"Ils vivent dans l'anneau ```RealDoubleField``` abrégé ```RDF```.\n",
"\n",
"Leur précision est fixe (53 bits, environ 16 décimales)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(14.3).sign_mantissa_exponent()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RDF(2**-49*8050184333924762)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"0.1 + 0.2 == 0.3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"0.1.sign_mantissa_exponent()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"bin(7205759403792794)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"0.1 + 0.2 - 0.3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"0.1 - 0.3 + 0.2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"my_pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482\n",
"RDF(my_pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RDF(17/2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"17/2 in RDF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi in RDF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ceil(pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"floor(pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sqrt(2) in RDF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RDF(1/3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RDF(1e16+1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RDF(1e-16+1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(1e-16).n().sign_mantissa_exponent()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(8112963841460668/2**54).n()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(1).n().sign_mantissa_exponent()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Les flottants multi-précisions\n",
"\n",
"Ils sont implémentées à l'aide de la libraire GNU MPFR.\n",
"Comme leur nom l'indique ils permettent de faire des calculs numériques avec une précision arbitraire.\n",
"\n",
"Par défaut, les flottants Sagemath vivent dans un ```RealField``` a 53 bits de précision nommé ```RR```.\n",
"\n",
"De plus, chaque \"nombre\" de sage peut être évalué dans ```RealField``` grâce à sa méthode \n",
"```numerical_approx``` (abrégée ```n```).\n",
"\n",
"__Attention__ : ```RR``` est différent de ```RDF``` bien qu'il ai la même précision"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RR"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(17/2.)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(RDF(17/2.))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RR(pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.numerical_approx()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.n()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(pi.n())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"c = RealField(100)(0)\n",
"for i in range(100):\n",
" c += 0.01\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Précision binaire <-> décimale\n",
"\n",
"On rappelle que le stockage d'un nombre $n$ en base $b$ nécéssite $\\log_b(n)$.\n",
"On a donc la relation suivante entre précision décimale $prec_{10}$ et précision binaire $prec_2$ :\n",
"$$\n",
"prec_{10} = \\left\\lceil\\frac{prec_2}{\\log_{2} 10}\\right\\rceil \n",
"\\qquad prec_2 = \\left\\lceil\\frac{prec_{10}}{\\log_{10} 2}\\right\\rceil\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"RR300 = RealField(300) # avec 300 bits de précision\n",
"RR300(pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.n(300)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(300 / log(10,2)).n()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.n(digits=91) # soit environ 91 décimales de précision"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.n(digits=29)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(29/log(2,10)).n()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi.n(97)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"### Exercice 1\n",
"\n",
"La suite $u_{n+1} = 1 + \\frac{1}{u_n}$ avec $u_1 = 1$ a pour limite le nombe d'or $\\phi = \\frac{1+\\sqrt{5}}{2}$.\n",
"Le but de cet exercice est de calculer $\\phi$ avec une précision variable.\n",
"\n",
"Pour obtenir la limite, à une précision $\\epsilon$ donnée, d'une suite convergente comme celle-ci, on peut \n",
"l'itérer jusqu'à ce que deux termes consécutifs soient à distance $\\epsilon$, c'est-à-dire \n",
"$|u_{n+1} - u_n| < \\epsilon$.\n",
"\n",
"Avant de se lancer dans le calcul il faut donc d'abord connaître sa précision : la taille de [mantisse](#iee-754)\n",
"nécessaire à stocker $\\epsilon$.\n",
"\n",
"__Attention :__ c'est bien la taille de la mantisse qui nous intéresse et non l'exposant. On veut \n",
"obtenir un nombre correspondant à $|u_{n+1} - u_n|$ et, comme la suite est convergente, les exposants de $u_n$ et \n",
"$u_{n+1}$ sont les mêmes. On ne peut donc comparer deux termes sucessifs que par leur mantisse.\n",
"\n",
"On vous donne donc la définition de la fonction `precision_of(epsilon)` qui renvoie la précision en bits nécessaire\n",
"pour différencier deux mantisses proches à `epsilon` prêt.\n",
"\n",
"__Indication :__ Rappelez vous que $\\log_2$ donne (presque) la taille de la représentation binaire d'un nombre !"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def precision_of(epsilon):\n",
" return ceil(abs(log(epsilon,2))) + 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"precision_of(1e-3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"precision_of(1e-16)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"precision_of(1e-20)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(2+1e-20).n().sign_mantissa_exponent()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(2+2e-20).n().sign_mantissa_exponent()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On ne voit pas de différences entre les deux nombres."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(2+(1e-20).n(67)).n(67).sign_mantissa_exponent()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(2+(2e-20).n(67)).n(67).sign_mantissa_exponent()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La mantisse est juste assez grande pour observer une différence sur la dernière décimale de la mantisse."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Donnez la définition de la fonction `numeric_phi(epsilon)` qui renvoie un tuple `(phi, n)` où `phi`\n",
"est le nombre d'or à `epsilon` près et `n` est le rang de la suite permettant d'obtenir ce `phi`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def numeric_phi(epsilon):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"phi, n = numeric_phi(1e-6)\n",
"assert(isinstance(phi, sage.rings.real_mpfr.RealNumber))\n",
"assert(abs((1+sqrt(5))/2-phi).n(20) < 1e-6)\n",
"assert(n == 17)\n",
"\n",
"phi, n = numeric_phi(1e-30)\n",
"assert(isinstance(phi, sage.rings.real_mpfr.RealNumber))\n",
"assert(abs((1+sqrt(5))/2-phi).n(100) < 1e-30)\n",
"assert(n == 74)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut observer que la vitesse de convergence de la suite est linéaire en traçant la courbe de la précision en \n",
"fonction du nombre d'itérations :"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"p = list()\n",
"for i in range(1,101):\n",
" eps = 10**-i\n",
" p.append((numeric_phi(eps)[1], precision_of(eps)))\n",
"points(p, axes_labels=[\"nombres d'itérations\", \"précision\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 2\n",
"\n",
"Le but de cet exercice est d'implémenter la \n",
"[méthode de la sécante](https://fr.wikipedia.org/wiki/M%C3%A9thode_de_la_s%C3%A9cante)\n",
"qui permet de calculer les zéros d'une fonction.\n",
"\n",
"Le principe de la méthode est de partir d'un point $x_0$ relativement proche d'un zéro et d'itérer la suite \n",
"$(x_k)_{k}$ ci-dessous jusqu'à obtenir un point assez proche de celui qu'on recherche :\n",
"$$\n",
"x_{k+1} = x_k - f(x_k) \\cdot \\frac{x_k-x_{k-1}}{f(x_k)-f(x_{k-1})}\n",
"$$\n",
"\n",
"Donnez la définition de la fonction ```find_zero(f,x0,x1,epsilon)``` qui prend en argument une fonction et \n",
"trois flottants et qui renvoie un nombre $x_k$ tel que $|x_k - x_{k-1}| < \\epsilon$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def find_zero(f, x0, x1, epsilon):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def sqrt_alpha(alpha):\n",
" f = lambda x : x**2 - alpha\n",
" return f\n",
"\n",
"eps = 1e-100\n",
"assert(abs(find_zero(sqrt_alpha(2), 1, 1.1, eps) - sqrt(2)) < eps)\n",
"assert(abs(find_zero(sqrt_alpha(3), 1, 1.4, eps) - sqrt(3)) < eps)\n",
"assert(abs(find_zero(sqrt_alpha(42), 6, 7, eps) - sqrt(42)) < eps)\n",
"assert(abs(find_zero(cos, 1, 1.5, eps) - pi/2) < eps)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## L'algèbre linéaire\n",
"\n",
"Sagemath implémente matrices, vecteurs et la plupart des opérations qui leur sont liés\n",
"(produit matrice-vecteur, matrice-matrice, décompositions LU, SVD, forme normale de Jordan,\n",
"calcul de valeurs et vecteurs propres, etc).\n",
"\n",
"Dans de nombreux cas, un *backend* spécifique est utilisé."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"v = vector(range(5))\n",
"v"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(v)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"v = vector([RDF(1.2), RDF(2.7)])\n",
"type(v)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"v = vector(1/2, 3/4)\n",
"type(v)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"QQ**3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(QQ**3).random_element()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"zero_vector(ZZ, 17)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"zero_vector(RR, 17)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m = matrix([[1,2],[3,4]])\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.determinant()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(m)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m = matrix(3,3,range(9))\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m = matrix(3,3,lambda i,j: i*3+j)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.determinant()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m[1,2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.row(1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.column(1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.set_row(1,[10,11,12])\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.set_column(2,[20,21,22])\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m * vector([1,2,3])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m*m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m**2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m.augment(vector([1,2,3]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mv = m.augment(vector([1,2,3]), subdivide=True)\n",
"mv"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mv.row(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mv.ncols()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mv.columns()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 3\n",
"Le but de cet exercice est d'implémenter la méthode du pivot de Gauss, permettant de résoudre des systèmes d'équations linéaires tels que :\n",
"$$\n",
"\\left\\{\n",
"\\begin{array}{ll}\n",
"a_{0,0} \\,\\cdot\\, x_0 + a_{0,1} \\,\\cdot\\, x_1 + \\dots + a_{0,n} \\,\\cdot\\, x_n & = b_0\\\\\n",
"a_{1,0} \\,\\cdot\\, x_0 + a_{1,1} \\,\\cdot\\, x_1 + \\dots + a_{1,n} \\,\\cdot\\, x_n & = b_1\\\\\n",
"\\dots & \\\\\n",
"a_{m,0} \\,\\cdot\\, x_0 + a_{m,1} \\,\\cdot\\, x_1 + \\dots + a_{m,n} \\,\\cdot\\, x_n & = b_m\\\\\n",
"\\end{array}\n",
"\\right.\n",
"$$\n",
"\n",
"Pour résoudre ce système, on peut utiliser la matrice augmentée associée :\n",
"$\n",
"\\left(\n",
"\\begin{array}{llll|l}\n",
"a_{0,0} & a_{0,1} &\\ldots & a_{0,n} & b_0\\\\\n",
"a_{1,0} & a_{1,1} &\\ldots & a_{1,n} & b_1\\\\\n",
"\\ldots\\\\\n",
"a_{m,0} & a_{m,1} &\\ldots & a_{m,n} & b_m\\\\\n",
"\\end{array}\n",
"\\right)\n",
"$\n",
"\n",
"On transforme cette matrice en une matrice échelonnée réduite en faisant des opérations simples sur cette matrice parmi :\n",
"+ échanger deux lignes ($L_i\\leftrightarrow L_j$)\n",
"+ multiplier une ligne par un scalaire non nul ($L_i=\\lambda L_i$)\n",
"+ additionner à une ligne un multiple d'une autre ligne ($L_i=L_i+\\lambda L_j$)\n",
"\n",
"Une matrice est échelonnée-réduite quand :\n",
"+ la première valeur non nulle d'une ligne est 1 \n",
"(sauf si elle est sur la dernière colonne où ça n'a pas d'importance)\n",
"+ la première valeur non nulle d'une ligne est la seule non nulle de sa colonne\n",
"+ les lignes sont ordonnées de manière croissante vis à vis de la position de leur première valeur non nulle\n",
"+ si il y a des lignes de 0 elles sont à la fin"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Opérations élémentaires\n",
"Donner la définition des quatre fonctions suivantes :\n",
"+ `exchange(M, l1, l2)` : modifie la matrice `M` en échangeant les lignes numéro `l1` et numéro `l2`\n",
"+ `scale(M, l, coef)` : modifie la matrice `M` en multipliant la ligne numéro `l` par le nombre `coef`\n",
"+ `comb(M, l_dest, coef, l_pivot)` : modifie la matrice `M` en ajoutant `coef` fois la ligne numéro `l_pivot` à la ligne numéro `l_dest`.\n",
"(i.e. : $l_{dest}=l_{dest}+coef\\times l_{pivot}$)\n",
"+ `detect_pivot(M, ligne, colonne)` : dans la colonne numéro `colonne`, cette fonction détecte la plus grande valeur (en valeur absolue) en ne tenant pas compte des valeurs avant la ligne numéro `ligne`. Elle renvoie alors la valeur correspondante (éventuellement négative) et le numéro de la ligne correspondante. \n",
"(en cas de difficulté à comprendre les fonctions, n'hésitez pas à étudier les rendus attendus par les tests \"assert\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def exchange(M,l1,l2):\n",
" pass\n",
"\n",
"def scale(M,l,coef):\n",
" pass\n",
"\n",
"def comb(M,l_dest,coef,l_pivot):\n",
" pass\n",
"\n",
"def detect_pivot(M,ligne,colonne):\n",
" pass\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"M_test=matrix(QQ,3,4,[1,2,3,4,5,6,7,8,9,10,11,12])\n",
"exchange(M_test,1,2)\n",
"assert(M_test==matrix(QQ,3,4,[1,2,3,4,9,10,11,12,5,6,7,8]))\n",
"M=matrix(QQ,3,4,[1,2,3,4,9,10,11,12,5,6,7,8])\n",
"scale(M_test,1,2)\n",
"assert(M_test==matrix(QQ,3,4,[1,2,3,4,18,20,22,24,5,6,7,8]))\n",
"M=matrix(QQ,3,4,[1,2,3,4,18,20,22,24,5,6,7,8])\n",
"comb(M_test,1,-9,0)\n",
"assert(M_test==matrix(QQ,3,4,[1,2,3,4,9,2,-5,-12,5,6,7,8]))\n",
"matrix(QQ,3,4,[1,2,3,4,9,2,-5,-12,5,6,7,8])\n",
"assert(detect_pivot(M_test,0,0)==(9,1))\n",
"assert(detect_pivot(M_test,0,1)==(6,2))\n",
"assert(detect_pivot(M_test,0,3)==(-12,1))\n",
"assert(detect_pivot(M_test,2,0)==(5,2))\n",
"assert(detect_pivot(M_test,2,3)==(8,2))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Calcul de la forme échelonnée réduite\n",
"Donner la définition de la fonction `echelon_form(M)` qui prend en entrée une matrice `M` et renvoie une matrice échelonnée réduite.\n",
"\n",
"__Indication :__ On \"scan\" les colonnes pour trouver un pivot dans chacune (si il existe)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def echelon_form(M):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#les 3 premiers tests correspondent aux systemes avec unique solution\n",
"m = matrix(QQ,2,3,[-2,7,-9,3,-8,17])\n",
"assert(echelon_form(m)==m.echelon_form())\n",
"\n",
"m = matrix(QQ,3,4,[1,3,2,3,2,-1,3,1,1,1,2,1])\n",
"assert(echelon_form(m)==m.echelon_form())\n",
"\n",
"m = matrix(QQ,4,5,[1,2,1,4,13,2,4,0,3,28,4,8,2,1,20,-3,-7,3,2,6])\n",
"assert(echelon_form(m)==m.echelon_form())\n",
"\n",
"#les deux prochaines des systemes avec infinites de solutions\n",
"\n",
"m = matrix(QQ,3,4,[1,2,3,4,0,0,5,6,0,0,0,0])\n",
"assert(echelon_form(m)==m.echelon_form())\n",
"\n",
"m = matrix(QQ,3,5,[2,-3,1,-6,-7,4,1,2,9,-7,3,1,1,8,-8])\n",
"assert(echelon_form(m)==m.echelon_form())\n",
"\n",
"#systeme avec pas de solution : les lignes de 0 doivent etre a la fin\n",
"\n",
"m = matrix(QQ,4,5,[1,5,0,6,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,1])\n",
"assert(echelon_form(m)==m.echelon_form())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 4\n",
"\n",
"Soit la suite $(u_n)_{n\\in\\mathbb{N}}$ vérifiant :\n",
"$$\n",
"u_{n+3} = a_0\\cdot u_n + a_1\\cdot u_{n+1} + a_2 \\cdot u_{n+2}\n",
"$$\n",
"et dont les premiers termes sont :\n",
"```\n",
"[0, 1, 2, 67, 6419, 275737, 11715644, 510728260, 22254827915, 968653620526, 42163660125677, 1835391932512177, 79894609468469039, 3477805494020331232, 151388613630301750184, 6589935562930086709705, 286859421404088497407730, 12486969959402573485979251, 543556903644541167491813627, 23660992898250363327461254537]\n",
"```\n",
"\n",
"Retrouvez les $a_i$ puis calculer $u_{1000}$ et $u_{2^{20}}$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def u(n):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(u(1000) == 10592807462140798496731380350739309638928920269211738139408246156175090116724739707239099521596229084330552726741530007849740622944991999180947751587024025319705963914854206723177674212108590237047996631383152819839780541223047900235843586267117800621535828362039715444284448815865102502201486507750928636134801630993042552816750826382585976207768601092968638197595772380029825210098697033919431209482225405890331194676249802408646825794919739767392837954369308676736376968310406305040867156066115957484013330753678532879527394691107063919981189493588984054108458632307523415890047496231756033539041571142786857047218084820760844891591033765868503283867503740253523412210170841980039251031422581875035271832200195059409416403992406532517575700074449735228586343642860626818612018696502917195569085246065428705646645994713915394652870814505170524433003647126665742599356753974067817567490730551393981401490172700228815928590207380310735378358763259033529357776842839082933492838795801799934794880280575356329060563443240022829542183007751654808643834003048660248975893556543903126114505668467426243972668999316728212780692780893141085327981050951877451045522611164599839399169433561181505080172838047125266891177562418826141235774770944731386906793206254964191502821154376929265696823892449545000915869032802423588122486031889574932747672310729293237974339700066040710155710508925995195583176670084347663524108067878309675928885344416547414207187743302581399326247986842570389268776238153385248932812936373365792716235144368817472017192305068148979225728338905230090185911305969837119752034765190425180745002523102265768611290398938792500)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Si votre machine galère ici, ne lancez pas le prochain test !\n",
"assert(u(2**15) == 1097942467229208084568833484100001933943070697279248968881607570220894033790384817934427656596044367245714401047454141680752458532053136036680309350514169114355635045545021442166043964218240317690969251346499955738503586114107067849876267574346720533202490286350948367871953981335070314852652943921559644324654807846287599418516529449354798585737962759826874944760455236162490665858885241754621248083067021533325775896089443291841857537227356566832958294429674140654758685966709302418563620049596112367006679709438921559666030608658397282904624352654278282194740484331207929815901534011915918543782958675710634695371341884109686979837309103618802377281158863980230274847550094984872163628066739769118086133950579465787346066724583657945529871970387496341715555252213693078973189514800750390839840130682926118355456240796001649791146043892543240451990453507135491717493827415046943886684312764167835375128752412803834259219633632508843052352553267612491383935053062481737540771302664750646290639812413884759717678288054576371146341107089678128089048057764863191845804544825702646559360657137988248723204235975643344237762858786182600430485009866239780227798290599079299129138221983862635178782413294472216251819442621869392238472677071270389575242798750391738903530083279311871596374288465545055315577504877992904836873679109117052909869257112033472156675898884975562860728099222136175749346083352475308301043121983757322823339531356322061641102447091155048091627656265270905493714370055530906434348486012028340803185205292702786932615341807898807711646200816215400303837415937531424205843528096583638139759343582494087924009797321961645134307668757101870338256689641771586570487511925195404405725645395124929051433888458003099027923442688255706100967280051371278823377399048662347136916120453987657850072717660645359757191790665868282532478936814763004510159054379606192674667581245452826728207507410034642507202294456720301978322376310739034979897531904377700439910262202181486764626566237180346039931717163203826924528526688336306358966663851512133437890943967498754672639086436984510642658728676262088074636644477128762053725497599141650575650079921911608236208422699321815933362361041004493497995625642066164437376268950781978748759293896042405762039442882340648059000272007782300213041578318155988044002986338831629506608474923664724416786927467980630938576910473961871423140947176202968647253498136015468753772692428962486476379537725810476442308819131005832308797733521757723636316938810947905717141168532394716584459736729341995477387203272016981881060246320502723439502821226400324769837705668224733767186820004339656568691299013918639811529758995252970435404011993775535011195442014085772183619874782730318376686555206368347224823695956296708985235340008558208011746764654141596616142535525716377728061860582954748360029509179989732765216591493543262062088014651662660488521377932030693232488884149913383680032966086690386594579725042767875097608676960931552463871123445421784333453302319859530801356739922269543418356175533553808707303393142782584562007008755684160788365223751229042382617336418539638116828290025334549151466571889457949596967412736589233942752211795277188147287823557335547163553970862572509157346788523704887122719247837637985451134463279004045523277622490648509334535379351430959491161227380973431358964809409558687462425305282496316942855872225090638960382891279104238441159058777420428654719468521852901845137813459693748750094515398280755971486889008142869412287503462461542910791340037924211094971303855010073807624467896613446752028215398197795334406649277862389028916746183679391541695527070536951784001726960878105388046080372451177819587133983772381325654876177792747443861774685544589648645852650296171221149478763039274062772177793008296962342564703240568473696618392486242422733638121116391214557614759099699710467728048226860998366870077389794382057544723039442053694707613609901464794947838031580784096937865257888430101128793637323050649160357276309274208519800049515959333439690746026359128255947139674094460336233907614439431622772110735588246105030520867525309491717145358096722585151649225708373154067738371568735768919544897435413737561365644377163898859507865796501753298571582381281737815231683800362651930658610869436027170745650773549938121809635031082472304847353411047525013257948030507867162192845655122497282250495169379696695543183025305415644610061045929888915832498678895670527452940136105138103347361411597592464795698739348373555628031159824925527935682908762678801374708099841073883559107071560706775714468045426789296810033567580110019544790816555225762613468371652850097705327661974018052779504743147049794245620884616365293631889129702542248683394227726933288279239032460839780521469469501440431710400252685239239210145873414128002208289624518977639492130031962772459634764598950592119672554697663577709471740813150477404192379606899130044821658042640113133904162531300704227716769283052966950790222384083832086284311372178084145230721550774294423271754524653082106549839172828066734180350267055274421444213619162523709519534579295999688665386795016092528774824134155565249112251495471145786694022280212435121214328071339792384994855767662904218851329107238795981408738835036611808397165372855530696741637501730594177936149346326791003485651728080113089240518106502248311486247546398127612396780428421200530906144265122878969733688005781968259599561626064653077222747344161267544803495288602148605415009699271376268979608349328342108528614547839582228470999196683696962440377485840508921392637484643123898066354148255755047211433746522334564152543251673539774264939602610325788370162447311620980343617543018349323566017872937576937824498220427524330757009935089654984801091662675580454414957016031492705178160376299840407743227306343541934863163679666620062059877236051716240092966724617852956458976301755095965445545713541363206906970112101150361019325569095789645183108417417710822873674560371404260939192225617447101831658134734299933342807585545608219114518559104911562167105400552818512661595809930530956647245691691337181802556543682452981545834669905303396483123886874460248766310700699767598872665634326625672170326203144265294480869917748919169415764522946644412820744849709390199203987488722638834337700276205191867022037353254574738235292577973064628487296881696807400851942827098135964965252316252262595709590410928066912689637339515703687085218236546835393791133807117456605708519606665234237825245747705628370173194409032064661529857297538910645959747451603435263641845054418582817778671489076127528129244460530013547984128570823494525570407127609821333920157707320369261179837128780448440199141794981982212886412331817948361265107990666411905013642962275227715251518702793830269537440541016376370459702566588751095959651956922142258201292530143281987142293460911689337563417300526248759564623992051143078496209997919799308689400859434491894430687305579825346952318263349509579478805908486336220617549871918511859440997328628103530740758464940432568536146512681240212180078577216861069934313661231289439773357173687621591694528985786149224058052347581200228490403077746381416045692589009446606415471772056543880297930223120133193318383800135692854682807014636757759478066324722782614634629296915111027523603767017170401199562031739612656339179466996618718705508531717052287939985829415615025866883602941924929568390513492595028906876395732792490134860217330917491291116701900104745858388963301359536821928839865994582991989851978819636580362784323670082764421881506017162835630366989694015189458569088800749904013093031553601965236627361918714565715863160709387303657810770222116667062878248328368324148410222300900489662050661695923174186346557391208776915090811655105978877569703148036613812794242464159657259152291485939999288145402184890672320762831360663709878364217783795803396581508051692133532629705923791651262618429287306735834604195465844684726902394914227721732516138737320938029411752037219266759975478543125242165208368720922342910239461086118103033418114107941568263632355428871758125456622340471089810328726507496708180740159925009860604800179048627207626722404751277129075626703825245490511668134526281831981697597703268125945704072049672514176444622768814354003941655813186762400398505448524930929078589031553789238145823755367248903072913838037190305661519500674693494848792075653706843842693396615498964353727441081983950877943788556789841090039619132658231124205455008081202527620785616119650637903057108030410349441903822721671126989037728034988056027439864932604377765918721538116405438072971143956782868961627965756648771510771914829877195350701537408421086626109278107544156876429767175512598291267493671746031937451076306942678111793431660621091123155768272890150039770720856203061425561377065108372457610015579033854294220166903935129627130667042364175278185171779430334335341061695869915477541722904246470822871236481236099964944476088965396361447748753827093831667597314091472775324863112777255912120068582703640618662471559612970307881354915426175909146212326351499366721661661163280040798259868275962376376721647937423081663435167513691845036354376074797607302721844223389918775272443028996709467618435129355767404302192644864151956639632031406396482108058883126687853271310629147391974362940829327800110064284603897238692482943114319486983220345792789206566578130809764184261527159256860211178776092865813904120023216907368711343666733409688961412222024917677965407655116810133990987302467923677742317099023828366194080908531380190089894004192406065605527443069683435245314284441634726446147771314630037253997441245272685631746468685521704404157602686954104909868407739121964156900153005204615815247192645424726497392378303609656294972247614705361954353120539340681915031987690255954420984648579384819948842920836559129401067588306394688922317926338907452000379665272568838138437205459440354242560045970315354299459321075342141868897839697677106495338326213155677237309681308643268776341685253207835251362505953126365383648012651809753747364585533809889239101021079136673078303587899091371279946716543777873284067803666353281081396381651511299601835175053935775206883353227297330680259713157572119413101384840210468167241200783136344747440499243986152182116183244178062391316319052702549932679335105434899414129925475355432992404615865952854894674738622569987171460007125298327681479195034337094102920651392635310983761702194029806371373704466969510212240900578064153079716723407079024352333662987461034104601346290947229463107403515492388040383409358136208950719148095363960526209160842075399087912472877632293995488104192584599980521706241892684716143497772407669996425077963479534517175632220993203522356804622324403257703497197605885424740361584671282293647003895730206449476745142597648138753365512851385865885149973592585151055490036446962147218385491754795359145835246628385739317425569433437825322558417859914257019746732172778005531326692971668669904917202921170432236033901290796709731697365042026494104824335334289098914797364926868918323800817106218417783670371874733597746809850901308587558646631371315545146010801745687461303385714642382910967464328011209782297795328116968969860526471172954313421109363609389715777900529315630069821313671826224432236250889363241362722853061441388363040244895497919591235890257701710549892707732036675829054157830250336292322413342089257585347463970161557344191604561029640160372470050573171717098595304918693915438501266385514901213690032078561803512148627497715225475993134153205447091026851954657871631134752949766886806062361254581424414015289478168583922892224069429911651943080594128475583073938468139738029598194630839710928262475862660256323802249704272832127084045259260785560637373083165465623754087071086130995882824655352494627952230928326346012612970332830241043152999664556190824762124602480723341793038793373086840396822704712152637250406210575196870234552097646758675336970232198814278360986275712602359663486313515173536840962111003007889518282874919091937758620555712060810923379546595234303568125405059442161024152431718307962004096685774158955636410221445584304346825303416520744190677814762036442496038162712972733616278732678660422949309454498816047302810760570973891062187109175998617851196510766543589815946657661909872165522265881113530209788690466281602977187015174182005266632190058205576058096838347320100839386516967554934568606154573853239445907438325698545915725463192620990427270094859869122175779089158498347193500189340484467798378723657281696935403882392384210836331289475420706461056831998921026233032465106617334539989181002200326628771815358891907613403886415267072925924896110096711759580240623812114258757143229019115000417199563321052777220518998050489976265020990640720874831701357663286752192401554173147142479765485555539705261917920526303435231620887749916005110278152828088546957042701057409398413689549271156900590335914826138967730972733071486399822718164105825126473518893482217942841093783339963112086831051326336947228375337323340555326150765781152132475816123421212148531098553661009623700809186151195809130591208869914680859606239934264193109775701671142034669732853631583345196831414648619591200514517286606033555165296671143724922623002178636962731772623335940192824927143189724175303039078630455309112798436771411928222722263634702396112381796056769797941730777849807427403089141258211017386947592366251836279780987012952962644179626083896131174403941896699507982445688930381322316701005375685134714775923313781648524358640632262700277295025898270921944158851435325662084566952916011695777502321867769605860926627019248930216764916467464619638517234818707262081593172656336100078549564891991003232964852168917224732506236792124515058630649615111956460663056853497835066045859943036466514007039239036268873349093113795056166935749541586201549275209189162370815069279106807149407927291512627859347988449977350734372685886247610456048195912895152593897373296443823688604924827920103626170551619207842106577407628844844544965211774312843797726530576001494411427995519672465731354606900841790470167859659605326908830653296853445440127522950144736918981953658973328282380801926299533234722536930883683898141022928847128544851663775185036065751817347434000206652576027412724373333573706882328764635322135524418518306432293119224600530689571391868465656229648110216101486189557608233761134558570416459650532139191098417091977955333466298852707271666270899884547000788498332464926378101803919575886307055768718712041633330830178438747402717525890876975620107341683233429109015903311405378315661290898767577216753067208119523686663178894431833750963239169232478016626646882694944762094715664910116670498938573378467216646221772298168823286236646066508269431090376335597547484987305135563507353567999451807957666691757898627310187146550465071442248263276354942338275793909043233908647639864372846278016268711094854082911742065348027044185765088513749514186388289843178672236109390070003336772024113155835681655960783713527929830106703289522609358586138644529371784998420295991641367703159550656081825542455854796169499220419838180089299112087567219139704004432814075390295515293838966948085228834490580128741480012639509327519756016148749685071535981645336941399950067444023744839444369588700208793604245263930235934661556643837506130897226542125110164301732009705363068620330628858835024579803157811440138719311014816558382062891327478129216821401375932219685994682338251707153776976755765562204439511254234240977676494382814561064338080422741297170636109013883469908019351689928248287762305944512675925020532770249792991250482906582388119251069672711426566067108528244094783807329102012634198759994507855662946542490990968131513547440965635049624625686527233338820031523309529547413354777659606826597060036988233491013764279305525346215398942409141701612355544416196420751493308970487964738566073650904810276616397646823465307325841787548213971379909844484574023978651591765215580238285456559019867655713587481474302026263209621986287857883827204686603113651211634077867136171061292374829907525706247613199358662949814693669198409641078068121931632081458307489057168743326205072032897694773896747639192127425247595904897956307073762845059518947357172509108464638599810119307811616974441845181405197737463933636409287651071777459198409711649051857641559446599896410504583494641048197721511294192899987444071700461131819604265178211035606542244174711740575943527286980627797420972467148291239311494791172551879638500024393542734682704218043936214698610981387740555610909935360754608428986190644921431383956970282532459789060667763874384291886405954170276390152177070228097464980903274482866547378578918682673275207710456920776123322022465103873175553275692223315239011855786645425014915030381293927100605437799392360068978003939643315612733735155429625868940474898600012658921323700318781453879949591747410606179552122957921258928510316564735100669107219044566749804697737233539598584623975406552230435203021623268800679638524192336821516234086030186176515829504463046399948189672008217574434018741581711401806109883647726768936483926997707459943050944684325390805218761969862309334140033201362198396025564762702573787491261000349928387689600527369258195413650840962512732626116001541972083677478621056273061368627965730299467924124451786249739548045807055581591257591700688779911634312260605806472826795723688320459106667843598282877208418481671870597647632438253985872369027489822611156195417278594817817117724795893164756030520931341218250494068054342691902071888992264036607865396931680505208358150822718501869574019277480684825531762531878313323772220158509888661958338535049227998211434529150415541561069297861435140914726843800772040594784347406024877173934702524944582999036101417115319586832184634109576097957588543021299998221288957459513729632744737709958861817363294744123825181594830776623020378313398342225861968295284523726641819397310415251161442655274669417637378183193718721127476451601818515504624362448582732947281223084317272852423819658987143801782883498348909372200360301920960682150182619246754029811917990240537778624651247694283417849771669402566021568167672920636918670909680616715059864955951273409967322277854469683938152653705132082041937716167536002392474334595784814395600413751936226255254545997544552525662116036635735305936905092673683792487707235229897178546164708724555486580271703369277156869832126105800368244330198387007478640909456505718959922103863368786283244103723704551857041234378036747484889945237978045739110757017596260045498637312901140335051351203051940158158341195091971131502221839121071121244242852278846957795120656670614328579013501923216599505263599814309988929830073927350873192283638962767532205562736413047938772163252391917947523038658615389244897476925118069648683886626785312973184241424605216813972185684584837567340823496778181912939634294581190562463736758080559586265059843896703313855884172540820337133514068151229128733168622352923778152287197369155989502980971139106883611365685531874714283390595880739990142415623677997556829274023796750950467938788249158048637752111379487453627077887255447555982467929638590066655535396372874550019527441833287728100934175370575469414012340764207862721034040060815012014302718409204735946085680296845155579524903656052537512740823109721316029326353096488928175678248139383517699574239919619860908158099055952100148020776114207091394443532133746387614724467529898388999362853605075266650055873291792190183803578872322805203780836814629259037072629846033778662124759616651812472818120485024489210052381471431030816070947102858937846910524547455403321435864249791136044250413979075690804960419854355859385905776935709954724078357736546870650267742843271118816660797840799648361531519500515551506481118852858780120830314616184981288625745447130983100977808504298079060531802153696894956454517445261255312291745585288325683218430053003914647428506497640446396935266842333671464367228605130667762458467200799898969620069790943150892347602942474192362543246833433797857488538523962071380943410003043848356014476134830458365860682142638515577392088973235160855688851941539704635720139391885530996146168936202907187801319779698276905072864463872475681570384195307979413433284529872000901308301069536814635581407765098285988610854532029772246360125419727201377003403664932306165179775562851163717457093401750900578464213887454591534669426992942360072679623717543989671049809700404236019459945920014813911231335812616880214718465136130620488277322021180207826462185885252689302051855378930609789139608899675445495701975925932602070250158671611227008778585559626861335567563291627858658958268932482961987130384056045622412777000164587496442376463413371480176474940755175325718723546966909860602885539815634339307105578242181282679423537802039302018246809746030566784884515107834247296922535870721200464712418427528284729560315923504382971746493677210934040184287271887597337502583889723225064352365289442125005721971709134998359099240177911767997618164558423937755833829568882474610364500181707999662633539086190194274464121270436342047812464706069772407916649632268448817821973092536750305067126540794382846850918318174370087492843630533267085531524511187377741458153925849882246394810098985645162081683039329947865865639067004830636779964214594142081744237684655988144212834977501500881042817707386580958288033804978259545693100204366656214030058490798276402557103531520336174034868393392216407140552421460541590691086070528837158723131847625597131988628155819857392372393312673347442858575159811540227690440539179477096644239590803575038284419636209749038108237672996943586716659800399307298269971331872465129997356931016043646067067990520157419335062818265916070032742584441512202406915723606610488315978014075833000396310498977523354724667309213262036026362997136639246439343486338013176291901362315441922231793516909497438575190915411608878406210254868182146369568376104436750354518857006193518492356730573246648757605714888826779290290693640873481513472143254968839398150217223333321008930843212131335866230078177141196738833096004287642365841481703672916066994207009505587114827792946728068736255311454128843893952252717050866819538576068167917805244105781707831092098240447032879415354977983028106267694265110266442268861684201963685234096767904051702455750362996965929913886470946285043744279437320114220879963610734911559592091559628293505237542910828947123086434288075962807012600856154718408953123162171393994056079675745950230560296837891215653413227110000187541240998006006972837415464766445935283143893797777082502667613661221172346820337106571121652302454729595991243082377247373545146404721405432340984025184211557764957445434024010165927002851926586257681738354101265928993248987511981728739389773810400321606075155807992817039851246525964329090253081241408608273404086401431170358537008153340959918737076405235967693760321414903383655600530035998713703785645006465501943618957462321563271176614959219650694819574199326256940792397627121576110409537245795879723445419473857982308471355249487665376226080511909630389039412138028083647867199830399043839081624780149905952727245430348712165070273374788807370695411106663023090463918272101088174549681932737285055776063166819886898716336873928920340968441067476750876922664712849067967335357487886157883371483102774789154111079304378873045083938166880434119481926851339932900655382489885767683844021453020800365556574000840035420378040310893441129475402390830766206190428089669072144392683549061505432007924461346188293672034278632619601825571107138200070488009768817367603863260356022373235943610008223977663867425293510956815284809236689964984476743078997907269454388803445353156052387165029403883287009349208402599324080057544580839910985516999998109101970157408890576880650274507678809792767785438739741857461006316233961378083817212858886270231623205489260060998481303340715472579728233946421841542705983059036899447561103514956228126235871860011845454563067926650155993503706453671366562894698792639771821474477341100492814327628562630696954531049455741456146413197528855728224093512580167700356710879122925187930965273166695555696039286691357215276796991886105555141470390220480263771151148707917957483169642195518897229204201709747552851542760024284761533271802706915773069333990430964696307253837520093702108767386775153749530194184383333929036207370073239160080518501699139121399457574780403222127512861037741149218026625635982504075729837093285793576248558256025077018321277237265284111021922092018532071161901805024198738491143962616943408899481210126620228220155154861089264248683530607849562699677086605918369579944392548427355024596570590834402085030927220426640110227140225194185906467163414369864219673622212323763915682920504148523599884717558751806223735135359946118560825770802951218145127359849596892883775558304885684070291374170142337465670618111179310697265518555439536711857728801364475522155376660027078981922116212352892035448047446070204179946185449391440904889353800712160967336515256139752167095015480535877964896885389445061339012787800030885636677250131535947460009579791885998522689472669221892803411769532596604644317654634719633757661444493253838895732256119177750622828402503550403036339134879044376324194712401224539272533351398170038223060244748165503406205623441103555062000980286624370629633322052575677846163764026870265680175084078637324441511605424336525662505262585764126018288930417777504287435221544520550703892355132221336451534192974020543250039482329126436926425298106165401812971220610566481392882716741783045441390739716742587626802473694044695026633953340089899074087550876501814486462229107122418345276001780184382936335110104217092030305220918029178863153447697917259324940304348046563154964155499743740041956916885952324660226704511105310780209642711671272167972028724860814194090669442271879937909577609252219224925343556052423294196886754639810447879301653132688889605180169714096850755672095130876798304262934486376892313400565513524294851710640307594192951355611819992220458856602185024108093480270013740705289069160169832058081173140333742326496589839464288037329232380137948136725407277355607432160504489553584242317190676426136774355802081035078810537472362335106190994363135452535072175162618178421747822716431290732623312702620240117166397629770235207998811983229230502179154391325486664086748972995295676152013044946762285860411968087261406979072244116602454300874930846615532235657187095638845731086687613650722301862401451069231049794411651371775105265099875020484546032667842533284161766311446501390937573568127596674596450199006344301245494870456467534536942572364363969646682553667237517502335384702303834096978758290102994556468402710119439375750102557495382979598587031251134104470512241051381061535638497093843547367957118998206554574141558005590340860607875836968566184176613559607221182644812798693732625389000884387264719400007916962518119249742716532962635140468100081530123726495145935932958192963385557513597544849396083120892310982568594398535281283110891302008498912657963587757156373908506025040288339627302133174048341844961155681409763824529088641537366839999063366245053399556469523643883907863663501423436193088346960538409992276330604918589404359645724576208836930835651132638939354132206001682330448800187561415816578430744713935675920178048951707518110871906813105289208551994435382380092735706153245398704641518368893159678586868926573470111771534451128269832852767614223088320719415240328398951724182245788621370868757730373889336919070929571563393561031410156073817836301204465608967347814618437566463550864649855195408280968465612336526136663346588069520750468211303516873245174631696388323323290801251515841811898919266000815455405070482575534014905728386869126545576569611400233489320118549290532296238088334785547383177010485351853069652839854292013298882298137558820252916522401017768705813329879693694746397704854563353203069872874055956784856063407916089064376070415101807260004350097222773059184366516463608998306469579519334830903899794182441521462818639055828776508230048519140393959528036809396053587999978836687834926932894287558303774219018349994797374818214359978636559456380769911468983817606874030226718700564279226358790669779352648451921900245298503158367664331591639309386054047648256190981472429971766649054755912915535863020170211582515780495852153005254640964853889522238607646840569219428317447719468373412228615532138606586777596805676153638744738696351223812727614998577571274732535075378655069583464284238556377978218713713839624936046264025673090836065115595380937178668577683087979795366360776673815730887290635487575785922666763041602104942850701250835306232823083135196376952448153205185746101536805031873924061455737249077130312771406412161381146860515097876672634338119604613698800875639188824855001603306083274304595969414088777842518944421282439872791264619465930934708525543142877958611632915218248909847068164028058891462020876073239313163574714286697858536616352767942132549998304059432699424141002809488588603495978267004159591493643285473100508939880176276290469129186911055458994683006074645269673911191544933423944827335300127441403363338139993478893756575077696763703990326201449255502061049653837864176561459932390602767600802058284816975973440000221976662273397879305694218397622960572067053609375858474223680167227207277844505343349509970742310436797663029175129159148627390211232222151516902115395121255221818931820893816098699343226869433211698421105790186419666686582837919450638361854073303081689468719905543049444850939136240027821908379304546281816842844535145533865780781665198608555143651553025268451002424975331817433597826789307408998160642615950404790299986248255178391035473912354681312999187521271496211256205466661724981533510313639144060535581427703572343187591585985739705358195371293882293946552348623312256583899583421139617550453770501991427775734317030627600350445984893331894512700635539432963539232893944423589916232187478171811745955630442794508221480063762502616753287820793710809376161736121841588180003344141079379507431905097587064752393700868629987935181928999235365122255500036793511003176662711898580915357150540520418101581381475707673976749532895711691308050916778071051392116011750997339580004957723479755617656644971591084023482392485747268182134123918078912176779801918805814428739550398067669201543088098422204321549827754750786425106777496970946797826546977382423170836947218449076651640876787307166940451762465170279037194927135792759288467862741248469058084167361004060859413766600465187949060480787569336397139680240946945551135657283011556805775963147141956223177205724398220679727183250080736818068707872433520404217539973452305364985558721800481164328118602137571849069692626115984394100535691943903761464606201210144128378443628295897203038508875748543892160441034492681973227898216081344019699620781113908392925632170294214491682697345801561588843943090993677463118709887352757206675558510167565048620157788272630949205766747390036060274607257089236096797353749592099089041709007073474030292160897133489359595700986241491579618269699598461471038094992848002208882781647634299890519110188121971157362847381223867511851323824432285642249826016055484827331541422730502326058174324715349952452782235667637805741998404765789523823145954868270505599363796364501289429025943244864721465962978395217490809545997371143271273787845745824609259753315617638901629176940337250477611581376313949024847220408046425049733868586898975688135279045150189341356005021343611799129444353680744741311306879462524844478894740581879899019113116933298805526785566289258846780653141800342247132211604112777544958750010099958875112582581916961593650578114397643863836014644162898108395252386934503114662180557628750232976504526010414769454406976646494952798752116739867985403361250906105267942941235781554282996619426176599954391956626072541068795117285319478218084915997885387489320597279275130713836222304535650173382974289326471510527509723137309809971208804293899397406557746053665120736650334632865678009857537916185756969125360098996202010725766141264675414366860657362411319788425600708489616853090023051197684592842266830360587248291916185318138004650941589789028573147968347041124400342485242061322509262866674952264778620274960069651258453779876139780732891232937071551379018457970039830511314957041263446539536674601088493976641855341511457088857709972462005096726996849783519446493344240268370259311606747413603995668909707507022630942436215037652344104185325563204945444178197308145908603618292316032402345964948998264973029500416412776869860857502575787353524517990317284643658820893211869737742524104753328701676622822154921609069078018014985267767097161721149323556713003302913835282540369729106681400349442593770489413272115736331768984200705241870445254979472597526337206463477128379764068961503322641492568855304742174327780517835004880452999923199496544114923012015022393668760512625348397305934408467237942892263499334063401538933761352298809833865157864040039647025306067168492690415193311814274602629833404946989961105550960524342200065786121817451106815899516413656067326932541080604000183737309900602778616853415012701091457383022206790409653245382933703750940284574809810403726636604768132732611993635471958564931964946204068094126451850588299567764982102805417960940913251379961026555621869667146824893193448502119006856832491288660913052433175717549054096099108946334785307369569214956824154681124628519307516259748289608043201755269161338611349502098985895012006518111568105559448410224929157069726619540291737167882590918100970617755569876567342678325908959514682581916779037672397645153342433690702091920356653910170554394418952351693154741331320595617015380107074337969371975780707659982935863622227384475446840690869188815241694969860094120444285866506890309268726080929622706173128082436748557134390218931086435181247097107615734476955211046323627583761404141960755067438282512870001896494917666126841887226703129818810857341818627490703703473694401947512190321642439169827951624968108969087296752914421338391426347890070946460649493668997617515782946700348256157131365984894630547588738799323246700656221681664696903878683410764379298521341288073231337184666830909788677903834911883938802315518159647536461419257641923321633051002085973845744090701943216584970830769740473896723067009997088418156783362865905980872497599070635989919562119680680392296720624385419865424234631282375890442124691519677829407142763853449728401010522572768350916210847233919901352466895503053430789374279215548390922947893643614229717847456508464480509081333604560690911206138555447070276833551667311394245986215172937673554836031393599315300717702146728530515863478620381672066655793907967824006147666758216948036028015154750160055885384762717262448926248500202596755368562737346145688529463106270346192791560130310394997239314774834854994126564691898637326307274366941935288062215154156410994665865346153314379096256405561238029922579174578928110498789360764658336595520598865083670827221001322562667408339858573567373619919201999155240171009405353607471111052497772580063365484100604926085276700802896867032347658215511667782827785381044719590826492251047051695721550493025138969723587874703882098820362770138878093383540428683723122182251958764319075984108631837610043755880928337414926823875629910697879967296783896284808212952602895397439814426296909578470130866572013918930122556068947273189224651582278651329865255190019757459459196951014533437417606403169676180615650537577184634564845159406328458738582261106415175592375228450234876955712655353949508064018516955567024908981203547847658032304302559233613839290562029120058151897716867694945876077100075104642418503968656543142923581145037998062745692994761012712904003427695692373000647881885504223178823512387714310237405369503305875105793115556997951614172677544170071001836276005012295365130423434980474460695171183126507323423827445608482574312369553979128512316828652724425912115225812848484983649615211483871586309045138614288122824955768829561551993168670510189332041636274484288880496213666736105847164496697802422418903437809281375771507105888567671005277354932400405142931696176707162891982382236326490292173439305880745988654582671139868456031507336517033836758224260812662439236251564372035116735618718295588351793147160684806854819052565812073903343189166640869770166755035073937294817193888525796536722878922954894178795024154516965683625593164152587586299651619893890480392057556159091651023034289702050723186395314056682917751793762845155012305215422869669304936471439305829329505323395133474347390226174965301732884315262766790768210434544285113751777457801462818005808520723675268700054103202259411280749348646966137376802864465979609400852307397261100554252251973724538777640100899643806355826625200033456630387539420166183118608579567551483522320830477921439024928532049630897244832742203301894200681748386338594610025287454216203324406904440772553126560548403890519516010207192033824812799381366137945711122407325594302651490273739968046451527588982238571710279329243490301371791591995688632520505330879026855907245676676171285468767266336321851117816671400746204778584736804582349232738038087905814291918737099039338290665555933932751289324913957288715962484601003371409144452034155696262762259813284157872790412780793115200659785901026388038133684630885343282907720547987037307817416466520748410890412037940005193471025284442982697105781296772742729329742158500935350565450876821469623166478485430231594135735829099402421799638002555241022699530654561130199167285171053738847843484814987572690422413542237748213557385372705407842307758375918308461651397019076170911015048618240095080698049482968942451511103575839000456273387602376647848260714288407981063746697600258480343750408243642813026798276298560488376118012746566282560071888138547624045454187415559459191189025346553862903487642822017797488065605936915326125415925767006948297083393611247652629223425434743987743190445267102344810465139414463457877916364852652516381052878396614602157132314787612609601826424000015346011608577760368793994925118314096704266775304675487928749741006762146014593507366039113967953877179725402821192155361069053161101218510889362925391873944107637348001966849708347370706777596689819530349654400025257020763688820090578895012348195800592323033255023228633664643581498240693898569843983086963609629971862172840652710256205358674710083201943298384663049884787021002124876618548485975689293541617068352577990514063442261578877405752992733955612134394476406051276432491476293508538997930707221743301061765630254798839762373616670498803145589388254912749062780652083268027004359077280363090719674826147568051705476483410815115341094061331976289760236555419625691456415688823653308175919283680418564438893871553576984823699510847814332290931529363960943707440211795979543189871841592932767463013399099038184454386064000704500450367330191624216471872227150969203955569783286771036813287371868216028903092408163765468693115552970824877391594371486132872304846162924556616955695622702559430108094386028097399338946429322555231265701165495210284593119540385494067047996645622178251523892578747066694894995744522725783061180488737069246769024088507686684297062035662815777594393622638043048417926219103426404315542777991668486143569046078331373292384236363423661574965219697284248952608937277961547842412929743566499402060040318776932124504596847220388457529826124427649535836508901229187313246589930775372613162334260960326978445092106627475157855760291051417874808598630688072427689415414691346120488960064672412397281613540596821828334145195938224624230037861802347522925774178002636445211262632326676040640431341592460469565981855056423152376285311360751025680750969959412063172246184004429719075359877207537174415809493546372147566456841586535935883556083508108172898440291992193484861007054174488619395532911845891232072163596730792270245611462360309334345592233793969704776500348161840663776173270962626979852051936908741377889251287570333646911035356062256209444004904865628891597577788642288822516571818837207480047078985631153405333594020832367510007561168541114210557425816848822613990327998770307263378742776038042592790366392081418172644612425823402095318128113926762653612408242085568545744325700180108699072392206828632845615040593822170603955279855591883313023079827210789119783108706342399604226971864685456420329646243429088637593125196700340154556030230372909726470880265647448511717695858925189073101376057234773712219268645714781502838443580425186171221280696536058181585906257613244375870276314452262767817585833871533037260234333166011773754676685651719035951527968980138759606586667022931523804165899985364325193865428240394068059933816362168192799744741943167390544252813126548266740602628873076331904266816844542247370165131169760646270233056892307662485858912754414727000176052418778222464727837695647867864831694140008276690590951164126496449129823555145601318145804042147660205783844821572467019563634612023887630241441762632450238679769407753858307788553546150609903186957190383225899007311257082220626677554434042692411005859248738826713250635725300464373950906448241257638814069990222182483081363171482578228834052552304765986048544353827282878892349353154618899891700627201086292834877301267530414796747832395010084747261191793159994349342366303619945790204666541580930194433194648268336188076007365239184033474398437732667426389410967150341488135770924074071619914973253771075906659603917333542554066154072727311704271737480793304972368742873662847187120079683258979252353576980068719450944096663313386407227293718279278550055733946912622730837557855264667278413290291286692106297121777280485076778603411339868562254100428475058942601236736701451065285779145766109916230740338294220048314457835995599949340598558359406885736143017912979786385556939903732291257053412529771551628484448190894809769205072418792835421306574356695604081905066983571542376748131348379673533704265456012983536155981468340736795240691855201041181041799566229711240853209603774383883529931311994085689655320148179232925588198992822515541348979843782345806956639968590855697569233889044613893281598362598958222177469387373975850082642461748692743567147269980850935047839045709124364778723347472015686463054586947899867885741771184181740926200966091901022296749811213608927824427806888096387630794538527575307154909335860532178203141125019679896475202686103471822007181219587471123713879858761875118398390752410063547519140472454853728002232087394195293868984023113468194310376907691500863057963943805741725547566173476660418842974867970659118078890490655041475742652296846985647501705598639743153355402796936946237667379363236991703013847524567837603311683512675431347552564415467740717023523476043125980720604578363035234129918886849524667806167511191929476482002964795557360469965000452003229778784061118940406093354154474800284854365629690565889185376194016146593253560122373580023880134300861213512626662390184604275435304178101807763614053480439877181439292106214404710792882900805269656393701419520338377774637272014316542256730064454483921562824639803893640433728911740341071913816792175864923737272586345819588547714014901956417090194416873088979573566288038029575474579716706472157580240353157757840444910789609065535672803078797966015667125464335699010249730047922965263991438557426518081832956052476514384250253344987972801562258174768972187616400218878287529861507756797757062033449877176173293514980223276787968805204944040583730320263403960428092425402385161008059414400672940309164351943931865821589350452892438846010528839280453675926314015681256091054342478889692089505660708281984228844373513307343757914347651635693789863614467248724557821287766557746561212611054924073437778973079243728443408837159487506931648946377722528458739320740963407020319381155750909303909741907875005572352299721782230569408472032558668718659874288215940514406916917199503786350082060542587128153660905851074717832631843638885530199952367270981170489419688411621949623463962293726015192737995368533332048549692206606873945123615403988503147998970776342837265749352848326886559828866957351861992971012882919660709427233145180593042425472862478634002025670444263548330649399348591657682781324846948718460945498076893119321603647674528437749820196408113401710339724878452564295665605757531053962165442120922953572258258534921493395864587917790658181755203857826224239928590156924756660202526606961273004524400492681905028069853517455840677757768027550496357364952071868901485561823723724359408315161640275579417358264342578351654421790773147308625415264227867440392749210262034716787295416570493121346271374623024688793469672845702896880544970050562624856834534569343732449248744294839078213766183517209725699911977070889837563858501844417179696203828843910368389340883027008141435050838712204703316615363011958708995628891813231630159771895491536391149378097451391014309604603882763797641381935663532777815376608822917076591157568523095674883600086302829544658643215302168334806813958015849090936284272430979064369028032998933630050171875702571100733300915565817090914908929272756217276133319127765169580613682414972119368784474736116741680832541803217909827033252249297374639581981270136259636102584694969861215972285460065080580671419121397946836322974457140285775677558101031744299007275896806263351892295830358986945051161126637863705347605609452937482043239406666395417341900957453297380898896071973145815570806174234015764741559886102794068484247679686755879348525354410068497558244105580418687043182889790880448706171838128341229954904933313366880846384787537509532034240854373630810009733022888277292716230995214999865691650547005961805745012659697071635044877308885719786680593361478617063065257376773851641805016196161682864521596045119253780316100104579988939237117427564507683261330568776869980846171659994670299347375992264387377354340715821378345544053812300829463012006463927644615094142822405798117919143062718404498049873566694960604489703351231959428620398768641638797029644391114527185779224318166312427981651580782357553274689002092103747261667985592985802477416605972070925526169940794446362194676746353346748953527465189211900464345897668566037677887407569095856102175925105987784941838629756451478011460430714888532656327636082498413293636930100605832789375911630792075796212904422377894324500474082404839343117477215601551211796366628182288696082141611870761230273285702369922434234278425980184553290585413831191267611117298446809038279822306533693669886382515609678189444374974665169380233133407057489723035864534044017921858508909960727088619194751307904818333107934482713628058220939665260077419371589133868523380930253517408059659396434593910156245620667635193571613605833573467977560532474826934144242233408108092773104580581151947533208753115806511296779317298858865922290061667420421384623488032156058845844933108108549098524083700390356844657497990622963180750376464648749514821496342669574352560063818697358426275922453846701954558940239598999469393084019988138122441895810420587612491306787328740817260393255608628869097545437998716335087008324746946246376243729340710280481238831644384860177289554993349491414546006019055867646149154272385836966592154277844942027377418705844228713140194245224986009675140465691249536082486856971956355370863511479919100443121796078564129803824650124353979707497230527545397488798803124144971881458885562965078406887801494265637701430625250781769727229213630315809883872166954647972656056471404960520615061446585870000506924892006038142523607173335153442474166755165766436466999054129397299312497810059826337335283852411697181753030157555532322830511141697142691972644531698305545949791832974547595757686784944705685745420945800829760812563652669350889629636096339289621560518659733492628469966211855420116088538751962692998659566784097055398307708969480373787381449274424873622513921814713317669167092294579753803473636292428378804314648055872535532385776556368919259913885751433380870677737485813846591879919409555713800236362080625323684330757578004449883261145881292286654792235325733119065745438734242227815364639538719501190707194189988469263626237453487088416915703699684076943614475469798593223070143792720598969048873144570183063512641288444102214210705669220441114035729152740321642661278453640683521858192685237755805554399669685947870707297595196972710647583001434003151184115682280874113483511122089709388464811108411136275816787675936134547679239655089458109981607145344839110066600988546230736096394340510398655107386573376365672603144746379862025122557346417981843884176170876602104921560775072888150087241900296711120494864249109137283987895843511687660250461166138682354130318951989020199949349630524904572927293284709673980455078370181506504654932472441329907567254505284385516886287088296046468797252926719690300959334920658254438057643210245579718701436464051638128189676525508476059442915616837766471119107098214330475268743786793872039288628611859319187449869681400515687265181430698324944882818189870338168320068169635211346536620744434310108003683491211558718289825984902720887475303368900296887289619748357764169057261167118862162236164272347680039304689027950377018103958118429299244700851202991292734974492103573485055002052091370075463428673417698124453234795631198135032685492511059918780618158934339199398103747156924909102325926542765364219447904798372595512114075330791496727836224617366572931121778501147014881240965128079853803616504394097305097580900164962996384087679608073138500946309440395983682703571286599362902348354726812617311927080137403542075990828628426612080404728025580540611195568023144041888591074823643114229486783863106958000296480735532363989693625551407817442978861885331263118643861065552414073838693682453354774894012979791850821710266448694851477876346650024391313805468432575044826532226533911964551129353975244241178176412790820461306599429253106078605639505040907081407050640653302838598724184329948495684262121658648805551424359341263374854425864671401552826002764919820724281522592673891963552171027928712632044137389492629264914871594613112482287300295142398579859597208989504381940231298579378678582523765770657819656020473653910146657025820940889781759792149731125621385544493807068804978015782845057862247808732339624819677495668660081119319832112658719873749909990604006417309043285062981502856126494384429950576437001220922270078027650163356327426488884267294633208701963579406484507539526680238114789488866249646694361852934030379595882052511091653385368185458815937692872216406951000520043154799768812113863582748367732313231360790194816703224813954648027658804211733217561719501996636119214217954325271377639071227816360881992487310995603793351673494449792336516622740150095830201326006627521178969522906312613715143711344874535941761311681021010344910326170688072108278386629456060159639952003371339867726948749684900886334389333071690384220716599896588543684810196331704210999554728499701160275448324587966521264067533393015953255214608480970693843115893432161743335017605213133362691319303904376518676590896074702421724907925959399395085377921091329291629010773914973516858190670791161865602794797084680649814001350766953528101496272452972936054302856588431686245151102816256417519587499766093304724055920152493243032341357211673940977229823087308397792820774596041323132447936693294017578487187711873516451342460135395265729030483095958134273225414638349844622084510618464056714528330117817915672125189656539165968231048159183205247020037214861518216038110667137622218582467794522185142058835662355900127718557066583546788573140401557908654673833225439946619617598436469498520822218379822065372477485481876811625590782140130156498937328067106149755962509542814832235880919902062973772004131269706069553869874441876029952025779388384124708078201235267192108694783138405135321162543161327926467324372988631793990431857113330135023909560652103167913169976111321270434213293348747088319056181810501651178284933753861251563598730356746160395011727697024121316437927804966618486816011724923856882788729328638429910743702282622706345356178766996959023495559053473944555260669565854773433708737547716984956087829559371501978591059126427258405805371040710539279309173520751603613673397403264285397889656609215555782698324518658129108074948144174633342048624335443258421240628936390145896626481125237844178366434593547268579303900591437631445802264465810256571277239564346352741192621894971523090164007880559176098029676529129643309544950553240641815532717328982423130439192251121425506742335677709713242694383207534427636362065114902740803646084026220619991229759084257838059238285518133061599810159088088606439977632596944932547726578718517740360122050627121206560767880335110880348144888018539861150616206969719121632104103882678701207111649419247086472520982946318865280248636886962598862785557637599119296454160662088696683920007968801464288564601424549997833049028197133346855669020718628993275809969226373779068770235001038242401629664822660251575218823210970133312545348271355688479977528722071862877720589828558047927717503384440323290790311994743971022364805957054905670968700252255328410098706225386659598731933907734766942187307515284762283744714680151939838133297668154464388128629561654193894877744638221577205688908030566444109141035720409687469635840729044398173739907616452580587476854140206898844184022864964613460359394170441780845993418241239296093777319154145621131216553978003342094266876787601918977348759222028270686728947134486820503194986660715)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# un peu long\n",
"assert(u(2**20) == 890485386871704955135463659129447407103987013414604698713341549356035266804958113345985394373506106712391486575005495823245681972487099343538404688242510937067166043485172564856188868359193156660413296635220618961029041636489680215441880608073310233209375299493894534263276290052584496159555161353666774370713748003148935471108439211974694236971972912763801709819782561669927410968460164735639954138819388718236894282986524743489033472561333893334992288829086348308255134842636187057438342909303270192056781319180678827246637469983911919472637890762921611541950402465387700997223759144306276564805543397691444785702131201598915810386115919758711147715682302588338586997090790408367889748120469833878974390611900044953993004953866355763584024145800243756462604854088126645576715117420274370309193454291069647179060015936665107643826321369515570844630969490076027384754212954492456008237091467237789630241695627600398445560030165263901004635157631218264506799102837237032168154417551179725221018458754045204700330336646085470688922438341653134767727380716953268044909613841915678255833470235859844859539897285759412120195826780823173085222146394550650764222322108859505949411633848762222904007085404014875512046446128199987307596652517296690847370063830114862696668456268023389533682039744934064359290593091995576833857044401177697500226875960371648812911606347736773215498289081745624148190495827146948777091767601349897900828127775658500695470629090508878974809719817928060281037526429634866517830526063357664084355794534207330190055902498546388137776253166381943286877277333927534295874062080664283194121446609438156246506469939966093704822713730098819494035907938179803783580148529824126144185453912257258774540602419283197105209121323132397487251840793888924902411933616779665335754908296850594942420862351083287900375296797338457421746273031965583422747622388451721027293646136563885119927914507486611194124690164684012040859072103826784579648092072539505894941792307317278739869717244318468859883137056380592574748736225086634567491948866212486693096101833725409723019443355567672391894883034401829216291666497741653639107922235771582832556429001105794133979665006863721525632715472247018345438938031850913418726873200642531492280424962386764451482801785666602824730409406418130807967813413524485509799500586551396127125816396892882770582532351734178666985448886650476663667364529016011723954226675630551165410665670104198572534773246847592505528845367674518392803149174694140154936848851753571091729569591746034497807680985812051799784437480171984992953802452021718377217037028342110482168465823753548001614593354086667904496735413920575976346672396183223197233889764641562009311813069511514816305255548455741271460274631595020294830401925486272807043626237768462636154028529622095833941794987201308447160325618143518895853530671310463345287925029893568420089915302820461498083475159919670771160159418868223578823833725597363775806986139214152163776300555331111275491240490330686437065035942556502281278532877027707045396385776140837014145882093093723165232556065259657258176392470819663354686911249698903230197628265092130625651727463779669219040763289123012750084466199576152714753797162038109227543933809772513068210226260032220975216295216195793895407151582600004562748751377258245246899973510136916643878715515197047600404644108532214343561301854890518211970452105866438112862343526397133258786847035839223581791645697082521254162836446319589322887168604728014660234329983843311431710539038561567821112713699103540224690645556608516148584881987322553909520490802256759490237335649482810275188365277988979116951046646983485984829228939416459641030139163592328114085666868062242557724311140939709613255489211763675492436583464360232713372591947596804207016187404423978382886554663677530581133241288804043429638125814946885975034850407147442353508111038814508946897532923093386752058309251608598728403989946175351045106760027946696821980600768201454783914139128244637432686973774443600682609008392243660460401756793787764963545180204614949115101809361835525929567859334176116201715618287397349494453738108355735886639778453417548645079901947102531408066358298365276363780426291502010350337329020510489357934982607541310241760662256206572741525798947009669615457482397508024545479075139910615044723110109102405786918095941880504026845603709323951976073753840208789318764543033357307390330009907384278366848861164598504675088590827796562498295878341163012582471701715423589939182742563244859085290820347641310192699441809205880733820780004962667875571564854699730284841328208221279193661839272942950550374837093993489722107018832549130587181324100592902002883654023222501468914786541460209996136189416660656583889827937179797749821572732128188285001256817891112246334883547993042632274147869383187375482276928223650289175268788438843338546546726908254121873659723898201180128950188803809981117156688762771961032548223065821922434063228589808907735407992996455598386733238486036604319137958200448412690661506253843536130898332976045136992371402768885111675680586618467065427309449832533969072775333669089795118197072656673268905733710370864068108761006726477015415181445010872802200045941060017691120436910249330592439199567627835367994181357524502091018471117083791396084375830490566878419437222965086477419436428540507496794568092434266167073975661837626614876837723348222560793716988829993261262365417742965777427945292442486733685071808255479391990791392961510410681964158371940277643683254428336051565476598127895489928334239817511827970523621000851584173345686728981578756636587011356915623297111933956991708834487452891807990826022278403291465700998789467483607410913371932109766895333923380815048253626076982592736804329113575196655956850915199400247424936978112424744110021587550672954637203488209765850190774970582275879715304692753469429712980353826509788615027296216774526006715972681903362616182133617443437708457955176746015318752409929651787145034176701533557510505242204858783234238767981507075622275711640055943988137625640995326135447345649801103757554180704998897138988876879360259114966189130816013226178276074548136212284611861740142777303146009798485226230964469060778627996617106466655799724231083689994358828031674666875922350593402410846619465540582021461685274148606819073909808906651034533292774390991829697445504177588378031318383209825342976957732760615697269222846867627026369273120075112797585012351675167517858623700789674645816765619937274514228014874502977069780462598744456230487359731349833872477960795550838677688030445301453314459928694224657017859789389391792287728076851826929621076155284898684684508379465488388102105966191366538939809013156342796102124423673544400889508904823121918414722370137986445287729606767377981009880143988245414193587538608318731657915610594502944017836004870425133428699014320733211127445644872682693766956178221995870127905134470381644102650330312042415258672702062749323833816552725535138882709976608656454650302094166238633852051755351642608660228901769708149688706521049526047747126931086822001254965099927500259511351451900591180676027359191977276671934200455436714782065160516259288392782049422666765813819250742725748008923148650774501775838020622563356677594723431241674185399375950132194026894651913536876564655087486619145484751548449731527395097452765044327325214089331239065482633924119943152279645754364869855671933114943233204486066713546743634339807969825959349908183590485877937719250272795365233300869920227938240588732015077003844917929520823889988473155420618926071437745679865834005565189133476404495031317999192448210516269511393388800107721374410122313031503689868942534410073398480229527830515097623817622116624220834722305872352566204501106947457962399883953426893746837612969269090671210666206681104020016679201144424044817664917305007105553580021355784711162214870368464233205578002805532376080234914008882877601883740767662237555356171136928002412493029625362193265032003960804171185285356219849547861500125472658374946191359520361460744689357628012933367036297885974222027234805612614525713733406549290362856228052798751641546395564385971571382339438333514906050131090591369372790607383541092264619960332567175240409517478613766315533742205149024692393213955776254884398639920935710567344649416639428540012610276584009884042666025353032261201916025215859304837152400357590131329032334304790736193803791101651707431996710991464450651944436053758510862298100964240677350520364652084721204114316161612220620625734615706062100512366760756505936211166414030568979921147918995036960545813860716663576689723826742236327619760261422212905190793857239135564323234865493688735030351671147442490624689082986968977632763422682107658635624128821157499202302863865282658315447574909242854622254846999230844633584410959393320114804254307720645117678183502731435941919879634172334265030237942645137921567246631830080394417380539566366521525381784029993147462090458903859197945358898016479851765765778006106052313814750062604695225979159021861042419348548474204993023516095375462738756637430964824099055895908301906257367538093694021318765926060551765882644666547270499165563646599053125778176835099572927227943987399336474058355225561930008427557295284887837983370339221387986193292140536921899343993054795125945768981541937899370822512966650909423865509358147840946846136592046309959952162372805752483833010006455092057143783774995788580110562545207182604328202129989908881549860152715820377037486554890313460079839890819882264515797311560081174936237882605960122521207738702327948680674687414263426220898521762967770579745630935993326709805017148467213743831202723861236828167066117853417853033134745468830965173833468298642566723602874632721105584695218390542604976908294062912992569868866230028328911209761711090862065530837114662760533081636894196005888877987431463195374377129100677721347306818418057113257667024115201215143943442286801322605898709937755622829849612986577645537749444352948625681998964133825310057407205754568846689333889936634674373895730315074875021039150745454765291015608407748133796931813658514725253306114938018860138692191069482400411345223910596837727259338293821464581122786123024780416112730223005946609283952854506761487065699781199328509291726619413985276074584347503364129406114951224183659900303946034975492155868654253981018064810431279536214550223193184720607664379485584354985941047048798211311755061100924699624189511303500401211460379370031203709422786525356288932846797418609004080317600445658424014414252603706524198213862304514344152826779558478991031576160212014870516148797069027965774629386267239368086499791906894129737083001756353539560162022235163881155150325454945835839169456170142264035839722621439013544586461571703594284975488258586056314817766764443816817064638501236618457735134587022378096119988912218289273793480728765072119842676754400592977315566838768478577607750128134459795340908037001582245495170564073089504225962837238421440815972766212634088288835298989887601417356526154674923157741152480032609663028181213427519373196020264114017774669293733315892516910750472245724281815169231735149993346501519736894708244292405582354123020970199412181628133096003360814455919439117539888289251912454739327326507088249163801444023019209803655632704257100985772312264938888979465420096378779192986684085719557232035335910571654434558282750084598046976765601368089526975414026381088059663145455249546990809521138193508124437971167285942243048094759539896629086321094250046640702923292620409853298202243335607845612587193382846476642174856928034351011794834070126574916035722452947031509154517030723559597770553851062086205735656971750929634782830102146039707800332343757873637016322906267777709066755218667088555598506975836818986729291613817790390752419600725264610905448399473869988109320916972440342410788745952143346684307035349482940331154459628321459435474940936028089176858095875638460159666696573852113720580633286607747293444468116431025415664476294143681024415868720692572965508454810603258262909452355462765719260775360392604461521266849874206699247619491911055561959318690020258488859754366950054855244389701214185944573454070330633146161094710165520458390732178730897970751782766420016921894533162644508772157758697110769602632126036709085591122344779522536929564253304524311996084851406047240391977639333262057695189612427832387802958997297788468393358619861520921749366275645056860255832459315500176162465377721404165958257832375374374539795891519500328708989777152934634676987056504551113234092085718037925058700709734283608843966572004087175556835997669381565279247040894327994522866805986400557885702362015986782304969374620238314860087315781219744201951259962008086726501758408949495236495874917836749445731734631132337936865701130621573314321879713736701937000879583925071061541726498810563850377544226151272202373191521040433754015819794262937092496750573901145386912873631317150129461204628963283928595956282885122040207617502450864802039159789671738130073602504219087168819293851756673875685270801626043340064776867824443992034709399684907899451193619055240366139074186984239169447321576752222075356909985089765049316112449566798707183026094521455828170413420074707300819050483107118817711024231937627955132253297053630746933708473501005475652474760067129720112354515025237589012720004508063395299629336742292771529736285520879545835569731606878101787400847031959613355285971603030488087588175352658800113842059748779464240897403813291388566701027675139497989280685745219742799769458820154187583765331428553398793894190930402027938553331880636986330631303528578698193740265811411754569466079124396854048713729696579325955446236119069324344217222712335040132941123823227440435046498688357117062053454008241524090331248850161769278179186866874355502577461260224721664667101220721800505689475340860364444266210318905683705183319500012920500526494406600746148151976854649843960031688265467222286800216599703880902591395342511062060733563844946827744084134867175515693221226393533918266332014752052819305207473568085884480678832487784496948699743366045625860396011565561079242657589190527211031762144033352803284083304072237397375805852290769076138184641934669118812068975909516843608520033494925032320687765916290403616230965659598529992752061753436928535837315605120830942874069877332450867921656694425032757155572040598821872441900755096860441103418582855822660283944347305371987423287366300414910329586948724141775994569426832111360246844913473632784252118104542426212734717454929565467067350483376901214000548286241886733818451289755429321109575277743891428780609810436433034264965998877133023865288018984028439080938628376656830139444771227857660917331338510124344847372039028434611325411979600199958156064100429956737252636279469629887443907839073773479860084568458760855129964727402757699502886539125568523772846930853591547518871599140064313239275427249510755072264009314632855469955944124988403530251326465552348972135171100465407493814403701685485299466840101980301732924681302629206363329751346472809804533812328045813751065276419076302739166964313327296627396491972371940538143857233551763651663048552501768043461121918308277154367258945506653754654753004797117520453101531279894739182783171383461282028759256457772650935696010607658495048942180991084949519680721324545709959681937146316662429112998457443561464279605373846675746532983658433667305872114253792528536860484450293605698669540007415775926000730839026520150446709992837320171483018600159944392197033965663737820734534562269993145182842581637686147414577041852536570003883110637488534536056127979827634287334329347171047690789374802470612555610151860742804807968421580967560789536212335204477103202003421210304649865924046731791388619623506639924079328313847736618289019595364509621703490291666957781589401702557985939211990252660430548981690056199045447565221692850794888338336342301994163100920897883178336012055860986425736162384929931762271089743195748519228233263109822103813943276195385839677460329550953245433148488082692173428986938670634605879493836237788028061894261830695689040853202507567597274859657495520439969658553853509482428878968295403207068279882851372640882089540096725847317165691139873069723111467984189245534764373407793772227404219137365716968708788638737213693729946764563230283363688801906936383702282770277307146873126054435589995180896701078090223696882791611591491606535932153415128482443280876884542421601505122162681258667813181022228095160926602925583969444843740056128790692244028485880389940296024243825465473281013605814808279509596579456175193200191658166029367731876027520442576279691228646093921292383757448121149575614450727982404113638881076492476119635885313313801835655865009774118051476807530490279083700313119327289151515976419795614578861621866714560313440707453756625477955043404028679336062788375450625798930104973629467987789091077943599922589261438616711947427966267447139037950255331896196946691948640838174282617765552121359384672158826797656865622081614889178389359697853558516576157713374445440824371008222415358700764603054131979277207917294387022953378784813453362544780363043177039578278280273927625046951297671613588880024812892390352078409677390849079147201990644371621412000723896518534518537607353579244981067291929667775645021095210100933794878313309610814289681887374389029309402094035640569443825508905997269603056156217963885235656790518642620516762380017394985043848349138500302568855649421392968738409870320873865454404102602844035368262496004745718514713163190557727896978208179564531592499718593992283768393380155859925636215364845264770368631784664982901639444049153474183809033561906336449368693239302102850203212402848356022917551111035053721260858985481594244667242189050047280192692931931151891337253991517684146834130126036713301596983026090788035390837721606021369372369317519473954060824689748804260971335611684082042292548941561790796384908652731619934401154607439628268238883792715734697796956192332179995145128759201213185870535362768414402203373488098136934189463414399537663194879455150098324368380662111030978083226408548940449333143614989085771884938506138540743038309840632645127349740673086507587814517165236063358574892670409843108192409593951345944871901644211965228087056506126025366653474960765361277653187884230466019489720192823629665158171285730590701315694578895054997018506920836410658326190062639047802595476449404928920517167890968743667730539589593314002398421588424885992768977316748565611379416448995677305140642155579760415361100020865525263816062759541610137500933636211838857363925776090778051990576471642656110487921859507267699733054596920185193569759986874627439837025270615803714109499624266097891637915660152919884735212450842905313157574023280333938305544551659480282729496839059388820413641012574981837980640253478593007221106863780179047212145058937346307112314711793415027989865523907510782699325707050887783798370200771679310285521699632287573336864478349128748888246170598916732225401778827654373028598650676372240279997817982278124450076940175486466844138729328126737532766117659356847100954932145569027967626830871809938560311137380354846077292496780450786528908740162656619883436703216793196507343045484897496750983568276761625876578134607947982975656678752294787704541135316520849339852044103677564991732754516442251288683081203069598772982265436190289821665440496834967913051973021846279483674793911685365264115761157591935436869712846212136732668104211527975345803502351771153305447408136911198484188263729410909308063074749148609736755559656572367546995399533463916348297222912926592991788115383391161479772574773473106447943301523635588091442359034533269080935740781816095982108673842628733815586517035606898966336143719266838130401495688810854887752615115179798231170320727493035742516237089367526000018574671926332940126391984794245746051487496224583276629584559870396725509214922531115748699850072327577630041063523755663194978028414096201011845756026480267108412399010531243535401650881275365083504502100548252319294751833773516812194692861975967466525179988509570754193313556735257064158830189423966416756004917654527757660928591785081063455412180921899457049262404436053175393769339526633597783306140576653177780266482300138630178174357723084820519770876990201232068558976114718939141821770969153135941436287536735118281419953122757839664065612631772897050666575695366240187120625909816781224684812188870500514745231325229211240962933313703884412018907159622564493751714630596923919205324255377188918296847383865857908367191434049770127404504189523223402290466903738574966593206250041953470697219675427902247818162764082694126362925525941209496642828732761637437776877766224989562340427627222954401933970868898783243217502642166403002354772219960853405395676765868352718712063116973664136045580679052916485923414708079418015372801794783652265618470820639355201071178754284997203186622777162726959957095622252998553534106363998608067208845605498103336298050896889325355199983537710988738885691007333777107497077460949326609044527799027438960011438506065376691849206950335589831676091369576117943638682439976450509979129154300390852379763728163847376122062640785317112061120957917829034619591628169406814471799771629180338194144216517834840072416203290666508633511714232597106850116785135075769421556219240032344022138953811258659633869160177192843946016665131700020657048468645226595778858876633401614307367879242095913589558416968932023479044950608929167360847861461589138879261796031592568053916741088626988321800932241839866736271476796612452937982367758547856433471472310396896098050066853546724846301515647119804092817521381584805313705504965320375840649659769594853805174222284163613056339002743791492615890914216620590611990663633071244643818670874662298478046580381776798670522787222075128769549463193045669315028884448539403851711378132088337141587990046245818153029261916049721303602404739848110088065152110937711285345398227079300090585932683653258822570877711901740863941604329628949336707122679402613975904569131678404139729883855751942509189486646365417829614557688953476631261566429224912710976058097916897947607211739801484262156565952711042063459048861715763286957639285186114118230370583211253879308324100727216204374250997032604633848161543265286039215924803281129651313314776166389529903232837820722035680456047695198699692007477988837139012400248178140158301653926097570877126401558702964167552626089365943794061090689401517161962860730623854122956683169356176525441853016564430367738926891102390154569714746049601908448745905378443355337534479057321515144123423686103584655314861693589270263984677468045549634508364733239644851026981965017406150021959002793681167290085573397390437300070140575669066155384138645550243807610400869393494430311773006617406197718620326255855436923821698616702875864388471864120329283597666144442019588096589020793127132242060805186515859397040457134580190563585036032386581193392659618857278725259956923995976355812857707157665180968455327811103813016268094708394241537682169396677935541552878743413602962899405159914362978414840927157748198336516468446344662477716680105237314774526103335845371451460784996556046590678028713272047990911562297706455941644833027572504973539301958657861836637907116791635711147785186403046491840394270976068582491642706070755037002153428086932484402501802190129419439083509895734197831935875252365366390979749812962890018871328632535023259135834664637952048942754090935490957307299453680468381551998045161172177959547512023194000885780008496301650943421594286945097120719984592352661710850951131018584794805065451985398399212945310406374347089805792530049494386624672503359916527914177398677148267567349787408545409365706390483882934927280146283528898378646428589303063213425075393136870679401755734971809402394454477745744166594171599085970476293247222870602831001827817004385185896183394357932148858854856116700926158816819364366610508562450980674097373461309440930506399562011609764997592415636715437547924953458443515106463335334790530630814169420862024173900642665146241945843227144640705413110742178772845504353619940549022645870926178603764149677298130244545853733818883668304069825738457772731729660360860997249599773427252308583896902276552427214030804761486670751631154628112649376875290276481226260830988188248730387496193396269238811068048573252881587251276896271268092703720230580729874760407415421408145509626713054176169431161278727684658310814129544335055727705297722428567133406657052612712011730695999892156242735150725781704492436751670431119127268864389018723440780730376581295065407395976232550566609727541002904692635071694237778063640215664894916160458693741769460140047547170770496676332813303866768968172806148476157271468712230531028308600482419325308060146323694092617270732197812870410165786028428674641027952312431737685116475159951920535118277013033193205100579723461703728822577176984998828587730280259266003487736223068117909725783617998482895994320634986041475689876488965625467611673174287237375297832633173373493942940074197048279305102312290076534481110930136582796182058546104226998854611359349010144422076398303138582537776237622432635784110436728396558568004138504278623406409571011141461743109928573529762591733732417136858401850594439625241673519742308526131999114710701537566781231490835692678465233979422367907232075518940981061065494471167074567042722311074682651932463211107503206924273988345992402192523210358222755100552325497574232225179902990009303728976425452790774893109342900434817970604229404409106218498131259737807081723339468548536393119002623437494186420717230232088396555334376241959861092043780033121225313762863957234091276387279268325358001411769022509977660104868353096981339234618510717632946303383649740313823963440339503867100648634087679817504045819899986761237485912531839638815977198684722473059107200594445622863176564626306494638958443238592449374285752704774424816093799796119529609635520056849622612195627700274164146155110077102391573764467284860780585322862139824648262173671006490509766503535846490614095248740511925188178453088138767805625666084498656194897143774955973039929367041681831156668225083582788022870579070168131122586976082717062446716157111503041702450301812048151737137136670088538457016877154910243835811166711584700924993629019859996260716519590367270916920868087469069938277242003284306938381221746339639749764450436095711194852001544940209316791461467229337704037292720722269226971331568232280713466698791714107539747639286587102965355957604490952601109805189669499227639113737687100867034559693303423592151208067979350013737063767830077949571535303416089677136993819328296663703654122393909934411421820487057602626635067933189870617351432066433088528282274216603461274946578535224873856858822152746824029883388921297072776307453042145108629437479190290401725267904308313674478232461165015402103438801840782598161868876301305895160521609742656648913495912078846291274056287156070658000098902178888324463626384476849438561721347603165042893473113318692700445381753590281434862778185835297015745843580457008992831622092835323824502490527936443121632615585881584292845638232372233271700469851660565072398610308814442491692688737978599479319387388030703012697745874208995497067196129018711662060315513572996429701656681799557173178813213351471172593479244487675721520101206624146107247514871138028838546910671979803162797868784324255427309151630149076608944462016125171256608699318634144228733877416803791640785448385926795994951736088145055228754840175641395035452160234286831538102645162681611011263444341766158832624481699952446460866820201590198213573299665811033338809255929163982986906038171516102862214209781272162228571592123969234189321642549175111165513226139549129425499844944926064159579150189151765707785964339625797586133922865768280889133026852592902601145169776810152162661284514959336353115214607357411430549173329155815786298456915584910929708111786610423233986976383432537679359923398343438360037173029442455911587525847814686589919069673498233787660099660022173637557703436536934363853795120417482228821648773179171177204394982378920610018858653986244522924627477660070480706481160600173297974705502339939403674106320420653743850586834660156529511830641819972887343865210150994548673232794972885760121152997502711976759195635683525063632551786637434807317007995217033971560372139219559994841849000802940644370144298480878175656928273951151997098987265989283096835961539805405077786830690690833833031509108672719526487471757474151730416906241848081537582406764397430438392790998603141771246296527235359098898161504562344926011907620700411928332808436215826698457385168907397457660533386714245174884678378135481569216590812872408880528438633760854057234153969929300806192190004424790511110949130081578082099247998174045682412570582781433223474418684990368711816485803266661902856586961920303129321768388650062889453771873432822215836860449867390418052652210568908273726034818417770190751276358655361194381735133744070638374600039370169434174741693216533592381374515207523325708594475549731845159356295888597120153176632094951370154580508590696194014864191852619961984192958659826405365383639602050110328951300062572933246492385628059043907906013208290695218254806039881362029848722106252448324480842241862809680346411738429926760291438720605417229960232777493842063893311004291582602323337250113893561735368238597698944021295838013735176012838334324269029354465884498954912156936662713050435629695947778971591005948570669370949202376411574978348266117957718715952737275394341196812151459799569756261449895633747013328242121706822232948840645821970329490221574016919021780115638803089950440971448762950999091279871785793100383338625664066348095874765239730615543630765490481880230857603901824813139219192963252953721656200094969054616865129477979480582294371379441641006738719362361029627980559975888494576439078817351571003715226419347571167723344475907530230170352939706290226910171847871402931961170553868050659878503780349848606413716428451563409287832310064890637819025058726817106115906015225368990341830488920923994169926740724078391692868518999186043245012066599085101159088676857395698686964258634326346339523101618566520395007472647223611404838923474090028118404313371182830423603949137806067303106840934070058062495382811246491319678688239411445571671056508094598289755404966180190563340945798163575282469208246557089569862150406655624314232062501559673508251904866490735453005511831008574371431527289617954312942554174139524770596381805092269723353947355984974856136912920076300341613914081998095571166401083323460669490240635445886222738394886431279242803297622303251790071959584912948329612841068229920173685013941389909694117256739886345757850116704615157760198533219344907505828452544844919413371357119003479983561326913452428536022944197397107101799339075911552408894187913271881074597757998447430167677535036274369167528519332315765415475290057611988669867707770523199249372031895806835064060389933640280728605547810589479650077925239973064725224949182872840333242236959605810074796881258228866499597285172793450983520778870360548066867127473149028922326723664182511842243329987064612133671385063372765679284708266510056370972568683620358966611406631709149287222520399005434379837105458220496177799701510176116711030855516977344144436640007986527460717429694442793244227685577075243153818964820802186054674996405583248824662169477678977600129245190524700664586131665980446830564047456062896368914107320368669073663005060895026933206337720017488483882440222360784056249035014947068820621815421315344560718098746813541484274370156550975892092705676508522365277513178752740023291851639807216715273890631059210476750904657243568071045628363336348166343427221570394016593851580248896562315682549845557527753422560817499596500865811168877119153355939963739831673411994384104323391800658666927185724663569197281850416600180278241786127866222085346063909105255199866046375988094846313497186237014362193838913014958786602613057908495191870899002083038976636319356411799018857128288666206136145689459681727099417813233235621014591055479369461295597327903996915855837848306547766803025172347740503757116835129516182932263811520178967594334903831675970048166423143743153433520299550241103644391099487448397237431445521221612940928484579723556285346058994252207649713570262578208791257089683341784117996175449669120278895908106256822561414409391548367369772155849989460045931019319664334931392477140148905198988935399337169508717359998300306901124667394975361244900271978650016017138993384467628042548970730556898088782072779311790044140532555330509716322033556059580670496666934253197123174173014031313647096008827489445207268135270881443696298460532609381676992591219097793867258057191963378779030465640757297548572926804860049737087208002161794522616423716934855950437677831255235932854903083350622544761515382561596005537809240732605100366276213166179251915771247234109617705469582982071570539429725829769527593380477069704183454026901684536955222425270993994615934808859873878188980916180034582426699688146345359023190016514617296327891539101646398513720496110457878165827470254897594328701715943724293749127992808100512383917149827549695288592186755781173656629745369529837853899697288721057706191890301646448015857175889644670809264242327798606313899248341158100925226669118854374491040320644291432402536774728136301516585162764821919136658386586534659978760294316887264936601163121013633227220675228594143177904402579371196053035635092937688598012844751288717025864510393175495442170576773926056956089664586037017472162048327504655550708043010572783472601871252557803969378623920044964159079332555029472906239212568707297726859862150941001225649560423937666294141325915034469960075467098575372066103093474866289592639473578111559903382498375676708695483817237003912828621884527627366348653313396554771011815051295419630217097810679078820672602597237446876304794699187741924372107343200380824450470689528592858395591453972990388007752704665691310978660057082068120901989816325155588933144486874281437314647182737184214005030337782900517294960587383564076011216245086280638233141447624961942934179340202523831986493210518501840659851493357658481933921600147510905961095325800429875553488319425081812797587952332424136000553939933379977993353567479539012184921215440610629205281239916577282392023325102152335667323278704494065021822689931181370849875935171646279160905535640747109723445788951400098950657308855582631696674514302888754119948442786695249860621886180399661823556188901580158935436971748213591893019952192625568013546626657484457077035916098906847877931012093135605679452794021579598468818848574460972374025035587177424153533817778322866522342524237882184666003580443672967673676851743053401560983283940690803842112682884524013074021785733572424910060071239614359795717299228989272182011768881072043496539986284696038111854996301090516767486597245313843832063912805043465035309222208071594878449207730595871773148677452008709697350050681939379412672532576156026128625580571956842254469081928461985860741644808654185198309786426857962747922797157835553681384791618153689987119457541887589991208106285930298469903922512987279659648899086662565248894310700370430221094964098902465840602933462990126561205070830065070259676591700848119271097736153117308885617125128938808244857580487232816100398746393117805357516826343033412094505776059814144877430965294656311882419921354171404353436574974123286135833061949885610661432335076486703646058889531510228836969035888572717732340964365716131513875716312742427642552643125946837882099506231364269585837331283402769478459148088388733360117815571038854044886528026292668310544458819112879424758870547446773229856917163271501840513366037862471828871794334636154748819619938377550834367163551325319720892619047619275086890736970990856995605286591689376988056316600407240933045576239506846589147815428222338611325847699017126038581961497080789443765909646314420603479910131660937127661450037768289804386448903994629851660779112665976369229503886548695391792140793825278461616531934146793871426246345715011475411366009682258790411728495716438739471329345588640260465971902355693646690267032953442640518520279591596961591620305910034811594853735218807304749343766283749214620157041248619008448340270983094994391022295663114154118391062821033848946986140872340304141117934398286803910451761355820268518297674907248492878900798650495536000994979878565006019504064703487660238623341311665112802281545270464763119188668717366309388428226924203603036351545664198066450717433096131012397922409225760181792559039609235106866832882206213522403233744550688034802553080846661770596068745612219516185639877113805998256927144348306496770301817610687520267193380697335926832981683134133465422999528471819101099000874789140472323439271836681922901525876044807020151933595003425738281491998519442990798422468654631098235020326425411862949766570974150767945982580248029298119827120337235198496346954037038338042090006536745144903183780536985695392939263560451435229566282029224458558522554322486322214087266331959352243847919391184115126173899949321780164318772102290073579758600087931063829291615322103041833564327278021109972479891037813416194677504156335230740427839372402399937694108358386803465844169444453246403304153905483298182602121609193249365804938562567890165132961514321817670895019029078606692005415749564340560179735922694965957339242488803345236775339210427616490646868728386799481458201696594155433963548675333112124446796631793520682153764080986665696129949820955704271493935163020436477636985642283121975701470245399885896734481324968760958094542217267325125381259664139054837729189834217480925431711582362475275286074195820694851752060320263157421304060128008449528574448692249182176839586469267078077024606986340555365252793037287122191106612806017330027175252609081918734408835277070145047007988220469164231535451418516434051141482445731112503471004419702569768557449997601240330828881251680242096078571137882500576544038194007663984228824147757593024762084427826666393336952104182870804281616696159411797968756368026421693127980153483538715122918173972058930984940214152060039122355575601487467292719756103141892440424904483773291296823757673560416401024953673913821984612640008347727930515023816491985572175987494602409083180978827857212420534701856789059216394077970060696013121647780786373288515855985021170702662379851519140671941804730037885974241664527787937671395376273165793371668284301378723732365170728243056539273063070388853969044785191047096178978763312425181460544681941575303521046689779660820124668090251025096197231439971204589252705890909082329131302588053033593820586464009985929590873951648901775449274497761105508535539802361432828822875645137147019556887923241129718808099037885747258846555567575406658919069581868990612937595685025743269435801413773051469972742182341461190479782230198950017625947568495475702357064297057887742814332069145192246727841181441303167431079765159443556326259590202205516122910426104863945056759741617030775595274000457792982593479872835282774378319125302138279689514599647740623323932151776493487047266496704229400335571047666692130419136467698521204104145135517784895888744348135804575106155912045602244866209417791526469681964858523399580336727990923959606001812618489887291675360161000082651693577300981006758539304022405684588591668429983166996506581491012870663741921310959645823250635090133197180793494423313566095641326625922363995521470394310908921654478093866849664377779288736581431531612929892043514496798116329313333703581513190188197420453450920016425538994879994436388335658402077504916502917774045100019574074334796574033549188402898245564895388467647815311826911465073019523787863285824534918013394347969426265469850861643353994850975838108651782548620768332844139428753114833390234486427758423494936892887803843643081227110875872641325068524033369572210091322171171589609343369070062316150357355750993893075989238600539897913515887964876167978739865491665185738568871553948859285713295324392913734001404032730609200297256420733224938284061372700731089752236032710957670758550570567255887648002085237111050230503247603957599626174798179469376344746285851307135758008666754833041295993693871876035781054701388923392942475733876129889124225783237591716002177954225916731185217514733854876698640474956481121525970589039941077661249121411623335790143227235699115559684464111790985167016585527988204895786293979898349866989942420669027423696121900317586995562501999913991255040154872266552569894772210238955223741494795307646719742857314469062522943752381570830881193464288336963857315922084820868969449163330859599005292703218440976663936740990693025907015864514636914850284235473043622732487574150974002118271842523157793689299450762023138236155849311087594942980607151555405429768319139997897026858378417012710140932216360548686886723370766521767193085258134854899230686508416425171111375007631861952239924803159940572434323092074404631960295046254101697964541236016623449217706814734271782641104433497637040300409063426241267117334359362916791292513395116660427316258931740656322984934390459073171393126907280988534099314349595720472180058907240477483519098520616686047290150294824190808415458960514221643165169922073998639011521240733065869378231861338667903704520933411841564101377573479613233763315040533798668379133275828413504695112829573394222639773780856564356086772937272697293982060034558032553625661765946371774876821926708619649847700825416500540848458073426413243986897091067471590893215473423244449438501751465209133348797607786838761214391006726026642471411877057998356935342469105565465491891620651838308596396690008874352748748626940194364533971558190834191999002938244470100237619834013644077861547702221761573646919958463850328973024717699037341699544770325064303789225403324600423400532110640898647063385268934483523657688427638809436062748722330193222160035248051054880896747999892016528696704940518545669027499131131501623865907546914220109888412679553984114277926703336157479875402300350226265781355712215646270965608322191938617823348781223097622326322418309730519158290975137837011702987746197694489961119618035086637091690527675041325993924205268327748580649418535669544275327799181574279604755663487017009150039902045562303229450038190588428193813479424421348414397833928937587785560268086334312769766082339494337976967518535171491544598557214111172342692497698653653272666851448253834381387970571939924797427547997629990543880270122430516547440131138031600577766879989458316432569970277016448193308681619280029054576437125347236981850530084063379175302939557969206119473640012190579753698652716796477731514355288295507318463674807857898908298978031272856267089653879303998562656752257021591178224830074924509545277417540029824716646931355000381007110218053186965893732459949347108009888128024227081522480075783918326884356954206686799930499593827586050416505281171011683190227417193336231900597501474400901723167879805822364671365728427128090770025741596009906486758350081150589248742555298481556392422630163473870145827719733721904745933586787720633429113861710285000783326618945336006692124167776473957343154228656411167469432883298814532016883109475671365525218912972031917159384960986416259820637494901216766543949046276861171621490984196567477920246948074054753181659745217573769386082600351089218949027441888436679686343778283458649555695180564378763438099748870440043723098474821452131911172393584614311800736829105819930368245296788028528447883163900117341627854971930653146231899527489345210474381745769895718312638771207699096494631996912469864523358735132679275484384327417877535911672257914743504627469216636423481513232679746198620906113270769014296137220800457192650345095672010302218894912985507747003162515215534898665721609094208694828642320536855620619021625654861207675990473291245773122712028389890013636978428251121951848395198541560206310966481052313632289183751296848777740408097934487692270873111971058290882033241813849466174518185296353763744030034022542228413396285115317808881561753533429413987845090283579036078511510613060453395816221912284783518460547649366331990496872015454825134828407763535554841418226799664124825948805695928892921151046705937851262129293209506264916137763903365010383918253658150281533051916767747165248058818008479903124952410826798479491854751564242367972095379010107988884377851475375516726289534622327113459704815113223329534609800870791666726160888605239123492250046033556712164620941486137483137279571280330421146697614787992413670647289936684774309580254668660634458648379528237396273749126267753536987664533830705716237538070853320442931164918478531299308310558932455404449286935225022103867555071150156018821004412935039237048869556085386433282534455891538787742572798041304944209850510620911015971526543898944026501834101539033079367031706505977087784379144381094237089547842142142987496449905887367977860128912829778683061167004404478573070574243078748898740371743273549962872816678677662575872360384681158485532849315454062463752188563803084844558474082663263600530032766756570444860500738692188839894893862589281610718376939012072899233392395472351737549270482434710082814338504263646020386042115959101006879718969396545470421589852763688335471569318720343374744645222893223658457412020772413760140373998823334923108479681974119963036273423371304617148378759392472167386130107993557789634396888332367732266443928104271018649246214891452756291282761691752289099493092182262725708147713774265842249717592069032421641226370682810015986045229002446333502561437674748100987229996276585522070166049000403715605993499639080726808334153539139273030398975417435921204094720659890829302288714828368608885299366460952900403046982661543778561478552908191088350892823482459459181604008574556719640410390713780429880277700769917372484566479282065413224654097379344238776449813130613915641813022509848478877835853616285426972256931013233980670079475543146011303476668218845848539554971065268031959394598937241291191681028687607696800925775944330480102453015248605955278295430437389648455692267603274956108344071540653449550159688555316297100085828223591058838164452029451481407903181301356585551830029274395243822751692174303701013610143265452955284305047127365518441054823638205934306751735051577100510431522858907089715352340596422826582926735805002090230329528306968510760795361440899984684065241859610239645797702968243847763529680431086355279990254950295508923208799277974388716160770240562215766244511861104523744296057495249229123959669361397543277162729879251569246295011980089914939600184895623722401145986159077305003155275803144138404212729128206585875180057013896258530251984041358686975106710431113389587331081970591642685189615729790396692067501051445869073398182961741759768030213332125079736787054166707450395638452485106890817506694577609847055279245512980625929314962757661547991160574398186990170938546215072251680828695160466244247251815863738272400361813438220709157253635970434659465687168296721568657792030073188969980190905085519769724959836576534200664119802208084595911448903536002843628097320528282177624786356465770835620757779925687330940348916408047592740063584737203308582362477669870557356791267897088770757517617979926715550328245675695239273498080955865162407757175868063687065661999864778860217981730671235151825563511927756904245738963246900079656313460349730674222319017398109387203709644625869370464143919766145120694688635265452624696168732168153731277072124747432716063084584533798263878674791718001711004835520717631840109962028008928205571209606508963793060485932259316354513100596413164941179895263459726313034429059746073469800053092450102065726396503672802677172895882676122325415520829491385383440147977510787718540008400827923911988166367114885804749769334170572051832229543441732697375015732944065317709581025173501735756880149920687487387309733821724208258289447006768175089551115825769168701880962212145710988056903203119559503624197503347864530982290314030542976291213849122980396380141577662436697856327735298755196263778310566899888875720689470114697980054856445106377699536864412768857016652404917984640407839475919553219194718237928116433515365131510541860045417255443031259271667716107138600495418884537119165411310455423419177027583309478609472488145146369753163359421197461671972250304306623246321602659949913693198483870466203826894594992109068820834876681018773009370027524590097568753650945216549809202316974555740017947050116139742554883398440299724761564577776681184098360586289504336304842307653607314825498788339671170067778346389717546743812998941316075668953923444207906050943264975879774913154697622324837828608129772609674500086950030097567790128628213028890090192289248370767272696701338177670719144620771729595850336558676084202013472884497009281709034757862372494259834957836443563229201730838542065602466693546352261504963239217347101264509897449266757992429325837243259181904480351775568307588689895559507512552057220540309714529238073551027740280987144549578287513201627998831635991631108572871699214247318358331008327273916045075020574343258409273435955678615001819417124909182379726994883540167053699747462763227130199399467711931425733155567660562908984084038663530695687597708760050417669632302352933804726745197714908678598252041919229205635814891820838717850349688967097512786691883466569325683690591666661643365442725466301450156727517073681035573221569046775546934663578215250178899246667732081198022256694043806475200390217251679817328647689430968939607376239525359537286454171867012518105426044228823089660401298482235283030251734161402726045122768015166546460962925988646079785585342008346665643407215760240572135397462421831035153658410211359840414155868109455025720279104151421877338920807891400214637701256507067700612521754197095208412468521701435604216107118604339157948823389769876843246863241033234361573225844994168818363219467584887622722523746075879981846497852818871264236227001846132571732122678519006739886400041695569553446352141621239795385092517792344109376940439325840930718800737991935873143046874825231693828604952897903903799292014237835022412306939221965704200457043794728498278153683983372823469974015156490951420432486665366062606335388803168797110132725448643125596521638968152323816914098529450329329355629948522530458577961528872285628639526440817759134418146051902563041225064312340843472963840649323452683568260188740739243806874437226497970216095183970796056514883912400008276102661142563995457294230306406882431568425891998063800521512373906629500954907309674404440294638248571211646239448980617905344034038357728528453002611597897410491218304535118259220943269856845151023802276846304593927295486330838735805129883135785934143539369534195030307450786429380208494884627438724570808829158621556489388399968600028389863832881956704911301216072468795335628019143544993983403538344105154795728203597927777639642059016258894594800212279544684288049085384536823065692241142314655253868965688990484618518517426899637172266476699282692290332937517917906144590577495096168634762632144555837040815365783350869028270711596391938116261979206749052009685671582873087703215467809032703639393990527151531195673523340358240376277657668755547894101289774267977831430472694773849017188029217561239599714850986723467630429724473929564306194629080975999782994654846798523109272399443494577402251734841579342907985624822818354349011336692823522894749468144172654687076354720649779117627487533543079690065654243230363312189954241521438978895244638004832524856770951460330184194214156521767863974369230775558978977968554173027969092107566839192104580377744535279066156620122812248087701276524828513170042216702562838400894510653671128462297043978683949116329994392779644895470496620891763931146104681879713954665656162846982604564686667861335070184757407471310417189433995096987454152548799929025787924319120650978096419037800332934725532647094540391651980996964300277467756898879638414728290788139990082522663238263252667472921085096926314815679821599558780714253377405462338822044947399352635102486432550077334606633663470336822451161983209836353260231378370862592148241656261417034819354506418475000779564425581758651686199702015426954572170342838052483715166879873713128851314210376571748902034889559559897603114152028867296858877752537858072509864042141033949911403846435720844297300656634988944202632180121102509708065041982783594180081217023036800369989803247312373703596554598874180038250322793550678508136309089653126691450569557168068320822852613562543623838246392333465140840675628378390255142663987514630154572700548786775330104820459303901391882284207559138721377719162634991694395269296042914103656597684319338043271873376171844443053252438734895636273452169128477461137970574099913714374086491549487384870658898498051856439568867005529296708392146457591205147875618781165390802557732862847317923457062856167843894792288607105661912158546754747551515240002464206702864107894673525295319036120049323148512499575876459048584817019218294263101311796720986086209449747805180977600221573555483498233007531354590647598208402915093987642732096880300150541669833298959912028901598395859779644388268658094814220878821690517036689655731787660850585042717094307068176022876465254264294587429685535580994892914993057692441275664909995973726167372808929303608257116321807685501125658378397261398651287149757287017740483557246565202836352384421133242596333514741973913048570041256172082000962132741219750811183562768830618356983857685230861576607645175098037363660689613955931111703160223424641154921507348315207035364864892400864395056860248761881477356897394204410707430690166131558647799786466738172475028491462702713975908840814969307064154639281827505269170421901714621545504862893841693450241077576903152905916268794972423650688713464621862337551434247937360065648917003195808118368279463622510661857915132031341438330397649285793572867129315933387763352628303098127882825190966120901281118739053558002629649452997115141807735409541671326353749152972640147863449725024752991490030923834350275858014368298921018151482075101286365977364078333166682811851204158313281588767304810599705172983810722891637722433167623987184923748828600543003390409386761461551020600261898093121128734356108217325040449464577811451971093508112293424764873421478317465296869424048941135066527498300492591448288061775481960728860670974459157872479475629127557816550211230122903598887608881780380831071480290257291366112654182419449359295459376961248937032473605867191170792118613945364870577323486186530497850786567678746915261116742081714558457031318431825676719902967898218119481269913373968922320119462759111716748740378832356622394203818863340567788440626149540878024307083102265307443114137335865016668424694349868456219227292618909932349101808284468441022074283749167368450437856461322654879862906258062989756853210370812830260873872159668740167115831527798357143682200563425490652859694613520913377259248373891689848834638793670789795289885208294624143800002792790188601754543461800225664532949934731998976055545476444966198583340873371785181119410645280385995361498513072573556683533525690547895910647313950935908540504722916399447567257267047607610239618646410856584568060340271720484013202498122231958176375171634646491931574487210337306448408221683961284744139762128667047256377149823722066663483430655505984797113277600731785361284124215823757239359389143298846967989430740227943886791708578444477539596054666907205349410997414682599947981386462349005432474590431569232020202489052124109056891939757325882949942529125404014832380851001128390996009925677137855231307338302802458677029520978803490898914069608737844860879887136297200142936352023358641584835130679290473877887069701601434118398959972783391922795926925712607277503182236576240809310186106025862048022402634662536381784968879079234478578999405708338694005371910425253203546728124695867481008296434997397084724740773316446313983527929520662277786386344101393162758853920287643712703602727214770688280862787274688000202277288511050394943721320985803832854919204631379354480864679687804109509180458075173077232137052029097100818187309985202153739910667215588108452651392372810462212451588408728366326334610072838989898604229860453051883643633689824544516616572778216195850971732368078980231302044334989041744284564477321218342429597732865071059627003634387333235280555510389558836292013455501529093869605185373986999912435396376030856148170576112915826588636686887724036916478450386811304527831102145010732369714755931573484347391387088109356116233670646143811022473258488248722971403662135346898790450549251010095904897048782985912558624783331220341499876916796626488123974774759894930792834418224017065265297130304281909369156210444227162209113638286305678634102572903972080998842581861244315023590925445360290417276801996240290331053149156692993865600767542476587348870037722885826898629855839133906642107934957467603971279843071429980689330324064575710127286574917934440873048791231171533414693968988697921123349052872199427914881293144181236135430290980224865168038310188133478629801609286965713731832313539223894391869985787239932654143924092241673426995630685265449389027658553461114107357522958229306348419186893379589261098944565817367721292263451506373988250914645978799426887387438340911955426453561969870913136509188183564124053390892966334405937828424279662774472855833831006775860201637278346891109694118265793741870427728624272461332409037532089594832784267717636654262701114255861753337875695435851032441404257384448096434465629028731635164501751725134769858220920308334778290177019529259490734235093812640371244111834772572815496992461855614128527653091666515003746738366032827205745419049653675670779735748724174234555090930931520754529339379243848358202802662208736512949100407006901386486939074013235757830752951936110057979548759907608481718050232864090690887664371037338186962093693889761072768158108383396903974723317841524463232611709822653709960532462706185809075012081685810750754905805533186535973289215861707514103244391870607319090280919661030817676146320442853472085835529036594053439669852239352388430101310524326174279205137150707147794762411128756456094489417308159078421161575616306676657979485020739348406454822129604626619223658868062382152629606389569425110552226603082406673954947655504756742368150759814851515416279936795128724126361801003552507837410906281867076716033095606528571536052030327847118179855664966520099585470098738182400707715315892593654572642574065938455751396208045187650667279900335080927645961185716434850043909097982643587057182464213119594367025385840164361585831982640385512841192955737947941658890426174903241054126443538241325046966481282285231663791425907154594698890338571006117108470422497758788065632004833069113383646743421589471730615628279457496065948726165844379568651463876949590886234402384115801836881218284700249967361010219371191542168493086519229561549816533059519758521652182038656540233599718559981212346403660790158629434356107902767116194714186972834802484593110552772891955066067919965525203295020631483152523449120423506222776062766450621902522960414198910737315487949655806944616298446514157944802027875704629735786477825635631493805803303035745361444137284667789131735993571162951792837819601809759977633510543923804176198765924854173047993453627092809504269261571903354439381546855648492667620588354152717612172341489100211572458039658032545785825378085388243685685331670515764621734784765767809404727984154946478388451116344160972725116943168304456787880827694036313934025290791927793531097528975919485231081613514768777122491506660230611583843343173940379080661194182891610031951381613139893630362056296086922785883359871390417682326646517242906023730898192636059699296976100024553180164038821417264029412690192480434302493328641489845086804447418326024106489531790742990958356388931462246379217712949555536358159524141170865684579854821809314809789203170977193116720240069608924962068806275116926413514325759669672693729687197352112232872069771776617140745502570867358192455286929370436675238819369096286921899016199344193698181751739509273144098614619328826896963690449381320565682594948004066592898987424819687763837131030738120642864232024781582723676229853167022112963195959526144144129625114937931225653168035810885350457065306315974879162283167382582121827150316234751307908917264590529364513263888063304372157617624092605416819242087923013399757910977853198675723717446097483936073421107254977031567742972278679944455963367688092818967090870009823837617355833525515397417578718840550829629993438940846915435849618521689348516056391449567590741424455676017243839608715584212499118576742334252909568327358054326865349795810265142600675380652703750706505006927865032527732621333645001720957287533737372773619773475961848011522711723857202065948348737701771123828495913955982288638954091400770679968919557338994172220319420675772463427517938189485441048260222457312158840919848327783666993639486896078878102787542085182339836524322759696302001442088082434999239049059668139095175241440048254291126686400400382562437061675685936839455365123169563704583735585918119974632408408626865323203836977526567794983821244824202608725526057100024584482396286361223466436912081880341663293053936930230011127544039483961498790846316477124244025469993143493190584850530474284862219637563651296578872809476586841506581625219935140697155070387271337234882884558700658468051114881729084950267565642035677144306596942814274961515658714346977039423741871508466186686359019897179896654930435997893616112681459349941749936164059168078625693834240040614565650262493748050629529439174296311429243731623998720661977893187363160105135443780338457020408216590035301956284247479193609700650862239017665720095915578563753197707953927948007674302932114975579812786426682060959108010884737311619663695962011669497586576410681444521373620949717416123159627165102143973287249808440453674346481726497605309027923980321829888774508249273520763977948962336775920587600788997992468231373203711223741058112348531555073806681085879948555777308301726461984712059239398552035748671931423983835524544728356580263953361123609987655839509248272305862731420468235448733791747421483941292805931830520505490772459948745088337607126350021810785925528573519746036574342283621955444665393968082610903707308321524404202236934459445765360090878059121081605687758033795219137156382407249463753304585099448902121201693563301007814802866970499240736727215894291275099271145922974244586030229259124604053713898890499274190173542976916737557531346774409602222404655206958289436838293211304710938829441520976179739053677780565529306154355408831978358441155814097020091011735739907441597904730583121240041001951518991011489986102183802011789108117879495089443864861056686778817558254054008345008291062763793393177338068850001519586416709402508683455882440265021420104854681427774161340920687987240648291676121413693401232077490194233323453170655210133798815393915763282187291498977805230793134977947242513597694889924076904863177997845882550404986078144302295372262626203173287342411509919007640760936984306500955561028701778787233208718406913906735372454679588978481227046010854807711953829527420079702682053811406160118407199687399950405494699751846538040265232854513349622712411665952077891296239883734776599194950540422800597046128035280159565920155492091885470391493217441099700164099652124665662313386782164690720703216754428607269056050070425880924281328716610304011244340332700213112192040034438959002372499814677400673696696339315258234514387484317169039048328142305183334803055300553324495442945948827031467690349908605572898678904561448094164291037030119615531182671733661891899581346602261119991380601536111074633983941438308581789840561916388560647385856413060449018457993704314294902783625211935834292609527803094167962957772980993916719136863435583474585549418379986598238158111824112574657790981615195256299814367481302341652864160397372381695727917406870567691655907909059344123815504743138987118103411094091932891703920480013036680284110936209561648504703377556171429653108608866164902811162219935231414056725650923473161225496860443552623583844791579295195030041069607731571031212234995665684142999922307069784205832008087773371970770259672932035347662717448274072266241526142056872332382033530901582464488775246329198583364282536985967342293774720084916531574575418692202688297314685241800530404155033641057598514291516891008684831398824617003275614495627724624410698210580056616899497038015372383602070194909762822353985048628170031163825404101134211270549443505161247382411732581002452282336675557853447562246564348108790532732932426341163384423784150184611010723163515449867268015376151767489165867665930926908530043819594001322622165923024003147596212950248981412829633231538219569533871275252554793680061400412416499909084294991126103295147508969694721621619039744153353069516612308005197561150945512669359182035869478185649994326463024473440011008726350392622621873205843025743917393970528124903247688898676859638391107126805376556573867326903819300306179578850188223626310637292248581129284578282838989907475448881971263235398385439337358479057423491246099145417295359377365001572790805259081244975805789534847221394858245464578470953100911368853365453965016389909310441962428440448144778846211486505044894628607931714608285947335175379938169032534881545567685278253964528714977319650000604950849519043004591212401523316809638333567389087494807012522581419764743262590453961870480611381503254733274626977771788100482721474426425106787037822756889117381186708147814088854172440559801260097733330509102619140735530123866856211093266530609383137042309487679647491793765229596671437187972998499968485372159878718937338952534978803348214129459725586697194025657248955770606806049551978729566341468209182390611662319532509664284000575336505428734689123942440554231990459319932422765633035406105208723829318428976917164472966200884618522138439824627727652658479645427523645263053273527947818427584350202326102071104872389026940773408076796504207320093880102405662567308191514099157271647826897277308084392093646778996600282481120175638933853794262994979456866585507682718738848309564095248606858111266631609265265579480765693425145831974340959999949055158061627222912410998798910797989174977514079392781059011003028768644305169921421500481416645695790435048151637525026189548926152855887209254100075911569601119155751132804456932996613999166088086973808635602774150696172043742125123570190875882038204534831073607601589175616789491498187183200714686252129670128297236153657990516797312286003852679355508888414350007677138348271455793067992505737072996346020491523492234054552707426578818786656851339715464189407636286360109523419488479275015849273997729115329996491773341760442577367735146281158233649072463491737610541128648463560059520168406616528513840628875689546419796035573761746005283765476504684873384077566595650415915468266007997821922170564322317536429381965547483693786813286355624118414231738297802384961327486732659452524256102207427359918864635587113307971185964813616516217168833678884574724629969580685734704818070516260728057456105695614824466232683721114242608908442326721543242448156917157114554925853645621889401303519009349080869832618576089086263016689381451610609324026772689777479847280648280747844458555208714749977300429018565202677005704551889257744742616893056320984159449270774169832779302861338497322292281876226909570500704343702779171503677059500554261068442507258793883551687950031651805913800666600444430322291568883097951820967402111858937744944423152241128247202743525806754790342650599393626288150391871316143185741432869350568896992324877147229786927110418027112799226326395454374431729394861510577289027872288216422297454998407265385572569677294182503006096459472726583799732999482042624111993244666540480345869951273521136476592535722582751297075278392247100902767810335340381041256652774846979190075552479795087336824658489051728940867739896346810939063398592232497004532971635840625503444545342583806691957941822319180502449142650167680566874624802621356260239177867367401532656313739729495030036918626130743930724039393958701981385543741528075122818640506416002894272587441163567738137083990966256973232033868286653369209721210968605229447500329851683245933654950108539256801200394963248735077734565732446912189990400423705782907109352981255442642243887662295564751998926772643410218825388382315968462408458028762032755743742668237953816471122681204412258497357618313180103154553491402444600965487701200332907834324068602111759408289891857839472895020619583246107994663858518650743502052164297705734850268695195673461192730337439722063372805306436419311079873188305526533111904968942968912548264411083215181690634662312606909725823157050750148659645827787825785683403029477260662337282402686707669992307665234579403339976230288610345437025730247584051439652489069911025747612186524598386424090579923503214052853041565567542951780858427682637622947040729975679059607360954790726586208174740534838105992537368758466257148867090477605160148868244806183284901438021903455521854410888186628035369438257952262580346639321737182545031448778451800787129480963799352595449494822882984590546385348454409081708055001764501792792794280703715527433938242489687904163955980490916679414793609167271506921347486470891307526735636050867761145981298941350963982480370407446935445771110621102284147277494789947849514353280125420746757304153050116651951083018757023692482804112010731766734496570478846445674509972182681167779593390891492554048264403153045709392991263119698878678626689961302012907167438528709342106408106105652688857342478735944511463617440096265060582614071637220225104062742937431966170552757229581096206633173907010710496398554896393006487226320938142737587004424629977583254167049795774370805875217022218613928317066454141590546852767522407956880006887188328628202517412861466217644530310603865532943537669119952894855668208139089135656810699908417493104376245806412107034091537044513146644648604488819870340550816301596370055673029457577017574221688772445248943613384215491888429127017303018255223523025191224956813198144467361652922230000773075761154956773687666439423659923733729068495497751081511629077241248016703846517613107139712291327767966691768841063168925554592294341566255518363238855761421310163818233337154472292307615675247558009042999552880503973703438779060160525547879749323515423143048455821828089713188261257521977794461497488415915355833970830787389076960145009780687726444114747078861613681893255004667176501974918161121356637581326481688721621496048711249383377038963964203362528763770218432346901383937809457492425675550651876280393025322482374000779597127194571266356614265962224347720160158069214905284224892166807392249586762062510141614124293045475521572415932055521227493806407186381026290075906114967923353310545546746483571590733321389730070358194925144936952780638492624236486742252855858580808198196861517148692034027878577157163458828386237360705580098670991891806283332148499622707942825309688373955045821945827819909961654679391479964310430979790690577457333978285128481502702395627501011757293879884644840803420850073832925739786230241070423820682747055068792672267326480160122428245343925297708584791201213218528656709996185215502650635783987562973001412699650277754327054529721444093388373902225359967395864790811662507885155354456052649587237007571831846063133469641312348251774581758577785767672318589485176449744379953813104668738322118714880277484070077907738472939196491079777391140391843407182562345320635023026451500349211016862403604117260393937058347471192973911955265478050262368975276832523010316188928699845126537782555012861913453800245779018916487269808559650986403589274869952453794605816949369707572704205726782757767061492271433220199458831690353889490031127783472820013705496909212726045803468673074305547297423226354584810355074974277360458830739989711477846437030387582645656452608176061214949960541223833816885228749208535958594152270510004809067905983868943238533668053853715128614106351559525294035075776139998386461280409401722691933911257982987828424650537550796874018108537916859698055641858025197068831672575418166055016364804231477579409550564329055109898909839376425255088796143239591933039263602713883191020964833266032109876768762218553983647803764861372650784701962594626303521064628670222280650097222351357837114899447355122252023110173186908864094063740239931391947975662413147343519367858511726011233289001800680139437475002421495085292223475365178779959864346644687629852318163147549010570807963342124141520893215238786838143326975695196060765052960833468057397835307904459471985790095107307276260794191536290224200546560194484304393631967071435657082182410570030332614727352599558703002427351490382717196329228664091977399959854884613389421950740476289985351304076607798316650771402397201164155790122326966769475348457923998857813913739574786719874824460588893274762142726516722255372243329693287059319040254127706686922408056348295241737134315448292045610820644034980475903620392500297788874208854254129601574180960664952424037323356502933824756024188074649758017351466900353294212155281785986400022236363934823614922461708241293563835080808960755783013358298201240752548222815217439167230366633581532892554924373705051338240865804327132781687983361228741533170026645231627666208258054739987381181114071508173036281645897677032235919825875380404296909105890843261077418352727078389517766738790640134934257648858780257537332235579912711602470985391930745650200356428850579216130847713880367476348140545525241434344156092787872294738777976887954753467049461035373965668581930653562113565006342966525621868365434114199169494093001048595761297750519229477236340060344705572755071175576434859416360822228311890544457178777904857059751267315578721480070998285288794095894192460255161488630822455660325784215913283005768356375805442601594698298632898482179248357867117832155857876929651065851495216689565607691244273005684922980110316130745599080590167168979471283240894200598602237988344852832638553728653108770582299631339696091183572839430735222716800497063369899969041931965273984802431406495889165663523654793994741021285461784057336507055569942621315132595773114495158622588793301715595294024667479318167441333349477848902140445111770407589292745679291607031912457635761090074096123167503523891963663537721018431270211840143785053715973243877389336719008308207626659769454519684917361189180812520203490250071881029362770435897602043690374601221096270669231219136489300179042760617678978989643785268930653401906989674261434845777160959342775390924066315878515514515889050099746343236555709865668620255932676629033033009444173732838240959511082622407247104419149418449900112744180070496660960214624787279654430154471691174948695263703665242490158222308197969226172239875994044392390438624798654700301017269415198966065260105332331809419119998598143634282481535427213601380957616335404917790212588560303393638351838160154733530949999595786596051667405955136846646636981221682986792733165891990058511949368052697269769416433855937430035866186153460911741603992018390802364445648091161012264935602613190202788422591819412973440739412791053872035911966869396301114423160543042854918090493815238329874856415991860109262073152549462823266796393721742047075636877421325236234571348665033735354429603150951892089507184113987641012313622193836432209678590689092583467186073076693224829513900177389152614558902686355543838270926951631381670813315747208170833823511515085928253722583966350307745276423912611676650670136889264751923546370121002976349450698175932768399869416261989687465012664543608810744244476791763131955769469939863546977787287935978210927046794745434169356467855060565602197920174797394846736883253062586540785980366495275985215448886714328658629524401164383164186445916510866006975531242864580521602305729795067773529337029932883321065495579885738913390593901135533371943370671280520466296203745211527342652269136472293466591386834788050976641189840368268239392524990735716883644001793729367787642824499188996980514750551281504253719199554203529764066796340523883359100425805654588804203368573226589173059049938706342182670881667520176041817323974256904377621309269139533734090338203332391656933642839606230269821517445696811434554907391862093419229851459602917904817713169857960743857002910760240465804306832507355044025917921047877751021537699794394908052279500700289077011404350624717739250813405960424509855588433047690548726194637270511905712288427029548129278758598354651526063480867749314025297198093031558638163309421993642600207171825929144445546548022549969860024968219679209916415453927984173260744548999661248172010367780851576257947110127340829259550890354353811323869824958821080092533440166225392277971599932910226526587694274281698569726889697978430695430016052874967391409215352130084734464754877794356404069713799416073943827455816282265761098203431234270761886901329500212905649525168876753919326809960901521843325509839603177161192181943762496044445680818344704942137463605520150147709440033927419771365471335209947127384775527922931050948895933566131503752736369769818330312752133820549958548159345903496975865789740092363203678194538805947251226890202911027963677202966076224046484860346147742994223519269538846427573053536855977666159481350730742517889123320008004653211640800988621619396689251612785378202100913002027983532778039921071423148982653614908552460901159140162771204221801349971477989052220083559891561757414181195423986853532499819431107409952216585195172505919410700252273027636116197550213985009691592825133054565007253497936808180672939461740662040836643501703769651787355157089028899758347265808072075507393935926871654252737465676040701093869435611104337932736636144812607105027608084417758900213280566316019402031170437957043664825872396180104347819651341404458754176427074611372246991716051643443198814428011504966112815407355750104293073008442557445380117198407361316509856301297393903701591775098326671798507453226598338482600222942297489761360930531236687020301740875564028122896822271195594352966337337076558687086563985196849355058767544352126816542991426179138578594425022940680814049670528141876687488388422177390525180753005077099873477594917693197864005033565368620884643266209428628279384532880607660274819602716392602503955849437459770643495443120728340960496990748210554250859784873554873679905695738967796775758269320771150550620109628449220006797219312507266205535657830543898196180910388618923266675449878136291918788485305376089964637640203522698912359337815771527550955086409470472562159120342677398090972756851583750825993367716969932594512177680306418999484751099987671269871739928687007616646421101397955809599736123209698977972779426289382209332469778571264857153253667897258459646749049445922902379990630345849763760802278466867101503229814409882061647081217064769404010785310879584684538137195169146436945842123527206192007834200306091403235601643596749365874261381895608655997559397043121198247444141722062389183547097149274092780331627842707178109823040936583469944378232830911125388996193556790090489427508327410615788379409061433025671790351529572534895727206053675170504302296414518343080383056626936020331027605129839356069359835370150354811179433470318966490093103406700234008274770623799838974164606630747486319610973908401817617698619271427651114817204190344050740524732060002522792960692890010081315855548950414395054418949201730989006692201992667363531214998770755574261868960053521310300371853344241654941997936132786418725850716225574029397928871354604867829770233214816509101254694240532038500970374104159983747938895618517204348826183880339464027384799647558377736322112504936442019967730927651307950461748346606968852696168778937550250877997582614519459280243340969645567039215616983829364091753599797974822849495573742053922441346067828171678559014950699005892553987563942007683385025856966597997548349931273385049023555260467634192956100311609324476182518265172099142553643756580846340227735851950738901675480248487568769884874448621108811624271293611790525791962816284726398805826556881954564626955908686585221714180739766414873980492692874751158881948270089419316337834109665913177182634010580054852049094568199297948185676796532496969005628019979214940429007863410163388985624949498911344457163934774863675661960159015208101087011475119922246538345012758518258544531804010721659680991939112639483442096777710613332714581341822755753646617593621128028700631359676255838273870866357813183699913284074938806862994137511944149655135027230945745689809630528269082041062055756009371327068551609031794445379728332846397369055957565666575305333904657680476811992811312689880175409295586244943618859658099182531895802965435005560218798909510759371703922340948881164207938887444604296979331300881515153956944365718149814776903591604593563443773900822876635721660485802161843989075613215310283416316210928045893441388433214627313059212966328033009614823143872402520596683195090548383687731325563516797180333336398956664820439282931737339154430839051256098171303732179110129669652575122847478720833104004309598284679418777569947140804768870260490720869213193786698185976934939154359362137196239851901477472773015120958023146450318747476078078396809480194108797264575753011511346719913845046296529273520462311167480753684669563745381733352509597075248160146084584914687896484858300024377261480422443471649999305930017782329784065453558833469660316598270323160669629867227009626821935075262558641684598230085498136630299790320536808223748683143353490422365995863426607208915047859866549609297759092518030112760831342127595099451673659001262445626175337043645666498720449186034106416245014715429286549063904191265494980108403824374388502183941298697473504907722774156135151392274277152305498787155385815934883463436389244542736557220541673045986253310064231419770418634399066843102683200653074728893817678627013357780057398266011415543810735252965008356532336230429964898938885889087463834506715672655034568689571312778204186353646984117125210416605488459138494915958445899169074608386046501609707003888857983635939264123495937221367377646289171620349671376988198620820625739609263855930525852339332800541802283986023708265881994509182862391020391042053646367425395163776898771040385945560376818731824358750006866058648782406914011607668524665000388118104036236042294594591210330767553289835730912595096161548369755779945367705097697937951499710382254837681650631245402251864086460428321270269136896519428462654461142586602079365195846413193747319887371821887138979102938388329012130940011027140835814274488448069946850681056273275720830548054737397343328048360085691902653095872432728453501286239557699644635603880401063013406523578478951604180386288391957848873442530254128147116978316848401610931916936173700206509610757242609598277742701446030880308866449899521353533726835038506059619484923941948140762784324941957505433887250684110658525792703738700363891703062837307093130121717161157910813041581937911206363455691592551418453634166004333281890086362679065448116228395299227475863915068886699933994827332024019491222348437602250515422211701983113869736364167699998571680890006640200016038354947110397656962244801801236605502623649322281950462593633043306480680089430011516684378901539567617055524063492614808304989593121971803167918152477230296404784129361996602573845954975562687832644522075614214228015074856942922895420744958953104653389543401005641137033898168915463853465354587621538186013000297678932584998771313691123745184301427436496196970758836034103880222602450019889395983505460019105806430635364890604993479665863854121768287847825589308739685460701446408628884870788228518007440523558317983743496250099035968307846804177630334752774532127265301646662992376507092862170834427811261599742320627392812772145535607556920274695615462036260393147872995644009822044031192503557251277268000970634092428796374556740998477930122500357838089254008372817532118506276829862864773901730979355406465487851632651296517344505085933035187363471667703140547668165122879734681698088669589834071213266228549893462078488700035672366586280372181537319413223326296728409407446484961778337687522904330250848905718830809383431250716619488444313819622135800030442507299738908393027117589899415680627181911056620636325606200334129205767689167685771074993250198786769824352428768434622863968255296998459601026014445314553528512355316664033656110540584064826465881237629032840674117606646978046819277585197761661512953792895486880283296990998599395343527050084985851516604057875058404242197864771277692744092299853274420815947106867226265897446448242845826812038019282698946876028878949414153196458381294335614002485079186605576620637531562549698220104013592847697055655794512828146233618849215313416325041482295865649429062616504003082020976664635673615234890570324357491227602504286083482232560974965921215006452566188860387375565262615891586448560939318750830451648006119385920634897708968972686249841224037361906052492727512167543223842629200694388437358312856200082677703695234800450985495455921599009150019844827085289346379359142288669414983121239101451871266686515522211215838433183830008546774165906360759705320693143497978943893753383199413191902506401992046848508609726570405275926083613303611732634817168669338452946688989486806681352746805345689868950137215432189572545344168834367574693525713127941072949343247198204761148644109092240323456411562893632815532979383952372080168438060246749111077026102533037388045092056673574443636666865938477192913862296878119374257143626978896091013399352451349721291612196572442454012837097105202630566208952240627174460388199518332284741715036049093372987218200208475753359346138763185537472892037537199995969724944465113072167847779118445377454183511141541338718391593500974487481652008009024007566291441504379133094430219906572483008340093119218444060982508875071298428295797482966849369864603725524285464345142384093744725276111604148928690885884132319206012893466587940359693567094958002691484469377573376652387192748167104681544835849296127363097134327323956930336736438278538050858890218980731241158081107291533317376669661537100745374059414867383769027677861166560298357735523964619954036376677461291751342793150424671546913911731160454245515557677495517032966046880283091407328215747275567728030064094157602147740877258652966253523324557151271447542639742670746934605025896563238025660865476662342933205862150381125484740688233385450788729070927870088985394362574689528645906695241324375379181075082727067104036483546610972433776256355764602671749555118128477200565803105079955770496313736403488430223723778267872616330455964643417614917855345692544147381343634649940314687713043214392882848895349729870701949670797762628770387170755929481724343508478650053674411265867761343258847457048432653605679618844546866344952736423643191168415998822362075179273017920745968561376872848110705631829062607430683869736207638585799673498230337915722707901392886956236909055612307848981986025216231797461910314711357627474263073975608120619811487147284115121132434831794693087483271083720342940734638935942753349380318996017839551387505667613102477451228409210470469421922007472514646182971100508687712928668555860808173015891703861383804065399036599150708623839954520071659226248636094328743249699748985194106679816614147235402228713861876242364887359847716008969147231473941101082207457204960134462617255440120680310727621784010866130990915786231460542879084918721391597910681069001789971293757903457810779412263651835850202279389993293673999272388956514929535888281312842273633173445592803966815804537283813480945259348718392725883118506187828634872880736293262651609673625037600099178633437813601196572221883517996867582854817192959372289839069369030769416774879789668169981745222639352403018813421596345481104652136935693620996056111857181669029211780714838363727022427820937623108973192923646047648600870745071895473826010607087241017669322755190972240770810111608498307624734799677902444488159903427478334800685240189093548538430458858002748684084126578814272818028683547508232694298206900679542748932023905857346990044657859448613445389809458888886311949554037649018159004249998522883739767610625423110235410674558859413015384744955772285276369495330305087937659473824009459720372642350312863004128935664154192507948060855963413482313770780730860759515560242592444553688466665434352215604940029796271979179937166137717016924944729937426759754514318453245931168347385470969678812249155480656537245113186157571515229710095445783582830407515107669802970540138001680933690033322004148353002077222533788680630274050616782526205326561397467847806415260645916101349031906125860570985573611012187774747422639877094663376374299798366260677530579006699246976447205267161408867670945498317700279287932385368034806292478280550719795677272671837182101957987304509826938901718907666906389133728277766884357295051282518102515903657903022277140223186282074094766161291091113526877916628528230233031745242149882422754728447542732135676365284209315475429779136742422844349844606621550860883674860894344388529031055605007469490165856495608873250133330375871324587510894982816548356014159300662790112051917041235526380212227967920288376733447864106042273198239566186877876516427255774179488579288624716210259001764089165138525446843274029124129723109146947352284233010948727825785655227033830778540779433525079894168429549754153383520304349622890016682100740672987407978807146422019338088070810322180098587646144519407890429258036027821257359984102768860213964860415767105801537439590692279610094791119073589669478622018591685292201411466734187059619171163977554306186258774500599307970979248465135062578271868508102317719149245722579262802220392868566839517011665173058096833366778920320715691416744846881088574902211281719654452624118936224592788126158597328730649533136238366745216669175952410580711126305968444215714415633830514055909337765338340266721957680121348832675544508051784575397789559872388229857761812189561827631596622908640559528737770686407192902945319692081190178401999827057639370203294390754005466940878381176981752924006105424513042396196578323488536704480515878351268299761574510601549260783096914906692073513512952327172115732297980182128548178841791345581787938515989422384067593800492755844456360689177528141791818781717824575089659652361932352835889337267225876178015649463327386489692509783528037893934154578337258334664398812179361526213153311180736452664887156601487373053741058093713989646881019755315131045407032344778026713212996537190931564683152302708711737922699109185127437560330440120317155783500564537086625605131006460115324307445207527921574524271048155642249884687445043578858825779883283534886043153291817439201620444149414554522163131532076226780856765811075517041238931152695365543270902627033477896370203039021399775517727363622399729917952247913732440456862219578791184618996121855894687922125352066553209526688417135836038612982870239329972006804976713228033834328063478708848537638924991635414031866719517786517138025666285044356452280800400841122654051723224742613817283752642899874226871382017967514410049970201313766354702041585644622133670142619119100556268438697668603713672338143219380507890211541408610660039202189682926281361753266516227034177003173828846728807266759270389052128016743934279237363165339490065446201245783169112328012921360081238450759043107454983616734950864977239253726001797826707673826761757511426385713817467799805332377096647090432909812829332083463792704246995544522164121652107092437348577374178538358243106295192426813726430906099642238384985014878941914309821523167516018012929910088383818011398176804282855168137333481615291512214255066949245787708300027871229812793181950967163008573803167546275538006030304568707063473240322581740533338876308022206486583490823419996536774884774427763565418597276747427711850024541619462097093153910559713032968579781070919716943586546751096516791106932162695505068103080551365516841566405913608343916620587721536508729448160817112563890281306378694914081778369992110427969037717262066139578029625530852594917280121364490725829508562687983158178309218908304582382979398731575779578032202884251882096389795262016430253475391894929934659872266775036104837185602937043133156637611312462421295901095272162929006741678805599696827535962643997097884319835137069413835342827264884036694157523841023729395096478381681525750889482064940882153680609451112119427881078772770956405366254992444537538996209249280951845267694812816571790266748713930219743236688224044612141623840715961136456402934744941577848239623526905755059218759078938819242055492620698859350629256509407880920147941556461172177665721873058162244625810175715736050230621995043566295956221508343447557279148668643395606926738142548079203691218785395597701164243483670303420565219436383090129950093242673291989738506525168607305298112210167475775167897913525555546541361020806060597344485043902210834580315308755244196271501101984971764670666370907486332383660334176224971464039934781340976735539699142123915991488028398159773551671721994336900317380738504364033079973204083023582726901418930233092707443176626366759664880507339004657601603706263581718512628587937285497190303652849926174449329968809276080851086135850377597685988005915689955015726261024514890624227622368041991267342581107835917769797365332222695790960374130076836499857081151928619643682166948437988880551624001618456150267771897630966543831763907273141993359063074435487747723432695878768586383345604235017497597650139266128999152752450494486972278486349780888210964397264555254776520822323943099109779259756472251702219451776774144319442239257279431779284088850666907297381917499008446186102270222106110607996289227541489444173995750935026342412230615067120292895259917450479525132199058027595030823924542474965863525807332386785855552152361121587416848303609389062264815337787591045885017870410073873770076837075031630824560636127615959904813865888932091542696354873819634240463306089227313383585264279151159117462677078185094069390363089033875778020263388464786916811647357388119009686355140748951560031048257392934027266287871283494760352039574070162235223378718245655280241396931598020755756372233392063854816667305717351840874338566660011843978172707858095441161910087254400488257986799054392431592416068015805908325117790050225818229125267233312292716287467806911081059010047441609392184329783184147023521478219581693273408695342266525727647898786669189213197020377269790989095647149439880959268488568750741179712254566242478919756486998009792770863055001734381772997518924978476907121868427649372728818941434949492092384673832431921981284088810917166646205651145491691781644538088540173657841041502684399624094234381373672474961654600768579343678486560376858001341539011087020185401371687738604508495907152005881989555342411738635527731634081153142468488057152782870990028208751859054300564756692047797813478418746923753004837364500452867510828510097056540279553650677394836412486077126468995173166235713746074903405079235244579537239962247721671787300135386042617693730456816310534846563195866263364368209895757218836819461376000189097180908364575752774145257351243104912219854974701036316658796803553796305299867446795609499318385148320724189718906127908040542084222652783976398588697677529982163241596606817487172427928338102312516700240052648087461730104626221505797159863999113730592867631049144657784339890138113641226253421248131060562924059476309627177371012418017517816600173259164445256357964548306507887011168845593282108578370546106027440114633693565388161111936972682302075678752868185809492537501693454409109418511458809428713422909723469670176287073599949862943431496239148632597117703135525821961313274716866615808861327599223608846429684226542224125777523793446992619748955685431652378239498487243393019743936711731425080444083725185289039829799574087791627220996393707457257630318134779341621875279469348840655682985054890025188611704207342822367826007161480697934966831524095754276554082278341194099913201554987248581429675219592935439681754480552927457524770711710693298216710669639403172882244062563253634852933232135215142490153073698042726526242627056594359348243296338181879194065612430540441225230117406231141388130801754013083265525214765357371732628279222781000694971693290334113590850669949770762686574599750885301348509633533482611450119306068436079066080976776272463778191640591490585439087085858577857558184815139242644809456925191713138240613709997516810000493569488901215488939544373510299840224271504483951022617642667995546685631665763628228258880901706141552262384927334486980337328412608157238295997877779765881833290526762171218389031488217467721131102583058493932742080212870334908564851267824184630702046386621742202862918977501749394234021199835809598695341820857026495600658907359908623362269083056244190824776869860284067098956267092092635922630200544219394972156748786818387410307393052994850026267954017918666625438078337097407887728616438724727651629771118080250000899448434965732966949131486731533773739491314218614563873769679703197817872711474795200443941916541030114613400097782455022569741418131260050279463876814362645490468492646346536507866267712234197925805224266760141756389486521383885750238912866729256856706854633128762291110293717636364395396976866341610877321682350575520427701989307839065829465247509238465420416406757663197196323487494796781839869988710600766323151383191966953661854064423267276111411193079235740891514571273282001791533180057296087571863137920253273102856479460913915352002333256320312265796596829942290883417866466561180626932126705888612660275181351699598662168019016677146447638540110166867414240805160875954329966252801039157947388232974999851644368934219288188067268806155452809475982385555435256510262350782160005186039192007774487890782223876623866369610745759323001402227306288675125613870212095410220545115780894492872314940347705227759618218025650717461195683659896445673972021046738942856367287124791499855053552742049448167348674153849225371489204539606957000468152380876156841069420605842753694423269752926416762730171730626929043584030535279864481340812092822252160222421932402179436005911254537751853491880338930828678277304768060539709590425729513978763183370284838077753564458278725060826189590705323912280353270160147352090417358860447637321266204531329459770576490863892474370997360880488785934167486235093981092899078735185935895407916472745425362390607325613557585502318559308545391487135742534705503693624720378509520241333755415294735957480020785360200714636390232478764278913953805609616047276930995670776079636555859305561420139978321089952461488673121218924709580173381848522411395769474139232403390830374643533502574910598014419090048499295781382827812511152794820651878792729255292796534894956766779122006985929741134693104240219078956002040275996462962960620729579699667417017409389189766323410941171100698663289808465924470595044699183687839921337809866850171192764073875592865545193640618428462522968238047038738739399444300079006957557499728995203330184879330036885458797510505801845715149798320313666131463213211944672952144032085335979973506140559915247748700745079938592611470637180162283763242139561485519810007588983047914136515219289564570593853489520452730148622341880452969208597601104806282867021040597011271017126102964005357856678006191710908804500719188724875593309021143346848237749384964128292894888000444243808404492853549795556410752392387057662682327663885704261866928803604531203882611810917178774103502347355146312512876404466362537367439699369609988253653035285443172441457966868822011036588710610393530277105212367600247168909345526323419424259319089355755830907322327296942617849987396162919769033644101536206142310254723989931099311572761263693010197643024630791645688061141335889608820841286728535234934997048556681568602743297043591856375803106079839620572220018593154336367282212575769694894837318998235464955045352813362103138674234998628837787520250736523169214780070736143028750299716376211319550089480929292998034202739852115831860384692496035445205527546917078923427906692121807956608424595804104608110888532432781153829024849280608550742396964172474343108503715890188624499504639873953445614854101273509957700119694790121897248999091111543961155423321274562302636625714128771263627801000244781375211497161267450350740038260765846176782992972402272011693140566387057205587980530908567285545001756183162983612523868747531660594954517124716579049181072609345643138533603164516893302680423540895625895834359415762182338806972515934986264087666230440226561248567637490225302641719868856942594040670202262412908183402682952412818243433992123972503568455180002340914781568975057409875412868338829961078916900063671724772999699233076706997567073136464177477080571934193916231243887641128578052642633776388409354757165593458492387218349186182211607250004793294241498982002942277832235341572289522753905099013728329284948843677460339858874038671737006218920637798102973378374167819651697648134264921838784322343413866333573009683384984581162654619735205724453509249806255589338303833672019351225706736479165818866929100046119079917824910318590192111955681270112626212958236594406598230690432544342850374007969601381638177349983769413581895041003698962338042120956462751227089532269519147312142704433537449596723135680759159561383386959435887774738222317558167121281714373616733628687218745033517756707747655611587306003836016537985202134375857990726398603295598792468416663350744848117862867538187911953225578826831411612600937643934668027584597223369881386239878331631422758006050099261963870554377730168469555192690985670134581188234259457619448577115919958748791955400674987160480856629431876770573542478583847327030856385188760432778822988620273339785283886744006583972615514654178669381929924328531585673533037568863072912855627127524718598038651786165952837934785362270876246040495798310771644442361424623526695966116446169041154525277051723729709212525101766443001306255979262660776835778718257992889071893771376636456122437290947687014665634561297917300382492057503548967371607180928346712642829589373480688611079173529278905181168000341273634808579755474945115371161887986304958848085176976234985958523025776996761121440021653802227087821980170676646074191484857452662787521095438971324763993057463198461855868890457533470519277811502124626431424415742236495372648995056439887833272131194213183214053754249647278411684719166726785386337928565261241136759663826168301677903570956056168643131953177446305310193085079680470771733584728630503543318727807713569448123386600265630590421219576838518172865762321307491942488190434873439314444597749323351412427424028223273856962217699976809107356859329549145973954026410804190993805276071147686369127330268859378210635602863814260588167620628484492152826985529599441290359753823867200799412479706009533532040696291261670229816331016108146539910472989780441163239853641786821987052220487098340580411860872164272784021945577280034690662678774699284032819977710751227743882548228582742588604196015659640503901978936948571919279178604011263861051686990751988148527069047623736020922294115124085842000873893824947737498411819525737821095084118946792086980664912821672787692652178042153563560945614276804192710122216466916929814860162023760999322537671648836781155897656206538090661302695521053992968877049026286040968566321738877523613593102276802477307971481817147332666195894897022683305356820465217183576768746503048949484031229048079008261063069096768509700754287143287572040250133707717655096194847004476133967188762251062182202381501551520645140544214139398529081074648287984938106207800965048427757440382567113508004807992677421978371021568005363458571753290356261363282221223644552658699645239617301025122615456210768831136496876651121199781169150861437599654660858365401545592679290075894769961051172658536082998060638894011074305487509155855815764780533479114211576790393299183106948598080690979568091156458956748130832712302793584415511987849232822131194621858918221551087845120822183742446015149749487047665415140793399953976668294121045762551318242189127975062898045933058410120017850598825104272020091057504431557628280344175477509638716999017939999701424387862271816026559693144838446544511824534039987875651825376777225066982056035800350736942173137367259504791279561129566234192159245715741907957802085272685931455677357608392931147129290630691838970987034378827851833006229491838558924508512337471386255151687141122498214727535600498176534047173105157256501625935597214809606221998315058937046376196243091952201621171558897460196119763222434888140980860443736881969919885950560452291359841327441209633336414377127007104806547392272623900625666820800330082103822460552462521421166874079097753473836447833495582645600092877086113189768121255124985701073377444370480317486326105221693491121522408548223989877505347306298876247919995561882565061669840909747539393534339544939597999506050327220739532167366220054900772264917439154785531682778195974625349730378148303459458027257871931128520957037850171090099193461774314605973287908814961356643890554654548835709340177550261001336615296423937568858172767040687890203767559818166222119994661302615688946750616176574786352330930677089483904381476596701590913268445240047820666266880726674483249598181435480305928712067143552055589607896060014852490434481587538308277039222546554702164741434785792815970429766526896660976442108400087006402016677715269332609674805831522167978835490374960556966145699639065595821006966205627896879862326628717472217633361449952957671275776615504351624275891077438300855691506413366061223168000845550121472258479848277151602653093465308276920029019087889225094821966900729735756916675785349287060078225035657323233058949447489875175936643658090060361154918229392291266801488372065880188732898067539599467608084177226655094451533974883070085176819469841826166391660741121036764987004382791824176204186679301175268352620416622437363922580910198458839803770187801262972881683345167397415062853428204500892817568305572023025165783670648554199266731643119978407091276303735337724884209934155166753875979844716050117570496070456786216624024888457293102792232397651950642529086087068310437711621505016698527507093931283466757516914290152399575971753032194316106411050475187593579264970781169182910544159457562314571385703995933060251692101617207861804119150638862413556152833173475999219856909353526469624942809185879798405436960423487064812397554778367974396205888660952955527696825390708474230341775898600362691443732489712995261928283749426760789273558157070509343429795421859308917648190359544525247458865296334496335156844032635476969433794979479782493883579150996145860415163755963444401996563135725090652759949291029913000358306707873657069487669834211424603205649571212107098642464145022395111178734936512918046131409205920819862484890025358707492307780738658966909457399242917215192543241349693047184681609604878426847444822803107118762144302659170815865452213668955044648732326859548332145156433899056871265740516557067452856888126840769287313987235378256999765023991518759774684671391851637732672896534966036489016102286826946590990449798941366327640179188953563377347492355774426334437158661077083661108763538706756644036383540870004433451745520036984224351336589704720269516611337865347639163483494874886603564867158469825624435457653664944655835398168728028851429063385915389756613717433811162368086889907922982800599420328977715210277680417583764070991303685062409938606308006988953894553844747182266012018510977305051417485414904637055728790837485808547943306514422884625618191760037575106094960826669578009240432845122879884257129802631955446242133110224238212322478133176267400932598125307713992669955381988119571637461062646843580129058769647735250685278493548327990716434427580290944749175359619346876822300453107258391581593772005618188151534576503377540944136195117325204614998083418246755590023651706375571191137609175019540122756511196598320401580589209857778196629787845334943774866112971858197393047687024066993175636481903101347167397312586817402335818862644532101949431136179884154503117886789748160296967151509720685401390019534358302087442024410177140978402749705095776058748305248199688047407973986956233115463759172997480227523574209318183324211868836005814449865455546075003316757886148142992702498366602534262922736069478952538747202693512084220813303738111318305199065558803651941210908612047310839930340704684186013407121722989751776661472819295389141437075532520708317382483815470178676099229458986753502843723682943293936999291325016125100141612818695815624733552155284254388315473853191049537731783436973203110677937189358775250313182973171791309413062919313313025714492791836716300912015349759926625417995185174691959019232668378953262764114304303966568800519198709978831132996085236254561518856105970773764202395296788040743471709457004749199176369665769533248345663708890622229964376977713453644873164207271922976520868914549446078373876954146383104373957899951542294095618828047150291650909279579701256980139125971751799730012281278483375128328288446529181788829147233951704431834804309990097974880554702325995292952958436433946448165658741392177881751365453179095072006814975947002975980955729878726467403289473826664972741125472081235220237471019748329129712450906137801174861450863252478392729735255122521762826490196464510065303803647616164148273513647631858836026376060140508242074027974093526829289134953694104349261734885880110074177681116582214921975843973178280139842171180720487207394135984324772142067757440613568363606084556241812934349268383856794029917059701726763946512106619492827091983683081180496908939727017790158427111035633461012550023891229845036232817567770461904715267201021659696600852900618328080196579841041930612307008492311661662287407930319265338583412906064628566425548679884755719830757080320617393412635487270942588492233292710254858169896083829305636592808025233932737089383238127344883807482583795032996388415718490686111238105611561026141336092178316652671715658409699770839146167693334369484595343813844973143013736680438432519554347637775024526955012531495740432186851410081215248749472577718335678980221501909327292637745573848909616908068865514375564842990519045241896223669235412964030703827547927083085165607062581594218396024381992887257899799140258715197072446345555745155724983606888049211256503165441388511799901007299401658829210502335706769382868160914213723449718345626473931781234435637946516571220705376226438277577697012179728616269452510138235916106400285042670777567139300497243164349813510963626196903043741968301126703204565826858616767611971823854478317659368452760675849764725615291433149233906517428859089602521538354879219508750455825237169470628837178760602507632146226621964677557435887993264483216056986991417613518283268365547175654008109394091045186093294543097197750835308045901291248678494494917400230685317867285059739927818291408591461372359186134696500075112222962568755764975789728041534948778532004501376258529043462092254261483424898304639963313116982687017646928501402618232160178600471166119407071316428479698814690395667679132553789129578037881763956797312174250131247776425690736688248874912450085235901031159859741917170674585436500633974572708521342478982092888538358468146935170308229503687349767441322151518526750996288240254066683836183341406867408908413674365935067017733655600399831659914037901962343674653438064206396340338135866486046788478239197266214842224535951411393001291853074546069830171831015630707276459191494271516479980521201427130299189497982511438823456256612456519644835776741005242914338539294094405676003582068640408977847050214672304736538121500461613534283353261014397427240314598671947345935262747085807231820239022605817997437153249786520564212312914141605218356304243428928531068560293725621342345299143271538761951760583998398328442210781995323428382759906113539370513989994731784880805878002439974829012266319570644205499249313626308655812444882480071880434974382332740703552487306756787658444080615923522499188020980784308852424347721155239677286687656935717549160834945136199740779831981710779197282679572316250857745854196576378228051684176245657464872201756619048164562817955198460850905611349201800422805771210898352409095898802910117777428390157663163362868429113207009658345713848874912568382708919284030218039287282034777287174953763624629077817762431875102143446729873070310845879430020766481195612960378977901373371866026037113370023454833561485536487928056816168520815107453134301457676316357541691390711913208639086585480471234030247251582624273709903146822042701823746161428363928606805291953458937651047246688024890478257990435387363847558699189829517775407613717456004182208615558419428924455219721920496229336996198711096078232786417601730096689332306342479178482591536560637830056216210674738822179432681000593437139975583113402150795933975255858002291516727166896523498144687776241455930347027348739036052904863219378872006788295988533222103011835817680443177255303570332201728785558127585491767599886300194860087830516015191872063844321909140506858442497238699528204860987968688156917237493965869235862797606036350787575635440377576880840727988493506255535788123254729460569548124792112134694922938903689667104233200587688931368367262158670276909621415074291637166734602958519318579846381039718853175579378763072565589819079227554517584190803445835608936654914235173704332987302185113498388820898877568709465164304736187731498473295835179988720692293921292961083555420037910448907640523986657814981022367384591368108392436520225673558067536106654797813039706588550756996108030521033832963093385079646301954852885792110879919356599008997941209413849285013354483558601454572828632500224633569276975114042159813081967050319509637080695414842963947872108932626741109458809372226400278545147933173341093923676442500366115644548324735288684583042266910185751926080870787327864358537202220558291580985783715524491918671394218956583292844369071526368825261718731593168777324538963873086099248160203506663340816828531236442100067332231489208797490430470507749631670729295201816580371961774066970697192982268188104481492495351757195609093568451074383778127714767196075769773846105540325333616515286990660839462976543928383066992917617420970987333487924828556029947056206884210174935531231809964686263471174470510606872185392927000169710127259958741004603408463451477770181486246712084502588903275515177666848247515127112095171046795259734968619333703082219184630793477535360477299566260455920283306228722056077959098862040942748229957568904588593682299482524071425798795250663365924175649793094252624259645255433113185387025304382255260531684400711006852332281619379044912639302530032763698648411448766175779376899755389313911547791674840857273332101404800527759253299115997665931592664588752424772880396638830692069080278895781787432710772715858394398817604578021227998687514881812608994932570877299839165989642289199263384228556605368954596364306568103217224011675206163929587499274917572381308958291941782395369341516775216924324743111591003619686106572382059125506403524770733648028192361758495233387866603714875829478039476582840669779364150098454564322178808812536366224133686759974404001549038962410974012157982352729409155216773065769433422135626128682567504005782541534971075020349347804091390743217757221300777974164865276113217190849343374833547842755330985530398109480800906171045858719277656203964539947621099599075750693409500887276006395294181381666528310178138812485534877822698505432392139994369380071117703665110837839552861424237669627872143985106515613006400234118617325043913958464451052359011138460647234215993937813760450523841471443552871339427854984634844255480090596325242278877649127684918071654661368166237681701551965408463211041853440164469808922752162614468709010035777843761993130654166987263114963193233980192598512289838764162180518693033564488431946617926506422585273496461084829265080030516547900103787731608569244016839650454087856409314475735459952447174308342377955414759913536453291767303175955252514501755218505148548536962878371960095506567053131836888534677156573026133303760203640907032251860290186271475905431852727074733228688012897134816979320292617121566044061181399160999493439292507269698122114743739788340751171363306176755118028563363815142379468107333134789822466804300458282117609670819590196223525021939583941767555506977731650195039261279706812142396958412304661970091976227834483249585177485087001630357045242522986291172112080381376129005379338022430486858449985782046872799406318093928276710974392870797339757054460581601082157716352090822896591747768249746103278739337414039401827248538424042310390393116427105819335666660629039432574694292547143773913502032015316356249303758681624810948826779348570683147396322678008420443059607553975070873555286949977206191611802766819423949913661760240572926995894827702706009063739773123583744793478776583629848133060936162281823365310803938598097983340015597809750548268348708635969889877956452389005001936083330665920952657432554877832431885105832530789838272445657980286988145520964408603109018658575034215288024830016739377295327633811417254493944209020151441278181202575066783026079821711467053551065250081337152201550135815504590820396913766199857700849025515194303930236147576400953052894787337172702110600878675047562857247862140854336206790448980042370115027267763300253387755929906429202065264454638046870228417855281950924868574796658164241589077798680392743342760577234502789689071559683954466378754918112710651026654182217726394093522288589678387555333801570983844011342348851046642949824718862323772282630772414252207696543298370776153467365522418391180685919957202855681506379596011630072066770639981692044054866416310422913426821586408937582240199368244525812428415916362193960344480447549011639850727767103500338754599926655454318386728662421766094297383777020277832641673009933609846988050013908174636039092242210925336479816452638108361622319862742358998676593070300858771248812365881928346135978825528971121204859956388569615448218481478375017826749102835615386121518081934129335689576832973473506501399915979340228858778973434382056535077453841399988082209993407825696845221604017132659701531448653112157989050909768459029294465105758249023897880279743699519397028890226127589387962104427447933703654801956732450563499363493108699258639043211937345259098502241743682444353467018910923018933093416049074509703332249948281317059115041595393588228410889212265920749753187340690048500457106464199470638137132460454979688916382837656657372386046356956676430440908462389606074779075289727061618664000186816377751404981065979622896078432154044313971390857740009004979989039829209185010147108356320173414221704362425554865408784697068003238289239726679495194365845015032152995492335912902613043626004600958932004582686781732503286202762016503266482604718589427198758206568880151980166452033050423217020140386923481854768561935603740411545158678734958256602385242817925141064214245482927104915292034876431888543458096314116722472127870019521583361012215576759373040189048135623825631509005441488054774817131500849473684646566092850987507733225183865367554829956869038206505585361483090526311259985842943746413579076552826090326500754923165212502749320905059060187596848870479148866414391581226906001863413446041353409611282676278557293654648437284168886673679350295939739507054531610053618075604719256889138469637800163571675146264865828466507184021929646968778979296519559493643126632474107064032664433629706993398692023485440550287786998318591929095929702096575799676829054777301024710748062290647171621806968365773431038118450490348153438079936994212533703873280182564790564155521045125489869327142454408733743689985018687496713338768418088889286176154808707520421024612019196914633048200981328819312592434082400668757753157696524040322581415510501698104266912530933218563011360292643384743843659072928425788270854698835882302591165297641238346047649734003688229689401563586292222589013927338408791654573770527583384468994989544849690297291372761679833241188419697987664497837096992554366452762490409458549482145919230699058788989066475967544730530520896178387138684532676672844704287084794620312932472655596368310947355081232675596553916755979641465139192179701052798543191131418007504412822652968009573112622281364603877956241040318398711117687438658396410188106017580317678650424349391685754905089012413228533515874366424710904772635690431912846008701354537004949377785361864626677005192188210360229250386936238418148782594138706542521726423629840743221981436278977461003542301590036376443567513282308554273111109475291630294330868120179990466168901466232197702277389664124760197059097163790703586670448068661147708161287933006006921919060878937406095791780766802093448637150390261370226348051239966731529217259006820373118176190837167754497602476462697632842199237244740646213101462100893020903190617842076628515153538409895419402003762587501428581699264507455500378830634748248035978979800989704409571805763027077393423903889267041022289114742987533554489218784551691734561627424737533786177442153453374238664437670400342751291787017089504034919754427902397133956730282632180670311051117842118967949391795329583590613049824247223809111462319223209867575775468894504489475815599888495083148321149739797608513089345920099270861792180177487452290376042258644999133484781856071124506248429299632225237221388948725264833406874063292813841474098876163971835512974303753085948200802415251340577286897332388138367488502936522842844210310475751226588508518563210528884266896275670984644403064086650590515373908179093342056407178540852596948472691239112270885246641139088514514901293902564555405763718625779222482773467962363693136908471453935757717973063507018037905710068957606760753501287398171527227424217964895085993847914505746704803766620293701760815321723719360781073604072589093085894522225372313224418613772370216533197458790523971077006971090408844485348750549576868774630439962042318012314348803184709232098482504941736023197462041158285017656042244689582253743574251743409367130083648701448593961255799303463482919167046419351546478482486778443014245265873965457356817129373053234581371895258146497994607223562181537179102145622078647996570765979403777653013064650141842885774133555074493239529730595004332057321283800211972096335057297793853457860779440725591676548342413564587010322654167564890034819301926486804298643016201481340409839082301396698494300804349415590210333851224083701067801878785082757423202233366976587525475777605326247028207590479536006803997909248397746795422259493045047917813665859020941537396042573796949243842161613720617670296483856133369332790969904651395602992356914576860237742481118455581678584327543141974586161103464751155658870962567014823327717633357559293481505571793827285006351298142652079450809207985604713744131123995878268007359136645894318885740953190045953492071937745635850944813215104901444106642302988508462991027867415551540457631506282361530722769962833057922913426635170104076728206078380148554349194065592693681399939200346050385328744322468901245021707568091984548402206774427201572327107991438815062387774207179058509278123565607629450781245375191517537943797865520077036850389321247145339005270249043656431754173690002048422761643774880857371212803225556498094346620294665972275861990131054759074116246999869595259833342077331707824428612326032907159549910012742727032900216478651039703862248838049099581879898009036179577338295678725091991338030216566755475061141648831153373446935725333058910597385143251323250126588295119331365495027253570886681691201306671814109036390291497911997170619986059981995135795774961752725626262204244736296150190946403315797163116374081972531192469132483199654602844350433010084093943081831518991448912449005499555212625934765144422585844923270214151100191046357935547226000829145485323768497597907764132498592197366868477834540944142682694174461847254768470652976509731738420782555982412726827452468582319751392284792917093261144909759000584711745007111170591251291898981401649078864930694106416788753879161682287265093196679984600827602427608741899384781090369475840653994925916880431582864320515545246365920777287562426364462112090526065094944344021079012108195034997111969913838133321868577803165751736465128734475946458016769319560278993626103069943505772972268981831109183442055537216823898655535066739061153991778919896239351072745578680168996513718025091986155420040784912237163135936086586970193578921361123345219621553595681395777754686851184436085204502330649844915371706915005466457075444362564867756301553299700507336334894413024328603029245319789121744749779634823128060302447785221735522816061691589057891976705319458011047107251315604522188877647577247206156837113171037501695979201561745485662892923152781549067744459823522317576200708846810808246336308752173489090894988488704319022236364115964597710521256804959956747477422128315829279778396972603175588782027879583136288687536721404013945030776320163460097419464359889525146659372268339884519201833570935180288591211361561256842586077617756215908089138675244902448538048459894786806941526421002969306074761566109244856192777495277692650890281836230991518111216482707870279045252128894536346841193482427034873859488924691987314122795654985258044921918513943720750571154857142723480295451798469945119957853369982337886121481776588121805451301529450489495181059371165100743000593507887715833588665254803217318679864357671505224950506867267515108266620145364699873634071551244153188768646865689862853924012022736316129580738436165017372217903343784712839767079952094814808209619588800885881874988058232556169161792485788150898403155215057655813942599559913122277734357356577961983448789694157425399840982266762540731851597404925774562780998182699271311179041937657548985558015669315830388419010701484600677504029420389019845917648008500443437534695925898469004148845816185478574637850582759864684475128037821882179091417993052061975789983248508497033929215667154643569786615620727930459881606835750600035883139824201833409511895449736446819436548435582130599231917685124168895266747833689548087530697472051355341628624699483729861121636701191919923302925118452938572526612648756668471905429397226784646415345670806589830479309239111316289893913621445139747539283590805844631654253721020082569933881341532075546032862004993736435794847010897409418379266842362556244745386390890355877980021230373513548732584103761750869374509086382406036977642484309162399853595001924176837752952494880420216812648295161445496973723625481834145709584902677275394358808675100497090494509824815056470097019307260542505644787549703384328390780738649270218525228710067088031978270928348649486265692870250914546667272532654011528234485413403045668328111367337275923133274528813457546065164218230335183566429388737031799080259910137695252470377651963598762464076907910662853802247133760788522946889934741047907808348460590607859513119462689322249413565598198664006914306186737749793001684985392255699272423516537567985524801850203787135525237050021912932336283711804154069944803894468116326499865554321157606361616304073126969707947114547211651622948253678906229447562227300208883833018545139969348871393097081640625997079770714263251959601475023468116737146012142304549981521832494628809318674522483532740058237406991274817526368949422573880175472693765127213104277870062409371037021497078599219907456404619460686771182398941199529993053965315627478083633702976413431213069718905610309875232149628375502839018066001757346436469671040995248706909046434837791098457074401151550385506562355603797669840384744571857840700936425773946118002370013873020793058725564612947554859362232107753785035281782148570887599906155701004618220269144770721138492627308817942030093616339968485413497709904743395343162091571768990106796289495501088847658584479255214635233668399089902426046266370319064494359561437844217765506760545495620696584336351766000376761007008325689319973434129298969440945800848483328523322559278954396575251154420342895909283671676713760802368332225456548104470645497903024702744186256303377108695220114346593705931782804117662520844724498456141647743020535732913141899377441999590541392615940996957978684408244724692409511812395519724951224586743339765529166672946512470296699916716927922102404326209159460818393811079237840104918413324083060910813276838383218374534291359920707951564043055481371907394415876149160877807780124633079617643212855802117610979632114565830685586282268000440521140226346369146411257301166320649369389765324737614072590671407269063199079889221073323582590647270246703940692186932905258628093561160400344157225313893495288831780176741617095491626528876423376154748343987236039413856910699011520874326678594569674439381405352454774887474300293055570254875146912209275368950839061694982252893897836600369681737963300066698298274348230820966489012857146497968256621274866975283621652580115100038325669674090502575673600012976524098660161447737866612011720764180958653439707887175712911438336267322335984714407813654367293203871036111699436568118246494732413407491152449195837994360868768436509001979522930435375330151951691531588280835489124800900651485296862833105716781991031616179358738759009478397034451736934606351024421515310160799349692724562225982673699829163125345423605770563041077655962723899488672535509376948131683130466448164739206550322157288871903137434303747391436596634345464855949923803802499505610866507938163490818180777473608491691558335343409861812235719159183045432726948095641197803756587999043568154258575695143421537147839433392081140049348736199374923950318988391294647380487635079257996115370711946315094389238223540296993715109907223505374010960886678013245619877644445719995732145885031213081728842259656102786369218011103600116385028965944409194370783393783389226426352949488067967154151356501127031456540622748054459831596596876897904155067739856010929120981624100127358837678921626737086870183538996751670226432866334965847461135690074668929458949033770860036581878368379995519268139080843703003681745556315922534577280270699754570981269688365293380607340393474609645059076609113755229796902183110533913314258930068698114261338389803519428553528694806112683041003418003512271675318285167668864474647987163821247526555950851675156573225663970571428345083330978800746644219687737438441776746808926807550778260736674681712074634965541420565902223486306224356661693552054575097605536260162786472336665061108717299436351217381756587718081040262543712807091945134313726631075675992106157539986724655866555034948766365058803208414292012440062852688367794740209984298869154249958453876475546524331835219699765283259415793987367649307788604942257914249647991332383591514558983354709645503456639882144261257289439138523571973873575342929068685702039067270812896617440779049073581168135410404942178352566621821498035825269638271288818520930323164370166761739377100837723625260887037509838449164870892274390375869305727649194512396357074100663672171693136059956300217222855200761154106855571850962129261998271971516146660743893522626522600046261394967017977598960880238365259292666710260835890302707361268328451352577829559385497836918019089183144404901724969286807049089483194629229358812816187737179559833442618454873340827171213493452354342688860543052540383918488881031741024772010581956218671319500862342621329482637083743285545788321775867837938838029625409506099459436122590322909475231580095710772046789689126477880438891126903587456097022482115523970064188598014204465231326617005843570032779967442355649999667690749269538158767795328927812649760622121474507016664312887731572121072778285931205282930129283504544114031274986975995736681517192600796955918554847447310059645258469474691367281530292365388147352842310228306405343079384431894465827147865794576001741427837444906858473152816650048841137458892635947871503637577245160193339936324609857693833270897858364754194910589453107733463600828368038671031612140947996433986638155016523090368009696680758490378397282278115657392265898982089743599740915191467689085042832923595459551297020305457883947600759668426822293590683622654761436808092407783798305844354448164708609229647817813914115320143323476522788476672827534586469291976506554020697973793285716980169303602297188853016600653635615161199023986340997001842508883570133432006133315119911002186119991094009086135360710415425038944677166026557214167464018109682695779168320069265664345785854928705863715349044169316704053901892787401316646616565850790395704304890400496946511568922393510542192203933409943590924037314998317645101651678018580433721123199136537327606850765808138769660082251554769278860872762048745821477867136544408605079105514703091120127707486263695071770546960762535227621802063723064365874391523897719309860269566804829076443804555242823394340130640169470884118989360380320109242040167053370331945611497674537898288155568067239221920792072106893876937620509462773193361897089103859082644664137546786925059550327519286336996397901997354667161957716994835445252598912331552366137643909197446021931141150878685450436627501488368832828365968457428390150977306482611981819478190029200436097226153497425621748367012260064495085877427706984430460409116255494557716082696809727804528981525551163711354756694146814910034965372967188154611278677408806068877258978445682763923093232715201481291302565980679523361021496331603883015356686702141552611568100822934247547839554686834246175407810736842710641154039212110192067878724770881930032828400975277580691335697071673944078037696384339186083635642773712458260951703444029233769571551990038111763933382741868789529413354787887453319608658705403781181941267127399283247286737228088046644128281103567277858783804731827130394335913585692023872509974285051002099898464808917274467972552834133490049688559549781129558546532675821188587232183384468164037244806437594884463873921734394913356279263453480616145493329638571483040191366244304221897970642713617247805203116518447348358003704888489274615419186846318939758859636792479260238735782937190121251591751025808811019182155990497369339237503365533478612886108096298876736478415321988936990128655296323964428566439038526775279768615158595417652529247879852378850919153511486991363928846419473862140866966542441843086900769474451026289955563380660284056832269490649333266143856353659186092474629266634780710277535749309978437986794726792514508385999950040400172688268140777359521264913989219978666330368240619380507528505930548696890981201315148666960951176145305558558202849250967064212739084164733948080984366085753266247436404200389421557968260483133063586742626014877885621355277903737168124603010114164290737189607976560016633325292449544349208381760188076805115322006344065106574702973075286640551412166824900309838347564198199992310286862217900090282922184584877529658765986747322736996430311475799702915804683564230970067004705841801028746839447014449716624074157813573456051650909079918128063390316121042668470937435279568199451949725114479869671819499310034963826410225286370960914641329270528421830961413011103819989588917331196179298727023917053225650497382794448233677970210069710710925109462886434097868258248304467500278409096123958327994671445881879310552451647284041876862410566969448783372357594858250455510818870577101008228191443691198141618490568501018983664391946833128322009769016791461508702514079626785414370066634626408242470645781908292520463447184745050306458650244985283679706188105981828623951888179230247374651121072363671767919734433974062792500999154121867845317574931460965832228149549870735809063431398792627463106133581931209536818241754369150607247265769580769414255530789899628922932797804791354577913086738236151184850675855026594125044798288564326076342979649773851154943208856835892154377210694270036503411586498094088744963149590309260263591886683629946899219897900803068218463095790857328922217017809853684905221152805146769004350018834292928583462449872905648180165452884290837283620833994119466096695186724665735893513637033878419755931236942857562936537038833862399484346168319853239950169358417069452113233212248962338136474985665379448474074509865997747700896974617786831974987547270656757083914673442990053263959184199816776671019299344392108402481745716218816078009997793323039780333829693119853125005106803527265347993838404334069004111875444493670965882634439394354863131329247280791522506327388110092953198177328884328767756411475916516254621227376123170822045929567888663094263144977443954888103268087732891472495128750351147872464764363481864498641468214997418084940796623022367070146448332779756778888105298570896923733934450032389563232784587852691398733339132224192911171820307982877776877540261403461225754962825800834727951442638512878961076913689193900742884938578246851965456342041644640105778537345417234778470698389902248265370328947762929753818840327205705763221828848206716454735267341278277523173392506121746839938943940619604086846016060022424812459435090808613045355111071309394726239149191857144039228266979539967082599823347779687247791671314425836357974243898307013603348929126710700522884763698826896674886547226774649282772725533698455782771472253736859300150352498200680157787683483109137895360066585103932419400827442043657640297118499918227749959536375793985919803335268493845945235943916237643016056450535382943158170380785890539255506262935414146030079856812826943803712954764992183006656032927430280490953077478251192665546386390142494141310918472340319260650346855098229623781329606663867289291253907806360499676946737611791068519630218150587719784732330689761832917958575238872919160023463486827339686744441166160842922715866170294963433308944691566936862187443189534856076833282252076332441752491367813811611218409870401169389722016901228963133309802882505894432286463066145238433871181568645117890632244991035390367788706517601055866155941894233252711796520224464974435629500371354257380437527667291200883787679035006801352892492857643691309311822982446207390104449331864277419731745108501607392699405157580763170930655797889255538693095862810807188859410171871381571622616293798264784658503819179120838538668369713492336857511278406887361769433788075206456895355215071822494355407151554062971665585274095054613499435657984245497347786165617177020925606430102498281666523610148329386922842346141884596568936928234783668138161249868532100677962396363566045741689113574732671290533888757320171293242975063515551470844312269569604092888171976999243431741639074587458919840187992780542044630775919623802191715051669945245996096800442209862145673986977932341879845208827962355584362748563050848161401766954815660732173733894071967952311435735099908428168126330121128930026980516556328393757568015920111073082086618064548333900398145491904658864832698150515446702526372502849322307627425480051490456089338269025214442897579325832300464280578064232484933799258619321785693949242449868015963413667712058190424828626083566763758487294111981137974803291315737852868753871720480387422861692007053487730632054502961339196748214701988215361222350442015475581744853321853199668872102617891589649269317412604124820073557502802377526211840226958552459545150708869695161606919211190019291353731156592375742200942678111291247043930967780573741277814129846281561021891649624594822182277104253464379667069608045844603531640063878776269277876071155244000399717252890515418061364754042699872512148444332478653678143526963712057559590897191440807408430445949624203166010713413807176453146806449324268383428313461832994916559382967496762754615031942758150375750898502376121534346955919269266274565951048460059972560546532638507684389774889553859260924039857833977295495863897316938947461585115934414290935003425559968473501102046871063714778231125217615571103637340717786160441424768796348294508896585625392024056884354841183651051310703282520523756499822196608756678647315069654761565175752542621083377256105577458801593008123564377157433259857349592271017937483476362606911849172447242020560462204285933069592190478355951284868697520738435513906187501822530001762376028371120609329519262283274249838510857370111409882658342360749308121545132274434733391214540423887674473410678263625748818288038985733408865537347571657766143674142549113413506031242058326987773609500963947781398025996171676277811819178544336657485086556776809444081028846484077603294061936325081900644522810536797187905695387886970193243109929776562667768383605423309954359126847335557074500447643196919378025664841972895485202531583847940314432690280952865952125044991780296264663972314609188985448031499083391862404350082629960386812269552814920835696136379614421129908571502553826807309067015755909372837374640024692560140050966455738203986778118478458244356303364253943629510839004065402263718012123041261598709852669131434113842014095238655046138632687871558383315110091956842521404645120582700738586808500101195453784162943871810062436155757700947293531180922437348813248266846066871717407850979957554070883403638264255151441240623061800941745109118261536398154968892972486978087247979099839063029022096845424434986462263283422377946506976268614952609550439930641329458447571546719310525637695907851406792113804299562326919281708521544520228470097733062576845557791843949888998402180428754632598651639166347217213055642608885520538178510871346916240797804569561209864662000331745057677372570730637507742676348392240604069033119844723615976381519747263630378395424335040069202628462187463340694875385052113371881292965812482973149211650330096652422184602343003867149134609945121114227594605048562158747723897003635904232556165142070367782059417289480863181136718847036893759322795500659461746102306175944170049588933160906899182155711052922770958315256755768415483203105724189769183690654150746725638597566254025318478735159360471764661613149245474420659370812043987985015680385558768591358529116354519669351942797917774728849267134248537807742096861409626285345178574101803211937806361523137224912322651674545609075228338528735422071306528095027317473753684422696080949675435469851568430472755658334693503254215695984397582130102943421147340297029940568549000027567808411161739410037937053798597744518048940212864091615858964654233089098570782496873836399959077201910819944967915660474415464758511137500190936633827645832403815742203413768944302725319646671485302564349798872228786766482057583462328710427606419419426260366669129150111165827068884233528835922899948611961859842866342646440128923596195766455030824195557387089022419459527069190488107380356867978257758531054067728457171357867701337628523673595478788002480489279928043080173213172287483181865508909150665391653722236342846836362089809355385819269506760623375854722674599011170610417752689535302155875260727487385533551129782146406660787089053816557828343463867338989640684575419650385104512239837119122758750168989736615426145350303390352590785139420126438846902684293543507751932621385344373300333194771576776578878838925963919650555167714373638884652417589260572220035127866736267245320372095945423037379178900736724029690121246518523105897859086101545635288608926876937767786895132575074560265975740214068729950772304336079326798619433947105834092348631434601802753137763101994858534429197918627830817771350846375863330634439094291605127948220166759162910083710990770693103364475729671906665913141219882345118415092235015017039141162349897867903890208657412088675591459262577303344838250131303450114135650664330841216251388984843811987555502784151926292656589227785357957197458302639741071977408951730393249597839055423939298009611679034155428899737324828980758436639754199575465031525321349622239654416245489325959613379285342022985118418844054307078879050818609272132907651327678094051155375377682433890257721956879070697885750732608048495988298081398375067575791120621325820542017808214520732495540680963409753597441703963663406563441035431664752466502314099121075052764054970905442682099904944883530059746319961778560193735910200039487371715161071625505090311874819025006341594377503451137841898471603812314437341949952163037071938930750355532346526722227870432899809785161628002418961732519876915518692720497641759419360363537045294426905412570023665231608068487312683036139225624819982431503614456045029872789884057227693901989584766886239640485911020765216361868766322644485549326398469782948159907095072321841285169376430512875619655216019059471186432311846083217474697200852650671647225167069767672613107232587924123999757892530174381378999499075367752263439705825756461918109679917972270560078175228193968863553423584787950922295376607669109744789207734143110564572064853049088760029409860880469297255358333255770162877990217659699802306652944089896317915797361916649084454618826748253094141016049780678376383038990820652115934070320753200928815676365006705718299397631670223756788491800260507398666853016121918984935277315778400429152945499013817540036513658525198333030113709164955191359457953386588933379183564980751493613254022350652423443826844199634797899224801915931862420874217108748568112671174447935447087638796036605408183027185792883085733371152075868651449577118234543915695161883961959145014008313043383371327180283492987477025936097899275807021025998290355783843416138768913281969851518012252124450531899547794982898439727781574877759687806443813426369203630694907805016926024510206313015452461979933741119210682152838052588910679453322587291335246073260109143094071903801773585325804092394528409097424647020289675021669910074556913475928840645617018323985463930713267276915998958348830029515201347526041220560842653617416565750651820471928548598572547588990453575668312844962705137494078912962530396502202182962075555277757264548108395383932028676813952519341187860482585104856653262538722935454311117443828471292106795324579163494253441201051735216498697505074732762321610057814299817434704580173470811465008171861507041176940728743298689934007391996348726861520607994513247320433070164973526505344220521505139473353808284886137313707045832290728528815766828590923588858840013475562149658871295462493226535131701879138068725946712451397319710077156275308811774329152382158923609747959172870637858276426612398934733314181392764747194622605536151049906934916493872307520808856336865910643133802125014225183024562844030320318144723018541418272629719780730236326605014854749752597139857290267417649790870804430470625616823431205412696329089379489537608407743448398804839575328540964225628384210755420765796078361572879271091296756057173226640210396643318609122086699940958315306109189047860997394510277615581961191785243939069963037947978759920952258005739767997664128915354809557915977098735424455101675589138847391511837524278743237151221332355852285914969671462168909176354725148173691547230901722400924935818801470552546788113872724269314893676603167644097623913455740102535829772015467752572541815311531244355407661776250349446215688710853239775524812205726472564458390917443434794941518941825124141093769112339115726932167908616256442958900656913942922190245643022551828059762927231444811023029035652973702939502924714818623256386086650394461388513057359223385153047820295768171683054362217231363689729103106088841637461918944943334745234062988945270921665606715300336262645981860672193665827937647407057863036452593942707306920020375901692783566826731152893161135427743373378145859149800473675804173084614172917319700018322688283216241434258103214587816267341934611427402660213609066648656406026900011411027497361832695013751731561531374940699626971856650117682260283102698622831502243868307175205151086711767408779532748533326006252563259348544929430182998042511786775574969916629492839801082165410004421389878599857200205615453027319567972634967474140900031660425074856433087594824683096899879967462843656495159793281924264520956314792137448139645590372986578673596492692067019175486707641236437494524311432314941987119216954557320715581297139315219325119391203192972389099008796792516095275530920736651641644188977032053231148922040017862223568195615233352755912295339311094641272841296435198227774375624129751471179984496625502917519082262355244911099905015636989675914792529748579411220327048741374197383842931074995797339020558231698471281542552449295844878788896993555992808892279322618492144789965860569990073288236875125692682234837171871398195997458371134452534016913953746525821822923267882107138979318844387270270931494198266859344047503961821852527206139504700388512902449723822550981884320508981205418634507720788612077876272017288988532397688960200753625472375250965200877523677299127403720126014514057194176989723709617312611705776922926261524411173874691873821436895127836491444451483823722499361047471356240126093411988785097838769084815929718778144451404202742159440011797085264428942300722432493841037056999056996842991257964189520495547098315707037152215814155573977213247451824352813537647677798820829073466134409505388581756406598980156233030169050384231652684183881777619757609070090519636719821048197970647566538758669031346118960825542898819341115036608880226341608123596664509668197825594734584187454261284512655197548685807619401438060820937013466503190946018335104085187175403709150604813345353294651009460123753072333945097096341916908183765017857552793619731828168062087176470586766376699678422249256689638630612389505998069869917941294930522268104338730591677497095716307847377215877673376845723042724757109266422784290816746319184346686819026389439249720556450687606899191465260520900086594872682032676914354668106018436632363604147947163083665598404097794546639596245910094740380508697845787587007340269042998068198334943788439113243360354143692470228543801449168639283066451578693614499275167328428493762393797922096563542973085156641666222714808292749048441646668377822482180866723715015609666689667892856698448656891164049642192316846239078653334720173172014212452797416875404169442697887138731545383741403903418307188386509124440690309575729246147551078871065166347083813652313808407314777793737304251414781133488408567591429452890265458965019925379806549051041887963225686544369494554619921467849761996061407582243043658150640383913284846195352015301089432348127457376682066946027905574118701829126076708099450642143112523800964953292505511840284643653065463908062315933476185173583252714803784927962657026055641198830819966867719832115622789698680243586267867214506029810497198067675186035133952149780690288195092172353977718325623972795910825621441294701247321472057607247127791792728730678362175862196936692648719798920438114391267445412622344584123113552490355366749040902554019435687494688170021851085129556485740501841522992016704976872319633373443050319746692149476368793636125210054470459594212420388698850219671188287722892965722019501729876114116868156695179378339655206796982148804110615838944006714806209894779706454316032325507669393346001652507783615878359304036974156762080787447609466885418728037495441454129796494648954180955617342166257569511636960373363431604206610373050420485696482538611720072131984807347348234002259647083030618740172165408391335561718897425616028681681206611423383474550501703628952633237017833383361171849365507478995341636891843075765680444592678929521425854830588883268494928946478286521419503418266494774845458656003944184009654198271922140041337550117675554071923304377255503528707783749599864743643283535974395042267023245158934945392327258048350947768788701321077108080080715470745993134141233817913821323027522763741924337162646631744999646208318191914024517150750467901408517437201789940804184855661109145248084338128598999304163286704490788857185868335954224422984205532642227655609094840560241431771626852161706331942961048602975911927836639201435789565634337478390414297356070675127852586331179911362295400972070156878425194958430435666264997904659246619922829115158292940550392578182711025078319563899556549245266606084875779460770149808647331911797469576464552582153557963002403533000426539374223218522488205445591781206186535617384719364113332554442402721217390010979051572934316673677754413056648743916846081331869912753619139493463531773030856933653179119725336231995127719290249792749517175908173002473412756288067204470605880250712669154453439474861795766282441551936744879703860588005291547071570359858093947150437304033605388355799697262484878676443767180137301321521729150136472062137556353050908453045405372202375551784063792048602050059219987646832916858979606361848800121151492811689049128040621249028232635945200585523061830090622039366447589765192865750029264061710172582510673244319472480445814892023001456421700789395258936600638117075610562267494366601569743521782637835202388402149798540790814218208854526128097867331259857392364514493567456732072550080734027529457236924546766842147114629451128871222789196949922221998828720045992275976680593587726463140152329950458868390679315219775178711046545897683899532631905986233647456440185767010740860744535699779261930615741123246179149769709062999777681725967480996054396047107615985143181026504479558080832465065209677941036403685363964575519514831198521018272256347126532217575778486126132521613718779290074288776147411805283256549669461038885251316775824435662553694076329581934276743088137097320116769363600366625101650533510872391845281113061276943962257131810248941137620170375057216990790321706383257944097064153234667839868538396797300502649017092749307303196806652149363326631297320034270407185200278908316774357392897191701396315442032633906440073721056702070600670604189522235827263750174840444052347594205799596524057092230365766314560861179370418557824441858985384129035818361091892634783853244610644329664468384003205574107719763651648630567990929674902103910874366263105233822801034918792988415642366891624242311172201408050589729329097412735520135686621976397501234850890385297513944493923176447657070612213009936949561774269340755733948151898682037515087441366276300962714606492046990255441445466381715578202242170523177028490373811939907729559103960067230463368351754133262748597700184629029734479441740719487714833432968656768384836523218302584169606310169874404241992737654898350743611666444146347899688699127829932597983035337880347223693293906088292908145999078402877014805935182387118724906656702455037126669608565534685850923996565624430943809952911202858022787526623289581683911808583364518977502947301480494068663117704569755798847526812646666302624713793112900497481016053066112329074165913061324049459973322596100343543198508781577734184818040677432901900359591337936424673448710064123632285016259812789815765602174440960345186067310641077507627525914025688047163602828445774485709358612593178646398459034119550931987869766424445583399139268224002204891510565129102041321516876905315428731105447510890140985892890482737962210852458993504906641971369780449853357992870577708534605324341513505020466579048247139756864307853625959528305529474085325711694001330036856915945830862380015440762829544590858513890353853628534085753037015045422546568063121679610517729844940880394978147427159317261984666406354237668992624282529599195774193261646459231124344374876778107001157758834126595657451375202684668968794456403616894498167612238433233164196726425050388074564798155261955754527122278378356446935845716463301176759780670148171066303494714850543007001172697871175620053311872775531230117785135702231115166417686329185111636479585866563387592851085373975093287357171228394121564411148013880906980868682865413116298786022645273364990641274267335447336722443378501027200951528354604251880735464248675322418731784589348566055452113501792488900435896244329896390257479466174121923537265113303902266922055661823372308064737394850277550078469743006105390810807091669863002465849184654119456823300898340166688528929129873603803468857597950080242706861685622319070888629118273738289180852852036480844800384104549388283209853103340360383389994182205242468807684248030793428144618421627922273666530454455468122118703598279567881650582256355068522825518290291565843477694600088963756661368632303357799596296140690173923461832964910360537669405959804973212716237802281242659219300466094692246777426773912851256300614898056106628949788403926696998708295636006874235484489542315572469126375866796734121759630558427059018026086202868266536826739206250536049994366738361200552580984753087506908080286831423430456074363719881604044182708782210127449742942643091997709865665588625232644598691288592403955150947953024976527657816996068786131510633441180329736452425364509179836678590934501166109840888898856637065905162927741631284493231498285636788458695662403897719775626594664808012856854930706134463376546594056107904617758285293411518248629211886311402548837398051649725424049463817861387777531744324709340484724953707978557992773637759751447617483329625583360659251027520050881784002041364441036727036369559589428979533569046767558110739098943625248017977868474825948242099124640706937903747252694341830599286917102175668368338125424059133116417662507442236230829402065563247280475507364919066624541014840607821426718547316768668622387601458073124923457130569009389370549118780250252141031119413293957260216863109905327051467317654083847031975183971664009901247118201174985907774075052704481422139509722384744950250394179944845848153184320003861965537953022628659913234914685306739917312165297498747349513218377532416269277276975562584805111668178037417670263682770589491888846786877227742085006426824073214004959091649101369026145279346992420643425682955170416093739545381584451935162048090263511260978554945251368800221611050569615560919028550890124728414961892014519784478274462030787066732787349115028497618804937897108416965329052497920785589823753872051472986238767238481190452723816542932628556711738837861208612600021978531800299371334197053224133038807329371328632613378700984836644360003763556791651565867715414270188549378925816099492923793044731266057026430408343652218318124350292044039630000773481329605144075295825588678452180034123110776535770910526568171424622731425494992225436233441809275742048400202134836159222892302154700265579590822254479284406327704725094685545574353810263100505791662498477282922311914358383204794645512026268614813864393445527696571964904166455837849452722988782868855770152893301427433859042437369148182190005913552884399308929969145101482540981781591421858988565158617845478691355329940562751383662887816396135659372203641491715341166629492961161123612720885323077799466327994151952633930073158168285767902327481657076289620060642506229537393287908188707747271945566307399435359001723843756287949073043217745823695449703844730382140697664085727308230564617778895050027059387079836446847140488295180325661606457029886624700527819553877513014237302519623905784807074374277770080201145795439493095231132036810759462473648578145321935881474205989486748340799293729838947841620807501008823648442558024690914469989220682053438985608697585860044236211411739170619901323764785508429307520601993095323852063589372011020804086916707457104543637254142335889189359974749756821896868658984130235806579307601338395365298647816924200108925254333795769640754702074545327603002735381963669437940179856397063364915519206236219209557425555808230899687693275331971908208999397880245414616208429685217693562091032707031534335952297164971264747420317502833862120748958728501443512441336823571033699217191251366466278087440165433810784210408832197376167094657945385613091244401811022693258437706020564087266377110556688015572811416789649293775354445879999226588833017295690124897239784381144193489687451253830652828497369240253014225310082250736539221937472878303512026594063590132603339637417939733263524787966078572916185608241040949731146429768839478241125993359457858071276536315511704701856693004891791059855672174780326301898956662325904733709401756698245231546495764767149817084707413050237477448094916211145720649364103183030082941018066416888916420177474751088640699719707122767092873248756700302769922910744504766632954755127773160340986372111934008746347250154058005073813235923607267500757714095061373402482124761432096142697475090021857123434278248392728123022379967641279557503522002882668044222978760218721451349471580191424128468768590693113249328346656903020005023028439272621516515884058596848710413501800263641783296191130254512205373655968606759718711992515624176055064153292769463871448428414476713052967408628441336107474968699031472235933704273618533829550124262746770931440691065444862107307308740292465657382118241478875739944797373197917196348117281114010172714330544793235161708306931169240103523410136628064173969343529644426981633115949800654981664873580406432561749365364826486936038875856677726821968774413374597008808612401380256756099224921865169624430342734814758241034689385566968511855629684007059047558021720196843719004437606224946548742564550121311188197101173216852342734502300493720545716449400522252096789653623727777343352666763621177814001246570411454682588880802791236508450425286966152206419110667238999831596246350738539476414483493720157729642560728821139887305348213334367352520221127383105906712052710217973571746019408192268971707330171137758795770217480898986595797290667725242756255374277434867889833928408101141659502392091594302824587640315080616421980429144035139380408027381971096696008167222641256088764329855814737882631743438794733885031838959473180982138457979251563184528218472562644424414576498668662311588570304803898294678026596554272951795972771711053073442674495257839548879456956470834171895253616332411347523999934441195230888348979600968151916760316809179215003911277678046038701980686346826237213843237852350411565624514446888786656806931091752379390026043755376899910767435015124954763514847906061590014675023332279153799341497876543574394410459830761895354800766333477242615454111425589082578218676682777267500902994443974314304678045866731158152911219718919079038154414068086495155710158269149680630652329708513024187092579003611675938909651550415026184440364364504971084727607035039954405955224493739417497561496015956490517189792748977074566029035320903357127512073760710701050939342440330421244679566969821578909911530290804262745005912631543859652334154112757878320695816797706956241619627379585378897197121558512689993326750090553235211911519755236979521601747519450922328268045260106819286893088280253038253220063857267719774827636923413731794736774560305033229251988717751932536170575731601405873561048208735479652220970600858446487581042403881161633625940039078315132497812977415998084597691546225160264347619901948571350573432160147256807852879037365450368610173674393394204461840927690742836481681378628045412661696444392291858266141835575341247639545857423757189540668515699311283418720077507997590497728918910750914195743679060600332889771742131090225317103928099416529637591860675050857222783099044797832183244637464390588092025680259855243781232457787968791198594710752015825638363185572666275858502709754901410083454813534605336269038581421919559762282059653382522275548087118990109737282426791523970453344692153314793832152861666573146700590525024964196459738662367520551337005793089684735042827095171326103132442990592457260018090434034899515907315766570221309937670480001167475421300383082205007327480491033543107210828234715769748430706358081291399678177987109576666922559770408636803901100811493992470825851522913077268408137884282294058214423227155440234612670600892371655605897304336419500306520586357099699364387658009904159310656325011848119322507290698547906276666721261404628683380359710079176618248412213071363423534681458491609735401371233419983167449355371154326747445857288392178827827407648053128015111466255814490263061735858276687736283486430467518533209314288695079037141890975272595905504522908569655748461384964172583410427707528976074971331885428399059016434503463224001207583131921145681572074751471427018107875662058090400340703139646544602339690336731559282797863961440931739395555983902794757682433016915661456457592710163113291270089279539926938127750365498829723673706926089611740585495196538900176994868311770312514611064079824795309519935643907321739538120465934100515555212797458832628272630610311707628995318465083402882364706365654013826001096092735998320616032742570282091717320389124273372781015531972243219583932176926202895643371034175873357425745191858195673640254599373339243400633392791864764505514491898332835818106627679820347174537908804451152361839630796292185094153300150472231936692615791279524875847747025155739580998905237288201300692354011219031825293142036752512256355939242053435929361877103601615339035714279945185894614467749263725704025826161273905900217890578856602203708294830590272083853931154525183032421396581444529958867178085219566347636945532653993505604606243825317736302668940585225172733621156411747611908478974328610081830273490179695343428114616216591031860424986212244064370136746333029049551052465367973594068959480029047851377703267050768412606999367883861104537161704856880339373083118755638174371936352209582657920070529774808309108848864690464935102100374556582155114167763094477054875086996536419182384252665493475631977082268935753496267383882017897147955388015236053521656964188775577220548573371386174197108312364470898337262726792128453801271611211910765656232189340375431300918038700832264022656167243294794028399734538135152868725978205301036941003629765873129783878595036051817167528382543514027105043584042252244238196011302441312569727968011595879903200021350738491984663143342783268601659320984062791652325134717424646598767535910335589906292326910934405152386269849558068675042447326563454175564237998199745679031336555817401097972074758060360939606970749282325653092613268934384361491152291761101385301499329385479860775209566344109292629599043698959514424134637515179040601267719462672475947457381744173840709535836487397146634145921259402059459130703896666472636014334018870819580812348849860534344732373999386344904315763663683170208587303462707654562724348947250281741772558571544112295987111597373937463428713142136464417211655153733034632281968801070475277332556253449936041453469897893365972243575968454473981705493599828161199872823610435120768030053331467139445874312740565228229012656949346140642519843995002005972070985359136943621168956070973194129792553400669972533864115365962443764796375079275420996767389549560464672729647465902689033993536690426412328791811205732624957213863188011559619340801645574457269516980498967815744639987722961282866977016629039215811083231545831089276554196870678542076962866745142847265922352058073159874688309174733811928740762056626142692018880872564247340675889616710361375947565849698224939696291644717197039590891073497660797716610370148214260878186474382609612186826779023190487754032153461730276170174417862405069056644135682840369961476748187119723753329123252030121851759359328859564276956031872672333166633954279407864687596184991646573577808574723821131326746906050163731561079187066628463963804287258989997533453155003113623961023167363944008214220786108514124457249661636356880848742339440827608938576980169091465493509503587716800844815586626558897909963038900710350502365812792359944431690289099001308901498681282103598483392753267110323130723851927279878723134958388044268965832301470045428243274063268274461788835528492648154728147343028100561838200272803173810123771424958932288746586761661076401303393999242225400761631941471367933596975913166890318288896338657108286019999659123918812604886430507601372034036392008971882524532989250998101035198570113564864153004200067094871455801464167829428957053357870391118053309850955466879051387311793576840223015853446884783688985545093436093561635398681941624008483996751358362774436832882285430221885804807584403416303486285787061071111992363580094670234735945320893552583411811407363557708928937050397021014437278953631292628613727252374852517679374792664244544633221062412405571937209378973849665325049024021506398418992350578011932314605645787792017078808465056408430011975820020843814636900978473043690405145199981050895590838812460855616224430609669330764670474255040338855023161201358024907807944811478174429544719624702448785488643756195652064741230078658717116180818979240522161908463318808535458202698854290532304217405102134691421336701164250345204135243509954595838951033016508140281169915736232468929105391700149143456633159140315371062403783536459932130164430028439456814157615201399372216380657230403213942274386681821223528944412185134928420119402148990151875374041753600713760159945745494687302673643700839966835616805175998500966622303348526018097169091903206373343356311912233229216094011083257759582511838504717919239841953489357875483409654536091176761129065613562680275358890665833717237725550897373522525932541724820743956749048307304457054554477852852895426761177849253597759494661579218640074109000263232913118205396931124015865900708006207713770978836218361758168433468184825838734506418829681902284732932224362323506006230973337637803531352233106192406264991977162166770502816534831133360803974607749586212032192458661352946601788224938878990668926952509956538227921354827427739527339792546413559273432713569544092408423305281349186780774848340670368755643865274318082477541672727114741077049500025910146813810911882175099899133821833769656592326632671313657979799467224736931810182878220389764027733181285689286644530542851914935793104253064563417155290523795118894791844729012373876985035233309059882802781212097347893813283255144885893415423149000517491247977426051543788954112434959338216477332430532142824145272871786127447451854932517894153672318281505874414574832829280409230259159015805614895583869368903277560003032667708591572378807486700841869742072521205417421347262004470641231213107147056076122601129283183309048814305140635174964165919546495803023442947538449056732680984916181925915607926514854960623335450628180259576409113714558739613292753358858999802202468095511606323415292254837180137684921074223015089437883979244960973404587691221454294419481758158112813927268636070245190159279708671277917357986617349578711821113293390237505469231115371888237967336471513769081309442704629760230490985936174623991850974587354558057934667723907618454953252594286153673488225525591147251662127835720599841478917500565148182157495894102720675184565216980499922249730932771638954351476681306392718031360913999495102112633050344379633259080760548357434244631545405161031346064088551179891363486115596837937645964636420247964613944973077099638575680604275154398866273496190613688923212294676234384386039576316853362035928401953993580474573430281810479406846272464893616303106532961524358941736416805843218455866535966845765417205914789587043034316698758329573412894670835917533868761945316649626502449312852030471524867694662821920124516228220575298283650207934917059907162671623495324349471062912552284153658588853357991094557614588334145951845277627862219246826601314014396286546107274655138798064164662838924644484363348047137584689996287512380481216432693950948669208974037056895311943266697590448139350424731235111537102186319635366532861558002457909878473095024760101753319079313748160238046813809833366176866285891650880354162013620499094599509018117684540559667822478698303981056026561666234926289075782229004659917235280290086975988840608630839548346294130359209774144277129394265751158577257548123689955373828297359355830319264790164463892868149893629800914880073751352948730481592513820907773653131834231123177126678659405010506902132991722105102760880366654138399172819223446382001924704671863931316373939700469488381050874630977818260946093442317247368300172995639744291960465291025920930265065147911604788052070198732072127794097862148050081049275072072889353334979126073762015151892021574370304353993662060081412006027860711468003512491357837255463560325028541245831106523883686724797567341067858419665780277968851486561540637776540444480780514106401163537847898259499320408372734139227501688124371093961633917319128142034085793408418870624770171635693407381613432602099626335500535260419232597330392438756317475920492613109503193216605090409041989651776209478608899563940013833109859261524784649847621585782393457034274684427541003425505389605819480084823607302894885237824599057718301923040613120109466401326705395978158611964610947877607931314258957935755833326122987348105782856683835291784981381316626390019628540153416335419122934605941965391144374498561750480382388343674290793016914195090954466449522765009040665073292619715032471635519306465593373440817719872945350628665920613294080534060782530880418235313246496622544084690395134075488905969597157990154380488481203308343677638805791928564159223049110365552751568126394501755342809382648574166896942060033714755168069739385653296093129880725079160084730590526264662572129131149785507610594270973822553940395845481656223703014825818691809327824922982469415460771293186297320921506507684514703450336004181230304658032033775457489430611148322558209330232965788338125947921780208981045566003612726722706376449613373470325420360131754678226495203614617488744095920330300540630905631138172277831214312324127333187676999496500145976920456414032833914969330968822653330165981279216514468850678882785441650371502570514794101922010749150792184239886894349276234291440336541327224088488787762725647483494386431252926502895144022775640652064787510125376826265823271683710604977227387954946543153716636240721959686945311222648981712217592532969407909723912718524903587476351540936339215343159944044879308098411733367684372887428926339258438915916509098311212495226788200805657500693562642648873231613314995538850352217072295217120621153538770520246292150779341074438895702539752885774141286996670241787772853267923959917502537010463594484079753242828050094689949432111950381306020311394023496121167234045339949823627534462441037766477102502902832341368878674238154613360342539424468403255154485439321214185157533949319197163376213128576452420637767159808924858397279351823897468516016318964771730278318489644745380213731089781623779054414213161746106761808919797644493980106155153988921140944291537458712852386131985286440249094866920894473759694025685919959668803256062801956618562284956875658040611165929435419615663873871026675958535906688293978093802746708925548249605577946494637599249370377030113924794672097077268011517221294511920775291437509707514820742132716764461379910545447042441715627535770876734164733966965078947093565057509610945957130369667896604761032531904880501443910197143406886287450994845690376700412577906290723794437285809254951622930169697194295431880352695101359232682671452984779080888837135493358847023965853444479316550792168263957889428548790993676427458624483155451796883724812913384297889565002749820087915724801051874695703807539067327444946740691745959472812623803049266611786114053924982107446795855611415608455121146758386273997940395973800710250940855163344442751257568520048469212561888947046422416637795084678468697555754745876366012464461835004902898387111385694732526278218627633369291424723171468730942359904990523935998106970012870749304238413470684333418241102520701519934560177445339009502935621159444716829266828251202616562063555108388475629895327901484839490900424130383230255284121349906938540954349296415108041755706590395628929490113455919185194026403464103634766583307131291488655706830432443448999374379869809152271356781754147958202141443303156599623753861608452454880374838131506435212430993380168419013080045245670463193562090171916809430208483946865051136282878641522240747412227294960865413430306769149529820172658955642781687516669377388450815909281709199630042688131058778110129907182184259098038649584041329256267430704325359619597838110960703721751456014528199399423903232623545968691518864131483424687836746889704640744615175658409752151406159488771677411100963072972373526515278925518700904749811360838504863434072399172623335264919220794632258255415784284651655308980511765292765979100849703086773139702095748057619313627227414700963704878981416675010927498489876189498003114110153901120463709143474796396220325949588129947597620923432004008255673790962684001899480801061580685478959634761295618523785889317817722155753923760203992342879556410602907637358744402718639387923624090702031002393538868408672613512066619394572713078094508485787981905105327865002486146865975706485443400611322978187800658927671240240096019552765519899988284468385512729307961422166323089254602946038327751734692577173095372372970214853757189493803117503153414284482618245563279467076804503635310713348026258513589067683464231069549201410257875018482714978857862519437196142772873448176867010290750887624758714011616744168981749601655168811593480713512407045180823057239814042830239782883124431256405123169189477418959630931218013377145465182299468989648071631856537313123823339491785448471582445217270031633016945404344743472767364720341407069139197716479386493281341537047773180854406882661565926087406271616205240185834295303440150511226592062854519710628140818765711935731595097253804115834207470017894025197825317031629049930462976436942953489305673097123901938777637634701902912991757166568727650210123508735244579757134264959824187440831655190752808317949690107943011726452083917902026250286565417896857094056682802896234875276333779577024572117988245417174324959584184440757268453024039432528157871537591624385104912601337377553656748507150581520033267145970231157732734537969726899717683004057861754587181175104918213257051514303225370667533342115947148938049766590597722384931339731080764732494562337494314910513931128817703564133511377692499970302974855594568181679820533338896873875062017906929013803619845715956591495995589283441978214488662779327858987093304301854427555970003472032103365480204353870451111448483816907793345484120927299721966678717243982343506950331927285565736823245826365457141081969648133983852853829633207649750932737423040280505343815143510648658328964459767387797911710626567871546217225597745181315389846732310995891005812398842242378846579840260690677944031343136097146082283902145414078708273450536176305519958428939150739806732575182784454230292732565844533920597572796395465010129640919683714512402290742949116755689709601562019812406041822656705800819923927063247803418347918503268801935493524310963513662819182342283430200785815667688667191848914237672858492582158099933207825382860226263870920251396507027372824272732319140808780341192210678875744261670070642143230249432982456990388072836629635248489181732562977326669074128525165027958787645131756111476745134438968917557957818649244164320472965980883025640307540369776905365082847681367365637182748626661019444226088554474217239616928021470726666544190746797328648040634213488861249536877288160724512910288036323430205827786846829028244414528373779309228421377034818910484499776518295054760741011033232646438349509462811722072431952189091761730908459119298925426808455086970495309423890342443377898983133298535260822096179664433135859884332281054656094724572930824578725791342358604723267612966262789742434848160396197203925584069297814319856851113550118199166330305252245226209867035361921124478324334899456083256799458775929230706410892730317224955034524285547201059992567987011823395746412015273390009036201384608412613798890190684968366599387154925213795678304247900214476791340784868980872490393694213122936761764304271485556928301425349880362272260662493579245035498583705587845111380863667554683780397407331459056042994389462858330971760111094307737455369493329186976375965288472760302519786346291474524207290457200284909516007292468001978605365893146315670204358510049561680986280622728970396073451131099418144334836593907412235609099429462592932149287294039954055776532040004487245756057900593802916868263711810990837408449891331875900701984047947631924913114760897288574464427987422293357878606266815400395790813329777933797802277301018115687504325640628564007058769686323532569777918356658619680156573975677107731507901537732072157424331461005860080411784930705882422028930669028769373613758116511744235468348316190701534192625676611290560984499682925967931155693014298994899125195359166326361920423718786224028264425698276117123249889247963286219392391841465286942292108128949738998920354193215141364119356779890447001081401555813759745546643489244204237829964030859886861255490542826988852957925946628148513155277542174158771663380641519967034173376533173313664095545514322036078972948977639357980431746201141715489576840710564637580069661222337824545181225550980294130235649117087253726668329659015759920970721548802752229180817445955265149064688441978450818531846551908461420494560708015176990519687081029811133842286435899864158575473999643188622573091193595115859626609751202819684953681175353662851051680650831706954022219265832117824816776808338796486099786016613952154715508059767292795074631558322018719536099102969672708674439259276587318577960591851244620773738640288767166953141477908159527631537215528339923687000203919213891232714319790806941863024298126262751828139759815112856591976249237385760743222469636389725859815887724885524572403760316953957269326350197423201534217660066393264649122787647943357010817346122668732337422141892362186117919455410363444154502227123594758287009911372623826354126609604333173108810158395934007390556473152284682644499402666593971040836716861895301464679356431025991439520277930426955405234761996052399110331966890805113850855203561418734012873307115609190007025320197981205043723389760623778269536442963706474457061526186729187416981443219759870447136373653715323802047575648091685676552818984401827156158613166986870855391873902932021767322703596414744452293748156980151260529714447803525432100116344422763520915696291096418780550242719219059724911888210994749156405986282617123850961706129098884062637680667600344446683806725835394560079765140942130750307484778703864882592370004935630748631031370117389667087523120286644935519743977907225549025669459415909838058518471145120036688394369626790334356353611903143359200570998022231544824359581673541580219952867220120203751133213000043392442690262081604415989353891617097594999252495376434561863458786941029110186623976710306740057181874118910918873618980859051427205050829316512181242498434216567014248250390955498797283855551755892531936292851076973226429631063078963016884447667798054961617984330210510632267696309152367302473024365714160382449941710418021064489761056392078419592448592147582379657802737009940838858661438072504786246133551376210700045533073325921603120462137534139352113491104129133810965414703928547231670302997942362729605468888405014781888491083759953881424706216847819493002940874281128681315861614479349978684815957860940175862452029057696363208018537465606883608484502256470618970218955818372850115376156902619059947339770282402090110328642200495043622651200783653903775042871465689031170155982619870737303553016886009898276090350811264813472184702274941913439138570310141855971535577411793287100915986006771644625739862344665958021406664548517111792631027036589137282618803192348651297868813678920277795370030381863851536165830449573527570619751262823905560369200418956153928244153953594579169673891718080601354710223428513870419923441206791210545913453823398764887083230305230322294197592278632532122499649795985094840162397424252629441110065895181006618555401018224263832539398121867778054800128122749072797583831185888141661362222978298226761515397111277633625875783290280858172520313977617622757727051194648545653651780867784780124858506446678479360625091284410292015724108652295530879947932456323670719299979944326395503596068175987685650360473125825897702704041918408731548122898822473338240882483501766514531120628934166732453506416361397440728637824850988488702396255254400070194231520301516884069005041319590451600927627140134037373294178419658504650980696004425873035217870235722514345820578778119567939163451956172640383466734106863873264832918790705725720706641934993443854095651809583196856128777528831227422526629945290809729420823925855863170697481224451573886029975535869816927472772526334501649844790956132151791729510647549067428746168615323284656541067823081140968756603634657451204732722399677419217289588648882002720643007669039455359481397404708944041276715846055461236986461739050817863693752479974998352028831584880440501188027973577071290978156627586347884058080330847659349033203630990568768942835210726990037100119911025665653459368036568638435210221097105886350599929354570860879690017394845468740837771780483346449440227056807595352866143965306911135264980290146339760468921895599576401552848613631544877704565741613594332843273076333493968563153444710745089876966884169429145633504121699258731480010184127121039126822928070277969066560379442685952063697683808412886411347481218427314593559521869312553680891472722234672651697265451749621268839757126471737571039592403521771539139159641886143596123650830115369066895563921640919885377823781273512614733760150222611025181604250887158080599357374740968812777376641377948490630504769811569133195057121819377639395786940789664930423500884172606406572868344168507504337566241118149145639668633379343322737085483224225594579776328341400820536164069823261652125309669775470105720934654563232747391674903070005017118974484168148462116593519081856997085693023725720878735918014846056650561070166882404198053202965851018781701723492219873445111049250232390865064588076786733856430001728061341079361744481959668124817566462098830928550935286624077424734857528721393986353451957847649254924905264093517462207877705450423915101105696545457527233046376220443642021771307165077894888002383113986837062897297219987948349979382938918405365268237961198657415830945413059008932575595243858033456634573139538309336108765049523092971782822164912229724617240317589641279297112392898296508896936447473496948114185837764716690072959442783496613095171084109453415571393899650871674586342275507171529057396258668132460850139746134280268745614750241237596435377936374778108239188988564547582035160042910685353899934601687926793294106251686242944808002509785785870818756838944943360428961197333225081533850050190323747280203523536084482487027635591606401493940187613227657150338536842626408000910726166171318323292720237642935298788460670290406461153335550004233906893878527183112402477121009074312832016388009952991329784103376622740286924813098986734438311198411216644915250870595699087766430203056391593574025056234993062376533522350463164140348975457274516567616383148754104337436313997156543123952753491005459243565567469920762490427402995740009089304644479997280026843516765774380704504944084729188189398012906851617498018877495499770090090896276750485132868612202858010762460260551131996104315819740392044892742326797176194075418032145193806822705351650600557120415829444338618609933712941911074806163883237230414493070727961156136469331640018321135300641637696548908901021225624096512179820401747617742582294317297252092797990255757719477284192388127054403615693602759027565765435869589836842612290154652538692029763699627534064933681085264047443392318742535245504587325916764475686829833651328398726036032663694160183378824573799419578206831884531136044157058976292911978686950458913638408596278505580564129959691482377416427021901057365988087453837748247427889935668239466007994913649183050682929111160676294329459432982296518263382712105563606562774143289941148516326657285285501161672685537820378248744785099829559837189352474303255176946046004809936579890930497639053216757026634501847120664273982809417805618411289309344666553703579250205324419431782528867946635692102457908341421077089019229805013148429668421116429200455273106615526470744390848463174291745231502769259859922696217497821463144286335964600095885644555636506399348806383190424142454649880306788298785369894723169326189418690461166731881171632431742023530637676381624339221762847312796939863753086225374823280277371501400299168689688250342428499934639227712174273150243314536284980335921579562874122533218289450188346678036138038804368586576498766776838859378831445356575847065120571223242988777009975073106468052409143827792826170502065970393315025520282771990911647633694597273542361300842483944177841258998523913765941059438917535932670049815852250341979835407995449526774081643430628397631904792926800200292323361094076309068153035125106953046266629286451744841859565009839318897644135639544444321431766059904064873152046507727739068053346730640484169016573801138226937691939745983038868824749848752104498694683188117242616298934830009146922539902289493175249650830583255179942727588638720261700036360146429352047725686907210470699055533926814360485505400404554410985610357136329944057748225515220910495875551611421254031498247187982755592772996064276532120372911975609674833336779422331710438129841802065479437487832859606356454933437766644022043911810135058493741173436878855390804642776965141747320550030859374824559629390410884372643979222091282466173947824707147220629779080530285633027642006602060539195886374209147788044655565905313337603924914529981678845897415646036297110060023557588997643643284237641919552787165717844971733578944228572195871947951977473524739493376996381993881568974055792687808571250905909821435880535219082492457654723394429419025236511461504911884831047190710178480128818711537497459162346527908895255715899516782591601225788143104002789016161947614615012373883038971382868275019032241858554514493914538017496298644382176746256528074489834706390438847250343223309972309291887151837049138437703980714202281159257586142588654382399812163952377920819272360689158500321877664676113778024962335282127664507774909814749955849556170882503274531853605259290141507093291647265757398822448222326252402796736819556001075391216307461981899391554228736726369887811514616957621701531671630649199337857198618502227256334699510966209104912947242030457599248957619227893547952378372050649338595279013113102666669406136170598945930130867995176172533473507578379401771852204822354104875280531553814426546183319567353298122384521214866189233236068747603452461131154984142724252250882576321993298474311824100598376494712641229809725422831880528168482962847691487464183469153631290030170097659386156938013697780558569120741641875866721683317523031671086395633673444829976798411808843037699439818626349046432319720973470700619518789763751562793302326851102550222265225070730613503490585628457133763214445991940301066725836460952538475279435840566413329254018231663188800595724876780589791835056111423178715937950878190335924617166681047474185998208431668549580945655622771369689663489912791991735987743990441940856403568473969346367178303609758885383942633226155245119809911365509337056934496552397050129135933929460855289632498025621057833862749235556075678168404671549505858152536103308300719871789123026462054468388273603243030420676799911715969862746399727643407938965931819537361391634308626607981105770266848896106013018447994775110770248312515141676467669625830317948907103508627172588313757868218937143603496981750565210239143768267357896211908759586300814169511957333441231642603324799850270023874454611092684167674967707273891705642694027774875384172455736891030705931345211062152569672970816850830828420320447189427491872781691596725753536123693086638261812699010683615895388650112892910111154988106764914915137781958095565911350490475852447845893798641871567200364888152952797197990607494503883329231856563487877722705450911103148241264670630509694625235522247794555189654958829856726147402729878962563304580739536293720480261483152438294154957596999919997513393168631481933045084675059569567549597139569263234075036542753372064225003225455563877367250352597365930326623103831691530993021987372892258962404755809608842356415836507262462107099443695299542944110983689039659834901460517308755714023622426597926615536084613345189852067193080416153935583886425292650548920655701642889451361405933396053992485093051784548514272403232110786173090890231306415865665689738027488046369806196899983720934020251952280964636031724343386008030571249803328379573628459110517265191275828927872674164880104586499226205896230351317189529436054803073259217825151678848370777519020869072339803154624055194431591941458691429846598896074325212857689035152385454721743100176562425213349447910736428199604717376380540351597679002314112699794321813030799554804120573405796824739612739474732531437084589946485540675978509670928195022164303707233602131310704749485277180716351668595805284531307109448463046731509358639348940023539824280268401557602436007679591484551164405277759278837635797195341906238572317249137908708433208916394605367317282846364167829995613268378827233841405182447785434739974316409207824907046011443853847332126586890502036211715749090745175590679114269793593288379112673376353912458414824591810383259865735112286739677629048712696898375448005037205019766347530388565436371170144198762418950082729049488012608550451431522466657879502275644898339011872361929051553937578876728876297476885547238827634575697062836866574642653497503208535894212064515641083932585366219082819432809969159154781978755040759809624213866169637343845911449751212127168984317607752781918208145187980460560408682129859536180162530165497975409706594513050217546672661376103189062027399588905974976272845154818011975456189095505047252097021724947399774628920865444081485197674401059486842028913610435775572863483583964159675329642759331036322136832135080720367990553041771804660020288185295992411831273164154671679049350598786952482412325698708597859521942495247158608042512577708676609114938581458608433175394111450790771366188084240778250241215510202922792774798448013417925821988223624538585301603125877760061339303659257390519351644771867121991105542183910807651019024871639342931764437426783105285672819430933468914974990477435201337288520028263797584512731200390868457408675258817559522837455973672108167335348618269436799699064176389730710889451284946469046984954884523826327811407625994915032772330866103817380579864931860777426886091899809775302729156485899602921619322689418837996938228648993799655195424990454475799639199240689357995207473291908971955161843105432439675537784721531156862231099178523269754582012730364892698965101382736024717274129373667379562953511277952649221479046461477195691634718356142725506509664337403334880719229677657947446372616412519152008921544988458662496484817889518767107302902993742440833309200153347575450795491085945795826763557535916886966153643705719542750350704645753484848888543543416733758045389761623281837287118161397851072262237480346093195651036032506257498385198309689265847396315673392265554967678360049272496124439097188580519795996299822242149326833110299955111577289979252614919546220352081494262818503370929773332014455139370428194492159680672989961569004813084792118632471289640008530877300189482399227064499087311922553992595143620534317392577106172352649647932997460168635754193822216178670158759726016378592947328667055252550072924442219487015979881893483469236533615444725445444734536210629424252105331474795386621904466598552946144792595544328111892163043729619490543942460808561739511668059870128756925426974558870972209198408477269411639547459512444971251537473809737138387557345688024431489624833797045003142582251312686795941472092400079635270620670235812500849807595796820663144109588475051782965412663190882941692674210531615117551038745702399985037750003982537377430342208750991149369210769473280829240335683684622614843345667933171878954709032439481947987563988950085220685253958665809391879333687428256983414637331867240415551171309363605119255486917363643591915979384083008465139580813104774467950073774957654445597922142089578766905615398033988764906819012631122698291030427087110209288369795723960250635282290727726564154119913328729168824303197770090189954430609184141441417374057837677760129817980499752438094106603437402105266786133346289850468291683242999066548939096364427790048020150316439522456076533779548048292092486753562804396689513370165136990587737006178053296096870873099429844506050949637721293853129644637336583348433595662514745319334429233280827082471496381453695363353941046449294267080577339119584093522718360254879440915583651084819544086952000527962512619281969784550295938053223564958425621876870649776486034771696307068520986898620530663127647354881052118711143972260396456839994305410795351382904403756406120339073462743052541462125702937366072263349058670182377791117888051510119778959531953791759967321835229423008176652442396059419153951492194818846864532570771852226716948053991379404868197820322486183066853259874707003356841069598181192841539731436902357807229191775507986764745340654593966748105067754137306892359479457888731649029519451292629636605941043029535123179990602146725693944900234976264316382427266269603150610886952783232479770880471028681597879524855249033494358992292735787092788277500472271754922691680511256367255482931496125750104160809430207347685688620252728773429668629302208097053220649352781248886065218497536751240612985798899554741765410662247324845780144787115609125988865232276621905538239443160764945880002443227822463509337433965068756462001655868526061469800264853400417497349395950582996604968507562278185534092088131219321806687169348898002361881609424916852628828570952528186917317116599304097719414173044264311303297894609756600077871689355384962885987919170978291671759196285754617245877920944726297821605505132254818410295687412642852447739059902401413368581527870720530495258966393373494112491339793658764420214522029819382851084743561942356541441966670247322269875201954711967695632985814908424164176824618858662710676295875570306356916653287134180490791871568386579590333685203245315652532545000602056826836539573647891321839985664535153270195142510211631618727123844421962999069025805065121477039922224163513987052723889971587492728284332262289271901281024631403363011622879528340337237678986090892642680451146317101414724776344527990833786153570569532030229379197065637707749587536677109720199338603241446536487473476344265594540896445541453415418436805373836645232566607424164951047670365976731136410048329696168499845125217853315754691188996098684731838788956505408612886665159933427641075574751093069613027370934734983379232923322408864937724472028615094382211418402079882393186727742711727707286941839316731487949134133361543699355644655655674338539809233540410488277923701323880637607436966116536862661426867955335700485681190125894227631858977932376555297815954927842322353415303074009872715283609983098395016565354930931831570467528233791649216576903158155249293651591519937615543941441173857713573500718402845102300267740744062628288570673790793510481215947974878691929655705830291255465211753747610674624447833285189558371491968571240962421097163865749326700020064638460755615627034413908007742975720947440309707634324997353364909435683029277899930639489355057681111891843982664381537571010039958440645405698380111963752879009994345252162097233643458169613495347801592977013173182336129621380505954141960413161647152687215392874207679106490623343347195611550144857518684199012140457667716216169528491498598505866629797422296119368091058738252013891481560169369329505394400355525708695395078575318836044561190223817244710649072550650777423923475418991450569916605007584265319450342540623865225054112691324670729620314798775867479857892926297475666702930113403115087307049682690209649582172250368332164303508936257167380486956965880464740571414287610696946651460881836749507161328586733329751645050238758690981588546597093719571658797629964700861896673074197092501102496803778399652441451418148107296550030505018948478525359702997333420823660632005803173518432698282325476963555792002731088049206414142047241397045770611220399313267996866797046303013166050287838374152571378834529044826482195295388028130632946248986693450983150975580598234218063516513914985647349605214007442736447344545302123924962530996250348192543716896381712133557208018688026415395785602606073509509057644386318005244902066533734724055266312809245024433688664286500840057674726082672623269388135693395763578120516232327226161050551245944349620914406020755779725807957181834181794754060945019381342038194930968903141388919879198654163838221922007188456694515647649727504727276869294373620861786135493723960371028751865531147969491124475799665939892373221096100171185504509061355204684356200209303521981785526788564219915543534139032299762230104884728544034566727633787179555162193874024892443825814600853238903050152766095206586340949718318414516322030139595076983272020067334481479850038057860314176993716331053122696381157721816092664857357255525666632590125089439735310763367710005374651335886184440084433770307218751614929585020702632954096021714873224381000808339856759745014636367013937524087867800264832575687584829222031760015468607926819129350244745690910614358551935931418029443458389300205354165794509102269027255632001047220842025941958480759922637163011839384691688254314810518136844713738082262373967766337156940115761196877755967518172305650987703009555786858533047592610685416085532653357227767627748331345699066143848552899501446064410282183495386011330131072380754784404859091537037514449586852322603654449761709960609965214819123543714890300390128750215692676178256621325248200539331970179046679926301194339922583573126937285797756904100143657988827516071276305247903843572979960409623785501119666281027493189593270206655021553010102289902732161032657702713000176095779252133647013534237601513160736439916125973797079107858016050808653952306599157304189127777886509247368601322980842506909963823544557956691168613521338677497377409330219270293331080815749923188781308903546710666787392027980996979818879630506552604027836556652317165812605318133989049837182082730239913394293257850795330206029789013882880246595024585222891566999944304870244986501703688033413699004306776146938828450270314968557086711835275889149403730351579916161279582129139423563114496971301432905397063435771537356530454457591274157348700735526864926384279719193187328018294036346839401282500081303671454710164197563465479264520569558057903495526513312438266360116120170418681168749268066586836522514690835758958894626105399801535344387944352273048422147558019448310838556067033700484554718862510459377677672989482322527565006484380803629706376341537805952051864714203613986781050159364551779113646617566151042973951008464626026536056382166327343881915790677341980855367613727497614111431547161582203391044889104155350319795624797081238641849988770929140985913175043946496407667656831434064195981002673908293738662959634146649865783058209418366089796203505936909135021893373494762061383270165503023577702958137106254547717780930208209873693697430205687991035713496533639446112438756271311501273273356637149560149006036106954679541155594245342457611530490034785574863309947940702024412977270125870632831185158428404564335465932494316410090196050344716296918869755242772538010775478110402636973540797381903817748861565580599373438945317958230945668534499219940187812508330558015043841578023598378356016795023598191293314314888232309604616458161615632553598649833983721235484248501021111259170240793033318975260775089378981645890030330454719465995808513132507781240608854440443496618032534062672592095158606763539112087409034650242461037275555662677950842546369058647134595604216255766972014014409844705681154367298550047558254299490497856947373247512630707009075393991880905869171838425970991085365858809088198669083306116128655062493574779652437369327477993154268472973624408820674877546811049354551344786414123922672800408563641422937811088120138699200314549942758904271172760203070802891879042728146002655869228134693060754833910446709838042039601244793714004494188558529695881379871985003627009222321505110327870804002108549064084758823373941972028757587339806465366977217936367378103289861207664898164432131403177887340129700248714080924521478502632510254826450026187905546005974032182127542787498817403143461564841785220356511559686409001567907711783214999991411531883802155684318526605924793990435438273385206086246922085410953768931255016924177366896351420596610741386975764725571885209310442664731245722438013413472813631881513726074632094128325982551796975861164912934069092184177666398783244752175974745448634936601745323873625366995422745717739810818631930199081717664792288932222233495623074370674574922912425704806246239224177232808396449412466034279251041236691189536888447029354088277330830460252519722726974893185450725737761980571308694172961616560867878657090173939115837556235516816736585316500015001445963602442691724254495663956063971061868828001924556967594898890642294852442200672467252062376272694280847951123435375482613896656334320096697371963279422914424409005046323304597389996871670414498306758253583848164637699664912000144770401782146993117781761475841523362962641479899125215252650292685570969380645640193801259658820494769441052245029173213072990975523142695264498709250700716377195189115971171937820749480004738856397801746803784047397687981808341604801090974499138592223981479319891799171484255298870587350422505008296983158972607562009330691459498736405515635900088185361864198762774948817559985094662759080440683869579488937805100531948932040380992351773254023140655538093216297896764448938734045662370063001328023420056996069213842654187668472258624546361056850262455631270125313722276165379833725253341825211026678780084112780750684364289324999871701304454294753490535249815619042919928412036781843309487493003647508034871888046594134554878090712833200383477619664471516607286029586591883937666415984727669538643972717353202658476790286601448837211151109229424559156802868308469907721083104077304281555526383831978697025196194047468203679049615760506023121825730975275315634716425866417882039743794197106762557899697163713205439774005675324835189556821746414621734927462447558654333325169366666354514344426150232259056430916163536195366685081402182508370047098190313493653034960343284798060542121792935094447584030885387511133859525176736772826451499670096256259909871263354164534030828561083563417822545727295017139656491773038488080601713143488441003625421188094258526049615753221793582181808524363509235809324397255661994392717872589128974627443212238214673268210176055489110380467206270116217637919711871651702626432556198526486852833361350415336754002619989943873397022361516705956300346421774317543996266957600545430044257173983120224702833060790605717165734251294193377918359511101648321244323361020635242675094875117074836100235158255171075504548342023309588658498079983825991148675535740499514605352730961602095208187600674118085437294070088616594237427130150859732240834174308429169145609237223503536280806172718899732516189760839518448604635218542181062764727018058473056133283735228068044898308759862254295538201841081675728007516440150303668791376123249686967496474194792880619218039116220948964811099191569612959329127176826940495507539222357327131129401645341551041756042383804122606227652129195320591657027222877275917334199871401462140000715210867731689958795695859872786258116938448224298746385724715487324589151456298677767480960859920221196313519538947003789397866531351689185379928119776136471591030927486909426503823852817673593126368140659031220070457654456233817701384040094657772888528539255350107137748122146880941816688720917973878473012618023798188739537651408753911915038510187385014493502389604684861351845969497552487515802359904575161791648164851037701024270591143217991339143415433204708511144908310394870568571275501149859922709237852264614232987296987595842795650269713905594652972558042872417498527102994738748536542637274473985496513698657918185021259393507750881690301582452983821286707834826685714707349698485139747082580586284984724836672585901253058920957577820312510253888980471273695000884342296792617801517440696835281794812685398925564260289850775138987973307105815445418451876246341495358956044034860003514122399517702826236257915110303991904597284068589247145592628701682850144581991106726189446916780288238934112006139792290825006516538479397535305112848632936965452541968421798191105363323074123714331546128521237625534689432133743858912476538614277372074146094375754582879727403344177242157158500183343251685030375759881666140752927062034771425315331352160427819580086056834652688283263496319733256013309339717604995566665785478821248500572135753548081253400431967528655564453661108280553579724300006478827339566437655995789527056137223009362164217402884428162370475304011720168107714697512012659446727597164548614906820450915727325921309849085373218935874905883100397594679501016307745288482870927157120436167153275329038522719480148126608135941007982011377267371224523068070364085193914375456046679643603268451230229987665013151245574484048660001327988640976520191355115961342360788179702951006930220203353059658114801874065118698640007413553739368851932019863015393336297313921737212813292437326847274515638500392984854137013537436678159244295450794103342457097865067298837115246011213936685424687292807418942935259629743052515694217743171171468343897138984299706833479366385004327640000771194877759142728568750824218946722430207856073505699011573637346405217394197717745478683496881317044662274030748748708047809061857860311065978992734436140538205645789909276001213750018099440244125047591490772806273390537278032378943078009904492490226465199891320688828114413345588348827549500412191922202111074923806402853469096579298194367346481350934623642189552694784174895603889238306898918103056678703672420951975647015836066630258657250545476258377335702592011991674555544828804776553125965560162978695927315746796430409152179471435290327861186041970752991988036161328782950783968505946814649128490692023591643445052353102845278298154469707702361019087293747694198709144078201287588206383689898416566401349604615867533053124350875505813128021032706900644440179100796567110285779014140291681611152645209916528414261023454711320233840374607708057734695007158499888926050379195227008571369734360078489099615597936503166146507357833490043322250484955305219268815360924170743412776059954140493103565484618793735809569320678933812191853040952863139880426420209189553240766079036553312018142354792806358616790873095037067050205823433301865439958282112869318062659414472321680369437114216648984139219778424453622124201571692377347320220140536559218579504636165494534956385272385570438761382203773726742014306881770731520146209310137533288071435433449095599161183451219463333441683800563793802879001963923785503213382115325091724326849573985981181371131248627189884277524969255100191848294999221997427857112072085007159020244432781044199422047096644536562315528034311008813973130840794471210278589346170060780539296039871998983679754796278738403231189440232117796063623105923687034844788921911197593322551529828319986229255165552343329634299824522905943069135370834685059548216024729505602577426050655004023125283116131102211491005543342977023517309650391413305114352693855781167897754493019815512027886104099063209159361813593074727862463589849691432166351502777749946290031322172433898775506641252238253309774178164870012990340471381071424495203734858376788412572353292066654610844244954609321194783194188187618311698188003449934728025606996323105515906341319463562942784194575000825055524473252676226205389770131296970304138042103883133238890875389574891748602462845081968836915214581118818016715103385916371073096255653995561840621642753164537671836951433412717733422752229362473233243756362815895600452584476502808232572405995440164536998610582314230774984939033811294203272167736102099976549803294325717231562525491380727175451906219079844896240970836287304451881978556178551472883946467623938315733576780011678876418311661473108460284554518306413137160745091045835560770566723265569914625362203253613623806524107874073266866565163908351226862930764772865738515836986555967361515454671077378433353617339522408212955122394143997207451547950183532379130097377552738123840903826606496851403202768496397454544568896287533395210494022556221849451590813658418385116288084960644574296912187176846932191095658171699044922319811294435477832004503578921999069209443025632783749302422661275935158331642688994614591640234441338836173072454196375530239946628072719043674977756827340952920985627755435393234868994569866693410589324890044866369662908304177343568350244327719900528171200641611592970183687321604523922007114929848496387235651474631545149451558651513944463435498477074840268592118798228567206485790104081445577902379461398279509412067454924365598755197400409740640904580131126441819782470042301063253718422293135459902175101558291575593741392399976454162937731807329863674772783499951106591612282217177589754804491704792481951859235881062039965526965192364963797746405182029756365493171547002325395160157510311003228582307054236608322113718277412727744906787152406104971924012255668834440635668413104614613187647236670684739974373818504882169018863774088952112237049231212606873281010820119628249068591914927829027296286338005744407840896201604841556319704507122953898266893285195907944710471969771043829215885063892152542433629648118260104687608051359492178723840712425415367121541953658955468360546241114070511398335494105220282825051098581977306976251814267401573152003628225290657417667912127637362641899029995378092135815868378519291941663606748433419033524396037389812764596229786799118755344920563721846624965813839087981202414433507899004337684610559739765701167618061970384968481426168436491135885168041289838101978830256802817996261924723205450664793901276687984267703757684579994598604891522207221392310767544390229652957146128542721132058246487871288953140158062404955842574729157381873381583221437137036178262511705927940451099002475705543820472357410073980125608009483950840655422749475641326534221790905164694454532615833768918599083690246728276694707783608459722388658282542528111973129094596651515523261850385101206645120157035399596033002463206825706107675161775183792494382685250399446852047144832474193023956596839069563743580804657963359225786476205415830042857212729085015683687138162751204718084512993503906022316641872365910847071336139166706294084996107561792178670158673891992946915762194788999481617585166488162488684156202278576418187824782574616055196778522019841144856852970019160002597140972231618399475184921126287392824864112911277773212755403641276601456622387464427743124583734375281319298063837194665885126798028013650233340285918769822132551899586614997257633606213833888238097754121146939485754518348792692082860243157071524479370282918351421683127067950937001576577144235640610078446028092272996864567431332781092787854395388167257674107014927462487461411663762310580296504036192712128842342969344714028356202526609771809717089877704282336215493824584663162616573664938056899089661533770759510149625336949299439976399120634069895368562078301223273433434743665884163959770453392985781931337937969555324588056557870006254056017783373790290933203322107961999076006556827870133833911057630752681009401715995911152624915754846485462332211888651472154647551903406737531102788527783333587095365417990499529409389082089619399015186471516790590476294854529198648192581067075396915099326394423369622983102829234464284436641687421417778524409007064611966437112606439628730572644116452529777489323525242122968595638551023972505211086103304231021588899862746787793248447246292113372714642994951059750196983927901545691475431473784738412314295205118228428285626150032493466958992227147470998313935673205227657752753544140183211726073754076971671627274575634839725514388714144241181779573912895044895299478788612125781968242610842285784198526769090111985458746100924949394873037162361477133583173846387983269907502149638543926925533106742929771227520291860658198053375436535316929147639486303502315934093976924175137563821604087944085342623184277043403415654341696376273366469567648625160477799041252653194694511822736546424433687198353855362905505438787262224112407176508179042074308867785990528117446521126686913710979145740250395517201227653924598361515997953349927345439945238556668289210700530281581951695101645675954484702908295496355287675840634812126399953831687391857637430712550725383412067001145595517565567056233289045617921869220460427926778811678864393707454733189680569434926843450520872184151114497966922478688028357267681694794214129942378116297193649239918065236585722699899373575331524901342975104712985167020729533978460937410114084411816797497813070704102053341950302089835330961929798903214480427888012909306782215063220674022796480136463972465548446305143439010777883289720663085911859891063612165901302871316736005691001229849915353839667428844425349871360335275682872475579442635135183464094875592969785976617144806586512315266098243668563389483850031530268720358162812118086460909659147919479510212488329698185222615817352838039857277282148425905956043980676855154005474711065883993622861580803568235502441009763380591966824576957052003875474319843616306836678721439103438580241240017645522948397259003048921319467189018625046839338980950383595438028530055142102004879659374484071053165892241982937666975446417857690425204493890064818806586569764280324535863439792285363953706028538132075815980609478624620767257692619578998651930573929481128118732762775456084683518592387745470706610071095332623128977499608677478516388916134280509019465382299872529608288329108714883378554605824277782667047544967311103068456884965889291098559346471048833600600870338299932655849364299482333178628638936968949002986053988168922288734818320980831500332937780594941115763391323911425867326967833027679906787804642895299054478540883682938205144819483252363923114210747569375309239043137839793545709726972121965072942741730066911511162361374793077010877645789893806745489063944364098606458364183479230283908088595136874822950996309975925414634681674864407574059140634558518683065441386449227274169372366829446921907916332942508963246215079983781734163476337420637611733724349181398440204598423648164114941674065037792547055704425485606741779250726144671638112223737559213268136327128953598140901528174668438276549959714896768695685415189076203989296110003289559157479332537975940353289549869595909952296847527296324833517866200934086640424035662599629410622641743347862165329267190105133610102056136404440674287510728431999069174922019746944649840043322358231147242007324534493519542783980990149883203835177942072558205262542901180310350952130725193931690249405513847854576586565275270141190453002965101984478329592390871564971197603158986761775646161749637918655031572930752590204475595395447149662585211090340505242442702370727336153699961011311295119472205982508875332178592528588769329248463695828666143813532368763618675140022319323812844645559651773861128482523233066502915402025349521365057574768046703340433099143045381360384435479175744598716594772430257273842266342345926294960968678847622416976962017750415524326664622336201113090653600046897097411150383109833675654145818438749069030833063256732828437277393390353689819849272877486322920971668128346647868382167023510166357939373893218589533956878613759956077294140662937488434603307293269131550914014284474373111109073127409873720745175083265765052602513773439138125389011130808213337899095534101692925631115875106074082718099708031428442919820864366574256527617082528330490624215467282278703574549512398677040416472763226647555695828615430463112553552707288829383470330129592572135094151691364882587383776847599758139733069470238054443251743517222789128017694048386412401245948653731311208703942148754466363711885958173320917256623091577910838066174857567970050084952232155109974055368454135204176906880071004518904448414251817726661872050270066408420679269996551671231601028362120951701578537459728577399795652889493402402135144573584437019842092717260308304569295272785113381855045272052145171590476239981180672562032531282499536698254858592046438875952551410595007643956277180127377297113713403543695668502038784008890712458603331747100118642087005380368936772226587413520327660257374547970236391120822701175280905678678146072812894816656042705323688719789732630000559500525417527169519541480178964772484139547677699548970701559125964197039796985129980419186255864736687177513343756543571190476328877451506829646780162583151300619409666531731077282054630517570720589334806774410934071144246079690986338945341993964832801001476397280503827435209657911673806314561988311608730571922828532117122421139285309767166488204541106097712999746500368566956385862266402750646649348426463155893699591572370603974939125613921737544470280632166290680878363129822692789586150767433581506774230409324564271113820841228917962396943153241303224880564590284775782111715770741935238266921516035811952335495112230177561960426406346287681427248967379213338648496603945296880017127945069873376499227845868744766997803475645556928789934072531238028544039794154039597358441667544282067758975104779435065795386584889527471393354368514699273478571538538060551754366447554479342187766348589456151221490718994759560397492000047552547919192987438556659924765841968413474366999427604170149642556707712850970605788626224920600620842179960829542117194712002135390537232847875028764087271606267011813217363045123206439298239954821406489239388724957696140814330654302538161219835732685970660628703709917428554706611311906908769351641736794800813871083600742570727701666356771926685557369578008986082516602043368353016572085150848722845216870553614273745587737498587066025179374906039858589893474735799609810070648034218750510329722072772061815014146204272281874991986005588033416897820631318138973558091827024259149649042637524772573364613036545437119464626183999158387691511454792195957623104796672303407118016858850848448461151394869148447633290737989658014797530918299294203548359917916720422733471157294144084538416765067416019437817195393559471022435185591137029282719395172168318348873595781303132074186711769166960964455923088137517034083658459104091381507762671343041954012571119188542720730808566738061838119974929708894838865135787929103845529674474272391863767497041869384551562125526320540638698703893774415540966523726580152066658905014463990021110060947484201857750914480701990982063771306086941597138186564230643465909205906735301262230143427312509370777966251639638312951148778917174233953460453920183945068028326057477066498553560084603615684529611868837853876980382926068498933288607123994105558353567469790355467447259849211548557361528624441849620888998689604975607709250803238263549280923815796916290447483891157930535309588262278970353688303653290306311745164274832546401871926393581367879997095508820757845226273795122704829333610445546965406217611863399033797996329060213061527203215028976913346548716635352288014574837533145251377721041100109315754588966451878087849528584791980569835720796584055458109130725513676875019452288741208478560708482359183287141892732700611207139919626582698263595720569449770174368777337026441680162519614589270583732814964441871245071522299629697610352992975657958172751392088207754953760001212626470052777796752749439801285133073740658626946054085709777269027922269540366328737223278280592309361433552358931392716037032027773952244789279770331213092147144056568279072167597118396010084533331342506370740643185859877174233945012227402278912219998797741015738383873558462855593667600952386511696036656868783450441046672478400581491941784895819767185709454392959246896310494217298819905532701138777291634581168054990045731977879411992300263674926112442238264906611814317645344874635883816910162339080394564490792642119425546531720179654185337442342198253006467230968642058543200078187336455196261896037807264631008674797873733442142659582661081070832187724805860641929727470279631783537080801619899726426353646024331337786425658363224690200043785200800329632059772299064049057552342730981639608579741391950682174685975395955038220111271986136975849953501118610908938133584640146079484331022850036437731672908749136825685543739578019925779839032555901076349480147415726495936569411687731219453605400028883436855523415774097299967751808958742035734777723936986502743644261375337598936738679185479975673118237082525394536048437594894401154310451785437018544860096801591316491096001927770357054419273294976848825615570536631004818853333309252597818142664292652424111113183685885301346929551074702659758603530833866665806007513836810486240721558907755399998321949726561488752114346092244615186867811770279441291919875815265776462678669962527841369074359150054825820747107468710343988189484362366087068832955757644940878289152950607725646377184031994997887864564973622904548508881143471410050547705994398875953201618166133305846551125950236764824222667200209532828875500238083582221450296618278310984072030780274974197235996494219931546939821512702117494319772650001159287258120081309344276986677956868296434863736177959368536408057725816717972462551470069186133695896324414664859537588242440202845462151200668892862223042829216912570102528990467688400304745678537819498048747259539648190390158085313529731164114339624296242646359293734432870130770678649193483018085918762599492454171359798348848362293125804547851714533771374433660847820311350871958130842130200333502313463152486403071862541859490313613220620900143335188901469575618333356149874464871642339280757762199743759930000841768176596377813337806122085125333352637535628198280867287279517407177533775494311533424721380099595605198709798077231288792753507258115133269310528455758460826514890208721321943247737943885932390997792606440103645750634226986618022222190172664184089115429854180663188737761176740689945559043501431062087216740658227739740365092109032210411386368185732103342842496148905219417954878426952232752590306422943241229399702387809396806550869444530605714544663509819241377328715159476231347735993533670856424518854360118496071330333251912604247504421622601157830265381175341099455654398289170087798207420721789249876980151232541984455331442376262386090628275932264732195963410123495701381129595608271652679250461042632575852714850435732208557558407877096366894972730529964549174172331809266082630108815541353054767391754398498868403657743186813283786602280607347307211497201476250463085693273734949286323374975674633232632499527757435114581343731197672698108832513175801976907452740113533819935942224672422523217561747847090008797808611033377294707346361222225032215730252040547432813488401560712405444240254191250129680362420072936690258124658359465473261431638148170589117515435760887323987645318384763756883275790904889258698733979847756186222627420047800356322915237323525827244941568318113467763594193644841696721167944021783228269189763467806570565444660907967841045842219790872933913137724215842361896544176029625544816669573382403500292501906078269111495098482555035771234029661099120283857318252264345770668201577998259190504337150562204590625231121742946235397068752739983531380375016813557450684468251656365137779790110988874605627207744930321030832040546766415665181488966125773427369407705461632705222331886196219540330738210808057942550292221159719762818924446899444754411516951408769356250716394162848192395793153656246963361909185499008898660242295825524045154238049068693570766664682613799965732772138514308694870796868716503166915564304435099231810836264707782074226973658659530798857665814547833913284450762242111474846571599658165717367225108455367804490310256491528284868358378922773961085424688802398159672983026151273021385220482280894155114433599212011011852093808640774850531048703114724645331811050382951694414267387489643439973126445143925998075187867596804394334123249505976078090863967991022124061911514019868952081440337732598839865137171611883721978881542827712030948718069587113957224585182301864889966038360731721296361708917225876066145557743328848753885805420250833049124450249231585174356940780993036999596795782339269856838533055304190671789576424416161208431157989281840057150891758148638984218882515137171990669928666476828444424631789797543518066532913757351030341617008815290236158176193699939137905094950532013404546956639861293917406223607191661891802966689170160819658478127996021200767315398842841138540931663478262794392348975276064679320639407230915159801695491221177452272974883318234129327074318361206712875740103863788687609388872179139390818484520139753183619453974396251429274356854142870756888213877216799641100982963352134798572890119254628906445322362665204579990065539497097403654014363697744133229106136196504524831334347182342214359242984865111200542013421604232513325196415051409062208292625074709245638424918327134538615426642338094711893131567417234616502226041394842220697322988899404359818138604835776087487451694767588620232922077753008048487867034836505718272120859423491531461694092670867939430718098410694761981148781051144697809942022972559061292531078841979582254108156711085596445209381525446817400305727181855939554038250228322644040263452433164912135304929942984292230091451162843246865035297515936194017548058789408569188300431887926640102487510062043429798107396581286852611048112024781549069974719416392409562076185392367682345169859033701903132360061255977002321737136433289896867905541369211846408387176755133697873210334887905417881429539396266404524854891898998468723829463371714420046958300800255635847232946437449142114698581361739148675095136860080703364550648348190525501432205729712922319384790107954617648782040228931097078609203747708347900531740025409462032099937770247409317118648730210828042966999598553101815677827247896128966246992414796004995894068248822060261231222871161802408092669809437245129221709596783619609595412625917736925868221761452888195340378789153878589933974032391172238864638112850260884590630020422145460370609844515187907401963001123922937248076912502704845001598372603294062534179821663473065993708940037427694786991539538460453544239118975753532894704075535338701449153391006528101486470409719284605526177566076135379667326692565126076855009471016911324691758507742911016038911813849379068368725843932306851220552454617895596908103951595039008413003468474172054160557044229373279735350177947287554519147805541312893875206214906538163231215555146525905216482478725628854413584538755461289673315397043023979827542695021381945342029999575267587219976873388777928322049493413290181938300663902283690129901814473855932488959201167568373397974478982104963400284602371983603934116724649687548181265005746432362471675235741638622770340125701066357318707914571158443299937215204468800917105191844103754995344311662474808733507476158413157785022994860256311467922841672907375632690508234352955723749837651675044406266005724744665900799015893383220144742431091801258831531452447285929071998539463817523314582449920523500842634773347418723935304013773430563969848178327001972091419237728152955217362958290353477936804116200280984699692007418576885255878913617319088074318456986337254744684564745022960266539797663568513379756924565056809357991506895103875750977697379226569431883476020704996559213140372763534489831307191431286898092551663846412480540040004907426284215645573896548540158820177081308787621823945916849093479883136043942902545608117313063028986651295403157149685626601329152821173489296014847374634837931528071676202158050401583843334273671269581426511249234772792609004359778802104223660546524656685847918136655651420949023811125947837322966832039518713042931296846736805317377312313578662120251249164209514537303478261720633814083541507215629950746652745709801563602864509894144318563600208936086263953835488002477194415855681526142047024725629051519429251643266608042803546885400133699675645197948672915649457384372966717272864553554951982797189328497877797399075637639285576106783436204425452094039207460095817872805352762340180381832001780482677936027566437937113477476959965538491874442025925028446772455249630041654672037430591531060951258681078063045516152379386548560698905786830148025846452338545311269437546174131500284151565735246148671379236403660067759987704111374846716351659064470027791010067342154844948607682126202240715485593808885718262277539495186061371545850840747224938174986814076508951437070307056106859244948181629913413443381150528960705606396931152653176382138246034802906922986409941366965068274690946834008203036042117595200045766485788841499950174383599234520778086509722615088477644926259298109293259093271394633409231551524118514557625184492762231540090224735868017236705895511062219941497503343980917734638371981522617376405956453964390848644462937985143734128133423268444137942781681785896868324916279443098388245734599098717430556242312723089623408053775059370591287365125226681281341095837040763718717230216817690143987600832222286577218301023141184694821706246549591967748974249525160850474242842414187498579577367592436124054680478302613588912383226809298743030082503637497994284601903781235551811923469134849194520075090297515833081970796618143588587189128514865012955701468681063196310201991690156340520209518268745181325576043948903739563382767893389441111979138073343137117871512282700695667073691802933311331724895411424497744300263802549802041419131362470714876087820237628880347605629713950934296590662730803453627233880058912208512936274298871788764677241505966503913518261102355603130149965238374934086780454935634458672907689873677576322560650324159564879526841032242064738240687067751827574504068439760196661023756299781208749210699623661131383990683410761296176169615298641579739330884871740023579835176075731721218771947159858728496780175260734292649706583370719617820192376445521065203113512726803533403107092234384464240460947961975676609960049037799138265586352303197635185428253985817006973579770116306508989844708816533361311598878507725871784415893264144319339152314828086457475977956644197228029735894059040095145333964899848081239386287988295232136555247960217967156750075431927962447828028889515178608541168555305601151161494818348845251678003955631616480331368983155683319205304994877785411246804013508728465451145274923989503881111655294989726471283901148546265180837724730131716632345784995585629452536619455392836939483136816395553388161677025357356594940998401239654400432198749164783649127318535942150973584454040719656711175539437266461946118402550231303898213497987955445941262781171739519071701745906749428661683835085270542012373897995478265625939398848089323791965229916305343413251661500328440451600790351017715136825862684233456093519104535008253170982979865222784265760748342562267424941346903939000937965952350118296231222320456217834971496151939494567275106652617499638258484246345134805291883452972696693712663416737702248260574609711797251695557351489420327508289397954250502046125083965524669159640439289357096140976503166906074024771168205458637660767717539653721744300878701383512839684493390749864296001827212447520975293829201646732391305060119178634142048304710488286015371689063582738238095857290844071297516099250299290433339262363515171220492478040003514198893856285256788147707528452350888033394555589026806189908386700284529418236626388187664042880519726196394142352966488555380199706937308312990382986786418148715445999250440143057707823872461682794179767182965619560762670677246468969413760136406533652897161508734494893394128296313101710672435087364634878317755300516612802209146164509871882283741132130465947293261417586687003485258574376628454376045971225256788406440645418385391451181657400377873968778316781695560109175782411385719661824588722410068491450188375456938009642112633833305516144545670953847700466596408319699111403843559850783442105038019635981028369518330976200215900396923864283548858187656630525095957742651003750062663405996728936608066128201949967630182121671250313875672741004889536904104038098455691008959469031298693370027225275283869531870174659263156607911348068254039632860746246268081337699853378900959258682592324337353143962476523924815128756101280671601223606999988823241994464951420273889014084877177873452391624583983379066178687637844287003363048586866392386952829986369317061423826769023514574388514112662402457851944221282242706425088671774869745565246168351771820570089253668944338711072639409128236619777695436417568948332989913010762141713890227819165993881035801660343530125181259920453089865515307083069320755831306091219145102994188707235592065137936325264809260275745922932084129689443714058449038433407603396365222023159240425466882321899854771724145687807721783497200350722439251670920339581401338352933014307298168766869115248267322458476815033416743877028092562096312129118994513055810224181239564832050213516401210396483660198609672189868082281695873684927155160858535115324278559374443385673306347336485005022780832687731138085936199888382873891626953496600838216177176190934943703283966453417295902239174654279448434676317896436817173984872840851035604163997321942291451015744313289956617841923701066128935423134881791111109371890272063131904486445571559116974454504971844317479914358692538465947672471133736370176886801350591425377732732721150235164644625700538747340126949050946408891363350144764124903140380781472618560460015748131040206293703541578381214168090464415623418837760226340611071788685912608364487829508259536909305257162526700835209282139864632855012518721254047253486880906343559347716987140130556991178975732307542447754766143847844717997505537302892594380512911733440324228740985716889456605041648127430694177509544340630701889036862820376613796095339809509241504586248434015633184683575059248044535195669007981767696805856659082314661124110418616445759324683443763789554253111261160245489758808421750552865815772872510094428565028838769394730860864686149801148379683421759965092069032014403901858713956942766985070379383015714748072553813133114811910721623076189320546756725177814598425446368210680393018499711050109556307545747120925615704375522186540315381105439449427969966567832807127634445362245777830317117858702112133192237482004049145935701694492695830468755247127893788123136175997175153938971449821212812085717274443436473270812687365510310081436561973551077819299433667782184754282770853886768263078478321551888815480977680220602478065740048530292571397954894384857220357939764264330194734024999460394318431059623329443198706172663271260313177435045752899665894732875181740489110616608167605252214800773505314801902558410636322512354062140205103103513444438375850440727441654157315587268974365979669166365053577659309297065376924655799309118316412222594791674031001863731101132043846772886919519251979885080442073357833758963364915819036793845335999964050433962150121163131583389526068887858108899515535706621212689028520658075385741513080686335491650256597783611894139586183869040309590622111010523770893811330300891280360968748106646319489157809801181432790206364780366538818745722244175123492245398457090482290030847032639789789273047525754785087636650319762802900489027479364600631659183470868446558641336232757378227907069570346709698977833344156027134562665282888570992313911992682726897947774022395491089058628779071153582754605678444839359199342627859442597337673191040171283660867173054121355468496515758889460709958328082946057918217762950461033298645509825759189906641706581341896019728912460456149694143636007727696389538697380292608222168875708931321096016186474919712043991847964842230948653919147991767988924902160299068501760292832869952935798172566719553977144012570677207286960154847069054392148125950797799336301593273262003590991684918657633652081380349059951799865964097548008959006147854773511022671767537804527049772311334474365481742868715328402216148997183355804921665189693958080687046821634053206599947907588260930085903306866032796806530728636336413192613580414151488007890527994742632336083814150011155799038534356574053311535167470632455443551798445304636323555069157142345262363874982491437572880725083010149854062015095886408881713914057589345345234407154256186156200405002137724972272066434442947078180585197261431684773597348597814147832746838596290537439894104823640803544036850500249483173109396298401181066293314802803699755877504905559186020570113149960226705077393519960015648695307159429268354782614802103006226055229074145356872457804157852162174754947860075459207719921132774615306236016286129723300215655182886131842797926993289903699396133132342351790227920447846883489001641427420552042340848389936844221174257731331914291146147088139838975038753058299535721807429433044788959099397160445807682006517530521506828302740786949353290709078902800608069200224984380084327805637083832755002240903423858720899548869360278346810842944345783059927498593676814251636358938686459256314772283360547435503855739867616972497714836393354865186333664623283052319114320836192688324397415095540183825445327713846516370109752098867313368125035807045016558012897750066543182549392660298427709691771705382812538463380969886203286451013206875271687047016018415148675805851431967518050728602816656151587744366067291779832873861361686329269440623122979801662643718460324895040548600428779871071607690308358451636956804001099886014260720414917221351780939843109158284779178336115596967335242068536243790101620336647115437127090824910091804429016141404977351467386298222625916304146514729890967404144439204795705819696122072646249154563522336058731377196601258228584765677301540107102708663702772239974021363301324058833672022030486974878871015875301435041836892671661622320160645499118967676798953441544252927090326872804667124305654257038375570014806656297136304828160353582195632434453251921424024943109386506326328019092655151897089324827346571420074922709258613706633252925061462964326991604563530698679519072187786796010428909231835998764134287532712079824131424855412796852438425122221731545692330548863131390143713905060600845021799392139712204968301691378889371453573581833826524084096018859161887821756176014055830848781481081303315254241535303693081124410532514089037085276696435752793388979722414348074880834972211216255480928081962471887093800070869679235317751672202506607056281893878306364114832000697025403572930657013402985260534869077492137290964136717492704091799367203550091337212685830107331246944242635880289420038610245753572581856690781827796397213690234523496728537969173878927932478031974254940302062341341631037029880167700407537651632042653937782513104377571789768450215973639012064823903127789468721781696078830124842531511382294925216629643754282022049710609936031100117341209500989114374032980576124277109573699268323943507026110508295361268454615893184116107616707666368687437572372605874414950830625328450568073603925142567189371490470164566123802425029952921456000605907640270062590919693608792497709126750497639278697238568842333863584978882255929113666993588874207449748931624300935590406517888150460034252192189575047607499917045650227356724834651932562155902781108091280220084756760685378987218243323051764556290816634944183174947172755767203198567915213272411201403859012499408332814836316137970387366980657632950555303246827805946574432816064213788085208489840918645937487653934096128501254727360956016210099501187271287679078873358551494474192760608296544753562024388672741272446811943818972411583435016690776751930340198178090024672714482284175001651708578036302826999641058346832975776732616438023912009868157405508753079211301924573955358295203516905027736280052116910335652546939409151560156292294032195532551663531427239754786074631944969600470589836020523886734535541781441967200224893175087067742911931069319361824813040833363222662733563458697476806447304849233371191546463649496190123517416727063311099093309876470686710773177064873920473189750573365638730297183696441078038637740792802178086739135751527382524421352986808029941768617259613275212778286477135156842650194597736657514210598858460296676483092877211700803788299670019431476474729961294334226511252921796671103178916130295223646655244362161130351344280138358164067364809915614432764406709951890830018018761880821260888534612078514183733143361111580831218476963690439650320119156754125207383770274340721503041489130579659447778547245418895604221395379465985998031160091261744922724714380087652317739165848891514997693970379087331995633754358427984517190214282042589233028369638823310705699023773229426202073411372592105599623161337974601862361463482277739021233737073789940193275354744085703953377619457338114543183959151831262668288051161660521777174591342175897966607943989315684587834577082627878592087614405797774328243357340583071973427687360152462855891166655421564858030283707642204049947349955298350521014778821376128697100199244954957395087370215711717798552927073416742671250716955998745713461746365621671093073157825702229000209988457719822350704623866953071774380108266640240742817122187027062906046867629714454202706645372408508214063507261706649306184896611285310400246710295471980174249611714278603540665276327110767594261084506832390326661147368804572967845148779524000168341616182120762325751166729991705300415999498460368887846319012954997414463897570114856027243049594669790726285256914544045718606498862049249601861222900576527436330504040477548580557364628835476534152327389317868457968543147331624033060833762774213674847854153041300993834454381207724662930585454868686977626681926581423093667536416543865827777874652689327139978685373230677598807477349343396061905134884632840550115071810441540587621417629162920689739987790557646748672130126526132504980728464340495647432426718106439827509804054286634063069008073220775028430113980843821171195136087389321220155886980333614610137847737792164704566665879886301154018988747158416379806136150557268548010621388444168506958159968296694990609647143930079816556050196569824445494528398031282120501037453858323282643361262841331304029987247048922582212040476355868405415657426131424841108236433659660815268690663628452953562732131245629997555453248797469833296884353569918526929897821973730624100452278397043004993519235548119869614725138570205361408228344873318497834390445434560510327794172837653187331501660092409464497235658416951466232310155897888365163595078838425343081591169282107992704835724141105906544212848953086462711150018487772887244417311258655493805458261747861698878986066174138919406873348220579597109252023227917028925489084223321834801460472142309211691418375694183161938538536405262271189482836241363530238421437532988517424518833611259397890875185273858127254750440187071668472289913317262527676731929872545280178673222065225799089622638254534568709708802897986475774386289254404536648802495277022551143935081573798356709796489398212425282210557724908306312416125514624122964636936838607346904093335793944422094234899298960111332153685498845704417627989994861116040033832258346976836139507388339878314609222478163018278553681180676934044295773740181492847113554798141164894729946963524174381831108629903523051879803084451914182414059753257973553104469326171805422958690836837063839338952486710311764584924980604598278318984664926507240954334522591042522413874507347187020012909152686949985081805196203942014123252973055635115891763563115094716164815585538668886141922415356663190847814251145512222512218368663365697078306769385731893689089950809998498344159125558491054006184023057463978668529881545414375666221195479529695170140200073470322886997882952030804567862237914343352739304359954092955744923057351434734746949550685122716772165878160749102030497179746367131701376088540976584459935256553775717804429036045791948323296493630084066554480606902511803624983448421402753993671100875549189755116056739433510213299944308727702177695255272141746267887008685993260068067314068605230484594392165947233466098499671219744078877014885907035430363980166218430894531038742039409143797636523812420565071867407067239586830213437798153111126208377815440909404955900697342841339660363421713291209223429989572760959876619432746016885428370048687271042172066746728605815234376845870207891997386932223344828916521061044998915352894805796010856267136361911844544681870919858551437261125346896500169424305232898357598976965133073122680492957005812129051284518890629854927829176324804615983565705700794014996261901171295437264620643681847078011977379865305501783441117152740886911357594872589339492713875439596098481474310577411199593478612176372144794372288034081754158161853203856456044234209582808199331028769029720237364885822650815871137170396596907811854070376210122286189695352617158047284719529859930883794071510515626525986488150342088827181349182245196324113108410067805038167239228409842127518133551235656462690072529879751462266909237871120375404618003360627474768334898879822927224274002943830823001432261556754130642774908769504798705822508168631091504290425210159640199360823097253621046210530552898064044790459058902598297529639597938060582506817626570684081161437987646825838275712180216021154062602263061868993297399740349307654865286429448709430325492520724009020669778737653078518766435326936721099581095473942461425497336031609854974202807081047489353874458775856764384453890935287494086302140684530536309777759969093765847797436493879174120732403326796300713527473114810229603212388945045763559008963487805423930454517753113884346668225552321664593236473113640301986031768616981644265993578672352364099534008751997257655457209300249286234236210827996102822038306537371505143370350630029043481333118724953373637592514870234084802894921164007919194366734039801890186746960830769528038226113938898517755992086271902207339367830977645847989165409895016676917066515282182300704550868812925301690053490945124136131680660427373890774888643487964225964559953481892715982681899935372167929597235759564642934432960227942901421258749842231810627197472485043087529374920779500437123117587949955965099534202530012595662527431254031753830650207456343250353841677664395437303445842405119303666692050605820764279959701335226828023789872295456955640632509208633730071650249916982220992199858509864000164791360414690952457306970330585158525176277469382411646746181914135074849816753341478685014399960936334493355705480503516985967872859770638748055453665014788508566300050618069523060482637955400682970414328686820818807004193333142779571442216201875990309080292403304807808292961312709029822441323477786314353775675685760666499333749142131408361839104558197116321410736674151180506937663589696489795876905436002679202235577337051382049032562159760112916799060249546742837858498126693399574415577112960308658999817646158919091779370672142405703043263697821605447790126131135670067802108156324457501087221345028318185253233734249420906522463562270233962754702202302684873122850617072240781428056164883217438715610757656559902575619944556437279364757417638376530562175155501755942504716674544437743548611815469106104351074969368330837476808249283296232237345908908553123030862143068601977224572852465480521635793727891447581901883007228455184792388318807657134845173764095158649362470594993903326973833091476327309712456382342455499455706982520239350810009242982706650343845473504272475595703456227893238639730207165302061955178743792602952287830483506783749540394595271954766567947302232364837468680079193453859437271051642778039582808576759060107402314218443822352671259031300798119124504781573273706958549038153759414706244847090454880649939929397935067192132131769634543437020975085923239302399244330470021836503039302986876172468456983818828671886872102176960324996075135066780614662292784795364863914186091956827416525644770344681655459779615605540018965729912048863279863321011098501291229995391627502658471764208598207612750105080594554168346477736166143745618921930829143093928900291344211591097219357256731529872925032291243053540315046095619379502450216448965076487867109873198689292371263634524088949509087027236081202447946291209422581400490847732751614074064363941532148915385850517148124693183267260842164620743715747280618777358792840808528060831596354197539759878475489472259811854964863610386242981032190538775495670923364910722998076723923445414103469155781850574639769098346536071701535520774892793471249139896640171783205353163606391609327395996085301921461142053877335925800997705517901141696934341486577610547135357966390370418148349228392912158322366258240535812932111347997566956759548859007198759780187739236060658696261082534517963297643504380498788120871212117202885723116438766823484988104935620072857054406408782211809839450538490645251737248898451720838887650363824679472483375767232460785909767128518629668829275871820532811045465163217624379899580985247812280095087671700485547423660400250686507708297105117598149496210216262218571878926834478827670648868601787981206237841996702694832818849875279428892752856543298424989152603593958794277112672895491592658473808369879988755430661025193917837293016222435466349410438764627398274021540292706823833154192980201675459652113075384452233776692304335797437530088099554466252178412040993278347906899791098842917040765647130203305263083777008415639036558435583903897017767928435179715023613830764123101546817236209702866195899961264104413028110103962825129928964015331725790237086736285655022801475455556011351204209163625844335202418021254196005746749983863778791771344830790489019460658186169945392324396947213148761497123713986979141743123315216835824615293389230851319444262668574660453220811562811904675390744729905710627253886440868792858481067506187864763540440493713436446176601516565868270645565956718398308562071430839435126709677628985929079265595569541822681553211185541937271053846729323677306267843724203687536004736873685014246731209079128149221089253761547455768850017146062823960808967659944562333718341292178525218073412130605352133101022619182497731845042877077283505170047741224082285857116020683374777905135468084858043329064384796335820294626624936938726494245277751855669667344705467194039814813094483713603322327764001224187274070576431688823589949026938642834603627944560582809995000034314871493322504321424729697484867071897818842986213399296501458029902244883335087746148745725206198430976183450480448309133594741858870677612895726849364639979832317482941399630470132984330222915447955348446255307296894132847985860991908959622187345889064366631144562720633457333726708574232680247259074405917693970297220606618762011141048398090249913354386693475879233671443401845776304308658625115806179207514411550163866649293450479873807315060472989668400568383657276368530049632409124472220338662264497421680372243530859880277220099892946224483755498085729459865722981645215364077198448178359482818126805617195229651609673683621528981713477694350970602726518888269418372151561039044090783919667806303832467833319840457069172076346130392624211428383826219143340201223176464878069935035416750935909785826881364477824375226859395254652114892126263545336178727459969234761952705380652690029065932833167199994080411345656439055590169786326148084256031873942443711424620320747740361635219639442274142168298113631792351434216480622106370046329294200073413394088014878189159879773703277525819391857894255408172062757004333295233665708113039597175918592784689268487664858289987692403672586820489303958232211573386367214735433999796316362914645775957214884240973265176836204693542739107668429243196088791497771954803789863247047540219888217820743532028817449334512587670994565779454753077312679977662693260512193740453558676900475998493864261014337039754200640827509289234739546045525872816851681762944660574457660990750750899016877090778829347804491075928563926096091302371219226641456828424660829059165405193089196761371372049312093466966096716238153384945617375204251541613138283599618217320100558412514071658290625385345521097939795223464685176588768253702479185100542041965892019774641862773660471559246044714634105085080704586881025720727557312357447279102514096284769466946939261210922180751011383506020227337657691865704360667413204215198884645483012481705195512968798660587378907192587530185981185887189493499821467024250990108526621356418551944502863127721410446881998908660176078122259365721077916534395651040211557736635460514267260951170411336932429149389211073901633985555489237094232526426032166380997809976702875255768425213643035362794317855920513323566573698387376742695956887987522237805704573955600430830251209199969975460814262450647925233961978967931987518992992073129529948146033970064553992074784177980429049902537016679054416092230968969073064839161326363198924361802188001288740408699970702961476187343821391463636296933544587407891847605491350157356101218644263557951246633876000344565572646902993856048753432485489897761175620714054057559135356232516898285101372315311793748273781787369507471307961300761913328233482184598948985430019818441637812148650690652390214505139620115459667828720936317255040079092205418888596967905125168300750022262981628345500376395858612127034616485213777390395239316729015069873964603982015677188450337692352729196671401290941476318786539176340533827492690487476267744263953805678110517662121393548365072087752210001999953782875295667489930230765185851317935346229221264413093020235248710172076442532446205434686805665464566252502061229715492711986521729333325850683945538484605985513859255615718155270398031094117678169351505875357022658878992757684660884904379947018295263474825673050027733214355241445951131082592776505962737377657097101275896447359607056321564175578464338178008534103315156019434352342083345054358514591578067606418718811928503343938109845885182770310721478853430628784535953067726172585785189792621013418178288785154201927857021098725358261658870731189082083856688361114676954145379702715953522336540369812862165315655518823415106059739676795963605318090885567814217010408948070024030990889719897517161710835617889831880257845930568501145844358853790615817417872714481635640313147531150946686323000415531223517157820952476573170620409805428279468616893598447968782824541192638467771105172273092759254951513522849958311154262819410720798860784178372843184121378552972350698653778211245402031234932976320327317651256750206308245141441214086177347357679090063164147223614795289020459603626913584983228541477611090186603357150250558035034935028095422576804864795260918601273373543132891572430933646968534798790166923222593624696244321768781118732241194612566557208239651728969999504793577059032050694650687963168278096339139805759349366414331251222708673379537462016267240078742904345710972766187120732124829235585207759322779325271293826831838349163110971577424552613372209651659394019607843828827176081320625269558674408358347089073079485788895125582990130185151958461659638792549149906025221615459183285359135938696903518587041945711278666958101340380416618186261001357112362994782136045461181097640885143822627191661263844486218683942482127122135865613553902923004894461300069870798421111046776311572681842162853094371698126005181551043421291155547600709236466556984456361355955262764147949292883171798761382163876570631973373830516820300011398726846640821677709257674161217210325744196038759793052994193245158339536257429721116041872502358626299946809932150750184902851606353654924992007721455595908971626208280772311780723655192432837594120930565180824881536473846267204324095079178027172212301709260572112668098891567220033470843469552572238168645389887086242356315851477039624563120613825936971665788752605611344773282511440623334319611843156115897293323085471970790641092472421620840415782105517177486317301110777360645536897838156558091210972574722512876510625501813861651096497999498599110778377012126072444079973358786363817829181961025945486194997675814897170080193452425774820422652060040363228474415516662933804119697247954367594657195111243259097698899177940009678061202618299127126084270709268818074855187714562959344036243701772629244793586542235289223087419407606509889365791856077289420978842410154269012098532521413345459617170098446601828422805659948262725233346514642901221953752069698821776977262004303359462326525653095169467655930167985386292211065082120639223219327482392398801477043121986875783977653007666472622435147095853546104668876951957755987884272571493034052620316904511359609034105457574558297067278286674466375729326080482929391807936450338613101922268275220474752128135657181545945439692966489154907456749339740564441156608151126178589358531731007402372193199829815928699681506770235121098646903888905074354783247258040238189810230704326921999669510741115942590121392717835521866712613398882843463302008873233300152209704435906947355262725800852023572994974356889090510958173923517672109900682638399621278381807914028942022045476626280994342808733498171707914915646814225640471062554353679009504089418058075932250659662769344843210245518705164233681729611347896870064079098895146695955345770168573181007765748585790052135334403744373508262244333926982567102937551406181163994289714742420088183202687070064844259051861086393694869314441668679952339220454278603962518818802318379455795834742494138585536302739437237786889741938585393564904957782053443023287113584850986974437795245612765852949970497481195551499162548209196956242660035736700310864799892197459942909198468119710457315466031303813005389844701823183960069863946314599500200755592555616174612588200079214676326434079025342794248193346338283875679084239244018891293461497129844664248476437625988560277359056850137315975688071055503097753289993054062513955354459501980344068509861764279430531422231334907260046825394192188735088457917565276027543069323148468095151473088745113675874761253047154238737910566290657395473473522705913786749748748981769930564773515703889382393615897116985878351757801314651179746783257684543513424400757914717056923329030801777636865056274660641263768615823687481227071446274164704325145340779925982336009956853515981722541576069039680632038258212568649285088191244332427072702808795956521766888517324495095766260859854063914334641295974755572426668298048819357009690272208154826638664589537189987607901651098304120763570066203964562536330275405644760444861515518566621048383346169468113063075249134523373139500722231481393778917042300410764030683818109062438623243104006011706421645330810967578202225809789051304817139414341481865357385126778944905210105179000529685158626933848747307512665536517788223615284598888050135477451006008589992469344056468056518979846613930882297757197376740671810933819758074573988119192773316908609349094427228927740810037194650937962659831289950774870383218332025494195764635051698360327636959175689548793365902554211762857787955921448780596692285923441529376829032511885317404056934859535141103759618864552626883109225671282385951007997171094992361754100339956649873572509319306379802434021355900492549068370993351350950335131133559025175233102623171091205660983072121834119457969987700707311241791652215533369493556417794586044778048582354585813908022180810184393031886519929969021067242351106091026914290984070259538385225054166714610339966402592200771324159560541531380125776461627748629021889817832704861045513238381888555875814284382405127275704768516085229814646231646187024314409816574010102629703172527107898800692556414677483028212260944484542251736298884409709998773586239390399081203212981180376727768929197907630185957778777280493993910989532346599872591482319105758273140577042903428539082639156268516080017583488624547127372968499420612707582583043658261561519849490675614287094139826765096341051489145276013563957692548282510498508181312417506729842316234407806525892033210151528813775897775875299374432272141665738387903769785790765921400419550286533845888809014068222384495864806067649246047315999599619547503024531350395189361867959713804378174387965547160489496965204759802860212803118713140659639917515994575343327847161499411925597215851854656099539992906896620911906579477097716254464679458351183401223304270843383330574236756476186330825493960147173145008865571812451787155890244221010718041167853248105664820515475590844982142469011155236422027900799490542862627527298719871203450576379960040799279991951670497558677648103584549649054537196595308534465306515975046489233790636585995921298779174623335881081418445616004327157801668421244053689637610089778469962192293479195398991697391667790572784090499289501223489590037502393301089259823318706820516689469852574321464371859923873672822113898779995737252367230936044304348032727227375670985455023296322902995843070297667144327868255421672417394173246463141168161063043869247427389708123235758213300017095732419640026427499365772257083019650738290443597356233300199874315560971283721184023694857312016846932790868113199078179987080281748376783283491395642718388909622092961683846403261293006701244796952816883326214693958329760798815596807219944798296679078113276239136104235444373343376377916581745062957293497986994734281948014689095403172343785739493390836253709499035127721347591383204335906004656772566507140817869267100728268389365769592558797661228869835293835024801576713114655751588082995068101736592836233611895345378036654404605951514704288270095976567967700814640688477652337488476031085371021534707103513224976147771921309758276394798185972672472617359243092268659777679259880957253780273050876288675244380574593172495892319735431321801202944635773401414588538589268067178919511586795081797928263744519590914512946206845901523920170099714642340348921242084730944069647340458960391376022237963452682829210904148149730814508702600008437302806495610375272382252508943507315967196185470956637420348721595410913471575033443761764375098959325207501919099594136835966192652097007311673758209494849593512448250338988650341095732272210999064753858927286125831142197587506084445940653692037744882265969887000877033437997737526919699958538510126935793237527012179367994839377989813516366687109517950490577154292336380520173791387217615934446192383024626055900953228875540227695992110003980096309375776221748562553149600958210374982880945135019026543827906935810547975760648034813245723972314739273827072706282590296437159191271958495360475274522218105786766777427990454388333507183370579315035545287459197025764543632580500316496778810223975396891410428482155042626703101790317039571820027672847804210790298090397193779983566928791360341513867653427631490824337554714630232257429491837473088956631977278679954292810889768159388828414988891359371198092272591935645676779119679071777390884582601341369907808003106485839921244956569301285651687629208240274618495588625378400257230290259165713660314314988417772544188363581347699804867492159756066525196800841068689295711290418361706422887949842108629160320824385026433111934096889368653052232872287650434124011745578035811952589753496224142259525795769326504542083714446743417385550255618680918933140325087582780807403295147396434445783336306086839470229496455202153648751974781782584196597764274391330147728630681975128419747989230711559936157743852136298451893089377899975276467131022376108520550169280505825954427429334674508124359206115125908564693403206900931005733288878962821618305551392865763470875168556356866962148417830371389476084172062452666705390726526585567977787714633705742086003227511762179386735644600040792727588591524990142625776532913873623669923514461133624869895167626704679244423815812387207699131643220551225713341593759608258770751751365649305515926051420080756285697274992353101978029235907705247400805908425562665728658366852476746146814936072620823449807027146702203442933024166498345229466840822939540491294464367076575574832167101584907931216322252943067462222092146480626086387812723414401021691966974060560443114028927161760660339049701801004927469070385382859111301086414254509919753242063136941852390253421780174930290284903133512920285790693446856432117580084739438398795007997309153257385560320934094695852779091772764109022036670780778022210917974399879832798106728956811299131907713407395214955173840639214742660727498311626074843537389537258232044600888072711345068143076816823660778494081082244703683810347229600652164555257785201065175431126656304321638409882378529586099308413221378441665384770748801332661116469553969294439559536045051389978325686004830125031945380361507764534360274933602487064517212387249906502988295130276613268000701635545347244525050237177442294821601969408926240546804769183868340330343820584570907395313764272658230954583355960491432346115139677302344872693907742605377106107772752262972361562103567456645477306394047538069990682052101613834240331518218649514656662167926038072269377239664860460645611958692169263440840019072396381095771554499104600446132191924949317329281826560539220976190732166967469558054359160107174281063264015293296149925624280083111105003616454994927426990996364088789041300923806313485180786161326772287626732210601910110813037358517882077234843336664423251075627255959093845693332175698770708700983786270284773111529784408819607224598126049688141649736694350160339491453339103771366576253585953486698445993411278854255446879084098573672803354736479376157754704486461096862764283309895709668939946498839937879428000245476366591990148665656232795923036277281105380860938286320708712477637777301816727335394324987203716698664569295420305873745247043551818960066476058837747118976380249687436117719217048622299344370888258534273089291823588435753706923365729060560063878832588873314332905484936246796583553735261793794599664150784342783092071462040125902291426347594488743670075137781338719143517447078577369865890908831151027717825672923329409317566415020167618629828894411962711130472730616733455491550698391197964543131346530129069101345666066688628776071080596955778818768041183415335335813003269993225893289922924226104378380318926815697203687596984653976763617731787438938427035675305604337562442735171891131968354619604133695560682444095464668653170353358031868878683051912891672073873700135201842341315226176969174628360817456270417694092611020051517786456141406830613952588555163338721397103070479278480571129097294409134000734363804943369500116272263098698563031396855669862111103242355765830643363780958437199884010223047949038564543363876690747098356472355074987073044798275268032233489364675244368546050991705162578595507015807689078710577988963956914320653790398869743426726257768622719810802151658276115333940611231256575990718147419041139861626902661994491150511621923742852436974181097504411966881387095303434191761384470720999795544943427896494651601458330614910961773094880722945488852284475764151876196864328957809691305164809035144631829375000525389849040353259075066996159083727358208401470528271939298011398297128289049275498219534561286136721670440991513892936731091418904885964376027273653035863262850629577355008117548422323487593812842656341852829562947277491589096702236941158173949238848100026757583860459679106758392379669280717562603001982584950448336754341496934299828664513881268119561995620666094367322632437124477528703592855106921906453910444001321111202339355211353795551148931760043430216021465091829490993130303603162873186038247062383260453182052858999291539276481421594713527538615551945682913251776652977621412692530149932351751372908629646909093192397792289132739319986433760677174195409848578852791812319130954300139255484512438162043052963523564197219435340635537444391976560212178602085302331874367391956574774972023205215803569360434511730984730794395384196521914179026792809621230860150103130675908188731872703625603633042068862117061192423574268340631374136442604596805407747710269080562274492927584872685936777601630253699975718440174930125394423107709246841630638112278398145994729253870655949595702087412691717364923068569974081672832256279494273365899255364726699583995466344025123648338979515535760748265526863368030892630164312485648948543188586776195758992742353250338655228026067044940009718252456402866461358081871450491047385711961417562055872046350529424448904566598065171867206931584691402298538630305011644315490734891369750538791171011685972205844000886038386776157418163782380809777721158664653492769826160881331938330140183578167683799152643971141786916639370072345038140314202267210634575007264765231404861708215983391566785516899175972264271290457926695008147222526414259214050198152713373829492994385851490364626657879087835944470820476122270107291575139735166489557682279220657895797918268962532295187604427218621566105880318995795277542839245598081816205508001626983594378313207983959678894505824166338987115819783145220437343586678240228381845752614399205942059817106128970212330884624414702009494253500506170308140136948670858230935349184273123895808221015999734752320180960754382241024080175903652813738222989958096028021767201616808377049544875115354638287754416108275555809644340649206078005790810134067004047388672081354916359578502920842192088972303688410270793603709868421059489239084281884315801082337830908398903235277319202182927581233458297931195288527987452877532854888033568676822823575797326766539955662578626579081372032365588849133714644658989048678894695183176520400582589302124589380056120553445820213016054906977275617494855198756451894250849142160936680473813525478639418151727312778405059325350955947489924139861130847019538208250021420252692080402109648579356851907754030046969641356363871268020236043194050612283173921089114231616902321580596704328187811546839122904876148463859723271421525019093430000685360057742729346907030796390536791338696048690413436825861691165550090292241172609017171362790241832805344445228450642058139030651612327096662693785261950065202070841723716748644746402176425836446991835896602047788784535086866177941557950759519480484633842940471359397346634574193384918665724227245950216311088439322286321414803586553775670734965342883358629064202071232061728890069539367887987189132297759480276125437903974531359021036267571099999100648653571647397792593659635766437040071826342274181462370303839233058639726921885393877690996572324774991074736728548722167424914985411836819506648831187294537890535609733931295540930408496851301020764877851548572558557598750813650699397471213881947697487427781869083181217669789410232214846601511878498210040424829527808716829484613100853062457249099362716844049081610837634862701061826104779417050649142300685199040108754722955716092791657331047458033017764151322587680758258046679746366358050748854236011575916648337487946468807109447569404037772572705558721439322769354819089944429717531427006871299989456125367801255121713981237694228979162615449658792328013000534337514701267726691391211142556734366742801214858205784766032000913965916641345172362587801866187111322288744430181773676232223697078350140447834687212016404400715806747150629157031933287860855629179896989923862769388051996745671739069271563531619728452750849657812719659614770357251606355311255677144461146254500952670806739721553661274099071966974466790349252846335436049108014107499265746441442056558824643509820029708395914293151402187534107592780611119127427566476128331800175455727255878142220009797725665331566901544736940830864514746187556781731716419846456395944260714854273557852603810428254000089093068417350442716499085728253119661525053494360949230736760125743887419130013513499000155486041029863246349733932435250541936697477806567633464690887051333238811717559266214618410054840800264011368479306344386381921241131578361341930246995264858449272563513132843255469464812863542525280826173306485223644891714259134251585428432948718623164371205777559890859779581333232062109883538370390368203438397103663174572646110211682151488950129105628182396044888953584907728249209470618263953370962342192780745890154099075531090001534295703817526554411113427747636682475911015685844592732755520506615055738202975762315688475079654733012753011440522270081779874138500796926315622704365945105736423117778264556551669013029646904585266132667265519063186777137735453965040719071521701205434042315646278823058879841663930202507048159664965694928429617412620707550933391056918115834841666897732874904396595154679476760844992835953143934453648497397548979923916632360475251483128710469568112114434570143405603656064460355233857720386319058977428807045234507267118086840314309373939040348626644586912168165971628954750868840451256926014931368931951878468383212275237571354027839025459747071915586575105195772319228269965600010717482791275692139110180904008618353137659781565977170889814169621002750301904293913353316980940173541076043058152309776000248933513009612356820998053712204612885368953599424567844907260110846798556822214893406324724932572949002082743473965179533116527113070802083939028517661812155123185770254936040128986295149334274382574474996409514201841758906628752116178175452346539273913611506547168807894073504790238340706345139926994493776823855190229976324313440151791931732560316012916016228777109015444335930819648195349663366787228025016367396252030786333524461877315529569931734309085749822289435107928002796096560954450140815029437600745495982530076458873337692535569949590431356153239920666225013336928933441570647210319385232120327784255230175906084448172638533424425263408069776365354954190259163880116509005812100421774446561417567488444490029988894620866591459174766346052710997773133748405445086333280599278496558722924733328083534736989045378983493558850753344011220192603974153133453776151925600941806659741786042170070580151467381462312553078014097580011602736700173758841000139977792957175725884473284596820953905873478493839205762356820336809116456359738751895603263459352780322581081543682908123504885269481894217406650418872309965418616750276104513085562428616771782455487796477127120976223116304634142838347553077858861052914769040040717173210899107067465795991126078241563710091888111925253707443169166513594494009796256251806306245792606890540588034914067207109030632936303077418387406636181512645153191895979764405080494372064658153618866684266587650378638932128275394784411050745119722245360765699632288860465429764470914110304325837479131670434904121125280298589328167759900717621158185707230725912428310777554500628458881838725121396675194362124362543956979086376064972132333701668689382366642706235308024461577990044909183051828439253581218557583906441354689855562079807967414779657472711675550441123333916040378671769650078391344373578191049211862599151754442182699814088741591769579391063019578729567086966623889797340619262233667093545430662861352195163977703598423239653404042813767257692357957654279182058021792967050564104626345689718828379324743009736828900709955327705286975151983311409500991742671718356869518874981917477960092673550077803032327710436092597670096083604037512573164590318348608902572698405514398692019356072411462400700546960242803505407680325807667521519695525024309934099705986032076468011142411449728565658692297675802163714585629369548571866848731142329900558892658095480860617888992880879831509765331764125888113088475610106322348767275062242230412924308030659682239514603975552139147516175321923892610597958619328690274193489881685180142599140549374398345040340780318589693642292635833758186416603757899922174784969004184912277144632755125104613273418922824865605155592182591313103746220707103013553812355539024679213369563065465141502251773868900207624296058748208181999405825469556356101367113084046716304126729526321116822965037979817343107086606307288504513038472416140079000004727402079261939119941695711186899378943140497974796929974108838922564345855865284834443564357011738507182551151063803560610957884449029122169332182800245875625368560177885242354389785423598413514612852935390482276343835346665135580512937986143391082542976149336570945581196236730863816951311525402056411002027282048098919314017174222168056777312525658469484438768761385816997935161801429543010755382900103526666447617735884328064435669691557655052484326457823510034049513963722313835959585882700849763147905770076424086444713199746818626895200707016585180655987430156061290677531583356921068304549171788195550264411691487714398331340785775406336300757898550931130947067282734252098901924286193259903315976737640284226915424761496559066904488828899721173786431455118510596554463601205207793345399168919875239416797832235475049961838342619891335236131072973640263284522745079966974417802660540266398805115991457171597744114987669393639034310454768352877418795471401851237927430271385031813086968609594734035897949997656450822073609061926510274122795672579333077701236481239423971622286295144205696058722437371391562279427517928470873765241630859671081159588348867734540769429354709013497362286888736844346802934983329405073051799267091342120441041567366235018731786947653318674418467497295288400194266217816594094200785380520831729462691976327522547545609401710617806129055508117989080021228757683747684327601502151610303031007586207945797706713321035499718581502325409991205213919155495630524130347089926781139946814021178091332405550663736927962491700856944600292573139868916990029918821837234232377664785331807175054052333451610329057117019339099762682325502847680508629717717407938731139939644738335722855705801835459337161070766327193962844883504941117584813156572084340051654305880922602643077305849862707251783413530533234306022486801833585076821154272366387532211281836597904788436272909724883684431325450985849862253529511928949366396363405856014076769491134534759930440166479439114886857631437990938270998326994094368567533183636218381191611650261399458038045969481041244360912445886400669927597386113418109023689674918223911250458482947303990603588244120936751727345554049177151853516680370505565964687696095252104748765937304512925469734197665751827382289911297038767638366334891349970978023480852945430626236008069991046034510583509545739913479953888254227672366134499642894095338124284396137327486092462764877110109588326047770866230160604033729100950891750775800967055552078505311311976224166202389839151816329246193695032322950355893295836758562991840599289057090640646111891109081830137228252165840955077523393469069018537120500107477556958849677682439888986571707147369600549276485207810658228197480785446111698306097271905763050709054958724439905150395667149036337899935238579554167127457524321322340041175740528762746439952302239820763489319277004597215746632237734698039017348508069127684051766612734416633343137940612637146733031249282281155773819165404411047549341990168713366949194758680278671204934846532285829044849948299314980194169483994270029872532531738841024775278215133429321169617908197901336591187079551047031292488797899728113429140672180573381734032495791767297759844625505365676786372845651309273115631645169842057359636671050220949592650163376248098795666165987299159424507974591763161693854186904345796457777000969939440528118857984031860216768527055195722893337980498099911139153393825130084452239449630196418453452879939434894509551012669048282308349857258277281872599589202502624915806888476456367079699216178740779534128067970292054277179706192064090333652009020530388729670863783679397543016458569998280003604877892981605149573121973445573618738187005248268639380707549652627863515517218332838834066469164910043884409109726177437714746798367651465531705932139507604794539913374297361188630608167974749812119426777465088568580933328798875700081550548393405876986513396815701815766476696641725061195795160265406618748924055678389320238009659732726315580500161813784251806981711595564245842417703142223918100847677237713912875486957563449800821642097168009752012078990025566425920691520351854652372579510230958937775678839784619220358771419404406466758118861578599632380858026233066514502542619922430715779445052321938202701085176805749666390559453302453115231318455652475777527173115511041927582046409925938870863060595013566337900064015049463727535653697618269478434071570121317357845813249484113885591794125507588677924908658635908804983557422993830775022003086527568462352307510836942290627876329931561947414593445991533369391985251594341367641989666218653845856101449008924828617905219735064071272011611591614000801406689674852433253822933229815479986906351118321685115616043308313858335609251883131330859817166789993832715011029627354934197960937373393895178832814647468363940583659974602050233870079088105543008765323114349766781538862597538134514503299906553473010703923022200051799195345950751894406340372815565951066059209733449933839958052957922195095001482688251833171014024925930910927517966531369646494166871603074852292351773460295908557533545175816475236143924005409816379543875355834076738397898820970755971202681768700454690012926389635753984500516591627589637239359612442326400864822843957472145967405339206022323266733327508274461218468725645825438290120568067193429578836400541496067114483769061166731676113615897454216225198606097955675937927111508265901639559733690406362070232861386452706667967986306136109783863273658644683153595413507537920495421841358651889444446220220476223669967041225713621599278929219885537094480515465458878822780676281021862400525784998183343027448324252329216557094790298653896585951995520063128822972864947965598694942645581973967006501345723507033263348478369587743333272310487193737561216411147658028582903095707553259355133320300978526260974416591634856493802479593228749609518290688217139901838199717496607517151692964412479830016006864479388792782869499315570971030653833094411645955522369981145630336280844187286286041120730496916471794873813941058606606454868974455211624075089520930331560369900269949711234927211590994125880958099493261517525523358516906275318153405756022420004075222748386825421865981853790782178930193503972833505046768626284284339496444161799385006009791777801423349615246775260506230738471916326294745028515704148451582192228588423408971339707641593473923492746956455222203846252433254546414036525854143331183021023745474079780805824185527298045862184993228053197382753344416656543342796681099439847657730963569394524861049849974119086091006968058186221787824762907356772336925515639995384961369986783577262456824006885196991086073338583539134586147607978910455306298557615248208263974321104525619905286200254056568862206821969089697768455412308692073888029677513611151403902717726728108081668774781465990238538188301021513873818858623128356105100438190859144702955170350410441134324782799752275076807470885643575827374759916748065041559534497918006477705820757419375238006458418167263927799897755912076804465839230739088603044017378902327024148195534490613853020218295578647454787907343466949085132503074689915717327547143814379973230369212146372846542649488540263072977479477399318981479274918480319907984751633519772790957268372308214008144944333187022132340465677707405940630474235285661860995975654278550977541074474291685759491733454991167330071964976298069059419265319882220173381438089414748475833536086189716398967847891890795566559973769174144456764070797565268022969123683887686378745430149537668226781028864581088679769326219950309243836831674949417014315161228678996661321203171079883795033587945714775767352828939071780553057753790646100182110106661418874132319858708954803391644940510841566321141068706945733569087550363968046473051821585163945572653062628631279466159242694208251929819512890377960278868197437219945492053445121465956653059378675355428027661909534703453743226163145699244721697389854351833861243136309657388536476220710897004350414390895224234803854876788569747077891585817581313941058474811264988281616979218975089939631085034475502136325572933910417560104215719336172227677652835630691835416671490742988897193492461559138969781927117472510556767565175230301813559908871782859352826484030767701560583565239376634981957537840205272594321389408964261905939016791929422967618684782008657000444697394141006281078039824311411797822967402925176482892915498516298843792408716064763250295802870962936445191028519886220439391590379536483254640643597235737313812353832259160472197212152051197986495331097719575313163177193933567253946098441202651726827757618357263140739828009865591634619604452640487920003485021740618439606904308082485506316248013274538779033429413370014901790013155064882680702915186634854595553750752115466896651302768596095250530828392785557098018198024097838530267462416601549869053635522541310370365934775996396655998031768538975020170485838612441324125408420819553069984488282876769089843705650450127665920351505680205863718440620346686756115443262988861665137363345076867581403702410202194104455343838521187675010273220577661027136858123345013355480602777092952385281596328618340495457264614758454090627302607944207368432137139680279505064658379353159837309341154945268387664733131682103013036381236874616996584188191073669114484248863647179766480900607549556626509097443305257562220222836892534403857935891162411058033292022799293239746643375444888949964595479538347687880309551158452667976050588032675291747857050537531687437886137623771216734234404564385878605728870020925977587324677349380320361320748405537598578712545091465663810891557133070983871870636301419572377532211700113916154697986068661532676215166798463312390707578721226970724112672351521308553748099270079551909854594428502806761477296887580776625893947303290662394482202858525284891430164353718110892717231597009660016829852851410708477548090581487252992977955410195551723663078498961971378881435738104970129760090834999756793096824956164814902775396439472966079067230472311351277015852488768938195276620200167098683920701050320948628719589552160690292989942784315150552797582360046526679109000498180377516486605476503663699943082191453093772407637253117347080032895154639254231715812114874722959641787652319598593363333443815220745235950820007558628094118227363313041226256659974446828296076287666656959337284219347779996848872937628040711200747149652003980848099330358040940620821703163881228890684949903591137959597229497460275235738134458174924962556800746507953419298796881398731193816712881226004689969977753089075040769662084884268293543251130351571633228791968438491323474284210086004273680300621357923341932600023800504282849871367300654887291007763159666605400572301896691122937409441986002318809242619077159679515585464851824762276964367945711157761873425961817934344877308669679862107610666069553800500117120021401757800361006797721912099067342251285511507341744875224171335886247699165957782360532576008428882371456471358184467899644723713484416242073372543323490432911946890578571152641927466871172757470758249361184794633226936147648057973018287381041493388323249387091099996824021306570387086678917743576522018215596598566294510717377044107191957555565879685648361574056597600438308932534561636142127672676676778364207216991606896856813609478836036545361172445081520506739026379361191663819860840044920666598149172425536845457254216136387016448329564910698849312964212972185892318686587228631624156644066269522126124057845371630202941855634944626361786949467097739355321659109541727844079244076981570514772143190998927178893601871121977962569249691328417071210801016303378122299534775998787855541881296345550986629786805982510390033503106751181723124020645112962070000338582133312260773425988583848194146868018311241938675409627403075660687864533586298357380351304096384556064928195470811380083923534625602091130757453983320377127990672769787800997184774722395045525996997501416555392273959727673297352829909201990609973435040779212840083324972251134644287964401248565908674276473676599036430295672537780183165279288517430179062375879922115663656512302015178739650470438173247115612944715539114210556723062880026914527894664336321144522942530282626134425060994762390220912136313607633417817812201697580655985839978382575921983389892369931287615337107447305266242433457302096576705749409504801016523183212908405200071909507740315802431192508372122974418546284577681158883354440193084794634075316471585772535093656771038477593421983245465977477076765291636497179858058714131475201825924095894036957816852658734150961570184476441676025874573638542273977476176884777311963036081412437772643689085863878873057226384470713697531508295941105245122987300038835552471207269278027908126249131324698505018886280454834245338419335115768539404679851864022314281009597706207007046573827298580267486695606656562583676354249091993277611145392337006799206671871065190095274112319273068472175367444021287053424335509415226407586995054759959757490239220796253570403248226057218338942363543253932778946942695177603074112243589432712205192067815719685379130692068012224003665024999389279573123120265605605502284629438592108887516669875616799835597476555221665643312075765610291517566609653099689426126435157840054717068014173001841394835248107417619832517747655380944886609816793959966010525586668312950657331124478079107960091965868102864025486701737916962414455388661706748111342707792648176722796957458851445350917019482281493762614890797682420521857360999987064633602244153951600118897738756249246121956598976216902805581794597720941768072595078464009084400584806272242117021110621369773662384880478842005463040108578771319024098802039872694102403372436552563626428513436623746705938344687765277296950454870458266581876948222291655114988075161427433094906005640818389985508549007254856343611099642976991774029027147750214689595735779477536136138837615224299236982855790681980525424092784538464273159356447074806588329634066271504026726670423339666115552772793023946525115578864333872492794746300802024134110907285527539538093065558431915968423015638647232172300482320420349398674801272056480509302434938466199212105125206146179492423678774511249856680506064771489508762622552517083824555777804430102889618743579904997598747439707054795747353135584223969233930275790145524627167859257394479410281792105294508017486429457935854519335049078839814086084459606480769672145342020086984629452268154718776501907803494649054496109659363958222351848077947136877526337648915716237133153851280437135991101625890417299099961393343721178532306173852662777804716918532612161307561510896308766012432806194937346883962350082394701254605220719651505448536680279420766664637758192291058822665178268852912235097759381608501844997856248689071826025718993464357264334950887478486489515000829427980456724851069268530065407065885615502253093987620716420756735374671510034446355662065794225120315516030983273188588215359697271125926973252622298513986136040925899883905578530144992666213632877332967595188551500528406776461538343255653823350603786024054519553131890848430134569965315257569611190431655468485527965308557136053714708517977728980698752663463194016557428942082981500976849159650772163950647837525811368335443740123499629405528335073025953347274105493174761586050613720177893559435331043564323259273733545977893418881042770339215817970501918466188737352555953369255446218032309133988304727486556800325066625363303640978208073996386423337456611736618231965293000017492170671787446627651789248910834703408949691578094022967577463031079846979377757323177777505585250735607936781756097513689528464521118980694273920445347089057032745862410670924510893556225435700299156997877010863602859854139666561386739434152422931574577545831518663183182887432403704764010029387080812304648523367175635618307200799795535883081204869483909383374630396284808748355392708855382716168690253960025140520380571285491168961533173585011808997021553997311231227804152021417905903869805278822416484388049882652821261946679277585381481396275416868488121804324190696253608121530397389354000908862376953913395662973796243178681496414177949488114558380070825537036084266954845714008283430489534422652341392699855357475893748780569750251940054292095944503368045093616699880942696854079815980885723725920344610660797184923750751187473383096939342088596800355562984012090285909232634796385439665588522823569624187230974573756794803424252698495015052384327886791538729571332178714012117394500826630547973705091040199090525145413530941458070287976293048469815854139390349571533820781330946351884748468184016382619464141798538028549744303462166111171291087391448513547395720796408643328558428568589929248213257022108097287512922132944821303337330443123510634602126067195750388011590520169754618526662790705606750000820479995471354846014279453119861507117948389172493250810116672981564660618797025297987156209119829900587128598037084329986101430172479645086137213849522155549093143209987746232903698423092490269883961301161679842155617625520262066130624569163743230270933364340023507945070647223696146462391049116878136444230007701198469434119212081066067348159028858550145640717546980061355152650112329146370984619969512478754478441881956503553599665296941623205207434374083005692159428246075659483142506221201794776988533174118403937964981174837387918407683080215221331725074646760933225460645725590788135131128531836309088944343764507271165685870464525360774130208528980110450034612195845258532504964094385712201421316438213983960232323667545675199030781936911921509172447897217541393417207080937072509707767709301349190526925743426930254731961324203614853029122463715685667874380923291750041459605409204456789691079074156377062413196217367976766857678572228667439406872050373614918524458900568463387051889211524008041806313725052650985705209951003997594210111770398519767341651309427787261496705934821712538350262976633314586306915897553149233397624146686154830615277456456876776638781231781288450225191391732077775102019910026218155995858603945556106425919651662115228472588505943675507584337021435744913369155617498475349414794746178726681545727920941060907517670127092198441400789451572040307127793333238355017736843045652824675312872300602872155349936094623539119303535575825627871711799015471720501571446200752479377500232456360420661576368925269260312402369564839961612163511812469976707205999504256844336394589364901744581566240874402084710824749742048593164403603030699210597896531319423563736795139334094100533622716679165624019544670588384752260857923902171919638925090285671850821377299367217926771319628772417572589760894187281218776211884345582674261677637321657512134966037880061122045702260755158661597994629061567406203032714368229081288886384216270422817846993116260472636389709537397883199921870077879162275217234564057843185742999394210515775466040843908016791023623830011493968501294024984077634163300034797447771721146179433887081525431903072480126302544428145090418665793396603397952914926415346976124083531538450783625227214821001280662166570801220915632398930345190188446708260104121653850140644368111768990509283892329953019354344297374744975892598310572842812730497738423577758778396486400683721838054554557966075866741272755726071675160057514571800621052826118377236859391229568005416246097752715991868364909642317608881807057306305563857051557861452728952412575862537075410243322316501977766841884134943545270371650502568767296217985974738844209831591407826259742042930311196466180833352773957665475618369935332123032365892855563440002522664082098957327625078528331651247018350266605342371536925237877705342989100402960060768525669556307727249472058516940415743010764224458233397934833077402821195959404563217091825129284117302356848125975295287225526557395041897603078799935320741112086586448632567501109087832654029909075767999150351904118203169890576723885146505065084229082726520512807831659519242266034755704395849688212872313496998424452194907423659180035514543943069920918845127145709312247185709133432762140867303739249377812195466195193266504273660783336686499570385081803156823616126693353063779085388863433626055945888474560212787837387340601457081425116696151189010684309031040498362157483513216973774841355892490089167494259738612136728399032151983631692719727116118341253167666501377876836190603043617106690097086469257495137196481821369983062244031588597097019184429902443537232812500735199559420330105829124765654767880558680326330058208759887098846177382177615589727980316068482315146786268582945111814977019797521746629201349741360139274561971998209395992265744378592354625954703293348286971290194713979999284185861391768743748978732676817744126501850109223020873475558350313274805488164273185338137461545058962409564632938354911395376550777352474242301725152756444490090285968262690776328975964209558959987928830621024873266021311901822338631905604660670589555719946194436839207334725298630786502639145993435931868554483424065709410304663096508249421266102069099198020522693262454400893502577076954901299127323976574050879899485541728989573505651109511960797276104527301907498153899282657624028184093920262408348854121968117437668360408156263297938434159670040451318825935971612213669349488531629843863182859437780192892438329749673760677001889719035281969332712017961630029010233317280734838021531698656782682935753464208302123749473120019567638408302499525075275901152791751812904809989241229947518369031138388242827572152822015517494930549851922103091812716580417020939483392509425696146781202169502706721592056346043151847074134669719181343327359578614217473435495470449726024362468834158506633184585745554700700275151544760278116156174231643329655721936668329849272692983450057183884119302482978841963662923221062183890721612192598894443604177547107968514055351360621283489324236778874419167529812198178257993253116042422058444061100079806153367566256474257523133689867739929623973913305690087354853709579678774407364149023649411345796660679778895725428967744058477465603218282802265760389980171363393109937095989864323811168996344893235950047916611627471089959639380285905062427836083539167751288909681546344484735382111511666366278189671751584239721335802725981273757949143360701496461912920253338492052220413940861174774899150514430180215889731447235165787752815336165211285696388398212828586427661212805338148391699140676129631235738919810567238025493758885790472954798056741258439971967114323278529778118107548281250039338350342367491003042345888005654906485658775569408405498488728271277403171364720714177480559034737464444505898204128359472724823070570816860513984059178610292739448674366178877654343028927525593920804083494255821240533505291557631971415431196659814104421727768708294126870008019484539527139283862544955853224072606395787433592866462154509293864554030363949215749705277192700580571534025946713191686296455104130733360424364753456628514713874519025058813707362246609402896778482111731898562115326756479514506509851944478039786186242141432940664976770777050473848064820628309257234592587339345131024369317811110083849231668738037472751466985057385423706498434245779299372959661600669091088539549097313970474664759646233047292837265153133226874659943066641780752228334385236476402084156944686151350650613855849731311846730742100549808748052766674622053343731188598276673528087147201015976649958401081153758757770047445037518598349838230762629667851231609712378599347741288666545571399028161397725564673132858827000759479967762491847762610632115733612626865985842774509137726665680902861848499763975303558371374261870621350152367786810636093128059589641911865071287593906488739872389996241363146942403608836588749245115562580218736742389013946949086940064914704750813862241251849529288370749416871802470208643811749469549583413305923770547282579168237761600961085060481897475327251614532658120227477241677081630808153719278693870163905078572451096439577094757162478363050516119804595198542155366783015007173926720636527083695210338686970926933635506483582037218484793040245626059808312763427661688938993992282321581340171775337993489069302017571004609037103972704792002088311010621134404027383618160807738628071227151629155316804443255859837274389540151040912644057502539419274040818023460084723859703126939763718341492687638193080946500071576612542256346457062533977175500971673753546770017648483717210105726649838964632291183460087240854349881509774439060639187817154674053810016458298923975247042136676932069386609933627196568589099191991629637636046215051963753366086777136525779680671965859775827714942980091446680574899014201203037514544766331186989906304917442377546067144002046581073148778856474308963306066985424639005237153390019403199222481472138490102926666050551302921012862586265301474499054450253017726218110938862928165982347695311243322827545549478687884749605539926488145614480850495836633516795628116027137755319565420144692035841421950535351458724717271553226299917320938324754493554232269058687020048282683377782417186084363651813335145779100598207687681132369199871775873097173561852769840842066393769775139085553689351046415924994457772889385734550577264813682201236334602098726153598771315391517768525137516067248554456486924313937136676272481240213715810242556028997339555785827421813248410726881201264359165397650565946970662712710304015164044972796516150968141760814685343563406075168878570520500216233024696159620044109988189843462467284840736866845722157647156696696756843830615101526706323803352200349172054255527538228673291920886953981085025958885514399125481602091197781819484132982125743429327783946308803449630594479171120826747671481962820590869679770167560318020716044658225232429910278208673695123678901081035138307833705820650166027360070395784699152000559108404615563688904820820958333180236154079528925252772916774141078247043969664131420932274844858696831595603968558326824281411195155503006441751025444748830681099528933077409070277837303163025408445391930661393500752173787504628202237860620827910446996496749139713913977160363520694079824054124272493477631670700936500219954620146646778807047891052858251210940251926903536979291808232440353878558942598173062807642106521944116345233574700261169591863817179939787480519230857478802993027299593470940811661489925810088644451081166681890394781738054346572105205642094252863015870677550316463107072168001628233102679342090299608514084833016114788702548700027741547872351080797720632722847389862369415492753514840852650241902987907729066864754052195725243102125776402218546222674174396542750030873479503730894478853347536107832314231517415338851289952629195135539245374172876506447688235059448622788129766260585990378412468787930202596382539478046680232126783326400205216157113812044126488894172315398190373929852175033422710927846939181560568292003127884456389784885934185740595172321375233833342406735836852738591911025986449929125925858502186100176358406313035476550817159844553480301981697056578326956250930433455525238088532475010956311055597718193129518073467521508109735348252207511516308893957471253625444912160349129385147038727164789876550971440911581956058680154293186782207822628787155295081011498343094508905972279738612233257217941405491880556152015306997738609001266018336336487998422629008477188517006869061770233894598524366329508914041018512384286541666994516933411307052788786424162144736091264982732743218093188708853191115869116678913747621959436296628337625486093676777174067171938745986000588631430197736086935148613293892016638624953624147442336777623035559011636113535180331129483062683281862886684777258321305492973023400696832194478638710532802934647962492094580598191038894695563640433540380124698024690641052525172114876431044670841383145318118792441267986061212098366678168514741189912339490367303708470813321832130401264552987239067652819438364449255386244403742514266894561334768648585858798661052996738897228511200224288145482458428845278045960223711015461729870662973626886598593067151618594154950713933950895186048874346423345530371412787816759986238126560280747562998892097484758256136020665199309413982015409118429345030424854580717950772983195433180240153105148660915734365811621698241105946827188301393730211106235394980694969158865446917817789116066957152543019887912634860303778189691392821182131848165165397579874094288285697947235093647616748243002068727234186724052003391596801698488387596255211607998000937483490539116334986235239065817063772287349870856220025217076545134326083747513514165443843572990976804014580407708551535880596665719082223670486597709641183937490814429097700673834725688524983921814891103457792768785701418484833916946437431916999541866698385357150114604623006887011385852429908542316025006222309412877883140905559145615433897675960116131747124155741397135145236370537012693311929928870743998257655367176240002035319661682123776969515691938527041922747325971271955798564437729569450100940971206905810148695434569801104153916180319734381133984095005387073305686222246406786192402772454447749288655238563633792224736421250588252557053728907293127914402882996585123319261750806315870845650981464222720437489778520862524260102126507747779602626492774522781160544845372093405700098471311305532103304834778354429528543246390694463267996198878825545987023281218278142691250976130482972161379548116771668430840952798589419329517797257390371899980788223897066250527153253117371096090088552579354791335802842594762465562987476135761117865283874824305964526440058009970206621332249653211334935527166597260369787462279721986005072564766461219838424603458067778025951597501145022829252917150447068002440011770950807232709947680828126628540812663449270967331677486879855937841211134210378873659887146745374405039007133885501054577237476620005502525103592150685022750201558006654130018645905446520482888801962438470350717134856878930278298383394455148693518395667535589106943964508045160380186796940027262976320331074171632247857923646573040668086129634755443938800682906790779317923825428679295707957019593018698252649542857299581753982832026372992814472828060897791109157110380733787821022129754012617339708634346568608819583732594472522044627035949118911658243003462210397599313028690826968983744838712033877232378337999414533321982827689938240290088608025163235233411334012294692796500096925410147011347949838734582136414394562026962319620223825035927811067594959300102868178442943765498897211097559652168276549345565396536918505775499291391713608003230103727117864504499339157950752459825467008053118572927098498990483997307233680865136463852903109515911916745128201077747989611487043376191748176517299035494410204437456680925770154885187007196939449019001725623750594655179403635470726232031198468698666717067957453621095628594392402330112620355870819458650612639173196591005992176306406840400673555251171363089781980427503086922437568245614428882381897888201325868668972864392200801716384457910542211778208925230424864666887827050919257174641674157700242403848831164024369008293103178148810100948533907293226859214431657086648952298618690936691086016763354829675864959816648228561210919097622744736744050836445482330634245875634035236922690293522020818104023303833245740315698247521923539039763619692811791160097938024773374927431217044671465906988337538761084629890796455386832904941669280985650667844560196847047361394926308594553259045736858785322478394824565610989501865618274939180355396704400846335006525535111458124504794609797829956166791760947363395624935635392009211940130794739320866895037680126775292579704281558427154304099911095496650117792633865543539538773117292684322701840100660373526557882731304919856399264565972667100495057502402447822601597144548115790692084202341761926149945471838488595142687725351688076446999852334013145893813416092190053453194349951898151000676897190341572021936333509379356677043269688964149322735871249961434413179863791837609315826173617639339179922593768370292952210934388460363680153010576199512303966585842760366701084828741195450071083856393477691689378058671859751356311889493765061051884655246743171342748339553171647246315957664963811671650171994480966037677519744373682902863503548863055866331108907270390860112880981259071898872392050267760059352711017883115544542105357346770507607931339160930487234199345237941296561794700044247198016099533249599288631180169490513206616944161387450010407005887696386906042729086709482979199940801286790903373089710610189255427503380673498226734874470212221194976949767191183219014656616181031798907804457525882631514598589381554591342853295552927937788408041158726259936459477361717964325331565932541605642082543997822172933802389124957275609221698079194464006882238663079317314494193563615156509182957357996997150323125482371021959708370902435038884630797728266568399544930219456329361486451444233619547958983414626114462873905558195165415377441344086271169771186775195178124825321898860247313239582935063130410907444460209366866927179591980955371958945658381292819614202110127934687396477365986256672499454611708684059161905686569890242606730121793424937402131915940321079332561610268545753077181051557706660271682934240349843012149312763627685319920802521931901359681153703346808196778714544748848712601611279796651140900124731013657621494703877028328108383249726098884005062963251243892238886788874172509207240150440994330079308628797823608188248937083076812481260966377586404589809166671462110321725596180889053871618193784250824034166769301174588650461603427214505232297520011650456413272719693257647127899160689279199669406409426993312920565108545171705690424756022359994547271564212258638783571648430786510818024286236886750322431172477134180494158475272983780826236516915744325799787017858051923616599495609104636822480397166511856553988184437523970770131110284926671060425847524259617409261765943935428477484143949168946258954668982087776852638878991978524363034067421496190280160545727607125778216813965619179406014514655040383654331771402849302382250327824535313292919728925787930485011742600781767208297048018604625080775245616492760668767166946673563064968829186450102803466225208566738535511384573107504708589164837493416004525780226920186822608968943581649658693247574957221385073010700142245891418356654509082351571826470165344077095543069573303467386747769681645051127092821204125387215091054918698325377186959964880290471721317447145605618965451272606725535558188854280615514748639948053496964370987210854961678349608732352778087101020141028336538208405146774059939128677762477033069490374293402133713842028888097599259030185858183936035802331507698143068443047045474351812199342801588400607042300788629560273939799099126331224870414933553049665378018163409840787479390238233945562319362664876393172283334813011823353236433894709734409080622233529082107354159215232444662087640305504551079949677505737182972372294845541292642354295532665532631721472575874243189693938184517060153305589811729754965761619448316973977710044146922968012882891596766301922496641356372217542522890034014706283861788783339162124444500927203367854448481233579420005023024758073096877743322106871645649403550560560901973157305790701374112572750104513802317090258993444375642759329972399525696014591165221889634913112756696002540291624101771856628628572160880176126117946632732458070034766859369665260840813804844541270711621552652640957945768450088261261090933838995873996244056616916216393490219241908788428015011131187308374847172602559352365918096055938042900857378901628228441656364900184400695789198532225019253174718331872866065625986278928182454938294982201114138371226425589388481100385834497560688068146045102051074717640651968058820084120244915079825574534203747374656806114726298855948400613604381064538667838396085027548239419038386193720814946599130521741508867013722047168632172889788251122630068557484483323594917168718796188193088299907250902272043565270505691036320787455069216672001634264370596239635694692742581871290141844354312220624742430221807656841850652053801240215986428178290233855423899253221176280908628795537235125741477331919140490559311870462361475908376276881717231867048027211594694661089089465890299985065078654298299549447822322455024753427394776192034204630798058927187482692645044492760473136743764411201483123613091467606202139626348020325141161483424192800494694661761796190519387373305062508664877740263246161904886727484614845359197012571974338823532284497472824141928400375602587591894453543443835694920652557262537808980825725786645555758659709542356152911518574124683153668953394027653265013410516125674063424228753979107503375143492262404733117682996506684133107863052915230978568029014497651074813302072017365739115963123232998654177805034631615704601198046719687552042475975564505455583659219284540428006500441974356727112498857564027287898403627943784616471583521506135267524977448429188043728958274643098524871662116120153826201823869832076035625069729767171053392436786532373969493276234467865406816856624073370383994136356793838015743023062885683467356116062851639206997609780607315933992947862310102631374227921424716131406503908436283799676512766531474135824354323555806234935635940055785894350652199712419277410605715262941789315182941746873613540332303831969724254286938412311312089340516687847918176534938503394562334208220711319244570631019806224042658963999962442865547885065038063651504598827141687098985505024559438326637445153154779623438747859032006080426687746829420240483907100640198163196265435237615510569874492717118035612289748056273024054223095931577635715666905490656924966514210268672137180171258460275480102706658548235486487001600815161539374150079139726488368671666417376664840807400847003228658632886614147728123085824518343609112016409121965824457072283277934101861756959708340419360751914347717392456024404810885236375186529306999544039286102164783883269934192388224528230076442534491617160117352200131846384797522740003844031476686543668957226245903735443987597381400245498335101135727114460682059747632488395915127124410932859379698569683885216767647517658546493424999097092283138446351425594848533162545655678328726209902098282048860463256627585208158894368952934148819319518670150242173766503636615410714938993531692240300782993020511517570728063438048256257622883588446839653862680071721474859685747965578434576637726143724778416625013908446121615576666285134594687459565039707121378062857582493243983244950839517043828911906721361367969060607480239377059651086933010790089026783528116712850327977959077396862211078779865081701640920235407096083701546025694852098659495544324104293153650724569368398918146388266852412621509889956755379765163278852308318713996309647249568836513236612471231375938861738212303127651355598823672349728836955120381479591499641382184667437255340678268897162325708146584973071372025527430892562261240356258541103042213555477473655669256664419411513480957196768550419848898877167097199815944867698999332038786431983257546336844012838494609171246704266179565275096503079901375688139478125418580201780299278150580123373347816493121997229960796537939733774266350251751262029219225926512044671422015259276736763107573240588237552636357722419843908699345757094113748501959282202982079995138534694638602777740994793557470940761016051801210365697222010151620856503740243207412858952612818798845134533797870192403423526462688117855307395152915790280574977541792263267093032702534647375127187992598236911776271162197509615125439554117770073761334536575529423022586782514194602266900933114070542376972531381808409238841040722187203004883310549441537229989343687885989565110017311201518144408833474452120696698244889188239916896271358421907642768134298837699306412098141337671310212320907209904270339278539754351575718157957151609415337252090564051065079913584191886334363565538874885625353750903543272674568269822534637924369118668197706049536050648599199788829695280094661902087226291728858178885096306181710704145234184430889375939647010664106268323168127379956438308234694429289728186859751680164850081521865997725461520338737963054988949352018742490895466210760289809885466936485047767805254088461992496034160277895978993211325401684799805658917461111269026971586623905784477974923011326517178140484533985930580223912196180154140995914142760881333233860788572943000324961406721717840610070178400050660467189628833011653648720568680106388336415189135290165792255780424497149005821148861073375193194529482215173615673659416848246634109577162145585711676269037811704709567527428252619084971576022929669706682058205930752051525509570846703613720714298291987504401416974432495441820240495931660889183525008829497328010984268325508512777498132867233997759157350111553587423852983503359341507923611353319525133024661614531745290487626448749542726535349551805153819135204674466261049864104358874040993137440273593834477084115440715050334675146202028544481002770382456208589181540085268940754177993529351835122868521527589029253466006055813696448391543243438435462429110700642128683106879050018151283108158991843234438255913104613570821613195250547824263104690721162638820874658429074253330318989368927807930828613627165954095532577222329984687603889428233545694467648408216121719523382381304538740802864147248465723636202221119409780106773012859610424647571138151520954692078738165776678561274319832471856848328719814452072924529699221484582860376211271786934488228488626811687827416759047949716611600828966514557778283773531504816424517292498541274834014951006581580234678558704562433921673276760908265102653685800840190488634805850919282743274660849110152178818261633860958540172470941666511277660039089771188718907948673732254593680322316285624803439795335005285769472192048631987523735613496807298402018968970301640086144736591678854300009751090846443423100010757333491816148413000631523816247803077106603597861176949033976758415606410170874145449055523339444418767640405424245340701395336867990868157520190889473481518086115081887101631692713007877623464107566445896443805048171352924586191643981046025398049547029532298519756597615386368687253382111831627875254846394291677298845690463069629751959631954042866029055850157043333556721636806001487777217747257947987855596421298359220211382876180328246212454267254575337984954540446138092358764826611869685746311696624558730685113403079565407803156785100947926126494124473035996105356936261781263004410068064770101881039875485000869268909432568359341134886761263722278767463507012744611040960709159552405776384621798221932491625028536702017459129814649588832889500281396843852878498594780723294572181517011012537567553420428943917679657553827255620580532839997609511261917616659314384228214213759103437960232585965009050147066576341357494647809442783001023056603000620705120611279295527744767431264443691198697376261598981068112815484704501408806309765347273294122344351703492562123531652252133746297603369881682628264364504201917821972973311981016756796142222161406822448589433960781252718623314621735914204427482199738361117731325620330102899008098410165770838695464047888436387464345851543574131071400096057714497809773456145932468920460787877500953148421190638651432530905199995711219260423372104200064010927157179243952537133051493125754351433214552267155732845558610137342571270975425622654890205653919047602327227644677046824205261893276059156718774752290521258380035363458380823076259655060120670733785807532646345612572843984393560218579247067997206164090538829699897538940389542535391250294474397942042757635659555723880077669995150166666953480657442044916509610946489227888763285067921048410942740592615910335566367783587213970104008008732096296383123506621404162355577913964828450992873440005144417257580697272637282988334786663064022507042640136178682841656380762495325348534383009798754801821488219053256917202485112251069635574682228837556198536280257037290592780741682318336343159272897303477487821892490758296851503292035365674895145254663199933206248120570909890054020074780159985242862724312482018947726921007053435687771394491675048759664347287797531631511562697249223556557050126898926265515978425427196368233314868267180303141724117536763533420161009786793874772096589958630407164834497489006549135020367922226094701064220434463564161454271621212311175261146909016504872844891431521607909452690285871657815297064581475433724879476889360545721465207767947947531353244000541272077762556410028488426049724740702635639938638664429920304798204529396376009960164804064734040505055775513436253095663372833857637221255158559552015924735799268172251337447964581115078324884782531994268142159787360266334442594875636363746225712690821257906211817410765316862604968239557642052679956702666807549075606990785645758757160070506656071616002843319501601526723559886172919808449312254030697566691122238927962533671171615019259929582162787835571651543128499993571568375311818220850256363210983248787448084857899094991802175498502127999560740936744022943087228607110359755006283067299276885613467067583325339547947010606405255835041080658483862075410968511827043846605946000651206032979685344500149023817282906224658077434040398986248222241749065543479381961835293648646763546292429305787961473686810476372925647739444299447775045229340611817035605063704778230571225754729100308676985362412293073434550772368264207067606783329050579341806467767376687264430434769611025103066301888164664119861000727074449361740397043203637702619554229063034127684892588546216964151659965713207977444331163582830449326299914372561581353187291029423236073696732095647800169378485384289535457421264179939385253824222911747725539122781937202293904727470342688686992416180069658413855615676419587075475894699681536187350851459323760022477296634394656464362237124627436135418265256061572308864478223730179863541321144290663206146060531246529009891626577438012612091524918155637715454724516832306314925894508068201481478242730729756714995238994747319543337403129262711372067324219888965236499142003266705729028552296045207824520153576024091367519937775935756670814172240116059102953764297907351313501927242390035478781036053779684919985371092125968316509120100881369012344581598474374937638467332538227151984118903083062269311484030368912740287460300665646085624154900405948102556587460722642870009359888433585858484605410577263651569862570271667610763309432337420863793337117047102652367837106186461467730353107748713113761023131175610131524117870040527708142000703433990974599225879951945955540964647861302690830107586993204751231560821834442716595313264104205660695036686611586905753407378029001392951041899474222397313784953271349756230315536662760581407653914742018526284441652736132317158687893481496548996175526637886834790382323911804905132003429326294153140858393815760781543309498216568631552125671399172659140325901585886858504743602910258565962333239755430046099302825429398898332426922309582005713872850004474814253532719535536799067990377385001694919935703826498419979122932772441805131934219252216390775461740176099876741618201618565677396325246551200424337328948524802138148974390696880034290670701744817879518796602494012797490165297905267548995475116344758063732905753892498393672340151842077355723066997305360631769543898183511485902398513155381458010317371703165458476482008942501893378436544212949590404721376214067224658757258303701527245778601224708839130856833314320054660638493995634042585073780409713569468543924032235860800299678179840485301822335645143710413826320105767495933283039101986266992471822974727528634706849184116220427799864398108999347383719416865228365077618480321053208829398167002983073866027066775403460270293663090191583973980555946196710561141894507252663594079083330898780360667784423924039555596372625206744592879966187160961195445836404615481940973358262264219227587408664458378358835467325099338641858895202253270243706958529145632787628874883751143490673032003911496231717555437326623644065527576948190897281062153916087054867399472451259141670327032142099490448661280145293128878256228538437062368398634906821738339575186966871441595812390327157106205997068286768895481608240201829306122500825185724121731364710664037547234767338396062428139162357276169654050708364585894232931055905946437491481373573259393332330293135718037391146046964441144632268758199482618418603141674508357027711190903327332413019133854934415086935692977516412255190773407763204667688314457350635170333803964742254366857697627533195955154214787146917595196405869064400847073997071443575247855292583518104249457281801162490024387418179409557492564790605827591824879236031546560523144236769298015339300713254925773444164476185353829021111393347109846934147324744161250871789673586256236108447422551161081128497265823740710243438877349691848536424501975769126763693384924193889604254669313337461123096938321185719410639522458051550913644302619659730258441072272320295421123877119776289696078661526283201631515431710994890508561515383005702203830133447011038310583561886957556822315478260709218513816893107466324673644483767955283698807310519169055891893541278734113964536277367842116721922682404052088935926724970245125836820297379656727839516170458467688615199485239497208579448309275158219891106404331119253769284529745361989138589661819734238541774505454505804823051373706666786583779965624812060549656821370454277931700729012478535831942837191140283578435189430301791938373137259386414215566030823036093788861018565723323674762547760340197842744413129612081274722455597394772267924394137108541067787293140695520692432236026897909063489225665325295278559299824748305217999161234258266098986165208107991805743530023773170078844399010405637317730232060299036780955939253635519040329218498153365812697646726958087194455835867377360302540220521850306318850476520752881341397838203484551891762240541801890671298138279087408905180528327688717050278737611429074518661225051997980370020772190911561925460036931500550760349462698163830302271576582447669768106467228467691276306228659166925911462892284981886982823027962242252107964611654159984489314831727290169504907872111995258350905298422294863061513452890891110730774416526764527814196237057547920245456620255131605222528356093609682379700716512991420654608030916536841656772291053358131702924022111118436726556525875762857141588084215385639586371509846127467204211888630601947863078465190350576709807575222973152465743009779611751829282951747727404931306856148761265910238839888614550481701770230400930001377212003024364146385035768016700766800074366265187553533475810773101950490841666898540697162539969909868269513066796185517274987665738780503219306170501778155726168650888221854944391723111420502887824813382328266050688172682904696278194258576350184277286890326157832486236178244664248669413367190227548544436155361787564298008374617511429504327795239961268667217620286439091665346703962150564682913709257359569350274903840541084386072474229020218071237715750446092175031176147120994396855421054920723158804012359138915505809128723325465947596659260071527438664669529602307206195906255031525613734579168855998235367514857786422689875537839639839357786133746364145353603781143358048341391905508960277913227376676432097843444519186279022110391820867031819730694381113406950856761480231409606429275389924715202980116697826501708714244413164282943171831985530788164989758570443132527222772665095115493460003676038709892614458838571654663079576737163027120859999710843535587744702663969840590932274033897722085729262701284886762174873481266217636332412807570873998734503350379770972693567592855352244935683982027259004363161399426198301335896792484873071260162334727455923001623780430270948688008743207603679086371222901583111758171680190036585151664738824173573467346197901648979583480848746005344123230053002126504130350168848531047342010712070866438218858793125771307152268361206569266030677627649010232089963583616682414215504673033565393010173483241366619451468477803838822904068708319085046357573172366119298361463248065426080873412185574859810726596430272746829029385417743520097114637066634738134719699692114318247663273043262652976536348894085647680230029636560406684671751224849815362496565139580228684387123799216594989405293503416341882916811793491595365477083595673600065356638974009407426928033936216146580828079951428595562171185081945734430817368006492998616498563650018528652359838550446162549177559811252782923900874354784746767942398800084820564769799504514388399817002735948519060353147787146466194308319338618466113459590928535444846760958144047035279508700217847331655435613174304853109406470654788774288274210227788473627417532812931871989465604949606026074327649169728307306410897882911063971424733363553234918462772169714245425587788926752139245190905264709187556722868137752783992201396732430732392583429813878222040725146737756256132747429106032814885303577897810364920187832745588359385586995019469386119655501078269819688553206777366312279190120511114353539459326897126551705268461659027446385374106397456753318753565147218930348121794540598867401087670551892973745173781597004665222817895369177415579997286960901460810268868684214157588631109071756227577689849636348084714266221850654763928105404565579458820574549922928957739573458316614936969831540267439025403753271095526758726139305265088673602122562709072485806565998010217469289126109101736259593460912249422257793291687953127137467418239046875361632533815318215202919531983397407227334050436921884798224724240598046475355916380695169053534372809652742166163722770594628439345241201680565849200796825255667883038479927704965098984038924023191085595957529029413572530602488082452116405302022325073540824528898216178646763505819760725352704612944272738007115482189789217977079246710098433340320839729954191973713600537386001603474165611686288707565652337451572231609656146750349715913251139408151868604462158421246640220906881429079275236285582213802047634536571409448023136659841492461328527653968578823121656743217156152256508627913377967361526503026342530071036401847298629219818165688377924940817722509738473055222061536706404938048777585199316539499918019597331557448470995722889191784023517450674468817522802014680039272489893619203472594365966384711543110704598299717063906014398911131358290223336774314194282147694109127868447025288097335571677751324499659761168205883470133568751865134738196562336735569843659053996828601271433078164941610296464397721982530877160818859838179864841238370129239104460807201733792713251099021888685180862544471993349672369487231246355453157571930403585540048925044725254553594316570904490847313125604774377460801646382671887146308489841274741717098104321525732893044100753041013596773326139245906632887730245411833118140042530561302790489987076771821274485203812989194615231880867200778238602110571303932157958539166267004032429696520235752375164816782642767743078417836132832812141328877415286687043869299653644028034654668787605436755912490561890531345123698724439914990349617007037439823495578041020562914028242110687486769384254967700294476596788958995519761137223773552446450433435522460679703087203599544252599565160818343499488017545678802176649786303428051908188952825703387342017310335032569783845134546139478426674410608716089817110738649277043532429951342253623751393457862710135766098278645012734096631304959220966546888660422777440765488597567730949355412159768395385555665155774269272721809878441681657076986800995679752533986863983762120698803916604972584683826604839459415196689526536276524914116118992514698817981538067803167035392580684975352074791146710458615295186845919899934457851340212258377278426332017415216872347850941095775926848320128729794009952176386409814603794308115089179337174639363359736533423927219050824072767021827970194338458460896641743772806943494688122915566441974320737159440914485787950189182872357520690027202378289254847499541607031459500872711972567417355446587998760376951750883306868123411122804846967806164332825013448690390097590568604945024475949094293209929678065396153803903263255895177680900515177528064877213992993859639540443374173096330424007465650882608046076750721986238210901014071334642518793414673757233278995289996704942690011178207331776182987461106419331940432029986869728418257040118166826192479949164229318777734767875497923360933441029188937172973962340980334292656451364276682094875121276955393870019709304103979063311757193500584789609792655951560192849257453326849153862992737385838946183578987792807565915275379977108880873521242481114563855245128681198674443591935378296908597852142346417201551561175233115879934183256460132294064425382077750136087938776139625002319134072502373191624794573255968022160400546600903642578085764601444256953140709872533604227896880661353209547720780013949466576004759801773863978942393834428235628901068030393503568719794891340163937212220033033742289018981518414140934796483426098432573348871099882584593146925186733238045280178273131348151541001085583011226455038875470535919846037117275350780118421625704160084318459844618927236905268496496117888558934031724562697180989186064455288055592221532636591926490153264497236053977941892919745886662539469540481195356489131151599274894130269640398028273361874314446855318558821857200203834766493069662248277652847000448024055479605963247602619151921318420122599784744760304331448525066393478406681403761178829163677485539395611219905946924409149252571483482541665117124731143772733534868788522762368410253308606472573646736178670314931042836421654950530896785899755062223027100759390324080727407435767548526819794705511411473165846834416421347053676265555975505415441143410842530619124458596500274832498360362595566909406876198452441237578103630503172618849462674091291763511865343932202599724710652439460626510887164829588464665288326460576968057382534580917184202449252923501500606681517994453356482858869469691772172385634027403181663476478721816826202333072888860186917920015421941900079775650909795217573609249212138441086279854879263411904530742409772002465520911973276846728825432371577456862701467924762245602828459263306154970749798565530012387698270192128192291299427998894669018905983944873928948541795852950736819175488851558095458989008758124245263475755614025720132855624544953425504616111452938347939238151595025508008312994257138616608725380208330212365007266261949029448808887376463716042412828785916612302279107130105947700533059199143610878963388576957847272540416168903131581563571842818365017466869941980957344182053430798427682398702164940507130501735397049623739160275073846520964768577502947642828976349438411061408633583330846297970624661526324387198123663770405106300867082836590154046511403423424374046073349069635423588850420758064793658996244811529468189414193050332797184286930991243520154648600027834723052474244630327322969615750142693000246082084278606520476526411994422292786100255467386271005698310083094547275747773387906475104686935697213863883537222441901639761749340475362555130243343186822600709546766212968769876920234308540174514687127405909674771775595836159159422012578090382601340445986025484011500709225297276279018032417625127704858601077709052801648003258666872339668990147975254360662643596131544282891677370371433358264844823952436038858245150290192820585549520104759341939162327765372487893060341493458673823134721493577909972255019836440791850794543024307662127382598611639880819999361993889379715760543685437161056956107887736905472291620582813360559423377453114208773386102154049192497067521445186214945883738295815540868746447767528182147013624648158168891825016789083325064040927827313537571202069663937512636745554512876454504461909270118232098209155710232900012882726116187012478190616173462965511187271350225354437455616864376235021023537873393128487130350693346454480517567873381669027471169189171143648089360079249515439720505287843611792990577647792823347303981091487747210774692874575168661662986604647912570058325212806762304239543409422653601546623177662597128791095807976732353798582644481954749716206651603542140791379070410572740934505301138371883505821797388468114287915004052132456461158212487566263133627811961614640753551045884540212269809679872494726683337318310837007273767658624048081630360207051763773119022933832858496348309533880539019965843592808158067843110806874293164730797327774310094620849287977987750899491083343841040945798202207410309540434477328004765025670979227164040562567763192348996497958518323532412393418511391233475201323734553523792924387932752313719424690029476860797081472895476765561988166700188288371219279170299345966329970556005794383791759016597330703908519619338055434607069542787831312703510600358020082006766421369538387136915260327720012870959792827671854829872891798057810093094020926247974002457203617933246907421717038376691392560421770334955360732252564467313036365343703989452898544766968691957407614475808667390094446154974352544486034370357717255736100271953831585240132027955034465963252766309306319402296597466063284115500461013596578510998051930299883345773311248206950004274285611706229206750916180241533018757374572502172944657976493107719708077331960441516359661156869284328319011762658446637605568146417261831443541241596511439806417016183181496979265759283353897862302854691780777118127221139349541306753300890297020069853870341302479991981245584607346101763274183386071415863756446298933541948028030397587623691183882273650201195943415239322271345446796510732067699483314750626405213051133268938581639497297956047141867550298297801286054387443282302888961537139501532939149306108527166772820953449715107693827572778081133914478094587929082681166311646932902337692301110415804611147010509844649126589441481964294544750299262631156569508955066419878161110070999420557853537360894428351673802360136858723990402487531621225394972312637971220682753364227766904116479846042023704092889975217009952923978484446478453671404102020449387321958276161959590559655705663227513964751374505039871948669794192835799387618182400523767762541132727816305385941143978968670515656261913876634347743046019010631540070061382384701196864374706825204062768963738199008956614135388074466536632274789343185499238919782039071507290770264221423831164061302123241514846886066211582130015539380082506201606684832718520324631577520011574210162785796349023597802114379009489835858277923628662606851358694977917961428131298370755480775357837958215100925380735062340204250827086674267856428874802318235857921306172107113128638814031375823421561948980544393517172615919785011092127542766804227777537258561471892589771571766675423112493816968278944008085474449631130334994069140527140826883806761619440714165756571557216352025220026301121761257890305285432839959025935898902958367019102603954045589586501146381793565952776797892934785389292621711427948559853407953739517582325070361048987565283168848317257429364097275710914900093735066672794369457769469927387155021219145620118327297623821887758020388093902089355739310778189110150037098085236543430100361938180098383542612983395742911492114105233474971996558484159689189605677611378454538634018748954961943494709892783685418338975304215924643384147228930125223441123010995686762342701856068113847188287640586944399864888494153066248200095321385808475972581832813983571835332328475338366215897658046788456307877199645474239600939834682263948665554256620764149800317123752716490101783873351632080685547660151675618957085260146202668543229945664221045537883750877842506611399148811370027440978662840676718044701769244846034313127591760846103376151020874760892963146456139397819845267380476632572001418148716511465620957131182520899412330725614451603999487144095879122446510802105111994731869151393689248549393364913686058445689068520961254335891626809614836668704954271156948087734165478935798745141397634022821082986088228794752890569386117133545729668559801294875853125681021221638097263494884387894607102905580558261513915958616345743244649018928562685792633678604703524992757342926852409424839343183720102836974421797734934282806731272023572060433184917344520948039875670096200538523617569805344823394973440637260429770890424973958317686093389022307596580429137524001530013101976413235962455146335143802221535479795729533471720386719583759744794219635233061829411865301893675734789742509234979000015127133979206608055412103889981339587506968529493585579502741227975672509568596593218254957311257031911951243146674096286859525782970106298946271049941436157741125087673903481078727496915878560604590730396713360054101219536522747662045587547229559807854290027489523761385742524642854246774190139037451461501036564946204897887932068589912755711201322696177737862687015261178313146977595774652985559402842587649289933356954602402437908900538504475790911103620138235985295918553929344938875384063024063870031046997590122878247260141327577934400471985209332597936669950365944585876419016905372642116751825422244286710405577098177114913624331817266525844165928844232534286047585766197554997586243177973355355440704162396224483116196952674984208231678851537766789436482157161833353323740947815948811229790011450944321725546244689140352951657812254276825185605021970175272372359345667369566769066850903644033527312027365022496763665899579982424457454183350365299573704774667579133597892016258945364240007891910749175196359324296037178090410727539810675708466011515830180832125217629449515965864948443649475416498749267834069135137495739973806602087312552126520467154967294194420893183633877039066075763149730967309805545205583833952332290106982764156938411145732286620512019739462257446199475952344465776461254528701698969840338486733290435681736245495808633839635097825763520850510749767506091358949096665117201824242745524793978679777659663700336388912821547235655815843247744896303678948737817926559299583309004193408048756489644268929020653449803705866347312274887702862258492175187231229082418959005540281838731894142576682397716961657343973181288063878983326349073471131492539306658073542968985782462132873380199314966055572910470388492457819689313331211352824105349227503877304840662412841264786292839771605893083499279910618093017635838571072434057384911183162989394290565991348427579696072290570047405490911760941788499798977285070674940355494450717910108736116901675034613487274689391404831549741210981745551277439618394142245573620509608292775511764470507901406423662407518577865747013101959086072143575869666218645174949852088168246978345392053995054252137682525005330354050154683546547127077798754580978552862111390795997640786819563735642581000245982432083593221575608292096989823377848201216180671327496780638541167798124971071104007170777052725641770987429634622445882440264060797078556485463364713737814941695214143919983042601884388300391701933096695859667404673997592986841403795018790717490745428100828226927672341023388555732682150064401218013853586204679134765516115553814970187224455927216332566339288256463244845280682819940461746056683129672903258389631919535302470855418941967042253629833001301629316324107676580773816640277149888524562772485873876835770179660481776601960232112286013810960973677776166185156707695820846197408268258511344815930437672374261876008561935260536467017198943500948787909209949255504660027364745920146182234095901663608696824903486563164948520768833768728851706978713511170461092794710044770813726143363734121869677570666380110010053579531517311920232679985961742052443484047716542543335267111276683018277526051376554602991814910431336018024450734714261708300159154807441209533465374966124812818807194154296146955383129050314486178031141227995940790255621353960711507842655458899635389121156574891516518449553632708607609167671196203661894868010224228636665524700366187323260850669971666486056233519164192251139829919529956693550249756244793938263443815450106572291613994858368132743427307269473752206976208518772055532104466888953394890021552265567657677213044275420328873854999885860150636406454740393484479877535275928076326368429545469443797135024956706891369106938047045443844304784915267341988932955318726461597770647612202067393024175997622241551239087760227096143824577867979085359628913043272870612535311093160074722345180618036546432351606697690722196799308099676144685386855905449216282697355246154779817030903563872104484344236441360677487431110836408136678110090376645997033707169308980574839129153624362314308511062087564931612224016862634916549210710904985857572136875515772826998376126880291988712697174649958407733176135888499885394850785350580702138732809150320232016283418473448613674921509732773449848835314688998403883812553391259135695898176616124235674983131346613590973877175573703192002592636349195035979653337205793145101747446739814135216113647294229147058809366822705760630992371812858094037025593311073082040595456122030012898857856785495654838905387006986065265693486259385084430220804765024214281230644359961047577611079846834803291320604640103643091612320870223487676126023086249067054321567796964975253886171366217019288038412932109909571111046469633732378251010043777833372667736160247841951829588380650262231028943710186635041187683354235596442405622393109161888562028440239926058472498733449528511137423655551747987172307295837122231052464867757244190438273577196163252981247950637439465870984520178745130146879231508018401047131311362041374412569872995736051495806796846129549888647751186310434277808438713434493842719851677164022691285557119471309864012283510005331956617210158153020996005175385083598011149042533692569966177983296354660785851574048675300805711956289370783609835488635451356780672944879242915432956261475020047351591510298206835435273003025483317283848802125728706389575926815806052779193908236826282496860009671955851788941014247672916194343418957729019036324326311559220724903834053102232746547134298242800891068718723840417828961018667716202708327363080135139880609025035829294752256498275858377648479995145562922043054276814173806150871376198954255345031418510802702172370357403257355607764092735758512944564156748218480782277009166492662578991329088643719577807115196325230885334279429136172290237094528035668151900316125688131260088654124665742457828232717045149891699661657491252536322010308424670626461335151137451077481101469026159921295624775954114914961659299970994562683590182636598447865203391163205152431772530066792860182613726181380881338883988146103370558262420011059946722542591401022880775014295660200518275576658409078443889549145437756272784102694909348408517636986954376898113840965828723705531814746114204120294371384844775613886759995621218377272408488268482424772502290641621157966861033413013545621364171928863094694339097375408634229671310876592739207431010315474875351700232002631434076804445406218112707617712189961127064808790319412750191689576600287056213359498884526670244302953359549212592522234190179857662143035846821607352566774180680744426347487466920099472085027989296399528713128927079887070803310799330762680524748745637213833516237136255744626957521216569722510911115428484175971733737924737163122278638315340114223813261770044231882239261048481331906022145611602239710670897257584069722058078989541269910476803644136122004677683092840942176862150632629641344674607727966519653558931813078921459983631352185037049110543355243210321511359062653673884474962577996950844334676278044176231179044324739547512513591229184563306359291715259087707938865902477699361555390846441108338388330630556510431203934845045366385838614870831036112568803607319144761365367662700993511138292692499189755493097047499549766121954005869050253654819117940136506443267021158858626192086257846592871356856427919727595670065318773160419102242977309445811045676002208090019383915517192425334235865649621763905405407222252703494308453405136966942212691065665866242407835105772816494189746468886576027735352967821212620208267566363764469007996137608633050315578561228342626769530478350918745679875081034422588297824958444404988953472970774979891974647909832338986410133460019778388683032365843745270460346334301145335012245792324060666879577281203265008598432452205528041108702164289423003543775036237306610974634914938856089173653102564226372072355527246930093209258409763754885227155173794821752375275725418597394461592774022647593441389365192071295769580039754584146428726491677255459740213686878364460399110381594331179216949584029935888781758314012551830251295304356947539464067830223753616136574647912306148849744194766888624737520210552873241553370520126617677460129846482555455864852456910652834644070646939142183290829277170918334872762265382808863708334449569006939953634594124848401068303433892766624899288449067650354938228825616356877105526000352115007278604513696897676469078684274580478252953926260084837405244677071022617916776737010395769164478891064144705083957188504185370224443233149145853013240427771084216843789101909910611506001243814935678838600498260590874012327791511564034338475171261215776175103191809541318823733692483672022930619856560376446453397460051271721876587445469098668997851194844559804010616819251935145123041394555286613754156938690620552167371348576249171246782684580455284222097455369812025897565937481045243109655246064891762236428765403352064966477559477991344879270619160504836646466994603849543573602457508673212932376795572684962340498076465298772788449781935209788662299800213631856842690541446236858206485582224442609409052799869581519666766682507401924294389468174324468932446210184379323915023750776567077471868518348556686573642422270536164958197208547240646134437444373335884458754513725639852199904627656172986028298854936781098604402524800985599805993981057819281187917799398471494968462223302199192518583004394887078460680081683647282347702092733016208920860084656345184852339646707718019634206232945063710200756505392214990440853684153933176224822996057697419223179124931919955321946540866613541364798157164056500178522115770051781013501792591019515384956703784652950460290307825474355432017090845407469289207083999490975571125825724952581428951272401947095294413596184539953591943456621310505000493350262889116525305821954081252001964499225983062552170364650711763210394527304052123572951060275731233271029373796415966924007599782207507124702896148553016221881450310607764883255943328478750546124609599894187811321105529558045412930898149866287378020282952875240323406096982839616001856387172496241190480972801636046389038309551175068284376650115738142500295350211707666374245487440160876200697519616636044844819408977766626364154508524110149207195593248707330512106919321714549295172268373786921657596028823631718236945416030449125536195026905038752135392237078871042280926113961482723532203712254614408249349035604882579515682768422108781154555988180427464799591220421548964826499688033575853825054753301212245419887929691591793860372998970279515744842697424606516081892261081812652606504465658260753847743615490762375313232099971944027364462399405315831741704860219622085053164523254397794434983017154678921944309746428408359418738190684996819674508069804928997928744111593277028208549434635709309068975047455523990757908250174306049196558616213851975043767090497022298699910495103976821657496304628308881863986095803311709738206737577043930884269921093754807904144243178227051733752105287827014632206847899791322882494371327396159266858833547147971568315949931181310876761458807838772059834118516208176507203254676898730234668895085447351801285549339838852736055103057426746030652607609790547441367651109847651147370549505613211023127686079110986379552828801172116903524603981272916558991254059098437648893939446633430435284494345468957338950650232425307584241847271967901924402986883374606174918111385408190948014821583644825445899304165024273902922680418665073908413349112450114199583877174874332619669485336643687290919636784128766378287391901266205436092958222780819360792256302760938903594619069585775484416555307861162302366696512874129824929970402507691376707247135239547690008538309121064086213739558160023422788134760732385488526281476409584529716441445117071893937316513475203814291487744179278303769055568274926692368097028839806610183558218729026777120712164822152505842211745935409936656892119068033454430461317173729645345177950648182289139049315522362299978579743575485181868551371442200966440489934364069218759852856155883234740009352866633150064856393810722447999266221571913749621685613829926237075291022905152856566616844686897396892792248111128589039318315452657201238285671176816527265811435055477532058724727430226078569618299572467532657802707402128634271120317400302376162143441579938052861082940246472665977603402391667762134824033644691264907909916583777522577682256368882109940299487756377355306448239724680429736301302978154861105470538766157650557907335995629294746032549639298427855674941590446830606917032862716611493898510028555663238548470273816928495607485742145790674426737209921680300097475490302779958400676760724861156570932205870234116551658692486504814243486353277458134388672550710500596220607404842564595147187349662283153320435883416804995546692477826191765903917015446255444050654982714695482069513702227282215394301307235487808744581293730335319085100928764862683389454355307454457213802404622724213753196914716185015531741241344999887610385636008547185303047227980811070901942255387263953746530423923163864820069431797143974760845717159836334050521029445331183739347361725847048084737614994990329541846388019399804069148235511967664153119906612724747820612917606870926736981563655244182238735383575742793452651315882647307797641216024134595875473357547711781402878850318191396294007201458158038223239157643319022661173231539456587385100282631715336018327123521374505660002818403310614672583958573092046627863895753673442820695868360450060137736788701726188258606234141275504597056056447825557554581145433585579225196845792488032316834198309783859160467220392499902463483385689096615649117997286807829126179774856385390351169801373472909481170421346545408718953090350963608699451814553464975335143841181305961310033848733086359753515355215313522370389139424676871418427695922605753464624489238230717908698691057340593019159875982740782243490699932298754218423229634788667131640402590470933885026972707922819891055630533646215791121328714135740663900784795724181302093625818927467032385917086610333092360292016865695371389963170842942637240996769105976993016751141077050137871019936569926375567467454239959363824106804120138792542382541879841571702305412937833621227159346792638057195206986060846722799615194862373893874894962568386295050940976760914647487150487613520063483759394882544658780847273508223226529002874736437588977347564724228588197755518890096343377988778890126334258542746998106275508605057249182031190022794159395049349623104843039787367753928756659785565138677351645503772174144149707433117727345529671684271139294607038421956448445192066276524430445912850571801504476473442267867495902042035662291482098952489614905862765155389299405414557093446920957520096290189409787781364764764094118654776409327151604381483416297007440152595519051902197251815223716966842410049723838321222669000468796966126039423346058410492558848077179914723678660108675327231897512188562189559014296752786888271905316605955876840531560341495924498093230232375173797276739690586046935688745360521725840044458761963419565765842405320369742805206125611981579414496393895040108979643074502191253964099333534607378087550491276488468549724608579062083140977567464943801649237090796653221018239485479116714818536479605036419366463244835799121364177151341579454402708069356316232413684442916941874456493394611551959303423803507798166448242254761290421664781799919385841430267630893509411115929801644277993183600460513249842779941560551919017680987984676224540984863971027477621521254580023427872233753481535428920932961848268416240656204242421630206164253372295226222649853923813271950963967141228728412745219905876306780482241321411368641713890123112464843662611648345352154120483976844360705914294036246143735432448552037208542389669468510518405031520445292719353157375764584775604034285321631767439566909700617299193760870710544930039473658451869987888652335379609766400296503991444270039874091611040251469932682618412592157139407291971033929506019874098061521014456410247429586948227915453007632837684641885339813368116097162744731065960629628099038659266329676425362115456915288993295471234769295410032176733102367134377520369925724900823106012827254650152354782673017470263620682550438124170328571537718205524652655471119467274700820584302716575988271671962053070810723000402224965009469313123449103366392302668156657881690581350460786993853683729618263199655652609443769018940304746508524827299203710112695159921660750480706401386967852701842136953978761521540925170875936937462734575602560478817987751146187580949827328094494833867881947577969370913228717100913411279100284765915020252021895145513931321224819758342717452222435323393548185414330871507461866488497434309236342985740978141033925383941573512553030694361381809645088183961435885778586907166813428798697171987426370997528994912862351213971067920368724874542843900844135852890739298656519745306025671618899525414642975852032007593742659634450298082117644044908655760030578186575255558292929564045393019089639289560310083576529653381617091553146462364360612602311099111889538610562725103100493129165741779616831176330001331838883717890765638061862380966439084017810619214101656119636612681652209534271120445957461239682742212564650541864857372254530196887563989822886216296737140420180222333936894838175030364816767363537062130677251174939698960735027864573377620522014211645413123271334386071906749655564105046534338485691601568312790179316245985353932818347207294086874135626197595719856414485396218891362846048472304156922093195826537291828144568044907262940197087202641084403535897680808360157397714568783052739916948367719523913512034585204487346763020502424683111755469718659131781604162438505928795916269318274078557361114401969593776081306796203716084675767408053487648112128641956696546713564664905899673309496147027984841649397398803281802333439691445776621009407084014709992099901285857557075164902915413987344817241272069861927565060963861149012821518056519140817410322241112774081570885999473295309895267445552840518836325708964620077835807067901291658344480125298579836069143161857764779087498032176301935279372375798881446758787096399966124443218537969938996147777264568633979816655428810558836938333061316207796038725568263689452288055019378548795082016549086559755264051227837135441650297533968463679394209773940407663062101159848979873187617238784870912057860794957113102853535575391671787716345354011577484381138737093009353840134041931732211341150315156241852787541733917966692453089642657403941839484523332812892720324789227685870283203055892813305042191079758720376770402251653748578295027573629070778501407940925119649800510699733938979388724584587919965781553757482609969145674017995096042208739954213626179659397367327137467526461738817358956956469614505457727426697437123394968919040191041789939118032296062965854158423231278015433151997828980744981679538307957068082513871155047234429432932181538183374517505576881542491791578444928367508830577690290628152503328009584389313647379494114683344639723982568425400338083754076584517043154360720909474226251406352576160591182488048214214328462233039316918910184124611860417669272214113367576481397456899291587947945632749600105044527294361375926526741818690299948873030560160874947165634411431154015136914987794717671213919344457487196481474800069526960435469750058615664098352729636285877995804942904813756812653083885329268150355052059168269025226805799447151404873374660561818305466594518974503221236959325006458446098899035823351967092281039926212435689560490388528420758474988221660565803519516801505726232713417809955782335758029430797037345657177091373608540541198279539288957010139689852726278566203004363035535168193297634086577184489406959181276138193446662865578012828319306824824846190988821418096943637909533366224380817746542942966876670977475164698377915655384231741094561841984225182926226471382004631829014411386961430890193552196362109656156847915889865248981627823881762658983295905197174208192309488570353895204076063244873059772100842261705833761370591655618008185467765922009967731257942022124437065707294944418808541343789907367958828968584693983521812070442315706401173533166238385611514950779394046970862897280834133690585093753584167236611874398071187011801954827338157930165236317199172138447160540083477810228139934683883861143763600717417941249028892301232668523861932701169725063034001240864395325904754405164343540209617616907028057757846467926480161104280333813256487779252739405732106578460846383167825180227876674867236192783859411434598462548716150646900043622796104975991765328247686076139578489756632006576951823365326076042710862148296969064724669908171941654904458697806014487285249325106737962563020087030820011761502769934609285292633413908085280705703188092760610735991706464111724713593606690204222683218757409278101638041001150832026146985817042331082807905704042081713059215774446288244462765833170293368377981693650977072475212410752305587720372302099221935119501917099239069105070842720702894136017387721574481399262900885488421338261332546685330835677199022303975847511746937659430630337076327304513731060068901863336579509861845518488144222577387696582412706902591882671202759781022382689384111603603608121059040227180057718811902325626991013182521522699473508899469212675642806893836793147544657269805389637384494690022655921498847923836852587973440216534234722913408790274105182859085290079905743474461268589602471442942954369094311539740162081793331967402075192719007896834270556438157211189373498792162226338611400886724252964004559653912323514439289173436430320262245078869915889564757883532793948547519922330265752498989315488761295723949779345277382412620133610196835476361080791445834394875038690124366921112895089907227057680406008109287917856651986988771479922410925937978011526948861588133252189312782980673270001320251830385172701159451117797381326972775915652811179488992680745335692088295752085632680266572072231054025574450096297811257584699716913089372902434101116539332981639983463984703348896641497937809632722012855257119250813749371505630426900636359140517750215014896009890259609919228748434860206762695315523534261194920904854198822291638849165222254090810275745235537962253027080089570173251027281491427899842041021806842722815870681016402135709840638959515087674551455557279449949753839428543392027713989087466527114779793607216516495364980181015731557525799539464894378777387967918952072977905716552545142078934969255610456988600929285340038548845298616412257084736091907052669345841070320146655828048687469036985951251822652121405932621922317385520601367085440987162002018440351559123140845929575680306679171091139805951037541530938435538596400298211599699745137616592898710398703347646388913229835696167236664631582015533158792116431275337637455626227637830110541452162813760577558103227520489869360090516673844938971084911507173982452731884631290173385942648346760539285376350557633974478273930970653496763339436881277515349446180888203195755660139044639803558228361775827012866400072524690369507694837811514124716228341148643812966142327115652537557186829201309763299950460754784082281708436379381335321518893221244809317498221462416070539017435377267659970344947389944919727328435069320999025944749177993092241447326727387315319794439362931677700952402537875804105341505677388692577246879642205639210860519761265393942064930672317110498895266931636821446080531259329765732540432789078675316873389416578912686327874705213578517598081259361563067678737525737401761708459948612979799375431025063142665807713707142863100306733951713291631412849334859346944275063055798900447439083169367090971596202885909612013162392547662048873225121046428817730614475459583228867190712753433857207021843604416639960346893429696657553796745567651633073394874543083529582184758119778406528913426099362494925941239823160530557073662667850198274885050388251092369242944387984544435138703424444541920746167450904880894768395422034304977601433812589906500153428891331482697292687962516482166403414046714220039169083264847253222706700813702852879768471078122354866802363248247449175140124984542132414335937995970963943572472046443199316642890256518813696830676175770572403363246604858879265212271039154476382082676244471376403166664944946090778109930723047630578856900646726188415823463235486079913334731195646753213838569888656603053508836506619382279246345730903061821616291961532180244970969425656600471627459165084824517261122980626592312426841280173432268620739216472210950884144774950508180749656319005373888730851060322436035140007032357817734231015098138024118956612685640878720199301712661482546176182212769509681086705746759885285202074172215565765209603651760824855095675069501604515512647331611902836234772799511070743126249484906199614679317336195305519157206811221856918023757099656738611349181234455063391555940947201016032148291643013994551259959410316590967128165642095070562006496986066793826518623309580786505498767172533665713425906079286162074759161309598498500332850684735301800674851450215668833479627405802284324675978548199488179248145292454626157331818255907186366575870747042295851271969916485906763675593665116942275957657967932370659754116499457421271618449897204440147526587998624134259012048321156706578198890352795395043448804695967670045939030743935622372085398672861225290210139225890695254517840697162313411927930026955647384332409558732243311750049055996644718590135208293414636347680885901253970975763616945151610957576730039688134184753648673630648611342661549127621696733531379332858830704503253831121498341976512295001756116761067635392403419800449435991200101724508742901194054576684003087415794606227273856308081479059425487038761785879775796983723516707801198407891607792064451605854600211703896713494801746670474916050207583777087348387150863363226507294592297214271795138920566632166805760642453294967076216917631278084967964975714951745605076916011550200958158496856466636263611945943686317001919604793117328509641901621703353525080758615349934237530588178696736812291033924665798591057594560037797630642618984449001300230244497827544845820311604784049065465447199387584332069659235814885847448815007504903789412810150959037855674773365922886370543578535539153699642096256060343848827305582277864179765248390329243914426329597270112510092579666518094823627594271224087331425693329812140882430567149477851436553109703044743552652989261994642768087072302576079687296235384969520745672965434640450379333127408035042991477028598850522886020833652806077111279992974090219204365008631462554996491688180624346533430715496618699730905651801831331241070254933897220837172377894219530224995766718455008977378414294788004307486555735069062543167945711813863102108125414515089598073177409229937652059834089848296842927938726984300101449509991847330296060012347270046760691986891755513336941112995575071861237092948402493877488732242989957075962745067925376251374996166524254133630697845076505204200420170230950501831753001867685605102506416165051171043132518469154786655741433395637728174925937675779986381280708358075337418150938289812063253764302080666833445762083410689504166820180894743946322195695819689644194427344832216546768881827135586823599807552255567653357474283067405621380706736822456319423774261749569420491848105362556999764584168994567916684318461291938875527255420901489919426699605023351682965182118418079386335787347797066851577807545193674622733992987489945948245677516351301514972385803157751165629674702069086452691260688865411134019284235860269995427813035652484898809765608459381038969498749454903066526154940911360794881184736732104363069093028410440912606644672507449783196762711707973353242056343440685136741864432714062449759530136516700095176856839128138814103064366403214970668221507136133322760823508192876542188846995303216122608566709739081073671585374454476173452274273716790644237598343900996530049675831810405943437732835527420408361661741748528138687275200824055253207933942908925135356688181735405929787133451415134937871307706671018995927158059461095949067653164084128071830649838645950337077169417765990505884611619706939519566902829122416274997902320048527554181404192039755969892206498317504422436226746444243161581362283102518229332670571666076885587486294315558693985761682025821514060715379217340255987913215346642960968410405200553350819381752099383982322749969878251933785231821602702501749536470055011354298536499833444971112450353825437334109317869831728707120195876463586541351896945902338084333092279155483125858585387973690848897291356793499167453586727080518228066809668036048861565353521701752054924304581604365471485113547962444049110903563144732136608275038477249490007738408177125199055942971803187661324489476223765624763872647363852208843310509720041473752665108035212128201158577140038896547771193056233217032198801244600992560275917895515471564124856013224332335162191650205399751137821356087867598253480522226621100479590069044955828335560419204610060562559374783386294824676529721855581125986251257533741404550047033149575913308337908083314696740213445900046287085481936715537826666627542819470435756420812447348679583739658324681460832965182754740681233298649979219428833333934728725174588501407449116685230400762284355463292402081596830284681715962123285825227238205211896947587727918990953960538734524708301797789945603151221573604741254977486086652915839258110412306890088562623883447528289000816003442583321392107468193968441753967531530279391570158181342904044150193554107017991011816867075804292011707581106959475860747694676136102488516875522585847826726698728650272146926707831082633979534108733614077933845075807178769859422046158345361879178917669879176150413506306145923214802804841422030817520839886154692407841212595241825773790610674889362946225889151342349100127825575853083848196950713963548649921494381225210518994005333477647104337984741238316297197321744343358837898925439163797627664952836793892307399726777516186896591888399875416902555658480372971111978493375701242720515705926173094123585513951891009467158939245618148737336163251670429250664490870173131307097706185070624568012518213043282387949201329609509314883052704107976388236230985293651353663657646418515771774601376182904927361557347101228763820986049843020438914038946657602082222593020724925501153337274934001381077622500434070054488170223759389922498763023406269590143636302955583999335042790527516020664807037927994988207080977361337405502733919053797638704857586900788354527528525877150434817896648756688037443800013827004805320174247126582387331801202705023612498159172598382706686305979482541249097397642784009602982899993848714837798144921061482132071420575143247386700373574527264678865860865711246761460877859558633661321507242102669384339638180163251702704324599970609940822980273508963174884048577452252035785852579627795429931252182828345461224809781956642365411309197891005873550395536508854508690671391085280863563684086013955015919769400458093238511405004958785444369002761903304882357484386465776964178355011442198274322437003730605573588713135308818040459327760585519342414176744639994005341949128055266033090196358409179691658792872790999183275765881819238904528222872698960303547402284781420972226080946286038318126485947468224440226248914621649116749995608631889631824494460465905436129137254421600372524345133780278722537743535038352819937381098779312336072627642895260555017678901487431150963223142322642761294508059802704214972802840146994732933811585840806399687505148697073842919968645286080225593529524204912245098606247082427934775694488971897007762035915380914967828474391046720409296188565878809450080677740852516323725170532068030447962717258980171265561306703331662373505183215675253442658096776459242768088543638137439810930675657118463158605546604119845601036054641816347590610357584716087136457075035078077581043515657085089338282559492202668057771815446551576607974805268822515649355423250799495560948122318506606951201551830745791057700117478862082468920859932500577018498273584813119892815404825575231896794353613456061063401343775210100942338914881875105583926597661123470248606927197147880420439271678075321998913119530504566058023028985854892688271581742219789266976165252068027084881686611894426563003503762644007804305333262015629908680291779616384378998044271052282806150347384526470417023345449904035154499729850439433986965761403336378088022786066126259145335053813246929728871036994985829127387930073725886966831340907691352215384046052323129365826099646378219723719378123804903062123099914013076840333198349337367648812191952229722478290896687357597582206119613279187233437538278311757441372960315926841910562255095152378148661071014695823160118922055222787345349789809340849050331555877315895238997597265963558600553294194643826097713728973761539252109325188147838455840142701676427762009026683259948781069203701107082790536736386068330491233260984736162789457008341021439354793976745116368709085035430774926995021661027391628525512236656889309263032901811247246496632295085291384485089438990351412172054665671145154680706788637809753081371204015833607071830277274536215646199228093613843019036047979832149949101854202978263974237440697285632530828070905241736347179233912021767348722536008802495011854910627256661038157557666875040661394443232624156436638577716522908602116949049902032892688055372064639562987291233752090272648352101828871246749780185138316002991378033448684837607832886335049190134238616459453901343032275130279119033353355717680422477102295797154516306821313848475476285651004470096344279389747099504036912539071686896611477550959117091976081741263143097560846646990224295677061853216165770399962184200819208136786498758438289776301002185583155106724798759696494262239181162263043779211016739263055257174124123535785887292472947846633713174117321445421204391927617204679994499893060546920868968579815160673048631876166967082701654296514706617012790113264075689393652126574930215053596019504928416889535176300206532827079645127620614041634866289568348599133312452857571187584799233937684468939576292667578038317710533610708700537942933386883847666794592179451114646736121715613174179850950520602816774129188962379762261312014206119792091203603650314813216822301255726537949416589759860988303759344564342503369884393076204706287841873827643843287737577790450899014550436074658324174442119663980544766277808921197422171816438452859039608546896180341483706414604675083856452576152570512564688478711664174407959587517305330521553158443468630534382948367572184627401831351452122025936362381165025166751883732053190352295149862572670449453683731264655877615236767862198338645018427980944381510389675485720834676305825207707753532356708234239412578185726005608717845686687529359402431403770780328277944954867980195389574667986582828305275064886071908593971906241926595832198191996901883211629470864952677638149543990672650955990496959461422094163058054734867312051900590533045805467622835447117726287467412206817672771818234663413289871570673531441530319047653729875581683319931571250904724996201977177229866185960579520216822010114184038724113937714462626009982090622802984347440905283360830472622272899779182108634693573770950287871771823041559176361506965693390190021365777379831847578357424201694909988020655666020891436617454680891027838317869870116188397698627918491357686920705868101252054832791516529074253828318264742660086808719641568842112381925775617464128232226938499863834934032398617410399517333665187096865360962361607530763593332698859069470427788868098707754017525717374561458151548580361878224543266832308511574485839084989886082778424342393054695277431159186739648895527351163028371768556039683918109548812761856608173486417316304336283691962269965401741499647373254917564994200495136026942291791295756553559713827394016913178187710607042846930331372096965783071762898541565534845363259190382291658629329789064733992623464249584622777589661343388970965965613426724023007788375489216847034495715889985206483299297004960376444395719349436506605570924811438602330941530546979900176675562915780467255195543079661432222605333715386991130555584195319573716116667099692594403786578798628216900734920553832640241866222607737252867929016772176964694083405269779750973253997652049934015601450984706184348703868624355688531625826752581495719026447578352384067467125184518316874269714634584281027117206741356845795310791127843790245847193246058522544069892241618896942518739996741099611660422381471491119202574834330391518110562936732063635672129586455401113150949473234617036723931750499596311320501383422699102249034711067004638797828768908369103937493506148917223661682083107554487477680403218246593225112777569597801476048684542553044816799513134893036707301337643219537453958640328422070371464159831598277141049359689697998672290856647219617422835022251483044994487427819299689751962505096225231414337732340256339220421691652974582626430876984376659686322425235294147480530717525225349016406351305623831052427937683513723121811267787109372469670753012954597046970233079154668137295707816822075510435208216494403787405910713055475091445594256779837766658193786032362634618090519663930918094243814072962895259256303094709666037161418293174449365737532418298060031892424065007009724338431878126962941095353025084663601707093844360370181957371170426528979890485940780041693405426682682975054194606166825115252867023912654829252221027881579838558243218736384454157289449227269752445173580971425070667532073002153977177164851733764421404448608251849013463591273640427444666281852966890417608142868586169516093966391374417486568828890089457608921649490476398465919983710874204711899867268319717260784374743020153944300066703985038522379589581165647745547074341329427073409949246870653256822335754842954318464360118099521912350239479823697088537043202936895783399971708407297127303925679247891248772815468562741333227156153319281150921430310628861098952387200854752950172165333631945306831061825445276149090914815259278549108429656577875814194954179984422713039519983152354232689176821285364241373389512139888027894837089558148923174034362970627672281798820483088834557257860662612828427559306443752103083940259199223206468292386937624563379866778517357511588983932053164040752524053148599981487856086027476031127386304037233369614594527010005169813503065865784415687334671660827996126860199828060075360001548318867945323065967968592435884852952378842990696394821226086583792793403395385088724204822239329166714686932514164881085838297119397949083027938931576278042040504864694280441459540630747043875454333017074683170488335769852465373940365360686297554542988628699999495057287255384992652069542283666440397276415088138339132321825729688273736537306671341174900623948026618668721261312770323618613054386443533745845244994096779610821237688077638312422451904749635292264655782194440756100307363012836782027806810117628981421482623061699935456433728909882474747779106482720827161554516087882440597261907906015766971274517658533582165039331940056821982231863035609396902534725735636697754962814776786105133626337495172654086978602425314595582357423941314388179884917034547982580421794193615736593127137601538968302153895750101807156385809375004633089677130737272829598412261561066252922970776301321619414786451242226001278671557318150474282538700511370957394737324713335029082833590029544896511816064665914224715903317149475993351236733062497734734318784903348019207279273061858561140472114667529030598947431778304778723789758280208271610671546394215727682934855159051845049641715044491462477604212317663387885970512040557538474118552264390328884699861408589194945544693908030383204883332141705019915586155879927470025824093693623032288817501866583679164156343350005747786607746493803449864029935764765573536032998250571270026453113301469156681220227883750589787427848397756597302536082998311590644691705820868633067712412122190138988277626550437892814967117088449820740608767373657470237342807283053122965025406906702002684257876814848997747511866088610407656427814879655762179022883775079384919981451571980056545855640518880347321657453255324350586409599911593962379280159782026116936182784085084216904843652983012109643732106103992298986615733773273473516177121263250875283063129746598410231437704686212135218907710106508683268269966580963455958290133207511934447033007424111625996561434538452062729554121928327696643884376262077708892505395298232462787151652517256984484609224909502526974846545775788061625119202365223660274699763797307657240954071871886564234700270750715593398199617625539184178955525531481407873433139048143563219383833026212833803853347202572619606261447151114702395427659426265011143929819522222723904388418145869532609492630108568183737037404578394701374348703342199322129709164109736243104940202506050110056415062560100709396873416128726054786105183765663889403261479273367692446165137840118744935209340760955210213977346899127359490248492424674987893716544613093470423834071976727019856594927082479120462563573798537462143881285283402576106928748106549417874911360277807643147893441437571610154531681906994445021803495637761807285786247221475778056040006847250497313069437155311107462030715222423481644074230529334619381787191952327352468638436856693999622970795486589336959503205624612599788004404256980636427403185904269379312052387718369118994107659920442539651160940038851333635775105800393799551387894503159403331028344647592733117844586045962223676259810558191162998731859251723940658068510602477630264711438365259506066644290057533102181844993717878632913354315906371321568092454627874876398860239880066163313410539616485481472289663502906647256178595903717602717573984619042104738988187797009353023360560459584697382313907195306766904637443063612523764542839521577436546732774703778889225507578232887169266128879088543793448735634606370650577610902757725092216772463972915289700955547635578277928627724670328847759797228374038936024609131012130994983311051783864329094859077576762324829330370898360896218292115014588610797507511890365986632341590753431769132173911170793407502359352110980410103461077955897829426801582908030571065125679820324502972986107940810444905061309931056274673397346251407359724567808313543523014042334641860996490301092085944618687662817357107219734257292731715005841390431617352680819562829233610159500027353811243354243879655358341717964578842168528490507168513632354899263105744533097118157084182467940248565863066166446424537373429153839627334464021949282715919007209951884354389145305039126644412958179801934959506159210502507080943255054326824366274670379167296216177187318126453223537149126943993591645523183027362550916275885683224234808411624872834576996812661201773327861791219020498777224500465260135682750999264447165087366594699278977057641889501843790088045108601419789528070530932233362683832634311674077365989817164319956501556457385020288782666878898925109698556595633076896106353324166114208750068994520398277387636556521210220718880369874022727901209432736367188398000227067289130147577105870585737377426731743386167404609180620495873385994175809488380564607695940112059741566161075465001401474431279307943512248242783254023286240739083076087391268763545076320261343146426035140093821124019639139135854587962577649586262456261540061000918110065781830106316532956352159517216501196590649440920215783193819726696155253390073758420612777836547873885840325918237838924519646437620455771681784826179502911188864124715691074339713538178628541918417933567147323249396514502302793401433308298888638112643085785930461582980236822857495564064283601589973481171407473033496260606101728016055773668133580061639911997843529060750357795558474281357457379326477718108829058805912651546391989242251123439261548789802490927778175408738346869899829217386010172973430988703255720486933398199212498151357528002537774019884444178855110518048241542283766498189859779756814884426853839258654297428086702613502462309528828688186433741380967584384178159000403194200663179645395112433160639415355877933436373315326219015909403885155297640898210058774281661624171077091321370018933291119350005462020173943651111951446186633055729824017584158197100389631300541929278528217637870880437514185219846587216960185378239474736598284869724856976537469602183968190101304619805746733522219389294120469151045173382674121631574985896768979398086696523736233518766952937271426622807335081989741419311234587011774896358622200614767997603832722151778082071313743878153231278767537388103468916586983041158721989483437054257151849606021576849420876395740183937489101056275664867671391177220409403350867660203089985928532640828708330047552879398749246044659900059305034010096172726733104897918112282846933992278494882356677548685035588233428651957185178652591862204251327755687830626122340626617626318235520272483614491762574473092880683929805272247241720078438242979284328267103230960607503473127498163440250217326458038762862605635238176818115438318020128026575510762296164115207509429811570833022344708095073556016919888946209164286812978774689523444807824916179293884876394530013003598448911498436746451972611253837980295961269516187404905305749719051266426337821435649769343893980813863563402694218832337986549684444921195785300233972510278715073346013706861890468393177256760741638516950731926757784334275213986945085648641686762546346804617879756423937936137604681353376548411204038443033464825290815045654790248810641849784907838469214978623950344887414745066695145361447367361108843555754308478941163067444050991283576357894099700749078879486970133417536726683261987732186821571106697009081464069651406579345354461367888277178547339064693010054015340120052263580868659487849620848997970778159258400915548717416267919387688773990545500995753951283756173772474059950494532648726868022084523220326681143182886494547782972512963102423090141494692904373764495447163096787963043157989224245874029179771391212422880696640111401543402987887508821166638561645987996790899471375733569239363531270674312059237995481304578527138970311807622135030576331407181632381095020712931255804526449993114802092995662851096862535900921037076761045556324897894130320096698912771477921377590395382037592406568016216390776412077418332236885237592478776544850261428277595836040807041644157791048366845655528192964053326586769969585479709930892564039308704266680947601168810053138715612712737604258664723940243404081774420515407118712872088874607067958508173110773994784668329247044017027378534916776632152849870438380798308184567808541297238112044138821856064219071245526403344845305826415321138252068747872743335212162293023256014776508990621983009502508057387324236793210404841355743107292109156941340978551512770609666633195939105055973634968790382520722386323262480958151478851530928945383023931812014062822098293625899202267781618575969941539064815656705463953821292492483713759641171426758486743080019611732709921527696593562224294590015037574532252897795272544382396165428147578067393487756382171371017102119691184073175284698728236879315761047266001312286428688631850595029318439060380659060485656217108131783077934101404393824406704991405475910225524058786041959805477332355120221665263073478462696936076542509987569221193184591345830454446149206103477334664404875956319535922082175373823709762488243635461025867909879128136984299058130767984057487884954124713115401349478413313110565415671722718934908088621027158803428677675685143572254655030934879705991662246987126335827215865280284361087673805915538268586080868814942502802910472720941376433676809237035793205091748322095113803098327478279508847702532346954260305709161126006712849087983390359470419962368158246159919051576488716153619838244404041884325751694587765719234962359100480590841625906562746391012245122175460121720610222746943521626201081775643301300994789132119111334975198788475922284161073185054361018582016593190851190456153138172580829513596964760933026862272867002843903511643178236146841333332115714913997293078160409901206727863979659026014918998106220144548665578899587818254110225236243138639710786746099389999823800286391529578063461810343168487127570550973055830751125607951183613054609615740220180343167594623510850579307606258286263435475065114151432715661365124786208660805324714064599966951202364908701341795191022153590141404764826397857875385282083003360283118946564354845526909800097838064612741950031134822887669637736936122363174958915007907635712931713054588957431644168442872341230752659621368834774378007042382676110436499869965122845812407039306787301842934774910492507429325797745322866366760360525668051297639810154057066080514622602734046756074493656032297663855878511450270265232401957393345256192216402441750027423304439933405551750631583077215463820782037290312993669962865364870660945107346887080442787941560510856559527223237309239276490859528422825924794932836041989803023320406221108713723025938711970072475017306784960036327562005204377743865361451330606507710604287749537653315117748194590836992278670135097108764360904933843567193055115394334322186969275613556997567399148841346311555655630247241006202297374357868436886934172206080294880181198629775399513558666062439743141137491677092613911932753095305124158065200159108210279850152743855709852033961434271361284453825155427044756735397241808669205525308045007291092375551165256630725815196843419476092105916565782879792056835985348241587018511764440911745943998180163746169616449373846171103921974884480014625243857059211706116349885730668302006339875500245354176642376295106189979133628390521870129876683632229599882264759181728966573432360681833191831532731901081360087820339405095529373638656295407719326493292672278620663131040607468600530838429667575865968649533047557410520746284902477644862913394014184100259409184266692735824196526625590125654072691251363991749111561686003608042380088215531261343116395545642366055590083075662561341546547912346074323293421951413244878088121248631947709470952327203025599095712533632145069080885808477345752201042149228159598366867072402116553614739544651105231944324800362090709579188298133391980406294395589817556875665440822826700225838300780618968388424609309192947311916145138708132798029102715573567446192697193108599894083251860035753460229864075351899096607232023956355784239723771753829407315422668667750635922611906245512286524021758984029673809482992601854047767104567401652073165564828563912691436147940563481077703828268163411164516711173989494984838220796211534168298630204639315131935811584493106728123169688137188430037820007989820874396495865956613566471732573214593080807393690291136069149768610024832453801250896929479656625476260704689212514134499023715097115828464368016006172363995598498549550211086806964510594046203820468935528532296510446978635041049852869323544200416023809684437467960976049177149892324879896839958380258070205775603884665462672985336869662230904194221392517233444806035916208810716752576447739018783845755334944446732788422692015224553480766409809110456482416862032001805466294699140057789348214637788350358402033440991975527901704470125276839703303013951008134963795175073490148203191326041384658363810136729257780427243013999030250146302503013457954820685014990832837286202288603337859082657010598310194662730769867808763731217424545599037949450742709386668591390611555551811242609574095619070602152866034833914091342784966979681630813396678182476959276362919941067181264309225474968506590012168515960573676455224806957615599803790278474442773564300609178900854014782414547960653786992787415019480355566637484194447366826401576915464722841994045104097347347364767476868231025018063382090614998926020307679714857823993106453775943385438684000882088778010534300555436879236421542770453289078218740228825162727703655200468260065487228490213041696070105238458946132107832600149084937588115938362657887125104520142967102972614202700452509089276357173418255185989602259005821591905400057826511504753520160840243174016554005578019292333492164644802254232312515431729714011488697064008198724556115824435745749907700307229947665294933180965662217148583651874982359313981524078714364899392912585002246273287412817851356014245334495161352088068913886998043034373984886876583835673256785177904355933180710286412965637637531604069890264961496489760791633721304126821474140011637456998802468300969578944657922970928389206527183736090687749314506906832124400524928830423654076816137194120539443045270475721982073693656512873469698232144393187404311128681195121615748816442800422635673143874482141538472500639885869231702901546323133561861780319097882806509723756278868502695364429000792257823467302391304976279162208467620155108669226408616939971327988600745321291549678516074890730691593007840009849352038475645773123338611052756176978933257090712044016560148865095453847687418623390028157750048143588284732688987056370793064835287366245767367548941870390331073805552737065603371750985551729354265680159206847178134727761008966354793493149465146013342483020622796923523816821323636141687490209496835294567491170046219489418828351445136814247192795714900131234702150094026337601615089086065385838780263572584930866575733035420783498671769385431051325182388877606809040599665883866940399891808165702389431672430986945634987106926776233850140306834576262940788417230161597590491981516595844513999784960036441161490023315668943115951247743544612645632112034628475341634028306527119659563821723358170887742243978114189450445120890393214951884565560750104793251800575534832169949755576746441818221878073917966163433825649047840673468468691094539209716467209289681966727035452037849817146437251843521604024006969153092152865968476441742161809063287031867956596932551613683072403322320017284480359360817262005571840861290954558688493021237879957171011647729972362444511813146100784927608090946770256192447100303547613697845695686066758885514586601269113663704354887770618492713702246177312279453644511795619063635633399468664250435417210929469180462337105687881736549423713082244489872193633573147927440942884562044275250667470033806123743668154837798279077324306361250695645823342286296669112786938082609178596464138383988388396637957958515477013937068978317699632145540507866693692346543615335610266008162250767080180461555234677581770209263179151703952150191373634057915253827857186423307877320190872220316191357935874792514260577955688217345797479574957901737813736080062939967876243505520073478242470765299552197471875070573257668984685693092883559363245355646992383002137886087277565984442489675263278520962941844706948210703804265810786864088144837550889967286489455204096068423289837850694893392125221139528012221163175170016720140735889789119672463104063783300837893451182158090774758501887274236437405966374231486355793004478238675747761529630807514024328956354355257755963343270468383907367458406798263562937465515766366413669629098024941654273163607816898275259340722512397250042186863587133893795054296225108717777874581270137615741385973202628061861814341256329601338504531461986905665958246652021171544270485891302548629830281419504817338843956263910464826819262466666782644144294803534778060778765194197987199300385025649026179894522514813915344141192228841982990219003019245082652874937113812039799794943600713808510307886280863780721904134603723779138068164935417699751044139165194390061848058546560724478370018320820443778330430229052692486065285036235439031633043631511874388448726728914828667344350556818659228571666460119472954317166635920519709713930598913269435949146713820392621831716880110388452156279529237171506596285477579355624143305938077320734839319758949836294092545876617778497603997379370418909149370659560184512559284452175487947376451695234675172926643027811087451397630247747917479848534037286190982529294516528446229148227581163790016927224295806944616995414690848488254454878006398521722178031721725857051109517389006981118169782384634300071673105278734419749643052327260198466201184584667705433008427954999570297607024385420139632439611554893480437155106368260717165859384017541865985280629535454216039928364133408998754020994521019999384501982674684808800134174806212529737572596616741648847097270805574851670731388880048351071530899800640151445586755382702044304365179681651494169191681118795869690590563355353447206751417764856922350645564585246789796826391269618055637213210605163851689944441637402160639948419675275071650107141977172613045443404725714907629987976192773219303876857491876988235317472871851701493357257927856507067182862797858460258356789671889693857281118860601510885805555380811299640864959115207335152070362842786811754713945879214839187908714082821150628594230093690378526754354162992465658140199487973527600910993061576193748583031930746796880714011980873050307466320879092707825041200568841702541164851632474084189002827946156786986028741511632601965097970698921319142710466963305463941556367080227905996040635845374945079993641727268156636176784399222484470982665064418931169112826503977449642122832085307049754498998647473357781926361674080556547608308371557858826114415880578110936047035239539499848191172208540603528975454123132192909668646022918744823260304950273155423899232838357354973163501558398804565302318491262877432617462306650856946593768719877886622256527317695601913443712434835060653907895273476068071215938524628632754240338810815638473926549935584549645367399520506003354475566114172670628179537541642172259754047988314018570389143156985711348258577021865113276720151741133177471505213903275504460983295001788857691911521749793650438178320852397879631751323322770408043718152730892835222115102121910386387932275735156985723290347006050418411715751439249492078749982441622074349769730497616112081638667653888376423511168158688601290351237661993898443104766324697995496762548167523634341814515363148326186108063658238933844240624683493919302090287197664516233795409209059077293181226140115288524759183263483424012384515574975261883639458194772186295734782101164067309380670939895111761754876482746057750973431055345093998870372222874061705315865640526809959117191271265511404239558801385287845734288394906690075523532968071923987794014757446103638615671852136022555312968953091955916784879681319295028630322244431505019533000394766344740223713709422888982528464534938525753540981524226110993879040507474735216711653392999981037453198447587363175776516531442791846890979901384084314349330749122296174236211529206363647323467182593203454123028546879932658908130412248326269736364431731239497265634452588805201573460667378432417227624340297614103216892985041849653666307332246386397690491847761574180952620502458025601432552200466689911709194155547602449883610842181240208489540958714744992532394352964205210732422586285291631427623588615801135853738025798423228989985941993663610459362328084817655364504153166993812201598014409639990357938509531959686025496290619774887640405177753440626570375239930699746838382587156425903575212425012687784591930303142152458656457520726713148867635060729008209521931683283318716528233497453469450251999559865275344066070667073500366791552372040266567206853387505821180716937905682383015449976923660131367245406616547397458712367681791004491302983435348692656331046500129143845119004772102187531050157445646851027063357270024499276236227448377741225815462260076982989958343823724122069200271952996200928562807514349431132666046402068193164525320873567361835782999204583826315620853479059629188815521616860651153208052574621115706501625471303477443113180436391002554196583726055360747639152909942287430620476591127047521476716176094221907148320660452856495512552056764013911510886341811165444669668446298539449021838950783392902431450672845162568605684403150428570179788902756139264490782718563297323661382180403971414344484311802685717274230259724630776576132095260982217437757078858906117567179899821108514008349022519768731386145020752082620117403828047492993033296013971940067162696316445833051282043564064364573946187333525410249359611014204835351891490102266561558540892715070372035489163688404639380603614240414023264970627410312137360330738632597274631650767162775546053777938533890254208785480450963705920848492378413111510532992280932253760971619295692518859846702073181930994005662416195063655440351234391661931530715223046050037311282199276783001444801183255498055929217560846354925796554797699422766317883844384487055885360589386333121280163207127896179465505933914608788398563634338825058011830489804714462764221383534356297589540829755914908996564634432389661279411427876662889266489921151980500238201092906869707267355349205197793899412126692012238927915065271915413718124662205845448548415710478582681952016829811243488190932691066975361985499419249473601168063703929246864514644486569787183802662565291281807293980693090485548811925447883576532240043622541888510607498811456905027429053180456352338855709661657987591926502741923693151348535753261465039729476223275655840602631538528537147379698316925732122152163514561537166391376214906993492077121647222069826182445369698102315713256849108025757910359461228374766818623808822011157222698048112530279337970569296417957580894625970748575432132537939509803123255236027380486193835564740704301718066887681251432075246696836161103281609130647668661851436293929890268454859781480879564365556637585120052946335930159759764437017885486642684810667335590664979884486811012084359563887598041151579959075484791978910323575075113526638852233480186692061239158747582504090418483046363978664588184980859192534752860413688792880045361258982846258392189436618664276089040178049836425480738672666298602304043034997032152444137934073838479246482718217550479526239518655272971657867362996682243932889214336810775514623078141310260254563962586199716840636393900493747198193067644372178940223632090974623321719010670161130986143349744525819846145708262806077224996421894998613860352483750067535251177517645095198628160255740056523661018641256834929055738281613956325157964959972344600649841634223202378593037617479446338124999880336625532287690187357626161109598964048902470217916033164482599809432046036109544751214159538938703115292310928058350521992710427299477088072986026461889124727826769809555044712078493411628843822366137059819706438766319512450170285896457872671887649704237700847140118635552929993596129410848362013350617355958267020455737315401208146545246180006066223316181694292827315450931287668866459372996203722331362711731535340964033608947557582765433964858877470081691084168939739755765632269824308638271166514554758922811213498718780207581419307933755688424164402100320908535834729384884475569646980021637019510355898764880371309499136735151540595523825688847720129672767871879198978729563546851971498118071689359234753338573669850102846136720637088793374459813938754881801805326722461461899336017182304666955373581344636664914062849152805422464886490819132962676171953204906909315526725098573371457684567625279132339398771465857488086159015423385058510208949280053249364491889191697316216147066852356394284377846112077448849686935361587291300267781117261537645034466247586951631657838808530081263326753549335918749908210942479145629445288397102154219139848901091993420625692397280129056011715672275123439818107969634182518175214782847532374781236127878908204657422751123698678902235785949551673920671767174890069115774706073961125570511168920054324897454316635751885857524069799345727893959871421652979530650494736502952842554488796417967310276658207594177313030452580933926961835633676900603012517369965374265604141424603783838480141552171789678126743301752118183125898844359473567626309782045472030843174564929583840278428520044027817533270536094809725895390783934143868587663798212304624833061631503712761412405421171349168338216324074959442175219432150273754117569566598094575051601669543945901797086984070644951269564259187586095912698238693581675048813374537818989161951322156400268794915344466193762236795123939031063878145856882413708672972648919964933662936456654194377334764786706714246875458405538317174264998412904520167686200755480924517534714389672523712431748689756572891615047701786987076766767567917806221452302953069072984940669290683804476053067324170815908455807379311333103430003337298659286980853566058537373146699863916485050885857842279934065107855901584024646161738789675049391534637781574300535118050833667467732992132638175931269504746206174545575510166067564384901853654282355495379821571611187998240253733845974309020365277590893909826997992534783252459258904278379338723743977232249192758786009703658929928845721794179281752046645345430655920434563123101665570177543259432634651010613568758071772422795111391558557936799321286688617794361791730160010995501143338669269010320385272727117899132524332733145825170285704833263098889872471823788135300086896029474288542560822655309425938993026936514576626427542116455591921794999652528592067966255492646286421537420041000198428407740137877218298553188450065448104259831364809750945387305057327257447638300593819863557825234042373876153794727521038660781847949159899248604527603551285236325353927522446712367070390302642570717868895791350422353230943845405981407279107385857387938401808246310256219032852143351753491271692015032182054238892309741327697297309610079945392838247939643616513487095721310880805256029599488596430060587482731639212251492448848067036529835427011350929178865688968383598544498525995495901755178731879911650602627551303247269600139078010768509399744332938731269276007405402758674226725397228542070022773957872988120719677058836376179030459432168432314116346854019832302526015301930658174325306765652956388234451254098713189675971944011108546857912727381545889859698044048539910547520463084444787675920442983213497681697754806560789187916198442396490761224037838769691174248371015599323206866400998262315059982908962391533937150765615577930974407056853921014752566363723646413249197430539964490113973052927556786032907748182370467941035524622455168442203760729656445705919870229738834867125401590993095670932683679647243646012752614596429515621560517207335715197179850668393011846482530027408777632218640965300235125187177524612624021988081162413246173601654227224273594605745462374017867564758824507706121936120654536696012099800357562778295793590655385568586603310709836862624970529885366366668368843275089637430982918253643551130741472050429428026284144811631623489394295247103517382180126138504502552949670872541993285012201013023473066446451603021688008099920013513155614711724030808477014953565381950949693987251748489009237485852450298732916147520843837983789611882425619605055582263612986194710720497967847561172121117100692868401250847033413768394762496090980608498233559749622507015921141207036821966416443664335266990620003474143901833268049676913588160509455635241224465015390994745323307284827068601787947555608442136422488721003516334863747045116179816513566205008843708678251550946740730843491298188028441729695836010311569977186576886695208834544743913113472717301618694635037488648781565275189912995955683281844228431410310163207729578926934964500183060799633460870135094769444677319992492824905994607795971433252539587137502072041809358325188058395353394421337620570595700812010488098650072040744477426721385929360965580416514314353989675868812727983383450211692465801433639558581464885212590827309371259469112167883435264864503857460698172721210814237614492526003236980458953862860332589325295479380248549735236497080131276248568650871392553368096836920369861110813800584369561414664386508806853084735673296222506666291917241516413711526355158502800219338415038242283230940539823489134383661832474937406776993055523699266090518556297785252166182447843915389689680935590709330344916012531830553240772397366158301851563957756661448198284905026429957744374156004163021257361470718004881741904071523216671419625520199985464111697615478152675702174936415431906402846352185708793725532725759554025252225004849083070848391936558703855154404159481128676984485498917173186087417177633450165919043745481310568171730383368204533061637543180886473650418399434691823887732086744654448455880396831700393133903525679285107834366651623935439945577630314245971878899877543384814670522800253239500510319215738536484264856423137930592321721547654801706383853859701832553372602901607119896704585880388415810009880173407986303406685334358384233177345403453072608879188677140941636891873927945953948588613604008905991276987115087082794407077161728899301039446204012229043861707334952386206925919655883946847042098673031523813173193815385027581820967368792573833266647916564123467951840160048540863592274521542959237057613692062004336998494504222219028995030296457603518549921242442660622477573235224442387500420985080271308068482742592403280132324863146722687405846957751755824531061479818224666348653299079415524489004747592254183842924555892125559299437592178070604491639182530971213309462702419616234559871157295635940419227650138039896104159661196078472320338033293909678491150752614560435815316713658723778667958363855082685643967311234542051671438113676184539344345677433049468656267531777362316541896652677606395287105924755130995667666108896885430950446025230539071177230359970935012130015331752731347408689995079533695690013708706340960032412285511421854024371621059575337119305931956212086666507681356606164331351785690217292874236300053962224660640205294141225288039717224262072022550473610635490696405069408565266235981547746030379294448459247154550655551524480043948502140155176707116802826220009381133490330880506078433666599090496557143814193968502516730010694830976214731482427675112358453194865636975761924296900489508761801855979415779071460804464122536333377246262131403070376579787144767826371720070333747314626673930532630289816667846308033362424128658298157196720976138942629987443338892146015827892176716790713717142724747184329049592609420991355332155822747829308770817751537857823626820080198083086931861117857190306931567773668070609678605106625424964402455151892812410832712601766240362219050954392091957051920752658939192917874656568327726906270991478916316815989106599667558036021768607511745617905804304437727811389124319563513791420316181631113191524479256188702032616684819314086753209332076734100582268139530960716647681727318191226298526775309546569649261968705015759498670073947860971263404766810861393056854567806401295757674684692882518393936053928064565767078325585360622299821437912697447946210936608788215358959173933626247566379120675821369098296629816075256179625186225958096391397365036595739612739700063971284456853915679593324599251780351497757454297517302487630538827810544427985128906444322949167960389606394985000936396358873406449617239603086646779965471495778600301221124995370911476582748263107071778997006922098427610467156621951717570274445076427981714345851592904073997757072086847072321397969317886165133766865763067006563608096800428041092803848926307401571487349242339789539050910866594732823161283647158887275158367283768621847468642679194420617467638227738491082667705778949791185853400994333282183768221531517585448602115063787673949845472010779065531063908727482191719069608987467296897610546922447089390474347823138936936978732675536496265882104765688362476388039016303979244510390104000890766780474692211992136048303635081279725990628336185345093027284388580157652554831744043818889928281486360719525437827432385111663769450153911884326284685844319379114640693309723695877777606108083640223617855936266955067133979707712023701127612080945213002364393728915351459569014668966420697247092724909265915367376565964304826691384803937460082340403409580558118660461426956298361284203876952660130871250694363418612398409737621686747037289481286591228874484738885957960632932924408557623298279107344373576538146186337399462473302000964073827484669426618323260741409447411836602110275065368117840066298399995195517433671144577347316286226125093225927823948490313278500929824856410483548744266161734438321396965139031947477415247664923877530307698590901421366439055429497347235035597265967937367472977935682025998713345435980262828679412425080325929737504094493504839122489651795928682215140429063292472283104265069213375294699699289735728594697274575001503798600937829012496380396902864451207324516056216816534026130283116103604188592516655210097837747320555924233591370916255662815877701686616064529754037375921364835364806116929801943670274539557565009527296279626488868386964656764428969062153485145243579614080495345927997845087934575492642484372284474747085924702345154397262459425150404232280179485649662502837523880121472176279075636030196556487906518779015452419066770078484064430064748808122868865707579655227292969085942610846436567480044117343060844629397920103091389749774032157334729954829014497398905366823895805801297966755143436617417741299606343664108921379955867386085909265954644641297696068926622727635916313089653643067163686416947187371995102739654911970674204067380741332532427714128802613733282081050691783016055166051497142342637845121303205948633080673299743142501870339237822857226255252231670274242038617142297712283029748641991110626783734869815037841012873838847469886709758388410569311071897157502637770186367608941058211421028534611580750785993047997879488936119743819153670495231685150883459177039049552629150869540266987073488599940709930931890881642083266893728199429765481516366125660146979055615903273603157243535447350997793404493173178137352514940515367983948810318198338216916987402978642251315869175355225408288360105251087003200429805348118308359396589007087632856592548534801582405116982215505740853000642599515193913132926242562738376628174341777208709421514161293580518982340973322446650373101494976282137777182894978947038670208740920107357592442977729900231747612338153404563547621995685123799846508815793277478419450589263853795677503296073428705342689123269966089474321210523455375567090158698804537327826843575966101941015271574604004156994813053753998673640723780192971334885392926529002912517544612023219608823966950989830492448927776137197811843413479978776391386741381694786449023131681711250231698199667073459516450099470841540631306014185445537725836829581825653730673367308868811795112098589129443134334208493868413219933177821198589065655373954371255789996737557956159171683897264042282058532950551837409353109448801429786811818104949315774916058413231638595462268386677746480231183395695222119973222571675591010605387192060301550334662130813287994995119851479767533674811691228183831901666724437839837959337471585313326212849150861214661048075610369593576601461499753857665019002024809648169965217021119088142681175100421845044898797628826341673908453039140709156538448951444433016775930742882443386907670085237422412163116795088081974644972298979888801100480487507434964673917697356570900226322127095752093958252685710653472699498232172615769893887696400352616413086453508545313796254318868085458430569674673990501993132511395907337532443510307638672832726953414438135412194975070530470274158042149253265208003210934504858796190512613354488092935242121763143062340637633424629750947494512211770888242360577377103830682420326669813315965852324193747766858454044433905763098418348710324729813778422191942050672028793068302861682490602403346740572059119493992165921412925079737043759629691740149131719235129750600546077315947810849199065833937011943145150009418208649881099978090093170976927667363556850567542300959707107044304834319802325503895172022981778150633971693659244649958201475451399990459199175635682086877965311445993484248673048998089755433535541635533574092529902292451529955094940380628928157095816758159434051470915297763856481698802210875940891423466568540576355713770251624278179072216868170644258239446523379575789570336796737605198953153253125495769830564401833874166071549283177174029018173219591593885462822668439783402050238407546177597316584267524771220378810523527501262785981662734607459437369549132524293394307822079795406139213815189315416298166949306324897258379936288549763023263650038436655646559886406822815386344018678991133660374361135140917744994898923375264583466794399973206737795154912102771378668052177992771481767516711236729949714052478188274743311283648974514266965967825298303917710182449716504481382044988005729184214879761661113874578339147673014636705665649362994685006459790079648588514345315713482640347992681694745089598584005101921926118618577070979251973885764555436263087565628618527925710271048267966459289869559474149531430882476906063410765906250434868945532235741633681514237036681005138346100538923472434156461067308320398693075788394928349384824308412102285661688413583593938792423651119283718336232655444253293133795954115588676585025462757578947581975104732969460865911022028449441839569145051898875302614819376621554794998649155972499501806267252146640378371921387566532757173350084508099275098400022245343675286283380325941596739937451184931825577620932867946414712432527554725732433535017686163161718041353976360035252680887848063754259783118755338096506113043571954863380432091976823276562738245904350740184738367789987862211347109161870033488159483232327860937177145749496459317635514572258386212764806437192542497142420746342280524545141336085411388012869499912181392612875621714387611032260221881571763184195919775857290218813775222482828162998399615270945412037449388490217920044646030079645482819461448770275662665562803599966775407503316475042039890373721500539678343504176291473944500382035179497192947788648654963764860720132395759953334063786061948298753085770994989585246457206726299878353527506959527967539222064560926424373959803411184419262114304330124748517962881971238478453369893252950648061463520335687204309907278263143266231381096315830376449335054454198138000748349268475679111397212716829997307009358742110403250056328689224536247951592942048840764112460810328234865760326144537121683187814972797718085946292922268658185823469743858057772684386040329079930703614770539358695814429361958706998099022627619069028332559422033714448992644899014817897751090593389560551265621483353938715201807340008849391451568392839056442992933249423007114123361457932582887335965794891143801811903413709797450684341011767530095347693798375862794202083102998605938768728637110241677651305401210408959600958923756934186305989660528380707512937838747010441868343359889363881269585002649057133784601137308104554096280994073055070498037422693096219797396120088065841137537505167409452453172729988579615458054329518217734069438260143580225123457727551635490336769423470004070737502931177960810017143481342171499990811984890224287947500077059218634825646991914641039406928658106673495771652698372510631306961723408505372396252238012827460275243477221491566025322072367921260363442636428027113485328995484504623293514933945026720099914096295920856770333123531311359980600524409537969939203164667263008065745700779270247619179696450843853750760840576187282975667320161771754561643146902544435767224449588311113352676752670987271601427435413008686065568550547554002510352693930558279015965296774392831510406808665230720177267623443816067523686217440037366749030214582314208632951074447139439490441982156591682541675206441952775144124567073615463930801238750593292542444127323523177254393994988446257139514527096300256065406267481229085498577181680052470246287630874044597611979893542896153856052352569527466440125772922369741609143535252138615346940238144206287364764135161453976808114194788187189291011340741691630498719669644763699315619172777585628015931026879850364467474280159292297560844262471366835076242353162848201878054851484420149929134007954505437750430077157225309885061341163804975491902744786507068712371707493503093550524232979261698342077103024310962807038965298448022998778702331824731260899104804635027803463399171273095502654051614808320978367380587961157089293178869261154210730503783136902347649400421538476832035865071649680175920772937454275151831056138929660959788108350596974833596867205273803356305381399649904626109572861446747733569486952066504011000942070002587137073599863547050990813956406987054632008940756879179926960687692009223693860804609121190814230487074196215877913710185845955954235957188996998507234453372981599969080475307005100139656117089695310249490227348975185278321925311665835378873336776213623974789293824993204930271515143131378219327238633594315520480304441453537509604748688621404481966388530464175409357239360066636345164228027108821371192108919094143400625212313178914842426218836653364577219912821663425417485548068687121468550406655998363574070049774057031296791191629524015075304392025634617764060985418953032238565315588622364350173286819327029127655946001342368071641694037215063870149887414838344676684807227747625184875386138261057235910256460960724150298204373237111680249360776321835597947908435541494977170170098329088676129522280980155026869590876133576233026250690874028741460278716788693244834234270515050673450032879636036457528801136084044683607654339607498706520278765202856349148672483524058157607363580729666088452621320860316471856132041945215349828224611870834726464651863032074125592603103059432237376683169401850224643103406228756555245527680383372959565159744823730255042992660403510733766210809067188268523020616915168926095312613670573064458668646655847626416860883844319758150553125967280297910182654473318090240708737199254704884621311601646481583719055698474594767092215437094818113133430916477772372871555563951949912371085618182615769497385780718127761705703743695295916834156823268428684318852052102377092063331655154146957475079219888970829782222558498718513277324620804535789125764883130603259593879760555745477811655790133008768703606229732110543612910528830489255401914554458776452516080884879102677226879910525893973429600553507909992132282155053367957163906865520513617641350420189095083551670073607270390424700914018896792196683788402469851704396886718056373218429199383158647767423438870456447344492689947497838330647272347987887146924291527847357116811739215420800886483234961510511398189966477707517930817379133044892778747164263876384275183467206908015479114413855594983771117448550101338216050885759919686494995614343722367501619877333675173939379764254419307365107933025639620961175468404387176242370671005616089731882286107770253492255713954984467334774472819143412919615321216095741830050960935491980405943439048470315036324313666297976608623268403725576814759142852303987286254805121451082673614635805233777878853595193680831263084885727717765889756576325848087851535470810241705014234811093046045714105480441657559463138394940579240660109765959989512173852915819400390896722158089152946465169131997830019402128897606789796333133213837473210904095860354868010301800439347854438911953069403740435627199378035933190836486057267065954296958697986247053177958132933621976230843590129319581721034674885415385952776353436627953427632583338856925034507872647387927548537627909520257093616471585278660622337347604107374895511655871204051158251569097942699810725133368926328420442471394250006954382018088022561593757920775442823769435394430622583818970604060822487823171330524474426266815747075340221008998826462576298222138746752142315605210573019032309073182366875548031578023506986473509068046930711178538546949249507873424360274304963491056258554805830389571870792364320645166605441033540142351018265676451113607045588282243206488112856267798099461063289744279991251019951616667695399040745838432052451377557168145850669193067723971058314389086142171899543141223407153633213098970426208029724719978050215368792197614611430380029257258128369504745878368390837812797078147679855656026758936745583619405114100761546498368564881126289675641895880930383778925581448963372818519628472292227254226987085554769109333965954461899248344618849566967030433622587229783318071462685043675221160124529906343702725645457759555529224695903876680522050380084015588497083152651582350511851535557852441823248316894146585821096048116894763299939752578019252636409055599109234730922008872466215278175054650421169204389117435901537773941618184185964982518590721343015590036536109578603771801551268850000438440259215993566951584573524252275010568722659370896046219707346609749709327675939140799057554166673439490075583038107518163416714335067144129167671007224283681312618814242857158063089322651287163062056971569019699397195432402027196204930746289233083621072096032256798319030916875905038474130956704856028353862976698585603341277414737565606714827792621648869003657439192332939677042586613075726664828019715298347148116250134297162831935085491718950067117891557317442173816878791742150240724278303908257461529658342994308112461275883597417266615346466999027144245848299209407925842963195147170567827311614541323600941940550567432715174404571247253472266012349598048812635585974534185804369482630899627155193299950332693386491958094545607972677275768345650030220394529302373166059051795789482715205953974795830021591512824137401793002456758829861194543833128954874850174540414465682687067647729359281170599845980770577411827862103061525874666408344376663081978347414583816902425858868902540522355700280214178055523949216692838477190370836678868579540887398054230826671763206383433600972191332934761564674859525001630883918352989858423086148183334431048672916249303897894946520996027271624320024232841800153882236460645364526379194949245143833581037470088344983022209954864784854518725922411233766666006523282970641781535442415499785955145198250727763925924253359123518416023990159617445568013580443181461226778971565427251896292302878643585459067017646169641904704835510317341933989159339412559016423426216553762115362831480483936000560580034791088160636104010546011017517350981264386869328707145453901332106113141032099697994011867606504903148748658117262600765235353975673114013839131311675798142792396905102865773997594988915378444297377293242139470981248827514280696501546494941409380284460287313113211164052064253028555788270281944981730626615022385784408935200272203247604203947695618629578455974194614560790860099157962409187976847467521218413370082406262607403009784314674622572693589147116236661644259886654841359020340884622324938196552521108112987236069123155810138763857275737647128483568545003821324046107611713681150723979879837762534050490324117463200920043821586760271365548684232748754188231186480259915322724676093231467707481518623446241793637799393246244732582824163060991855850021125955284373874736338311419258536160650667979449520345570442464946252445096957635364927617156198860006210215232432665073272528388223614970019991113451195992299687296479913643028125151378341167475958646939098228447193062473549968413090746896782746575058287312448949696488951442202253872821191089811777723941590510893162835619965360494423832339516896078675179579206753842325329898785745694831755575207611156131539345077740745108490821425353975493173003868453949246103614260937153958364268550452235350074904504474716171766429191732098213122957236219803552284301828286050510257985925597632592829799485525037126749564714870497878893810435154734375595827306468953689549363905086165875244426968711891485409343084557287276705680950522411599316379959771167485623906493586650737597592656635351121529627909607583134011349044090939534745094316469536721037479365865429690398802010663450824108502279861793835048697313447016478659360259258330408830602228254662948919752632775528905932301695112223261179026205506448888942592361503965328351300273123139977962083270660525416730698895984708274330141634442225427439380423788139557720012463805046834790653923691982548756360607352423978126297016765889933264078343240889995891994489375771841169854286230024617207360323102128420400481419587418560751530676498845571305966774930880185625398314067755983144078229867314205269659573675260521373125690723507613298109745128885632126220544429588939617660607456269329436762307756794239316232796215207648066477722386797288118047210976230329941775706129454775965261233700802781870573623926081934741610362197347499636550751460734649927981376388858005673777324694684240328687487254079711238268558955422940981332096550161962734970858114954857170919157201123938732225728500769299476251894043414879565065668885775209130149620102242178889185458359070207515325721602588658128504957715799163996062828876122711238794949251531388562200271701021163544052773969079666454776159121736250373442141689018365553374188919021938382340942404647099088495510381584780046870376152671819746007028019077167483851713632574605440318522522353705245460290948279730188749381933633239132998807310720973727073834688715101541806099263121276967108614806370630005500610821461213779258429357729582781301074567064496399077919170007568769547276765146565072770870821777356595490877890812234922615477000249692132488985779920223454644794605583594263902707889608830598606514163799636285917144573448672517332432728199578656841552214847180205494981377249705474808054078719789907344742277993313965577287426032153954610183670175721561413443710767952828676166049129884964953827748636421850899333148386863772506340589204221545353386717294906789205903890173051450323148210003576107391522374985189619236892153988527234751085723750540513264992788922323056644465414416499995923805073859458427838098295194196931213315459834776739702735976581324564694142999102190106863014326122915631837181430444187007684821893853063409575920509210179484369161442944682714220890741836165245767223587983898472861169058953436144022195853459343294038580618567892613501369824339968091849190588339665649980215331931651063791779344228894543808324983623602552328744602295258443383544873522572323584422141026977733667206249523418847258115338686169956192415527635712688056197404227015997609211452379829796432046738551931427632557304099158350188846572506001774964289244472085476400084741177644435889677501276256493456429079258063440847541647437594198101421671897635397169060718789277501208099139986509040963952061195500423049344213512704237788601846229097037984062353311451592212433002666649548284337973034874584485324730032866939244779435990057483947101203569893728241466576528094317970732812584884872055459103390860789966589424138041812180454363232084678694947568314537029267005223415248941188094310189275256672838327869138566024668942020940587905562614192339249257534430806127528965327481713943360376359475596369119392890859703976442313987608369066978268944000617996495380186938071815673999367312382403918247927361329629668841175036637014400920527783127178188130801883845859775077863435134659997716888450608529112795043328589724130980965029785621486507754996213329661317189103000559268790388644883226495704654975753392618215150111964833980389819920527201816285490578772760478805929431523679886248936180581723631353862186282187835308599552796494682964942774898661979917596823812018184646804506755413959788006109721099815568649457269092861566147793132358257279835274167232731240148410626276381251798967057586838902478674501685274049157111138747015901485871180564031352755718594490232953989189283978827214786507297772066919778606842944009178779719499802738670248800956791089740797038986230881499631833997458806963412385731239848851147584525041326173643958487778213489678857987849032691557039359750802470163391571437698692960900971889942899180150260714552643800537173519155789153503848322762450362408119842105884720078744290729676216659602867069662000985089732850127844703773626589522337737103048636376271912532711859395008827366486897129496553520662654167642585486304932703550383136648401533681863820944022039044519701657694918461799979793364004615875914102107400865147426699306243599987527295513401421780393046479031251203978633147530024507705228201314304356491812987652824620156112323601090182333875282827946365620548168459136550509596998933321201600486284104714606535706081064569329224015150329328884346691368773910661180994925768651751958631362966684415822698780043746137832475076994103281740403359674150706587413682915400875531048400180789577869455014457586409845339321938094418140821820962773180371115007952108915004375376771340452753260753044168410623731022885786285631594068403932683537974543976297081612693763444729932395515459709814789044542717032768084826893420021216159080153037148073064642861268485885240231683322732199140704013179631585400534871845295863032047477599375553327154381556326999857168302249586034349206264682914819659131794948586426900514007974320816848814802305822776691443832841447362872818866430149736199322385053986689110737968256153363695088945128151137782651537868275532237657638353479638925629138959999501369207374255929519497308502724191311414801877395636539180093841508090338692606415330038673732138462025319303128458752695679324911648010162077978471082838863600786408826734679798757600791357654232434963109392587175654886852323957005821978067199342364244942683664278172564769467870598090598839237335623559684881397175053295889645516110293644386791495457372050554374304102708123726171021168893463489922468180847801016284521593534997637398838270550052863881806582903192730602557911463095406827074969779590239973087623325493227227137866836824114960588393013278465701896474001306133185731283113522718698630019641516772942689316172888354827676759131744893893286563830114030845180710633795260114916854252990671865461047428732375372497334478661336421298205495289623977339516417048260328493943405855879974788834602819353868361914784407343091510681035158672932659216539310203204436068912761847677285179703664419771074033784462234851071340332827239478380304370240135567376675566697136817004170494763001994226757194387126823116079783353930128533379005928750973704854941777849200429619921650368145196622963200737585976360165374403268865266155477041708992715017194591141409362667849278037652711586069594275931076205971742099150466715351556565440388094410341057619785439791278685572672041357293649458820886236811690863625277805657814891351084790877171396726957198960738578879890081815656871098070243178413407924617539231678195239824948652447967709802219363539112751402016273322312204924960375535754486959511486575977623929637501415409414609930413467163424821534527416063316142758448056067373509097825241687099472531082898518109367902400708591675627353691014006802690672627111527775840547067071392854561326433198134910416741940745296172063892769813094147128269117835562590350972053538167479036553130928860285570198067857369592218628165481102262727952684108069210270603913052991849503981897507816903305363709283558089993973051295595099074276293091891211104879804019834607011666309701078146105420469645167940908852075185057060915766461252368268375377248848976490487205186599420119699090495659056021506693412274041824271180935113116604591972834440338120495040328843523792217392752475445762847557497014055533117156488586116365265292191257183124703460387380635836573006926636846676096550753796922068477149165925548335208228362634810965481474092237055029852993163371426868236922593272120439151778665109721844399674957375998294504674867624703767289222739055147775180691333267392141998187678975405013655444485295995233832807079841985510781553607907748081216285636101386449390617357636135460406217565167601462973114620959705785027880025469111653180424380715919637609162111350352204008373887892060200156666985704179144645860751376027733595728049349485759432004039598324192163315406485399341076117615010386215173414999397797218696598114831351586307146349689541410382260747596139484976525309631269794914344171579360664030588652715521559539573546300868656820587862277070044702006056240898926890688832122829361647838819483305851992773520603102829009161778108030457075643146493720539318169588852740901009552395325904677937798533000635128776900641184288918182414655084829471680494909704677936912347979173775761946446412567275789774494151949861612543389232917083097005500670793021046361387641467848059262284008693747832563957502493191569006603662504488668540149710434292685523875758986347966753692381956199074117025356448002638646554651872280433990510831671952785691001818840350181061619643881357976665897529453326552887207993839487117141810866965590462328892421389074051098633955862160300095969655835767326638206086845097679255609157157535243101624393131262517312451306468773659090142774339205498037132822628916420238784040126457462383916516256107016248086112039001357844886915110861634332560667735436915566566161802645043906915132650683528951073249108497947599448916305065035989240037381222660431912509692402040692249412032317885132862126053866316270524155184299892328974994934605812313762445603687336668488807789431126099147595346868530067645206112196115591240933709498893324543699289868998272826685626390446052085198276135039609646916598628485964275273317780803745132538386147583324478460445919175422523794063858375553071231458167526648390383656152589822423527102672634621590906624132321757048514170224423035383059395344316008026354576591894208057954003280030017589330670823389638680792392401481825026603986314564821705901289609923392867979174226080356139442753623428556083879896031026440963674718773208063615982877002896800401842150886982175471577928542724249351706736122337808381833264541310426535396403769147620649129242520367727797522929578737607744671727618956453192708064982898485376279614470462693061226707204665206266771520087761726695614678995834708413756853610330388727947185423412474187880700328715636586169868085334069812259318278327809266627870943124230260645460976142482072251551313000006924198792970271953587654384334260113765214937746106727018555226894543463864089524848195651034424560212378622816145309074009996159620452142965688921975185397089944263932095557360716891599003583426754746567154170959739456650420683164488546834306174406248356011220954851675695467600180637817456719707218832955141018127726363285371975938405297135048880609238171580991314881345161503836297680189369078485323097557100801432377607269316632037983449179498871368464211734242234814674266665685585508670424336260918083523129228472372224221134202228369407996892283260299420636752932573349976870117369719745590677041206068025665388403922815570609079878112381094829828544350528686786961933584477678470654329629190484487217463023525066172590877898885638073282097322895690615033225988321247506414710965186624998239262038319556492493633745319250714806507031264315320173587634036887662703391057666066684331854275428971250983702724153013018456743103526022694199317573555877807035551043453935539787560565563938712261604488337729407873799624480394595442384073099183671340921322590231255499458040389249650987797985340627985234298619963810976478033742661466671338644411397257699925286987376015995394801368021256794400549612707841045619939696978012639783225699315050966067146620588817726749970278425125962592587271117417786741621609524860775539521640826669942997549023812276437883910647514330362140215446392583141835320736778927055923709857886059639525179044839973835281503952774403940683658444222154010955791175399150970167232043077264586514259697902127481908320223941099264850577242444137904983625258462743789314413273079684243469913541418301579032736117068372606644078775771489157440104559637037329502197955421564341976153735014819792278774979173401365236546419627786054402876638423067302605574204718182399188451511538311746106824777589595156120134298358267056420304125408425226234254060431011201238220603068143646700420488511381259833115051847016128792233154725269663547144085227818409503478389976786141136697618203412284818860320160802823325820238880621865245328379063718871047791122299109504290474814923570494059569440948961443774089258577279195212797048482297025121537145149999509723047121675658707989224855311107581837280486410240168593708635574455771900953961274947690561292071244319783032187308525308145920272134996261405496479162709336708938090454587207622573780562421584946641640920005035312733885515417453732209813636424210812438950129364602998474756642250068922957001548065100691316161314861768616582072974013301664442235407058216131830569882435881727561276022721323560743804352725092620498211200144610376989238447932082510095165599647152327812184721204337057608061241433751055664346315482846112663116954658935541127148590561435807901081990971232803505347716958417508055199104496264800604729043258032549804791929803741520428562619824435064252584363399822242563012034906581921200935940494038486406016664082541333068671051839753394891559669932020320290867415317812018954457262590804241764441202379979650548406176848485291693293730260992955827506367548146645641123515842647196791385725692316606896635353874380205636311168409927788568382450535024169434989840634373538297793224386183494601013947632133240558866440629171658664987206245651189824459407378185596079269718534208233656494835885730166089999890095779774723641132606865622835899332231346787611474592611808551369487462063116593733635271593126544701139479218503350957461561497924237552448443737436323313040402080102728122354920611521675303487767236839894616667252933801728532385898760323871141489284376913296460563055305444055965145313120070428980556064432909452074049321778725716550260545069676952902898509924928986503003824578515079540942849324263353172871530940515009891545043870773998143032634134046291563364952020991821500417067072155800801576135942399345829973364760073391912885800101076334925209293269444780346012810351967336272680240864321039906575654456562331616998139547578522662017441168650707132041750805378807531756920821980508008081745138588972167894413614007742697932519845884025674110786228236162321254725450387375899729685833259982920774969326944408222165192439049594836524644163787131626908164526494868092130045699918450295636006723305164254175732843351768017221453467163448097753718739594959084102972319423177266021676137317757957957912466401813094984572782444333638153287969782890839695857211454413683299294632362645891238586714582885669135246034505446540759978619542375361110147601841919534821922900975470314966831188554543442511183264409099000026596552403240082285497588060557810133679108667660510417384269424364123141502883915588168241239886869318731301194462544050248878004705452590300120540810566670958162419406509679678266541938844080775873728095235697943902055514518191729990400367176876522272627060878716402840678152495413737742229303824325448866405029528312103550762464132733934914537992457939302894610943931663334265978390546693270120607241257692703804014741027338545030967314105724603138135342882981112250026228101478220722369294214130626005229618265920229527517949038424534236221668083084517260303470922409005046159198934318669748246828646948010801990755099412151521756359171581433789111660987406867092723829618796326865914018809098023457614898219615725674476772589798246673252907969447323514268758378742485701821189734730596558754328878449597928770905852994180342240011682522627567044103475894499127876805774569940853716807115792221407423774943657300045444208684030260837631099865852410856804551631367300271136369405992464331200630628288063862382171145094176373086528251284013462208361134664063202203535426216137552013465933411937928231095586136949254178311313490417172741528122393540843147295430020843261626021515423778493055243495364051721432675465571507527633350069804669714690710959276543474006022637500415358432042000401633233559357852199876075675587157133508723077998875891132645460888366222571657733437609505787578618869450898730162654809093157102913957671652983854572630519193798570606427012540833592229912100790996286418503628660120638713761819230815356165693282252051803276776245274578090900033477624584953540780191353120946148561012444180261484328229690821449180430568184435842993851470429903994141487469075076185198778741327847888759576590873691739811436211091306039015619948088083062174853350445336380435989472799269838610092930406706431920195671933870484071696144122832309640056286045658568793217717756322166856461592632323697003163455158161309579728125579476094647231922772294556659603774523716393812803071897161428544925457609611547806616356373754070582224853486747688669164809391427795978386743798667829585469980415986644463516998557154374602984505556544868906309590659987728358028910443333057665225906330754613829222639569069622840717620603477787609419608419038582006250201227078905036525571756180618098832816871670238104330126905340640811651344543602043295667099771499866229942954171017903384016415696438419058284136135841740723918493878889202021203319675371363558617185852139299522600480273391928097382558196226027388719943925984616656969905968041097543578232409737053817751648190205502417174864153008628587665931351823513816781859852493038960567200667866475675939294238873044084438996890102537733487698021914895006655533386079693174746959507674563183729861506004248348944465177746380528556578066361496760215049086309138229603401278806246833063024803543022900657904129807152886366556277764292082295078793228465146726551727633844185484315313931700484879267644465405854490307070674714695774750882596420852341436486584957455354413538650524184651587683222752153109014529861704312891349858896328299525220026948840679590916126366317697754592156029949367694385558427844371419352192703989023763798765118163619850064348402712691325680103807543726812785565300701747190760342652016577942505046332014851414352905490305532290571077818963301861137080828823633450905135104200026007230892752176786310465026370803062686317186606571468790867663708146396091766901282764825797162035069600280433486607157813068417858222358409709576887573831704202597096147762810719547240945986347556530455379877365545668796705186630050159322003488484562338649829874770630468990658456912766376393626532895502291265302618170343386188878924015019885462490730934956746408433536027107634780347985288837361977189138289347160359652200393823319550184463638042993661907854366386222080163730636711302958544730218597395819187830894736270651631096526568050436370431051674985623480945732310253387310535500449360237035613217162752414218344368464106379913140230793759295470372388129862868209187073462780782106855364551351765375195678991265253082499425547141646902085891312300949257788202581937951705841598248159053570021848798825994897918188094727103608500837324953109926907407661355179690318361491507754783962111402288485331862146956547094606221284269879618066052870366270637221696270318206516471417727588201509216274386420763748501676593082327509711433071003154979147405528645399946252966798764646840303797135678658228970735358820171597421921439306032853381151267834643776840314903760325840393993246030455528723885055686786624865498255510208433334872442113646957852115254946893691889884028244286072318085363855443990291084887076530851891376724376667818036105124054308442457897772405374338900265546589954928321010182166872703646026622550041480474284528216840866208363537787898849281715420962187162667563909498270452355849443413752952211820134091098905006603978188460440440043446746971006760233034757595355871722117579609098496922894339215531443696915403044578312085962178969787807177272406088542047845473015237357986456376242712586880707250050829996599457078180966741520727536222422473371515967223413752489656211226202795016375720233298579591616610124174582917873142610429160497778104199189405167124113870630982169674899410649822753910339331404276184376801424707534951074390281785167377627777140264809416210695588524159107148395988472054789095512747479658418102923287774593528400825909811943281981806193279078239199892180710334475470351784557600402134543721482501909259532154255823505552122647404522848547062323719428298662166906222892521887483748407193026104253551079189605340899120033926519656156820552242710068332047014656940168807434349763460807496413005054969803716122427516304397322630580964806966854439192437335940562526657148854207774794510296749057019215533977857735587488416750098229032196412710181986560989155722549203156742856157593242605500731140015327654620343459573633507044839962697658451996789783046056525940421217186764560653285012055038023858096773584326363586248475194437051205950002530876249229832916266787343392303979817533509447352885461145546950961798327698761589897817580544266064547704195957049818623088376781865627816442636791562145494762049879523946340232873824013694153205033626642441838160459881154551694894739296890543094844921474725522060445481999994621296954288060534680744624354790199876326027723604345890588441492987748557460593833564187159862901037150691590073121198777609684070069745476646480666430009426475397017832096647523334908990376595585161852636700799019997501040552312096388670306029747792827300658895189769945452292955925227921181861090302203222570743764250904946239572152457603420756193590329099374445534445502678624983411946027816711102661721840716509680135708094853540015660858238104009095465104524123152445736620908728285822016489137584686101794863043899385322115213161065906115324170141351944709744013559638388364625363732814175155481638594963288328275772039869505021570772774930127516198582154116375201617300707318259040076207444677057926453388079565180892057378528733736163487626854822247802685367103289282338636826029683010219177158513998453095487675152272343726957170662988963551266929439561195209848315639120574115628193179779572048242958281475562408557595195795147447745979069279319485696881304533150760295270340273505680557167111598643752340466213792055422155455374111789903909797544176790923931973863418584596540578668085512874412738090704094323552262676722016049556052651472379038716659526899751039330945008447161548208560080957267353554169985209466145657096245305900045480301964472595059726942566767753460262760602099758676960982495201966454129110060393165453454590734616735692560673763858637288171331962822124127591192334291055909808387103120638222012682654244868785939608487282575512310038117805649248061251722316829051238418502817678456577818451973932037543719448784483819111390053528762237156384535041344045238647477644372224114161730803653115280772966304643880909185355931245755793034825945050342388604859482586659951831913864759513846859140363051861543113168874110628568401055102833313570342683435283970852470296946838447540663212069600523227901389309125356104882216151264096959102767137725079694109713812407233931059369476859046823467551296078803644723542495883245856975104540951753124692145761110383894631345216855859911320671125214899547031077334340432017172523445562617814163736947019540039944857629498006571146218260746736476534662499679817316272640905320043545010728980175506973628032188943863454834339925727022007605120845796817003576738805541930272207896869243114001700582030309878028734549507119897325571067702913634233917553103883335449095705566319701957191735182263314370702938902705263829217942933597765583531698875598421525085042298964959624826473438651836421727518932859127702612130178807433643390498902703429564171328241193182211759024490284089376429810746115512239993748624516166226515708551512983999363167871687638650445270991991880279596133218041538718826125549302752025057402096503596760496965756652944669182305278733799487493610178500400941498416721587617609308878136819830872733824310885355325851593618022535985923448363148567584129676509268659279331651451006035343924346984192454272020227442224324350808835482715434716046924480205804457578364403673452086505058123292640219166817786180782279257779696026271571780219369199178854626962942730637936959296613982868785260529053237608259875024802551213437887286855749217616882792500685775472455475442841456930012779268815044462721384765559183422913547412741705142411832477264770183763382160515060269538966872117290375108888353951188993944851837655787949839801074628993564984919582093034376896965343972500758899118926874539397465499437456215368469859484487010987323372212014779494817248938728712596972845843094565860675925146458830800156737598179613445841836541269215617465360124313046554258369922728342456643236038811847494230421056225638281323731959688620195983675180974341420641470359270148381688031174655980515092607030801574329062348697132873756319967417904508215700887166659906276513512227483740256604193510414614419712007256911756676489540127358845325066418889985855733777931067521205738292927784446938588618633361392103301384506665380981283359417653869231962314195021403249233625832440484718868343697701148919667097103095033306363880681806505053117706375187892377443249914236492185761657940679674532943143906527839151778395875802721892539046131106764096379808975685753740169618986401281632853128531949162655216626658308879222525963891961057887262070628951473038339405469615352886178898105591578130246597222926496415951406018470768300600232578791251107680105901002553013008634128659892265986643106267643797061443388662992465587535023975133550145546418455286406767536777889126537802523098699124500385604033528864556044606706201939579024144347689700049132751863223067115121227668472244624705076593832658189809813600903288188606364110057168145743063362974909114642270111392122445017731491244617428272746260872890607520906295853664763813746877895952094407671796541372761960087513344978136605746085630749300391962543126128052956302200431176243482014608890590691649942246601200685890250710925815600913359116024740423810289355677910824702601243541590638928603546152044893606081926901943767230499552587643865298833340225352753727925174990451751364302884836951756625080052691100086666647439668785573331453412756338485418774014648376435932720368273509175232973091115747607291946471587994494304899482893473494258271175360565620315454285622054463507908136969409199671628781264738651273988496045090161672342419857467034025914786643369936130632904258247486114815435208904092160292887844404605948353736631318235814771343436412487809045510431751324379081317874091156779715342654732417050287424916109057050152205169352544303125562638329577600349411320940868349787399933266921571980077048093706730551577885839162526457887405628390520364007726011846475801506996371856838025242241316348927425859347285453829604609367567489835206131461282383745032688019964785657341762500269115355654172100576706845430060554860356129718910288723472811835718082117830339888865951117845820663400070118844034332803414819222887089314714706877797091809178455928125896862912918801843407003065602950297874729617186773939777216903863545434814939645267473900166479827019640427807977844748450046087739757202893125805973391628431976835027844706272399755772632130965606730444088031129325761343395463956803429787744784188290345136138316143940322258918389661918959835686828324355181087385764885724698093673684298938100754341712924163039179369695563366548122195363170771287020495191848408187209478263614908175351006489384286936520350871078457607509947430810194852646062347796070313249211655748203729567706211414605623378441722673151109536264077716575936084292900727301816348302596576543299527209355918152534863705770698783682089613214254092883438538911746049574542159030855109036485789196276530381193371868438911573207137579056071484311753550361922259004058680636842440843894262373717354436846255143207014746989685620942717758036389761172381626594315180037402533928113420176952734153784605945600068628013300739939862743538974708865633644724502537285259106695848772231601036571923936294595718143335170610367884859710968595925314652209532390004271847595536996696516397765812104991401716156599882571523379932433654697504765059491793767901146442686377383508830290330580415845637531128833637549073265125455731150089749761124807630543932763963202959859272338909880113378730102359216733859241394745727390257809441966545782102900165926725642250851551153747216615437727203049149134082406149874401155926651994001155134777180519155978592508245721594849111753286417667090818842109475109379856478625218274076388433122514812501293950026193874441720416243193614836532728070187436834379669431882143661309303383716737251964003801060808082710809284018635862684540838646629449508959465527997511950859068026205250575398890250401747419737890527427316542500434735847048717265252664375252898911294916602202333514690797229683863449791415449015490621187887280057219752545453342153537447928420934714180757025722414954199293967000806811456235837295827602506647006747882857042778665698483003651328860224785496838206523397916579468986505614756139968482591795735046257863333335987710102727402126174787361676934692467929323022209580264048340314485081481115036410616787603541325642809679992778510390048637442551066881500433789753866254979979509772523156214323307083816500513148405228591880926600030312363647563403931210194479501782622571413820139301556928466116491272191392072585789620006969254911824420631034849303570977698427477794711972073437830745690183803914309371495681991978008055726753704872486249958163914669472413050304389047165248383705704684116978331524653355474886649646530529262405956339730087924495687709188112674164348659607606103872626321670440960693614308083039136339642432711717850063371396165935549027147585909463234884213695773888210295162598574368015239951932573730598529722529013476828161157657658625853092947831543544629349607290034591317782610848449393675287036219254747477213889348934362153502515375444541072943695264919774013504154398498435525576201464285863347904348932950317909997634293529900457522323701711896232837186663272009866142165906399441171297223338529720722411058590964619844340879275672411986234346536014196329310371010346765679478876676302301112805609281075356737149196977742846351275572023673525242133507728192805378384780882467429347770439900976153873908947819094833612418882851635887816461010012350908431899617261263109658871808381410701472950344205866095955965939633384686418402177193392302388056452114402627062358321435245865120589461759368712304326858324875899212253431281127706115909244961061294308608315445663932103252415799171547719165386636074528189834928788650301939839801224725663481623197052559549163159020801959529465809294185437807147875457691165080317730564836092173359534099861741848683841293976110334902990818777161728343203969492295715576873194677068594880698178368370177401020780286502290621899798703157499733152215911134442437266997438079092553326483661270026817889028227176156160395968065221071608050389771624813545945756037168815555924727173948876744760451455056871421868068470264219812647588592761286765283540842098467293144201685618478180685653844485131173432098670051280561206824107603985159411588921148351807795224573071239370084089786511521134228337699395657959339234875952746778983075006874332129285615344450334820557510419662049091515556405292959689322135510995419675473193111558301497410819392354380311228575280828461839051458405534244915421572227535196072032836482579331805933709202996027396886984951712448005047326775427263516785874608289487619352986311895776507883379876892208818841047376611511594648280412984718516974335694166167714844943668198486527994499504541188441734694162096360068869824994753253822802319910267288512932110239753802832242238419716805888868405535046001410891733376799848260880956143801544652724226553608054458688121837780424841622218329643401531808732570556965424926041456662576254035184741689462816852331561640381972713399047857481572313709852462543038377612187670487753563388880519755174215116601032120960643134637124597279700886409166698613201547367823360799801861487643532754083766580479433134071671196338529772572820239428988176996551899374710796208337112611569173816372301390799179413351338936894533659146495639650556838422812142507741248270187174499570339328708388383609309005571957307463078893965173214761050554274349854960631487177109730687008540435191228963065594459855234694071326976469193466830885830695593250757762102526314908200696886510697651745188194393468110448540998609947721856371671386918998021270422823446192389797006846892781501078610361591618087558967379384519320822995672556625715489978750792543364462623417294896322945022995080269632940215940101023599033813173770150860864083726786789394440632814559952065719309906322356890459255426450750798431616048105043918425960715620217031904702022773025887223132501878494980264140782988496674196466448247815073104561096648667570476436422906512942187111495654913126496898622839790115033224112051354567080856322383007490352308105780572725920872828544487862477198053401312175221938869710807426074909917291770331297494280343982350477381204070446911931267365158437870424862570507099340190171689520477516534687711037656129025550704686162758366758080536738222845091056379651852722629531361377997398785177810258295223672020809598524663080349937894861094799949302435756021430192469750180262959676083248889288853590521808900834186650577988091663821956127539054135944405752122239949340339601139004143965159580250416229093671499739248435047447715957429468941381508751332588856521229490365412744060542364494735748207600748105571655764121871368222660128960999907232334738074412441088004775794303231574331854112872699098758863209384698549706711835086426468919745656779748106002852887740049092903584785302341908637405324799741264690427839881486179311321967833107000821148157143380526216828049142212566666490633101322761644624313460068027998392648629352716694491883282177812325644572583414952068145054053560283288599470031873190087501999826503872251227650877185068524048847503562271153493178923100511172873011541673556134906443353297846996132151171840637914245485355436741891675477515716767838868719245440494148198600484485351215860010550821376358251519350826571330098705080506146334888339860182625162299522412427737117886883910992851945254102279750892999758576807279768148849681386065649456345350685146411101610991311017323072462769992231988131317602198965363711573735271083768015171920619151292945012680767591723743895903646385069339531832835493222530085303358079298082338503348420047821937672816501024292124268874962813688216859005611430580405025483832107286209073580445402614166512501437122399935470752555974605584638340740218138312946557408655315283381912207945697801772205218401578943652127328287809190824679873535424436912873245894005947810356422513890387983061068666283817418955128336472060437972232866919693402592202785671463380179994763615218550848960388159846866102926185302624030367660513842442330596437711613906871808613206713783068446319318674671913672334251480440882262510941785639197821028206773042714299240045942598897204068499675700147606475333232092124193262285559560807042581861192154352296408797651385073064554874211653034246487306790260531095854375101641183929794122100442345310165878939181478101927861042869376252967961989157055200434558456738533396987156945557227812928467278643238440725099680396079235297134244427659454343196910347106128863638234945934018761080810841823358380024717912893521795566565114076271429275101031481173705695321173580967595023507520703427653354463876692615675641857858454741046396987492823729836454721013504246523366693961428008012115956664129016565691306324773029507229991483733818893887882941507186194150972794216667832632475956324895108109867901334495592424021389531484166250897617148309045927229831869839857954054695603026270146632365443441965265392244419248161585267395246930992874838307123791957286362583347043948943971336631970293663356900252627571843801912231573811774964706108743607282451462234185964816083894120937183375965968483832885066651207702984922773501105204770310771105345313448805933402655616556771529199897047564290297145109317416490007778152367666173002568575274966365520700766463871186660222068063105198756526214077488151758830707998797099501615863821827727538542138370921521728584212862665479519149130884821459238643828165851321590167321038301259351401995663818501161013833125287321379967287421848386437468281070720965920544932807502227688303812155459629102296672643143738744702569813896049139737449420701788653115024176653839972227677909771586179899107354368711880317394288009325144739424807302143973056740909530491032950207861526694163709838092543712820068113794228580475437653669832442422852574188498971732371864195552808748260563734588880602357851796319759243802050137564619692321752073481456663892476244918273548228231246068851613574576893190802913221061209970964115551340061129529118738012711645240936408512778753394730004048619485990759253325005375380256799273942298284988689553846725250565022467304570525954029982181861930180507815754535370160603887556180543412618495877147531042731569104522640604236811012764045586018981626471160386522700776132539338788933087218325762947404736181342567419888759853441713176591978759980070232063414330861728990968463640876345297270675168912590503705878008618212318660275502560542923272164862984514157448069151428455156604879843378329408788698572248162705699404761859716878942700156777131713824124405407143801098357939001610209750808758679045847306419673184424095315608089940459743706571665177341990632860625362681775514768689341184927418228922876096365215477439411728516732597550377032202897038501150832598256894747298863122252825144889604396871348293642604961981367525816252173923517787312976637642133608002474832957474650331603448269658899378513877816764094141255482641751319801291024915986481692613316657590119335407894000692582248254385597105168214512919742768621740142080297384585240668076664616774131931583428480168074424989045304510667998984119917933468432777733780986488228987311805206559948690589468589906731930770172047794685579854961027017576031664925265986225474094713323740980067936066080774318613353904718137741882111280294149626318972138574444099160043721580551771840720695736510171958948357817770790503300141181836977109327477321339160054030657565431675687908093110720680370368989230978111352190946444018725326594534776387632306570844619782406272290784071934431748022011610947340180077726011060886407035394525690573301608756997503944840725044747978822944214193951974571287983630173025457216483188152527155849766727831775225080312937856579339533465675666719518421478418681407340322979596511034760303475952418503901677585282439430950448785122670447306669554056856293595854356448105499844181706651381476026634498984978244388382206907020355164507678702478544304480997421710055831554030812277767403403480071994230135131617189076386063697606428741060370144759163679727583352081877636604537927393966787435107265892661088593193674913845773061067856633249821140197138066781783757362849440394390501653090864586799753336002423075166699664867322864495634062084715268897642809849541712434829125987070939719924092368879146563268704102908219989332172722838186765837628219070037020743303003040756339347513956967692184535921419142210858111058825789091956221065812898815714221904537956237537830758072226914862677458338242315489383890902927307794861513357187557064292431303405042287061862295961427485959629440152976004533235452521119580188371306383607852350175240293748583866207379527313400927163935300671461190526474173590520711477635673302327075805560240533944913250211584614861926665382505306211286919873695305208283590088198759826582303220277792238395291662603572508438154388288641748033584999790910006225305437575529234227116107132167294799010708150515369509545659256406104336747558951500295462436498366029322993317300650492361751883920605002686607400091616425451497132178772448925022849090647931666745618461747358686404721937592010011672193772350601039349387738279147367560934743118519871746985716251174978174802092674910598228047893798907570036681645716326747914768817794620928971345708910358123667350519921839552450890826971851746565340721052714106979838580764448818387001947460192861820276882644557119548648969185194748271676984663021910619418380105296161696514535492162574220537326478905792831286858802815731972082296565170909460412302734406561147076804678039591721752193943136318217741039668073299561755771130531584359502057247511415815513092908794224829805121718855858042481271249668998054131828995145956811756719752217908011632614040163466902042697793446718061451188828864109031394839710222053113676011292811381152314040551881869116916315635286884527388390475531668565644014439026737537521852264180386297708910501103662915364677766542993231975024555658686746690838170862678957485213491631949124198349498885470447740153507227888625677093511052666804827247848917425100632589172390156676547177631560763138772021374655534501754688312197604924896540264071653769937599061610636472181596312968699428502076071282443954799534370991853413464916570578777849637155689217386556467514417743410328673291035304576643235066002200715677566832960139021493774252025587830170267612061010911921262365170512091702500446110144241384094263835482585514134373181621824617523618913229065730610397893753177861306081848430366727206489814471797815209835382034332959307396818011611656698369859302566400209107393491282224569408575552482049689182360652762927994630889979964278486635031345893743359132689063891439493608503667773495020966516899786074916352758763341553887382158649779758045460151949430384188388433379901904762742533168278161604361245146336705091209513348994131416414069511064329454464289441009118820345547765323388113538348621900640068167347989007643793407826680849389686433000463133200490096075584139088199118322284072616587892803871678451074792019493906580226069141959850683953808057453712598455157691210666307858050828836918026436210515034582273702748573494899613592641470651409714619268025258424474309829427151100448635901796499261429505606500676395363290616540920684219719253796327200770720870959984657267422757250664493814260713308213768210276779217689523574176194594959766737360189732056865576311994573786259679704089015481250457303450388513756431889922932918905645476993513588475428914441931711820569255472878158574340967805002442111194750589216710368092767646048739534451823935561217420974175263359682899454871613773354117925581033666849693046295515688646744995790197289119512138119960141630936973488701317432546782938516766094540420177783187219446299165675500514083655095532793497963741820882388134665126295725104965003876251713706198052435200939297701825774432693041823035152844137237954712831400669473445611227528832391202039431969576186577649231359077217379742596751616114541227229017730596525616321027406687667635468314298719753293800969603813853785438055270070409360462801047623106623616099950164002444463467484658111125416096008170088920149491100576568003950736701779026284444563056164517517825126435829469929248950067293884730361264178426174300663574123399096424898112476161255125437839400820917719912744252736144466660437802118957612098058162136357055794369505203501149573188892484136548946093329286699096460545206513808851405063471348941733972001937144988215077061219112878441114768272594570677877126840771804439436647641503509948293837838960268772597047730111644068871359609773342378388069263882997183668074863061089999505227077100858719064989240693276153788590960845966021367961169477220291619482297043260096227124486056078181333511406637452835112441867466283838248130265255578835378698129028548136578981570194307008108500565167193677941424483541106410804508091600456571383526327485345959343892265577175211789966109188787710022595776111690732001791215516001478834453154597941764739359408225635627119857336099548884077721201155652772152052110205731005943655004798488959983644213493761426191872023346034018536317191024735932684979968051987098408627179005504268907171057402474812765731765583719564464446838198047809472714146609495382289653584448474695056100939488012093387088466802863636905435550152906671945784712746642968505879196459329796459282557120994079599064417905346822420514116543237143994764450345896595934817038103883603380937344312090485758769142504472046755586932174347978988454872705244595974832898336587926821428889838655240452502014381304428442636576064235640970537875596128044567840937656942560552848872147060053711385223269248053884868781879577006824034883696204444262822083357479161815415996003131119116543129306035871266958939456879029760420205348171283743194128109621096744616831357086700251224073442041880164731834835557571553856085548159288356646581908760542548058667100254986250206281397697067760786691710677166058169878913930576608985781753517275215580966847194844643437418249417088012499163889749712061262600544066276335393195926390947561296737862016884705173390711521528500146185860882309892524828646715701616296202052606725480050943103382605841808858396573588897439432946388579325267621758696986680356652055028210692147673705430893618404472241072999296594316364588536651526737059168161571458143170775398692425128392409625934634381420499170649358333834159496498318125592968273825624206231350345466377916943533805807360190985241911671341332635361545811690594671145198562088006563458508668473658867191045997300837157126071015156219711931580340761790863856064588237753954416144295280078264007537692875799435228820248913092614702301727373191070632900025267854944141701130104773695269409416910039618765011128428242576969033992567422587129607915461240110176352425846542751736212975769044668154474766303016356915165225968609906598965472687562932704735903883393177438813937533614842759430372961690200319885307856326572345826842541035382367325043181652131985214105868839416370087481384966270579604131808336246595469860360557801253919105498167832254210498031901526836940451554011746790314818285943751956861152344095770659471675361024328285084657911167058214644554376719166053190573080158186879241848417893337703549034014892177357367580017686799974259126882287520022799451076849944172709608153609574987823804242843853522090980421965638610711051146761231543202336451393049096165098266221774741658906617612838247293325104707632730176787797715143154065333258284990835223348801827208534329783799651782876941305510633134039962525532237213582895254020995954273271790480629267885583931165499270214970681461761018960591001044333189158826273560741293452305197899435418546733522820010171665885651868746217506927118935089239727267202923176102225067065374107806695480671614801240580722602350675686642674259386345793566540655191339350501319942761210076632905814941700785246086882335125485777053024819177025988994775047901672511466610087197209663660559079718496983473094278415986097160276929317046665603361272392563757612583299804604394328690307996214986974176296545419009814416552602219353347067030738985093969381616452793291447807210182954096460655981166062504208501630170877962995095993896344780049916890676875002218863359181898905705603382074806199560817845371801251612864222367399911363159854774362915737710024662786569756624863075799290185718686844904162765663665782259620948518280501610191696418222201940777870773245972916521078751449155016339626981710764967602845354859861017976535842616909392008434089716284415215296510745549959579285267395983995014431599457178127291398444162875933736847045723077295910264033183415593734794126081557144056844563274486461300736223076977332719551141259399376124083150973111497222292354087510835213254540993927304552568882278766026798464792955688798790581513524047646364393712012524518992779982537011579081355643253431517508508720528981948176976026907836251084444067378492474776273986304927822417040845421030656763960871041563821848176836527046714885816088089840642089784201181778340365121820648618957919336086930449554710868864482054949733345259218653724321140945261043502755966661031992773682199768011423162947623824019676418294585056238676292337640028512148530589360699622102484522159568176265141420349700294541585431111680003635251059146821186443852426162219988677565513315684793810775602814635367507266652535280874002771215626004732214783547843406668628525496041308823660110775310717021385366882298135068994631601352593235932501422547252208538475093053421349210543760834038412075049638877103757404180092252543903555984613501755276271323457326012346658378344390196437783086056438331896548806387386180469192863844162517907761692540651436939454625135452805011913558946387142064515025049187375628452590242151266607835346290790750155691401228495453154136518485065533949118899080636408294155421437961686367863400014782641227353994327957879171978287969130115086703797771510183798076138401806696527417569813526700415614657283566204298285129085860999919181156613267993060261086701912978878040848152138318342872945201471860558040141603739758597027019890900197045367344397621456692236192469852260335729316063695026780108896469498249924281080023346229288380247082712816532672157530789942233036221582117372913321225739630354792137150825437429969831851424432936232358724616429761910055323008173716715477352014033385979258074645160697835258868049408083520649041461933404450968501305601225907717039965670255517721222467290767146285851101218803377617986001391983135806035781575380273617705651357753031211237335665273229085941400561375384538949909773478100022023826270751827821327844024430044808058329037574151167150143939590794033526447386652047985284614383763751726209801554553204778262182346991390556942480138748881352378204577468536753456153688830579781771468681559532801400885095295224477132378392671744029737380140193805723659571553997586861108560016402688716514345839670973870859169086080722294401182834882729983549835697085494425891161960449568698289810723714105676219877459423582589774627221012154593916647453216697289572591723813405454730808083523547230238649668045312302029140771274409227344061142119062403602216856049642801619003861144921590759899521830128481590268769568186350777421750819304997989519354711211942115691658992073092159761925775692840655561516823733088138425515315002464988465971702692086089147293768328439801612037827491832673198677309213820018566824536678820864962401842904881723852785158944696132758317751979909901596744660965182234439173360774518698998687092352196062644062268931211051998030298732556395800891980893475211392770756832834709281588278152296610080863991023406385800077986800555227513731447390577505628775903365489508694137431148869743804164285644515202696526058625766974314587104368751244045797407498666387016599225543389265028873614426224494589013042793693439903117568543543037535769873592749720621378483662779783309906367935229128183353481733495762495017753397068671847814668704223602250124098857872804967345886996327191002299337256687067487527993810902485729697478953070137677165739158877533655991866804430826083732408888731216151914218188967432918093709556363303207756974087997714143027104225052019726908561146426697663156353513518651906723429929336973939537409167076347647661458650707642973869996367132588007704599509778794039374447582702302717653017752859485137888454824804045299944021988904241882280598832528251509865245676950835082866577282551749727578525164846858201711528273870231327761604806586510712838640897219750275958282739200582324861767477481352106546143518714769766051737543093458729128784302474220849674734176176807066227144299895504094128307800429899909257519351499827889028697580125234971751561816529841042329921873439335506676842150169629957452060134163765627165951792311912092015503046742410904795707218885491405674583313990310667472167072588843514535580355222068167650843304875341164498608663132918940132074284605313690639601474705749053378830922561743707192314828305718607658069311172032301583156505117381599157167426021304288636387215525824630521544413015957964969776707837525000383375756608775025644624312122930115057584750720557765720075976631468792426252360326479696284259555013796862934132839245824371600215080147301158455699018085980092853869483099827996361414603175500255452215213054304827985218693914826131767152164099767671650867889669328643674594383960711589522949557017944203077962929210470866309756740654291173719040710619871212660315311005033908377120653546518208896111973477889189877095983666829077530461659490659193295440900060112453701026310348663947984618886054301048884668114329167108941749200425118839854844019676451583182533330453671348381030980812831847832160966405888381431618648694596884067565201636523893219364693309297220466502772880835574738696880932281446495433640685974664817817421649155857839032695623182289051019072231525467229922443007015585092039042951610321419966306238796254827218358142786353721299426288748624091416849114954918312042105047657385615472589165378182933824045958818999003749717962509423330882110215656258127362590202843903490605059253918072541850303947266079065278455812537325030037107296569112184476346176176821124363047377543825980528717400489732786828490642201437481105370170669211256952991306788371677156245660034221976050498212909811567771808465326184014434368178558503677869247572145769843497844284060988561990098500409312448955319835534107088854621586890020742511570699366565972715873881914435804046501702205462882652924276608092374767282719062707253948622296637185065954699807745496444580848983727045664578918519866854302035841586241063857861124527253863409492619318451772101446653648197450909458800439302552731779124582384838839660037649557538814786443761174237656014293237993051606636103060654661098420881342565234542278201353869950595370146073834085188892711529411332124468431978455340659054207921439767004033056080299353833089863762762940973449254978506290042996421938326095382815125223860754073535982176424861018611387850724790838397164890563243538543030567896377566538596892317864681500694835112596300247981118662446179786447908063009608128399639956103664851876969680741403558518497016702733116416147276008586584347853646679118310576509820628185998436368153005667599413007914901650909579766794670365645639475821986925534140236156579495529315610621679399491089189827071655225413478259581395135877131657743814273632162261268229778366951221909342006876644525598992905326721711334695027960877919095804497898840520990755851610914171339707950776920288248045582678056606740251082738733114991358011737593764906325773421643568151097634923134324283037776070282070055444418090799673603771970945509727828518301551096549349924959978813437553622592094701969550261961868874703165516059875274320199866461851753461059470066476335794118152192455642408937666683391343676245071163278424356300465171136444202886589057460627939487463696112145694540373963166315604103561973229835735480087796406273063216993686392013225240275517650065214034927944101145692921913733117232688495625374477767479791344725249276886528621721662424046918597491497252081893417342609481286121715602008582982620937404303727766936179272819181039184903036702475344623452099591206374920280500710308831658705612010614535703888066629467098095226288429906557148546234084644442152528513948218945091559484639051329548026413309490069056353302361442415940776642814465224678653057542209493814717228129211195779405465315350376645171944298463963318740083780300056973444229263077683558484879340587496214270296333216249477479062363810623925919726869322328301587976321155702498025540143354647869608782828071580823507584399962926736744900374365474107804442146219712972168157243984549476499445698113588544043640027705793774231486236680224004362639862237566343171490597696207794613103503580188845792239919234141956405535235464945350269933321810535324076449973360138732484579048471472598076917650026760441441634606549079034170585188101258213770919970992263128145482636998540846927801942792034968488892585859396626036312318815334123887619863223637825397589537083354304936705781934344872985282731219003316213899586772737787777169705328569236155787493159547114540794394520269743753976565717829843188448969010213735072539367193040254834867818941249742222692168049634486152863721154213915933894185744172398810877882537143490396408237994391688043028236957518565695631375368202210878861771151484941552819786988466502904276394877322638946044556762285508829539809990454873247046799842527555657541862544023521630457664615453803729265786801851527945303538503388008831781062566366901704151990262747433451148774309920895038257417582704701744930914032964028945500856156747342015269278420928108571615048680142968519177255068033619349475312110245859738370425489242867234824140677008482364476089211191965611310276502074224771847113667418383946864611563432508964105373308579255165737715624880476860872495365331667579859935956733073971174726967611910498726566230297451435471628885902520887303408060593409702096767793591364338576608113160662742270038740796348221125576884464230657937795432836142931368989285653471835795946780847325704377510075209399021490194009073635297199639727993075248486633638128381502114589125708989732484893173445381429796865272689212043057193671326503761037682644985968814326490764234733882315412775110016331190856260201394611819570622867398999835650883825422633056080425778469598159480605670628876754605286847040261349018798561459336614262742224391665276657052083104060461595752691424160118024854589639879701764656940085160345223878115016704297915247791518726075930975041966559508121820342794998471110206741408840053412597259737395575559890299093044680287667776915042768521654406175571122556271402599264543479807737617107946426963529373406112044086455525670817812494577234806738508813540431303931049494955331458609055485364647054224648339613849097081058880938755601373825120335097895907945054151596894771432869358032452554569727047201262682713914943257356861763089061079470626723157366982624663520966401340458106703719073557527219930387458171040833997239977938706538143680366815144719580638613399592355862561380308417449326134589691992057504073957155701433241543636008754611874360864906154706296321284811774864613367737061366375706869599037650220806728736583002143314050146808166646353818233485783258844407772535885974207802729156208833482213065338875986493496185415180195562267624460038433026972634381719396467278844140878509087820269237367947971962746393173312545812680600018829282059853361268376961785956639222638002786459302530216076108421278269832522878472455763085344588269542654465871002463161413710784766745409318280255273269543080396984449622335269055219928640062777443013530214767964408154042746682411557955805963931410072363490855784943015679915074752303604170768235765395779972337691974056629243631750920852635870245769731907175187142676366405750254735859168782129240708109409540937367837471235949757870482080087989495112114359650916757414808147751250819243074734583392522524087702243782587045152365531826081473132288690603077085066496135432573921587660563176786803502708114983754444143422181125721526689472016684415040588160303976587976679259059374878973680173666550403213112282077786512832172517134430525587195285047936143127052413495708452873610728508698293967593558491763887257133782937821875940478357667427729942216418944997155426389882762423523107498471048616112021129849384169036753808083791261581781142391256767449265162245863854707590983987866827198125814568880865447502455979349535090265050995757849554997131926941295485260651601085413484099399717810329386967775083865797933478070591602788703909328737671512322455239522428239024181049706721203532042515034910240850342812143662803111561708168632845755248617616349573592070584050295950954997761803846468762169847451559676618742029800544044668736000660902679395391153079414374160278372561898458975324814483047675027181831053254193074934276109772970225395171819802317805393853775797779784685951639170652989945059232747053390885458065914020164721251872198362880743837146496116348540279893666233736526235880959925811957940771116642689982625742846146311616186745694084074261531476374690886955907704366339357794117239074271022302790399204677385351256010663343584173511124900486024549065333880686282763782998107733779273525655612757020049762935766890937565805802614905794198275750880810257196216752599932494620475798483871025665545085805682499929811875956666163495107529418194446360491665770923787112180738676150191156726768264946541649691854851992844269445766661166879580853271006624231952720227566798969795223444440469336781585669534095155480940172529655712852956072707381100671516202201249068400286019492153706503784563055161371336532712630581367514741162240546930938682286619464324097191399768015885835264150960875207814164721523530749672516800081639360923613853022794077847911544951875872484907717458434487296625571429841434894877521148128402850370558120205056054845082111274361693663727211837274171590436638641041929380076192415491575086654272916870332715726979384457364592362678131787948703127907443261494789778525515159806117534514111351789840164361091299731639842820550180112013297201894290458301972743476959261791060995942297529407298528847978700343702688942278553289598690867697445658144789306894844155201057037452193431004320698038682091353300393025308711529384958573705399279919105680202365614059007350993053008707225161008417391958980498901702330842873722698240356961986410642961016895252482026388206899929511086005782071716388244183180141913208031162188779968698596048864850433994105709629007129517652362695677279204854807049287222393637007399754262280668751493038396224614041697554436252535941698426164032211871068422744635577777995663746593250616298405717127456559415626085352936872156031474359041743946424480623507275615764644519215142158610943039636732065716053586105200713650739558708973329767230759291964217405258852398307125258103457553250524101321333187823767131329691893465710762851733386800612544833483754732288296082325005604218310254787994842173676928408632663524236774681674892639134464287658912956704406321147874981483322422247861233858099824583141104954946126209687872600491412460537955518287208381334720841893256617033021121870481609149292496181213687967266096953342125159720943902201368289202501234441543484069822633109043517478303914808677398780815217096147391017870279029931341080592574595009820501811888769663642050889002482133227027013832290930530583384220411615265597950162575646241252586744534085382059591030391045935046227514323733731555386706052676836777634025813695454906622085988931201341545190106571255599631193051892721742186030848553947250124405170276405688134764190145276939891894055340651277010911156879229006075221393941833133710168900542867119397518907224279727013004604530718910687845585072591774379987297803183660537202188116104565108217077435070681237746990787852693731124086052337490446733128706706816835427587689498147260447930791896960741787837625274627821703285034929887837266183470856837629920273487416650550633942140895020243215430127424781270590148386793641713904641709165100684871754462388001122561192073758919941392853160442875637127981029269701664032464190099863739801617940939388157212216866565713830529780952283354541030918590735511207592485541135701982614593508669711721724605779690129782441157972275896659891523189130602507072241117571439090707395459487102852045384725847725106154402047227154411207652227339255007881969119349738164627360009494513571384514854903267686022484014517641421828493923252165069128410745642357305341051155642542662333107388132350171346381372440778343179262144872631563064305017756302701709185131223203077300282430176491013984857833623112641653236645864839378234335388516771939790309116827542772792165880806879377979493656879907689751605449606069973425159861087299730617708675437019207535550305660199834535545635107911903541893729219012432707269510999944096252994614002093072201610946162270471677661768412766260986984833074294837294473989228231617198594491593661680605901854121976894313783792125369055369050286514709657820887556615140359752578460690213042763653713196030158322586938601124243810392160403251563575509486706006055451740202344617463469580853412470535219434228151267362029075873561504114804590942173710177058193687441493177493581345380147516429062139724114751657500930798088834511726011521526292599306712135217898972127832473308855603122648305723442368245668723274804682284808323211072322667566049460247941739011236647823318749973712651848924772528972155674372312915642589244819353883101739846106099520051159307347373205865295921746381273054977240556235811441323434181602387020467831242972154257946216726440580234125544228403393415532282531818706178924950186107931152533414101335761427259760072031003225371401678785868880587977050424310415486848908654061019245341313529392890709724644903482569306495988405114256296139255937343623453966281546034405731707960491427821128867024487013420471738076275179187964512100235025040555592240807666017781215427938419233021554974818993755136994798498757522019524790516728979278691183166630598754169727751921071928462243800336781051899139295277628305373052877624560326851944253865152221617016155212982229954496852492177505200565616964042350090506762367192243966602561776567412315231668553977959357872484631541300649163372052702162718760667711946666026684092530946829901865179163663474161622617641677389663755268531664005812939198732742390548157759340311164070686305919817131691191912764873551638339587890170940950147776121255623024862917619434343385576009926874866392276397909850828184780271420840038137075072458739158135515317812420351044209312298846963209096504888156226856584207680444890712849990282138759149970732399675522043879011295429339055816905490178826892953269924247986926446662551598306025706184976649652194942178396587644690769176858570919217971025458527771411729410322432341506568514950553450531118394845008091064965817422309424635894678113534244916356102790609599956405200248636602848424061091053131983734664838098823996362471595064579591418549121418555801590367798078253388023146931073752085442475534367752611649470564764332211319230074611569420975155960097781041732063751504977071762063616786860296707695631672628867031003971338448638272199033105190820977877504378614130891211133140257812047977418874752803612067439316135637892263321276230915522127044180407066428588522926268567312073292859710516632178480924719430062306843083643832177491703045667980212467981292617182294630364560727329796518449180804755262162617219672590555004078584372989155466096208102709475460582167858034012796657131704748338208291451159045019623971311548980677040527837788205220483239906102409582671965122948045900319899670120431943003573695779308462298964940719786457814769049718542443753994025412586407112888044573640930413951438704344721515563265643954841190206872171463987564696283351779885563083035846370935870752543360597233075177765880895225718165389259857218201699705579190932143087165543062642717777836765160005795325830180299620006818124883229418359354272581805799081873347997531710026955290386967811473032090935370435900649979933638598901950577978190092393616961969611111254681506301220636343957670199303209813775323402834179385543008011750543214237542023758275465807033805261029075978821296654232900616747757826185312231580234734423606051446783159441475462724487365128047902493722755106644856565286431062761034236756670335950891485208268489262028121274906807384761714232655739802107686615949644938213602664347533161947014840458889863266260348064065770650825280353383783776338503117589962195278655687905242633241499072526802166553115644660469088323638360003170986628155706322072898058909521203610253729452757813056693003399689988671585216663868086513261379283263593517613286220077601502066935838952512619080482380198664679985209908996247111027775455376106771163304202274619769089736853882541445351881593488413843380411114460836975523631442194922082007980265988495157214951310497466319990195419536597949244554716053363384678922470380012021335202986156725034531818169779086247376317929892182812541657603400283826284959695391217534629433759952410990444384610750188539431143866388920297977318696509546368534352160747038239334841169137930997434737257779118061069258360204232625891540975733163010000465535560594662251308501753495939208576792605992558981627774973814381619981580576891697366639326458861966279894410321636772834714108936293699504416966549990658369389886904991515293721990875641448842931568888160010835564356569676613558883651178148323482935790095622575352257276533892797836251810731064401546051322383275540393987200818013187946927407888926056556126070441589331634853171553800575874152416612349098543423701357138043208262263088749248616894447542150608469842564333274886160004116269691216065446232783931125447729350838823547411761463910647436832206623239096230883988746061380472574538137477286371477619642669996595407235270345720813162229503617143902870760623532680718523673696999724911223663205034107932040910410200861980013636105734183949244567359977695839848079270733231958434077497144321665670169389718896824791869559735953484562433335326444914816343299843267019827705385820867845488317696987250963692882790504826030747760207978664778508840213665646618356722821983916413393932481973986806451937607864846630085912910680450859099946868900683616422545935480768117653363429867119165031364813545275084427152844035676439100412297065409397515610106304621111595104274969363698250592599798066538804411271151997339418421925397089176409127940415638747310838978423278707374760335242240738909740454835894391927123572381784532921745196037583905295894663056878766938852868406911522150245518320637456769418584952098969661709197098841138243870415189295312082576390606433914250254557108861875275838849832886300982996470578180295043425179313807499932328022430866404870261349078028910610689829772984895166928839065479923572601165855576911652062274531221549874091702024404601714999054570297622673597825754233963359289149274509190582780206563558679101394077452088205211579033716146547395311772908663842418826091836350965196887845931274031641994738262989244513489539903441426588174030099088675958009840711274444385160162063192888148248628496073960539776077225661011149247955895884168589423071920034209376211330091098764589067412946103720158581970003282761664227208337869385107329827943268565540736385734988629724124425619188053883733766600623699838167047625049691563849956263803090303289247329106378093104363769049573908906977513607949783467855902138696997433160479766674219708579630399277415666963906232917290216216896362726714934119290835778825056691636524012945107437806879113062224536644034927171840820456836398403720040599211923118759541723675971129566706756074754907683609865414165985251479317226081474902232511669362946527755519396174456435084387388396877798899976521211970527091984381893920858309695679505584746135820077125886499637725973990124811455917377443853894815695290622328660517875996378639156929195161908415858978698689756484144061000553323095317242991213921139716676599976532948499515945687140608578683337937721916642666996033913534266210264248330060803298872264513543080541128249770440170459635926054328634587099950132382112980930165126978022505854572220765375439374185193019787880075496914941634181664758218416940703852724691976406625898699177211595372232063047825468434562998801232410085587200144055167863479873057992311533859569549894044910285840613951625609365160949997106963181630791552600358247225160633356454636591216810185037802669223223903524158861099861154855043729677235444109603577029032521795975900787990047296208195675458493441568303902334347720439550975993506960283518208936274265289228717080648774544017858796118600862472022352745852128979783917231263759405604341074031191745790987999883135646347811030872164921178269402786096144095917184722878379082715659740505986298787292915499210137433051692793903456642670772076522370165002273715197209600998009865024485648533700344884097995259771236843160511942004778780597465793950695076072281905510915397467254794668819765771790564626081521224384087588045248550000615167823988493565892134094899222402681449544333933325641042189404859005782420906135727448959916748759273884003712191529559097600069631498773748997708898611487988282790335214016845178436756767704556023398264832671919374307566942131115130927606959985800127045714896215677694813576791307341965434019759631654602450283555887229607418364083952791823226562689193159849504274588038603846829925021156715973009325022100619843985005715492613143828417548554233283071572714397052127213247143630720984354951245249883975072761420132086879728986218230134524452564906308568381898943568674040855994422781665096224170611655422259410645328298668811214312615408662554412195324391969413160552994839345397890669289195689162346089713454168013912029487298283136087921116834161409522371649646185278193909159820705950748020428715281717459916455304958818771644918777269174392772605823108178389450211287005830289812322553414677279575386545589976148532996024466884656484808347893503040061944398163256390579009033869286798192705178821116652981225648265361758635479849162608288937046904393112030718730588721952573065249182895778047080536304073765044802642242957479146102693686515497686349999158718432180790898327773921241643846037259602505006581539848284259676965468977744360042175295334918184843164278881208785801901230997912011955331601604135273757789637338907665730635389190220332395324920997086339989030717778365962206331627499527458254322322694089580027488736421162897206649382966758110826830108218276964520015497360049263768740692748719047129388591029814361327879857288103190298915585026791419232649805040548101368586676540113685147926937255970157323895022903677549354994151238016077481663767175870191931545894212518648737700777819939065953017676339852855206696227534611508505428080494832222153566229407286705083380693039486050399645459866567575531790689416763165831760916170373209889383130569481365620584501384893427613310810027270448544205248849477912326481987803660510637706831931018771780158314944943997527167036102201095764234217430276611632617462625485017780842073050813616758612383674336568068710203643632343984568483915221356935283659756506854606617136153502898812735246516502585973110369464152995820750552969321320145700128628654254078750009519137526048706692128153656885666769532036191643543692358718255450402727540830528951151136768727292151976005774911520512155759953384635001415536516287840433118037854970074535548445792010322893231656658749857808636278506549232691804423525194469422721436937395779561205580163755373211518151075164750056428417772290448676132308380145022150423492853032502248242643239237399174783105958799142251053100506250010801246133892804380300319225554775330794541744035401198669603659283848855164923995900197096582265720685131103097274807162603229387865645022801980618383291723085575901009440021439422006400658814349340368672898941116774818640246334262745695291508779244422902071303486962350437700787099967207500728647076179144472267005332762488294593726736409900682173611370862525812933650923347124194899160196574003951044101524541985242391539183254089449027151919819551311346682699657096007729239566583672170927569738009981634216825641776804561530996445698385173106726388650936321262311106238446128899444340463233904953738072729315291746116218083426976749910038480247681217928908027943451827697006323528753705393176069850935948641363029839453244795021571304195799732587729684832847423848804297768047491785426157130120132304913992422313528154800089970450595823435151379078584256211055337867939580197593438934187511769164584642760484868700197086944164109937931838171873299890888899102267954356253968312515893829800058591560910992991898287413431121715334815192167219035778216796648897711173723990508799903872956440476506371259210100439180952215521715837109535110095665902451923620304281074435367534884568048123299382954900332368120672989785577085869908120930791687134794671187068091353175057708373459245778305690386202576862245526642025485979784043427021563534694309695974342931075089165751832355738965256620029358847770669191691547203944242838026392583088398267212492838090307286319897567143375450104501334448820371990206008056506825843594658535240954042390502048606359859020665178750706943230398973928966516558192759831411084581236205500377116400617617522792817509889713729220928139079927340610701718719002913364028291593115451127816292012414026836026944060171115906142717045848869329591461638328031677335064067401442063770774573548502343075601463190810830927891993880245789492655491845823617698179187282746598287536135662279091713807785718084107731112180057880085001276484977241253779251328868272828409254507519050250408958075471461746122962228096491123426381885199508514013917491502045723988190265193725701600421252430427533414074931090044357528228914465022762072472930703863877419090132090733935470100337436910965176016604604215046842644839294908824350482069839317776102676361318612508977995558914150879602876608906491871003475340999350209170290150573854232653347159967526084822940999312915543029084856364423326430826870491496102390535449487188811711275355567602392454453970533509294491004859369631593895258817619023567848634528247772634880203047752544249341350372840113023146194931292717006338453925600591257653965663914482436015757818549243393484245103580735115424700548052223929838940528665592262712047925320175471853726558523542783145971843969247398246247982870663092912059829674030067919618893798115156146882416519840078527758456604282112435670427507218142395394823219440759394683946818433182259119225605004673424787084366260390317600721951466071073622287769810424929132923477783053962800466316738937260285415904118137491360316439610559537842685250832097419033788597950689555570042710452839014883090287780875889219973808816279511055627970029263935587105381502804077620992085577132769785686008417495412126515809871722294609739756391284063649693299513733162477200116696685932980386341983274126655983004241308596227944658835981834413506154233892707955952995039642054792975533836055753837312620763210587595209643601332123950538385141259413400061065607895936235199380024894807701977088663253765764907311072112538310191615249048298070605646697130258121900652871589799115948968138432040397910174783954886404028324448462804115993185538040940391586899534181450888691959459703156422294793011351010117377495589989978544522168603423272839743700778595950868764748082973831409126669177965842540602132301330498540176468743971590507781248744557005469325117588726224615387902786867517512352691129570912043263099414389309863576236437361746312811795504648278843415022965245531681014090610952782728706558200110603864788596452096338599869624078534771588189502408013518161100897169234888656546023896386689856690512395863885215955974562691010998549909296367337151469082180320319605976719837540293585084449273815210534774120348378503691068935575110782548035977092378696574346646499777276466038625829776822643817720057487619314966192829602106632482577164863293219438576422380058650184686626264444204773750701081200339228395209431057197893150521349912159717918771436416531420108040017913899394232403945851456426740513332800615756067321640657904546647490494903976234984367867057234006315034693836579687858194699214415258269334078087311409023043084774564404390819212580179866229704350203652113702600599632587479239579407177435439133349009117648165376443055574531888892260992450769487640399143476451141236027009257151409528365064149193055933789393559512947792152151764352509508915419676525379211304983951238300236956025990221139990344440019943683578796869071758602667770833453892444392185327717494682407914713820585016089314842740176393933589705490112203358114813598222249569105305739808383919473049560738614894149889542546059382098607533396393694034050259911630621360470645656909815590329110555500797012743327375704024955907669242003959068342527217295895915751256263508788910984743902316018518493783649304248164742718463584551782907397503307564286582850804550311571171719272841357552669957703591174433883136305590143159437405879097335413725124711690709255920656569856232678197558219131337968266436724605031267273490924092497197630830165715455658109554869264430675179100076057562091493569867408301091321759489030834204099147825267643487199421910563545249996744753758022136780876944720844202830492368370785587971635811175151328045916515530615461162887381634554666742358421259001776463162219722250241988167034255468596821670224027484874230613505091264345045272194423996643737605440700899777703385399716973555556857017203822387627817983907365941318039260969492618230477943951808184282138251405272461016674942869273802439866404981788831291749472428341424447133696015882917806364024172080847914991493710976122266953096531372146712555735144752887154033006724611180320613415707953221012354680390536391889884732345916839326177868166398837934145951339173846902539338768348962478558935375262011213952545322975035648498363144673127575419764703009794446164518799904585452733751034505718127396569197151998567831764529363669472385739290130719950091952730037456755530453930129223948610457948140321685560525056082790152500410160315762830285753130685721982464601411868036669792840997959461680659305242639704620175847575561735040324186441584314730132921377382359229088887990562439261753835709346217574374574523900063096575082660759189062069838832550605391416880369816432854805314615406678486985485793298262692311214347479530268407304545487101923193936918168064622014935398578507890095446766640139056290672669393543820382890224739658800165078212731804970811752429280490684409626853664470099458541286450045703781790068219053093880959615442968475051848434100765681156269121634077877078787526656137600364569014874877753763086790990777775726137489272660326126598960587000940255287573840642773116284945471264894318701269796915771291736946909437729141319444569478384131789002650483439062119511579383250512407209720012700122854920447836320245005643053266457687766594626086712755589753214085825036355764495293157185024164185238100845160118733743520962020858536060313092992704968533092831153092747826119315315553100227356090171991681111185777854597773613231766591289890774573791005863643389201225428402100273292106051215711094427894580646410893501714660542530649268419024102786853531632816972165113905077077523185211602719443924604822096372469459970014838950495317857152508620488077432611983498511679837395381736572439881617577732456820989503693408288227985304764356183991654706349460136990710088160567924699974946272588032284848213327660271261666888830698415224403786302493317590815259694994374968420353459033162600348321274501109522085313163406581610667004920488680119819017576999684524591875329328296976269892717185142732872285024594657795296581040679524242443865789094284441286070645036384620961115321274694775251299018750492983242911012343620357114333861573482967350681426169940604531093323603930655619156633088139547556213332972929973157420010362970756168302255309975507754941085784627882725223085318239173050990401858202146454257378552877741112974611852836899716125701386364632689895132728164381082042115246324249883372026314607571918882365424263871197641008882241056150803527796258802660933609730022269424906956505205322967252575119450053491133986962512256848010026324914120828649900191215417396097660357338560304287155213010920723343459951308348899284978147322085089874804499024396503051916231311273993188582124266895272335277693884100069217095144075973092262944748206595686332710029579873565492780714190912205127775720051928645233767623963466198247441317273127061519797017877498276508826713168943101630276393453589629369261290613059883160149624367959687041942361629282772508154719064622239923073931823122955028565523716016798408313241320927371725233982535798214597686541249018178710629105353223331528661756241176532842211823249025590311922573148486412231921723606343068938048926053034441212202351284732561976257267954301622081396001096295119883314824004561409554625029594514688923309935342962530549746022618087772274223834196500536654499034829980392945864197888347556685597124563254437808147428550211379324705726825351277510202959125897231559065175992559373111702393123797944287219818856418308956970783659100095680192452058705279763050484954858496405804786592664256683208489873375428299687414683471300000122457278041857857435420778988878552152406623687568789879992393211422208873964957501821572544094305353653140540173778040116428831290406469606059485766296802414699878165886149776112474756907785709691852151436713354649033481547298678068749956796280026026929828779828121088192603653759520828859965880780160953171262852025392577856040835951551413789942580332701019340953675552337441817146218615318627356413364422965422169307952207200899559376218826818398566250116303756309349630637928305890431616288367115748733290054709913626228278306437155886466435104863510848770269834891685017225085436227661538011106835769420353675648779175348753418931591060331759414799518629927204109384627505760463285539554324577704991152419249758830216870476958154817752221404241870694602097585704410260948782422257533126142908448001037435165108886537956540044600697938882498814901958537551153334523962916489414305843328586261164692008943845357274731736048181362635503827476784862471614649041254011278663689271060973961068264795432546399901239195301740169786865799483481003093897944001047666256647620639435851985405030012794833744732025205834682666890604844656546455368490306482287275517872509647438736748761166053960189580060733932987012598086222907346715863626463532332772349096552560647554772017885412406882797647102542290187005513182452216616932579216992377950349210552228753624198270130236524737670437422331110750244494471720265933868352454411785202700776620377740269632637795947117544509033690787384254224284992697400289612555493154560408676235669075449052791511922218960478829940940973026995085392993631054409209696131594878283827439612420922923224194720119843669211728654054516647922233957225759003102109155937513378984542295624517008314316425032128089040805291360092201911280084842857318848030148785293251873488138537428267498929477634732579134368367641739934279485555935874991756005272301746935158806638636147266475535848824839068800374912643823411238914619552553046754751532442290279391631467809747882831985065459434134520333127973005526187981066056147844012405149780096736507320295854844375369164138277154684205754598986890807051199273288726444705889204077972900158731003584094004027459203223451820431738463114396416728433461064858945383628013489014806033564411198264134757997138037659366170671834116758479092482153126681130966833796182205059151918274891489804170416339440448947896727297291826150361510742355871428708723198525229453379908608654709013541875757952671576708687326677882576743327165986019706637551968929951925908252840680914923661967337357353611036318386959661746689440392639773224436763276137545305258102442860579706305383363992349725100762604328594823030048916518350583991030098236372451753933678235832698374345614205909872556919810758938763881490890152370158322796650222342333024464547531254213093117285825281465760158795604013272372207090869742459161087636296585277815281171699438812243692203734553644701957438913339606329064815097540092729949627260555741576129861627064564564779934986787814903148295430842335670749318910460827975379157828721612834395143335808559731318140133780220744687912150506010994238005019770943963727664113628170512346660251979012902515948923490353289163076886583230575236336897684803173332184833861851342688204695385358410221608336592107123435228728157014971294057566120817303231891924424128791626700891804540913439145617219284057985580631351308418728730675995198928561270118631091996371577232544197625956020682181294502294181270357806307215376099836239376020600514848230789748137175214398790896111839754174773442762516208148341389280143360840859574422513626692228848496364369484299951995745969860253537831858945240940217923105008552078760825993649727157760585785688392754631299414868312535673743252091895128230717894406835698410843828953968075864566041890176953217763217202926261079859795663349736672227079575751249702605647322552326811454254200707555047713304604277927413638903616043998933626580426306985056789471254574055427494032565430173221227042990836535339514524644086743616569969064763983003765224395889662179919058629796196010586655766457448869379417062189266966667181365844567547843277466207733565817993396193152177454887327145566256494403046477881674794060710302451080815243263458426110749951837007129516992643077576707072101966012659760010651435227865222813544165629596464424448268531558377287344080693594474860126187753895491760254537439208071984986244717130580022615560061974234141394237162834043252240377657984312215479512209842312890523365354755131072568114031721148186508753594899648278804949268062420323732199168135214749305436662365200506783122832631765387187905004532717988028757247505609931009443122852988951317170091280571573259330168787984593570210586691782951642622740809650289144622381408392422964693323314822713055522123086178924152110625989381636409475654094648810454152744352234870509644066787978944347831261731339886501154971394102345278141892118934368561558757125177503952840482226728385899747508988605455045422570328499367316579184820020509702695972199922235241030527549921815576558313760598147177311142083353614201005343917922979743684424508903993362819011794497045049749554098752590149607244137198630863556389929511333104888134451559236261094040035427503730399621873367620250424215226088448742558549717542009676532909599432186432223131435811201491289932906527613870484529630238462811199756003356996646758102077409726425029109426635121438648831577682581398771656607761770687862911949398080328609587287943629193793371502568525715548427286387107293994170592509025753753241656967225054545660766797255489550869271569458248892431769997964039210393582540503792855449567582900309379442577241032866470407692991875139005873763080899863974063926657759715120941769785934730512430299631044418811546194435164816209535941005702663598139132512544080310189331602611445671211092921474432869995882384230992453473897338552044902812338397427512697038675210011203268855221319612775481951882484167014367052607010760463965545816643930545137068467135777002366228509638745650083971662547644072633067729264995448603949959286652231567105445421036617862674701214081298755475906685051226565886706393590289185245453244485398970119256751843286624752336255073559539572256747467807744349760628980933400819363729595156893228748045046660104723843944953571476195860005611689215138751673824489568735108847829314661199934478971455565968401190237554918005826035987814344081219716336845734999213851327818690676036740165381742607279220448712575336209628971694520168790755959278420171837593290354616645130974026407989471902653125354951760783619103173864353042139587007232033818150620080552799859279323970255459754710598632539100474198689108794025532331532043705150392501337359194729644165830507754091883943853301142563452380944277276235453109249388380246973909474504046657882065654064212752514172201782148398350707569600855544347710026582046387075399159795882316608111111046894498753807454089536643009963659802406448359739879756315223284030528321011507651519117553594219171315880054428452973927955424849975760970200140858268282631325591205179121599209242210282579340174165568574489461394455450975092671521590473832447157419354193132635763786148279632178974106124790554995169842088496489133142734318705015811964707366837433291203872529390399366122913693307263638721365505957856314107085060798016205907569062928417505101762749489273431095627898363322636024126849702307065406530197234626989349704477663105186284008827963763382867489937192242334570928505257151840916151993946833317248763932637160993651616307659244632979077805636322932815187095049259380037936278626085202993178446609400853241623725425862225979087089810181332937201324549712750413701921451476103366506123927584245289772172869279166200449659896814991349077391679579562098730653903801556929063159028506768255541446089344800620051365907149129319337853509634402984312763236337528724123701262377367083830561275474666849558233908889095310199432717901483276035073914502859715570702518445848845527340093443264668662584898356216598216290343670411107209117036796339428691679908662698627303624905024998021124107252277020010181629394714274056044830964798963858683237734402930813474764190556721901032585974013366555510265287432735007712564813174793931366523276142232949044571677575680209970548906826427922563654844225931221429440580448682432517974954701015437288324625365761353710421220015687612963577878159115602702812591970887198303936158018466239604556492031583880269099378685687141626607696001270555173052503107929969304063612536220498803088143425831721615230415803306148103449753901618781246306728397252009859100314201154984391750142903822257641073306699426516383406393087000406736700759309868984819300839453217354506940350130404377943308029260176522494273802345321660241503542903084074239676546791325663832920269670464988971939849897652445055049099225330168572359100902189056905515410807254363205688375657250655665177700982348252408529458888917384812885967229702409560552618897258343089293335192122798597261281737856271443662939371436636531101497581039819414923514087003410620150930453591321979175563997776347980614045255222979733215825156589720959860606706658537643465499400223600272405835104517586098093882157444678962082371184530224966330508871673535557506142957257721237140586503741476103549441267400216388581850081378629049577158538111878303419989905095323700417412179473305307999544942732417020330341576463519001802891372003999301927371409636186618703237650316807292964203210609297998414570538651142463439319477378953616799914138013068957986368666860938437850371161611213400194555468015814772723003136093306008572646760090200187967000492428761377443179879560870218913037793925122583171241204213235871032361153129172719244525296579177126790843027461934330025607235017431297961151448849900633694591156352221198923513668811653418513560058143165398731377859162436510379161469520270134166537999277008191083038967803945886847544253351996710787037937905702778687001110466354299545272202417696752671263597947039448051491054871830993114078858928339044071907082474516225176448797517664410505535650175343823122407407431595260225094906064266919073222610212309527636958846486620576679224236006256497703488897058672659529531184860532084487618208109589973681200777480810855609864054479207927974133477340908969040225748306906527653751956483344284256990193021299764843212290969558697435105492915105188881335912675801739085364944485021796395253287398895233981210008007336875809740667244548005663368162362076960669648380269071959462528879666447620883810546021326633920496525754762118366900502501865769657886472979520461534006757547819746893736798790586641382218664050007124777792880397833791941491770219431574022875896104468901631031673049424699490633470677662009145143325247756483905703364712250109466902548379055060183001078290466981040565155077533698512510710685650778692116596761986380400910199543750880369784173371451654907753846201071087144335720840761744499745255359098078131363641250957835655596924924144386697969336207137221782842893495946299770044750067221648136215424418563580869319101822996139648777809045343084678308798294053214294398957976028530031193026395005123456599945593239099619877245352549800641283845657832407602997103251823097565984636781726786000851137689094691671018666296987746048249611305004794184327998571633571360744191497393187103762647195813751323582380210011521678155116708879882200120148832031189462277979018942611359093367293876190249752616871243206019844455313264915406698373498251797233075457035698771937565004950791048723155336232802551821357757215847979237086175274393793226044039281387010696555190247775956821499745513039686316148530955751676869705792724202762026294594109188170556184111739807212100549255057647996545563679813843343636924380229851233701549674128854735314182234949279744765034591381635918068124930096052359491134633169818611032089890251262991854996355032456925712851717504173046414824793297708964435488383605309458942931511502981733435355100606028892405405396769090136879515333135714856321001915686803873468299805693865295253757595548532960575934394795377856324464721557860031043671710878261001292012689561267728330479224681060896337003731900677243071600284350207785210866889634800259973183282742332123279006061424711206762090308058082053335972065498164965927103350442762926639837457113538965162145514153212399999911052999924271637476108445764450896262321596721196327178595811013474030595534398551262609218078105854128560722303677688998327854601483895098979349631948475081412872307820541273171720422859162352103036478218833225684461732473739936784397223841153401380225771383787338143316833225772849629420697048428423065245776981136459575622778091201880336855413402697994995864590881460965316547191387271819420776011876816838705020820581656639407600772175782986423622715517484384818930069120432190060287465450870342504496937510822787789685913081112977818184126233539050325867956647694488963598097893858319863097958700350785162521081064357080125611314930649289379852446302782336107668552735051560054252344957011286910547969911901681294423854139002057850216348146992111392890688313519249688391586167401722515920353737331531453688654938539801318990327285812991469827275321658933081457819619132711407053091891198192971241941243144089612636264392916982907666638721747014921837001394265437736361853315839661010618535864357241185503464281386492129461011570814171216919903536359301326655222293557912389839673722245988233118088316013698057391712511691809791311464132098727590414345442440828633887700465118638596307266871660070388040357486720003576263261619369275487801709513632391031063535097850562376994997955919472271026650206266802108536958370617930222804496993142089121955775622310736294897680107353604511753846898475811449250986121143394798186525053819229525866508457217085011155649358799057222885356758517143903875404376300752611776165581852409937115018867907398101708477877715740030325897605868445336924615454490281573498345458451187072546219853528973075634937805840068557878183480040851418773415022854110842347353195104031656552870313209641196158425407928264250216262531370636121485650230630787523282808742629020919409580827745997732245381448235333281733344699059659651880868951440316482280316736236777539645846432990738069727337757871769289785561815805234400229384291438549528399667231453900315499385540579943104117413334445645335790161867261650589925548489588758353280660160606526063971397744877062529667223979026877117537621690437812422273502065122731763022826905092512804890620893713905720836955213546751498826712089729234438196880178924401500404743086230444639971580787190899045936183587475436242698259797560820143977960115147286778156380381712422800795130069955925239683818429202867031471428289848762293856912422296401136774496482477016125248140575336617603032410580112317301517856110422106129171915477987938699171755635980422901459679092187714055557191096182869013535183411733722734131214862102843564046355073309216806931065875422758061161378891479623341693491184564161520456804129399472103222900032779362110734577672298275435651365820971952469726322113168864985495109038091368192586196826451553413360718975288094399094021181972352042517332367518586217756528530451554650001964127710613570855153847095988838215269826851393341270602988580641165929630937924769897686584332812612587020404285926923293392855259619546670282479602931429857279758985276122866150776171042524116840155565899840070087989423775900902051782902317565887741240306210760525732075511531434344733864137605634824347794952227465587664058011246060713483618347284552078748592029184595267148578494086784031930206672393342489516841344858767208803080078657733652439501921487169281401452852021713303284703076135534055291139000758995950152221440191637432620650947568428763781346271086076744386834360155288160583728459051317398594382365687032160612754245638845254669363717111287464045867881554906726281278763731998824051593055888214622913608690022636749155677451270731533125917419480988692425842363126932687175761338854392003055439967212496989478060063678027851477604270226926878171366455138496537065662204006291184311249955216370632479911946295249183471727996642712613761284834193212098757341033855247298761516213464546543975914007569023043757322394417773066268880006813760882133333597713827407779587304823130591781644839099188984431454137647957880491884469119496344129241287770847018976603197719502839402085215435297158777940429136112762741602066117841358551500687064371672606349099043833806466675831425972123632965992050511628702172467844139212924103056080302907908480404935413986661209666955024566797136450920813468928599518608131063365473553116566687172841375762303832569327734400493091578758619656352217459047974114347151938635008068804813535926107926836334157026392032760082543853411001466096891824769442488121224513469494612353092423951952397071408551269031996406426349934678443827581712471355690506861077091469912471095214579839157858370316072325640254973517979183008766819091381652674848082266069251508754675191747573534073458750434111543244105469196578644532601198270603226842548015470462594601284859877896895108243001956831249888119131742683328956190638943434857182249576323896466631195291569407618897561729509310213129965394943800792507422989099883342546584937767692942491887447344515669046518859762245835739208108093301209729165362576186129061768313289095329725748564757304395990066617712410902382686552401032266890269805076047259043264701270217586024670169629011893154578201377340975237491839812019735400277423698547455139709019105845142157328047673934172603171479984325337538693233026260872443808028891160302740752269639020043504840622272971811702448576806227871646678288688123604500552976954461096020571548585391222663053198851567572872462504418640541650376579276245883511719727935628289986597790187383010068936557847079785290426692768588152160075374962206954215428291878614230240256162635122335635877684191569309041738879862185009042232316325811469242663850735801689764725076230503995378661378144384632219161474476501164236450063197761596484654757101573316573998730798005307123350199577072074132382177129545744998130291082327538211054302714675905304537584312141712620728349390098493977996520796362033128663729820384953201657449959956490773337565687165913827471198868227648869558004840622243623513108130842395078704654909994554781231509883712030915443378204139934453037131062709419126199507956777626889891410824667219788161782944472873509118781417489199705544978979443037362420324188557418875596586992860443094881850444544488007818714582092597446359994214278285230584313936228943686817242545028594984991205024683989777233735978694125976173639850488566572530606206576041059211378044099662785510882487040664385052528764991850443594979669796406814232610390969338454140196394707529044123979951743426304397598175469958577600518433693735497519694719339615641421153563347711843287229092289731127015506142682460171860714635269089885628095070762918175484126489267711849670266989708388719601903857049492530310477083888123794669383794154464828439389277343430488853131856668707835655860578415338564434669711002248882291799351810201193352712900224455435516966646644130505664982562885443751398575455897570462403849722955061923347963122526740429044315693434220794413289866356853715198162310165339138024852963540473014981510321029505976826607955425684885275218429409945760291283823195303330710373389092201077157042270243961450458568054150960993833438767221712844661153924162416915952427943267402554486547681921296738906015055778444106711389648311284407463092439364704806924552539773317356268432299098155746696090530216065229039612683826015805176508865784217124518018208501515191594702351299135616222155742208689498985381286434504599484359783861975464469364331620701367639627653003366237394637223047827210680741563378659045523075199680813997772929957874188869896632155080946203012202418222026722623898469145122124915856567141394455391711775617037855696352331257177530090785962513301921536439918021008360211854362752943893129589198729052567670891287648177471031437981330063611860651480767524400409001327995553744306998966823447918054919152623314853179746364671453916788274138700990199073312947666409760048357307388143230300114700382420080395594577080348229928992003967593688209501186427670995355702487521006611831393050044220652432206856176792996705123952903921457018084913401376520677015411199525847339877733164429756270656039816348711432878566539001257183377700221540154479326283769156458981118537008206513560990432322322890123813765546380445758897843899319392974452159058635743766250138854143775583280876469430155556056072562894564947027167390415569530289800803405063686383622722045559986405351084362542688638142630294862283897488689114193844112689624301037014692163138656621710260451484125663674651271681079843813217962680800105452989288123739631531405504015101660427316177865575728663487745802618595576708819309884897565911479460029115418981371942269256378729314585622012739521076474078616459787615153244456849062968154443605881113503133207338197239936425314143198506691698098325346460427582431334845036070878735956059554078876088505060196470050376887650033244470636411610619951296339314005091414513589647756824905776279820786626264203430821759697782402340563184595827871075311643027986804082181793327116324073605734952890793835582487933358702289824558796741962723755744487821237818876354098777535719534911350267424187086490578045931543318689118376834041351238368511339411189579903712439868329917663421948415803451476762550838733683477337055596611890502055598911269380685149508799315795067522200783314493466982392933196717637206361665894761473041820148148342795206196743904622981627813346912090906086641745146181285810451953380170718437225148359963725916778777410029378416096971982612298218753957270994469747584434674873165362677410816299680902310357417634110052331696856686719323496238856975089072954586991380997099010266596965379922499688705998387441501377048793738222312412554560737197828223889417834602797801508336711292617946630061590493243716147783742897908133564246143474676533857801971433537575788603037560061982265709678762636748224077842287264503742036609701041126703906925387012042968944030469975151325356428753917695562960672023489146821361799668606954407416529996503301169410027268113082013530051624111923808432184972069164364399095701630770267826659668604787756171868763504128659273712992726769849340174906417618476938049734239939648616461979729390303686539618215070319718940680043145962301475502227507003737123701732661916332462770988068847601451380995351727364807412832264952926684732859416573075788978034732744209662761201860954194297412356032234503503539864381824541185505355649103691272885242369482257502390876164188639998469250391773313024856246428276461526024985088554393630648920366984803168821126081567310924488252488197192313456563385186405408988550405290306605999837522998932631282424532287638436299488140194973712417964136619426616963204164595425020957391723303207285976837632039276122151967378263694480325990249221000948401881780020846682123656783777948356872191131084668658417160269849077083624769210178104015830643039313811282436048802691267141792740645497101179048014948802901946194392489604789784639073883642470658810376817325004489918199688316705516540244889568652564032076613828411609241621099232190137471061055960184232634359656742153931038058404418857126088354378454634359938408544362646942010062621125833043914846874610394362246200363561096522482509210617412621507325042057889110489602142707715818925383383101474005860688413016908314852792293201715964491466090536233338831652996853608928000552254791885073785520177177119523044623009557758941980014047690838048118305823083966017956859462642441419600538051219945539356874859313021507514936456848182343350495215764554747052551366999198743148337198379586263379261442907060837005651486597620493279123281005086941254896207425368919449291228759858921039160564760963972414099674956027917501915752631076391254501118171721877278654446769881015483152679896022179802159145073749325818481097512315807467910341286334666576363029802803449290013649164492668092505183027353403385566955319230013170427648540344164504302765948166936055893707207941334703284874234617961233843459366450856436503324906698389186276525305463839580518698908887481845381376410133279195161120407697595374608947737070767837634979109534429767228378468760304706422598499159675793670491848047322592240289426910029975110591513472088129156205718703796725611773090096081613711727259717204973028527919936032151616923822036696888720135039694228837173968133865628794059817526724304940402473363699474248827799831998442603248799691346589754630177874074722795325804166016382123587464483298618575619852569308751754527413017730141993392520547718268643936928380875050260023740713302541712439048037626734556827311407522063791764704401862932325369921625222927021807400170130839513608990108816926701988272680713865233238871467427488785599052992791527320235511684407296230500706069954414753640852495283248240412161545966289223789889705773513706148975708789681852257649176264674368403763058905962626139340652088971296963732675881412832626565863033045315316075465248594661678993169999938782737859100040168809324556293497954960054552911150090084526670368721737195979966685329194301142728249210240629359348598857661389572260499926590208889094888213898071476368332667623999612539165041431404062586811522245286923744842948138436746355372147060549648628017608187069116777116285123209025971972734854502214265830853626320903067967170079271211416038871413327695296462402024287452727634825865790551450181038971153178740290003800438070010077315165499172251170334813038240991379613913030880278342119103676856073495333487481564272176782208247911227068803791703497568760679285660412588517734562062012342623163642072048061313331481670846744898618600442375324624008127280938276077531225567994407584020646326562413326631001570751713754486982227659944872702714325272998978707062605404391091240315628734734018994990555331727905959344284884297804677641004131915291139753502801485367124566060058587389582950562798229999958638560999043302321810492599936415809225603046783015182295540208898827523558127299702724699848086515947041537692919143329954940280294217804771101858812669003058794630496218514522355925560959154231237623019825287406550995547248960437575234097824705975834636341360778909848697972077931660709899542021518041040568844023973350490901331582413894682467300132526058484213683733084666958449682811131985150289621630910314659594611511630285162623707691308652108264892832994449117730643609832159884659781525031330681980095258789768743314012288504931739945521250145636027912551228978560437721186768087862620218686468528552864646603318962870265662515863047986859412078715202397993929394480934243620899946409652151076050798636689330541463270557780344025449683625854891464343065121882154224792291963846340494833290348096501014041882044456467272114711575060342323149693144277783131296283120005446059704897183986794526898265302244972845722966395550109673850053100261039309920122997903523668770254672190571335771883173468459563831199909741425133559385103953200375701172669306371840452221759543504906839156646891818898939659541482779997609367938336489167378124661159758469572963955444539629752854152590614442538284520880010532752454920826792011749847102116146105604305331769634399580922668642759305142795504806182033106643367609972164707245679998502841447775690836672409107598826144595966451016142081475235945099586509347155800604573998741417781717476289649369151966625270665859625949594956047253455713797664913106568846447248168091814879102893984231284853386719709931806555065401836582969476628444356930320256658741866217657268441511015741970547362568956310789412451894354736594523905929824033831240034374602532976542756117091855793377358092603792785232163047436389067205057621297428311529581161049117429244585700231250694906787512978241821256551730655136708531741655202635111021960613874711119737138077561963063264656193639165823907991533173492225963678047990895406673326905414875526137930449857079121953338639790216796111841673753726338775908104613671659999491718143090434063556052886909248326479913848056284827484419800934614572689748483649122379546971290384722545828812117403706067949792358664781036542351479180781995042069704599585193794797149176726577187145397643934694843097591191042847567453879222068032665284668523729182205054141223134170725634655208165658364171582409014333395080185590706539374964053253880331606385140315670286519121564869973553866598251280136263369205051379193043120493513877864385529257727069731842322363437748596151045652669880565710557015981028536769829851924389840079744478605307788397588695456689384431319617854149866502469651548681200902898389546548141498772584815566375848736711308822115275207907715765976902758989477669326344371156204530854382730305886387197271882039196014054451896630604266202853525866796201109266161680460829211326608611895300716045414422304772693988595802676581108595714777927707201036511824828663046567747745172377264897740752602306259604922540811350073957250031053382083051743915579736827860494887788018262500561657014403460436955172858527897648132707585780637375930912062372889223231479678293618132037088954160740832993492991651515082867659056085928456893045529590221095772818206474321726046537650492034546399959683444942533714590271359334462109032042350637693851131717924057897790578934619533808458865057198330865435309554889038565912440307423751552266663783978084097873714740749191887172173987285861909156284516693702593895307874203798314331249424801670955310247869205330649240658232511052641515154035070906976719829806367465534362346835220540816383607294125701008024822906133924565214394191817980119189418083008992518937655114755928809348446023746767378924195207378157929738400079238182922568612030579677778572867938113111743272919311539199087856168127954292490439709731388969279266189489152331301167005489616962228205765024174448079340159435753245526363944748902166811316183428512653623798054818786428494799146647611639413808570281248075866526361333849210794568503941733398626015421365545794632640763868283170833365797535479685393710048573893302147273246723592838196332005880633273257384961360228542099228670518522769375412588097231636515464068502581111198887879269341337343502430486130703014608158377575466951349409944086122361799623009366883312761976754016496763140584112046303599903757765317290088318687801853759372303863794233874894194218977565106944818452363303331959812536582060848413494371294150223779552005887505136631154623222229552076641248033851040253423376654007399792174159676913469377094874504586573019666556126542809122209528865250210025518525302105970659655682553602608569863756611453265761905283803926802153237479614003295803305579970167699526379935168775768350932354590081846866143257925578489983484277830403383705231391993430713069524580555754993359532782095484693530308538599435559776970346395075524956948282393632680428117236739112471808753496718450208794454950461542374145082154160214305771126734109910899226947951709999406512834290528815641286302726187719074272453142808748609174646358815972773518557877028696564814500806389251283039497069724096596427863760225712510257648465300721038239230359938890724271345866447601123515485003271625190011204165210516603337746973633445752068647427373095160388661973223445753282244403057411611165324533450910731293464095562321564199714257792888765882380314951300656781173761130829230772153995457033606090024853335832983791393780384352691466151810048681886495895534534617027771564731832644032306281039988656243431502733631295222458627702790811697094402371914809878301075768408393148559734035055193940061782259007276823154288077036215663313094370800697744638573546695492788146157820502542706385831859208376053511339918383216586061905746210769056067768837500961103371204627142239102702553554622285149792115864137007265879771739562203620973593458730890219784882126482563813785621002968461335441794941156244467235309501228170671702551814855055965970188171159741286800314555645974383029220002984241684056917106375243240316413917343900117111973550203984878915709820569633100275875867711999938680685199385280342396717183467169180168630432878898520772173590456655967527835742385243870266556650399517292384701930613520783152054930655799348973035997027637973755891422562540988821504005585976836619261665436399862120869026211606796233150776466195282110395214591597700013311033523757971091315552717653929462906453453410550819445832228431644380504628809146417766124789619504625947554618553742535490840679862656257884071437634845778048776894316496614437813550036603431971792357149805717374151137167385690364038046839120464517125321241262494847060180535139165529382839732519192656485294262934759731306656578265756918448648969793387996873844738051616889709391225349503230955781587233135243621566354744120191510784825008965333414335608248166926251912022642320992085626115092392015816106628094475390166111747310025011618915718406274322899065534541559074829949507064011454520372002769356492601172063289740688480157000800348964201595771305882438226918008856237804408399039000002096246974677043592122042167170850363976977235828608838396084051129233887156721631071512441232686326942691676619489019151735927016116152028286935580932542610498285008802432353867101241067880919474598366888995475774882490403325878819320850759864561547887153589075608280057760825182699889289289822747887316641580621023306806685199569315419965783971853484525332552260246529341193438628162212453021077862664694110082134548242213987353850399384884751391856021822629950559194222424777260717140654225133376762505025845149999281745449755463044664740560659058360106474124307707379118039692347289875361934240173328929093851906971580210245939224349560894688153026618702801887912074230353018257934800185636800774437718067101095731778343345859983600201123507166642633158875265316094026914487418556853237954206388529704033799431777907920914139594182515782026864310079889399810898943195200053437471119585977014626063164475412029609999423594651469303977341053847700715786951313370900091380640643100579315017953470694210073707254348091017950226486363340104862222745910902413404573365976642535873524331264118224966585138336342667310231678129276018535397917655454703781932674670093730174721076375750974130207747412755843337949547793951173481949601727544198652339464910812018650190213720058476153917915421470419553945770729592061309692909730246590971163998156745917940320704551575385698719564443151774018648799579292600946810740507285574849482827548335993222994559121750312421686838295599402514155300547424456631902588072530964503599293527534025306628593162187207956206839189512282352837525397940976740452352076493478360897079479157202728300680901440843389941954259869579037745202412348154621131396723905672451632341534000636336944244917660430786841953863284242485428651999432115145107156307359377669520715511923491944253231234892879181232107306986100999022425141223639540609145500232333057622667211426929123800132238149805013764549790590912262060821426211151158608889102626409323742440001002120690978109949547247196406609181636237575516529567222181191245470742769588525422413485216658277806560844480998888964302248850224261895725210656180335288084655993099520598653709451088244468079953478663247772104824892270003023315748493912135803549284445150045199524638661935529307707647980798868950886129556566837949109771636320720230439487676383017535881926097455441095152067788358754190252363823311903937630933121977914968404159154370973342351454400936246491315966304193009032682021694493218369530812722956014493355607963105474327498141595069161869142554674100439216613946290325371355398824583005044614660417330563624549798893145930909190486418478708467028283410430160966285131684147714514823118408470683237123515794624745684388722310831255027201411993573879425612875427867268262083993012504141208763185220308978276600269618634010672194497529733192767885389928549844336434161654386394561957754976099801084186066695024769710007236545118564855734748934520704112733865087648902571177391561820259281758714823552060774425438854198292151580858776637972459154020137232096568086802153091326610560647721927143185743853638574367997930858324987271272480675576797358622990571499750160058819454966510217312307725952521511823955987123716471038088222876967148924188787804512586827467829727802548665783372362040169072999382744746578144114477681364054614331931958650798930172221997351900573722526960144069896161226870439575999136641401082245243603586387839579602476837797304676914994551223781665863855520869191566773324426313599450510006394260386530873008921818473807099460362177346954898577829454130625125875041215801884673190330797480888314785747585106004339978311428144033253088754833307555790102781330720563785201328419360337631050426898020852762666438497186830142194646142030517646318931055233532394113641116087665032425446096081223917531080131231436549190103854337178334566842355357840535993025678008625268279413729419076747609424958221625612338732178405158344524091669882249818242896357550519451856155953240465735731509843068967425811736557358586635341648422864797176883909627804457158435682044548624815695838561517610776980664287001288663349107684196006479688155629375853077301279371481957700432727672281381114179190840467350790854695026400714499482091424695426109618275112010689144965821955460622120425974040293983935545892954632388615681468643386833115118898575035178355180453509650785975814134369861733952415489309698521266577007868782291304227810172954727640554718543966959350100671440737676404120115692274885929714141298684329215429878154205766199907710990196436950702348271005497686278811685846066240685351809368314981422102289534522698638102826287012337251121456376727969663191122687490992068843669568410605801359808726400839911342453043317932647754513038847880383157755048129781409858832451559784606065515609803923790132557880402655356306333439632929078756229994834348287425661956388075283503945755325676192947128680641358299112613019187457632273239388841575367009531835226390047898796465810009181701406337138723365386561027375832100454104179316781691102253775996710260461267747079192366913295896462481955918216746561295401379168311985118579580799949400740139548178535582471754913614505341840296394710284495252217835092195907282125880814042050788117112442576532851001100519429792173384312299644321968167440469349017433238568270735098105567625526434277919015221090111230920305785857473174052850377882114848854401467018139633924769278985928596706587514737235555479477927242930969074788056260260089170139450682000383939683812435845543459729006351650247347642276841736756442283584206312534021443786482717517575581320539632124452147355273469765799465962498928009893239525630441949759474074048145438081827982522008096774298873864702914405605239833217421835425515953942717757290298959790845578693857506769847177735182287555603593327794020212611756318456157474723677339495790929681828941254929237763964425097921520599862820034803058411679324687444411975973525933375177445601057868837080815006121046263112948273542907530471287098838079160416370730563737575172295698701300144464393130699702614437948309849091584847976348505942202214503074063969322647956236098637080644425985612532444984619196354115161832517610297636441841816017166200869563829759837774822553961587423414739613863114289228889431450117788326890522847699711316349462867527441415009659477347890985123249347192946155765406858614104837458819406769176185454219119489482625047038895500969964462509363982728464714766971435434409956774183271251457637525384116123528259425390609147646469275116438905320701581515508471815912041545386756420625941357894330158371854947519033140970287608424161461690299696387043890212385557549362177033194603665553478555063543312346427851344104077506313620880630467430355531286071168643117442775982199734498515475764523783015483460903524917403765191943900844375235897440672392956566782977629732765293328504224484474451202155968566850208396086600669773653543952393609862873352773873160469853728418840003112236641785342705121914252905543068741557063092166748941699919793111290118138628609889320608648650244605999944778680070477298430060772907490117309497429117857079256712442351315503670657234679038877360947359398176924257302458977199044657402445356760955342028482718103733591620461860773028261950192305853898231914216512704828237697760857461436161068344764320895361125954554747694784606679513316920224027094237011411369924720446064584129532901809613439906552614754102026175089629881079904949276552457370949533881575645427378465211575872425380324531222164987381162358479165447077919789204044214806132766484730532012788383103745961174491655300015808463091814193498692957583781446249107301931541553039550376440741306215981965377511564334871967306462867193788638992014747096506768133171884916006373966899393535666490710883871685051131611842859441755963471439561117953310793833190459111981874436117585581330824701814762454713322677134991952248238390595630556969898681774006722629061946376087996357684207906092319912634895712573258069541442924821564733170577353263150514903971122765736546154091478936205039342252629913811131554218540771174024465409975716691285901492795853462163268032483593351529559117618888612180550767961081337855489317966181888230136431575646885332200858298130691909925793327682880091398104913174572549514531409451835641601678599222788987078857267789369678329180529442906422279959156203968793750380381558597991845007890543502152664301191547198985324740350515572656464960081238326731203046433903351702197514630768419879920273399490607577841233895427501189276330060690443015411567716543952417097338045823070463170591546439427852442090538075649725139231225915924651503946251906014844672986287939816584132312509960534844853175570416412994806926367190541275249698162475198251756832053581029577440771915251105691802702961312223184965821595554048960619391940393233433029096190440226480143080492881001236940495026848081506868340908192524067377889744285208601639277314377056640243577753198488561199944972882801303712237306535970476636556451148039584200274224216152588402511799439998033964029058508574661289156484310740470264439322746245327790997477113904727303204428784538365077804525008022514672026481237621696693372970088858970863700192985924010845147694209130593745970098189422559403720445071927491989512489651058880912122247589854265860276368493124196504970451040806514751468181672931010699766196221118513325870903127474665196990984155704660956492847391471623464449098497392030398771513547179056066102400739951291928929841907554676242782421475689129380460482111618211206813797503172458545341622121789131249781628043149017611377357674090690474871985493024057686279606690757647516301764495382479732398880228159810615301896422926739134139136494854093003924639430090711132689616715057007474496324875159860811968326958700442407709565084490878058412641908572248769394998913737529881294653297641232093420370303595312215869272333106946122800701890363621739967872806883836942548842057786094788297735788782501783704247017282892516356501537326693504341024277409958761467808233741007199941319428716367590631641560407698989009633553686593921275926901318175520608742291439158104195801249613176375437664552089131983419152320139252374689457303680468580793385112489435586868255558282236986641904120441432311020755942175499759793608256895960631144901276935814367439752878834616825687306073704698625130022535840731730505490900202678912450616038599716982769131678474586569455560480627571598894950035408761082842692593486957245302096158783214666082027175375063684869439914950211715296789260746538365316151170732871344480700835479819214954842206283077523952826573687514949510693135788946970187693835277700348570073801161196227938195527063732711942461447039970374370003673867100675085298841466878658752321080517971474409132127640919695352027642472058872686225300510559591533677089844368862327483935287788678548507361808703131480420283934137913097737726977736316680531208730663067991186998408293574360194170505064367378169712798563105932873117815797914466308391260848320715062997221031482823353234634633359986308452617758643162068757649226879103298160491250697088995594689321290998999842459075698427276914596045015533909735186375864619221047629034879150270166428677405182377395251380043684410576250988693157489427239549026071155731726012534379200619820016345173620061201458241160690477085621591922440258611407411600890182425946143130770262249853444371597589875155163324421106322392258384628719890468035813501795979579166715069078353912325842768642696683745278714868300529024725548214266784599707740546315544844297641745230553397461862389809209188478825781311835125959312763458322788726220085447647329858262340008033051323036225595225131900729588768315233071998054681914885663513596521537333440196431000040882979042382568403514383353380762726943138555899175237005178854452904623698814824475882021402766358051203436158563956417631809400791748768646178084499061239999783483494526555913650153518272413457133515401800418040350730673452581066760833175348857809127708861631979555858545441437542487492450865951207087850196409187128824323131269491338866995865946119333156909410859355142355911796811994548459055426741601687500502927419545620906159575449837045046479021546079078795741158750478376743693825775004631593565322822732550079066020990739122279244234173979179206732175221357159014532381670663219717555461354340322636062864266099414684866185850916434700580309692987167060010984568775765494084344884985666318631591368440566240333862081245667130203859925183004962174506576319424713484538462973394744885352865004728120697389911087600699559326041730687432031350356702431492812833548269150962357764837766993408227774976732276805338815307922275048950267230084589134019533526111761578527874745621431102808445363340339043152698272100890857174696655667789972188381623549153219741208588950874580128346097922057864088124923127255804337394651964102219603194220790758341030684916843937338920745374839988332002306254760947920740204590474141828293730303528039418385925398164992942049733905359482444330017176524102377555811326751468221443071665423706075705044421575697815878402855377722094344390259453273312725543646636885509765131570243278721557930529721600025529480319711601990536081859315288229414406088826315107203443596916623310516132433412570034385261850823520189322948940097625791099004681772569510569983787620807907028800087870420227587379626656723301831592978583000907586347264737413863464189294733998352630040434834044303189958042999291030865877413416190345164582449873107322351931207434770433766753643018957665137789381116087707100291908443043768245129465913265538352457762300232583240120124680764160724391387276017740187818525399080549708786070253699836840918311442102511478406548910077607094287463308383658936688464966154142464269781405895423033914114444026061271935509213549292966128964259259174859463047213916111123275845617183483663855825767224910051869810263717656932897999011045589566337015417688859940044121522090050732891536638511140947916999138723928094467251035568290968994653881693513402983686050714302143893857396325501994027034110412401535620379086022213618397958502357460981893705955272254502906305383226139338540141443839615403363874065987335433652268334862913990434527257238890395647836623021016209762056153871492546883789167435849248873239409571718449669663685859666203046717181170367917021714932765047662799427721024535061758199214126194098157608658652695835762944515027086921727699072298082595210653702641189561219798067657167511433612599459326257490021728127819593451213680811884403275140482642290577691797023885560560158029492428173337738148145210118892964674505891386510396199061350861078807654945372565807601146867972400202384941386793931422719288026752693185107652719019752746472905763683177857656870500368121173943431831430209016182756826049941287283762918612668000636548740116728841082326957811755194019999810638709331312926610745301706577388427363519669481123990903345333135357936513602574810446966433125773793890912779111296957720937703956958442244266471843012057503555465418221441289763956374222433046623540002721307261249462766369451951223411302199679317524908659458113231403050531050156711005078276190967737643966905562932299404974960114708784613616005987207679663646676512412149978617833140749165058345762656648164813259715804086098008975087060513871975977979075789508541624008352469885115928874752247945968286306862076516840568884710077337894630037756392829055561475824870326110218935569954772219806576985080699154143401007732892561960859843863738226987908484141688588125744873711030342329882184727415403624763710106534255116450427282793285133361002483834251827543609551103445036618027629754138572319155515324433730514949291748734961126110511224376153216158071607639755355923407906647243919726483228535717040535790440697961174770081213550207101666393692243598585822424550911092887683615901515212241291223016824760931193383896452477000969412444033292581574472320734553940787744767595742803582506324936117064384803129013972231332928316600226479709307037782060729385360791993426283543436890530170758837277909758794351671134116744321908641123724440727384191592901629207222517711697211737229639095443725356857363549234285512384276623412483328949678069069877870002170821115372869696778913671517624520113199351288722282945800725431674179758795246426737566463787335069880726681524320470215587933593467352423552050658221167828324649189598905293611732924976436357176633331077817939201317223771177598715683009460797973762933434620215636867224625912341042011858245483589928500198657141563290131268873712973102777447390953888327625062725151470817113970315302092839715648474543274329181334407201640468958633750143309297959713247101120151241235005619202221905603838894957719939464486234771449499270122933108508894164052434907917299654099232873821606159709272692106712051740985418919340125215300547991622200217056208749659389024640772313304255097345484572424164310575019238121425617301105285000586658893406602884127136139913251999056011201833282040232869611571192601357459991776565926009747313029058160905707139943828062206529242897845456036589677847382794188760571776721500448508228179335004894778107585775629193089718810609970210845151908577440367386261301279056258414869660586924987731089015331243040222258990785754542137708751003870177442280168997004632851870404966369723169682144523739383327321630004564101245151678370688318392716165936020081130030030002452754123696048125423873745938049602223394820863086339922115073839824466611335181844398264206153036050490990554159172098462633741029609936029898411955692943868528890921551428027527371377625488372216678811890503213335739580663738225371763513710919490358912102150057598866729731518029634966772709006473391828169364935617018530608901047177244534890626836534526680862127296380246010782039331614025228904117356886987488091593139014439222456781777447288326845950369461692455919408599768246908776665150749387613243636930282787045660736760497327691483564022339621874290514791180195630476463167789090855073623447151336410932938730422245206236885415570045491116054666540995989995681851655825042761122638413334685031938627465974383836120170012499193045336211284793991992489326169972351140041786792390483450719271989617587124832277799743579170286850691866643126845572880569867562598666510924356033572873333888311440220656288735462389311460451695377058284827667837689197418614390414085585466617287326830360753660415311240419713402681792636485350133304497044882381326415747343291487724902564645698391084544317556900547195596219240319029193860546570027600079568410007028739788146272108038708667025227923533484291273536213718532615506673264904257454481822048542536001513296918959742452811028714276203099552598396264683622463652193089179703962205074683174103357353516079939521777662158590378627133433884575058126310856444914790977648638549710294137742578324663058390559322907196895751134979719170225369402327848080010435048840597270236856913047595609213147468301996973144169216880343834336182386467116015152909779780889525058680025505460127222600474986123997811429207886124900945238210351147167546317486000413731973206420555469060594187385431216385481049927181605064381461914258110231080060819239760654216356218796374596870155165001121918049807883522153226004371445393308249788392363727427479241993512089002585256372033917729741982815463271864033381738720402443000065388935430682065922581782151689072662814565266032277256125029859373103042624639450975409746177092930651330987708602030234994254123664978566743878008624610486271067108302026196486249746080282127846788281535868108977491798156334448708613009324979769677020595898234170684603014216447965575567148717220198222415970184515629023262294392072711338949500631383787885174355728715422815947018650790478153635368587894817885764395460868009769312625053212063499382975497052129487031463264199718943483024334139106064444261845346007563402781538258163490867214063003554395212001918527420377576227783692232002093955313345012711826349370017604746017285566096111389243702958864066406468170492510314498164830655085085768937644885949272934347681700508040738344067535030599188831827751697092021063251751359492916800030109246235663008657258895212531506179131423487870492412025089239184295905010388857033416246982824467995797879406590822972174549200485907355102552155271455820074569035418436042001857935709748624078720768480338752715218414706158955439011208186869422280232594235008391059149963115047835988281849255792257758972869505390445811505002207880380511372007808224579451696309895741037351517451403581175377408108955611165208964503200126403939828384313860885432886672951607586616887399379296026616838891567434268237468448254140023971465415889176094273401724847232333009881683354920377683454694420765637011017283822716836014939898007098475126030397907213127996562817870168216075671292476723301100350903116636637086896227671166197014348232793909664548361780848610652699020701060443912713420790282957964038216324782352461753197581023361515180932223486835779348245116851277360467576423809357302670122546898715547660819108124389156650919161928155773960918151812092329313760088926635302520063919247616241276291028259857459037100465490178481660387714295786038061450129042310069780907983193825616652372247619516415489585199210225879231253700436876978919949909357550249887492680831834444223533755933126180824203824650089705802212525360541150544878573831982183929951174033235738612955662891731707591280552926683156446015093031260666933362184560552105894395347054516065798256851689943653986240874134109165718383053637715285637430201422278080457098496139474080473722258412743102194685758058423870092923815370652348012914411822677140802439185927034684175231005090235328840050403834912903352112811016398419563302593592181964152582961343074457558679380579821448299986906331309382343524564882857769979256553430952113314609430297419613584592257857225714790928447805365289164476518579506371984699745622600102963773959661951441375264149650141408892847072378739613043759804965982492485718962096306733389113679425023870285884798258712657114164596035322809746578995204756521341199757596004127827021896927110177777652582301638942873668194567762361222686828545638311154758986330848229575682920057973706350228995594206133283050547844894527378696561656592304550075638792833023908105868921307058338563906092153714679997756237069956918747343858366468908170158559192342523691930665641332797610115654954067874923722917975752365567025714153907403114769863204251139007179830256878724725308243307261003757382773750605927568236375381204457237201996142153479603794957285701566103015578739046329834719012969121595156547939920936516716426057944569339015713989854077022691771642733030746259094334636689447646414950656022467516938186779240428661237746644820010449598763974863218559605884970732890191099000489581586657489728088661131184572695917754108549646327324136483477072177264879485393164503631729688657857860347462418183928860323927543207785331211404735460554646277988773362164460406915473513020239898835568400136518981440713844486853729950566769607292659389099080179379211731600871157395363806921318626862667931417725219130518268722996393975027410020726257216704371562503965495111643128342056803372265027588698272539695187571232134094758260085982786782244188636166844329192322276505785335074671523412431874909940095493488468928548607047477411141645646126844855502364316964661917322234691410922042342482096063457423456280837897861791050401123928224957598083693580967506843158980589409788288539668522703966271188120466874703231354633413754562651454662712461142958830390842809292057898012464851256292178058232968224073596084144593448023723554286937597424590675952692015610111902551978354767266164172190904379519637661619529188379513812817112255065992575088650864086551075613613554347582106283892339639308256372971435907064998063897335950186772984577459087835368180344812178454070681272684239120977118917090694706046821695102320495536437339060648849748399737565430042587340446677909503340748526082806478175427175501724437602909173740411307310536056345028900080425750908203202700997822148557724550506989512287916762847075981907661738015831482613109660134681255580784370097139301139840658815225916464535979837723692565392855780839087080339742013218499846781279784184520867962423114014195687646857452379999708283632054396566857064963828807792134455582184386341028276789079760009566724516622610765965265778423003957292087302069604146918846281858585057598954194019293724413103615425213107149896423987614848581284950467984391333717560125438225793283620909438686635918273794030282592068579323884558709191294203997323096725156368324438403830695418602311218027547633289496013542037322666213465441742014627135494899632358636952362397716585126210388178604885051705212687783413283506995001181141901856212672209775413804308767903385783566147493658897824708069275227866076098521329570809434738657214156807620019998164655440203606442159701323465596712077856330997356621189575044629825590981340935737052324866537960078080779367763445122552486060977092354414098340551067446405923598253944350835419790172308696353712314698982508454861492115731351629493299265314066262650745512957128257001889358006219260351751144817281214095020395438006453735249253170363988310928871962542344173294027609046916894620498568776726690328853396271384611290193987268305690332799981981534353881868215283758669717465318157800972518087564695058286995607466156133708487069843980787588501942266740388965366218821945870041182012494634314192321278575004711936026023728141551147435363154729672039422728911277206433751117139499872170661519732617597856477042387650494654121250110015439987502122053946148523804310502597977123076057528642774882102934889926058994035511041886374649447222074414563961544452999923253307558567293183085464308131049758854839467493056136200287989436613917551982257157980521766812760203615014894101664950448816624089849345556473218149746217802955955848245662454904411585442646050695037870431854278302551077291499340249919713280389108024324574055266978826244718784611154376683024993388134930000256997187847511574238811650097590449419354491762742216795340200070788337455246860165772019408432461537130749275570777987186859092593008772872795330403494982056824072233787267842276686031229000091331877168078043879925002673071034317788065128722225134981465649899805150366731304554745520837721883989474042101504295828165076771362136157536347434613690092431487160994475889628875326898068567158795236548390764896184514848587051310306554492045981033790476932227277421019271046611036340049306490596215252076258441609368982426809512304006161926175315359188084969835117713415527945498327016158708239387686453241383949945096453659753803036880878030692752185725634987898348380112498420923471147985073919386527672324342359306647960790980574035357576091190935056400820295450080932927826554502552875673059293381859412292701581041729718419360801775979366678092492389992253415995527553224935941242500644963029708928173265295311334519870414805139675407880968703029993463243378295643820134538710564278765052423776691929107467095953178611561478798442933253489366994086935621514400287857765550354038395635643790515114447106996000305569329052180092739991447391119271250377440957769571087083247116176548702382533053794910967627174502868758369923892979821783861302917406373678866040438401576497630826099034366773168359675663466822031393634883590537236389298442400610596674520106199050351444550038446446557910947216599254197142207573916857706584758911798761736715763772720999123372327366935200862122769427270520840348054309425816187721473189130758606934212780456565947359815942299657531604729312787882588122481183662876962403123924549111869019988094314070245534657376940458006237643148721841992261415494922887800081785565395432373794768125619954735166633310725944181599704656786156581988769676227782691612502849341791456813505943557952829129520228014118481099870428711161302276034487857896500959078962662181562370098633585434949756881992872223728847672925821505572016412700786585442072721918344425718345465220970297231184222396786530563833272789404557263137642893789255438785594339312377976415452043418081988103211735540844191110150219820674632469357717974479403386475118599132446920598805990591601597796282615446192537313387756949043398810137239338678571818502925311360806430902464417306467830803555369839766063158708671093248618646657136857778848290709220156685621405379687969620397258865055238882471875488805126999462682901033685539704050290159035663828689469602342800547268350280337127665393290744909427170935530420476080521713278551584905582633558147947456956144405892942180291518512157027923039378987854578673896117896495731832985443047897907167256601586843728006422047317562267641778207743715196817558288362015029431068822118403635534804148808938585468487246144062992962612516701329838954039465441896448021014208113574560844572202699218331193879773356705701694139307637348969058769513737893768411091179934148553953036724199442539809383425730670193299499357269485000158714306083910665469201668361496358035283973856689597876539391348327214251449747905324798230493982252104020381210074786913600054278000031148512621516105978143569899832938889353762929433425477383707653928981727343474180567604780121520030854224326143381743084909420017077312373342963788372165415356849842455593967987731372041980528743899382688576825155149507718541140047827698749328086557158147710741786644551403835432275765027091865264388141772599171420830303082951250500280246867450177862487267277943460530185209767166579532743468380041740576864046885973820042015525041901087608656928549813578143169812244953334593799387266432647837962764718685419922287635315103449045436533599201581148226210975797419149546857342489372053725375649082319770373244088270170475648423598213975515835106648984288603621468668652522032467160733684762898866856554207321448225442339260416243918960256846029806937486336821169790048176266671476794148374916055104142112036002290948843227345877913764720882181895200171673971944357012943945692769383239079535912843653175795151278866607226004075872073488754607211491299030502988679397197479125951277151058259426112744630843536107389191373985607758462425527593532065090411176315684855161320894879140620653133969848645820921516350748050743141948328085976377200508481572313362537667416323916966147101016770036185290369433498768164937386078353015418891584198499545502041743549187508371667272601580111468763148015873412200768814833547197848784842862223981061069831743983390961339223971298318355007830662546155776182361672147015459297210960004510691780762059379155670934211605521538614145846401526969535446036363015982943005297234231207147469319817354741653551379303238688542460962608099389574158843712553851555464483048912012669693561828367935873107645526908859661968346010112781976479700230785216748958061375261632191823999379434477517818170461876196328040881679235067537873534125232242400732345799595529610899923176598483867334224248549551080470580634448901854797685438358986737413611717720999358195018064909738480240070505911288552690178303440668209272327004112971648051251919914132213886880113910366691487103418654778377208584325036214075178842689400086998834206159892627356803302606754208858628196630885792738692887362265661777379291497323843980747313368644827032681870041713281435580188286613905166777156713395248072919737202862722753412792603598267472946100983312950615320211422261662673570358386859994581952904603521811221216911030605265542372603693062144430556812879808244695185960274365469339231004234460558861311819521877886642891529580129283866040144073072815816716322798810888601360511424890091093757754276161717076754696164794149190929698643111221093213525624987472582558436377512556667049119816433966015478550832285771053955263808506647464331330174341683342284742103037282004014823743643038535740764735215867467264837561292240475076855956047528849212938430778084034869019425584328293062316033203292748958451647851200562319756548190444278783576583888229734963166573206407293127982056851954214644638355813649986845851299445521496551399016878971720833120113548456729616059974463698879558070217808679055118234878467402007865585027520322384022611379092450919333169488485279659760453537635499828379940310864194667326043764393807273874715033671951306831036355629627997089276093780725575324102863987082553527495556027769557155649460157169863681567876921605150113291024939682705550324008176740787581207037891974621036624128561339062470357396496078600208804585572679938899767020605491330455883291905017279299271821317267615890825843840568595408323548383944021637066271243797488173614894064288753193413793299437579801828056927705476002486671365636125872668027300863075233504903944282607036249148514138388026338174478169507954332250606219943419230551281563666326545262709115683485210997449466708598562059748039686979602057664653545040288621703949417351610243371608766934471225159523822795260745267417193364896981347101520112197674162303503061338189509545165496863279571982246219310445363923303532954250319108916752168861806875608063645957238972138675969964877579236138963260578241376754810673560282833426620016912191626941902169483268954857421748533463401341564080003671177924944932466805151576238634468508861202710153218291849515551246845656053070388433873575402951436400084455510085508843014606284300221637293731012390049675591658869545436947499713969261839167947426992414262968174410886541674340955316106687450616471819523933170044237026097828402921590933300382986060614362841580046693518078495953872561252610049777903794279076890735920198519005179435652369222622268510955862513971546306515269460746513772943138337757668830029937284802906904478360824919098676930600179214233769102667586898556759919725486212158693658266072573304482450365143468706993222537512370695139142258521115663801043665528281163650818606868362058944351175128496202639667256558193678861463674127579750635596509962081624684288664902587789609255889666966948135739822867452305059829328932793878865919846407997682817541843114938271044320382518821136484005444140658390324443906789254630301300598380100810650423826109520680015942976750120137549095586127138503740072340537818675269864582036924899884638060350935037542083881499560651951553396033847229240332732899893182792945381106523289482145707563187814772419519451589137899426594143647601716795221560372358987883474027315188280068644505871669034819796022752779751489716963745473285424202832737883927996793893338929888909983186945462540464025462753441630231849723985221955583162986744514275600945758707253895595342377089994054588238123196610168352160423813779752191090439199336023561794595167659823931524994948821734302377589004941820942493835570884789262227353359471382582926967868631514029109060481146502750294970774150024414727393027415002451509549338685377538530210154017904348778759107593429761362556904290858875802973059634384783455165040808820073921834354009774197479624635157296295461632372123466735559266132007395807106072181058859331557669123065631791521009386599204377320027411823091379730679384758101971141185115239540765358323841466436123175598965134832120347077943147755555875475187601687844451321119496043772395253379544372835031701602820146793840794851429230415256257622970069924554572889056135277733061207244643363140134061982180442285086605071557849126709250427356125159595180826513286681810121879332819783755297415837675959167114883091735461826150694249215546554184501634859837782937392646769282572960861015270829613303340320751530027324076050940189688647219707816675685506568535333773340224126291889167760201572806094093845311895617680687838844439063110289212862901523324017250248676280707514810475065023493953613616437162647474774395176373557648237427736632438976303384175556820383941471929713853257366882639573193414191407284118919246734083862425119176971919072545772003829237833281151643677385568945524453478641463914511789777073186583615986054768157275048926137210951208621903670074931106612011151346929938704559573353439456469079912717677370274294066405366103013369080663196377958876734534010170206769760154778762486459760721307108173874116297413767449681450733041084593628224987108068551801085796025548046210778607748881307698321961309253763504538823765370639848540425795265071350520918172240630123103464195766329018716343125312556804471720468857622707644909756572631968950932134606048938381145838631470307865158006316606655835237372394982964987741251858547367232117870517227166145373858937455478192917824916321842705705962046486145191173112713440335247679132215683177538244626601340169046289675885586092716601265900130177785661315109583452068223886249579477919987289561558005605153841882923039889721366854066799270650196862339756733626595004444253522201929584074199884817901544019763304786746519041521282624363866399251008507203069011907667986109017160281115064264941879031475464373109858010829875719442983263979707796174852970768026467875885783397227532895330399080509446417659300869133866994123800276540918839378666728749406968514018339411341102370164275222617665006988566562095115775656418614825685026444546736427339423466117084448716733485073644601242868095627577062263646066765612218816590510843330916379323461899335066329421712361736560901388741913884461040019621958290781278163548749755233456457986719907603974581322747160781380940835941353326817109638610457629320811839081244127037708704940059079256976896128638159057606053113640325186532637046903006552869729598280953743685733104145502640084805087334856829499061132356794331301493709073471453338718137895596203410242966113260163597346764086114808349766231070137100993980202986620612032200349120547100638171868039099887245551414858935027653552953873285595391586854934119320581290124962312551283264901138130966138332812350948480792389987764797197940142655878523812600424177107846947734793631119624311493659418011298936993483747705157503162129584638246005236571216785200662060006384531413056798723546036214294333591249886456348052800537600334723030160382611131379172276663252297393623911055869370075812751696817075505340225780368518761753130741207555173811540695132731542170846345338393652073962035991080146370289403228472990354729906222376473489907999953436151946020514496242732017505987070946001830172397059411823572690326636104636666702379269641697702403984600117736777157953352426954184639274752406674871650496004867078140086094101037869072448602419666811303320528714109773496838378729549287323233157509576867840857963844991787120387955122020193166787708598900243194944785819476641830952640089526643527839752951730770089066588811787228663828771343132383156698776773316791597863965006229487909149849400634462683989567775126386987651997374076947659483636760461620803052928537559503628097350057982251086029682317505484167346106826727709437749462380311524556543584030654976983606267566691823135784788145652975191722622205286562157936709981184405666931018733025334424355814479512176451210794115297844965015897738662324314414399900872365035453629027355686687512274043712308706173212894699592501149125814757272418670464987291782050967857702924087791172844598990731703062324476170671891545841544184283848271297992285313496342538299656102761725032216952284460193683038936966276114924923763283756672252295934844170579982742921649499437093412459270112710331228363257803014129126109678747355329467014246030831705070628504050606958172374160953460182072578984037976903241670676064302238954384029015399456309813465546662291986143968427247435859320261641111867764285393603355432033780751226630268215395617072359781835467101897501188285942645250046589647462618211053442347816460719668620966177201946944968259739699268210633934943018910722274733356729638222145667978813664896538100298833019033492747092874549693706308631479942341770754628075710423463811421934838732124058984857193329179252552042878528731305116788186220388883220115397132347824384301767578539881777601588556656912559652580838059088245510923776502119736497348329340942779413920331309596699181349820798558752502844977318266081205209658115395225633722007837638349624388364657192020073537297708294189200602025024011472355619331832465141468943162737842632410678785218028475086467500548970870326759707031388363889670832579746134649392382404894457535594036021366033194593827622109305731396055392315163740059495791368088431459791971768117062465978951990979300020553131954268891828657286392255082184107542478585870899488885939085683166626043891715276084280464155396131689513324013782342431671304146491512188646156001177115765621346499734487082936200877256362908372015439805778964479978058440403272583910027548024537966195633844679014183133265832807084917532888839380810913886916670892947414958329858200570938565755442992351232277574075339623810598595039260539651393839341274884093742698729233390301686295653515368880394119272929947657919094936068242435475556802411319916860392150974864371976228550473209417864442650305937439329020033126366294597765250369413886701390843403046539505174057302994681338794123720030121040770628406119686089526968814998694334243495429278244787525907442814868782536950207993401761490140190734019771323517560431016871945742655313504334661141580360227006359670117459354697114211027837211614683744655507444586254325631709788864618192603374618381416625296155575697528796758655819788338317978362611928393845540242372203652870484683775121685054737706280661188340325036665132015197865076607531272620623339465922692114609479074908570234730165931156844249245834690572172222632549579008496902957017848635497127659747241091156856833436125059691719040977274045787692230328665649503977787098527259751044425794142360185096053659386612942916435386464888058755479263480631530221530476253574224872985010305943685079582369165773912643300852554999946605606735672566383342950535850970245490968473951734084601681138296060179021117054583622343161359282816941341311805595431749799994575314089222771812219186769047034150529238439581188996999353875106057794916827415756426982203608720278720623649134874305365257880921703147379731693031582858532639404902649295520913603448809177375163703278533308354891633199501737138694512878005207083928030682075310996422052020909303211750126753277050354792153725941037735251589308527254588708238442578221201385601643461362455168075801059613196879698815554099588307035875674751327523216063730814633184366651452222132068695772408441997953386504239459231726043703726473113694066880276170300893660239245257428975973392810753759002141853628840819262754096993550666732784790700975945538395999902736843837246106318110611829578880479122783989819143276397601517607892956398879700552952582331975700579092601194383760487413973249023283678561063854048763026091828001678564552162034845935805177364846400335433720621463762065736163981044777112999375313388187095237867525129446855403173059399391206852047711935865528932625425513091900730717211106625114557048973003038661840407102635927562284934197008025969227304410246675270724750249764101034533345511166218025545365140202919290315240434314538607504965169688794691030822516581980455192221454476993674532779357703999658078096423933639835027714922718365731974485926734180510392855518089049630725920322421957640661709396115124121564712390122314962302742656360707714830833747342880931786606421200372177258334259162103885602621710442955970416021287911607888237357198672576387445062817716803475403705432635157567181788628065259382321246621148597211574038453094830304027386198543926711566871313763473298908118877449253393967318736520029978196096534122132406260971919155675073579661296865637434001409572374338612815300592863852348536626600502171605227467219761873782545746447513929512959997177511641415640604225397347226929650684819596945227026083510276078416719757585048159550013648849776770744772975521773559186602070056750710649828198802903732914270223034142446010354578832607714416704180057656313730938584366268156024406428825398999130544291225590715781096681877662688755733253382143739266550850804410281811068525149718933919924160386476085847801503558321907499769180086930446542155485389486428398490772839751471048068325999663370863547821705002416161038813412715918131032148319802644353237128756359124726424117814039444036014538618472782556208419438015492073218671528212318958768412537871567806394901660989180727597187823936264958957069929370449456407063459866915079844029755568261162208278958248343222267306595457961318365900037641456343421947352491507427330823564086692120491647975335024536072817815060271741003153530595546794398615240312780455314557805172301222221116949645084766177931671658286343199514606139428578282940907762700774806613364249774131478317905018423882123602106726932066872042377367491095750080796882344887912380330392460213288561705686544184874711307249639200741405423027741402974812216286724629260246558092483730240786748534886251800630685262457910058004683485064628245550364199617600845496732971484670621487894545776603773484052228789823760735071544990599505744516975550631121510479773509457792003688711810085002897224009379505079605917456511707230101510114701489410978886093655530380088716441663628911734460845848628024095427786923759449226938945877908935789798609642849226256148013354142660611759541939612409212907849047048993443167718186813030422764451336084545674530306864804373474383147870115514898668906071539345828928665193589884050060805630552036570015127857193682586347259878225307287309673708626081068002577968655216606629194709670702458729806256895923961267596670983801120255255368421035553182103627017072639970613429594804000512624794035196831897714627597517973838273922491801028297611437319819437628039640835474036729210051609753062267205305040370950244826508019923861033806337418007653088270082307619655105122219926450639378370982084084499904522661267855346548037302107470488794050319607925534149162258571929758961010276285167173907906723779511117902459792661057922636471591955703711264046326997288818686980560868376182843161452702851069296233189143995252643223457895821663816110779970322864421944902730534769239919457334301323988838485120687984095346859773937058475128423139007113991924837653946310526708614701236988606170567087569753635424340565059661575656798271304043758062080657701284650199746840875119382691272989123637674167427461848178140434026988685031975186553591692492993712227450347635163579521772249313453879073321371801013758430955385135454718362840829520797031778030225201976104615596504062476593072726505199370541179748038441526611663462866133604665371633422998405811667485804218713574310782102872631871018654513696319304096336712686216187296120245180250876293848442573940674796716180610798257848543783047799494631933457386682610960418142038776285557593674833038581439407079104026111771590219704209848798325907215998198863637682070103236030908004609850015843499883033933326234296467592424757266837161589488119146781103335601750917094386433522745841051314975703269844035797627474877501211753782607807080646696200533839719829951714776257484782841788726795527141334240221549347465820615804062708949393026932820661275632628992623846931771775767508686544151189568870834643102413920792709026124947086627874562891352573589500118366914799189027816869091004077703872970295786733355488080229291160572564567268612272973526923394837377753707805067482171737756331647102997473402175434869586398410862874612908087590772571167615622920607051521361183725894783265214912914953198011760346423609328991098332888782751635021924682147012065756454319061310262479186462031252286616594843786377411407105357098242332736188828183514835817698616834359956878880448785811999975755830856851655713585066242286176678727817175714162827627808690953196195836833222460062544273206931423567606542897283748948426571105399286921591926004884568182105117347060490057962230226111201986540335888752940223490811135692615840981004512400824785253358266782056310208961885848049803814039574608733796402826213686550224448066472682718211970786468081815586049583137656125745055461356500293942854024197205986372788681022857493388131255327890179704198604769446534871369395405531971650763057958207548755671343441499820276728119340317020737968560228478229020124075052333817111991962542598781562163000983854269341211632538542728718063262688237134849556535782185353326351210297368706635870743084789853148594776683947736301605926261414491465616573480332334820626043756516327780672162855150869343665453499790084642167953917070425354037957833140978698477775758713717164927930632139988315334802223199129639628207125675741652471795260269772031492244736333344055474442897328565427618899731171111388572000139605059554446002328134814579170762423536111961487589286003857605680553654676434683897869027875648282364120017127158978933008886731637038948212238481828055506146195716886766038985012438108710245246163864667729075003615155597324377598926578600078429404538250785877088274118737533902541273989352725635820265225820936145967461360386877830810276597469277392622884673308151550307824688591609015683911414507242435861542415877980560388089855019514539588801611647904656139564878874449418680979947714437559835382676676042291172525987194730394471752717588345030610619868488847600564946744539402419580031119346390336398218279051835014522251915950196618420089514344429255237016518976722588585594025328269343371491420039467883102150562107175206918610168900784676899270501246458219075041085725205991637434984956658215439233802676257954924486310903548784579550185016903691088734470687182742344589756784223539209578955117494328327773315847306192137636258014717457333931572154136105836560361044841388572979837139457422889415191155197069881075073532334184124599698131704884370113383407227859676711838774130407118547201820488457241640461159083483349551091233807677790488003650152297955444720483331697730604648531733240378866394856652363786376329504680531082105757563338456003041135742614118088034646408498060595070045404548971369315352751747475164019725956187374988584288366801269263761183313458581571206814511173859183579984890126211257350899940163160132133491270004005543683270631185882156369880118674016381083398375619513352845547920734252506788131504971700755447006092939338193684458644530501857367041481901673573910308692551246836277006576063834300187093988263434439626590572927703076277513906100914811309269224253107251034238863756068821428617297399276832737059401687503007557572383028750558327129523311694393636151960446898105222831702573426147407507639093594239951183928158861831225847480595709872867924471624414654685255002617458975913161766939614829272063025806837033267712805704810746061727690195147274497312211069634529301548509690774603062001627491081325614091565731135140000187264197801667315073333984731456732565860100335754408272014927460929047943452107005098626055805149515824293693664362681949083189706544161600701459993043155117649334452423928203047574948591368549955412526553842568108243694456725383299885533850000406903633497014137994314788470490256979919103499644842856484066347759547197910949367667659840621407174141950603769817329334894042482907140133061593517980608442856766749377694278263371780017616618543450485729575496843559430190959011268836794474977942965514052765502778667570050899608118541902992784523455214453327401503362550420034753479594314562008531526588956681988973995369908944714204193113515052639444208858635825157534424074672366932043117030940206161099810125413382637343050419283159400962914432583805150817848150600109687305962453632357016813102577795282245279296661198783017895276606387672439221694194948500320171533400723727610376438193863798714732198368512006072431046326168326584278218897823992802030607148553407108141939683229051180622940457699617854832058643167733306177160764590453972870931009972603484028687618083164024139494756036326408172629977089270575587797105623741284170143435763369452964659724669004213934362088207411445099027653422369219716223391519969698043505510617976172285758677611703217849877883378940360547102681738518851493448778843093427179129315067202270323591123413918245467515570507120868575691711872773236640702513691895474492160964120366934043544192459656147556710954963948364536966305525892584062666150939978471628679019710780296877446897925598206707447707847068317490520570727688033525588147711996309683222435215530072884316851570315048281889163606043665365847070303482101983666387470719969907360667127525197504058442964610785549531103463360083865426436234104886974212549226203018900665982774269654898827244474336225724689532137183986108099815152089971812550762925288169886940508810757000950574189447298352028128311776251989589750047641335875634410667504973194581031836469010486623430221924903854300208580973949643511162948729517451993398026384635734594869286233516207852005099246134475879184130924117722666614576179300792410018887783729248840568644989050680354483126388384428630864176582299528736498530294293505992036014400060065973077001162918152864996031755484948514921556075248789605826145168986213832881181140536615830205342751329791446288449480520474990589329989380286481203444590188318575364605205528639048200155660618376917123020105040214266066127157669123388811176575498335272008243098361435320559605386325950440615398197512942574504404972935739086139875307758952040671388637809724223323014663383230607219071735601923880271626375972198813217258507460379224912966633017819102140277492285583817552928409517680827598990597427691044972463615934811921174713614055081719209172261076769900120180728683691698592764762791978101609218968796461444235707809226341654006605419194272322254445321847020363449299912241117340183130898271937200848675170633208962115453070044902638335894378187102275368914137078905026485983012331414326591759165512464555197864224232356292544076312700989269398092388566934618827220303966696016813376818590486907881972457336337240277828163797446470713776550402939028695286981016965762139189062739389276494067032000622823721121302444526288218672674120864275071743659003341033080267237383949988549162696990205607413086437113515058869411400156134224057770999821689166449620893934448261029581483412224152699606835913858857840032614051630710271110499385383896514592437217543588099804761610650573658420230082261186038910236161203860547320379161376759753230688909027219269672833628005202359370789098735723244530543784044438861968517128319604361675825458779454789471953619106094926031821879747439564641298141985245781231296956118401096471239530981985871791111732496634316393650078375823797959776314273289064738856242994155347484193641702807616639187192096256995628046941345336375940838404969080155475180373483886705773126653458131570124237804192097175932857328077419099667577043497411229490844673092741675659534479316138034812262748710746771176417214932389469382442747257822760537972778391150590031599579133570784447182185678865399029538590038678201987542709495941607438765258199955241359267612471118621923356256367232611556588655021860137122278802364635646504841083692707155251670684808861055347497101956480162732385917852521503314960340106574272925802712889855011283058127285506409779625969913291881856820786166529877151436887953546620704442090208428994490921819980273166566550010520038783647129945470947202983020731890128600002869091521801151065387288396084216193724161837063389114736529347892326876154561248392689891623177451236100788258642496510966500538212006010888653927856713110099534752603166717304652433317067543561576782136696980211469983458089132697662403591692163664095133013232498610312110051008676131835403867531421625896211647726869260398947973760495013160669554996967935936680486255968347298066735566988993966832348152887816329871373717784465605381215489216994183637377222968183112066635253945172307709392394420494151540048924689829442617473104307527025141837436078547621477907034531673033892589639645463683805093253405597854993500168098192197995527498571097293705410875009955030796282136681811957938144260059947225826631233853813059840869256189099707979756890816305487408770623104027918705686447026311050070404043420007279394810932700365410891346056757535067245566983463818741590449289085588298539610914935374161199155555466125716744700180022978591935608024221028677708284415520936894105499605164238345230298268166666955851547720446841352564397663881672563095182572280836382863897945514467420046247496608448976961045570980033140471723440290741867782166486938720364521343586764947082505209052284626714371475130739311806558507763076138691617377096390672447293453810246791391374705562807708475907652306869337419115533042417479293302265640126918538483387584101504999892825458851375940335348050030333847025650341570135775344712970568556504898791875309551647186231781204508545237155247201135923804476994003169585623804707399042301631990127784496202197255801342844373017863070343261882210266383103485933748889540727347372201510938136635358022149487425486383555667772198512468816219590772196738930269655268264619757596407785476663171215894965367426465375936515591581952160913595633671308570131790171540563905300841958649676009086801599337602431692129015120431164350556947752331298495064078170267300748961309615810420844729324883190507641941696678280314436544291639471740212264489714026890628640763107406329799352008052250386019221913868573557136533752456010648626466629447109794330788800982291742792697425791821630469656993492611947204203580586318654826424004625350400044239902299396908950308983983749664316452591486749790989408369018169407808301563324249344150885457158682711278783890615953351048157916382560175155325088211618530591706221782689892088213322497312241256997710934879686405188911521613227081081186947179887243489132488364386057195989398694168781215833201949408198645021853653727106420235980412990350838723396542057059809282686096111356070733028267670220373308755584507428933856382357239979002150268085231889587504528863409307747561825950978620325737925288174878696506846101408573630426558437817926091957485902637018035057744531912466855453441554875785614428136401503477062484024263084103991139042394140906590423135452608737048399554848464525318835767836079494692447062606839425542790211443972375340299933315378614237865510618166991092025933761005220442516801994008683980208202688881996065079838331091649700226871872876647674095331258490022725025176028130315701467488495035918158831599272159122524309188083619577652517847013044345028139088049097832123209715279451030665490871852240220947789211364994691929619175213191106772687497023146192722124197495508444919609541677934637876481385451014031766351178120608464255379067653447308303653553913389579052982942134679254331875883487243233936731347909979815951544976053929526566481642351413464185884421687846329842612921771363594013679564835062935098019375013646871392088853136424886314167802391104451892058133259426825497256016886499879071952962259470921156912262521748144955803436129013868580450246762685524014197671109811707151550858625205960448964704576983237777952891483407070705125891560473907333156405550797184878253835204914200593651133433823136353665225720727210540930450216506177951360352355953794449761216811014887764462323947072297718238832792411458742207609956055501025581798099408561832467187961770636012405443243922521206036094254214846845731909962718846711574482657993283170497500045328223352746807261185959189358130374088471248112783874383308311971664477033930263371103139064664410580477000893302287491598384545831482805258163157754779234858015561379173925861676171234017318266572702072226065752442762111333008758779029918939279031057338196747975792878698080310696204651714275033866613726719339218096662709109058196851202174712460579768528381338526394315492641204607341358789329936940256579552592667768183945193603870026637219588046716885857233774176240981536201978797548935108667382827032852506881548753616846211774422952267035000277991556076336589533028502221768225108079072277889622448028674615905422579410152581668493998736789780473897614232705771554071019281785330189520226707626229874632052754304265619970243552663679372752814679001706840730456448420598682046456555390076365714062396244923125393384276911994112549921774843996590320194141297008404092332566284242844650784816232913168755600996205903344051161054306406245879076600901748580579199113020382234448324339624559689029037671431140148922610733077979451208063662476017977473098638939334496553314348825264384650502599813740917034763613457995824091985116237642123175140822005187005123810123071294668575766121624380698616221809864593225073975801468952884866862911957108666136307542778002678645058469514111741251971209615268024598528338701874866143444898225758484078344539293609548536721658126785890679043391533356993672295453029785200733140693388430355160270848642835377259887428945786216971834208386493239662005286075671050506727595266982450452702366522352479510895918848376231290734195034331242527751913077221653655133934290081283037835457489168268110027173823226576642889577266331977059437194609553878541047602802771763999984963929432643782501068777411407457824737501586070068752866769664385036902302550570839079727005133967305211306676931089302293902219982328790078017234778843368297302641018335735032583048271523393919915294143832700465443847150795668745684476460812891492299108632568343525734872167688333191867907175098094435056616607351277289087531573276349081159934563682947819921088698351238490670971538524392412940904103811406553109736932120001638307853312567574038882925417964929922713421604085865990955333579647962087879904072833098160476251686034026049942638011717751941948143735894031177040753385614041660634410718059872286991660510566465211637533597427849090547182681723229367365105831490278552735191379014905253512025014333072457094763166803955828141196184897163945576283233840123920746062603920257033044634052940293882157503653697854058989764281718604411071431735714904760751888670796740675725203679634771777657503310497423693024284678988233096893297502266156464174515155384715494544557745562579784498124518532906452450463790646848274527285149925348997833657481023386428384379635980977985212316679167055487348375839981448245880678468901281442334660343546319010482298462848253824343908827021132980967526934451976406041400623524840690712340572220030905901386630159558327896321595856348969641187356622673820711965667512359502975649846710801151392910353295921878676811827293054078765510795167341004379634166205359274934600895250399521982712979218907857362183391384216819244920289547911192470800319290596571017710192293841884764356327477122109566257582621200151029537045314029682581080573835032506468937930402244909909845819359039039403109091064415626844547454639990013516415824964884174876449475567969984612430882754341088980275872560699744303440457686537382101954577115992590762370667898041661110128930593978935398600179537920731473308609664126818231536499882220436888349657761267983576369388672681117046281126454326669854866342561686988018110415029464857549712637355038787149273197534103285462834021830381107710460153268063803821355502520129247660188104275509899242998890329705838309759540699874701688849901240002989311002446658370591113552540952721866516157870954815851869541247795710801586828794424466761456665041012328024356745285015654389844542368621778175787364505338492817747224257173542590692519489587718195354453396728182288517177415657537677236463912139117379154777801305898036178823786546759547943349597394321690814418949474086362346908639809191069844467855033098180056862627236496528959796696198375553032134099996832223622255151951891069025264013470523937717606141290955018020783254934721636906824304238076963343460471018250235093625431282031000883328263291040891541613856150037484774624979208984843394094892059999916920813917710761260255244161562342171291985305512956358355273616286103763246886150082302547252367043226193612191602124903403481020847260484905946941022812242201257400749514678927921430432594063527660118612262817723562839249896435621782224195133671940204191082125897723423457473040184059709658116778403931837162621616744143664392640251291177173818895460919803881230042183264949676778979588744428726837392931346106338197633213382080553414306056914431044025474724650595401119385804812513492352341078854519910704157784757837703368003025148863683742806971672546491481442950811495253964945249425362046407842234547957788982801703095490472168044544300442578071209440402075557710549639122012696099536137754830904164902820463449069755539490239537627505926653056366553180829992802917309322040580549430898832384149092245215845706526734457798195666486112057847023475894430159179477573012059326047421533840057498421409070756759090538157187726244400813534404012766698574833283766597384515184438865374885522782044500792071225942814000235714910054820381375103484694835558386145905321544545594480854798927498991179056843458083877685347211779612429975302165909815056883272623117645157062751922203064859185858056890792687033536443711140006789640484506737445683388690349746768784138919979971585123134772241250279241202930440421773602001030662893145061017489765343848446510708866189884921768531245943020557244353273129335755623160972157715776044026971097914405868598031955922682226938748671531383571577259078790051513855306793484515435824584243611687714190748352388263218928406443235422164002530588774990720889089919148315937231467948030196139854903837814183957885475162350595144769774938066903838907388771681363514910189445631385764572372083355321794322712634395961207170596875840830694463498356488260365807827069061166935893379073454048047208595524164550377714667675933446274669223361092524200764007967613363299781109402341819163316712559136576110009317415769352485990628016895042688006537803388446070888387654778861792627687371046093121115682393073069029260998707632774778185248845813033515466341292917490044672006830578774204409315445376454065232073938453859832968007949604036876624297801396046364420873270206214878902589413308766203974994537794180636181122777169965817331067820515496235008723186355893278672977408710466977328145883052730577943487289198593814533399219514004183084303567671354152106507956425548486110896591285477420640310588626888725703418400890431091832930150157068359279596001425702716411735336418575077952435295323584858115450112810519117599716614989132104210088591023971961813401022434149532606909822727261427292245222884450182931037616181009548347704676333568468369285132308565681930653201985519752391218147892003845415882500467691252730704206584680263074709051259691735569645850861394895465186121505763891679286066462334071818168440626457704472300611211208508222567872013666387150316709022658212920690424113754586058636873178186648824873653194930929136233074429096412694599524061553261321330468005451750797728067741035099550794123944945150259819188540958733678676548325144424414627049301394751041811572092381987599555334559338864495541331591129754692307282101394994194571519161558619537398647423512546806902179975037717920095527172037027025728188010241225809833437239939010951035338378745683875350549824893233609386213223241123519657173420246003527309197599345714030708965249878954738614623538735275825334597578655437069362297597236961970884982442418932439394219214296059978486662816039306213306232110184097908564626660137767456766288650239591553859848317719532293829184701682343760580599706840519494290562615432780186434497615409958418624114751150051882015825307273140637995598222649753555294814828984409725284995702664638048462310865351585161729292254762037710817974864913187636876869809356841871308315040771054673011514685030514723417908776710378418987825303677357063169480072062972407795659948275062097495671076358375206787542076194452902192582188479985933234278917439599715163623834747161522101106726549221962724502605451811357314590812736146257707803437104961370560806877477627554095956265698306456437851239632593146959860310174335351150936527452936677989794512703633032716220267207738192409142695613706009987477950281532996029710140458909852202248385581616566078528226115189058765131050335546742103918168863609895674981958427483381240852086667584874933795479594016262517280602255675952253173108530402299060132926777541315750602715791801266051059873740091780483590533323295879416637146475364791069041904867338083210814348178013241754870893222203142356902411961954889958663633709643909592937029875105209591043480352187512428836989477370780241438710209102759074819225291265270840143340441322096066332442462343921958194100010426297099897644963412528681311179466262904577092028347012715738080969934574245801774024769895916170102292977372249313969045584347984549009135064781142511550497724260449428664479966786906353889885910829607471388900900631427309961131743784509466529069162499075020462339926503598006251702270163772142081563639370297424417379251566076978783247530111543790810909612514276895905951272726418521672556325597523870334326222863128397827726549050662527516284706791685923628323428367060429366999717335149747036104694178463961464900070965191451161486647571718800650764596505912149576621085035939662933357319187900134428128037401942858574954403572483761460830041035036179328272286407275134019474636981184942078993560465386619883892839502705821899612824152422919056775857205797411779756452778409151382177569959264948576107950780873158756814981105714068668859948266697454837007563213415250023380969383527459406251041383457043865563114813335958750581226051590349910308181550999973993912827237956641188379118164564242758599829058651905231846620463295500263369195989037075523744769607914874221072283817404817236087644790119639815949112864789168494301496252752775154468993576864312652800743861451493937552682349906734454796362030549886833467401196536623663144891759690662634833134657858592613149382956536292576994300680161503386497879028941178353843718500727393006226155546081389374243644295674725167596942869734411878558674207092086800185105420816807367356896668863711348949269497687968184507494079688254304797059640551477147321135669863735811191060272850337587307206841202105189958183735902960724793298834348382046292680047211794746161684674628207262652270134074764408543603124411368466397500382037409599125225721570581193484026140669815068381025481942204111107465777732456602211352916666694503988233562436336814666556869790989892490534625415259755833751144807771727873736741287032377752770459746814741546459315707824747871062749665966755005416726052898659526220324560088220395188820897982678714265054150865677604198309574824817888247658029460011630274663048860774357404590873854639070936140037888660966241642312511761643830205292301831024008600738050258238096407571831503915496880538650794365163812871035336711048626881923257485982413900702710764655944805237636232075457875569040496174177361036523472397699643409457084880139216641599879396331908959433089753846768562001938769837742945223728984625548445047052103412712867551244819909982718742593983542756146540713295966851722461843284095677548403737678324630375793217351556070421655425765348054480652196414986323321117011340630778262543529719149685961994225445399480524981556794729006064692229856045595412018883417212370678181644985262428234078535051097706782035815481012984616658542618554731522965328322071741925070849898961021991122644471393612069127810316154194734929212761052764725444813691702324097415148378881692145391315583866516341137523881388602331565809750389373946472470597901520140750681887427752960011009715438036530667542319513804842407693561434209979192316619335771813121278490346502741677686525552896628925865842848893296646652886792330289989717076192329545560685711424912648513925520612831027590218800841333454759636550661702797608741784281380979883825550803262492812238150258960442611107041872467647112457588024910490467451566043989128770041544022309848623811873645541026087187899288108840671197946649101596065245000569506050076617985475521483375438849748478024272464297381485235153798556155451023027927790302352433389205818588751573643935947871935233295740981107586665020562424179404899910701958016176269211913152878855848916831641052418131107843491377545842478365732912175219321650206990940858264561816571409287276288660539540771271087253541664934465424044717096340132778801934784191623289708702793508671651291735456795028433381790677104592840805607393191750500073511066123096270392970138008288352797743521489445303793333161306799381031716446975560975038714245628919250621262595445735529881358905144196563126091820146029713547730430066180540717985482473199838870105588670992725587476246418685464340191901294390926751383981909096955790505676649684001786059654313895033579051440886864549033722827428387654288630234877716895914938834581634635901119876525265931713561326850162751193475803317741913965331496856082347347852832300874902216516084556562789142517365217478469724961411740199382284850265609667034565409062428092866098557084706992968933375821331046227749281985708868720981959795127970481902722491706430932399996596006566893805790232546523605740948973640411628815823936994498167928177975427415312425499176902319680356565501907501105967959891014033245539113802198543591071036135846504176185608767473869319165006299342763613126762136179375351038698103425292720139940713030390172510196591949532488144373194302391839523323646913374615227516413348570876937254231672947231350753892622081093266385932150151288964587742940888809551651698445480272127883922548348517744115540488575905332837788712535873724068123311745284189817848445567441920520998371857901377739132440302765164860996680364077218131338861239300708307160162195101144096123820664214631531167205363702207713293305973006952061302350920704641403764698110075918322561929351677979322637031040319388481215544046843486506122579117997484664958569966671822423550629841770602772604090144558113104391167733254433640323770057491793489519627314067239326149528244747432079181198450364248024368304575404004424119346089323906597633295503507945839172706061599267870330717995985459917372692144904011400643171958519168646993175967613209815776261999905042807618517905621218127426240397950839079780766933192072257985869226863153918631554308678649858691071376294674643823385761436048847495522820201011007005926079334780115905925240088408777697709633995301954615549222271508736764488358472388130660318612087501245265917199754352888622522994406821075888205866452697633453985175670620731559474966883018515613292148927671832929958432746726272676233044014576161719272691068655068747823122522609028634604296236613319453460819750552729381121303594337928585661102985006884384771565313533115983838656738649150006944896833512146388616839896255579183031006230043991266622182468121023874923791600016201188338529875510845734129113560488652471446803912961836791756510788021348537920940281900455298483352452396572482582133541547011020867197640104542348653331592322387882995939363454320233066506700071840206030426628999062262394053661030984554503894909212614007944694752206490072566526053736131711692807517598444107495721659555270760709302191884059062337512774391155176287802347615173773871203225560657431863607745940437788010560319954616296354809236485826857865067993171044031182556554271934776105641070252119937293830587739776415750652065186959028323611852764269834301620176494438627912016220826752384073741311783297712293477454879272682286131901481097423765884702370336314546914885945428893081469635606063601213706909492249482132258339232260196410492250023761154624719885784153486070217506693514884848705382504617997867235384538774044434573531479166871993035578216018229390188608012217332314620749774757467029784482643357544248619265599789966690372252739735616967325601673127230357463873393610027813129999157440045259245274717834236504250045318767319847901624182446080677774219015407249559953736410570132434745801306371154677179636702521402554132082164485500353213494577975235548770787833988483082444146035541456715307246877491655743085720931091292553339006874531877193584696703952277262646832508790082891054206446104601364294512698600244787633779536690981899927047201916396510162658675719687555391345588822505801558881587247995090414837396993323100000430597990815383656757539680130248343763366894542870785925233463823127465030687114650100966664543096243261001619436346315140322692371042081933306706456271586428332441533026825157659145653725638723234581445641583388495197113315041733978160111799802512485772153740625084683173434697048787671031521131326583823170422926134479203246056895903656694751411035289512564182044508465433623133479833778142866561912544824337068429146183204216197712590773717593517543527326298760109283648370989032707034040499340073898603632218927846480794616734750160344810263938280026874903930529126936553437541958473841721236432404719036482576934307176474282635839230354584168923767395155387497521175644551435725259671388465597603555053370165231236150870455625891302662418183241816050894106002906246868379406179535477385972034664314027781734612798694626485086491722384337111687385541040363183226650086936969461442660658899611158678173823097561634838066494373860253555556564361290834924056993620112670340607429968277915506437894789638923924777387898597138011351451467751184342682102790022094914937488262648458754374627458742291275033097918864905809574117465363988984821098986988961405827566122212394439490769970954154389955670761568299789964821076549763980872642298592890736444917089035780347376649979266095554534877959150994069353835583693876369410899281955491874786047573947595325853121116939939338381222288044081516379717853980207790732475123557267574930975064130925332245439339069854345808653199626125537717126357548416408968959349905339571202241496853053806017595146379866237031045938119988469985331975600306600456792707827392405240787472757619982545894489213539110041080629247965539029717527522194614878351030505050091495924992404141094173391009748450922812601534341884602391114042517997340006780769744775793989295766964504499445418990215805862716664870965641491002669413927909709710997008229177007708125394537038871055195916752097898237035945766024314246562713824942275227476922298609294953674700107052623404861029793419283515070015797675682780244728270684382050824059043206615227579781504219577648706537348712909199646194033081873644804665478798424864308038434997598881928268651503497740473374630658517979223907367441365977196165870410027151699831828493185154590937359654451774251363673894085505354723501550964181201126264081599775215226874554262919560426110323719522600268642003529246925742684258401301141037268031076652344592219612105802380224355901289055081762689353855661360929452913134252355893715400439156220721867093658736493979801701817506945359667418539893411489877303993068902495020656833156377225672487781080776729846336391752253072521883865816750183932485206864882791323043129732119541654715186044665424829345414081948517980979192682137425132606825886322358937170344142596446794928698739996683643607135716839039765037026100389258932771729694022063371692877599384850217481643115588031055377784303345421832821749282134933699934156752214871510247983331193069322491999569652230688378621879947658559019830543381122113176756110859909936703588809194638997643809208369264035567580281100797422881712756426441287364425246802113637470945988196872690950119264616355714174141531515370733087783570220085417663408742088258867457549781760992201809402069007154171938104058779726796397932536971578851127636005567853902140577058658270478330520033267315300350153901696927816875212317685954996273097752416549140249690019879656259155793723175328578388216067626938433354191371718611930865572455024165399211841224934195838283444400562330400416724660530627982009319847402727925076516797202765309489025598240326153774607945832356269348515617710405388018123300401187523057346679826607161767164968850266197491217827294248581401980074611092196164614496443090463423350506271043067888591063028105571968735944412229586217939698328584643134207717055033952686997182223502647976105335405969483302531101598498251099603543813877440959007010225765061303155914819869368134275613836621830957016098418902371664597173494230770789084757696996903399389521149095642971232801892132178525668825135153273874380342998624808642151218638241375657955263055901442521242529222679170536481649755807319962881031471173949340327110996432431631695831017216453411711446583092159661961862630865138208053781569952504490041343152426016873650198903755018462408378048260417917434599386885223382200327885334505075943363743581939723037086730576550953063341570748597280427529241185780245120283041190131602476277869743240276566172522337718650965703830191202264006264293930159252168984246576285944816653642630779753918786429429455389257549552630103419621741800412691301259309083234449099510141204962175578487655398927563585173828183417045362737629650837482759428888204270862634091590404768758505336110455895469221315322651815972087054263581731771745457191452796007547955293072321207022859193008839439481409035704469715924091609184477974255603144246202904814967171025819267132491074374031160638955185395998027020912441334900495514242616605053765273840049264481719784068992652381549486788801143531212087689207078412897961571190483115616243261738410298148224965058871465153383821849497882752553745070182064964762116086251992934346258530674976736949144293372215207444299277673747277729406756000705991060830736527363922091455182640809585644739453038699791784072709018198732044737756164504615004234219889337710449403532956392691780922347847501241521446329462445556340661775179396841885016572756718515501751408164924159168407772020128668476524470039414535339690578713492822423081632649728770843165486117054416179958783194030650242858661069373566289677549615460248363984174754971413529304020242064337722313484668996440868293314423472596500115906262859475549366782997099997557764097228562050414059852608215752423660573075668941840755503141992721580753869020497220882387011352143442877924551100522032840941654774877807310387727411521557133188406427489135789942472747542547263699429554516048724877103323401093602219625371698091682229075506604580948748600162202200769363979270387173071708628732554096935420479769236697985503291256786292867870395084248209099937434258266886199838469455321691253134562979246565113698289797211267931296770798719813044887539067179016485267950386101403877349050506768623044851998045487459448011038164016540788937804580107452281375345242251622599782595922986253692856587686304044088616882271536991706475594788193232477741506945163770617002813289802947733871778966193454498693800903756754180858808932225196599738235452564018210372927207929940168644336357588971327092215152887448750765774594591556021521706143301256305498469682964543743889770798315387938410722425083951353388386957673748065136188180887277441968140622130986835189903627246099670859402551080137860022100552152618040508663855092587855014083917765843128025336176102573630294392687737722437517612656434276407154380346449946335429635389056907375587731281787479128988223809714842323670063483128358358518320489659721054418108480438333269015979337089152998045571385425454728298762784879039087896226161622607685779729474931611068772538268999038832197354369796844234430130018642337339693914050109825313559943060595236232436293077228374789874036241147639696419233224592117234877214760339112172447066421309335854737869753813091989062362811696258669045989590204618725230472906705486071320855372758510945602971900588718554568129977773102762318390987765372999656186373797048576850103865249004856063577893719355573946525834881581765800968496225454007830965948274201622517076782439525384232679567822677296180160045950583282586492143739352354990881547213094825034933749831304228418700707209754931200346052978959314952037200068499702762912386331375035032828528580634142743271221201832947665505453101101802993259984357110192499243331357484463433509374830366993769415153038502173647294043317105084214625320269769736539511795536355081161449275603674576722043774320105060692526936638473756801131917531560052760421763971526165222742474424958245124034304740319340590219761247586181444675576675570068953398187120691806795114707814824188113190001638229186351549987880710231227740730988356212405786191156784038595276987279616177251056823645798335473073566519929331302908073622832783813605979484171018635540802340971532329294821459588388102752829143040552386476987445552852791927458734950239750836151479269316856235036500596433767180065510961174605845171715877653245412095953205848462981063078626176307439904414113313634735017003362385055538861824816719990826952796461744162548309965505786561158236226415047138756635233798107269178877952551094411570485693988317331539750003829111411764746491722936631750196818635471242268675864209910675748484372016322937607858851039020849295605296553432196532313056997031786493112544968661201310773746580186206262415148402444109359173823482594335514267818199960040115029652479021933206760906400236789423239141377821723684060356765259261822009862840003147473044761695884640098244659220683167711906458547904959099778039098232089823622262521171617486846211090456823432192024612904018351250275496866300095496913212853010513390233603710652381180947769235580075796421936478448767194401403994725632316720980933501411941304176238362164299339785957952224662476858078197199638108896116770995665699399247815947178034278301270454993228963579074972855394348361152684043228769020116532312928373843630097958595316923527896450327006300331882169989334797712833146440745647326205020636040956917720865987490484300038435679062207900453955694484528919641686007227566093465858589275125035094211639827082994523715451129490492934994017375050176667727950036024236826044944648656765217659134506818968610715485620455569764479199135711430828496288866613824903568529999508532677262793230613699854762257687018601066976692988864324434215016820078304710163934538081275685972934263927377194678231789349900852452119128067884894241741572301065130594394754836055463978827028992805773705181831252743687138206437951775408648142917208313899136765921936438834626992921450315957526959533128889234873260206514724936207825891130238290835221484924010750224580607409707856201633197620748627470489811791830990220548486723061890714714334270987531274103795899670355136788398951225159223977138694430287562262115994064636910585180000558666361868050020882142795733230818320770271001852665029572416535312051150084778394352461816952739410042819152196374115466451721884305415276085126532869103989999258309016217716091961052418921435201743160712486483690231066639552897238999983993157600171262692179978738139810502136209604253047696178842091864220821258882845547566788037394511348962030534225474326163130416523006052968519861804093534905148704169251989880751057841150526076839883849452384086983411783571740376304080393533267398319671120558740162290623545210193026386532632568535081807425512200142525951149905483917753976083301871929937326342184496845599174873271354083661847734113977287838223532256580506478635975382893839604799869988405446682292035755940031127830944792893806632985759192968069790742107799312967979854897064321741046231793558742677815018207136542711110000536160550393285601428514171853686678283613418098865227583698675476906984356989832804469234109428761762177383271309143079850419488065642773620637100653533399703248790357586688087488795833800948386600158224579270068818664617827686352303035519924752587421439800531767621294949197583046779189819581700914610906113486289634587311336819499421989473164793054163008693953066352051740461623760218471405418612652669782030617931396767414214662737748401149796904296776188679584842759172226594103470463563708913215572873451271579891690201223528710261179785700696138851815285114879192830840661448734030187847549382577528235531129003856730424959679017807169575301548843065775432659908838368309702272558647903135626356848320425150886581901808388182751877831486077171748900732139963380990814658614140524418731202540602429974499336579797339386684509889626774984690391376169719855456847257253877171199023667903810423356135317287717771026512097538800938067663828286500161985301909149791916811659751895409552426206411351865374369148366539136572270733353991605306596403665569697524398257239876191154661205404499673533998695378156112051770561683979129042505276949837657892881725066964760763828370506360087416422231648352943104262349006250910658577839228740658574638339366780432919414307355736398268975110541371210418217895527684482094163057393566790310359128018891390191742364833867433962399042347967157872806294001964914525349378463315801682343232074495478509360261549064086504719919418898190265896061070634470330771870708960512208890519391014219286122669134308677203687378234692927910718388895505596394386400437956436820733465139161429169452202796269810270473228412515853016550229828161242704225802619896081234011559966677110362738425802966409818406988654505724077183432012058939296877278509733124171288036339826519965654780804240335125471748826536637658084263362266137938532655602245813266209805844230223096796987809001344248924395648969026238204547842692838332211822904826799517081653535786985391614286262084028202464104199207722192646267320251552212177382177453473148887061644797553497911499813949908567292291557167684405257262676699740133126908844937922613257703508577456785367625744053412477349129640540706014030705583856215878102957571630419543493623381961440904478897007170852765071933156774649922510378812901583218125944964488708275533668071803636248436602464198845298149714213027638175007890225935208750106635763752112864045976902717122513702876125048495175861442859066611297403024068296763717407562787200689415341049652223107226174106050050910258014799230527593076308033888260517873071403248016906177332141907161981506256791790729715112638207973144148305909343371762230140529317962090372038789453547710783494427630962023691260115264572977000234359538245159532006770998361699370410177507177391653944792384371663011073796851100229401244524828360758482172869514354611725718430862678314802645103459767020273963139316856327590086733602095503348145324369349753385458437990886798579335740017656318520546298095239791755834934644661616150217865243476500439215088147490642701166814365296580079169495748332420215773632473925859277861507132791935946801497816019601547194022687528351142721806100045628568141411994548611684222865884326660945150471461360028067432186737034529510824503050028086691161497889551753035533471905226599224407738411824205754986126549981675686871441868098201924035359002884594553550907044247959809437127890575541347420155924990684910169510996540403382464173462632174004245310282434174997947155158983002197130464601984029616097104656820088059414091589048694676842024120520263004715079143847270162811426451345499158095039873153961426815835278287670426054621507995995937546867784521396799045839704940264068011659574812156516152341502009091688718620576779254130860703284246969786121358296025120195405877494060606575792126085125228959304366761339372204819206306709051727993519465276233957017090702667820634959636542613251379730783014134000075750082719682688023064216186369420485042003707190405228760546050761749126534668188769194757299119847193140089471310820885659239280093279762234910570331722313658127055456037542288295802197901160908916722609771698849518898745394752515297755719723972408253804154761266030980361198942740290049806838184446103428861158673352492944567395997408848147680743875339448541866947122567799834948457903106010996152939610743800991496528204212215613942194631905210306438562476441437420729218422655228533723264735158621294017730641021896235498540425601405237768209689512120373117945540268220943408196779089063024228467630335895003442391091960011452551908338255882380189658607123778798398335698305843909411932176975655631184252154994471048300665071516293075225673950267089936025626090684292295768752106232792137422915874845110372376500933954613830974744429072388655361215523035433032751391985098072019242613077431239049633477294082755535318065271067783614234296892385669632455868361093906054363884755533280308129093702221757881593227858724573472006276744748346080871557243307192929879732028861839861557094566235061656658631496201061983466755576343633893551964167478352325497945021446571509658541998076337931781552353251562766895429458444971392638360612662352389348646298549142773951753621158606302191075566564384502740646897615498485770886643274040396236211658907854092433303695960496550741191017123789033854131490100115849958231535189110026928495301817196932097415723147051468762327840727663954822971925350160158507756937312171915385053032357164027481018492476479268286169088884497289664483846810691313774031382714213175815907090097029591560824173444217668771050940525353687509669138255884604476920235209594738757064632691508475097577575220216903357933636329698617258764468055383753193822366439952710048902486962331391902613746527396540994982259145090031102575456968599980542065880037316429517889556133688673930113875437638088246114192247998011206515241312473664142680916576024709099310150170556912134877227827940499180963325203589879270876877127545241922113017386583737923379991657932821005791409781072371938099221689795405957645253656082093743923624133408310580614438724181130287611516423006513418540941441969498743094635929392404740088305739344701447582632658857083647406080044021960016637525750847044612799701846289501347571655296240912955839887905088433966350622882409490429544789997733761975357091680442466320159604039755733390664258012675263135581497207035535683895697236033935581321236853261939673169607828306102942757434921192104015202930656177257363578787028073459259807870451657351058251457831978721377061656505348379032272022388308702464669105460597310371561753424238164395240367165417552580702523767107530287063057817355814401323318206687202824756221896309639323558713540636703736322491465243525439111454270190742532391368073273494329184033579527437463215794538081639601827587466254690652558912067947648372303807724202631781346620727980040248932779554753742341058331659321416980297140922363216454828324585902672011255420287555349237726632027413401726615823309796627092455457500323445501532370876152631481619248840349689987039338665714797941288034662109774051522172376401376764498764841997526514013739282580908905607667027059369745632672108090401021143653407470944456987150003555429437820544806266908027556830374669533568829115627387272974321498698506814279174231453657934950146992080928689921403420450198611602050213623008840107194641469188325251465362402136578374911439597615021231961575356140401702465291026667053586257932962329872080374887412794895163280098411384846722039983201820096742668274640102920197371118849593251344776242659636315559417021620036850333591295984986176402072324505718930789015530783436578875318767432590091974602598336027688447376724396947003306167888308089212834330929714588280279210431161738890170138240327748746556721609015309000327979459264241429865788842995143528988241304858866628065173981109362932424053114709941699050693710656488842749490818547366142046712495986439690856732571176359806996020986482938382480254798653777128917878689415307446013635260136063989106283865315809556508003128712487983148701505373896223701290543534907467937559892796683454482480196866380568269439998146164280367827175374785975085868562996628651919888004492569843703681479958347920238370004965872802351915223862810163332650983622577190130566316144228279629767974910935852388791405910292412020064879213096536693622556903046854979891989842977125012888863524833822423188370350151307586993396497123398065337691451582228898889242593638659082498299245548578714625859405872210663927352840172288377703064366308737642727158339985628347341692807840470343919061028607131332712707203725209728726710017724605529006166040654693487430858895450647822798355598907984781397006923490414913241826989129982262242927584267153949045683007919630939624752038035105377598831551102318604939189224912658395740031259167491662022250652043887308718901824527063823674923346087058808800692032152310085235196003800342849300143268095759146851563705541823526542755214984624364763119318835079410182824136404625915034931932623374528066451721624830320807814238137520576369958387475663348035353252799925382636115315708708388100185365912094404425389486180239815536770804279422790351278906722143866334614740565249938292564359883097592018626099722340655598147331975624071711121979440207287042718429088800604524226418482860131363667082593967454783732175421659095441666367662726064376006879178669864434345622464138162725236597255161798818187585347122602592396016816288244887971818392207868336871843119334973235363880449076740676292569473135275409488042949993635692042590640812340879943085219220036351500179712640296502638940962349902835488490894236283761430394567389335643791931933695768074272092105886047891025164117313135439638079229996204328769817492273967215177983197912096821760028532711190210179222370428242494299476238165116843038243364716521083434294953495870649690019907946781213742446307696100146675029111482315948282504106748828083821777877656402074867301825016482474219595720276234820488644093895704931177443182390880114338746608944403423729756454841284382576145835349376018301137838997054373027725902655707601974963542985232222573122516927960073601916271258765322730175874348356093007705086017180308864284137455738994176366431252797457531329524275346997843307626568732866480930599174163424114086312839970403286366416015980205149926113990125014861536570449585102013515677815836857805258790376852432783029982370305621091044262026279754700715127723146286137197908027069733857181000679298488503617707909826897488152001667328774620916723070211777462323671339746902058432537338023862081499433668860903367640323293536500930325812416993935096890871913168928723290879410124212871944322241823735066425983768429521846577646420692308632741201748715487174323522611303272038292229399104175443268906558107752531207332485287586093040953078995557972779968984161249669989950243109169840362177595730817431173672030804607367932934774927647763980828428648203710310561646916296650781054035344982036166917948675528885646650385606712803994408494721825526760243598868631660820712175519941409015751608582997550125954961209493696686458667163467993546510341122783933714538086861024765723501178137923746375150829835515309058574956882875308043979477571367300456077817353878916187447485236351466787167053715118182460241232940359958413940918052143345221642169471582567201143057996207421991773082181809601093941110101914379798597664994398823571866676994311384200262698127877431896339920524077545784569774443196322441765630593075709072566850291014069073751512527362103108966616809060426545901184653438450602611468652529046523642761298758821481061549145939067962453898509636794869349239366060132420576982906265754703626534456866073492656405292860612775348937791098315110110623180714373513335944007050603410170646895217576344634715779454843732829945859597273930289968320588611385322667266935993508206197876588625276071140572108843906555466804944511334450106283134037047587603138596933475046263348897449539094751347203085490107099098023763728598761997526967348326581156900923750273540530983197420470958188665076763518220072434037540182467985663191814946323326772975912101543200384713579273133925638779067244301138144486191940462529112862419352697817873849490205455117621112912426048826666885263719393798882611415906333143898252065960846335463654012773612632622003948573553505131976837951324785852171405583587285496254498610561452145307639511494061949845817105485435225873469015263921810758664623054725579555056979598132568020410732645079168698940823052691422751048318555131960830862043175803087885307553377662084056327650851039440993672228696578735129547463120204795221409462611342896294142344328082108129304619217113399424941707246633277196005624871133130318011488634993416105281844828116305127421869124385455431878809910203388243807471504655534310568310431953046753753962460448067390441115553530622248101843830100163088185874045055025913694497930910705464149157100497083967223463518812348319078515212695708225998166442797611264787423434332168869365702299868525790155092458509373271529146443805460610381507483783231784140055532489467956982237962641725183202069776416978553247406690165988639070764308215999576072273711655244961691762283383922994767779601506125651154229089987918803066714850640427696223526987772914157195282968583052821758316110534688587429398776381083387315646255896089751265526471803339342677473495625063544068718832941043717881362652004502886452660937936184048895179376540236462636761591682699713026025181524263913008323156166638401337860571572666188054276173180473223054808305646856046878981523143134412143567391885776948129705888747394292839155092719299275232158036273379438395241177608237265451445367050566427117369756381813069361450993473132521587894346298562897784873944731132930168741470618559881855361540832440111846294270587228256636455108558314444443406114899010211517123545088595171163086457264030975523211795972063286874017786614136618001866426525414203109725791276416055921576832814449669090373859760702219863233112822719953084308719822057803547373914500438489057320290890892044541417683582932191245952883367307994094942964254691797039067819315540191650723084064712710718421521300310256418296375072182404071775936142960840384983749104212257774351203770133217734376831800058320302960933057924959320198830623831654921266804360227754151192988150158810317880223031358494827894065708557350625855600341296334130817473593858975214551647758655677476638734134443338604455249084954055721214515799806656691849321771651584302008355099370637916891586538385655172859555340257491523439081979091742902869187898476157970374857200638519692380377407659773369707793144090063290822517856973078583162142609542803191666962710674022416869057054732941440824223994319779869233729174312762515596389331265556416125784640850311152240743097117349078367641343872640736050133616467482185485652194147754585003551289257674054446360572945335475066081818913333341094460382202857212839066238404463576366831950718857339764505016279565205046731774126894965906254264747122081124491208249600311914647418935237102786729360206489386499885871973011973331381991498155515495283683604807800564505332367583768911207415479935979145501070585632822198016834917306125325797556875382085856239298711989529509699977167872615204620815530206393559961626844541397186368013563788897238369252809055697070526308285059742899034302983433911589648662776985672569862291167408086086108111677329848739602943569231574501387783755561560338282064736309668709273464004515697082081878067538095695005296572574448583702608962924045417525035490874226638877800905298199149691448419360301577455506073215602391450694633303960942560380447486971828111686866822897393406304803996419625896366552282017126430759979491903609832277739153717245794212399714915448934654300334191875196302441308584100583054730320159516584632088123472605644305167909241034085052624259573057617232694264847420814995018008717896161113730393366713026026621006415033818613640166696812385310782605728840974149932394809256292989288893858896843054776011067020824061613521501457499632898425590152344459716130249780359196356055461544342074391265373248672139808753206589307360167239354597498304854989654969623139474199472373172257265348129468841935779446716952651998172809373950267934076443218010368690699609538727560249364146617293094520341713745593698075316139589276463051745379596545217196458630237453855036296229176528913771188921746407096298893406954246851861657646017466907078034413881471538294105856354106227545304722558602540415001802253096985245463796104772609058817119623743255096512605377946782573533163859185197249709195513864569889785306236418743207959539751308215586625460434615940847735034929112127306687948928618082920212951579137064508094364567774948884651727495262488387322474856325468945019876417117924456063669867378119281778862934617785809854754261065842131627712296402097673577409818788659601939778576826200930616885737258299369230920085757266465192927888421368420771665498468431847569878484105380212035766182082669357094398377032394904073827485299481422764090327485281329293225755483806604096059222544814810299616084478864208929938686714869583518221818796301316595974259136446319667814190496449685925443696528570717783349542010004197504821087598221469121681393016809309039551087592532094849179788020764103630427719434850988293910923902101841558561319133761803116058171587582826804461053054049756030973094947342935689332858066507205842548857105942762546060476357944158004222589559970663224367237729728691570612493234856399154687888282221106130847771443412020407485480869401823735490586369064830574673600421278976495051737037710565499198638933172022370998155409813779157350864653370962006308456477651357017930840271668224353711680199196458524889385874776761102510854860367301208366293872201181797798546649964077405413159448797802970050056098994804552790172149422568445889255337390079680039987302536388456639478968534851119817263632835698018028913336172053547580346662498604537217928177355677158160937133086037043807555188607689540331023132549148701174869407941524400548023758346700701026099855707979841283301582980806398263129836421969413862198653969427619155149695465262271254890586307623463992218526204104422407954002528890663345902324635570989659386001796181666721718209784420851325310724433787322438251996713363235446730875510742770015239812020228906889597608941150371760474485992914453503062732463742300542858835250722739811183499093953627474828300061585043666775024645226423756402851410117383166500295860548338431333769434565425256077344450034860135954765277445471530417181844984478204800790831456006974234508683655411847568444515753475898805000300840850119996214701857640370551552111309170562480400218095315727633474083075343866623372169842332314851597332075236378054220781853315968074524066804747357668972187744532931992132599006891742792318544409366356896021740404557603834341837635572413434466317227364412241146310006929382469544562709698017642949381352663859226497180810428276380484714451107658789439189522291359405519035885934204129542932441942933275414461401237223692420649003289183308088203929545894183634636829148857520614548312169833598115261459596128705387286438384548081071450709410669263795740731617770171001008953104460412656240693374156116593533585909098361733197022424246676112253129893041152789687929227746757289441303402600596180523942094009321441412566353150598953246503846109406498353596407056069230435575592560265883757617324578673190015268416042771118912370231989568177303159509846445777108355709661421936910265048875136045841748177712871985659887067442324245849881209235985422441469608900815399628758279371215160059392175689590778022261350973612650341043210502084176147412849665349303553388006633490748983425982466482621852649906518812489853597139728318418069966088163110030895721038070105892333654517994683469935577451076239738794391265130091580813768801278693604806600631410561208759955576194594475266581391556515188986148049391017163797217279228820028699636126092571244790303403890284541881709862782594823357419779026025353900810496347767497615378700017843214279797360445556177123441417542482988482231711732887549098895343281246644752744433126681128938889608374688259555621486395091201692663377956724693321062007681155005488652861512154055071965879925866811315557539074569673654640352793477054091859776571197902814481478097893277017568601818407896307286592629634204441964426884224547125742520873721589864977263154062040038751877191961885057483539568320514114828573787834297192408209798075138241751636586460859920865220137262339402459654167448212735397851780730708950132662117889177804851542415259551738359439840126791764730409665139067242001347633571973109874655053435166485036905803342444788280493308529417634913790474502604609792577018495266733782293066612266863821873943466579919706667440995938983750706655509789231473468817617214009632629949676530660709451888966859159577280364862799350013458120147209645106237274379176143793110225143491256099339431540048545204824846051753956205522817797788170318235368961379313361664694525131123292274766844927939437904675883036700056544467299706953048845959228201563442224356114542648576105475187878438512400763957458369390587537906298369079928283561700211056240759848254441802904935068947552054155626715727407486987744808111682640504832284816948582726973945859816103851867077466907364499293132199986787919910768521818039376754183770090410387320391114055351096679439566869993022847094571414574810113129179087637656727236216678312228919058262658261215600396347635122480288024999383944976381269504862198204950538859289953744571704805762898757240168622096729918368803160013462403993649979436738121278087959965219486424031952975013315057145365147447719156879175736536045237717855155805183635597212196366087852089233716956162849780520459361771340695568579290281353115075089430957592161389488119119959867348235894213094913130600877036746588860425215135401448080146190920731168343375981137367843632094410276212410463476775893815576382337998144884728381299675472276293597366163218851517583734664811891538156384865414442883749167700489680126739535864912298937533431938043355851624483461577031157582171169215007033412160626588292832967333707615282143035775836132893175675870958305784688599931213540274942680047787455685797016941780311036356027254210154685795683952870877192112644396731781850504049840762938318206113044056184292357142217416382077557539819251961228172968267140915215847677564609260865878586191499333724375038340223486844043499161494224027222117631843508294082832261038617359027034324224308387338710471923040491880483610642546361596833082244132400203651047621201660554010227170625973470810151278928539460873264671352706584913768154653900450936754833552169522711392727209362922843846413628173955550483796239651820365395048185842560660614386329742669384813597217184251423066842899385264808561900373268505873063645711541132816424308740971319718213359817943163992036451984314365685593820857220557730556515121507829861365955738340263932120415738748050069595485344216499930357452926033529272356901886709184688130004481444641660809377446044095337449414329991841366888228166105653541646825619867280306540958484138889013840946594828996380123722402789731818463060428876305097745593779773902771258304199587677864174204937520391729736635258241950779185065991938592108899324133634703147942194698317086583083578679014252739015795628629371154675675885251678652808154147848814555350179978436881066767416853428973375011704777041492872680926878690528851133524476147845850301097817447788962527557127641336999291684306689601380725420504936100445303827721430334217671797336831693982979555472201564306071822854445764543755774963286524678297504259456433018034216853927408181384349645694213708291322381432074570432727979161839563971189397043966297442028757624050857278569895827896334945499942791554674248177843298607464480566939884193687348114986203425681271195626031595209764466688332214450621721238263342271997248858573120584367666445177004585522691081144408399767185969888282183807585536344109609696820040877227950997481952645071701550843131602836710307669344559688397938913336910641123981397682833729164274876477119818752217028908939469467491811893787032206846612507978203903416854720008718858398259452717767381214829143511641965662615671710898010803780146388250267403476624602431137116303523834454030827073163975607127867400293187431883817074539608357915935826966822155854567496289875902401914393090604855653427782324225700155724478725301354882295296152609830644467180199045735695357204249595624721351220057803877339589197322484112584277585703667852794480288857309824578452607152293706589915287172835368752267855467952383884138120514068346579182088432351343211248639148367317881884458292215334622053249936079802067170969330817346058609010357960653311861626215383854501386852778800459185055191123612292207223676738072482060906609019741971786416745467343364460460371810341748971812291323355576400136148859559860917399959937310514561962995924660054197245492754905441588894162951960740306075483154851553198082104215273822034987552154412491594291407586000966271115012236165341503907374079163710734377659226380394172719865222042195865554723281750314728088168335313335255386702717895055973191798345206941198738431159684126738296919810789861406623874632857647596614269357019697753895784924846949518893091030097422929250514700118086191044652440656230644277289924288740873768552414446997732238580318848571974075949788831702747048621254611994202002951598997321626572076542473316203867677289864348846344287019260558056624223241536157365514035072485992163036760467682466703505535398692759116918181026406279426641794400677959862390134513899525096741679077743831227068616775724619797155439907327661399059740283928461664654541906454095555707831664492893402469238306681473420838863688033460891380738134816342067110700948245026240553094232938366041303555542999108401725258343905241944416852657625488656736431168059716454443839081620286885210757697873790781145200905203872166350602930010304334098903899051547677253749447258568024628797871147311262360399330043112338574134297329184408262788334280476637465389039456743212609811495016159495462441108444770474017896826053203099651967348035846331872110805719133055807036922594172119511412769668329280431196932933039726085991247967272756980508137326386150390347974304548136564058778126629921313153699574640824619406472047979802297547013273388502444383261599530321222224593635129473137303260060540735850901542959919727575276350701522394548490355881744420058281999151499841545101288661788549532855794795777482120916034836579319793518260291754653430998611175186444755572482807539727084312455895138784289237475953333615180194769455071116561840417933681073542630409161896191410570813268983409376806904118988828537475989661732905209023681463273998181434366516771143000776218207208287350339627766947936216744020199136887306873087722177323138933866302419304804630422776164880098394479778325807794055613845278847602791832028875656885154925479899972608752502007507155374010611896909714457836327384441023028421165343166338219252214561920909393989944746826394396713125945967379193883393075392999018989302651916598007713224645921716998109938361953384921395732145900552351233767788941799494598636231357021408726473515127341854246269566506515787682683436836265373107900321987626334187843835988394481654575849326069634345837391418147990512513855635568521278717505281456267426585181572067611820708107554564223509601279245502133386194928985819429340935584456873309118308488329584428576250730307609661507784261073359982918106245038540350414278778764097858801781883850003072350964658263581821632396281896165760018039081049214461301541203481919378344720101176542490873602150669557636351682795353350406802695671293762248118076991383574631067078948771347546978784155092889062789142315932347882710938819177013416981028932524442746913890164735590413562598588031157043600384260499202733711438006629700194311863205223917825826958688405547673892929800556229914908843081829083768541121358161112268530096052654710612398356950122195753866733862728221007204387740635982866974421031888365368136791044724183235674647136530938986275759717139128480316848037741732878032064373977794762929540214088516004409438484408773189535352666593111056617523613045499559000609429191257809437874346238811815191239986761199655366763295078402929599972286886012530607888171197700568595573557146229239626384225740876074334343152974882937662126688783546231218227108888485329286494392583683831130133783709044260191655787906815729209764621597541728202076539358204922203763474767152193539404175304117567319229384992559398285261121753554805159640755920420519504174436180956133440466301139855176213279277961360456590810919977130038037273393911682005194454951789230267760727671509029096582723501949287343689356139265264386707537888483167553144352486236589381404532647047268200892843515680308953782423595339981088308517976496781683356595437403230885013894205370658351071852858584341768035747928192942877603125364937509975245746449917464190770101663966456447577480020417322066042210194204050862732940482521855149003529599969640037265131380653739887575147744343219464254515832655546098788033685589752318747797760567653916447493598727916874426781760920721203904160497791243199620319503842633119498699836201883785802638354934654846367905513739469852297699486190424436869539494446958257949580111390263871293410164264447817445848888709168005915249683257905843847577759896917456857613133943505375710914033934970530457080025661862767993912939757960497748549522371507064076174674738709886134168102993422817126331255572351256447064021195966699910518364500700924724709504245542458449487660799939566979228408139438338516706178774503428477561585587852494332645104008382769067138526651889426758708839284128449467937041404518472285984325332419612287709066596627154434556485890219843726869130590434183602206278421494358796953712672699841310851555779781753279220506075148258862250534037121482525656156341525896270724284874998169921561585020423918432592391773909277970973677548065383551634423669012068737266304791660393965894518361669549064295404097921465809402531747019619902780026567947566169122960604594582879993016206837916186533375125559956569496698681440303179356730216859047338231712975726825312012648919163937409410206869794802851541202221378537219260861981347088540909433934300751933730848169466873384157205389805779322331633269532587216535642882150071066977301191241795864388058553449299707832941871449103609672872790231958183416345741183870739504382229656078521446071386760069228900186010233421014036687895103559498361993065684294312395024007454954886034262024818621615928014512669898802452779033140235462885553928430775481162375476489708508458816609135787984926375415086878687935020170744347192033622560882164966405419275955942126779370412110387094888209151639423937494121164387114833079563535245323592181731937066757169701343771965565262895540968970009730030768196747165524342581289554175408406720363332862645126089496197243470032773874106141602826833741202193257369964451100182857469163226603446594217213888396058451464064912171764722115798225761279895140077664282307162711036375861451960834562154629917537116718840904963274229779088592810180514365736069509651792932270607465673551760888309108588112175011283536754688637922114247455550635414412618232528538516477078360072590571250813721091887691362193862264718128206766937098142324040565104447338487710771761936344278929425651324042761447921930429117907114379751082463580742450693779172153178444005948728019687436166626403775486673638370770632974696731164373520572233031531449244214372936587515394710321159023452764744439584776864097138571583080958153602431061200873675102798652033708971423771572251828184527812271814442141106867459258034472955527681543718177012801131073566690492271657065539369460234943729622927585758895774054906756019084865284091026543121023447367183331230179008667593572564804680847404700054958948882909900715005656924279663097996207134630960460398797679920890121711303549671888994272919038256231434375407264899226755423798246876420237604920801036656369980145620309916272231125932389491347283110629906977266283387596709299697973972254943587618856823769537379246892744979802885342507138994705963077514144876361654617893333970764201758591904153225471192364734850167386351762516398873965303358628415318057837350387097070085143156268745621956247205527537758990496222654888583805418254060350473650830189635638303106858785459237964873652675699067884204696449771566577547222053730951057942627286078511648100032412691366662994439203625373897890745757257469385708078873291703182085935234923450897122307771260560690028277258858464671211082073806751619738275870263958992812009942813158800635902613867646655694843746367056413946810018581045307736954705744348730044595187176583676884889019896814454486519612035360860869877730347308944312646110779348555703099951056631030233341834480029160091340212802646705578389315985066673048194256330342152066968082260584282428921715889591434517283951111306145354098788417297728661794677240247639828123654701289106279887720219693845427621588538978846663482063158702162070622795316023066679733175016157672830592525471419834489198661329301975920595682049244773676847254158074558914017319363729631537396954816510135298887584433658791946684036132626394535176127156866062026896192052091596591994174710924369329460879559157496253432070812191906800351099139857083182221106340075024216153628332871476122496639361863177110931395898980771704044157062861626981948958941098240044476978223709614994512370503410978414381943901055731118585655768173267219530856361135987561080467494255060035235683955379818253002156001690146644451350264021775621388859069310028704164110144535226250548918048114153361555050868541632314240264966684985861870713961262835680078832437902657115953539974949082064486288426083893167639534625987356487461423508351423614232473336732179597201520847599625218781003889302005926745057981252846656663969483217821694361093542853364590034905061776770537974076165962367067590874685353473282859143135785078809924051453424846107448966624525334941963853728541328091318856441852082144936014565421500178629096006603905788020107586482715777241337433486463193688173542541543261240685637368073451085927566792793063772380885841531110349659861148034484685935205374092937180361946229786517169180620560642098044013179457138742183597040856776034660790897377102943228536061772510653702187426979609368748315275362021349402730166675454487114464771531535633881107634357667936189034245674715656278734197626224816316749889542001626820879871744083991573096699363365038504957162489113770449855173943837282314416383623253814843146839823404473341034815314704963876983167264227352880275399029815263949621707442642901578140145754974553035114537132943791735525471677221477535673195492116502537862146916310281374949867211069091172000916903342767176252953988164700098067331625777514808528272428522983285678536403334730781580409075494870104606332766001071030289602308733860271041066301619419165493880771500779307085538863464552054678982432015747054948324198629552725316219396075874407266282974316356748519572763631583523106037465264174702388294006885770903652231159975786791201247457629104361458035199806095865449124542203307355617557232580550843908863026921368308591495852531254959247597364249461911772390090843192529079056360993324423087009853345143561417938802928425596046731099129705940554217753367127545430163323486475084569352157761522146460164899905061568022920066180254994589669017694472005148444668560559190667937428007470438203150095061948596334128359502965014969504589760655443983962456065077217745085603970383872765209413327577198262811564138737387471158406196885972360202958625163281670338484991751358968452053026992279894096030104133672836132258583689645524407496023758313082177797168917943018743173308994544952613478640757550919206714746021666546649976300508880112419685121091410290915986424931548420272368014292948336637702109113889506558762711253278728960282577525702888258688157266330200719946902538097429040332330292442348809259622407556378965571305280428240959255844550933944025082328291397073530571797469255391763727786039318476856184418676274427940162764414356108806073086168919439174003552783381685030070657593466483608917682918442982529491231551195369340073864925215490939559148440592215372445108929030071185688806762541363443409250146717484902392414923113218354117546475585296805412476530275312205960427262432718795761397789674613229555470385152219779103308118210361336703622467795188484711730491361394648201437237353589771060769702991773125451526429374959053638786906412755024239273158669528090086989815490545260712507962270483940157763216025137168057861686310052737305102244347379977121796314121428709921777253328290408988782647300311789138295505053717674131554628896687687362943617008379229009203200919953812333592734545663797253522206612444394040188918126249224208252273232704432216945995120683106319350649061503825814586445569377953530062384639757938596534062635817652883312834019898034066619154781512385293229473089722812829404626301335478909939218454780135089104077476803792352066384222712679123459124234333134682548187173085829792317071655576643291532983543862417905168725004837295858666790648518743045820332694389904626856201981024528249338515041054171799414090352019144605227526432190623789915680266166850187416947279359369133081271615452443718339911529482964291167615287845047968718186064341353866743919389045726493489752690495394069270284299121024043713780269439215509082930089064620851075062790758531164964249882309169005958472628122511110800092801435700611793326054380996496703711326399599079910242312825270429587054969979676417271359272982244704582503336813296149609991950341592911384225528283782898011207379370071083534845800996806590960572962476553440821407077048536445682674408144239966939013575757536124461141248697525383615910720068111788118909945316585498325846184072161458271753433788900568884913835327901398976165689297386898432918250717271875514262776506475203009407016051413418373461829810024252761720384501994645507470587837765684498680387302351810646855002914333540734494131279385554766281754562925848610612419515846284411760366797856873180608349195192879561935163080697454694718253669967383832394017584172710954798250635811476054474433074648778162362951531184862816783718390858012935869174090799208742323359238667773750196550627885580561964540377516622219148803799466471088055689026561452154016840284172149244934504499565114488357499165320123373381353299492007805255542774905779219456151943320870513512634018750972664967398537541089508274924197447713629997399781765050292367974348208579071578596716284585293881348890261518901480494802348405613368078099758595083352657011798671863331369077219102660640058680752428700806138769905757092989756532207486088568144624426601749881803668283631992189682524213110151952686521846602062226211487996489140612251066360624208391134530128017516106975905421605364066872764268576147493346564620912252574224201110569849437544004013694066284332576172504795254229893875712324415993860822169655402625220019243586603811286228996661440231843999596681457671089840069988686747697483146428505091906940871385294483436419538877064431724240845875975518997204984129405836251648205804400231743153313490032514268626794979689614860677641216189530983988723472418346801658080052278049476729499844730286800974494965547709250437228797479857682177569089609459654243489825547324127225233875784558084420177267396027654813485766057805313012283645569828677703175373800396607514978674639104725147113503478964790989520882494366955616059615776649283210850281803688056721443079939416656515372528893947230021346296998507993664043854250800753830077298939068366773787877315407354501141177688458278788587576592749428828843830099272287278345118808804365089922962748753111547154100757473661534547280798774659318698943742891597072549684894830030288026502547637662853787772423380940417728331790384595050365395026287075141204408684227639873740744478339329581379114532143996880836550753316915565160098221172477423789425205901262329727565346170575385883732111735878163821429192425497392700024563215037503668142469001367554230714234419303271223535769167095085370490898209034302711255688515950358049506411360775378136789216210175548070594528202139080994691769131465003194959709311867857265571857165853841906069821744180516085754852868604665370023630896641733483106502310184569210768947607364659644428629050959632606156750845289151440971335560884293918831006981211231764577954037693560632397555064445636866654963806628601773669276851581300966483282953256709721700610501601430330939669151401008630020628582890646074825789946943001323105880931032808827555756779966786875468225172424460925354214105498929977438209652807413359114161659972071816597090785955618839595470285545777857267826830747657016117778999251845429120063771132704490289304137124929752676227940853517204454876689171688528926138581804525749490780160357088194284361872556550693974411521571910267871724665361281349828027051055958809633306996558701598809291947505672969507409638316982030137023641376840991180928016100674467518313244574507442137681905281626138352975208018000898683656435693404681841276244476626834128656068254670592948479066196998675653468652350654676236512674237486611379545973519772383929116019458355372662839051643354406717378702784796038034758048047943932842640356554245613125830303251573760016491143350491273147375953780522102328388770703648333024759892608155046873384228414037284595016836470037227800991075569456959623197373564583305084678164476058135824433084113966149525908260537642471646441034611748813478313769830023309958050097160548843138513028299733051108910401115870413398981823869640330305863155814519573353700852998361003600451717319719233190195150393231280323254851293291344018887674401050699162068870606118637594250992386130564801611722513007637731284553289716041943613634112722384272297680738548814451403245617985371869133406656366992228952319793272500366838150031320711522656552846079862816181436350103237808414157725896668161032717079863049285684590037248120783046048969774250687600209924867507768950099204475405725694978303280354820729742923411756723339209413906281483823806352224689126709669430010582820275618883743910962798610752905367096297476142089981040276348763387728667552718417659038135324261609533933954198691879477585099680470490109909189949752430880371297522984714512325549013073599105613784279026768242788793429116628500070876121633659907531588511828220220977306693114246389418666336669800274630410065536814632299274422810325397712779141003104661346396335906828661877053494896914846288961761005868446155789842239567136700300788360386958596863842831241733091245776492706483110843029514720508723520359466818967133510556372569853834733821345138970802534210419314239771722639868004316569265216539886694052091805077074033878410897981515562300192555949213237827973826278044881069134591322694517115903765046787872228161591299585670904529695637487450838906746672944296399231705949206263058621034834709196057394230504626555706846510079211733366201745661781288895808629984015895165928111688897223762194720571665422376900282209733558891896750673592204906871541686424640381789572915336413347805875923980654419816814924414515486424641634097234686811793368107900258501838753933756458307494882608996488604566271172975688143749879244928891840354551279533261191958207463554044382521816589957234469690379203100765801807932527604331411885431628845147256334900555366806596510405251206828946910464315505432277056652009379458451406326194301270551252399292250017344990191781723270490741393838692156029933482774743545869292337701451645800668409103123754987350797160530197186615169070108104797203563657082800409797929538976985582149763499550454208411655555750642467172532295401874663579277149339155327023010518860939347985661912067480740201537604547472343492201480913129522929535436434932169899095062411646288032705255198631591478636104914540078881885312338953467260134335154332868387032259590924551559495060720699420379662584330862942977273965610007192522873929797452187069869697392734620808921856429656199592803595079082703154875422156488674535139906547027525118304943478937172184083946845431653348177187382092986325698568129138074258448176227921432456820879303495600548951126104675578380246148231187234478223988133382129895143796672315098318842422356647080649113572556029081426232238537835753301465994086027893294502874404935363312688151428204866828661003125391473943791962747191729032089976368383618483467055432922941602946771236596549764314892724182305641318731866727283786127731810028179074434077219451130946465067643997907041445278450765165039170213834628858612368643956219440465162667291620587634908942154327687624331273983331504202530294880308223129104232280530912774284556021435504723473188305860484537525128515432719736235900920735148255772862458876553412868628655360459996359628337064661599855720883356767389589850378713775618896982765541889458681427856004071235899807315649102082232280296867940661108619750922161453733154739386317815440439081686997285329462341697856162851746928713924418338966789095312365803051826827182975454056048609622004305457091003934172421333403728914356337173720532214309980416684099205040670418067418502023417955191970769449547680424776119116800939811630427029371702280821733599055899855584990987840961753807834349093095978885768621725217731550907726491959609702452542908994406037847218985793603407006477976887361216665557869243954653156157761146333145079156651118345996017477407690691286406119276973105922462917015304129308575008140878716875172671945695779485403751980123999910588638078570662754163552660103533828151883606809999394183738460762527788924681134685487954800977095118558356990072072809120793263691864179375776821535523511808429034512578256537070502778871344767924009043441679461327138965673274129236614818853471019923266415979551982985473755269341311823359778068906479023534020957895869563377458398135125799911880988834391613970618990331303381238956742497285788699323393266369380314383026423520507395435433955753370732777856126548327084419699889084296670398082730293906294541831736003833128310804853755281141205283517551875315114511380331863492116808587910751733180779396836619173931203414794832982131376115677314658143183167369939775715367068914767578167614428469286571345172252216142379341488414774838406001291450057492094809359691658111156286512726458188004843020395883055048889277456178781278632208117685272689922698226856464716749711760158924698478157230148034158487876849021636156935773395994272175703353711268320904359703692296744789031818061361683969979929766787988892248060938113851768998523714721053427482286328167466180449633216408567804323443551628857764895603147039205658149450506495067856132981836358117219907246009976617055473323302363322521084547828915501385823972622962819253271716365201962554753965619299443115835000591331256894025767108401730305584830742193967014438313780675937308985705715435530254837356610533391763295653961926146413096214673934387596571275188216946747871153087898003836452170502498339201221706768788726370367520152072585209931738066373292469468237925409639006939644184655500669382457493245660715243455565246221754050440396764705639039873215973779693561337100369781587360218443710404863320680141665395613564070490711766150933902193279190431312452137573325324660183351793608960245969643008679973881183698820507407581804365769627321163900958106477499958746116612813689496084606548514193491931683134080129487597215265048162452942699644394795754702931757607451296010833361998105414204695045150893552787329406632394718245678904159309897804723265003677038979668387316009440035731007032931798425370533519350132850386138425551803251396107738113076655473614617103508401050816295435075677335106431935079234489537890203423973297167996191573642109271845393975543910269622440575344304872622804047126727675548580606683025792414744451953728151687641160070995435867384481993041532748837115843381436982480288945412274965791482334792332968585087696914793002585716549274056401470306637506625608408936059245363713143266579027706655879123821877863352374216544982487342177339892747913472999380334461546489502565969742587357293999414884312666858914106422588168234386837982148172535912992249332025574816671421423556352536185603191374119590426176003238470440500083223642129445952298158597924330806828563884394898704576569896385159156385013036790862251406033548520841581872862854810959214511864486443104918186706939498199249568622494772686914456709168492983534258986860432642132075869005605598346384082359972460878780909014400817487706693662344241552688490767627521564831139414884923835329989307208194132792892065091034436996789066094478821252836853516566643829796442526370838312312263918129949466640483816699348121975864477233411036095041979235137656957694640055460405293236032136253186577644402052242068423440498023480258087340041392279374687861409439757496105588778765466496964239105842195971593592404906683353985040087381470604076407298452290190611696879669812169387140461240264585582176611201772025476472783311669776383841149561862618788586532027115906931536067475359966592896127742122263269439414805032034744565763567400158178231238368901286691625364987591338077347385895564753503083173339499201293211498936090597675377483225000246349681164964331237087256896831366940511967534634276571986045200747994504539694718368137361195603432228867155797614821668227850200203504857449473183072430451714312142057989898357783709215715804401245521693540263669308824500586285087517564133101822162949105471474596463797900629669384068852632891977992752558819178304911095001551267161710803504965510708200944028409523383236177347976216139493312848289859498227689038392386491869857651131126047549830832071298312340433194965074157968126258595575792413660196797948071730588536416670436113987181970054812880787786136917520047699146290300980042344903432113912403457216807549157523782942666671652414148129810770107075287387210824671312275413604684555200140766312166550030539686872673670549358879890147762285517608404242329833711339738660284996157877481845799680044293390952712971595914056684809300601880519744898465874156382746445191109730642610518614328023905706859332453346030357861426370733491120541423242820956814515874831542282885459048618730971054021486714640176327945240350495293152576120377092023889165813458058787372154237820711747585413342882112809579864943589712966310421472468795699678122955282010481499061857697788580383096291763130743093738409941441075279249212116434769590012697145240188320655628017875530657221255254901558980862972380557562338306264077416560380538759635570644334797045133541969073247077927112016254256525966600398111293252791275780764138733381243855164610555280377590450309531078874226931838333585861962093215076401149170840809781552656910886663388559751739832153391520548236100973713727530897038593424190675608966984157599950650714804005936343808679652193104521372030362636038251764380219842184220638830104426841002626108079915359025129061490728215461379405935510877799332057288517396389047638460199947895441966982721372914537651664717850996680551057017840355826658341912117901559792411346633254464222222950205749196582098826979367562700749726586907756804453169328369798682121513143264796374525513491041878967660176403755161968833041327125324464141273104573180391059021005043225329489679154284325774238618316817776914799864305495736219164416955366507843150126216762344435362704906352371814894866743636929649042673630346394875225199036723014191730457326214706424193949972345700683516901471835305971437091988619755203881854002899957450112590596590920770211291506768927374006912225309745577757217401632803383808279189146144874711546477318157660253328018876326742577115962472211847293932098750746034659880972450235584181108577989813147473303976056127284578492101253657248234197829136391146501006154428080178463864432032987269751511120954997886165745156823837228951554279080740501265652607233389456071467999954908467542886032352883008445576620534569737326406946386405372158910832062891706743042474139120843384130749872335880458878148384617406633643972648652261704829393731336402862992258430677698025501581704860316109632205803017611322714419024988170832503084590940711061298817484765851587232223147028855498405352114842464755195428253095253411960806389028450490129388770051559873365101720464559801294155606251623736099103539765782036851351071030841689853253006614005775624507326906129651676301777692944285080061712825575929295538000724007119641660855845465489304131537910297146949245541169520381768787684744131255175747535258073213839137340767135062642596755580829521462552557286999774866610165435824543363711465996797163212243346835208159458326843325775324578241323645178875039538321743409900734321760086482981753232727088462254854420974280191731117274970287170669527349044988301019698571405635313266963101394390777229919140585045344286930907645203541956205767507976636797672618280799899438388593295396570333916962272116866088608275165299142458069734810512174487906738458163553691135047555727033785529230883276338343630416955879535909797081992463838340359769068850767391194149049658606908599112182916517507781534024426507045491553568808808023262329067370327136758786998262986389778287596874656922977830362785051955652019897012952393184427869336987588793053926147226822381017407824552453984405585940857173299506357265994526692762649151868450891970055352395509071213992382717842288627604525086360320293680182031097048517669911682338967595319377212666618707457423676272617045483018505113380408124375781214356116019154010416977464916688278419651485208648641554794560891450777724686870147433944719031482732275767955349562085044457663741510462118126058184648071501245678371620501371229305856399861607137116384077650332722597709879564364386727582913532314686843736226819152117832642112291599777418315917282300416312906727916015695082499253472814197080973320265481096796517325213162940799691074296897844319518723157878147614312634402280874909456200752071073575132186406389549964342559284713663111056540219406765852264116234044287897362561897027456835644098465091857609050620818915855771889490670846533282617489385197398227229018476629094532018868560299145089674833050084203932150265374784240486468080096884060305383174547354325031965147241448480929884023973065896409833132006816341800024718259806996135480143183097064238209076770657277673588092945172510452826126485664145556729325548917612791519083041597916101798898628422508397625930596720280210500577754704945780776991396337852221391702487974885457861574144242675488583619962218579947839619006032079575711482786561550318353824445740613060424165374434077249796761095170562682690567619813761509195128893715389473344671795477705503333630125775629165079499363097869504354152532092026683084545097460233486359744630125572170959804240627277342745336444423430563979664772240850307087663300228969872845394750457796173010388281816250138542206238424186262848786147852541841504391640638838715565994336174211594935806171076809703857988185241992970694790092689363884863604182349007023377329575943902184277924926534490188224843719281606541782134052384015963293385903712348460994653457886516711560321096159561427034891191613856653815785418658462579017345221535273167930540005700682310957600263507773354613456073442122360706956054447023143827673861254861211555945006873366634024284749085685858765380441591783090022867840860358061806105053541447271407690669731869995307105387105580925817039346254312098857287402128707508696385905253599860485004280638925913098840755334465745935370884340066785314344805870200216587009446236660926966322118958317156663194619825692826237741992156104010317479741149813555116444775904845019705689207156288660605277758584094961465867872988047320302999355124058542620574431125252797730295194029442775928424377373395533505141413445579106155422633782868134072968215822839057931111264991485790260786061844472262345389407567125927011579468161172971046016297228965580549723308319136713235935904624087238094206712915146451201491952098031636783403638339068465435472517411600339801959638284291752877838843391578926130328782189376533815929599877204225240781887714893656831454324471958995829791023080052237905102027542812069251892801888709437515335688958176280269601900231716574800255791382520294323109316202079443452585011865565504958880400154648598856797089856590341313607106728337150095579142049363036515991643500767256076729699521310915585026203575105453949868855689374936915634443507990707439854072108834141099845934008667851343589331518511000860343841728329056935934620063836019270072643307232528024336216394682141934133585971484724143989172943955569089752177189673077383007709656873439742371159462979787373342607649684982026932926684548674364331969811997338825967693833084214815839086067157394953153972392766024655983942193204589953931264622255283785010555895228675745129451085562325475997808359541602861972524023649395763267990816913384986314293178042757872222060859185842711702488872454223286224245397775071581282677726970601605557789958918198802431928481155066467457128603805906549747194495215921585326709621342142792730460131047144020004852611068393157367219303705969042685659434717463559957052583240113977771763922466254402416853068593806273976468321142712413958438760357493739376681354741145034508541197632912402462130737308756397052192566241091588238233752229370514079798572847685291841982230933375335044565807613267011553292897292692603989921546842394023474421832669011113739516152799608612978666447564339844898651792840909722667302088802410298647539111853634953107546879157087893153512199256783073362577763607774466778948230788118931890446144879185441436408037966704849784866729549359475881822093144499438982483075014142087220173056744535734185928052617413540889978863459766768257241909183711953354568711155517898305441545091490196987962464000437486902260648029172708826949439643598402161679654287813147329792248696453356354185125640641155757700533636050027649782113472934260369924509526615805536718878896792985018185093535285909108560417596433228734892779045846364158462169203963965968257141080364565771264663108755930878924134339431771160108924223446289295193360579720522017475126389428375913024223923025757997798129180025687051514135328053885497183177402652521203279760505623986033440981975408145538236420825940991798261643459254245971289089936367378594496902196971177390540957148228136242358842222615970146805406072091506153646311788645628954054415320301451505376011386712039242414974896873001322031463198039465658576146631770325483875971033308860428863310908957251836149870703592170189585658983239809664393534489380698235038406628389833817357803272063112326829020554418129423063550570490920061462707909172977638958887667659398254423911955389648375329803409072813146522863703878927416805661163186433705598402544376605330317745891907799905770933610850943354177432577610506645951142134993060835049601126881981983703841682469385372967451003762048814319833921942473629557736825474599884623636942482317744446258593229966616216485783677435695059802097619453291562685797298517953758539699026448467849102216587950215745064483993095145775988747713694686584762556476998671722120451070319053841605701431295635978498720042732426764982426686904248947112120954053347695714453511684550057377221780421196821533252882916462698656128819856153323619155960234207807447613156908957264983281280749372395475690266978060733657113538547039035338010034633297345002607556874588054649069241675960219430303156105519290108747748353611394891021999488040003545744258507041300178213999623747561351020521812392234182434235778850574147371280096162784830903271833225715001365017802324301994269407180234491755087879396391406138694891794057901188372590761766635628742301797578861830325105278818322012061117456974832029062335735835440470507800746768024778418493309368126427065646609210739400606977870388168289514923790658179835734444472334830808531999836506243338781067379819788790863617363146039300757215431821783871598753684787171715118393677654429920935219680991115372771539808034978194708924518710326859875052763698487107636450401650979118715113877551214644776679689012474830506669586726072400425528177658730136778959803387944549753754288705878394537828479556453216170231469044723901002655948954366853264854924893103917992161462315301331669670150171115242915858898410944169773993037202336048075064845235784718649499565431223130346387221454899108023011727005712396033176468990666934659898859302610376000209195232651365400444032060401996666718428499708473766166671783682305691437001704386565648603967681588221530033510263729867491518845418089721361219457903567934461883069110204906292842467106427978144065209217222326938984872167662843687618393562507668002716566260308586091404494800574570906684735990269372360421865868999591014400353884594546294583529717908599090194004952824678970049998058525911003852193914636742505195363182606077066479017104249295511166501422426743109001543975776153827291213483785806542441965717467837404544118073642477619503203923203043628202657789492264156395861897785258180208703922048221282966617410632014769511609977459513532855598812700227221431991140574966070271868751069234474800602274033071659279214252005658726219730297893838557486825706237465721538929691344114750043380023726842391868901965170780366102407768498903429399534526662681026466053834620923791757761866508081854392682337727376952868420557279174527317479554709950681859233464299254238624093691474135081700782450684579283929503354390073573942496724020750430956076814527073948077345288100360275170184582884045491470704071733886247739066474614120634999199507339951816976452431536778843672286033735604100818984200973171264671852396668531363326380693554251904062054317848567658897238285748030892907902755793181891956290725361292123404599590026960188915026568874213054157234986987184397175954295424881834635343126461339181240279414556661397906389050262689759286220997811693012799488943616350342058106583149771772064745113891862917668134290032158483489558593876823485515834729407872870836551470774473176538069246530081482410025336793981914665210116483059313996346870777912034530486910076339378752455829624024724738670524919375135296578252896569455833834261921853877979063528746106294033464597449432396576631069705316675940932354433221250156498432162848488043473240785426164615912702047121285274178219818233126270118144458010597273249008841789990502476112743646105053829780232170940309741980165398039022816897157936529147419555952335367671237923218220836175866413309047212569824942979194689794321066266634440026005194503499548941916375945759202005050691180479737543957458131124131107025779657338955093417902279552320694213714698321557718882002437232039265954098425956079498808556656349134672646683955616715397644278332982285059733113732917661375875071753263467479355156444353357022425206939976989429120062773029887305366643138299273036527177147050196755400080888708752289062859974539858124232440676078164988241592368806478813600575418629000337266500666735325292451938132543760149732238905252243558892202291951948658264916381527538597103324540863823397651595269174527656930423466056040692967328338985479324974043753426581813913276680573475698812694789018722031911510610804602254699404869669475387292434952919661861117397131379193236704097659535935935174295988531700602263689586444566250825084839046098274558563513460572342011398803301171833115967292331855506193331077262992215507853574263618683032507335381991464545517305213843058458416254039833654226114068390626839942425676997396277405111802644531756292032303057218221667566820084685238805420066639214760359740238848715204317220514292433294196759680556187181899057910596760691866127575856056186491625245715091843229048375626368908867281496386942858609552072628886066586923244489173416078325577626261564122253042196694255054714295426246991845180362218327846664204179753908757527019380428369222625304006113542545372063514002881362277964643659373070020036260853879270151303590184266645972834945494631699837023192129777879134888430935985157648038471034860105040600249506478533725770546499875540166249511942424802199901336824762063413234157688434430022785935258580305711178806000602013404766565432284488468298034136454847028000460884167656886452694176455509172549823180253896665429667369424559519870460059154104925779692575858108446078667384898623300661802271586783940773879190733995175713124707811948004372314330997974206504563728519234999046535015963438088016272178989241523907211229120205824016012657760046250608002046446504328925950096331344004364865866577218094585253054250605226669212398335829048115786036169152021916726356729808665208356413886983911970418982876883186038456609580111649786566474975577271073080582807503300968025931770857192599651013919915915061285267345573594483404450772434502070553598664353954291516584142236695708660135174458143719948826475024992169997908044638536455254150675865209388551863947417885378210609896423476628463553905020366339973773280365718705172388421235671581878123644169659583041198434755188068655293720606949222216834484401349169289420165368841493100349080960682386371703431934943141658701554513303753585859204292926332520581908331916477540061771468782170807095424090830302089865107034185684552691191626715193587032339467933645483510049554504726144796708691697376442731694037878182122825794731052463244263457343380484788296644031970691371445957008419804008102211099277542682604479825925134912357812659987683410289793273032576293628627941685903799867636599237586878513260945483876534063025599305615107018362602214558753226346492023413909195626846599525724878169812192123429417513054107470286828502050868350491314601299577633955084562639077161729890849756455508673576687530819045006460234107881591768617233310939647460587050565354027132017413660665275203553931535182795556801731380885616551027267977506644727826821475008621921543394621967431885138041234763639661765716101489248114002832538687154267547060308536115089679424796738623921522109721432274527284396730390196713789258472241895355344088388046074316301746298715044884607958933680589481518970191222497747783834526176794227067869468192622786599073480670557069410888663069785957603229050331517643376740707028530964965083090636382364744585559487472660866822015094554661582339176068006227827166662723514746258302098304304873736469983810826010853953456158814468760439447454894659151063650855920871465656750454170579950075427118885492130116246178922988912082550513466396493111200651568251029620062468370696492397000438058347974952163449122172667192420387031885800122322687153538196307171426144952005241930953569057261161383293887606757175097168055935566479319177268143680287525449308297872914213013887902657979398241939543964623765902192261722195044634693378386824137850733440395454324727322527602210773294673413559699725619376267054374700005472806161666463715329212094804120942481770738652304508505525497986864975229854926334483041741813556587171543619189227972090275102719656643415422985756652999194881461160955844552305008498194787851536844819192554283466796201431152661341260782579645426212522825255512294413836562921242021863788073917866319382177960124697643704266686986450935696491561312372993732989915528655366607910700244730970051631997833924540932279782278554041540999725487858220469445788796173251246791750130792980565128349333927748496128053879570045901578249047017034894532606299645182994193138773621143161987978535769916694232084859868781542295487744499646784494899708054465876060710044979370747090799663905307595377677008014024790571848773078593954459035666638476267689428589542707180268507812041694280465653050658559183447039724830115746580349765037395038283413523982527138444345731100217666962642436803020803434786929781966781877820468657161647287817356927290007499195873719584531679418889251580895776776035707978718222495833092748912680444474673070251556133558931519297769786948938515295107656253579752821954180938425458713416596985705668243525461000098319713520621733417261125348720219549992070591713671412701236407418537613377188353936533712253408821389866268768116875025690694256065095868118366099262294708842668937570965356695796939952447770527877356520155370256628530006110731843716913789063832326649889423926189971531158898416015922663624251127607162708540311579471174548890786846913796259067007379965941968592552919669359561896003515293035927747500590343057513185855215571884336438816623998971837023842069166971878077881975955548331244768592588012343024642489812767346790077751142950844738591879824732972740494963491867822690493387017946592236572306969649610991655715903754092018897877357763633022879165971315546074450086162970721736807978389762487035565385821237329802474090798952457187013416255642387423321964373369971267268376498320940846879250139361517994317400082195705659224736042227615504285936675920487470783295031342776740249564793267813104154454899046234129195017495818664341682890661506007638718474248621331290030080906612752375960655278228291926012976078075674337057714443087565551602854331715104333077026849207955280168018959822097074718922747931341749419256659512272315682880539054985248855296900065575385533183765286960892704246780310432793449935194075724968386557038464221332075879347463138438495135648972190635425423424129604029135770577191132271005474577512798395967532166388717574075102509923972645262074126662362701888217759913330373612125526184382255171896843692654674412845601637693886594034524601038397771039103828523693440940465624381266183756850849834135027914283767026079014438470481065224293561845129871907353521913979408895273466494937294176555378158435823133032992091151962553973071183886756332686671035867030795824768259341910191293210005695914146741489944855827472193726546222204808276804818731439506952471909424773521116107813454531146189149529665991097869973290028300398363120564871774074314845331281963614340870108243705512565217303301992599156313808328688991167080044100351799837622548812432115422612327791511485060686802485393323226834728370797258033218265573411609588145443976921542985844203188629119850725999085045363777114019828551742085504363004686242938970891221752459952513601607148487745665175020119389041156782896108397587313414788812504492070110390414890688912058852409314285521124412293934332918867762651170514884171801897923316603589271327769324434156639716959963733062233227684129425462278420721602149984292442943405360431156626674142673609088275494011330151045450653702618479264607665170685289483787309223952691737263565625883232292426278355389446697209609921945715033208549956026244459008365457298939495667951248707990129378724755052852252620251347641313906849185517560014359136583217066990107910965674135506515662261692051473085761362859545941038716845222039352560652139754388828824447639518730054325562191571002928286972468430225494570234760184613653558225123274958382321440807304745784034938262113942315689607050556514028902384309379174447250273333143488817994946704240317988001824321476678962151103921591176761854187400287371805844997748141447180261923510428232276002864106194254992875720504578284524113902058605116345305772446432214769734180959745846622296352712548458951873645410520699109164934838504367019637400409718624069987424909412392706792490182082992556042842169479193478826196103451355511319435797651804497192106317308682515302777684311880666567064252069538360370106589982560079135879509482843487589311206477460648318520536327530949989569986338694470229326227747538245342078715987258962961442439469266634016398063736501157375476478565256353634632459836865269377039876518770077108827915547593136461077526392255223393928880294025733757243852470494133283400183153229615384319132959949580605654614286132941634901320729629201210124324311657528426174692393491138260357670484176104919761745867797129845765042551642806380817869322846476758224418411099795102476590557681671876939442942596661178200307170395575685950526082231603413473678370917192842112436806842857207332314372215425237519070437851344735851508422968252847436136817957961200091990550948942268667103946819039476932342656507280333713667462247893548232741179194130091030434284366875203131823681555715622753330580427757914560573790626335985736051332549512439962483821383342676416701980025087824160156712979469567120811255828847241099339170675790308303072160835810130934967263422503467474818417745268508668009832786691294590808944643874212636983163117275032798260905786152322228444154642114997560944699504038688109624976807393231850993369118755869254711706352474803530177984564485418323569784430196563236461084900631491255910552294708874471177439508742261009408925324085086766786834795107551453577255751347363583486026021791723738659047397294451816832677389858966486669644844521959658438094712061907230932617962628993937073813415352024392188220219874550873812697584254385742770392593400416208329035353120943715182961431411502730879882823944404896591452232423083208197267393892466104150955425677416946703135342971832724906412930900856226359420788805091064918578085226886756445536298491059478567031110369620960270888604945335383359654905989387589272202266406861586663727635978689687120461329254020412133779403122202018753598708764670449838289124699825714539705570243473278540416220537808145678616603552680700347856726438429644954949769714937258133407563540071009035254952817066842319901051006435140775922421296102056954362528493967587564089135600532203530730628332719593463556377807668372620279267935831315754485094165277069031661193857773147741591128975934870229767621009341311798790005956593484568155498159256610561348954472465519844997075768209884508240682572630560465457314990237516914249725123234509114440951742924931218791728726210472581851899346340737070939291799605910957108800357522030495173392798746678836792163515960727956448667817651490199701460815288393666151571721468059672746418715166641366865909827644209594690158833525474930075310621274558794249241314814059678264232910915437275197550668985189456533219731450098706271992236527871655208385815378323966064229278821128325255165859011346636792205771884518084125535030682707622055746494902091761344080611262231341388343645825499449987593252481568593373525374728464843540605158166426815007191617638188382527071337920511755906300384726403065485383098411455457833496588396351938053771652644386651053318477027779275572841121092708073952220120356899390504232501140474344312672212801422065336130871633085067744888195659535885303245145945298439255192244581093918978573212188098011402340289610775500204452110239829471175925070905159799502589327090910477039801583531764499794323281188099962699552420575096987636394394843498110274496558951224742864319905908531871680236952921515499499448864452042994045666345000632511851434490254975108838066493054996872341301900332961795417087338087819564231476349279133703049330258778048674498573564518362900294489968492115676618373702821535288092743308881440168757467545669089089682830739159369079904950387481440463346691228374603939098439235948035623562180220558087921285264198901821064180335498174763961461292964334189080745683765619736131944402107283205386026541089149469001982359694160353612238089873233637369464920870581175811209442794019096676595074350205487353668071054825803196942735956328615935873458907320043009803485006997142364259396174199404876065237688614359638495657648616306404771891603565344386574225080542101669312882956247095104174210015609312726786056420865152033137009251830176450971461380049892413435945231963264760715633483664475020891699498935470677585169245428001048402042083677338226053131890637286856894403079388932561612683841509033856301971970601362915092661876356057523217914209942502048892157538112667764596667111786184569195807720810640935268279731142934856988792840994094475490913005876336397557135011015663618175866956767219867101316117403890617697007098790175421814798678062703884278010962822645467037997039121138233980803530787228958626489343696109548725194617595654791775579100129734657248989538364098968409230251459377824068814851921378081754830188284549607264260815855608767927605326826489634149085021593734694556829712326321659609439857044939574027707422826765942323990652570916231583745886404677564180642582183255436485068660625163787419572112943058982754452044615878119151667858881151161750933101619670745881263308104040906508807509549935969273664308553511969617271962393805383276895682359220220105599606213215574311014814673567905286267860772573119657723676125596495981956482784799152714218562705268623217982142737969022484193092795969200931335675064450446622036589916114153578892510231349685222029019648245110396839916546318173076697680820888122438017917691371831153778827327761623319761917805321009649513354359618444113527236341665007806173282136804698491608925548343448122810614242977970962727917246876630739633227484476208687200718213382587447772445511999394780444306995568863964207919002829355179321915240355031070710888716775372627584989599529238671034152316758786683064616426315435303807000362165143226140152102821591295208925382654445501488361607454842274294583902022317093096545036926981016129147735830732550419194797536156737359662522437727425387222691765799466862771931150371491163393483048699370224601388711901468709717240957181939216206478337921686487145631767282602950132103079102719089591235538577233184646987643420813218875011165229599632237172604593409430925539416802743893655476649820492177281439221536935453643803784598176333252728203921830699541145623180661532015256256167753472067926958875891665876766427437840758908919729196656818211441405562731067140153988893080871569978215165936916972341547975321878914459145353166959221396962712920302029091675477771466884951620302699417550867094221961506845959733953527235395110243920766518000291283657577742096215124482896745503348494417737577628663958136923651358833099989130125039858204515818004864095849384404079536784774337945734457954003574157355242893095634952855028757443153142793382027616251355471567028565011117240954243549385800789986662049284177087876397550500751663939559022859050949407527180797832101540694456498191512513878242081270292421495698959296086998219676072239617922326376671646806578354934067197638715646295384912140057527340401998361404003534821993866051178973597147972366561108347416104845079260068152678602701622611570424578443342960441006531914344026212420849038687046021886317621502221806802583546708027157557245350094063432163661221177294536223693125490130113696771542841744243161016390140276789715468174503133377369121968183904691110565882845450737694954531327662492782132547572996900638494023213009843602985658449303792552038975702910759319856831601484685061449448704864574600081570723172040811595322153920560029687797838664350482009688278527311662220758909514184611743278954271000721080517655755518617845492184030599043685980375835231946941992611739068742733883039682946948244551738824456877928646802415946965046999226681723644982164234013068663672706575727594244234546441434876230227823846568520072939955841194445160535557964998672222314437128967672826296616985546490664885843598552204954204483431803320446606493388139546869658452809925325506071941155225691276671044033120448495471736920835531003020764342127298805387876843009238198461802227719859203649874296135642615811941175731930533269287054847635171671178637244752888425099774271740240031508698455069018486451881698772411430957938201422093003442000489984010403652297942899769876336987684412928210556863596674023364377607157280662275989793665725960811759085030682471758614259527410626534472373991634986550982804341911636885954706743764535480917626037359282230983578066326015400311039527148175844562024958642056896592898811243125318546076297638917671729450280624155144704498200961974044085558459478216191332735074339029622917835678610561815950985442530234465256458857209684124675766197117332561881356566696984247494514385697934966680377503181512867936597324968580278509165767465747889069203651894756761215562402407994874587580843287622004091156142749000922467975216403594405547007679680816357705482109265563576930527540678588055754315426338745047295206040683037353572530878549495332295013467122346011087908612580731941517948929898898322193905905286783082002400003621609402544545199362649207093813208238459598142768484408145042333485871626999577174130941328921304895107801095157549700886517314814516511824337506630622065429627073791659094914153361783785463540567061826563888091385617238907933111288898062397427649426551562010722292359101613590043970016170019782840027168280979053829458258075739062137329010981597001677428733897820108971842507797440100262244108390085556787782545484048335087015592860908312361841424663452427070356193775818779230341571409173915441872190869162933843884562742100875401275997929766464883802398128534245868137331913204352770767020237068872457857642727423425499909663372174108062404344720919682151785677136817965053296665373594144871159245107198761481308319323932948075359881295202550579963624165659969835828111815222984031464419524437719617261424083360748449588174393649888212801545008772070280002603824526037924486703367538783748573655561223571724741228801891926778943121665464518974589864616027258838055600581334935355658669096676003664883088893557342287934789332207146573339728726799544498484383640743397947555013587265968030655431099204496659252143962897122641914876322548203751354546953270423870929238548512989683654657412954911861178199267154404246263285705071061011993121356923251199078306332424115100693856492766072417091540375122203682555747232164941801316101238503709156176417877061806443983385049971237554680393640133999058470403838976376186740524850596731622718934481396658610854709156086432595492616341943611683726591071063945737634214310630405584004789610385246330012985876917048086678663454810804343958952425893676616933143088328380872208642747975300723545071364192131055269897926661077092147933377846431334518683511473149969437499162337480677256230281863516149328165312509702312719505263217402606495317710019256657652587975850175259218657539716625647160207464580141306973943391445267570537093206952640508363519526957451706524433068239577774882341948072362898358431312729686960506697533320797981166116836626202626405115834336403093010679032132237805133277611933779333255920392020616618709891339288928012139432458913496599190663052915147180102262250811718424128242267250098156214439199608874027078703016431314527875566646894606504222285326507448406524884268792739083522235299058838885551137459333832457082441265546344806520681144265085708284239522062936008207481097674795086828365433345882829887518375570210582575077201601113250434776442090636637065275591742149690816270833997010981642318664106222111814214314327141030955647014445718030630986655184604014486324110337161342784836820615461744454816974924891217856977828735190230827876483488364903676058856208870462829230405258109730078425435647893261760445454173477926383763327533775144525298670436035725923749916702215739213654599442038971023992039137808709814192619314101984343487209040017918923944021847697555647954906114001781189926267749616679675306411211810487642533595710511326665027695073557631140529458108825848403403367364127995145361314620750379855272268391066393748067607695124644803204964331677708152677785364662366652853994967467534623841373767167657631215420496251505368684189286110176910510729836707879817188114480072583723538742828776076319944834983199943722403444929723315248410441148998542301705042838721762331399327696035019063798735890806652701690684550621201484642449877071943735396448076639656108624354886616826618731882348638116926584007652919505218218446481906987133348807594222180891031529592898168802634762416913782609701277117233574483756775192224149995287418220982203438354616784924515520531565297070887459524097726285324146580726372289792496807562520936740364058173176588687977553712166868767979443339372973439816798101645179143375050264441921046179626697036041906786009144184602177587654467966686680814059252348203956252398865890384067525649942584651168890101357635763987681337348913631636887425179527634084481268414373091889267972409592929105646070711221106460765542603228033324828892928487284636049212766631445937586785158155869234383145570841479805534967767661738055240531961301032044300494004684653305645509438232904662352249816951450194091254223459506318727275697799631064711151025733718450427075436521449119238518907340570064391515706047545673766819541941206371610691517489190123932171885134109962128146490465565567116918019383554597370608521692811448511461448287231357987978649831879156138940290061360403010469661465109091460649610236736766556902889886721750842807870555228399414018020508477636574916358051298781982131498626477127988430639466694138489114642438113924484623197788489920292021938553759961482600200121416760342786112423348250032356243103488531001817371777026716025690638736586912017419373151360695099229776747980033898012292337610020082971108391120201715312870464240329520672063233136202926375213473952846533439757952095385628565766827157541708856649813803960004100928746614366138734380273359440554600148964140534751621423133667306493081066629880284222854230019310954887501204280516504327290571170484588691698084887038262186081189650228844857785840818038698554731253104735472994845120222441724897705366030141431674383414410587005281113808575228592513356053182940575941089153020595315943893004401935974509135160746217993975228382893995652513679815769327479598048304940151882180479448968683815494293471510063533317226158209550016156815709464519754502310236520022225328830387028696442957515586556695558963983014731930054467939139302896896648323834335229043962102101314403886680679857096184000216199200918695657983256826487969497101418082003348379469912201065918652996429937036969383360373938319443564318831010047690834330537925396386680633899914156011926707338420541919970544734073285618330086002780316282333578960843850831251185709198469266328470558094760353694832673972114059596853743634931883131403001253209570191973722131761019175937039076274109379016609371710375554754741746553960429372215748375283823966714187714311991217897887481309345452705613500607643766126579995176406431276833039981600318192527641140677561690442002171657005595407487728821625609832457347258107696479104155244546030731729443170262064097009162052718777035042877970120778772338475931201633340053879726813934430080421212829038155353322524669326614296331583075800151422839238534312726942871097710361054993638859000055559732341690428190377440785249925773158338526035942310995764971963360455532078296703525249433521857445848377204499158486310872549841456745126242686795690508296161053360781387266253787763245950269724927479077392313330833511239183744068269990158723649241789126149019554021670444416233331885617527364119238361114461987124040801970038404669366601750663773730555384671243459992635666605453273934126027428230744892728387475374590643727050988156450524306434884372202530597870444650510753561058428427960466990584555369298368117033743094371032835829244744414535630817320842370007834673692596378752689028413237625839934331152603943599506030808903574070799822606972516443035622248178375495330935666473209410032994419664665465106620258116251795716066581895025209451149629033553186899036813997638336035437568115500510617163689778952961426617195787258630320425822389557850454701719910564013467348429886472940175292006536117491265970323389808971063943335875640622803976198252345980656304077075020998987091794534096650038056515221999896001913778925384751759680630445177117748264226962522279109805615127438713347980924130656141249998316165660643841230867072686039901794880422121107610791537668137816534712898697003106514794379051616706540197259189486091203651745232637939821034495875904193132836568768524391303878837654605827459535676606414564146202331696353135426151508048283069060477078813712688074894748006168113789467564288848042196811764919374378759952028525436489829006470783414704754374521370005673576195493980159103113173735292266298740352595108389497404028935707178382749201112340970628681206571694228009498916969866601963877955372365913961814203019062986816099494655150578540385044218927852426408053955576775412874761954244029511043333743406442847539053814822412158656475257305371071163543715187041908570895954945130507850311396432942769437565691566919142587118594508411674432931634371628422224089938131865403920119546192138234607251903401901205332614401728403832985894674671913260008332124367995223069238404100686919102492108092498963379443284289257519848139704194526412088174268716974232203610415254462726158993095679663804453170457916077836904554177779934136272089180840149793657580816223371338431774799445769755779841455005762238480159046673596163037560866735330735126279946929270825184245877488832626481030265013477710412660400872540370557484780017292236463559984043470723127185994829293780379730576446458993855428774913984100828960780197806111718454168960608958881444131768461734927441058322525419998457304254811221687005245163464642086589631558163285786454452613544628161497763405610283720675151137490012210803167840223884459144064336794007039592772183414262357289547584689007425130429903966648319386745596049587507950036229944557513695200960507156557093027132757127211100320334184050717693516652441024257573102758812692436648092152831160782478849343115193523849617058657293742392173827472799906156394284022440741786487298448985524226014401300795996179413869632628184665750355984722265807278024721608509901719054990759175973140257735496587195372267352850737155054373705594587267103117736036929457938150415973918772370719408476865086540056601729828877104343604985019892662112732894863953350265655785729674773414025735037284281155605114262012250014839394056367981315011292898064620031898330085018769600174079714284293873302852051091232290623146003026896998542301686958162065709668150259226359169124489619036710492001554428901513891476160881499159530429845108249380355905312742026019960437365354853252997159917851600432027329913492456353166875871653935853234418591135327243852276007748129496091602289834320849567579459305946112555935285159783616263256749649465054143006310296794247365802811612917392766146882873082717688675701859660542686844983641675450796135272135545354619504131240707503654308122669608981749675844875671232633050390799691617858333470272953702635875347641724260868028923099037848478165516823823241717238834308727446427001266185622189771401707804911593162019453766599263316284230788725900236538939946274950845245390955602766244734305533847631769384597952826174860814171143215384535572890371587949007230223553361712569547393598945937499940866487311700561025501954917845936966354200929476144401228653745053040804973831629281719695114094550732785912836985654512090703793471247983671447411951252246481155516548517351518074885699882766105413557831857995063575558700916219422854503544704143455800126088433365761956346291718105874359664591109713965698592800626701018178777782110590388720171133607364461739369687026831823932391758371590593456511046595398039210306925063958999209128496927692312395036043520822350746226872121941984919863410093217876231794460784668939729727973791654509059057465029236893798791696616220472805223452836409063706685966504002369245186581218635363043180311022806777697215395193355079830268338070398378673382815837525652983662756723518518742777936939342009750519734653417678587960719684351265719698979902165694458719394958325254420197885741654792855616552573970463175695418736135662515212190229505475753438268598821989932719221951752711309297539234828094469639204970330867017497288094110511725061010086183184671433277582993379682140981113474802427418314150235533407613097411227470810295885430276204378066751004424816617075386767761913780512745634899304795653199766009374786156148565436526337557336159592377764106172654158017943343198821327444342695348561311785984558767371527021423468217817421094257144987056990785510411917001545304805000372571287483290441463925872319794636851367609409858936008158623898182179175099036411430987988877500458591288501181226170303707540377554277537343961350606164052387605822213861078772959407953865250270922184626240776549637862040070553262010562685786104459781422482550939754167498714779462241656468317348757632600801797984372072560188895310456435621144081243774222727824784737078732658316821071177109269902787921893287922504821762870330908541246136098006942310464454607296548197660017434023656956378146997348382177504985686017987841368114352212504840808730929876711667235709068210408723431509819243263934874746451130349925073395827852201612699852106865026406800829423820305471475818288535681477701892906561833184422345588936867937231226510527130603381503267780553996420930059528235521871029253306110580314696805527625506696678978847112966572007733715472294388442770376185652421042397390464543132857082595180072156038657758396308969805954659034626215170038759386951787440166932756980184280102400581144855589729837372769631492929035736599225725161281051917489037649254164308503644355083239444002976920944419145807827237434548071627342670886719526670749223958965956986364758262836476119432866479208744532725244047538318747883777836406243272073841068963807298166441536218068387187525030850385465893515536110993569259882263802090159599725312934573926174058243128782252338400556800526330800402257404236019680600237791999869509472131484747878964822673664710616104616655936783752538072760968672848756386060333651646778002594106113044888533051514832530755112511588646269629707376792087283073160924508421357533066755234033528067961276411869948774755451991066331583892809950091033855966778547496319693205858148589711721165761195352952808323423678888911896012349000097804980668950453376859783593094608926656760572603161998130850980592285129877546190880887263883421386630677959322833694740247063073850754909405912238845041935533671730448637480835156960713018115050315769961625879186389854030152398904726012561698330323555720030656763807755436449999483286313241040838592109047622941540389286338912343522890102025954866864842348629021415958388556710585087891073063443824971342663814709223682394131655013097050179907337792547359126187586039656614038784613135936107416814391864857531886363495791982271401453031039125757193821618301169739696919200173748278243654606938195985703265003321600445646592152658753039522721866487163681528064882928135965711369136131904068736917988668236009518622822042561482310711308117843050803563492699563082523682147253046836115068118181902873847539115086323873467684654206767861161271205678671248245999473226751592695267719612802889630892488171143999054206757475666106317203594133292577207041175954469022268649374739682061537831796916284882333105733751722269634750006254592206899548750635158168852128241020812802472313324088870829398652529274783043738848944014552893814624855242363522043623953542753799146455181035090227472916269056931785569447977662998639384927620013689984648172571235061071740254767707340922220777113388406927856458440071203847409907580811921281581825994762199346734440125964392625912352018751857395794142676624100012262100107334898628562003005473110606082893995425634361548484598902804590875564838777433309558826284930280046615839261692910902302023989648795231782540179470446526418260153571768802742369218868198072140269998543689058064839385095862853046821531620789254058286695198266086651952785827796856602377555468356107359348756074407569439384453021714298840926833507089309692669272041366549925551124324527407300222848789165344595650051740581760651308332255494423473906249612097371480540576210799873504331061975187615220238426109130099360855179221643106463195532795413627933999903544009006939211455522098316478906899134248188570164113241538924086803782591112109964908825510549069397436334329302435122234314752317218430156136501656165219243297348167316403838483771787883863053514080166153303471269013869989492512294943063841458241814836607775814326780372679834843665084360727060161759153626447857364272116814531112079525917439796682529227599822826802148102689147916028110873653754729144557238266626080604883626474058103839179497891418934359052308673830206920843890708585652575231236554575642092905070547537217504518582840795592614498210040209704433180835929832022307007912186481861082697441549952353149206359359450862088916421427343573694764960782718797391132553749390242437197804081964257228514817515029218531708344428404649988811771370562530272145187139070609540779246678942852245677251015053860896627625764554512946330465728881298269622434037113777682722115318196750760785809526973064945482767586643428516459952732422067221639292247904203463508140742445626761802482317589488642180135009292748618720996052152340110229778596859892475204736443695373343578452008344688114635349140222765284453107382184071496292752550058998686735414432994392735597702717314776230711017153314015721677359563227100365402259682566268743663641962782097558691715083165164202611447966122285907225668418730881692477674075671702353901687701220744564204163255507096213954897685709533298754160836640605970988675860679313400632502994424898542160790541574617352447311861149594858057365036059501639947378861496697763593965624674358406347038780499228477728492361053386159495953320231963787835027187751214977130558091048095327612475626894735506684408871712075287900148888409160006162092785609675152515338059121185072098216933011259806584492179507351586092450374785699804131171661956123787444096660078903239777326166284066196578996711020747265571386214360831960139404810031250657726840152221513573049182266784009391341149947733180094244892703479775558647788354724328583609697453472650270934040356366888584608610734042725520347367413042049322360183288873417864015962248964425462920635861944943517643918605517789865445805650926301077542852314475656601352968076888601892980375787644133180780331969789495140126980603004142078266493902433797485167118404788667927401941803842273322235001878813593775437769413017246418143561224460755619819066941568255171354272586332851800510302299318396107765185351551223792119587111479538345637476771323615677269212353441952673577826930422104997018261686742177105303272126177474077301492184438280972088881221357462869309675065698715239839675147974542533661740313371580021291715983678206100384527256689441081438216654194653760418613898440484623052458790369350126988126119142649853161858517217015056340094050251485318205516297054519923704658237277928894258889022764446316313073892873537128604879806264835684847344599492861852953012249556312201625903479478669222516917046568094230436227614402646419729390131938463869770974840572889095815299123904837475807431564413706092657615925431544325217145886981400123060772061176788697263749039372039968608351653514996426036572017183322003753372191328182468248750577947838512857888342039641239088101079724879587150492714591277493194908877259300051103094258956314920948427970909451950918049237046804029013349683521933737433482634171302374391740832757583515556510852424016465789433713271438576894507923102561155582245121548463104004179210447964815243015860499764168971667080320348503473435928625374026534308157871757882071559739931560683322975914020639407004234145736829528188765060883408584157196003705651104271879937614074368219739315031421521880000481755082418940104713042664477374115232631283310474858235521442996068939265803966290791393398502570058822989410001857178711441321242406258385994972118276053314638981058590014610470964256564040651298076421348961614683354034931832100347083837390738786394066101716950471061211591243076598890494730847072246478500804941991078176952152101067791974131647986856596267303483059642847593206374826902690106299730484820552185268969854184771147188079309304102069572289526142817385595737401784902729668739177956918062835672080695181046170099232610005580989049404831079424592673232555158609058302884679662878793422404836931885157376436088039442463953772632587144710555580779633329673668789871076658203678796309086259235932416054133289087541572463048220302327543833579320867446164732194753676315674966284603976886332700320002603063525176357002905332589488545005295059603744316865749451736663146167251729358155702595369097057014852251495196902724513397786661008595566285877548652207217146237035029460437500513254726933750473951650761112533215806895106606940897733468612836041650237904183905261600538547470425934229233392544518620708901521900009135905143405862269955681870445709031448268055578679351540560761905240601160781832762152314880693076436540709356569337464677437987339916208014481034030813040511002831659602530571937021252258567490444553813336021842295090095111597783689809073060366229385302195993624941216841466014686653964033825179843936193357775482959619758140525517374488233159896231015663642665594988190080031981708293629663347087282162604751450926277431762854535526634844210141798643176978735311486643405339008691475657794731319018700166518965777657243461142847854165247812437480234558308434067248291209897820837915373721864885033214325519029081025023299692074305014734986136372825134199634837824124642199299094812349746452593913191298216425198761321819210236247167042196288358011452693000148502922733379704716638565414007147606637530637605280144715863046083114891070952352884395595722076613502682272741754459328668609656746182411866288494698865857220065746128865803886476854617217336100072000958520744081006086181644757387513252946708348947422421498830038788423597253801020641132118990978414265716790626884212901633228904717506732291324990658915613498341348380174850654505624960601379071199124281549309739547737643289686540354452841229897139963857704190182886053157253510203314346136659272134604020090990404141631310524982805405127943277410290652565899536532430470543589286613312025004859161587078144287661159352884165364306034062164049982288101047850145306059565201254733055713726937875206499373697905467146660415623962447172649848263386302198663299080303546566368356360646746577786749999156571668229894582283174925394511065428239794845057858571716998417450471792595387588483287333427155375537012942763780166832698876028876868371107461399100783240422193504645533938517156360796948122486118406323187266156689244959761282917098124998738508589925625403995153214701742039197159549734867111826791980836440288185783968373783084861816991983307702808884824532474070933916976064998039728440933374594389499385389926063281987224914251381162272817968988766602758676226857617887330374916346460550925771054261468113398377441031936642511053269883269088505508818172093907107360707706936100330660149569565461580338993579058114357533334105574374856350133894379305496498933098757753767924835120045117270414263670557118230393736547822687392676269729692914702103691644718763359690357987699742700253368652881061972261219164126105157159547760035421572841624753308232489442067895368212788979664469348198169473442283876634495136552806829809539707566905878315613804795488791661688337672948989643866543026250980265259634801713831914201894279776414682617029346147606319623258719168389512053995014471293424750579725891933763990501116364062302333484001026837943943632670322507705424284617238180651957883460380468155550370916133053834154866408108189303314085171065986318845674529821873403954543621736953217643700470065185296815296325082656511680513797846949040735107158876204168245273959411453521904121261366927203459047458539002784047095350785813767682755463985277566442840825112083569631137201429302283944503186165162055785681166951059362049185432923737529178652100906603837829857811375620149030144850822025019495172693450021868073851670579970596769043862325367506308396785077461461347182289809258622708193998264330776251434447158096502214576108703221056720970293073075321039827640702023783625860646612992539779993956678469942809956018929929256132896084032471434281495740945029903265863817672745330786171185403491079238248145510055314031052639047059800273133518436926369008951820082469651959898373952279352785775660099481362033867571223170869750715795921116943846406011876833645054676769585912347432365160580264289260661915445879117941564324319540097816389027921250523289027087863944549913186299445252908895082587746824824959792068612871533060556818932865813684697491555762809817641495066086860461402214794503221003345348291394861459374784783828041434557119881555853651793731729718798820111431390021387060316440194868902729530666801247393225068092067446247368114296261713471452792051276684807035422845660889514477248975779962497083145234961815714392407826832109936837464361992724872301444938924107317007461588803059284790616105429925167908150096255428272741587012378787753906978550306987765123989480833539728653590843779054233613677165053174292871623643226901117400723183906976127550422049203788323008013327085699533775245582921552875953632983648922271935251173708202342882860793829574995840841168776833788577709563279823805601393176837485735769006596033315791885766764582911311062655090210928873362428338404574852464738736484425654157392815104445162022344053044644988247019265990886864465574924081335725575125280835567488846101414336030798612090463156586722926346471952907957653217719729384731248948111241149413598894068837755807404999897889874489412533331644700501655948998096688835325475668060887971452736672086584893490413775220934063183058614038702266209173632369730364663055015983257884117321023328112437439971319382359987369295766301327665809863697757689353342373693060981737966497810599305059291682900289513584178093290576654899888134201241043557823869019427150953930966424314555487606170206481517998706664009433422235912395650823796088408851033834776734962414268100916943015229856542346831142372397549912031922015576244478567607723221940756269206652565078093615829268826032170534292523817937966803990610442489123543222293135698634851984279645185923526795877753658528489476946627985097570227009783810539428888181329502535743705914632804809364678837402738668783965429900900725690741908928799102121035947031309633529972995679827401475977374793259345930719612763285461092095838747329832117939011557691720557943412658926908911602264251427273267559751467239463095725586936124919188862861103605780972299368252502142233564541114190380875619692027843741416915473782227176516971478757223084796962234895874677094321114615410109182303927137705586902461131189721295978783805487753270821928214964256559503298552864307381687404715733657476634833036513749806054253031589566762723323476019067153463601287277005603086003042099051318748384392702564489697276507116734080877208806635702834384846000645258591807787107973619035686989944008715767659335629999051609488379835512151460090511182297062980265219448622254885488015277392444517065507797502715313722397405168050378188706257922664560157760107395324697166361718409531720452791440415292998069148802469652705637383786879782328407633632079483351507830778970997623967213136245106056875815861886821724358560611792401911482798921778071608114156820674371159054891505772907414877185337815942125931550246440526512880788373233787317727379252785140226525041227595552570573259466879233966593715341327369078912613904034019136151157763555584449811991036608745968223381798529740070302353267870446169236573429827893751451005829100665008963356051312007665389168313874240580311074693832359607348636517198977495178381798118709034660663980050269809146314488003708868891867837182540880117265738035780097301198650798442124697632978198944090812712649171316669385233529615620335885128333568639284222092485383348077162541804721394647431713440788599486016555715964272698463259047903319416924453340492622437986023944578849755482664015006233599467866847543062936590325902872937949770223460758260303446990664220119770015328753338969663903847815130803427887787982204596880366738863397168614000135116843561571098740811236755422537380128108025630190465987585241863842011968221955826405850255803301325172059289329119233774726254291622245172176170586873671807949497707807357366308991721453955278171926025430923660564866678939537426341637744755726026263851659800431582607399774959444598784490998511670870441611914469774092667937940575817740703165529059756698885398721546199961254166441873325374552273894772323403265270226273362096427805441287203621345727393027507140277527750696115759439639639780804338468287312170139474758277113119475603210004925447989391854740666724917507154268578186089349736496635039923148092861858170516267507784929790463966061856972041865482760560329015450769243399639001425054394220190197726390489974730564665769705482840316905746690300924609604401794778496396101926841119485612520708814749897807887890109848263504788572269392715851594859549557937970115036983616560601204783296107837437277386516214526969072178753086401628225678268080799649883367310499834987266334891550654986413090671964907311332301621479541674511469196171737703663743013277477343200677156166169512763134800668940521881237479661590658457523438950561638200231364434200812668932525555224994928761156384515815939702891594105691420941821565420768601896196082493017562218526912055116611378113226696145737011482776784202686880895676929537349997399393736349053457177949552910422641886985091471194878141026504457876051224668627061898794731050700077036848204788074987904102230504812289642585024651085867272341025996455161612066894654492371243477664039701331255165050987344581937190968331347195522660219751241245179198069906814438570868519323756216077931751527011613951613641616117496807935262643870998581890847528671116600634888371364141200574633507303302328061911434538386325699564282756459822707719495032024046753748469942447604541038660489892703849922635145770035947249054787679870875793747929204275718010684981597025752736835015136351614317993226776363652807435327041427318547356267363550150447039915698456049001486614016818050111604842118544667975338158959648668094832162735842195256080781173593055467269383272777538715587970558812638540656632553878374790336315021220320761207580614069472353664754161649307352961676367323571688568425172574192962592100621773078621290058779537625807783648776538393271311463988089531872046284976415799738021433791258203055278070251186976461102290009937009463576595155620202826217959722077854423616697181751022637496045263606018519041119198683714184419524702250265632302727966783918958532269292976767772448358352808181139527031065478285056785805162556769411732055043988181534504826040288034624577172658126150716688486861756466024578482910485595861522404740622371409673422870096083896152233927869606949986219857132625641246095867914868020662595886540549246326251988156102562365413306080078984354164970977415781890424879984710117335862545219079254615783595910374914434230321994579021249842173035333834485255830216579761696214812466179782962188681129430349544896843577951700234516675446222515538403897238075093519048915187433747645537969049697825844002186256970511841552907961537762165184440793922145301901191712102580006174171134425073340730438349871689540037124902412864814727424029996625467382706237988521829692467499348251258425957055025972711851109254231005590734854221348706690105385992998743855105068998635941529079943502940709842426104947847270008735855226970247698326893665101043877232541044426622861859499969673608356651464351835653862322832196263792573766077548555093550674198541533510553330462851509700688110890217702055319386781960263100106796781090545021918912983192016298754664428626027222689294732751011596011020904522613831773468695107678542934797624723819223801314436408158431330678780257368872163107113270442830006761152048439492603021023786783078614130283283993720615091772639621271700114128080318533612541101102753319270938388918931187726462487480640905175696924683745737640008710770089191897603436242123839223871268019929868493252183729706872878711475975630179170424736882730886518356803762794266254290785860030825339443359011518201738426284069845429314369993117108179795757957035823829887098707747244482082354360840497539892780283766741891492628176344752614158663795963752365365901398380937186016112418313772697508610958774889688882776789853667438455803212485466012929732104790990075602963054590798534743691554558131799653121385724638231994626514678531707221464436841481648373317184057568897629370025445794308470116365438935032054181824012750888845815229881316743060136775261377927828124992356499813128763959448874356827469697100336662844704854469896637745960961904730926654579368631309807082401206387672063689855951589036448196734790475986926754128559567206434843837252005561775300763872349370108383614558761856818422088070600846797737035388059164155076178485642051364197828922093878913357072162616426241632067207675832366614177342637684895899994095224692065575701737198227225584059648006598733078158457719527484068043066817108558735202064445214481257848661664160569262951368407005820294777522133747614700969992322922689425187916583344909126008493401170762300413602212437319991971572542112726186449265055535077993242668336200618824474173913743370004714569503943059645660441597630706595960502248530462680024093005263027527050754601640835623777159768321436881716497503152307631401413082892238403808970011645853311256237947508997064126618423217564878561381276162973337081062410422329655463292303839338130863312929537560616716981827390718115878676449223555794176950619021564878764141621235676223350334369223494970409838015788107246561434344678606222285880982544414804279648063954264920563933492610683131330996393606973912979253428448367089449248533498157611577321278822863606977546294484047432959386336415802723207780099666187734672767631238916642900100021710471445703132712396182547946937432696972621508738694119957846444472948455302548787014619359333012983443988394997799781703556732099246198816881334048871928761460270248404099681264299586079896738748637490522958990470873074708197228498925559013354668692177874058289552270692914528363001071113027550138005062734602086452767306037092623050578778474038981218350179562050837997224063524312208538548336227099503326094726987172690789371908831289598414560498520086404794424807388536748495334965599482989093121205108551171267153867932129481934477466107525905317677227521205611783271572499697080481990460722191911299460979158050533172591370454139146257393393440542129282070618180406837649526770594241754588266737552285942253076081758973751964657348485402452391922577431092060490915362820801087066721645892683242056608267116368583334712592154882070478345880965675415432078876637377151169343098348868022438152105932282054645267442747406370184436222633080090286635712535300859483087076228338563800718516300617358173295323723798608557244845596498100916004984881661032249555103817699175706870922624643610498799345481324023543507611977096988078156040357069396947718338728893646170079896503829138053502608853989476564504582320709179471397247618226563014626467334269769367459158396892071910832017882053018789791397379270174778560700551936992631297672298648749251185323128312869700375757768303536757103906881607421496020042461850212583329253418158799522911294687128424563547234855182060263706154687659590041596243315853523960825435790854483696789132142545208030455384342151437746294272416852099346165730196245743260862924533206515209334820332966239755901640242963856744715850609547906647695353940717733130955343290982514243914602415954995784003730456947776282266452203971761133126429305423895583892999211703235612859360878646264337214070328202503092287157336837890170537785438648779118089316215820078892257452706297910003041736330276127998311335459340718294905333801271083883567560499064258808324531420859297484437487256551346276986878558586414226456675881715839363545262173262738858086292462759666265360962180447532701906282365530359815125406406224580463135003280226123050467977940217941016926963323933116338410014342660192430214761695738801505587780233598344409002552072858273888533412013088151177879045371189018860211219269142841223904306359719662577861926133950881832795094237072620958446377336177591752499736808797289946789295893414551905838416041497233237731086519225572947459854259784222008046676520557165457907919347802209155905844956739991583583735663973731515339661281953205435709327481303588145758977264602924200624306357176423660047023312501815551734570131232563503064243187716259154514101642848174042872635433584853056780235868469954062578491950938925330674076990077931254505157481989106199993971789685735623510765085143136481500432472478792515254965813259106604845581141669946766893010445910234052420706022472180771325570465992270436867008210913909219491254629232766338674735386275606827435198111183693045483628801660501372948242743507935684895444922451072673210685592009205489391619891077759650138075984673973469428707626605158323856657960949754054331722706186864359035575144717580857354081567266018881949435735485872789264501824796695982450228064154986537216321596470854101507536763102644556060587987632207948717818501267466474241066722016993614502250788191302856895193553305286627763783996646759478680028997292996108532411888523896897391089257784657350178828841255965555689244963840167355010678927074795516483943740361812528485692081182994686647967195618960604434784572237019268399366862637405694168965355732208422979533650529020834699450822711756281816318394260390885466700718621420003751395367113392967137625914092028280195383833887944972919219904683442884425259398078195420540023350770781016590631708179254514543083911374276219981086546528090343327451262066656030333435612835277510253975025435004183998046314435231622456186703575311835364474217387432057417539734188555054389208743700473923293789359460061896218271806228506088388781196057161101381167500730553570135881410688138553907120501328359698709167098795839376220700561164291082117033233136331533758947647337561469012446372425119602693354847403291836004766108726887964653389548357096160606295907454962862411066149632310187151192968779173437300802356001470493739554932412930257421945263567334207058969093973341387073349630808451074999858350027343838558624875705750964502432416498491292524236119080399579270358077389773113921281793532931789096300031889493043217018312194313290202105096975694064805280939546658271044922364175126449052391890400060802542972306014564420806379122591782358020909111057886213301195537510842525506630996350061191756476114685846056054566207639918877035594311951747996800187735583938735779630062340814155446361242527727150624077011484767271123466986664351428166121638077911847521019117915068317009605472466389992179614017236492595513001162027050663486707795953583628509180288996036055509529761114018567202849127758559659699092489865210156566760552411115636428774203526257345608412108035023147242259092046608430938616363655574358140728477488226322651752779292291216301206172121158049766805570773762747867657812222752156818824982538212302166597505200814652178890064484091020426995188224986612840354432518534564321911493807989182318334436084553318375102928327851728894098997688071491542812892297801264487347525870752108268744148603690446735795065762762864709419534308886427612202335698288364425388894305204375979539019579002802280379367194281439479051767600418651534105832958527942860485787250195372711312188342764465593812781937390281262670219777411770373210988842466168328790814660735121856763491259774933012769206160821688984470720384150462697651343849379717476788394994754003044841736633613322283680093835529789946602002787870740975061079851892339073526348258542730545611652610203793328373362015975276861201706395926904442708010599023477794605922124716951853073050546729805658036689109962354198343693371872483542861815916157572706356909321416233258619032557287256484220873989529795021980276567733629531142154808875346180346416371143381958448353223748630488576975202031408825080577858675665744770978772577053424846930804823859782032139109232111102390893962482854360222872791487170094020490076749138676021218420900477937780663475471799826865654523715463957660743729181515894637650159128569511955010092695955771433558039316295300575795507166040869553557166754067961778740772585725071846375417866501049512364956931890232596429670836306086820172239580842271749260810079030258418277132277199753191250860847713014630955308042674256010723745333997647848856845930019202796526068195707068407480138087505395385511137249085629384021406395247567518843350138157224604363392991111269739408028475510632011090841449493083935507718682500322926552740931520875194519597106533878757347560488621585426054458630869341275783158331358437146912142982898527181338279588426283407618762381682295451110492883210608955558753904319175494123384836098688498011903294008760021995909674857184734396413211608017857520001021326248143470012660383525075309257278210095522635916501699513233048657864442992809345941546692851241495913322423974165016348818318746605610179490186815901571336257993992871470695959001295948085351917801901718619007465406466308172270647073504402355170105036356922840029534042009948935367289315057812708799153209361567458927798294610185795892265069288766613795568818821419253520512021873264946344932832372330757548046190021546608248921377182639296448446607347460748122610050777228970630257163184618288862488614529759179391261402342057517191331576142360907789108650680358804082825900467995177794290283029112749381027279497643211356035364313207123877244817193652527651491671958351730342747769630402618199038289230912881643348461115552047249529491580310335344711995524208569259939792927949804091739299650338925142315290561618710895510116045867503688624878612494566358028419469347960376592883770307769741583516709899977044065971889902401174386612959772615402217722282236449114874694725872912401204065710326496258859519315220447075265295609506872249024570562836821582475132891109841096821496920899364865764359297193361533959043198763008466010726227924876850771697036801241025623881759217911952716311798671819767189090192037091621483731042855297443252585120782829560720613205121676615362730567870408970507632076947756368240397815792274727092589861811539030156736775535824954689350438879256360782600466340345316338405374698098632716329685754980404092023238948472241960737528147373922395517657451302839632182251140429362671752436224497696141209525869194788515254233510652058443506525336002944268229803415675082386426467443648935287417647652724344206320581514677607064183526274092108051738039867235142508312874692216629332878902062737667156244665897996312815147697574338030586664107352125992695537556542106431864612552415783893929821864434792970974491858220655583557878880767563280156152107437750830937526155722857668502085834809531165243749388427814745979252922581944655830567742628531549393141837494191014507183468490948782710162787663794100800389172218391543114381300073644300920139206290969319180968684818795599598438453855798308519204315357145780783042985832579626204819394591724057708984587670409863621099506934284775922614146739711628217458596149092924371435448465276459935037167643502457415164290222234269028513358857421037728666026692449052302338533800083630092335412072635334995621075009002726162546381445468219712758476653319753461376768662474635881403242278139372517698837353447253663614794144097359807194998141687986595893727560559229877257620810284419692646084998674549881085929995876543836682166281002453934386410514200629979767116584852560055957145961443760489019372076242804851214895545524777820639256350117446540953088941663778931596780606099307240312242027599473390832932794125711827635241583081137736494733218844006063234536174195564680548276477483701007746721121905882240250546044439206744602257995621668921650957129199104514309575746925145824862904962389793237718653347915702780439330007314963556763546040352350380876265940380965450320321117895575727756084093266596323408343274010306763316209038624201935322603269172900860299464094904644448623887558704690776615071406958702402152344258381926014275887414053449372539029615067925765698648302631934947570214477047993112769519853886418324875779014482368476283427434231756608806917315422653402335362477187826379981452763480736977809110458009432897332597816621722615430370379636022274713331206543070579608916824241230717773363380089938967906686085527484112741706199027146008261735913116966382338657570949402106846847657248640772785140137298442395426828414688963563012372794678687850215244436912968367604173924530094334417888686646130334382576015222436484452918168319783932992724716815347710861616859976791831472601462592089198290648344988903135526832567353055795831619390861912469245172829810964200251950881998862509406237814155964960997973247706252654406255227191082624759327934497997050133813767699453552309057051859191602025130607670385198602029718180912376776014889018642101652788839925681304542042921767462100246083994160407998918863824253496174383374467796047063221579434912036048936332837076234664696782999432097669237915994059304514479529431512206895312649145205940818415005741645006180416848354831888750591800098540555501802849027640684152426419626555620309980458912692900962475567188360907665857390371011561070442932467480661951414171955543393005731303741733343106906923990013662166473408695234203386994484750091582353612522364213026711392690650353068119248973412941882308998614563539188814160437061646269995706480068637087569428227383948055996895909214389379048270278517840761107259514873365366241221480340321528717798901149504600012825884857305865409259928382506519691960066606410759732453509104130703457927099961548147387519573062844103288281160178937621591219720285446013520995437708538294868289503977515900995989379149343451033006312481905142651816489312045707834494266141660187172053286367164858374028924670002477897347744542187824651536302249695348917924839258743875714419192527428226086793440868661008654298762443821751721759569941625667046263212710157067444060095697511347487479511368561139989223071746617379320859847126978410895112958715285105061367248683494475434701867284315738972138236737383861484378783178589697902096457568975417331874982906110841700649545853500172342301623440853845540986675895049013727669234478956538601952914349211736813069920815328543088891651571191998447893566988476931943482207378069825099506774562025393733496358684612337241328877717093992572521722297288513511109652856422725180418509447124056454957471585524130757678843636098057381409270282309003978664103911346059862127196737725271673398440232585982332075008276423518597838142498285903133713899706686964649239497396649283367233123336748428361038337345949017863840823593912904770090659017785330993287304177156553238415495547822536102893866041040776998637764113853764000071386429081403969265116807502838872981574589427048957661228809396189822471304359014966587769540048833086098417632830582721471387670752652110112595702214624659446623812867129034390400997877649837636607406580693690368063192217491359154862830132663797944543738730509132141442542925313285074003950797572127512265201247042154872922846369581316947633209963801332428818310711251269306898555685037464561976676000591966151219358704882725680156544832936603130307717359361279754953497301840397728780819534113936790698873223670937062564002383184824872884064836935063831928784322948636298689190385533773183679642854707536280942942092878189672646002298666589563058334148074846088588922651095127462596294026115489956301914387907097307272066744823045214656297784442464347367317065305903353744784774059778412684465526057112202714349230753030628845864227617883796261864964833627626622552178155469244574088534375482830849996059498158646026774213858307250801239253465014383719100859947339349920148547226525806186740538578387665957596516017790303912515461524382371190918043725929365670058500088747840731107261304983113163060880447056964420118505818473007309621945048139345425219375074035437685844046566206948534223996195892340629991860175568730684702332462048593849048249248263185448130139194430888855731443169848823861424178720298347736108931581974708311537742084216527715428363835118899280343851096634191724344450135566860576871066961003314219494973651623204615633063951301476249799767108436123904765766890142654258614565309084140530759698977008723626942522948168141047412004261280667864919922445836268065789489241753868285839662103181382883521052446931186853329641038479056886253350957139009695639536515170424400383105709205963250234775633252955755960318351412242055740233847456501164617949902208304012464377973008397247116454575582232764273962328086881711939023413253022979175793062942192435493203984102788640120754302956818156836654970267265625656876408685121656367670885749690037927391023869429056516956302553331367959040276663402522849517989051847662884608837703141231115774642569211612373463810761575905984942520342681192119308505883113150349681993193671716197737831085918437744674939653990743205477463398789398466961406541961201577884376657148304532263397618802691372689378119086312870081351399158160859745228702809737799048592866191569754685952644601689460328800883079148676471015959357473564518177064485419361355010646102412623616311778498642706087103973012589890475396756051331010137397277395199344761775887034624351389326075485428552564379233285011227654680494308162529032436825955399144585723579194232870905283075606131952973317343873402190144491776746815376542727262535917262520568020389034886831605767709980908313596568547390477518979819489332971965717594076213185260314380877975576304735344501380502779092097921871741928359020014682687337310088388912535196060355575266074073187725009045033307235150338164856311564152521010469544120578633646032611039575449361822740928718299732034654685157662575287576795311053106961270404136044522924461468930438779788765725863794672524048827680154099935927985593208114472857088052020793829587808759264628683084055411737318939736250182754587593225090565227056919111263692287312621835481385281025908059736101232062314374068082798871732522099443470253086575669468004724331366944736211433971624683056807860585323835782891133708349486617911656872777273103166028711876535346755458154598796659610641687068097960043708046683551308867876442401539839710133613985015016056654849744662204963038092368442839692076757960411008519357198033041910383510418494670477039429962123631386497425452567891662101169814864220566451454282089938943402817005358701803606505900618866148488346805396765415483806320143713459208455887699072564031945136868423844789070125112775142123838609271332604120396575695366010228137416247121152660713149029053399719381965160020053313961455003489457845326899936331872849749571668454026995677847324888947171209683101116516029969307576417089364949057927731333399892334102320316225392627530405332645229990082303249040446542787228828837321802191181690239119522143016137769293995196716624104390555981068165618351402642848504009720227748650433819428450056476743349508134772826067334238195863646769668188231520134955137879418454790165944209398460207026375305804501520567860350023350107922925677495019428955383576197635526850323193105055710859897650973603662287845811322824652972420693372856879666816764759789084530174409549867091275490152316748000027609950861130749931631279203588596174010684116444405178029004068688749279313197294247568153915321800053916423915631039941767487201000672459546993926218054371715907835071161375233570766374522552731403538121077335089566046630061637991242542130739251909608338512362425861536762234551481268615934261284376712426735400619699756970372880714547724153411096224485724367493117172572913362845899363885226947066004440669617237433218466822803957451154901238450021969410255477295089486392915730424166299223001642478868187624322501583122190804786377259027553992855481701632722791227484882611897089902133966919268399860784179626585107076105291036922043089072798751311082910694142142666214710346275025828080103576472087977900220861544396276802953687716747569204762388628018401603726566843230216098728944569533900166655223155164820654633597344507648915195291253090174275940786612856005040198968908910986510907600946695103816604861873922276687712725255188526036735632293292054252910554419887243480661610723386523633476125359274122863256202006787150100014762161610643633705097170052363761423758852482737218306101604074119225392964384409966235292250471454355361939060703230241583021218683622095377366356064618177631385032434152438231304496813470861682989900543120696913347582310717815031477848358763089876223480930331724747523982836163746679255320643983576867625386462047287909380475621467193802695968294952714774472157201907486119040313267023418368926386817819405326945815883843322260407678337231308863183415585449732249624897793304862765574141197654209445641520317797131542498865041940166237318118889379699543849502330526246223868522507988756058107452252694353711802337586057814825947096519731283693032178946244184450607449156279642226058922277659278488978268476916175526386972216503590825944631759568060616876200165772426509849125139895803364377679104259165032058941785499020821073498041155373021743324914538630355514157500139638622568364245167820592503693490234051014791049873418119690955022912544017568144133431097035263419832803694430811315178736996918178642009518746831939579265250271129943884452523108169693189213138565577485186904172895256636344531547958560533755455864262492468113604301633668777579233758399019333080652674842177154854265294348335770710545468244418267760341582631247863553761022538740950907385634733040478088040344641473525158744744637077808503552366520469373764389469743529879100855177691311129639033498863762497279189452779744097957517626984261456624561097048668456224343612741649641844119266423869254605070751260268955507294751145373005652791435610455702139261103139431465388422726730019495484728431547879247072716388578939464798242256592192183116189951709742486927937618930793885648301881372347457547029880034210480920108355262842129506508493402555075572905283632780577475106692921831455495886312450644074176351468227151346599848126237578484713660371770634599248717949732395027161791001591188181125122844781556539325749543997542912655413955814633939728267535251638983727785196065775345290219974289252708386561558951292616511521877061440468574551538478519008947377634974104867118772301189686902415337684353964876832327117624678694211368645887674878693833186094288065091466042996709368791221198451766407611578658446763497196262141570964894900124996268969737784582283783129274922173592075211862685199324354227301311847743965253476664216806979331618812196545974064394419609489017495340293105633595634329197036720514039655508675154107236988794975394732182151461509182257627740537173101855694602664566483770942150693364511699306193210325915764934065945467345698500731479665912988197295113262691232274877754831124749715369838904260312055489379439662006188691183872178936724295542669854360268411284975283826413186970903082152173779335298251901025061169314794432147398414147192819642067336321838544791612662082201251386463366939365488192189321856566610658001318990571925658874952238229567077622756927942087461037939692856917693296044648146941211357275551080568562246890822346247986753271132435116948209627613914601442874167155308693656361640855024279503892706693805511927542222502525100489615869005975198550869076977582236023032101327626169023713688051294491016410406532433219063236897194912820831609731910393514851041812420861178498279122691881241351478143995260470509852146099016051747349374705733076316561931210647786949331333255701759113404553949329544076224176534934082538588272963584201479973820722563148256943661898205081037034200503955161097121963573948712347144605686176174290844815687297392678927373281714010102296335448203279310592367224551074790358233082853656151736184478126682893379647587652466630484574872749589345777356011144192218955066241374483349843260388387883268481843378072759154825949153362603051428662251776491729327287961085999886864148338898972328773385739180294314805636963887485328141024378628566148766514028486990731500144329184879654246572748391548281275479437727298925647338325361546861617318609802507871010654428386212126459289785931695660295330840490540210240938984689986622172233494827748658879686636626625285650934419312217725776789886714449016912013005359996355839994283584909671414235263176783244524017559445164115536226017263054876802644843587076502721802643623522539550084096997473654133382971830417935340555839667310774905478518412033464353677164061458225391634961037551379527000563123201714233053947901933962073287761161948819202262595882975600847145945849937409543838668266565528113886759343088269173645774769293793504011164968914743679706348475994231137647961591166370343154686072602783313711991607403343936664037296815909010183799737666194701607077471246720714799583889984651095460227440392978152093382135134842962717856966548562856160526828063406952505340120139789611450356015446316594673803344151844083886601573420709784012984148270658391370825326466885075034500869476003524508267210189958621449149666431840034026835175836277230852587990006519965857636813838315897109807430805040613757072507671853971830395357732825622633491247154107357782048374160454181655963841056398539830729501052158116996271419794803518873677014256803730696295877929964254084262806226803408714385519333929312497483508138468699824776010796092205832344601594209009713084709696613196975990207155291706771960010233711852526043565351451599037484935795814133374313797564485705360549602427467956780467748038295547081819580521868040448512791316987017354177071449298642238071227543373860981835292183089440850634333872456463406027900832303818227548650602319841309600807285851181682152258290441508282247733430638512687649534016182691067941953692503092127353911612830163066077646216513955787142985418445100590756581354821615203657181360014801025100785055672632760475090482360431160262749934049515763013028331842252936486741985155733513098718854923676858580763579803901453224506655678993951790558148438176310513345650288589165872890868667767274261404958404152670420114101087771420312895360782156808127600431228988787604683421961810054928559938769388751352375909908043200352203764928428275309034060342262247071362474608374706778257974301294812433045403519538353475899085805194634506844131691460408392237685467424945517044524619786480965143526664671397889336902314839021722733181922014532652309651772414775079454647521772417713365443099323310758274581794182080685138447633088617539514583922215717297373746330873946737395439793184700119735892275264619861073442453407193546203917537309131385917934869562744784086261778940308725574993811856335654742067311092118744693663966671265797373334772602222406656834151634343572913154416409998964415104989249330659932424010885630500239385301045029281391533058076602425348639261884107382147399434579963791094528230567113334499637781312909901877333926835343209830543231394880321543881085078367726545312601352662933991089071341738491706184673277046002115304671930650255003674150339362871654954393959488463590786272264242594701182094185431955550066999761811145871695149161321366492978595890841278022780178095157159928719559610354687545015731225639182815173408929105461132570502554055657329841834377569547877518730984034407360003047074012843242943806101315194990099535373707642847527318514464893162554117363986183100939605331050059144972886533723110611214883832022414221399647633812300430174839819029019729488887636914666946979456923879197092737226483342585177407734779118346053690281304149455279462247012229419639975806189938241120442628301064930698613310953493614517579786721259949207733007889989064615818813580912999150268062339687544396707421444787200908999460611686995416776138883026054429113504309873134266712547621164049913922109301232995167591620830843835396603814667612900285700274837135920176497229183212568475969010585063244285631420153920401598869311024741894080246897565234354696929162824225619284398157016360010401779719967301410776254154701617244441331861690548469269309754067419504375247496529458289900530961724576881754950106308080630239308085328388248838496336234310162460502154777565441480086425981502791926476602373519914586778303132332246172385134622953188426697712572970227993930094550131498902873740284705250971609054130535657556929018999943499451770304997527296632603338337826383013717233365574256170569823900578818243344865354248785593378458819121834779473365928156374571184273246156051634523222206694763929632849529901772793908770170450103800047481486176136980782549151146720434539795039531410558189533664464846715629440283647347282479521751271943414053597761518357796589572948119053085430151254831486492355568900726313268328865489069510720718199728849943982453565160084210731630428272335303371413824228364783762236603855717711494524209955870367637335718165689205643016861782983831903473536956587138261118212887805148963802345889834945476712854097103778838941754582309465447915277605674068285301916176332154450185600607975577439305743143874300857868419416213534341985788686568514253790415468411488889864181970488015509737901283108818833153168165597569233518528866248173800933555982533526266689872187273474825171834747177039745424516140468788290300771295494441590584108022298869157732072961014122991469130828486404022482900973592980175579147227551726758137342276248070658993444483631852355755072018229800205780573871015051100345769974869364041482166874777412394637403654886879629638734667349420783197481428159786953740678194254906296985446901559316293408597691870577279870119388589321388338986207012016705171645261787653156239158538834165147692036987897002647114389460084204978185914784883407663043665049807570073432399264129427184176057222064105632305373423758880369075768711926565786170882123115802252517232728191435212383437678244573182670803232757248945019916823755466423802448283321431546732012943784543596659526731587487061187041753469063521203506004030352309964234194715049053872482947414051747029446027324687944738004756626177077335897827651963570556351293281717246553150078947432729802868882455619883854068185041879168646055567137138192572041974801861049211175624084800528504879315249160913016494301578707122866491551553379563074809719799838002593300497385552090390022692132340713095484772120493310353114461682150405617765697580409181216907705518463801205282634337245019530589575768304237928266154735581598299495490555951408301927170398522131110267395646403398573009975717480160709657265488481668244717387527684553158333853191906013080659092404781916291757486034524713694512915195397734253839233472446711550530666115782220460584181995310794075275687114342078506061104734212003831008837039311856527990215110675866684674839733652230249447545143205503894397346876207501086340651118158907824598755586704936389895808918589450077111736175752873602695573512899868009672358876875994113122475382622744717856755129893260522643092730910645786255969103991025765445506670331759157932870278617147342489285966391568084960224168729590709549836660519270244502699512931741864149040214820188582850183241610555360437911138444580660600658737760286590063966025330943343102572308970410336603916915923140022598390925395785506133604002960489977216578296057632884576447758719463724427430177123026851033970589752980887450002538983632763924475107033682871479176048253907408544840494971658872777490873080993000264583144514219916277619604745107476024271340370313996601691499304170433500482820525876294605887998284565822088197230227426030992016183626969542999549542003446318384515683173275059783722475868094495948167744345724058447008037042941845124381711264483537338108184211380342655261232414710816001694241940731476951069931605157905602057409630170840332933011945217937373047610112004565286013402252735044079969085603337932590971386419181849661896346505734222197674742757454124984440083854914494724146825744161488590233321657822397923419172501710889449259402054792295495884559882646473569746350702297991846673158398376145620837280674028554415262193852637888188641316975354338948556721312376091581952112463400835061844688390841788290712814455689958639202065157617206624931476775773970260213477406492780488134989362187723030456252363621338570991093583625901405622495815773327668060401602059761747680542443444200877369207573015164148875372819262635800000440608150349486677464581792667833166418638429388842136172674621658732872490036891845040148794190411162926067836872963371500356917334031992915895994865639341070430879342765793243512103403496881680626179032554322309525324542723950417599483475916317655812040042961620713352156379827961750171257137369908453929052146522937372095457318401549666587203164108985537633680177000707363414998669562639628466252393265785715420771284229668703969549969599484138110152996190992645362188065956330979950053703281976911053800547771852976845087736266883776367165869808636248985741907103342819036361589199132129653606335991813823877623241057207941588482335426265696905167941324745077621185701951438002558913036144331607369726521017493115156202948849434786614751019624939170434023594438401645268177924335578801476700252450935082209533244100566349779887353671326827707836846649844885921308043150684216400576562874542387798990157053628136033280846652055075516711932005470116897641386820516616836517747954989944116498576571969882355462576426920464727879870351915520856517167764152411372326821928651559073893894775689991597002453417658443412267548153735460832919686607871662878380891998094646728211457210378592119217769908785620392641426536526490567844326612488649428365939191373183441374447074769238059606183951583521813606672946816527201591153327070807307521518897593973434249186862865128332765602623458409980234855315180620351421084240851876736078957238671005153006700365191018712744378218369592670384352852569072885976237632647941903762514601989197909176571050238457497007669951625019533615925970935228541766928506842738893272858859868121767817008449768240626382379735222779443772228256601972952821001676987711443266617725807388310812011455004581577738275058973532704107323490779859923436223960875898099268530328275605854409430178662129901964317437929387515181790075464636245645458323794303564761854182647817081428125776123417204590197974998546126345153938443194780345071762579477357655431787314090799496216868973300104763439120588391289586112613338028783043100138781147605872337936062546548946133935858727710589544648233689136070235429623512082531897618474367450364589948844185110486910661225297551530404917741989647777715702727181614017711047153810646310760683981420714823593409607310569380329270538430854310935312299605579064346004720731040031224019456393117806082138134045298787391103043801672866426321561992819124744807324739028119459972329460725545545558600389888518388394704761103353600884829019701586023817699050294080072184903483361884936537350394609099851711847309943316538593250525744211344622546286340912702304079970614612570282554617985350310880349086330920925725919610498338307625442658207762499077699236541796268175783837845538662031732861039286768079101593252810922783942823308576035465657122496034456025910003519247612775685284888390335836478400208170265060975593934063626535315174899541411107186949122099136035162354203199907772248810240545786613647438840066347276647954285532196165803913489386918704755127122402843003154551761968593653733482098192037942998713764038138711680539461520462754221040614613747034879885961869905639815438062611469452896806192105165817871805297457964003769622852150811291018951243104534519025577917767427584247843803641432683602990281651265063729319228942359822149478572886004295963202828585062302097830079608491623811221187920914537509256508829004814593174069557910982037709759390260487330519300408737387824163120339142303746420650844904039755313260588999581990214557036129023687578252652260165705725473196202399910058019314787922669558931623539085788327020611683078223644575112547632889840256053477931325066380685597344388894056756589771533868792346081681119391056419374958744327038323440020312566032104469518733358351319870418049929563813850574747598396450013649741912637204631478527692494076883390458966717933033202783596764999801230813540097484589173701450823956766135071385579809470691979186343540600201264091863837330661954134920484785277614621716685452490953215322548285877556099195586341653392306972836999279385398933771871297845730119621860219984049986533138082211078381338316708572253208903775484744250689619597813386188116107277099246410054356959008950077287836502626986496493977520796723000964147153230604134360175584743045246570910336200262448831315885891884344933648302555098650541904659277091979631009847418874441259864483588789490879040925136541234665466535745577299243048632939705176347949451812882191090860898800277748746251904255336624656016547081787991234226942049132025842097898277826342165826572622613435713388320631236427899779934660695159990026169819431152657216513687239670042369509122301537039880992013215749681159008711018617416589754498221053459491532440985504958900898505874379785347177851932914940740051185124772301581666256080473650423198022301813357990269822188830795606478665329737392940876406478553947638439715648107846436796125092959427028438475514372937600464338318909514633746875858141328666487449659727406074768711190576528223168477301860888219080808215939757127422501615665375858041676286846033621582712104547223261275107673524946829331005295829312994759836108676790450782880316779910771088800777084422789019877133437085499675793276800262079766730831387376120352057694528388934367276655322843235451104626321113908221754951062899876381315484243073083653130221722806690106665817162391714220711744719837200112916372813429350837064590578436487386981763377036815141596504427193713995564387957126445102482775762184728717451399386967056648886772286642900205429208761373375907996282160890545531206229627332808035880842664689715795891062698106520514964576452512270266231796011824909441144035270051890913692796002425894697074628628760214654626702487514800652793815938826178277864790939402351909251109877675025252694931701724219390412711042564067202735609272759017424706208876695709311293916495500261569503426963893217710195633980557028108764793915862305454083291731504229691898693570515821966097914320313406112727837289710434366982933686024446432148138924254829457096654539010786725249952057684524751177021294412482969458947687423017261258219709209851175652301175903872156960263450086069278387545420634416677273301168939998039416078164479391026347178456028004457985268741124627789395622083630267776525560040734135595454484496948795347752173663985570895939501805930433867162551848040424568627022837339810144322698471334682548226632664959952642357687892112067559360974188049427405810250270832369565498376766623451293522693635881443134541494557431148098176633099811343957576568979635980785270231256014614688706600971927314012305134422185910605609052787945676233117612412991863008448257302887343406696598763567433258146006091841589519565828308856158619323557765366787022841177426954748183024108399672690450927928710972935243723118188520356983032599224888116592291267396119376889241043327691246159067834487277020988934531870817331753058185400349444453718394781619282033312281375536806103282017650621815125145184557930599568212711646624610033160673573559504699617732671754802434057369793582860067266173732429887218831885076690572537892898648208833822308407200619150462712873649087850584981974317946570503498709430532462075471971599990064453837885554396234927454614036009719941695825980432459393419282166220233558325812657046605638591242841856948020914969729001439301385041134244181095244853475000243724283056966694528648195164067263477223674472646158152304364396745542300939850643035573368921636055466028160317090275488688403448937052370274392164796065604186488649389663892921805783647691446294129772738949068753920743807266367634380700403464190042542057321173130275568896050710662254085893862789374517429269599547916321153661280941872072962170214685982845841268431023024636909796757138852589428478247035338570733357849895192784399333180894382050416024371251964049218907536852624594790434944473214164996081193239437432476355159630587655492735564619891681816753036367274168941461674031847632468962900766146152638832147813239162583697295144822514019458340488482751962606178257696709738669212702653074089429089605434692799569651047509211725883662717934654234545006089444515989567350645335416104168530957969373233592442580674523332596614998227126548056117879451413161257254496969263859072751100629349186046596100900354562661453124189337955481165612514540312925626487956656448687345121181996966657866301590051632989769793134052902323347426526753734316155039577102505933160843517893019718488418523544633951770171289911015853483708080584990529314531300943248971709425763110253078576621969002770549861712723123960886520027573165098986299884930193198333900837559593702411435744809886942112145740485577247378754498807615541310222726511038336392693367771867364365183638713736555699034504176609611813454444519440876831365550400233625482027761941623175106015877302215353213849566241939783427278136596480268627496868982293483181890035486723390272709597213040878248255456961374591117652059317372411929984498209576955443962574631787815107535191572722439121048398955232388123660387915119427617804212391046063049710003497941237426510824001294947142620090657676924407588664327658551189579542435967531580022151396132409388569766324639133775707586012698276927255731426955139360690387131340935677969279214458524102339038812409053578170308022037225334481444092678840253039495422065796570106220409993521020105299371829422315116496901202993339298332278449553325779544242879515683626681685957392648134297022463786370588753951478732605040308273588829896785656220201058089909584399112396585873163920969688601354438489987503571880057737376285845400786524321349158166562986941892793979546161612201666225183763790038602930626523507926195266797878892545041800359818435664313707867225318723894874449046317330747809876892853388783538760156718566560773976704435004296210302894129741640706379917249160677079333876981424917350502719220919257042232044591633003630378556380859769803467832690484386307721812673223637618452973106441095190411749148652732623209288953716818786123942145500246290613806000250083871040544962162304846337120089509464121062866582635903178212468597890708908816430870333544551428272074811812257205521859858716557938533178207954314559193429816567605996514599055119694000358566978358143933200733129171107390011528293491613853774304330135201677853761607485125646406385998086476408633214685757749255173054279006450595631180262802345832763535770607264507425648972387843090830806581351309872630024850495857777890685818818628513256070996370220527197714196821799010032677660519195380087540816096247481851674402933724649499263058365610701106537996423204384267343812065858907302729083480197190216584395246719900545617690448948921883955990974240828054738964263020903923169168387515890370234582681550005134994960471164001848760577082829151783023572479788208969294952200832459714921401045200674819712933154505766277630351726322481925799438400427393557944088409251530066994273274434794553261216793950102966075033445913498642625848913397186431149209165119537050520541458330000793128952331153978882188769879886588189973183856914670505942724020723609740682116650227241664684434788829767676120703088515115750921594723876309178895320045130744630823067269536597275848921076250963539944193051907326703580582016363730747022428235323058027284852931844859201102931511206387930312444643221070711447467379984381952426741707343438531924840366705779915069442040822012803136848870726561204781893477530977305814943420567485736837927209452650123571279364710874782733272538882186102916566459822984874802382757761639244308409003341515900437778307861484128452009364164532972933954075602998232692966232232064163659599937370943350332368851390516797114460359966474570321176785660331546478231885575596531432986163158986053350669014382531608507354496508858434282477919731948662221747270733214754570696970977064377342181830696718898589832226329814347726341149327020643184459619147983011952883370478832533780611651369958028142328939344274510254543150284838522736698532756919224035074265161882886005498638485564118511828031571655100243248314483518608366711989828283505623726965476136182787083177004321165479057053123872712165730973435011497278467219123137684136791262586310192977949692983718041823548238773639061065809466910787243798359815538761948865558846310731692720227641327405999595535916930603737225474551480932678538262862024029495461562839714552301307531033398911202316385901382680795618610646485443126226648375059238755145633549012758287215158579516747886081464704190917949757294600679284898013750657285916260971490461702011406876023780602163989517216356931009378045126959594387233211542697656959332764654208748110369793315354447193975459598506902298914514757274625631292930115705647644533362834781135456013322768585980756005298419552509192412887891414754393312908429402942744509674644604402040377816880205094062164065302519329200489102780836167073602598299949503927104561944700657080371383311624901062514584407516456328462697518310846794431619728122292554524673463999893644933546910850272544464120634143867872837016031326707837698630930130322244073299676084292495915721790645878140277087817920204858836920774973076293167303820576975234480102582020658275368820430168085489748637439782860883798816172570731557774795418117466871658779785479631086043996224699692962323748135612134028565430823735026017096411688967491452049608873114253780892242964100745505208020632504761710318829425396032380096678188272617839430543626275467776643484070382137781879867512197927622129503663044184802971184741446713654412284478526658199561256047722278240622453846266067898445960174622213368578327338118563754925328233418896948161862679863417044910706509160414499773328175314765763330531493892814416795958951523792031330034613096507844402917799003640934966567904587429101653495740125925664482393591123671718277446407490780997354770724852858173682450212919869489005986446070150538276544264335220521261116902416540752095991769131795153223344373793786276887262782088386867690460121390804844296342309993452939767080151592838100057938130539073941141255216027846352083886781871891536646123156779203226682318547802562893355135165167316983251929585635608139632468792592109518230463686084635436724295365581590991438626950383682770872376982565481577304286289943701602480614874959235872145823425336721122190480514057002804061971570451952063878334791071541539167712774341503912670904787600496775290732002757381344394051978172448800465287571532614654358418453154663031308398514526534751580459551691012814173106732479360611521747989276349025809894278426468249979614392907823119974790503188553466471703448882412573613723509432684501606282670863047449892008817877579752584890623058566911456063486965109357693533395850175709066556954898969875682716460490722005196856134292795264650147556303768348423391722297496473721130682624383385398568838454100778982504725579360658456123992498220770083632750331805497380247107917326576245058813830641350695746060421276413953554796403138885623811391370296282346495999035757435992133164893368787443453240365935756254540191131704196022807828497305673036000645539205410302256787046241407552313391147443159710806876642686832354112089424024723643259016934060310760004374100329010994147260615819200050121911346303496960481383442326491910777418863997658883379422058513678939864594941665358547723330304889876916673639879320793633885839672363069120231277724293478220114947899386412911113437764133023155401052244585363911733740557757188381903322593413455086000078506816232660034198297224746805720671530275201256733596880468074047962763800818139535502877627953158716631721547318699295414540080775144005371811970878662970625149145919744808129677537688640765205541903306091317207990199613931908832668458313960839198167089982438372726468467928067657281484720587605265965768126891711692834621782015640705368210354055912998798740182294737218626551353720814732048672340698606935330911724073309805614583921549486340274782754881040475326578961596719759925107570196638150564548087953424839236774238958913401091979252930832621307156772709440203914562809450461645213335787002546032023423812488072007761098243160632545392891576285059018182116472750521457677507894682393759895292594040883402117108253267817755050276385944520251950913425613968295264275359629871059590135565288630291847471316548827810978069108894025165822018725772383829405286264173614301666349391245393173980639261201941673433965030607162787183980101039733815687925668679934154698836754409536041542254327482214229774937706411164290092449741584168358422586678041982275093180566601355873721296835679134466691517792254558934407414918364954668856103696143650578026736393545438086557829032163472638838420304205261671349757163735841502643000044482358759721330309057014956745332902782090644742640882739219968948902933584581563711835205104444865293529322683369677957668650515738939538470714993549760283836165059328275722218795326980878205202937546853062511040962359080654508365851153871171018870200307478677087009650315987806833494932018665901942574601012003681745378531050918822906731215141445949262814767498391267760865776202258897279074515733065086021497525757693470459396589130519641729116642763555757300526820159479452897406659158380824822973204777767856400879363161713839246955568869104277445874356370848378002038828076334867692945370850434401896349691920212742237891619869552805587237924889662417120944410561445645983921634871564550582117697818143826416022131489874752430621512407832355472460995415277839968728395103939504672007761405684749985418871581408425803591718721506328840432875785115708682598435176592753473532204196822496816532602385767910178568952310733197260213708438923838357640664773255742488796953207884259634451586479469593481131151316105803967561432819035712457388263561655868987126188565219278757305366405942094052105084511189067457101330225137047081146042473881502108262217264407120250504073712287160131497575798987903232212300878326809580445860379325932462931962174570682700726479267461727109264238732753478388121083998815010495808659894860125123468526249351560413558824145067379382049056745907080515894055305602712332700972913649196840272364142057123000922236582659834496741171664495778382470927392224742016400620861431703772488947176947578432524962690019050248146625345756405300064308963589702314767020196917703776720973877626677042350042449532799026997646188990546042863448197494808194330207434986185619158963968511285123070906097240142954963506619857508534999997119712466918974642175172656673935822787467702654829922174620156726017457294414361057506347599034112762569927033850433113635746526221328267324955963513909979270981664339691707837045560823809450696716556220838097628276129947621291629184629454857552121224886301336443178590000132443707256832944294683873799882472499759061937739823376729172543395676580199566345010969831705379735869277237583259769780893268098700161624230218614089336156469324740414322903712063349206687638181760284541097155411056992779026184460740329756616270498928970422262330120704988006804285257530695580819709287341821383074284289420730541704957417308961638168277185056889854813071430287007603573613530719999346265593892252890995293393341020934368621289647950582131807351792026349610167185203052565509608159263718615142585122683195674270572734930827091364358069412037440407356536854132526182231881968970260050741366445745144588821439905450649833518717875756414607730604597674466714098372764554484319361187384475948801536769565824036294322742788032143189052023475431037834459916501579790581622863862479046913509942287659958688526909698854684028337634637844044639888964356665710978266429552043511721105055631681703105937559827209483060456758509210746416201536592006388078754158420264784375092631378994959499400594215784837810921510797970827442782074144864791523781401983761039509233278058811828736440828665595441601407203434307877568083435856554677203337324370362300222850511814080319846931754468865867150432555618046591752886959690459049215889312493203856457280283085012758767741781838337489025086161573642688224864724551444890389533510267451747857183041222732855554758052854699970995773006371909341334625480698383252845538311149238304696478210414783344735708298956157564050589654338660956076378351447513621092935274052517179291605801851047759905839507880118880107991244833383137376838339346757544775230334799919071255482197777994476203245799621883220665183629955520950337896247220715997394274905386837666327456190580851416510267078065096535707260171757395558506116507076617151712641847103393339324986035673980923964062577505885547485237444293323600023160040049200991586894869792071393064506943923328649997552841152574159026798959014193874509375235831060530578275882781674388366476358224702702662211148304506494869289260891506646605747545502378447474590301205018830581827884364079610147570210425164607448802804081905048201929728480535948960172975754231266729684305274011312176164349181591218102628630046464515294778819892348761048410522721067761601965914321277243283036945383112685920623490824620727123960002824275278924687640577613574777974620343657794182001847382985103876871689519201668661210363135290103706950948310633903507490962510149286022561277364401482253797573389914066993648036470259028132903899517236972440412102576338937254257629223016925490949348200475012482577683968228301692257603401037447542692733525150232617746751828839347673764843540724382746521441550607353619643671139476555383472789551639258267478609540925939005352125146574567482624351975728477930481679023679453324952011650616476690644345451664071915103801220135586143012540507085813763608935753683995635795892555564108322343493712643440136452688535683807229250749522325597605545461247359346679766513173442758577262364974307479340147405106999755026870114581480314059217830805149680181514461717904598836738175858722053607002976616980285737369828364273002213141186161969839791812066721015745524152317193396134507945338928623486327863472717107981100329050984806255123098361714031678946461880222935172306100051313074624302670500210610759641129810173804627253321425252469211124926490920494857142413667772797945069268845749084474329521796029387677508007682754178357166729318366636696129631712420213396317717645305649066408078032108562893940955545723041724028216291159597492289235820268196952010890036915611741986793010268300986854940639306658022157512665033589492381447510920679694024952985086569911520060212333814659425673671797630629755958677910973304330824077355664646186956778544482607630165516242418374403717373794520835134299437158079074441154755481397853780712300187147488218731311135598815514196196670101128778076693023957570647845633651506345878645859229733541816323398037087415972238517548373785512124500981576669108352498864896005430140518687654108196078596290135480673280195781726645782420838067119045369561319209292701406434892128338579402978241114380150425951508477257385622243679273008747938991818184150203513935445306908101071071040470556096370830256173197810308415502611150304272568302834639368648100653960162793431357450203229855626478676894493294310904685999587364091058421727950184879679179661286806735038929962457160839244649668863414811123691127458827248463447563237754094805032298405091611470628483755813732479008972884152343246976800188228318048121893900914699803325399956304289933656838327158864466829060511804831158516061287373269354764487542476697374894395548188741022994495618051635440542515004576239765611764337844355276655479189012325564410071364283150905689891580534531062984140027152628521281936288896813026848390599320434986326042464486154903262740535925503203749384434740066659639199896503367230376179874510461688719209772503829106218807313927031031356402533547514020580704182721936424790927530646020287478593841073394275442002924366869354207293322308536118411746958216221599388063486832597125801399507468874168016877839864899633048428263829364292605373420857247243820379898404516887259256471002061310114752285885605553105521664278379681210870731554991093937776352492786698379998925358702319680018721045411423585507548065291066438621672813251877077488755170677631908428153370588102276606680236812424897164552241437575874087386810354529828438487988540819745861850235292125595859576772641442297528514199048866018860500211001761273312623827770830534815754784873835057767104662978273974216847215744366890762881394564443494733018320578063078686278797107107912176962872848603518221740386164237330617345999553015591747331075522910467652937402136453688296311572421859378499258819397228726004850087664441134339933123247811475071186221634061964760893944089407107495262038829082622878722266928099579417293518036959996927490062706029845130947659058353572330181526127858209611525984968605470537187166662755099581971498533400556522803179504078771588505845395136343950714118714592460630095429322244095833425773376797011106246805174381826975815537143509943506170174934930647632504452415847726900065792096067940093128340042487463243746769613927196275029703285293230540238810365582655944981954867773079167847342477245263420633766727942027745927564701592250449478367474709949539641936045507381361793614853559810745997007107509240827467935058133384905226390800009551378044533037276049213265881157580985887305015674881482498170298405314668206746397230362123544467610338231325789683005181417376175974125193810463896586876502279329691912791082428838912231875608776487228223765658666308427823445949812556320756193493450511113457598967623306478416408113043760992111022308560441807751254961514629245045782267197255081785444953293282861555486478285520319604585056619937806473134523261496850801557051621767961148732531368169611796540222528234705962080157693254104250789073487117623512944913380695665922132905605660370973931780581780700530725114727834203946387973965453712702897855951093216021597837819862858015270418079859723697218915828442065948452938387317321046431241667771916091330147797348367351901531094509207902684503110459317973396768203562434406025284077771494035969722960821764480549251145765107480023457713530850015723887962547886771498123174761858479248551122246616238859200596602787544719973199040125815716443985084802396559118048273400188157332619387871038390307496447632730651023892427737808576430596466143294822744923253465072505521530644733844835633746999527034312326868338404708222673408396212046881074992270566802030017950160948300817817687030315376610495054998480738022546057976721392029086248297486938824555911045886399148650530331352466939143330286822175821496581225189161180149092883728194976598173124018406871126941687354550513704383302577380929321102731714518265756855778138526771713897509994487664458728414665752544819346588559915821636118947323922438408478952771986013150611917031405271850257087152596378260464845076710525116924285838837348471568000267440593045555533676715626988445627911731115271422929652152700626602383969398013801201720524228339282827512429526971647710455544470450930943753419240341088894548193498258951419437433641753038244775477950154788007449938546222923357261267504595428633986171490748909581215569065933470180468197024202208353255177090004585876778267288703306634351397589143433638204487306405157544017358996149071830740728369870306650909668980091888661961463921674009047352245169613436316882594819229173008601905947486434148486057734196105226213614285067726236985097607383147007457349548659761902208452432650193433623987368642613718801918526926715325177784287865577119533530595234430206487011122484345985769477104613304527807676093114022318949911978622371396548599729395016792255067991751339646481182312169044121330067250917055990306581967800897205658998438061032054320260978410742449344185929984533924463559707279551251805021226158606202642172164199991862160662727584380549252238894167009558655361239300940557769904001604537993875886010392542786307685544766688062897482630567544252781460986077816135750959359696813704387508265078985194756183935604736253483201448582150046005457470776246850459461187624590812062448977689487752416476475438985795103250261538526498057000799284274071575554875144965472712006841853247498153517572703852673079411111438282938263220318320266051439507468192802746039248351666023513333517733980809105634903132527086976896021201562859968094855688514207943187115193132998688549973166849322913388555889918799285230470808734837869312301928170679118432875573654627359206133484415610662249790477075801975410447397984930770292170641401588893149344020816197552703815150502699781068179117717357425918463581403175756954580936750048858389895071846615932232977821433482979810400591978796796338578836748665830260424751425485672501577996215292064939968745821925765006307133832712405503437453465271919811044323055063304545769350809239410909868036487784391804447244521231557754028389203685388084862391536711330649909198980305224669290999786833941493218650040694664731275557846896994878290768455165439641072391249050679877628922257801056330757531145960842240765400878395240692876505989296042804318554223804084095394397476717746269107795381573141161725045025306135585280036224748611063778590409836741923365814336303901754530169926360180548077305312691725751385249727820982675363337456745573547944019392987197266120912316049596480802742758250408812896875085921057964733560016642900982174313262169807150490081607915611612453495101114878669067339083091669005844588518189762250982404482829722320958470588489315585130800644764678439250463688190365344781677632609579865595850453295955996659315508807865758277869045709573800912267819954151327464495686127263544595630748277256805997028986257194372436782493859533263986146506603485184706887517452619712533386520480661304956408183397776733549186728587735293726430435727646883366892886095887394204262594660084892900895659968427795839338934362994878014322995723705706161436802225097689915855385965573973547060677776222331665955686423199324541019982533240822757006364159332956420443060988839932779686530583131093402544602663315065342969583379431567023692383969824099759770225663321241459103326002451912597002743509432960662397593681041285717694306098975253677660947085547342841400678677811316512617309106605296208242232704291671198510163510572363296700609270486925553535299369270395811321684263650890596173619422769912726378982221557118364410659259641726206609833736714557368873570212537809226863891296797998233806571006559956339696726605743869146112787859389355132946644438361029802955445507102675069918526007395360202353373136721483171876480772519399658676504148523478522082541705577576999193129344627111880253794029685198923789574895602429671085369190446139267894283175721066569083638672630996865870829934421299931494108153291331427305632307445413189136519012597385131109831114370220607840628463441111588070277770910732375692098619940793284033041277989651917781877540325351426555131235321129711840802724431091779871722393211384099497361539195167621053346815975945299557777262719042248601596817105433870052493274034301605238900929991462772625391284465952453362425011964842908765096878783280984797637040313726995825342308931846063756270766207441826864818265169801513083884575449019947808793319940194413198400226054341868698789537378043038110431980557300841702722980111760422299936356337617361145422810499297664395100986144763561260268059065012328585169729442359529768570025357413455027602455493762926854853736622827326808794547324606467167533934198385142117062114095321212348663842293135194085249302117057958498407661800780672397451842455171744908618805616117646547701238508031143450658815322136053571081122598386205548188838196100276757951801005049575792519178486822750065256125589138579166228509418978573546219612906942671186404528678398716704351717029348202154566397638333158315103475788151501421020821868179315629692700564101820354788367887360054629294395808081784351195667958389225796644960219464311195817926531937824659048321405093880065721359219309724248926228629240078901985582016249385301010208690786515097887790179716814263771484548159243159550912901130894202286227181982813297863722941502492584719556624512056240023044512966531604508194913308917488347377112248766779437002831341939673581099708989651429781372479328199582601234530983289183161784653411347099378678731437680840757086548883948381767350902197536442784359082383908590350498340849617959649346825010058286037209028048990291206049000638604056158209340179873681892005517357764384371766908005245180029120112752682550487281877754053391347425775725956173823421535741196525534504345324431837627182287061310518770341707920041020565489146426307400129454866713595426522293820795196706203793696455281080623718331468358714141759841303966370949829815142571383301999559007163298807345458899897777594007047706137000865314136598541507248454520763330095151302095740403422055866161883103433655984857693616354742649414366061976941602010339670912937198117470951414471604424751006917320847507186981339869929210506943000361817131213126219575462331802578644094355827889564712057339414005885602186966936043023744876026169914340404229276380911412868218910501603510205707239624762422499695932041932236711105365574832326496066662794995047733738258496945732722023751705783172215417186378676112095516677631781330266669938260274852369609797031009006462389122699270674179568750329962380211593305275883980769922269910768350303045298962474367465218481053177271334991552114790212695384049498697317699860295656949458462429733543696766681908490926907619514380253231714549904256208831428686183199383961788648918851571056284955330935624046901158258164419051363168011577689217175587772785703033559181265073523261891819077173830995343697104220461593059255154920333615050149774190596593627465693805605345036312366252973285042794445557205347964774643060721224034226850846064954581541722696909989123367631370708623727120684267189202148917574566032607778329866093998638190654153702691151499002029794626885834116720215939369578986764204493214648160085211523861841300266157897780496430507163348508290192136897177408485574247985673848941669380822077028100471846862158125329912224754477109430197716198391855148337484518863439213704215174431371740643643063621996879042488315931200603126098743621399637985838898249178386339767486307516980017898327171450612769656252905591092885803649505465596238316418576420093697552561286679711818329252684788077346431956835823207616499071539615663423944936583553894963197403339070515408832295752567812069819029360755061102214879333023748384524615445397508428918325356941953961229881050135577682809777511030345895900849666182221238661951434035211539437792346466169378588558185388209140974883026140541533540913885846169493334177895282204020043621999785886977432882629007262641221313111643263541274772318482550152931897989104682865607087113958007201701764541869439639372460466969741580783777097621392509742136963129551897869885425237376881407688090071897124858316286075381548912198936621718451943163190984826831794172094953714767496122416172170120500652243712804085293428200384407445382445257379973437933816120579521288465782594948964742641812857023882596476352416383864558121220840078984198216529071493344885605163344538061143342115563401193297597910518767840765233154355694760615947746978034697463166867393943374812104929863143064261292898942699950585346202014341296234265725865967483748137637528847691459894753905404303714098708077167442947691911161950818326926674693156854047207760381384007730883818532248497887754363350369244885974398443670423577896871644789206727658435873784702948970884791743816488673404966154174274962887682516958403950383025411674027089233910698853340121565442278748104187347534629900663744242298435635829182948560147364776816977071159332014968489474159464508571284072441409413680255948539764284576264326075449875274046004422247631192850529250374380598844802731855206034018608795312536483678930302818767692646355405854766508680773427014923110978848010572500527981063294453159820433634815578037714189231514297209201159240202586531668876915497339582817546583087790842376329990346503912218999274407643175986818474960625516043474359661630254334523719671118948330717508406453774476909017801997759201484960433177844543217878666219291776780093003781533779096852147230051793765163484733997610456589076909547599039869509856359245719221204372659383244828624840514630948057956438178589095863642387990825340498069876359295170163170260996327937421479452779079961049557592139417513772291708076992041128254081134726535109643883581597139925890643422396462419973458461804617647787257561571209856879553343087795301941329257553697076835939958352183755885481546255293356082603772353599344875859267452639918412678412839021363417692010952512777832573367073238351628698919286155918470526376992904385502271673210863134710147068001824608928168201443156722412484684147641480563197850693032120682922535876266508564606373634692917691403376496119043970237916078477209149532905776630290617629141820802535815310707219677888296707043863470651839753415789866274150757012939028268646761795664707629354581701044488484684599787002984802201746448995261875830786124049639066318881143931103653755033417188398689356873603583355484649391082566190209293338387144640618615655466728586536954498430899159752038330577232961414706037193994267754658894354908381478883532853122017753194360821243070587774689183723830070572215670740624477748228951635350740207494981024977749692565093579117967939958562815324027402701315653433980256171543567351394669697789804573925142488271651302929815806818825691955467961215563255197233670992208912509799570739804079530496444752485978124905360033045235778045039318995524003534010568038244527915415573388659641659215404571289813178674126339065776428558733564970189478743648519848021337782561235423837836399439211098099162701776861339020585728718356975341067016009767537963364481492154776697470743675382270571213087989753890235856694151884476927293600778366010268763485521238302019737158654510703198350421290139155885760893860319747486430560352082446542654745123588114156312414293976912597818769149920591782013602193672425131083995966015307078088923363353109513321511300868931731125089166854286953104969846694434383347114889347574340689670861793244768039938665540333224611368934395353834543691256581581083207240648770563275133420541843637489990176932331323145119184598745735416297022046833245190735877771400533559624588684070670567193102568329939508908018292572005695444516653822922458627921223461915916248178209381198446784349095767389106525140249536070253656806230525170979765309778502994244482238782967369284936254757489275829152887653219295603402320257764379585955023246261746134371560512953687988073723474996988253435843199497419319848540896455710763911827072071396036898656945482621518872913657565429772664544956225899428609040121159838556161242809237057956000311505273733662829296933666521790697389144449937984407662676182454867988394956974716969247379808429630058387420984853373065613097109208092653857669970300835088739394150866966818588402026599640390448950500964434664423291156577993117927251690868972401451144754426322957945028909994627170981746898081490923172177227539579624866478406811387752499878292282815233035770198102606338482016302114876057850204594388401484544099863588248488405477882744355797021048962278682208161141793337181362210891606390288817271012091602942952185361647488729067286166930630359263689647097913825121801806583384350184575075112277140485724699771228354295299291246955904345012706919475470817368605317436256917725011983840204785547307549815050978788672309988393670197142242050485701771771198864904110818241306166129411962026663878277690561274065004336757477957951061428125380293452263608038376512327874764888822955516272516363727351451056602098345814524699034969480162312397102604556318072044633205341090066882410989192131687397084100339496703763445278501538895735830230232753227532497603204815756292063292264915085750114500415569555771643710134416454312156941607617556296016606585961181975841391594107939458835929470020792201720362636493200926554681499635115861585679628205650108249666779644980253721301508175463978026317371311699450805949868093215498372658931898020316774119421154559206561823461253363654170403086586124304731398903761087471871757376766837382628042494432155666937275151844765950148886586198885477902062224166842737844112912992975467371013572319385287546410980458996540106928604804819043941595696600306357770981683916055192216489982111974481457594914691192362467591237464289799737822871871665839242613488687847736960575999190903358040138791305217862855506474169217902623331065602183369992790609143171697360277064931190118783386758680113510021456539012198074167973282738369216437643149058893290506985675427076545435100045228999540883464093536086453242400611990800491908794749708511647957985296598857988120514643228884332814343309045914362735224897432766161332391091392731069592598328774284849977114921925448289257830158035621345598836649875917820931557478773993347859527984595065658966503163958396733999398637230549530750433058923059929189297334780841908049187672815135532818122659724941124240514265175323048090341058476375921428756984706854767315219510390653739158219026815773492762459495019799081866699724817647475848291119083387918861613580379985687993321241362164167960764194962684554051583601883788969662122714415204927520122886964820586631920935553412180535135103011107412246979744402343107936943726365740630433603037134596012278501985661306900495512682689298578948620377955341808509118476682459211801895107202358545335597021776843111321901056701218027117015559998060031009252417112953789536826784811977337005285340136450777961119126224457240411243371004918075015643897644182615591698633925796640791320845608736501568543455694545827179967592217074047867482468822696482576475001792423991379454226096894152026973555532856795319980083777634057882829191536227567302708714271259441365796254760729430664430385207250390943459978154146008558877496050437411088905482411742696311820702972932196840192868251706476517236450271112441681518263230225950152576811173841642368528653453383230615926897724297050059255869597536448891847490354866912521873177668327721166565943718546705244813717470089578688328934518725701582996826037396399538465903918228226294393704118993039609520315032877318843733418909985987430942364107001448918508019188040853526925002759663323484205364348207263110973684029461248543180219445779129814852343436290866892402303290899562412828318657771282197771653782157277203694310156467827263021276897025446259753369270329155366519069709240473804528059315776737102294011496968616839673007559607506130529701958377968754556277761838631098402159680074080088041727600257241017063440961369027034346797493882617280917397275693804254869143998759266167100758297280805152297308125712842461903023224516560580458957264498272169112359831514966733146691193488112879490718974753637257201886797197983396735913223994976865242051678139176490803227814225043701732760033852296505844335223510917653992319696108154335789655519281147435761672790323712401380290952075961076182609065600655674189620892539772557235516229687340285448589639452518760210603228786557195829051416376293500624088202644417428365834811291741177987196929607023073983525130224437085734271070666348260067330994265237804651827678685584784030426715487504913034265304762677931095592277565231549227341957536746265163503807387559918786775337561976480856649992743258740856346210632513670281924082418097777638770869729719263474316188643935886686338243758468254395591758308576275751938952135750745674001755679285755806782015073864235100856912667667629309603318120049323163530537746374003862456380556400446666872076890936134418622087457199013500373856981441459284207918643024295323278423698457656981204459060127310534658156691075947231584163810897045313687195280132309481892400474782326036951351209137726753150469344900356711721849138435441537596651729310439463499254579560734864991009300870381009078216992048631735098626251920642967452038893919588243203766873194039695479352529928966627536295561688026680235031959678948427075411766324876785549217165674277833786905383939067356838148803678563394671269411484514723312035576687550661016806970392685928865034156873247921635237649490576260049270296180039383361518411139860183537668369961194153128837524431938490229849546424910606424365869132315334442194746057592137664273301231409047604569403716370823007931234364269417715430598314019443428172430537473016782654394884046506504896215650081783926173515832521312734120899387826854733451390553294111860679812838638251737087812209928674080365907443909221716054520174451554191125206549809802022164550186737016784373683755689462312759221547262803913186593847213696909121416396284332159602584519009929980729586025493082942285718275942943962982011819476260653139071787203091726751065570466237218272269163758723580670355038014086488336679559505573508976397382733786533910523392983910546542315961982072696661302036599762432069769832255155208854495624022002310545418501064497973496200792144554299323800551881632253918239943902400190735860363781776087895275324064330192252501041851218223842380745418028651252609852277033741135371346226135265834560019249118980321525126981756686950930235068565917134815671764866583217000095306719710468865537706133520377233597181343791244738583472872855217665708841047544301553909906603253996436456719362033532172395939051723446719818289724436306460492657274346266006921841092034077223459091295482789314409409637884638199959589413707399389214062399181761661383992516295479252338268268269320129363337774119404020104610069769311699760520873129702253706770152938483248979134660833933877429848026528846105089686347564457853226721036235769256604618769759583613363869594381595575101281859922657484720235239034538340478217449360790167907525110168786273883849054372077534681789799888373146591688737276750065493620362164285255965635902441722144694926855555505418576293727410173327951550039450704855651738263153149399506774042698340034320450764231865829049092288849169691795608578870701904653840727400872358316955584863043900311134378939025044845434819988629997163750677730825421843987358268464937999071880317044205008956741883455306568014407843331965640367868139889545570629208512917460821903648808584666755352193263588931818755388114770256084285309177000809556676086338262580762949283988494289611417392981589620618589824041217778353606479595387324012058067146392069845318863162069814578127622898740722464180345007914613566707017544971177992450178022476577440633101091323924380939850148026063309190282219274644767626477753667536458804940811032280065586246329989319434337869264981704303527397466103032026231549148366145993352342091710804896786624941805866166780636304816240170642807585887991458865053631766067305386214704544300757744262053702828157953251661584269822942479691925464095382510718640067462216557262895947522553190179871288511302478503760084860321183142835895053198144192571097133877585013983638174213547356743651795818138029761148456344577582154756558845514067702305419993235962528405700623188360479423798242956049040470478864564861532750541111333928871620952163478620477297332403278000660553929507812085306984421518196442271687679654247627350259372354163186039853574500984327877279884815416035196477455603603852079637328297577068730139325573601331659422380959185323902646189180076444858594114320242704437453784327430710605563468949464709747661287149383013542801431949477592514797998182538701887119837977970409647256651340308579752714654367903234657707419443312954773116901384050721529086995675014125240263002334431322480467188842461937779706236522678984971160306168367382207477594116362163807863477571927259133542800701255137717503851873617500357936212243106826796733018126222299919460240540174356173071619199691781614291729070027647231096536383419559865504231088938728915025067570869968803414376343933078419893344010172850362614042819977238353576483954079411179618375964656095688318900637130983266717713604759686264007954846595908877387428398586010570552602585655355470962645863790334427821105534041975917272920858896920365296549673165038774072771035509224221579607424571955480836283550969692215389374603371142899846716505495847769554622606745134779529218654070344935260950881741471956288702541426769619773251052208375716732830931184388835748458543507977159307647482388549525133919590197234457890941497204471122237979987060858063642137669224465440783260485097880601346997763804811895121551491400839643387108518273285656430016963193491058942691638477434207734437978072954041274765347206736874464926158039754396455184098197718613836168021886468357045414023233583121327898829501527647776039186602659759919210036865463353935968794814567324781771514769479908825620175604411400411938674895461356458837898135891119430138661823339770987578231115111949252431328040962747815800871446035216248453175640240478099760455590012713306183259045835451956258765814416710154864638824213904740209331289118413121365325396886409844383105784299620287401631334326070486869094089926926194537841112717754931997247668257732444521338547641677232208749710327898245732723412316408412572553865962345469808629403989165923387963057537706538005980702666495124208124972344870685188709992135758051377715539726623477407365037774852058655794482398083110959496431170360591237048769325705921444517636744570214416577602141528475693850482403957803490852731276933911142755693407259813862632199819887235547269638369282527667436498848397376501064325534138942230813691922645757840411712742560871040057600415452314699079989928642593409530444927693684117733781136465717650051669667644521028855489931984201004286037883690800851525573249296487637551069533575959469447948466235063603241023132282998772619338178883595054328783503726209236231298323779345013826999911254771526913254507014255328497141320975075239877995910923388534899656055923854778385687479197025172482418792676417795911486168426821198097950806384197073219691968269255741207174630892830407052661107687099397208714283321209539525349270435309744517525057361116473685387915382056387640969443553047156958449256076714737901458749259366964999825578076221977442159986685372618842400425245987566743727345431677673591020356968536421623219772704602497357721483953040646530875109749908318297440309622534317553487089108307083898496164856384788797643130014075547796333279676360139107357547800083707711209803972344281751593092038430240899934464237901023093240259519404252953602446913892422110189029947623198633980728361909985568297805986629553979249547385142193871988916164137000263570236478591277036830405158525323919705472052055816538881676093603818436362889391454040084535194613651963735704763726833572572766372979511131578702846109126001312265054582827194614741609905381735252116966361591357926860555361938311009896471814942376155185722098977848366903403203145045468895595476597698936738105472651592593294473050544008569735266780849868013979293846363800475667620342453972408757028947775473596427209216001113394809323176707710901473533894412719266031915113092684267455186729818355521717456993085508371523203237719359772847661657989091281297033539240864553785408699857521459098736734896407559961627176444178808472374172833719468156204307616298762736704771693931149416572853687247705336819397802584684208070477313312631774594726357446725658338188157704194403291824577613336548222863400202650767066030592820425983071056779061210401427301048495481506411079436806632288966288174308788791262148557269360843872792290276173893131374513645547923851593413267236880723573853405191724927361041908112164151143583690883871800994089907677254984858766328918658191675078981294122231527233851369831270672637506364528603418067472747574859984695625449060454453293555516961067691533408250085487165684513721032603181269946436929037460981669726827012417612700193358814978004456843915723260398954898587937686946675968684450482455361742258700211551014858053662565797427964316928389977214715807441486376333775923776879579751039901122308946235937852737993716478360306345951682469957163502924902165831442152048422770064545914144966186898790419229838041152893640749342931704405740653565102951992596759429952034772501368651145728897927273966353698155092375325398647786204480757250997538285534091814209458828030654471185819012187070332754280767541520377460889078734588650956439949722464491373478702219795429316633963558095897516994212167180724207376110563557193521556786835858517058835428186158907543410460239499085323094620260216720774786241882022917252861190442245674959584681533171882432308773406458909934561215868745232372845272484557858865103912362573488194071590292178224293309233512161098622920777535013192908843366334277585608529602536868932259606834850707993275467892370335458628123097207713904344198706801156040622903691509979461278018725102769132644742060991455896695112321322655456185155344639637639780889848297984333531387990751901087021302216679692408399405517885795631446088132331023634318970792997883137465303230504216892627052559441946107105964146256971341026515511139815586825497970175565139960280856071274073816092899003650297684701755574480849803887007431720116952285332171879533795355543019893644301739633087126254444608291428189507365485320988642154203772086185962048912350400632272447975427702739214313129365213862816234217640950375020816045378998169739426817093637110341732159061628076078878986411361858128144485181745497258005251556130699156421712223190258346464477933037679728512642344658702291136168247355481439244469574939509749425920974242599354655075833060234562404109191481605026221660010144306767635929750241090096071603284302019194013371979607529794026434797721663715743608610900016039533270300067982547950945846883584759648145649936190880395341386406280015623805989157985221312788052651846214370114316852553940492614182461692509631744769609369669001786262756499610909648086124287441221449582274089853349451689387260266978973070006644418499036347304328113069844521882434764942459468645179271589241241133924851728480336014529588111017352277196728522815800091041486329659337361129912114397500209939809680004441906321747967033835994076685535292818325713168393205016170370610219496125493091808281422362464341150795326793750266334523389547280894180793754386823894246896524065763852758489036552591442108801391480860283020349706277544487448643674783259267372620168123474445844369813663433473547452833925576351026985284113443409723625047745869943538819805759811389773471336928032844555250427438883944868595775883549580952818775873085349576106466231202309693736039413004879041821965964761706771786785536709600697698403650238904468622076033843402994943299739327789881767190555739601915884641589428696401453915738689282503122012334845200362266005800162788141245615548625191620588758228731194931440150499377074374515774483259094938688407138484665823422906501682238434554127758506692025943573550643701425343538436528007864168206327988837976623123186943395193058845534318563655473962036647994722048508073996067527840049728167828619638461394671278402515757460013863625451177245979470535819296578240491738562200686705514335752043973162537226125918843145478149692721204915209555391589545980178161300829019517925847830062316474451893500061094892435404001046394199017611303123277978760403328029388042148736454555638486188685212288115327467524982054331140236310303155890903519057988592940539080679833739439830508185399730807613701592926858565188089606411424582770766895654191729868940781728228282829551660342046239815178604434482806221118296054904777107227531063223401099812357052840385217778189044029929606793188782837525923973512607110253346949738629650358951567850537315617354273942439886608344514498596002482278406740837643423766122135699986672312351332784960136277003629244084094532896346150856405319798277843115198400591457898271187523321386742086058181782654933349149760496349758042461906164706024480087312029380378864215896026287018129440371391854324427376338755188396527837606457498432353428870668382658993951994782582159887738195387645926478641883317433677479178230140731059712949335550558215371076105300598844465593100993798243405673346493001166561379068329715664857684516989367243576660197922585054845113321006510920143908153915905168065827484847366942343934686350134006071158368227768601730038155411680368561699513775636938965653183344270093953463413466071319258307740012101291347258416988687396510800987817049771558088990027489345699241231803360037941392338795017980230602804897821944241193728969375764491095516322865441992923191152414445290361069269708539235914407640200474272949537128774541969847661507986418751132043635745014489287605586298007368280382214169945833238939319735680635652737268677400719024696980469894847126645347932248230600490627476490502215395977456065973700131801441556448862513954912870069193398881050767588146672822012650242894015177528439593001953187624693368714625326878861492071198807489018857845573763193481083469772114034955439464814243016248279612000612617231143535802148357654625101638227158639514231709770191338939417144177396203489876107142344798858727612206545455649302542088905191820761786143044005851255317388811497197800975557868065788278012024978924778688562365648241014462543201377581786163516509242250127529252937350701253511803605840616887380972959125798728801933940373549831255330712103704485717759184517921197943245836633856554946307946916181224035620030266126317323572835067096143882254964294333194251082024229164465943750727504212223448583991485565702788523175884477788428468357815714047471899116793206194596373700312257751692310632696843317072311713375169563856780928702833518787392231469635470257878275723692552179848059934385327835616570591819253172589877982990644766599159465842769534962734807855825674763335900850995865536043934492726109771490604295896018878941340386366500707741121588497527807054299285622847839087555449889188712900083072888859986129121420759994141265961562054984275283560467615160364693948415026556565122219509325727591242509223310046211605665738513453992250490802080971724767580638696073153592211698305081783198161690605046339778569006451468353409345725270280122316588018804072849919590965408502212295844700548499638896604725088406059017369957931633934041585099303042949665820028029711009165786444137142051383858961382583024834469274626213221174371498073428432688420247193369570232501590022153291441707745934650049484978686903910496648866806488506462402656774214933874327366921331557530555621247790392223244585295421108177946558084535070613818066508157230531084045022679824419127093085389173802584972449661487018398117515299889553087063303807991358989790936380850814686998456287171029195502623150761300644947422680380533506884563623857017448457530819199882002889053824574406111949391193248816297560484592020055569512460322940652475645630281762713485850935869533684941915332157375446433069579856534525784513310375243773050130019491065635077029432415943230353517623129939124261809449924407350792613156450826313776304895348968897912630109670419869836197108280844639721334572882177830561526816263884326297244755171227751798199568714098747158486329439858311134582956448367430473315957791497389694071866095623307775743171586320101382761888576749452430330567011594225150650369349887116318671598899372926433093205683662969562216556830654229328539006870500282525250501061850906237590939194408457383891846469670998761775255545946022046560256860603108159977848475703395599544501664954381916775957777985920022530288988459125641183293757401504109689905701226615183785832534912486758655530639819125605500998839605675681648532749931142837622372178095207727802439912538503483033146218747842628807476388901392947339336824797840323360914715992454759231754268911043300513170955260511580995610909509467749058290128234454063522047437911354787073488555164979194253614061719757085664753548971098895696152088708703393102431517797878354761409996089272718141281263396372946370570126650772351046593879623049218413819068954081940944533978142503743239384649965970322333238960977570008863577499069578483551987164025605341542071869724596602307156852479561555063039097032962366733521418059465303370300628987954398277463762115190700265983290120738896518588389134912563256726420524249561065499885082244382887507120534294433886381426111163771629790234854770124650175122878102215783881661342052075186315966048584458732410287434702714598056860601825533851408549045992193393082835577813856474310931635327397920906311922823544670313867872637301430202856339550885502031523743500427425856007294630803873624913559993938827179382169875020059059171042545882896651806039148607173226761126972423186856854733741241608311634888724077289012141347681742720900915413943160114241328993488460957763011521644269641385593614840978422088462021222031012157368866731386138119316569204473955606563028610510578402895213794529053238092859932252943219103917337762849449331911056073027815897053493160641758352147180114962827524024973981992233077475749140155358037118436859360939846552030989748140418376815781256566349655667758177133728250541603991535629740066729089728267368942451381891284877589965195535363301864544776055938903056579097869311004466939107914497835413934927953878894881476490056881341450117782751781770600507052087671122681483993443478659378929523000144355873436255602620415782144741025855634487926275456921905237838219173155338332194023627432797823152929484239920061466384226790922321875487592311512164668566128657271027359411969142046751071325633387351375615928475875229180696135970068412815311364578804040399735941013277709997012084711144369464144726222732657190481924318080303847537850943693628029967780323096027580549216706612476182875525812490478938534014744088959234875647106930298477850595432250790802618154041545570906639284395789153823098796848655120935597154900421422824497950186384690857939523141932135100044251747732680808578960244458653996849190174348296826079368205827747439385744146580937462225884623185250931397620949712346074414379051593603540021318738756552763652180691756548877927975927316742313508903043787161567855733840263609488779776855885924860539627520508432055530337558562011632967267010630300758113076304192181012513210533262943038201482125993153334418760616334347843228548987254580603494097900053291327081233078217082397355408838523665094187226468247023774301150704127912105323621656630478902907987586132345853469453299801443440229981054891389836644807360276811501354476687306264967310348910597651928824988513698344887695345733943634357439265947717210443410109669787973476456343662155889779877981197678459859267112537144228622114911015543254900742097598924136837952025373012146959657347768875734977133569808959108454002423544758670243825707678645169330024627791064755111263903786010324123614300358100638186148085118264674155403612196934225400061683519578005267107809922177292843445694001303387284318920131025220525156259200458062735137385586670891130925219167270563806556752826474986658651461540537770970720693517582106210717481031861685402533482588741212561177104749132869539562785484212418771710388680043538858940077686278798462829206915445894818701435555211876988356697404474935214560199405208775272806861448699967101391224499452608578375421361754198831222049564796942372372022889442675553560058326918740792810011883331226793887805930319010987654302415314017920725620713603900802231971095464284411623042960670602242039411045411468373986935359644550013498061673544728545111293139390253612221336238450232203449302235513976292251588524993026898609928885794677719339387154300786429746302704098410520487909821465738574618307323936426589199491704876222505360514051040255347300969268169414426705244382857532795631809777774426057354847166169817782992228719461887590064636384254754286642612789422294977137728187115272261345180527369280597051615221055799534594196991986420146498850779139490508968026999765317838203721206313758139778453103694824251933764900796877772712268196030302772161084943386308953327230796264252309502090720121682489254582649555047070840587451500973665254630246051139920285497051505943073538012419498626629121333156836515212832565641553913975178742632893790950127158686638619034370994624236785085989529518040495866378537727105192838640256174643598956472879014885531918468353227326376276016888386765472120341788261362117818229637105927279070582266038980785148518203009800872476796718373603627009284883468735330356441495384858918689015437046382495951957015741392516985536960724255170757874740843222696166221601600141070441241890471155252789980952298742675071047006842529855371482468979405351458296909585153418860874694532387807385866935403391372889350027684684519902175952424240644694885071166265908509516331117120639048576001125201025374070606101613624787567514652178880547414721774173349216186410230497150025672160918657996294052894557827109653668266192174366213675985601820247276829529535093046657175559763335043172860539630589762054930089466108931671740907392776291987485762566563088485154572775084912031289903233506298814758657542351903008332243630593164235601412028206687599973303653829893329850598318040808766937738780150277940720747161261700317508137390012646221388041889588857522957598329929090659828129219436204587099568638481724797807812870288058970912460388391180786619554431092085415273559521610377515374787197373148331070660450640850419935601624160085753877279478720975615048595334052249856254846574457444098110233242657427464250982077719332305666360016425801438047749184082630765792534060223430815998461374411377467431613674413064486486815544366802823727527386900476033604207385520642261984429131868656326399096089772768557446688166618187463335283201058407000620428230085689878938125131887297490536268962062041818188744432029069410576577434705463179102847480234885815613829251629492200917102766861213213985635154729377294468829069832105387161736078955472009131712274709714976846103881015504245370949061087324018499723605600762077773789235436753218218703555835129069119683936586629751222127529278693012092005564621602426984135297399543864954748282144866667549859475092131047950471131720275587991640190309020520822379881455711205960430088454051944836902418541559203573329966620253931590560889913519711215309085474802747926367626230142619999385581751951245248256120395191366045855571797648893789449209521640227260782421410497006933793847683402919329030443463333691587763326981014504943707614490296058275436434621312370110882905410060701606177339068028941243080898491312588993123789152042327567767029611926222138360240976914759405944851901215557143204933206990026741248910909397592168510684072898295178815503702464925732736670260967405392882372105891858973233232041788197115238688103344370666864497525311624364286186073928081991678641915158667644735523780934996838072343140773862486786639839910326956816090110987427814235961287605386854772208826325609691651185556798760428592663035937838439644226964502565562515388556339824963315175341325893717493416993046659687008888168100869530529938821585343406690083176846072493845308480720047454873115046623674426609224805864091267876604714774575910690337883938275945264391101609572673426583390586577696320033599806184809579619006824576454002660544339265942724864699370828878314997544230068601379837768463457147537091026210708882508837703736830877650549991027773143306440621152225162883779801344005114539013915127086553722271405509043639962284630558006546070478812590983469633190598751039772662962833164739726046334094452870201131851491234466800367570903420676401488529614073503875949702792250246089245522147540477666768861308335309536435623811135203254617059226126363774034727448863005213903285178959347305243285397387054904633882102478337644304709441950452776738824649868015054739791434396901413939077540702984903069262009456349935252248976618574083638498665558872932994182845763208635493924968690931690673520056677195377144252262468610534866831039720376102978745611272388746084533361159321564222555096421586527997752107095546428205461003702268277200366259803112243769569360293613751330721471797082266528900834247743997448174878067309403309255893599140597787218960379442819810398452066804135593064603163804534477725539324354691831740349833809747826982235713323433878726161908602216459144685369316949431713271464245669990225242156622590918515927689311507156957174591894483007705081794762665555977554661193332842621607826301146806376421732621743156386933139783990417538269467236271181740482172031725658140462202120011134799121427851804635864661018104501943238771434117229416611637802924664831779365788357734807459226826638831900425119222857504153380869250520729360825281229831026759415180803710836090127682459384041007703482032261627652339856067961976072891449701872932166275817746124907708593653859300186936946567605399870434825476556637239111226198763325427126943320950617483052956277255072080942861739417516333374008291840394259046160837738008118329600981976902502501156703789116362873162302271173073564372166417070156751837685271647742702032264534484193151294785057519992750885612862885474116295941683403876630059879170777726467305047597012355907720339965516737682802044928622974923988189080745466939527183938526465009587430471135776227359981945542765318013365872296675707555929346033551670707215998064092343176894933252212041653985867449590324562959607207210772580242950749021414404533187816500924020701072284162266863322304918686356665735432233155722117103699704873525566311753401227625617721251668026031341586421743201370575620805728234408048397644275162895614746795723392672529917324608639610654899907188432422404141398958741918406949984296482462469724435803475224067646688694517083929150423582069931809205496585089876796780660421725194825496282450001522217738283778827148879168697207433791428237690769582301936128381763826426915514168640771206994712968770337266503896736131492540063469302346806324268538395521618277169975103173294553206330551409561655895833208933870000267709819798153846370379619761754846446815185275887312256444815004277187592068291001213971786650398177781471343153995959446457490101660746881118974287679051211853777809168152165860626705627473849998067202767428724781860996323535326095788653240851621749104127667114358852993083780948087633237336900030725256684756784384137550114399231259681335342276501138743733806077372335898044001876477884168155253088577444979139285170031038170470259294940383521428585765664496198173280662342834147002413004009558629199911001482146653341452059246909718071282020918903402544771872602477257247885149539142421626303605497163995263695835760667666144114327361873475979085294489512084762489419839016169559380484802050523283399812561505611074388867279019188303888311357820468773267852648376029098702125501950908282190776563094951721595193401291046502218317535968422783713145352383734298632308223250977001402115924509023309552434946706446592749733316557305996040787466129908846549836190818663707889557089763192942654895194304904722670153516845370208615505618842069299981361619530022875085514019349775197792491132245423866175432565833189899176310146514961137422290959645856179513796033169995762937540989586634446794319046666035248120514556303818962804428829697398448888792288942100263824098281640048296011406586730589323739544652597387631849160609950145812696175820381715837522222986919653677555821171446844012961715440688956770413203703032671295302839504012537523297391385392423920059261183763258015181522359284216964587926054780961152655640204150308295182790052058369453378613470679734100719836023970441293442463048092329775240104051842490890617608090768136174406400401695612707998687090142064490541599413508745868624422106730691438318169587966159774796350272049360408173723884464636282715529162128346147719678487053392622000265922754920593363724267558623033793278354510894815860784471255443762821227636893806269504047856849853742032809589334900782747045774031014853182740243207486949507697319232167974848024905798504967058528064448107268760793851561337665935293259715182760811677308300260798536777137417242878827653969177658134645002540734633858828969026413021161477122060733906795706708198010543367818220442269945331078281438573925697301552672604968710407395448369474467752715712585213791713765214927902548516953877533246157989160550975348363472059481467921117951581798962803091354057508060843338881179104218173760081761532579225045025098938771473548335594740119282444256570725636598066524730781407662320602975234412122380008570426605973824358024858119624858949367443231220146336324769386913657224193433297096351780250557062938241977413585183467376603268227602065702642206129049922821917043705312224130306700363923644899962770118995333983359431549448674691919645205100857136007213972951973102240598996390826423089194100940640551863371425388216891084534461263258882357488143732404401117410003028921492532997064925510103871940017090283728676676032251493616803074218477052198023739029002387062351322030392859549499116113078833821321380013921757619684904390430986126486234442067707655771375413370739889445096091511778936474501844960532991808719688889667844278813429532567110975140853297981784779231040364780506538434411016148504149041585472877440377227502581416882139815303753642392196906441776192434091115413180535709641166466290196546013485376650022077069048509551466864506986757236282225492970260829885219190852471697976862202804697297809175876164008195441263939411304082715228649146230651988523725644598973063519120858664966065657713582407905501657777918963275346156051321232563996213857003271368449548910300870940914906152303326323652724142377019135391604364264272361713820730327511053059539376710002724883090483733477784931272785963050480887889039483457923703671160551841417380368247905599028091274728934822626326788390371500561367945246563652932691375653756478201900061886602490611505382618960240566620441865112887631689679065909742297850499957932617726340185692367859738019340888302531063292094396031701442087259095425651592800024375363793870460074293343564742229923919915688359618123850588284408622107388611924981395957812237642472934108876466099832187370243894014157106606742086259882353867728222119477974951283996824111639043200485937132928208155914639041553088562882654742370476739060615688716244154550085343483251011482343211667919937934432814388256818057590037169885296554290070258815033298646490990968532410658604176924307904487943782155893763874882236616365319923180355168601473513873331255158644041275101855629173961436806806276144559942606868529282544156930628273001841029675031902442506970775604073686877069141604713102687591780693438124383469144245534262522138407052480115741870734154889893139204642164246480880396832111048389031809821939182241189988172120271631587994782596363138019379862141505510718494825753370390209775678332400998040375107584895520171033784493076759000942896455983240205557177057585873126344732207730740911176117068294563416198152459084073356935989708829056749605132301976942769672689021730002192070520364177875464201883809959755798300868479095240429431469607902870690595737742353516686790383772650841755980205130357608014626693798319354726172866805909371007220066805760791909392244891771448716721631055868376723102857028265448338198588410152753715012083070984673926675136365675206410244008547108402149019103245275776313033132895208259427855055206755098939810565926125915169447914862882677690000478143801769953630279206226913950460052874564674024494927180185430019749444573469690458346521302689679688230052493687880568931178684914635218927684195307089203662518887803874926150055715438957260936143922439940231241527973217486893230023626069651666740628258143988253120106946020211734525370393561807798228046626275786640098192471484431918621999696030307965066901685027051209302535772661696897974443122207963136008388559352287689970331760464423470852360848441762707012460424236787187923755733553306920361285020230983075313190767429680220095583324539643066140499220286805500462095873082494802433321767465931940714637592544226461812224354633877810402001160348952083312613106375082983111135103949480996699967703543235834772048325998519956716532365646832390952064775434668604182498454217246075194538425077585365261212332295306222758389916852797933696104041989449488511045265255831730803093535086058149594561560527259686786258148298099019262689992559060789912817780080224861143672937089503602041273645543669623234774554356982549740540726157018684083827526509989171635753056988200453677903204157841764443518251692572042417191223274646835363411448280094823340060825996538953337416940305311793232770424432445394521115597529079260802113698713735984121414774060291625975079440683915773857521055731317676181832131292914573894496919284602363767312025161312786849592207012824506998768565911467963996392103142628458954590185628508810909107330482321221554723822067964694491616000210942937048384444056317450076434218641262743064062928429288111607133640764642085540137743029853381149566540181131390654528503152831906275341258740805207426736788984603311439824251012623677474409327804572613187337700246784388633500178581477196423683939752390560425253644439448163348914823332897277156525225798814512745616996434760844762162678751265523142493991128721910843725878207880093723834181141021887436193933005355588222108251949202230818034477992700713437659749277285171400608718355423002459089252846951436286945460624524079848038622423233751902047203653137044862576014188086839600919339102112878375387280193498594592646541867160159816066156511791847043020785476742585722713448180888699129494159816577420206743910157007566735109422739522214970044004223646904633329064503269707117038671150850236396728702419617940474229899801141840803303178691503418854871005742995858042877504107106964221195775621574257995728341225936831479310966324808663100271801740822322892099184520145759282739309830964496467486875161188055577606225621718617640600508261708282445937752194710613405187205337534701347053606323393361805308853562384501637255698723243942562820711728991060741299353552097888227457990458447675016411685523268688468090846910779935757251171564676891746386434426117224958517566069252374046472108823546510624019090387062256732652491416069085639850933181247852137994318636799471202432151168043340305634189756629350078461127989950118305145165558593639337543593297962720640256643966639556776446981563175313609396712961901098827312590215550859658362021354442747292419321465689785411827524646992595932019712939775438462808158409520490772711730878255772334109705305050329484641279586597829301890526717481657645144060011254064944164793628401053127158411415264553332337106147050124471035345278012638326095840019205626195865103314909903569159700872718663965838641568203953485555153913193258046639807265674548706260687655442160183722467814375818841009901933417978161977533535123215064836796026482262000256261360939423883312311104259186527429620041139653157199644218217248944594945672831601898633924247149104138679860806646486678359541046768459246673652356857672538513373849419657499853765109131779258168662708173359846949340770362611154758691543590965178345473141942256997453021349073731552750034558258666330174152020644816793207245910657557039378462548693416750563657006672386030533839773045129877641495321382735746474630623275179308389555022094923067178280032443427482833194868677399641816660581036860955251560391491631138928685757995182905206602340143002059909857235336392650789406502964545598853053507868867535125883558993298440634154879931362615889895212338320695994994778546406776669442287710756307959766709182153416571294264430741394158355018298103857731946320319787738513454298402006777317078241993915301433343369013114053504822554361644869711597651801178807439847583012168022696522792048398633627687335057425736829605591800383855292958335017820192754053158904816127654878367376913128315009068365881598025056603901582720319648507063215858945074276977099807559278239080439061079992555983355475998105308044625828384368579377272013951997927658549346410917507333020899773730205489768670469880971363809877368566337288935700573372193023439301768303437676377419109688552899566951890860661089964579716337316020203759231831445537032695871708445264676516257721059664068061574032002371002088963081770133344175378250202488688617970030583248590988854240154648483184499229340350338654339870460703786629456670682588506152212592922304047794470150951734706726934520176496891177432106452031462956473660364661837019940369852333371957635748820014699260691538656140700845604430266763883191025409569603690229760513905863196986367060077822221762454734116930830826705741903689765585279104064475661125939515755718475753468228599933602862357531816293692553850679688878089585997758066411504707661062572083465819045843498248607473256727232690650664167203661420610418815951146997144168662121121641771703814313217048447302583945057661686105265060443972923912199054447552253313303209311193189176731481124562331577126852560708979880398433130745058009511546510206806589315682200772395035673175421957247513840842591152004089439195211747846023875756080657786551098934441197269205935377928413154959632422359080903507665402239007464637309503348107611551843649919745533454084619885894188340658588167724612781310286571778454972986706453507541710345141028671021966617786056947931175001365905692157249808157993244481174087112990398388374183846708577181738130720111806578417485665953302791818145455544900434462485613432858744530432350096313091361926676508144207209559344626270858027900570566316925819919515718602519732519312295412720625521284169417984343930373251433905314478888296685207490471077899152735042820504253447588691541873588227292758486245647379347200225664092813566744748138356810009583061418211520489072109771060399016456435753000685597348487972868751776571936334315391772253927550814032319203975402196099262198072694073705823694913313471301222154475867856791280872580699466380071774147703780747509051955504038781638285878165443274716546291832098684950405122082472113605263252664462340231178569524229681641983256896265051243364648591142116289541654411087001007562498046413633696509371078298915332563990559425736556304568258730266103085411160226313246614986544523051389876623768577995759643212471919067686935676740092722460155119128747296065193474648969341657066653134572060412342265864249539132622009565227286807007702554420538255915613472816683196646101870201260633919394042243971038006944616830104035371305946501880333364802119117614920062583856760857163878314983250300706577697907757946180550315152975454056432633356427300810435183673740585850685828880686808752799562577027278624999045693223439806520078274984276956822857484049549901449247499318520443910992464327253157261551010225906226300304233912488318140580670679000516509201856459827150792226872240280048606423409399094639963458323447420136790658253156016811705764521600489085591615977883042188023193488807662894475472714147572843572148430313649782888508031095901509225758334317251413023208870807281910624400325249293631186292386688148850529720915882401526278460845674932978705030947696117032083434008779027287874783216293790219491744872077324937626198290033327309060393945255120967344626127650528542163641324497411475927870798979848337442381572481475576892247480226928670621259238775385900121548532645721765257266396531571536069635881967467830676833468489704009644409630645824172556564167753737558283536050252312051916640682273343214193089131322214267502777354660544162913113415364025582266352934402949972524454275421334241549317721332759550753565525040600193136666475751804048884533840340044518537201054596319213125892405245915752379627331063980332803294452737898931840366199977053110357006896726406765721704106247302967336751536862053398271210574865914575547148545397382079640502682643933688548156017542190050387644965520009005225161090703623292172402721389564593401321199633961129727078048343997259063312899159214994296689101080604104951988996026905705690820428984518878797476787441672227086221725208164314552630117397384106757660387230776860176767293640409120450418222394529207715430891575751347173260934360186014475471266404181411973145878853219862156804256582072409800345406706948660700660710647296210879607085510282648485468298205864271944966919769624574774430734936544111111914421012201125540180767411384201302235259100841566774918196797950535272216473568750772431958315063532528472274135476196867699078526597613724785385135876777272263049921952924336202505679510558888940140061339033038359137440567573126632085944777561282489775656134924582557895673967344475356200586784119215130110724129582650174635882253540747894397848058593861431642617141921905651673267928530851520433160482965366683138164939434894894632191269189575616453738564560019448586590764194872601808328457297886496858729820475168778039048629133894190578606069406392002738720416239130276186802106245723428001210876191446180280286187775494786020215597169474879879921998400711680126877055934662945114620570305372182658220296360887425792587654077658744762827406839095139505401839234207828601205429238838839671507219017575033736765205739548099340158217766060320816481692909947167141158440019250912330099409190713564032651852412767638300428285883436520777497876391082354843717444453847269017675998573018375674484672892206653343995720735213978360676168749306454707555800626815354389006081987440019539258451818967776181056307919962784501515180071837096620653392086761498691786787651667283956013455313176688552439344628538224808312800032609108157963887038428531051775929813650571986198020581011574150082072911840225314964751822089337544057821186344009898742982465150143357539531177563177605394978523236086620072345185354582043023186868734532296239760250729780137699339044728963931085692578261816766453351858836116438874103855662796480922799424515851654394913016874401273865076451941913591164014115005276573413641774154239466089834241720215133381714955278509402527984469649680856011940232951549884013602237661970371868780928129567402952358575964680181381091725108485118632980682500604304958251044965407116930257624872437571645595620218996805837800065516441032072769095476414018801536965400105374132370044104010884203379491154786461503399150089066073157656816947946146130000351670926749904298486145245957099816104534488726005137425983224427088000966611403978159722348690618047500027137376911340490440354215408226797020820055713101573493636193451134416906447236355005319856229843994182230025086852561822971594693618623518786231758507395549977708909128001384490666809463927992381570055471001862989116715858493986918237827574341360471838392014616637099939194320438356349041446604161873703851524715486119186588270184006050812781448054845756425489723639706280181053486729077170555028234473639334053107519069311952365957342278451932854964350425494283439299249221757470580943103804544488678242486588083247065018070078345508866752632842680791889348252046863347700068256193614605984796327552911613616803313509155710599203907535071255841610447666684127372871542734227718979564040512611789684046254122245165351848720939555665816984324040564390910630693180020078936676118852927554893021435705896885719267299478187921954227785140510182619205657571981198601239696213953407629160675220123329136906129721609355691544552511327822954580567736404563769739387232330924206709820660541285649186841424849615802949422287102132529274274784310913962624999165250181719447337248736732684948548950366602826447599732579507554566498280074474077033925012887879599321839273741633188968348324581099911401291046004554133880106934369107889180340039662773468967364867123128667617541675783248061299774218292421224752939653465366750658478920878048891611783390892639690408089524734724648461626196935443555277292429965546709029682234249093569148687902130434626557367565635420619682008109485232608248042606261985897169217231916669717562830272073048354660850004027408282631153892656868924988121685828623688421893968037287547738678323430770938671055393513567730962205708230593945994080773626724757082005373470915134525434263175976103963301039469976794811505981543652653044537390965928049516564103873066836048853491926730476611232230674143514715509364747820734137431502359775131396387221279617915519890299266317747711870293971217802758243845201718719995534582656029667080109637680739692269523781994107993691017705103107563727651969365996004478567702014647999164972490124747591820976665013009919096280387018342660629898507415775577857912615867008339543377268996619025548652944162782449016012711048750934616765372938575209468258873155843717213182808904299684015229463856151381197242594894140692013028827485303101680343707280256485251867768924881747142702808817979278021699971603270452213408939928055480799414230926214380657349001590874203479338287494555009220805404773326773328969204540558792811432752324207015051058949398548443681386643443732209458623662341060702661628184347426303868776995493167695276128534312748160809241588022684231750647689759458730826987772941556315891059804073099855268058128803110759431364601707071900417917215949742525070551621547046518105264792275418067633070189519484646926463903877006064957954132793163089233123559213535326191075155401746775101959421603062533012157953762215181580424407159212699894378323445034999981859794555730131585226405742030398066682640940889129187558334350796669670429630959099644323468327739665164113724124359105947391514063425073319845269021728099774358424313302363653118947507583147035971185093801146663570077149254710779652654604823935773118553808213220591023893597844757015874720404877904742351374816493042007282716261659469183982812126755282283580059700232504710930465746614068064076672175716401662959161495354852107754768888752944224880493674112533277195126561109060838093677275147355186921028061189302031025635736981307144066969275056083034079777376759003974577466408686469291881973754549389791181732218519044731939759652219829958337411860951319445877227394726296466366017743922246119324038902626042089743264210861574587490837336486543559521574566159529450324283974737054883945424177434128718344411561437861871111453354089294510308969303466990500105016586109540572355813793703994031992179978568605814922653538680229491730126775115703223983387156625439028364482694333471667801326279313071574520051185075626669737835208172257637008883188355993746309305129215724806292983516198998359561360547423222407521678525731099095947907464582106849502132428530475576337063087859731239110605406663665779357835511007940682624020419847258445093309500528711153193777852991833975520558150931745413542958338826362561400600018846580824826992683709250528630292507971161812144982503910356572717339524040947893656303044273910727118830442402275757091699793158346241355546770484720215441418430665575075600133955163530290060111740210237602704009752644764595480660438278349210371818805725664435429349192525509244433906808713037654337568532385953511523884158078060177013173276243587930123413452005977134514484222551292829898897671552505605786659039910165774007497787755559758466627450536200765849280222986035378757997345123850388843009062714557537679959532425518412596118106019298081519135856263209024891436977249845078122376128573945131176805202724738703222839873470282963401361171079515975372539134340974281051211183131228459572451458333838331298176591631879969368941963599332396114675285055746007023721196697986558168286878234863751250984917516193934574924822613172860786661920085549758749378082047994938765704375906567794972845852948222376232717045916772506105839312395632728172153050192179268973158633916777907646479893441077579353357057584120660030152362198963625622088683428914140216490114294906685342579414496267302673896111718009204707518880911903827351945361435217575148114009232052889875093478868486038212817277155468741623363916080807664019746931116976576594125780424850299539189796009313637411067288708417447936816868640520567174776990763948912701579985869711035120163631554879607366658065323327764379536142060037508837219754514246439901390716365784451255635614815426130370372858877550857590765160578498627764782258981443242996500414923398680396682955076056549602548883801508275952757226281162551648966663903751195694064275344839631299855044624713644871978102379707686265320612642645725196092921254179801369442572993214258506464242110609315533739833374416147423767993673389252197566527623792546032282789749002586365598745547630539365484961603404559113778191752868799598962878352850635012720930101312299035470913825027964898171765966189671735380941138464833395823631972948136473362862598230201681388891639153636887495477339632478606746790855871608609995566051960952866120181168106003015491880885674679324734249065877400408245574050297631248817068931903606447328874550041678665961632140076394301454100065559661723403942111331083265933786930990090522643761111968443824320769406322693279331580858354926593058523572784693642201362327989568708165796039963876851536897951478891830433710141901688500499322975496966838596170329819955047535695293581809485610656680716870621380785791480810877275659877617399936340916512383004322503182768455955946018112832939161540237872507070984420656120549264507567363734439998660064440390358514138242069780279227123189310690160771840724018982742219641576442334081313528697533024201586371259008095234270348214299489273241159077323392704629654026425391628189722207382414730165520085829809147628963418229378531016928934054939891029568662633858245533256799236020664685353377318634219523471578445603842872695549809450420500431956169745882095993906163280082441391575972617532527229553202844770135956139720909521711776395595550023644066211622997842919355884767314126881713554927794372244939045417934160839300185818707867652026820422546033138411633512538330635821842987720716338079396643028925812496322090577531613539212369468969754605511172467194413575166646378022101363056383430961797274678610731912249109100717261133115867242438402464289285241011648632685876079367904443443965376398065972667478697329420086688040339817429297790140921665409115199691070114526630875871167836147754811376007225225995703139648469152116856386134115258100900742146865557156941508011951857926212219581713271207287042731503332738618782073039111092127798994779085930936475464127678783800017864433306205913684014150688235619460442471782166112654255983679301616551865126631574279567901192638510166276099187034467806930486036053193618563127992151661170458688073525912623433539015107974578315642228237092137117480299630531033558424096202551951964844245963760160762569109733899489987777249587649232517360026996208580039765314083947384789876223092271097228354228429738903135785421721830435373354443283564167964870144601417936255498581652099091511150269286940562306649162223434868089978752436356117482470204099067496664065514148719607612794243830309838161830701825111676498363483023170242053220751431892463672747209350278202375594155084787127817349757360967341908194507001392262381488648817558822575705217090451033412518145689035566553821800433928893082695887453538404864012177741460361489760171257851811879818791504196537608562873089068967513308847242258477328773655669629717867434685811468553276151997926206480060247651892160829259582905705870611685661918549648748354554956446177611943482353183405404922669643410362169664660499039429645539262952068390501933203331968763338401947339208308815282919847505652266515035561814538635527736133005934977879481448119022087338817646247239531458531059951715998957258557111745326872236635602203172653710010152579134335280367054483486757886754681574758941402712397568481633555908074532892542974586955712118378723652638116399364394437080744941435714613066163887762286325597406772099285098845558207382391482430494393862144697920734531957222462913860823247932191118220965162408406981104379253901232806631031933587009816647810040624003560703848459171474029802203830448264584882417394319952737777762418300136187097883080203573122483733646327117624741334253920654614385277781278997301686108866171420780167908956206322541686016277750300159220064510927851834355219360527211685067685855241679868103569972409223101854943823228007369427986576410754445915613658350836407620585824271820159044032545651889037244669422532093976410075555528031480039097418454701404886267788606462039111919657200813545775059787283023648985765768521787925730571809364020327034614262312650745433535257799215800321736206990336134171621491425556802458258875749408033957173381691604161118734546020007901939077369804391762359987141691403742580573855491457474198603951702081116803673024743166153960110311577737257317901714280733177188700117926893292794264775858925102493847987583370656594249457082555620827811072596783315997180367190152811355328476066568707481331389413246547388351857057111071479874576860218748920853108673341651150234939948791938776335397703792721650304417283260319264599025589784870912464559161822290055351934613893026322851779333827065639620799677285611119695972149106638864767719154904285962628050009304522341938331677797755582109295302290091040628480411042025127204902607603952757920370342129125265704365106816794990896965978341705982503997233795574242694440821504246868734626169977436635085219104709097732549242528338755367116935263388906029408994492326193712452809543325721924594811548594861471343005387525928726210264870716734095929159202918206798871538572468704427209790967129995342810047806349340297540558893434960275036441772552285315129532108067389079368848907186492478599072192119607106875020127836738704860031479111591230639363434590300757805832109235843988637300625877520683412872082172722594200274103249516965437264677436454299260920455296004417175676710135489259794430460126011360285447190560167030603523474723831680811817654074717867005015956824254381119878111227907150859040458182796613453689386129989183649428030356927295271117537868407090725717846084568848408606968703985990729111083960938160429096431249426534517426296713238111690938417503873093245344551202940205394008723409261183848843538290498387668571458723609829834403109793240346325482266886770690681511047085560918626778182335487168471950768872251119759674679875293464811385897472775998017954699746770376302826309332118250461864393707518170372408347693437903642932515240358220533567231891971326468501983509515500794623273080810018471778383749243579305517762596738116001031623897799785262496511398852798625668095462016048112110369899306040846141172272467311358323467125824936481193949956591295989976719339344009002369844158751810859820720333823335710941989333477162551783060860301208365676990394747099827725103703538691089504965152441919515058376206468529756528597097366879731169341818814581036770260288674539695081854833666939163777168536754280277640925063562809933520525673234809034821135895981176163695505977632451316710343846496668049635402143785078723946756481837383657801074830944631750287092495931195806129407084584612492650956882784880356054739140295484272500030267759104574012279790472429526737260264571739815950897340564832078088166739355361815813346104221527334261164713560155246733904547539468947009341632216039092577061365496917033169057235978660093086639434532137151602861834366104335610913816885636677747870323845251831891227560529461999684175271767391976065782312261021049067347432008067536673641499079377823718240059919143544484694857244465363563296846751828988239143636323359770304234116424641484738809727356528013122671584187080014021886952159575423812408273956852036547674862634532935791293106395662629457105891059870518158147861035803764614317941523343056807086509859797163881307534147110937842210724777105464506792199235516661421116615749843993841924075853740209801466140383294615552844050501802016367432875428614145134948970484975921573339928700263947841679647142166079066425400632819377357060778501411297885904927686924329249868381116762030616499413482239600634280214272076005259382476723211027463794042045883932109133359981724403989430930355538834367164430617210223555289881632617001764322871759629154414003767560303686212553598234100444847366366026516559607296420688270382927420161915823130247358169642001118097259146799813518338198678913397049358483646020806375813985599762957933018026060965856689147903339321589882312296208516483006411277172047687660466835747187326440748945598347332519028579673091970292003586806726267493485699764173967908456935964909582554788086227914541923994856330450734596263640207861599260850635500701146185318113731300708410275583065096078201917610460734692453248163598664194783992198686047310730583388393768282090421908382234855296929561111002521065737036120356598463158238899489771425619273320786151586805704569322009943364893059739442099003022696732132206298870017006231074029253911034408213892061228596249539745258894257001905178336545323182269535341278678691054672254917205219648620070326728409286326585734236327183347345895165530946668551422703713641295825951898786288724727512685023647258733125493902766145445444827150683154970565618253411279025287596129137938107477469971093375943023846856957948316893881781441372880074122517409001290641787440052496289057267064608270352806602189919103633035994373801212598240891685167032496867812878628421525043849731036112128648426895275578301700601181850033149437247201175488434224959389372129053925059153926009022439439196016790326817075446856689224226906898720362355632809296352501487229339031574024595192746721136392967566107936444044489931980173040131825493451640190174513330586647211403354983932797713741002299970775708135959059267751726207143865516195527838219176011750629200228809870227687682851236562722592526390745206088332322188917391182921723712819131833117301817534350757799188968800751147433805322629067667246798081233162692499682238595201447403622649453178252893257699062696087766110667912563183061191141705900408380144389903805840620499772010001711572603747703251336966946717128770243098773316451671864247289376640162747269399033561830971344591072410409486295205914365198724159852698504192691194325779204369488667520758333243592399310871695453875358680586071783773826617328732958165648654053736469566237460095687993012529274779051256448432075684151277292075298023643040413681779962206675638107827044158069560882827381694460789170894545660338789437875029171394605703899516606779959575744279469999908776295510006126575577526320059714557366740750013850492210394435863826605212279241488488277221979156723912422439843303118396759126611199273267565477822299104384896463141682476219856838477588321846909211760292932466592354419624127462753801869484742606372680356746723699767569817094917171262071986173145595507992880929303666808649277283331144632371613339486215010004618936178518328556722489394956398619021026183762442453267681854719985195463686647510606792298066580641941939283328367040985872852385461099601869021816831528608572935238530854678239658965447205179768000324680585171960222127232505626371226598437791113696363438924240465972894548757965369683330598434866339264920095714223678216245855570201483730198167753951635037626856023213659644818909092997905718992491956709266541225336489845019645041287919483804716115006216942093724681647258462856595995582612921110807692918544270543035932617465642395848469932007270819248638680803029369626442799221518556823940795249539554828962158904075447907544705024685420029596976033409593899102629660816507403216314249509990402857178090690861164838776142209501806828874000049279311607903077109076273624163200728708270628163524704800970083900120752652063069175935038638455660978129520337137355482921639808751006399409249969389267011271897290084780853114161675170395417843872780048481171642973340859963079544639973677526343345993218595175365861715579127887464185100001012911770164309045719069276904163844618397342992422003374529713791305857444735431004750028355702378203302542149967465479328224335111515506281094726052113913799706968924772439142179800553062736131651654235366257340016525534753456147451205169396963761132934848184451824619896909011534380058776928113006036141167215125623914643752849142438384392122415099469798764954953936453886555255160222175826722516948318481851257265657330864944149473811906664015781829533968994708716974761892280452729780392957208578384716562477713204511164735391816511141603961985634392472046257270817297331406562675946754224921368662261994930021195854612698359513158682662737163319116235045595356064746084185922784308898109046525094091852959690503250459576884263057960533570439759861034417419734488273352196350730468438649481709920442065300628747848913491386209079296268711283100452661809709393003428600951978668467598477817136208098402846829599829032588574265078483525722422144511618452361042130519440314481581833105659160982902927830896224458515091870915481192229153400745807158038188359974047500200738655373382356056397645124335236695298123683668011717990930035400923772356146342899925332693644638942151156319696297848117244076431415208207241534189299209578090809555439017144803866380192024455356195995133981054020905128294949028872252179195559689364205844422230514345439698404933549039590531209958976760546027971248782898580001906170075425626247427488880646593608833210299049147952885623416338024420071232997419697793289335697301116402847824582555303285980295366402131925322500584489918583540557527209638860172161491175808027137157713084167605741313096865431861321900639422882878711278302922574591539947218782583355187738232869747062145346883356606386014084837453916814382630191261904512126012029148585720847069106311362686830257174537069721141808901079042793291528362431461932489106148667187457623985740933618482150852591862328419105024556304934760099609534414695626937298488591301959917042118073890168186139700114795490238434179383830121314495668600389609622800289310552158599349729253073165260409619208362046157768676520211282360292059500503971863574198032959407666471453927131381300805144744696184187236057283124026585598339895637112944765285574260788486820650561252626516865331017807496844886379906631677047374824295975770876963587804222339459102649661867906379433929834434302916607905280062112248585905034666546223517923785414769173182699406432739884237060049222179796636610137265262742109627479036783713098407679455311276644881435830809221143368660972939312407079287844007668252369288452128202929120637955379099541811693353977881101245677355461403658591777878774543413815355938005332404986344751034190438976609637098000721124924275549820396580062119956638369831715746165955431209362203616702278377183058090966532588836443173646378974803426223406859574786358954562283648484578359258061488944267459186173092125985359406177834944405398319659639597286457787256508295312755711318876311269893941815140881665102870100170555590490220151458766317304673355012257125745598007798039085801949552663972692413634658294688944169928776344644558128593771727002697498892531727959133911526854125551062011301937445339386569941557920053554779992864758587776760479424399034225781617824768539192955670155329867093277469317514904464753760257073912065341449903673498864076634736683600607424698136374652013213586946775455551409246664148534481020690256078645550167508909518079113243630511732543844948828574778506360012245898275629743897777692171654395856253198861181513031875001693656693711712434917090751119903468425503845734341004382327578036580859236062485098388033215082440282068425604450245211647057226955838101984185449618295250836147222157535718192001509639764246155463908982449716987958027741902844053500291318933939582177511931646352442467999762416315666498182682283731409217671604475161628120147474408841189527883888075597519413473641605854706540500227480399789636067185812976663766242344131224461920082597559993705907466295885724306903301366416445911479501926135314774883680938491632555290717800354381025010731737509275515969955046262754481309945940936768587804664082780695161482727106173139814500796692378978119510072084983974957223209291039277345985156137652232687540092373990793436385091631859010709466248207538133835845047031731748728657597264639635328103119536716026308783313699354649735347288069888679067919122491161852756864107462788957943324336714903345957794131345230044763535683379647134942017825203757940632188748491292624801780327353155678761293000260696561510615589221684084299017939910839711068321928633011365967196501454471535560244749209273649485718003616654977229040350334865723324423069474592184317657965877088853283301795806954241912721647980855203450032751741400035710793791241760834279395717012424330161971079755895790311328782073607321176152598507193402553470831932669090943616941867925406596519694390537334246251500096909586924724368947555184531664027453480518260782325150476554418341309044271089921422538368436323496832081138180387378423572682553487107281232413224101916392690650228044673964947842500325659109704624287424253527003967563471534825163943514070653808426357469277549045452104524248440129924928300049587009652656917317864757357202389563546446410571419266088855873341010276827301086312917822414342998845276570134522620922910818321300112198788975088595195396792922112530434706901477233428842176042710734611075836178952983945965921892769290760665172254949265434257469353830134515231027610405953061312618239615191918253528439119924407224691832213774281410470548805834538197650118728296622441963269454658824656327948519390590095347781777558169391781071019287182746430663015195717040166937554249800727969470675893568285589669034597393140151105799243919592251913680716296736384386245312714821831620722954125667246209615982011695265508645924130022818467179971411314568683583641008130934581702514810077810465870256357704052716086238697808788456143121532511508066957757353145313269357140137983447200453424222245370189048956579110791919768820612504075539249865269961133125335572165751156639900300192079373285122842928190627079217057681276679987340946514990345254998182792442734671707363172743429343916656999504098988574005504443665460915895200215142207778298302320811277944517002476462503881674306967937101064801332206806261640651523260753813251260452883908548303894381194124098475042724222060327623330551045125722309392862720516494449260087648228869485777566747025186228758681519123250067324259165583408030628708535344718534602686766071302539422206171858234433508019825719770603622787620912894128567232314382788823719748520277236509111970796658884901061194963993005970503974098184107630908742040164329869083474839920571421995502043427801429601476669924009839030016940629795076864304236770225109052419677655030464739283463496377511958416696996944452014453781031160544307844932859434210684035896629762484554300892494042847407503109066072766104351402763030985556725750550032502665992564433166181642837496276091195361246420326663611106011107668114170005304011699212964286267576852364617150168488338279533985064115422862936862144831315373101056263276003055680225011002265012494214043093046010372908611462935648027828109180469301279210242090118060594631510182245509965787368557188313678405360659998040013959438303073512132173114129264645714079734712108985536074362043007410831912488032038670684685702808928083155154309113550400504207123203403215454644889502232284635993118152630582217219518543732060646535303118443780148470348147456177245890670904182797937706336059999995737370779914936409311753290171694702986307355749636978288732630619745425879862603623534298237269169683279426811024756358405111470753143681054949212726403959283490122899822771459409331483738048124418008200431356386199556198701391033545587152876690714050633162817409676302084788940803005686509537070336703030623046941158168210849325291122558495608843118839622031887804339583407006279639037706432432973734606104596874850013066514745921083169284819173417536308393821373589085350330799679381260206932687006684480401012752132257074267427993013615675926827540469278490264207232179589220776249571202122426140725868584426360068379142178979619216700205904590131174108826428558157099886628000853164160785223688826316593365313522847048696246970476376826161964036916336829225493730298175737484668981782868237120125605551725372480470217898757515122851157060740325083894081930258390404155933103349945352227613540400552247015894339803281172662681343952905194614703474558743293769864596944031432885989995451055538161328499413730363294123644436548848960675303229795790674495026663661165995202387577854032445913430875315304878228828960994510113327932128023963251183827013520171755723478352514276199551438140700658572678274287439335639714411201391987175077839940963719625899078682959096365527804324779060209388728968864079481099488211317777319171395603580859202795206780714780278903662171379890205776140553742253694121880368222417827562790656601397158268693968702703282042995283995442009204440589849854743655759169385898768082236602685951061320193142616448094418622208719386668829141622772728587902855645548277222243778732417784225463208114978253756715201407205049951363154098027229727311930272550413769472615724460911480884571702669946654796460556802817435331915010407214091843364235330211484003654876544974199894748882357121481204842314752583694675995669053887338160104111730882481408880717457864930996621629840150618452829718173025821460928672293857284746354479998907706768242941645095082651458107616349580914162065442167950824771978740248171186254240854054911916474078698739641202772228304788751969931785864810193258736153501305272323609066879104912677725490982467044789453019392117313194592225516997253357794091389522136335677814561981768670813824706233262158478815466644098567403161625446925205780546657884210745399289993219758620335525880317720592291622124732284557171620272149659295008993977790101694332219166517890422744936930042209352944192198845838450562985613183036304862202055973099710971937892823796231071163445615212866372694514469150730493626674667698915579803037699926854896068357187357520466673557543056189753198545199740272793748319807426594531446121922470127518541602475418104235825738985871900531864399531316839202583047236354368214127927797976230676481119512518143083719436111722790746512738183794318440115267675414215309678545060505663440088916134483275338053904997311517154937753235331114485228278759574531966287274036485332369824776977225680280788374651075055755450360905595867780291913775913039667833296511078135366053787646688547477814670539737104099882785275439403670590321365923271881579074562757460558160654658397387705300871286171618174316693823914712294022900699755825553514904088034122757577293801913962889573972413873846450952528702260187904035543554771111263312030718096637553162841693457167581253562549880576250516631422456567600982610534267362834755859962850044115886342702329592846899861258088316500971852374434940731102012212020614958434411276620030531932158339888356363295569087359817089286493564386960782337140278529549279422395312189522346070144808573569404900051533239639765626086178638329808498867743197094087793073715270098196523333319623196495262680340434882513845746327856171897289543888533579432111478673248028009395654243037429020742910604428272716436470082904183243533812696456051410081382973947769086154252294462603104210084356098947608300705838910427443744975860396659913585120395717983798537796126264072205807887478170322451161240243825885816689944979998710941515095033399671185329550836196930139660440338633245133912803479862772157449333171491280685438044390670188970337413713239647868225990342735714715624691286202683381295081799858184426453742977145446975427164671107255273871333500361808186786203195457632387471144276253872160413143163568335849747058530995548385856517144828834255766662272867742797402015215703738494374264632729945988599393277052242948597376963061081810479604419809363035635555189955619733153708117967920440822038767723648818744446678245510170041641956518022959536216159607315271012137306168552172645852655761409413783439025573503280846668193163983866205802895543929880487071399058414710361240688771202479117994737350846466636380349249603576022315103056707715964892509876192084053958548645099813765676414683572456999937191504527870203943638832826778175223589667504225198480068224471036693511853453398917017586585314546448791060669659005105008507154360328512881469983772059164009334714085014291107145386461796106755683876893177712634545441572340998746477999256554053558260435672459730890053989331371203631266573907929256283154169771117027919501123322233898149965843935503974305796403519596539221899234950689589738549339359761384838473204351104974609856735890554217000948166622212653357069439605558769195453841610995210913935774329119490379991472706616303454804920401284644294288367480721655938348435177884065638666853161066633758120529860918358290479602008502474034634750219643577958233044627056942120772585105279091301916775660908598299953185078572617736137217889577291340190127645254833806909704676327425239812937851500815353948686520507707099308733203169387775284700064058160951752234038861131463937547340931684557572922735880062978507922102336569116817050744795239328088456208551186697091556686571871261778437461322559040464720335926418647635935031862275688106681781612781849816221304952779807740554350755060061585941635078582684512110693100795961163772926689107518061203010846853593121339101626631646894772900499561218413806927594005005917662413009713638405805866975237995289951062627419849897540031930302218647596735070322006771975370840446731746308621448762077216829506448789058859954096428252186717316163402642409678792602969442703796096560706260482134781856969742766347237991965876848839894791674628111208077977800422062329100318435926913704657706551182731814010134951038165676781611908580307115149165556285626942590450459993101202128769624507319809562966063994759553390213613741426618529653653142828968864833109879511937022621668252843602596946271524787314407843132581878061926505126758172450946781423375067512760228654070606953596589528904666662287988447425129902468552569646104166114516210098526160327035809692811169203600901704123643029316879526539482806291448926964238637103069037101015656738359519698609257165456271465591565646596743940325701742388303438088049411789361101065634161655343348264162270966942500318351005327914221851363903566319343229604223060609048913635426708930104091374225069387499908899445207995399441849807490276722563647862897826701124212478228704773083230672652587153640071196312583412981313502161183934529815571512404706486354101886431819692435329890846708287994185376338159088770648582779363179511971915541543051682055848724690036267851154579010971226776078570529347074318644825619482698341059658815452149886134389929152407698945106437032648713283023934729142350940377777683900151901332928363947427610289505300431313652748270710744111205493954101276630395653508856002147233157668746671384417597492913791280755066165457145655087414608515727597404040576076321938687625690876279407449656709446821471521239387506306370882197255415438844010190894358458144740199671307773277348069807068642401600759460123213590427549344414034788470217512452483553667878919555619072478079036052022355742046260109926178900318863954796676613344732791664642350427000733467044713223891707994089783959222445813288337014365478423586039413086147560096869209014181485706608346536881886884445976906489216498433610303966171262073591823487994305185217683388519475584762495806217648513101068231841621189744018196528169934538983977713679206083601600855986625283411087792846487065814212906437755758122349746284114952424224956370209142082972785223508078444987683574584340363290921556110769871618482302547643578237021596360636336700744037589706293763280169520229332073235523619500128492536823360611462685349550823164960716726434291703469786906239926128053908089069879255071459016145861250888516824986770143198737443118558389790323093334412230155379954663876337606087674819264137150381213023646929370290231394940840120567751303922162142454986614280516147993735635979813486274311984919420545768133577322880654470422832716043256630117109241050955333611414366401619733736096011745707972654551650513438976587605562581614609066423589295064163681790709459916546876075057953418658059823558186260158754170508756397160739407650629074788255942641261608699274283479003877430526168696942667368623139315905604547979936260633874227725491114542449581124198029215471077957660914411972082403517384587106758536551904920309739769685233986603634592450543201739119719240221635903246832932047253119490191039447559379923510820606902749202236769824716023006828735719374773791450261026522868356330355853501863944322039471478712453213252614789946549540262910530556276005193581649081366317315228653351148536333683134087000965130501439809582062658283882892726675784848072316088522906281416978690167502101644801758893953603994576638484389784975164656558027750580385733331404435504884664799172480023341855243040761650001121499516474193817540940825398054085619732498765136561522996240089138778051552655592061476349492666014895561452927017318881898371704861928263290896485663248727944949715423606454280829732182882827154767869834222347666596417475767747954041807015834769179516184818551788821278959759319749213867022915487077618098177886690338874963391610476621607660696297896130577185766434101261927664478121889778137095369664605256751435479846678359793624027224492646187907324556669844659983226846406118428466895971919906006095998676549194088191019172330675159450526814977986187664184015477890442636167247415568210083307411205576417838049455399726817696364891357959282379002058264726871023206746571208244990089084439179778546534783292651087521564117276149295189936486752420200800573157786367507500583903275368971324653902978617075091115477768025995346590761627004992407298249142355726322013097173922370451862592276154194527418775175028862303455747577789527117437137040276590963925011789853348666416146723811543808277657594724065698236374507671415170105074364443524927107372359814079507920278482091014933088955823674609946640936552368698514594234329120334246399306293681214681322252029584956352358223537323549324505913940634845661260525322618683902566544004039831763508033281761379811467600851959311221508806453281433640829431855067628765289637024180679490260711503584325404777639991540570300375611602658732722621013237337613849588046014948092887880747551166711982393685265684090104013412103079230113155746398994387125430554975130868345507280382647207503174850168450008373196646189935327143550716765072799105387129704707573303446571788909152040088704169513990160441863380707597853969995012846745987658264543727362238344635845888591038702929197684033364843070791260489032610296359227863637105061798564348163072116359437326261789663036107250481495526788122613204743495374685028608487628461830972571141294780486612367985299396003992224508447675168699838675055589410853139202916266865954698063191927559542505612348102339773148318737866364731382207838037350331132510450310353135890124342542029464065549683432294115784035379842526589883113858119981635308288519583750268784179300852139453696734386028804398968071477276374041984313672854845528208439143727681218041983312473235898647267152956701099986747439315370595083076753431387783379281187771380772023245900678029724636646537408668118059089844685386768583134496099939732059368822289906310386982154749430839419071135120371415281741367037010861769191294823221371816292420284690586928772268780097297790127940783322243420498477752406111086251804533007913552127041476913317293175690857316328456017131159615520322617288318835424699047322831699099424679580474561839823356492804314043737249367246284568206487519854582532001093261568037799720288172938633888953030474188384213238821687991226354348178479086459512610086616874927427482270881167623046656564383356576151037067185087537824522900979383167646565455021562484734189738820379681030834658154106671085972884080672030735941009323369980750709052907951141732061112774943230210421650128943623100364284345545994317695282580906046264711448656695097063387296097118429231653466331604610945244079607181646589832791331645939476994407516989299010903304287879323478580947940593224198446667077425576316931744168925871441677008347954332221059484535154920705719004475079669209760629236056921645289012310129450744784664977166965281419224662239731889197460261615179123609938690863690915477923543902640688493459504497426370658318917090833869788940834598438090001213776850095821032578447381612995960434798614966413423193477875942826737975594987215885073627551981139505059033131761724982709663720275459242047193330469437086832186240734945756934190265797828280968082619658816215892185695325194583960132852317626885134956342186009426622255370810704649451831617003041684629063177692227840823464608859953624063299441828489818938324481744334281113995853240631757781629542142662997219758810807644143458528691996021721813931506784868298109607225988086115153048241848985133955202643481670608250769111861240416069914426457946487090449457527386805500150043282107488805230903949949747946936328673942234574342351460005728619894899703277031948213414053909182776353518765744084350901111272868246224216968299284715051756589870264520863669974200454230283261785642134692059473264194438848345383199725498823558464310586652875431240762680169525756177870786884502520936344979977944295201810829541443607437437874707315225292219640826801299850023640357828992488029414954066533188729795910532131870748439452690927704133099724151154233285609199434340532595185972108806984728701510033770591385349805028674928695151048103326461790749537649404045575183451115084709604147581099475275271584894590176016280068218841132804667335745520686056776856504458800945288969646759560691828460783433796232371871122030080852579475818125012330016342764484465455221221350660254523190624882991905419363379301061737534688895729012867042127407052218524099911927606327353446847932406185249794082692077992716252732981317579736556825026872562092758040747884390170280588021145776928743071445148976108099556232194161541026599412145539267697411498305813557879022115960816912508316338628697858696838632133766591390716644712550464652027647403662126016643769428285825789453927031209429069861161575729629725678937357817935946314713176683306055541656684524433671168899137231138012595432165692834449713399260034220305512350763090557735716990345436832335471524765073227846422252453530645135501117880193255936783295821927393299096272764160270222477784020737137458169973292924663940456294707781818872095078922785136013497820888154672266044308145310503739949521539942343285093229801445772070567240162023506177363451354881618091104943239881635929532269609755701926116764487390480850621369915182778777599192783472586581618721692209246654893427375387456290053437836853785504438841823913540397866300314886615307508488234555501356172392282947213680307925807810261250925813031798490067156124527482485308946546642191064244236195313607099135800233442841400032507097857301925877318612952558247458837118417897484851797207429037151909073434077008204734842203565611579272100266865618159901194975550979749603475646350491127302889426740218690504467752308299238663514559211760830303246506302844316638704325291333526438668758293790297896653900934193907996776933948210176114884411553404573059663013891069881638619718910769725759896729783484023242967386675396603359345187087827418408960599560845026295694407219720484385298084458682333569866830437585783590264652522346000801618967923737460507794197833585280192522618439964476496275464347973692698004778235629599965234162266676369018190310932668775950829710713851362047398185284091136880075298794529863570843223150541363337813017178073998518703962432572023675153291171651262622020495076505899558512629090304854155199788686565653489300987560671954923186729937907030858454052060533888387087490792054502056659786030814918866762727259360685421989946279358190334354402323487399990864806333845190790198225292569522097625795155803570629965458657106264287180938229587487224728978700472267335763269657770063118277321876963638519997273387886581460524659886103344423198004834786684710526442460523853815149645246104404207409236606554985802649753544844574264094973630706773158953642037566813093263464766705320880920847127998056551927755230230412173627306616705969569879352979709958908839305752317440105891473449420870434683985037241559837495538425723536538602701614314917093066936236284479364380686118430655762737138511555740747207911388104545585510566189284545617981808457090996512567438299924331334171266861499861832117032921706283796550791825557603115140288774096799971383484198918448108987762468746312834570489655713394058349053109147998628297899999862112379869060622800918060270656710811289174078406307601563652615484635764744975401085945089860693422105158070190548000429450454966510647873374552709058877472647365558689873088900422141483024144455236718532850806655932973171966957987230190146797461084591260061425092624721632484430463272367687610895460124487141932225095180855570944100956862258837034573238535000370323468665436385721352521528566721798312818417482247910238062425735841170749209579663464360455474382636337671811172970195337045146177342125797276359312672262878543934169773716907039200829030764244231711623907822778028723379360965006904003682289806895312809029874553541344770580204296435734302594446623900989962566619909222844367762641314022012558638712967100986959776398960750130788221039844941589671577740418365315406569734204725397230386504014498880842444153318163926314096890857460667099781187535299993631147849963169927607074380351492776956749207163879978526824258108106782971433345224267823962739842124958658308328204700031036147739571688771446974776960382115648740763882426964914291294325265957018899493360360921366739743471108972814039079069151697464568597731804886269917002749566299253762945893318478191208831325184883283557778011556219314717369047783260205410115749718466013175413973050615872819832897374017163386698530256401879315201998795009573336347055742751159595151824852970559088491973948843651315290927612515919658279429465821361725120799707346600218036063262016682673300323923657118974075933306927205868356563974957417338002991162395623734485575591702154811980022097241901252019588570088589969392568066003952237575179681462189174993005148478727338911746286374569759430665792963139312623155491006689104968717436488974634057090177734459122113316514050860725291010712982757481912169217869760272855967326365373721065707201208458070736021116962633568640760867757700056130859835811686210655781235441260119805631235372205992728029026319773138550342721472748101245798150840918627567446306607019203745315094469216719770434115334315800051020567372629888080306577682499139356834183088635330270947201039534349136576998278951929470806632687523082774556698030009929467351089152667607463013786127015782765738226018858619865554787331601386950196971154923956479012596061912838642202700084904221322574021987742133224418216290965656338127556082676944069524138757255286363949055210213597132142394484198523885154445095841679616910000507391343584609906562122912077600002467235234214320896084406209863260625847536512276248103012783381914686907041945107420400366058587911263886431212301747757831377517831888345083824923883846518537631745464368593280077891066596101298957246169931292663916518294894599935984235839573481938202264364932879478489194304326416795442647522800842558132690255177193301625191611525766565070231970859975098461445701371029363463068861002110180640181117480993063809785815946040694531266010723904661080026530726441704449252438600894718954934551418679880338855100302945087019015842494227148470452122556991610763119338794993431782784724528435047196306511562110465595913457668540369660112579316667090985337775637841753412540405432026447730846608094239025863529883776919625181280559654383864776859574931001153647560885944700368271800792661933309319591393542115947234078279342321270000088978830813543018873023477908833117626649710448449211946647513733966136425875485812616137257567531150215238089075500065606613449703162989572760485338060051033931217389622203107572222144243021167176388210914506384876021521931509863387464586038905157420913446809557849337970543140163070940520672383508563133785320734021546941305209326544515193765690123410430894459174879314817502671449704175463394126672633358445452376693184588077555913009639369081704241593321764164136590696696713951459236420011068866174841236498104003432684138693669147473488120073643452163766917220316976604079860253908414931807540363844329817919654681290915940015995070779897865154094453458925682776595394148755080535808592309933574357623554543476169660135350444015917817950488995843044405194705889246667367114577389299216893409545069194596059647454448696956304550603941412443520841653650805244357504194644343208800369665281976609234022218210987759504001129545090283942742896144553380648059773795476100600403699882531234915304611565571317643640087236470617761233744597062552549002064140336118661884197787454093880106505962565661370405497674586420835777765213309206619914697079650306933906240759964605447595540697168672847527479314085903080007149750572037031782282412424466393631821178614458888006305175692899313295403318947120023779300411651269208345200615449518343747571227243221733902266404340802480784208938265843889661684092548386538207091048935661813237877101737013017170181949112112442564429813712037640643610836979526727740041232215999495890921447400070346189948582648148050704540924249749013460778012614561860008524768566851892079759024559949971268173458480928519859164616792763644162490028645078952749767196259432763403512931572571091662695797764847418755506279448333545463149606468151550357330806227736650354988055721895243757318837547144424098369155094729606688502670449873695155396208810859583175684951239998664469721692922599826770226883162061852130782761466343306521125784893078924948148436918349937666922423300070735546881833708691822825300713151618110408868249932178499648413811608248553802805901933916123244064233947062328628816256757602581867824578701824295904449740275169955651600823115376930786716185921874743233443225243394721332573725678260706397463921948128095643368786558135658165000024387463151951002774340441564311048639453817732748060564715090529047487346032045086073222822321532763554752650725402601005964770070384293692444661036001002864794459063395677828672008569247427879371832288329730281812145755321638989206540473845703939849954316177430954633642494737715046615461829879608111245723655123140264929855366869751840371357168080912362884949572388440331109952143492881031114509979777178140124050841518899940421076951729729429404580625566024988417104249230949646815436128047513446254930687090694010628914496861415558986071198670619103736320526651953884482412996133078842001009888656674819448573576153011332719485697621445029050872418661706255698592937833499759753917774109410599349050877237941917413143544592436197084221507150484711193602520467503262451773261965956430048615425249029888246098799082509829288874749078586265653341762678213914633427369762472603722437316765516032910867595683713354942637714207563245041906182777958372416977514334557253153463279068770195207942636829528725598978840118715607557616466640068102288903408202860063865355427136566799230171199914420173303127902716247342170776538069016809857437547330318668457374723893021247658035693232796154881984689148582445264270452205308265906291600859690402133096430658060000570406511153867679758018056662264883901891659507068045287884864389391586218507158741255975185237151030302752897381783579221319950341488290529009013740157655931908947870760237512723052092043693802594274823941574884077337080820270851016008078864904635289888712835681055317575442310963836044623790656471486573737626060648267521857263290064038314424765609271939937219128957372471728867158793964036831068446519787202560108887713388077376386361189438384776895406639422862699297497420345703689951234257747536102918708980982180084348920256409492734172430225576322372599841780555643065069903875686453071470021466513985339981379717077136341257525371695610504168610811718416169916522488437162938356719444913430585545173157530844351510447899711054944854857856851932510863989245009337035131763423124835762588169756237150084770033847991039012714904015001468571219551453151129793164797581510983865883160636328563616798703653762846903648636075667586429268150487115242078818850782415005730305672426953365628027228438077665482699709260730679237142788333743188610070569407142294771978415102174366328428956691954371072123280581121574686038868442436052235437716592600989495117835976581126936843890692726769480904140851953449066053042876726782341791999001471713380095731337162253989961903400895235565147023079924852375795822780616765263268965122280558753956531019800207431092764368161982773187641326254738879803182901298055579807439259487537170694215235958248069373624486386966023885718418742081514286409830799830075854109441778455792335348760688774292688233805641455488133399407373270300710333032744101531997438400545325028245326211093515841531019392389065591651996701363345475348223346667703628816499515115699412908922252121014061034815260758078331710358983893436410088097156862386005160859986706107421054730448119807542781720342219561086675507869205367846650688308694994627790571928945441992771433481705743096024625873781795361523774324324616678176000063270338920888403804176132666350654927353200578189172931976406514445769337440913727108942812293745707352330926861001857466021056973902351007037087500545670651515134464823143933919490450056270253873794720762759219203191852646128604055618062943899265000612513231874231160797591822467055963545005612990075751812491867950390972268991788063743280242392257742919800788047818449623678661634552693701436397196316699803069714587972934218478791865261846333394209715196627028311234414051163309693739251031541049246821883471403839884262506605145941332110794076732004846244508305060592440869866606765248845096672644230263868857345003160855573974210709510161949294478216692492531690642806960695548346433710120636522040315357940479882219618663489480629347358691376061856338308644550560975204264683718292130686561553419230325547606372818469935109956679034630672982758490293261951708600793405053534991398594865210231373063472759679062614349510649696569527776551747088585325472280761587668190662075488851641870036442951308407594998726339482263165952962406678526708347518470024270089810620991979729004767283419049878572110359079239649625619803287736393273123602704197353372247320840333010616892319073382625732626382859106507646375743331925847762306786934379437886086539886901569801879304664458551800245850334414016797554201840675454935216502757998184131104337672777243119819231148992572100739576828334454348911827002557098195263858921599171435124614715110528927930188460345568237841572191315418734770953532990590909638841242021380940710651988718169012222722619438148406265518596044053390335141404919893314759992885289007388734765514293083669605014312601684272896942586626411179312299028303430750786739763313564742040187834495527908040215464508738734091015088312542056520108758316312810359579701588455885904379269961216279841988217014596956297535746661821599316573754647132318949898112228838560060527704260446763150277664841255182281078413345719894110112253218033262284282555444399995958922791715751499506495967569444107370606732726207077951056445740678147946219978362295106032933309176813876408215416596349347299343631998048568408245682373129783937942650966276492641385344169893852986987820897649419703352288455116750393268859962665768360408041376230012339529156994280744300937681155422957744604673292655545985809384084911152864101797327709032569990012237851315079168320782511071691661509179121903627620370440015576961957212799399403403800769862894727200541461007878123058297053290325886884104335992105603213747806913144417106976634022147794013867100841797168162465313353412145036632065674079161591305824043834947056818678760045522691073005288132109904986173312382969504715754205087863425846588291837963092434349164931851564314690513263077800748292056038504096352280207882670745072546304754998173330651489998704062697818738479966902849811222724123253573272873934941012461457233998209275513358694177069280848613734799011018238985970514709042321249438182571652660517057481826446936812978372117171639123861629071554997018575657446750266950438232547207555888524104355801077593200944784296583701705169287591867813521266801385034532213418550205710497740399314506771399196989142694203247883134813788310394060440322709238413396068419824960486990399253986462157388532837888157341350959616411209163564977941426321899029955328121389996158679985740202183838528989264779696285420024919275332155958720030001771875136805808138182550529640712991685317162887132604953407621933716330828969652413784799982502806882381882901862680610138866134310883833832144805900746547335209570220861713435954576900983693025942239409127945626186983681443457334182421938205716793623677018815667710990981112036896205773197074698918469332138583091776505765651384959078141929282478269749612374804363062229828757075974069841814002380577968429351396894862360118783002078582117069747603228460866944569046557446598109889926068326014019590933351439426770554086238573241490949385791434954108368981057183987910893896834939838416204412774840624865692049096951103981120034919188233780572663179235367514703421261865638282509603331291691419789152178614198375335616690680901026814530125661864341599036594887342362067421871119149753335409387591627791450121264440402399342923657262040904549795463656623686841021454052841086569377321357796060324059543088872788352661548408800003491763442328907463332100421899389929989998175997206467317862659939177407312142507715365762743490795543662622478792279418440060903512547236096816814419579749565619060494637775447655611893848750680704443980066584684470762326477272408209842005384524245592610254251862199112127533223490867970452665052925768212341728778635014319717971456590841711384995336583124293095184233856063498841841048197750588399164829432432554030797035104383525558595106087173902737813751661658213745499028699837890938794103926631114825461424872366592492726556090541599545798963084452927107201475296892582788140769569417452746121869635335779363804893201061496362602700123637991838885036913943257938888462306488650168478843186806015458446754481756630849229295970952986010107435625245623839870516753119058434337580571484953869807712551272330876988179732298729748051058940099967386270820919981261481510098967430726848648061074492931509765821688174061525249829405388073444391186222184982669193057227445257132206169075173900302417349268323950164563793943304751113725926077879049288409469764737124705249365657293085966769946419252104059639862605463309977434102529589227717063388739556881939787653887127006337043098624700263002862146360236935298257280809737017934916183611083394675565285205389290764725674597928408676964148167841068778938359392133206779265260976196728565225756261314476256803976659336180381183539887672111102311646660579141182699462927904470853202868315242933132310001057697676195449356637959466949099650567969837719904434180975416517055435074005447543247938204373318866105216011665468857901638078572258178904082130686444025778198642865437838473819418279310785680175993780820802073624906172776165002783070802437240108054033801854657997621903549712497419908270584789366080133814476594987795939156845185371931621273831098362315944165034442660778769020149404409136215960586778711790630025999773979008904393080831607945208846833821430820983550687747075360904858038141616280376234606199090844003371722338521636027865425888302751305548570069323068393742116057554621693443671806611024966283218087526164910721165546514203251160714941510084911165585474743904322527905990946948008502637582696787267066978733753604496058317566193580970830264632007469154918182928031675618030248768227217626937810196164899705766198098892841868636028435659184289517319091787958051762903328774925342374339231889903059172650289848473740058600256556440913369425326684133032296485951420233528755074804247476138839028387510579562736303217863701584691822304971423068657770498003440862237234556477238751442252027638074157795898477748790830275458605901175910027577844719021661921062950264523982126428398415424610679100155534491395030480551969755556460939397788952722460751847513905755666087547823606813107067340986643500564114785532218635985918927168801831118102038153434535429432489353466657658313923236184429586328439339359743048774137706602142970919068735234633189385054261446206527354517082709459532983762963314573444209276057900235436347387489921708842287656430557711500875676720328946971622196711742652721885873477107962662809906396001077383764768287879738143440922545636972780303020205164274878891956260236709013226875034695673070535430993014381526426977311142940201729069917484474362476742807914896452099773938452342917916503304003201815004869850373409878998150142923407860189875744409794561873099433528223282465343740168476219542835330919731551747702333138172163607733447281016747003289522302335233759185697217680611619903238455832347446335958913441885244179221235581602030064436166435902576172620964943439233261247487456346105831929670408971283651972347530330818415587456986476509754416704518864193578367643848011186940387039844893733745568088148952431090060569393280943375236138391764402046153410422352902086677453397165159900364870539081292238058079918875242380892586199380007268211033765657175892398031329651251978391003899425152930402631575960398767946641483463366101097480097329973527506577951695012967397329919445410833591422983323561009504028849091134668013405591178740654699878175977649069076401932830152602054959752467065834452236971285253872890615745327345501361043123127391004420270848326131837061551077203484495811998535927136977650668297805544824310973815587955272832242261829452739903140359591883070126816320603015401784483346352517317932016239038062130439579494301836236259042149423381067227211921050869042086764179946955780593890106929393833154730158189642033840921590445371212537393367236694235826291018279346803360614458066803917340145327555735807659810727077411819974973425333486864575417707586310623203277510590805478527598090328153697419009145605439485338408098982611866920856502639452039926167473607958828522919847960116485377833946382495443251968832295535150451639284453610634233081921758717398830287210648745083938847045597442508141942250310266551231487202416792717764181221302641767184716901741367879774935041184495668927934227046789231430196472521260120649877037374159746108134141287538187745007163594130827708607833510920323388573369433401644741801107518127600028559347353538134897315311514247482900095405520170110836560834917996181432566703734121820481790831955916943607799368217757528774307374922508793282593558319433689514083694920137982495989694127711432264754355922845810024360575508360201241510421943861796803464815820079111635434227712983849337323570965038863199033761061802309228792579066411689142066388636084139711601871339092561703206758900826181140771313512233223994781245947002817499468788235861770824554115642425848991167461377460388203366570222895568603943437942306148125158014078320901847131665863856004480653214049852431049123149062858190641456835151541094701276744788803526751991671561196670953547766750143498554127356045107846934886104804279218682072156872233318881251359299410492223396799924538058359271620482423399333081697455962148556430354497339336771929662864490017828838491555199782808950539694321579557231241075499178530773087861222093486046539155973127935536741638987901632464822069395783578634224147444832416092114712882590930146538416264231202459806952154097433293500003389553154861126797406894379232691417753383894993866479761608681598894863309482672552790800842091144269628718719979928070285072287958366469933752969790729503852937075237299038292599506838380399433896888156161361386876524902468774208241701628294176065139870519637118670476504345252577008932336867805728908901075521290419470260807520688473289646155330703452913666490959536990903949569006231209605242398421356841666336675314090259044686120243291469974584089855425633831867221846146329627183898015227840936001367496491413424869588817271649032156653953699924635844566028278216127690073621343188209114868712859704788126974837211243831866189250790795890815072791162706645191945164384768989933213135599369236212808869162314416301252615352192390807837976305615043669310234948000152004620029531063734037834211708799987494087507940077290023526749374047818231057108626655039167543850413776187076862012153794696880682659399936077815240802190497390328171408168763039756639252091384873010316780962344211346984890662216135202953097241994164709118081572662074493701887636969165085342624283772743173077663725756628011521916484446042870099367035030361912120967319852518249539898275063068336851168157958312424555719202324200706979356832154121891411017561712428296648416647734766721746700092836546670296163600849163445464239619916528953488155644319331150909546036839576732995896718427034158881566110020816182565415125934845884226352776928101493904986770518841669019862521694877432826840532514311153760799793272847539580363315624049920298491096053944301681508544347711135080824224155188007476895186298131450714108933210379398659191220661521441380036357516731264594882721138730796387960242935252866832398980796838917282619801570033043180435437896085431344410120401220684950725691757202018519296374860054486057340308541532705115486930028975332613001538998582583272847433769090332249063537506573124727894197596543423812482988926684330662710028194733978146770829355612961393141107246192164126819255068293612987911166903139096611152858614801808804739581967623728879348427615563523334469389632376738013676825848044029426031848636793792554108944554101832656267947202083705311511761262843861311707633855230679668634198966504310706868844141321471520257473324524037103171251543114480816418625313666990646484046255529553111223062174188725977484401827584609560229083874947680098060723694405785047924699893605774140466135377010610051200416332365345337671492353744610782016712529181665311830144518472795364013995387635241766545174259767756414517647753079676502665900972180764140125904243263581871851271853755094937462221334514389233381865170983941915712957009907881260900388619086710127795198596511458748134669892227068409802812688200323280570900362281013057194344964322507793248224897197236360741573009485643527323882896223901802198898014372765721778504634092786957799351813653372071250734746883072582785138006540694043374500004946262663621126657600024753942652246373605157863753253532907829854192665634301925112875215649533906954642037014061906456536064897199580714653606580326522773243837654512111115249761261608872295553686530658630730641619172387095623358167528006831404450897802981899116052980812121558987030191004794111972325053567668518834821243626484508678574666226457421160792139238225803679695987151774443538453909947856417749036295693803995305284439285170342413775483494617950176368713750081625710134578045968034297529001570731085519933464189472338264681499700916147410095227487500716740435445018507011628261378331562884957890202162629574826305047895887752080675088089227376725623705361277065034376212820118487414326329020720264410526524256936140007576913395944377922666343979528256429052347276348821609828463234517189103876453938895886170680204299319617193640146716470888096227719490204498228005749656171962866257525372012277697792114984988636410390330245849102584655119973894672738738778659384016278356703450000515065028693396170209717701195374081110788895795543458635557141113636332491019084955379524325904672144513669578977163066586953772158639334681357088105105796059671245533505913857213705925818527784916447262599020975701412879997396469523192594003626913571261258804937160606085569419043751414487923330969275877335606428556819874809457186992247107018776991648305185548337392682071848930288197880705563926372029235971016403086618951485007495212893733277122027086225079334221665485072492166370081452374051615998604048724276977288824128968513757480547786586069880735395849677306714787236531426334075799085967719662859937131940208061191257926071134894254383141344236309636699066703212367124391186507640848970755679925810926104335773560666841473610244811745451432159747961426661580321066599756525724602637281722776769519976426181440321218397578761059923327309048335402539978135545804400302060256764656534882158635906315661190779229540050251659772642117506569353282580009340715541900800520111416150210237123459024119858449537177595864888640622176276827921323829123664561430217032697639524742369822103839760810052904814673167113426460459297552293483007316919924429911620565844645890949454595758443675550079579239859313597728059241102530680599602052200320961070676074550530074895367382735202202397387946977023332868312672407391065615454049663911678958005383272828367202661714177616981334479512719376745962831596000840144074665557692049047026834552606870572041660174948141084939538602429080266241869075957687748108180854357404843699677140825673624651524001910920964387783744149900778880222317848989641406215048608216278852535494327682409053225914688672080702417201157892850882634991338448596810354981653128822402062867995229804442927814229695279447119521634475102249620002195065748373507537856416860707569868748021885405673161077189664341286563913249210393359654585871828694214574339083529538166352743511027259612179976883202438162524979717324707619041276994130839528121022496640375602061880219178574394531835682812525167314299734645776192690355174723780855975207751497804400503713939782979840024638883033448637086846699342384891788663325379847829213204854500329292176785571953807054658794640574095807800102865083882375984372400379975880298709502207338780625940035822616988796426118784131077914015262900810802188609790182711120935572909379279754861948635906447205874656603793789421404823477309783771039226823657836876356262613011678267401992259270995374684354381196513238087836739197606047266671473881684251264337888408373327858057694790740382911075841054323104668424161801238500548123450723364119772782066172130113215854738227851228763542065084556853457239089168947925437587514157103452088921512778246601822503397256024770586885325845481249888661106137051939771292181182469340873209630089926668126761673291760373554045794440964225389905548381362910186245327528934253686009297245580341387994330685268307521217438538981327737233472967895433505940542898150868271012279832621952720945829579540420361587523102757567354138249858840609920959004352382075315944515571276560854029034976360857702023835646230355513918741888769215266491401422144995622879387706343724535551309756217419320241262378029680052789931319578820061483981774989600011486979543607275596350622052932175476003651803501352081813682431332903461024391825379962278928673680175718469372105337330715512638902849607724880514976805101537436999691221402336032835224739993190334845754904014351430369987289334947327380282918571379812868575834870266039602587252593869246574605311133928574620766011037862697745708150967406109003919874945632497260541500922279929762042438858618739196719325718053521995172399657715542640469332007900465542160614774425968768990719084616137270322664468860597331497872003365976243174607292673504885155122853890970448790114027500583338950361909522365819540308945182295951781114313698363983554149083499267712121080380469156009239056716659217526394847807870586212417862574160605768666462552939149653917036905213076508051462572734225862466246421343962662251990958137472767490497201708155293531717404456122530230306658276592062060765193310888731641289855433538510811294982384752485530987808760669768374074636458686102993991300684394208845927860264961980767297386306818958858539785027382812241369409837532160497558766722411198833246500775910718045330577820219102153642549924018349974710127154820693795290912287779351636379323553747160626466155630656566281901480533537056939104198617871064909793641118581222893252720869205504459635402820760364532417208657983113879485057246095895578776703625014548534376884020194120418812184480746485290052612768347148079843054778238721364880848077694872670131640903295475208958672538274881102749748959570435117260233965153902771358565079285222208095239570917900735447761599358809793160889460050351697630976401194228986121603217237551746305101189210874907904652266496150787398369536877046004774844885975502836089254962570208374683230993020009365762383290166526488619554819277439444460836533490006199285974346411170312997506676229500998544236925810835089897225483204492086312867277978181716130390076363387603246849878966593984665643200283791614879688962999318291576575899914467913325193613410924718109464365494562029091785126459438992960524317987391851462406426025102964430519729174980487347292245552549299139159447667591642953711788658275872038666180515223335648295134903183938241163862807926565172345369657977067902614524687008472022451650164406625337126623833269917865438978477169153592775587660793261568062183759285628261264423557722023419196518251182952710526999067269859276198459135797704778799826511852286374651817050096940081205856361522705110898001829822553566800425094724213362371147955451728389337047006372626421331540574188534970984116279014948215443994547390367773260545051802425575837965601881050705703844526360912620966383811950208101192785400185630558322746959832769071866510701643019729267084194256054291565999843858297666842858106382160970642416439949371842259426854957078172101522138067614998243909125085168946222698976304496912201714926972640193801032782840894974532608956641352629198642392454014652892351055637844800707786820236200235052693632935699052788851172520468117176655765848420393803552654992498200225756131606117266143970354411790169256070373478548819920570778924756264823987397700265148143845340477724957966141307860947138402217230204883540849736831338729276703452304417918207098239819427923858711034654549752030329429446379261511386143922235189551758274983620744394275007153804104802303040477667010958125130072440260086260415737924979443741383733614424850253103428579816581581230804706298295023093202464564463270613590895147127269291650898640347584341438360258064784483925950378088910926427777636801119492213541016689436654016146378220259318537554100805047361018013653345577323698697421501907737672074665288940354609360970043254618679093403758059032484689348226033635853549426202187204461703317327308999331310174625656104962327018658093322166664488931201575831192067218532653057583024671842793530310601220062857257363046101454477035518514125179504248707372700041064245288621959778512056367219458460792984724140973359256010622771940918788152017754904356620939100653096143346169900385185158827793983839988649192788736997281621554636050552994496326572416433421552565547474899654944942369751258951504806743416735003341371419608150160606615755378278186818944917572913950994584852137144450936856428567775003576190883533361398985493600924217628858318056576683429053736492852498476371181566266192943433083369545162986671739101685653554941190035299807231171300337775608778384069509525692528121871795472394365344704281716985578385720789540618684386158849236016716163287783857874526846058051720236533549979591084842538162895500345131459875358108785648306208480980818448823616457051684192525432163466698995352724932623992266807604140664993805423987616057361790282510399708761891924835840192444072188211540208119671663425819100021599731786816870832180509780458696690636700314939584001767823344949334909706900791942551061176160846969382938895962178050824526755915969872478691811450529813195858122941173371593006064084915904657073365807986339831293041408708557809779500680839981694277893130955810712730992430562716145760127452427596653774527425896514979119944425610805227689334434804390543953522064756812871448630573116154674797025971908802391943703696299575056836698712381992848469923698216349355286636926222596127219730144924237353165805459561041720871970854839360710154098005974187221632265346236958849484223149847622480493827894847806635166075011574178544658451155201510304342498126355519881231692942620213703857933123140985044682213883716764001406888948407510073723684039514597515884367034141614009861338530703468578374513594199351840313230804381296325479728481610631520267480070280680538663591996163762739595620488735608484265386968880503564619907701198782416432864002259358834292235064251115227048152795581849753885167254948985246194223490891322073922734321670977223929068003765143120286998829264438672556150687265834368639503229238528758807881913782576586971656199368919083172183863266028824804840945196946058507587203061741490620003295544771401227773843325950031612668509957633239747009285869445703458498592619242217812756310038958069683993562738429407510462478441212526305588101082698841109612979946758582229479735530650875850546793364941494144162664954117163769183650404960997981835566890933246534638362325981835080777854525988459153278483335694441249269984626257122085668207357563750660475628406453848795047222806910047857475755113329521354325549335811857220498434040076678543642413502097286508693537661128629000272791583924513980499315022623709717734665587584274898035243545263036941151892010259539430592795612951395656500581595416489636461948045145505880906068631731885180988432311283135841508546977160577122945689489453126307031418676022711840877902553353180508786887621331921681529329623461514320667594929508323163616423833931122108680965955743004541512101442816209583866048787597714287080881002701473659683374535920406428904380929484906193939989205397735362740537572481474848492466442965932625518573723278487159898236987904326745444094757010566689473957270265453328424740570540332242274090629260778429803516870555106344866159459052988616723934621558052416114819040033795781692804125947595190957642257565989129685215602782176383551114171432610165711169562310685085530285045488079517216035887474067558049070469787123532526907695921316484804715892400499559666002964194309174177942974653330794954198083774616562105919468024214559833424493942435688958774908791753974135955586470877295722127795878919299682983862152332172174378374522178568263448130958271586839825004791423985172984921233232880293277925580575219180757922781976381377932490234951723157384757318775784906115086906623742246681622785513974614017300647386276793489761643501612603486059086125852291450122580598901264230534956198796671190798407794874620527596632671517548721239598853259980219184672835241507701348648578800701121646633652320292069798316816215569653248164067585382490460669081329153844489640962180570236819028524999847394654563282097401466960719626329638916210508130206166606019074766590428234517420327457510448759294586299241368200994976600124927107074359914098348849313600242151547963604774830254550609364820156547746327680923829779906755391398311720983831886620457089482750587055656244903572137571084407693724495310548921449833685861089799204882439801910354033517739604644096973466610289221220869906032362843202752958705605615074931639453588257561960944659757416644745975085964090562443850303059894320180520200581391003789739197824812887270761135916796176673087801045658791912340313370762901872491195674751134583692978757367581474513421289152548454127561332057772611653555158540030142264738651180004347695913335410377725426439176005147255002877800525187944842656428103986547440339410149383143303467684462093045614184388428986770178388892546962975665779499686590027478517711632970660501750396371159692186407786788732769122435539211817875609997239097826376999333536055646453626310428573636086678929449735293550363210516774737356409219982383049357877329355299843145852123157252064185700492048006786552647372991081654864198899190484977801153979453697271537770519798044342030026716091155403625202427843948022112703704010120149604414709895044636213452110357835478517582587100191546751475988302027896023566617124880890946554723691482225606246287599607141049288331102114441522440175478272159361827927224280512573627273926548246395260444429169373126124867351559586501484599272102379999069108016125705073476775206077257493838203868713719347796361910912284732215988483646676602306180394444090442197587608680122937358970133489104510169978937191740383384808369847668389907092743927939248650844785941489470956829549523549372431022101174114328862586624864409887915959066103154589683410125840417893995099154311083367465577043769598203970768534804566148210303751455982140146665873213877041648157479066736799529476576957403265989764170471764970948321708029687552248978232932899067493413480838540889412188313326295956636707409479855013073389787970570784857311939933441610452787887776787206871534389470259514715659497167946991433280789627349823351841078296616085142122419044221366333910880997037087861479730609586745678759032256847321855698953753621412393841831992840485715285052166742382150467451093628776720595372136180747898854838040997433868396118820724808923758526311199786677618435600001075558753564437138042679033890525007962746052839488837640927932494559848944720914826331121427529531037805542738114309472339890476139171598234580134957717430363465955879462357627116541044733296161944306252419889551718365080411788962266948765796672402472028559876258826698669430257666882119957483872196492936698118246719918843147971361210461805652852427067249176445273464153290752103900102387154721047852597179554606540168351044447633906388021035448844692810928503083797045172496590904490874642547456326826642330851689737891263649696244685932607734678458977549658223189852597786925619257927135625655420052751516630454735858206504737229776126371168953596268478461008896672653893424476962407093934123223860262416362991039402314975259139651347974211136759780587291788273354907402230970248802733958595978261439423371588137006183593764466004033505054886453123160321999305744056267365366064288824386801435743534084003304448543820542292719389611172816381652174553236705084917771904816281568096812657027321443975958333215524965455454282387787610955437976486923473826748003833656274978606278516041014488663319046845616252438372900937375213747056287600354856622644002575787481622716705489773211525541140614553149220088600312885555912310221701166685461971667125578922704051084440731704841626723966853430058900682898447878333834482872429976755926914294832527828756807289908875196294808010031405004946234361098571612380589686809581521306987129347031526947437254178306310496786313914293473026322029746544099154879765674543128522131987102955344098530921063155901624793811153078917809169577181993071567764235878194653298652943101312138081597401539733126181124687391573507562980669211904880584763686551203986723473667303749531757596840466804021050337474116529765354352742826279521862565464510414990396426188908553364949858712542224885316309196144784548552431698141632771864053190443379291014327182798480859057812313194708241077134494714767319910400548877548929106243441063792507874642238192485289971223185943387689746668324368895227283094148853259690640230160753654322209792045546145870452792760097509103819422574308737032180893236029611946746424121429181142175643457613905241668978746077481946342335770409967033498075587079760402884868488212769419058042989246514624052734606162912685451146302695927552643239709423231994456970386054478844295788128515931477866120555691454831344950477783207718658276187700895035578082377993302315271137434971969656444390251946997799790730795554371623692975744734037113037121131420755559220064186601221511539414459485079510872625808373813374960062740570828853757959881913201073773203538263288994633224648448999013581662599566152780091727135869885392936728384538928695800323712508454261253824798154812899173871903552462727113940177265724307343826618359848547794875249086172707007751976571288686288192770472993955235999354909591212489121549042067238280858214846355144419923014186732582202824790949589605409864521820992897957285286366413397499907438566993196072322674440715620636858686367618166104601792899060133230333876052125566449906980587896274495515111256831826947542956553109383012563020651888401299082529727037118545778392897350904173617879896867325753008061475760672440951741299314098912448546231516666398529536378027304913062135157885732397402829203875106523040902763611655702002545354190502246572253883674920640244476799403747001616593382498133145685946077204705973649804286304830151785927673093530125598618128733834175681946543846806909046157882984747966653335176595896634023871433276496308472829693712552579370981263810884323929894475102427970694278869947299314749376711665036776509806431392348589914699880299904404116885186110193159811974678890195491146886157032088014987677002417301266524902254025027456393171792462608345526132187069497397877857409490277970548259970409754206867819205666758153736089720967716103325533074137673689661994290543207438089633906336715591255733555753379938682220909799467463023569968141298654349830816360344893571018762549627172626734264334524396928693146063717242908308283871392069963909873793612831313386487517782830291400930632554588962333273944199867663987723230963186574024188712263877638953041825599164502950941398156866913704769697987050948735182013236147628943445080324434017599126182048592076587354186564042430828960160756260609676124439210028223067403235160090653223664260676114057432004344694139433136712349759100169668029732974814825156454009983802753448056350835562871861747404550044049818607595585936302945953671726572187881297125894532158508045817762739614477742372207857697438138702132541140035555324976194457852895772298298656547341429044014897625574667750024290033451440078203848843771618271065284675706660634654920489059551042364772655298424544227409717783300364463783087247059764122782381324829695114396597019811023455596851041409186754011988714709809725537846808887577613699234216637062906803774571891701052392073904228757033671005126996169339386833364663536805086081239739172854447494868208106508617584633875213173279629235304483581597308582396701942491706545689954962985200812274915149146119532093605745587368465193322522677283659352780193318456646647070205008504823356589142845797202953548370884454734160389851421727374566949670140376440422969594344536405104320165805495597441364247390641422677461074657801491221060926371474173950311500693938333850983394470566245874502149709863424666897511460652140490517248819589922271793155622186938817192123958466987566005296845312277524163549199669795948360999111940173575189303232838652659057275323766837738795518963783764976544231716408386607032216205654736739783776636202971450302506633929934137406785848863348966429153267188769010122617889550691883004837503028523875542741412606090620191183192764106422464841574794546889405661780192508018669644905624863310127907903300967188902653372924103140660508008494834696977270825762154772856586821124178870549671874598229894702685009785280185444617234759981094410922927627600301728173866780998247502313408915777111559417831148298330550419102275065280518608476139403593285908362982606250562200524913683055150575695633227987998546580220559461466659603821719594289880724790037527077004152632516648445840697402290314363334079821427984959992349649725783645924051894145690917612904727603446000023724447469722757508503709105021071411962502257437951217824515841760989595910538850387757276965634684821824356580805611875603388133975218212055777454885591097022023939566746491622359449893615023757836820564330281259837042535260794176530965414636758127642169082544303687611683842719562217845488111353359691944383054924605566919303732120287397703482861309627880204089523822431877071138285701909861688210258660496002248958122607477473970771070559007257560733274361734573802114266136593556744058553970241694521648496813410654051352721004610123928510644896184148822044761682701282031397383363859092738333946109528531714896418469929157394538431891448300940202457095655504570427980838201490353102334136890390086674743779712835944766265775615415394463049226735893607704532683867520614639856836620139855610086746398662740451352757188180606057805694832116587068035892930357171962124187111338995075259541176034372585071718089245597032521360286288133460661401128238863413177796029830884943334026543741864908749646434719249982164092111172982872751303589238020854386443533353644641992573923816023311901254591146612702546791455309033717460359147247433633883032873474426335781101668727743728773939926563394895379372120661992219945363834825269471361824753910715655306060783522646986165990472294009963795799572281547307893751555382202255970961670174877956498543402802167837461467794466486403904684662320721838913913056199449751312366636527937614937244087755826159073798976686039214426705615078463715868333783360522007875904892634749469862326865945826556199797139802256461576370215473407912483026502498887591997287186754064791283122368575609894012554705842489026595011531905051406465988981930306100775950388120625277477140381718366619901133125331984240195094582717107533542770683270039903324613577945182282078549257445965027835903505466488714979246274722491413009317308724414170489402353374856400093293355506301175943309374830773257637315820620407456665128141539271240553889943168726701523834853563823813795039518016207632969227424910506540062894441881303161832192151583963479394601807753805950366811499918729911988283802388985310415322486449735081559732779798747265387407162510811503538880079387741102455696317874666384369328177857721946227863100598633341944097462757493359433570763875751386172423244833652734616106373070487754832198729362765201643675986407897372151030193345635494178796656127387212089518194133973397819010060076912226896119577591836698619100618069934678525402821133209260636196309152881705091559315190027647534304679078799706355731700048132768650193834735320841848891667910942930868488100490598704266541966397513402960436188528000370359071396753586566049222871640324580552878461302448054960844883156575267307650237242789254286098682973128223651852033523575770679119225013769064655833081804060113941252313808017407394283916807649339992162610735145871336897997460662902041950205788218111127493332883713620011476090523256342546082756920791049512808979264172936150817564045907782453627923679415393353449597389629950667494306741483987440967934592492930542532220720143840797623688392974677653390455779300782925611408851378647719113178126001029670893841458904387142229019537706485319192106461566404350446413166820497031619345468362788375327587592047657775461679556749694362852767873285856074669624767863967473417040423538172480472910427212691393703959260774130326614116150716454876952214965930211874901039938229704286204268542761030551412030866555377474839937313640770669318505724266725741450874295694660524498694221536840720525686617410661133279216852721360664245954397112824147330436760020478556708556293988539469154001962856645512103333840865147143144092446754715652637487100894666141528406501290386110620194468373833325557652101121733703594164616715398946074015207534164417521302110526974689631218487879641088148536754323961574511433954963303760822112260643831675521657295167542895973029178176647470596989835629739308955352835648900012878788110717362476406785562758931575953880917557591983592586146808396129466263059260009247446179671231860267240597661696257638598583704977491727105383683668570843029745707496482179910439954974574516394049521409649266401430257774557995836227691819029001680202015569213109580084906700010663666064668300886070667178842297292932014907289519848028873033246330461026990018898417988013998158118360190130447004722377022694596851917922582984288252516731467707995051623473229762087116551550107835820883193632808791598652338727557106312809015302528679957931937066054985616324819560330187093324443725728304446370858534509198852882715171149187452506196291871993274791276682789146941633139214799500171867613533502644119122299348359291065642559301480107253827657602383259711179887374929178669470839726665408213822660224669874934260782339850324875913737899652701496876044774900836387320496537149073113531486126392129474655147233456504337369434540857021922659394851309568046309247308402430184345532419051631682178202265324654133112201124538787436440137579760574658176640353066109781409665833419583757722574524828287103961879928841059931312737256702555022259967226994219949146589273615226932547928419921437323090162264906293929937529735284085042913050295231388798205432834202531652201026375373459522558339986039351233198931479239186198989460238963951811073306737403318656067619843641457857549603435422049561319082882740095597012164747411204207099676395934445492457345865075186932596170841029345911295639943662908332003515522991648595215414281908942266516484105582352451265685934755939217354309949262701782062860864268204704532371088263242212565730828864421764010969739622925940239509922100704480117666567904222181476065214543891383402688426609715273651184300108514515408909488262915436763480938732649521599460025710692582915288039840074591296049779756476971257349210698230170913492882391216520993011976950120512348661645989600504673915561882875217551933099951651690941057653056124597459314003084742958031030237946485545739030362782761033321752623839234757732795368561634776731307327598642711854419497580054648681432844341526214768875782966409689679340705110569438275759084681847154729175883648091778826078563191310520800605180957896751101513712563366699314578407187691851727062639690991622829498104419122089797639197941064954820042006881154762168191458281581894429282115496489769768983331798040824374739762503726984493462650141697844643915438703022108379775676881892005211699570426340980414331798605376844977583161943242867530402789335051843079915928517064308615047289955995515731702979802990616329864663460953944286634678480853155449156635776789414811817522972708656170983246010184566831133394788078987386109695309223220606346087184058956072670736058903397181380437133476787710098578408494794149686707986259098638833279281279172980743566725879181246732709680100297606150250441647236040629532966148459026221063709692565048487765770714234823457115685124244339686051182176220771487703439183374579708145799882327558078447424343233821260232139082733657965018720058678164748756579705589927876892416845999023630524102708640998015402572547135710279952741136726637397699355325360010311314322490876603254889065032448174989426217791760721026855509669212174296248243460589033564965448309097723174394453643794227397988493372932707035621499711263454142952398278722203963817896322595551527424124765470746817059505069157269838222037036786145118120540349441174800565768266993007895069955766490147060369931939661717687023629088570943691983459865728167539735811011680483333189375761746263749426360827890759048916405724821596707262568169125293566956185758952217792433624664181641892905009638208080284223631196150682955865122002462595667023386251802495924713511668260221759777514246046388157288928627300066333276944664582767137988390202553774419519366935173459784982399826264014114470206199558697114659129358740779826953397237820347278777158998739049767475790839263555101258699744346220955956578394188852620269440130494976085352829115304388537675768929596715068246288362548993483075426189478688108904825408937316645128549836076151249224952092142550067288649293766949363277624508544079166145060769032564974774008788603971547624347580968106803985386257009866283699342366179368924702392817237219269721895793762443602356009232946160255145914908430588080154777231547549606248815542123400657170261457680035675522457907749892622340574625465570873875655119531025719057654468856091550076357738004386676427729767402157526179608493618610870329158847960757251014723233480802493095833266112652753842086568414362440739926021782010291417085640893116031849203334263186583470096749731247838482702500129543497307154354686162402135876842273756174474416253959453005417042425705505770180782497042483455630231493230402170179659040945731531741185080338740343058294427479698955162817616269072372703531781577659489212064650664379181659163299982773140832804451196683938432177468894479355818060255295672195628157561187285108884735175612373460773450454607947310803638483160832477822768157650858085169503408384581972691933408087040622298746605288968822768685479488183185167738426091024924488542169947050127143861286454127489811683779496155013462045032599509874618943913609195937065787756337430377336143531510780138850842322408933392731374291030002290779373502611429759789339815439914127523925299918304351224931822741528888939850930149599631314994254174399760622374791123731039509114768431498312195318667007762895062852777504270453762533307379053932555305145674124845797347229015924651333152578746961617516033295802534830039007710230169290334808731475790798949970556297533217759969619295614550420244952540719175598923449890803976979338775917745645214002579507812386610274113425993496413438105202145018221982882271241028826577994493561008204361839458953009932430034712588078433117361561362656197315507440464410608348193359306235816360067085338156997700393187890082721274273110195404497275357171281768716688033090616661372295808454464432833173504873206190120425824290677937575878261377499507938034641398430449193602848134428652540326172364689847785321959002153969673505735219571023880553664873020065638595185193102662366864413563707505685501467330951633331950973822173001549509774075031756299668262236377191842622386034402447137475554076996372965517828247944151000328475993640342371810919066858244810969975803418543325410771028697623308856712413835587504118892364100719126017271531920529084159308489172857535083335031218936796934389198191308436246789038141624827594864435134416992325589288154264368900505904734643914284125377870527132686993791657372893302087193161058154652186236451884861642652457766926584646299258120097965493108981622875992762418996848971173206652352279112227514078457854194442432591488034296955465614802305959622475080076152534297600914252430342309471979427664094683845259050150497763560589406552780522301682678765786940532417921894233743294791908078153696281065077244098795797272704816838720136941259967752546311816735941690430066905136086376183533592320608284545666577289570183233312169436947847580841867971368339037359788659775352440364207068714446218650782092064622038874019779369770344649343083162314463280408589967917737749718047703616795137018527871650866377033853639691848311470127642682599946647102840350367162697713078332523299211405178610895706616849044095303036754588136448562035538682323313470927092996381987336492256736009221165184707138852782953963265045131943669521800993086477198994982347728577940725405083173166531153716569846996208371215559649677497362944667233283275818918163589448560375924611979965486463922345905874859178577967654437628196756054692446926528484493439690615942604947240224130327464071114347086384895282657148887259153785240150952549257719727979713400752536909868997261845966943649674694204183025984881176475437802070870890659558423632815937374158520258918706227248416364518734064945635688695821979835613935253932571642569497231972730371904666084857169907732229827336406895610498893622510345622777960124609198832052255443451698212716711064501496683559040669663119766957752235098842565134907310916831779477653363013531413353420168424222801296459190563927254801455084802458176710815970749272818404025184431535744149999077947684784086581050562990329676911956727074854311490259877342235977212496133700358485629070384413696853783346240731158533554143612647376339303061627964022264020049716012443758609794765980935877924000629376625734460210638986766976352928428373213506024191685230509333314095454994385594543159782571235198246006000034216698343721791049161472422882683782499496025752657691192440003334229243205263928861924436597916021637333754365850722553316556192454599782710244175571107042163235446110998586270183579637609277045357896326099492695150853846982599054347080723045411206687565500673492775604606558924959229450668822667055889274733057981749172224516986581498511172820820667945064036583761226377904086038410917747727880302581709360423663337429384024490448359843643119744572932312449861043552400474901336255932194531681974178700631318221886925062706888597463787994917911655580181982914087045112146956315015797411634493986172318176180339660443644821296304249353103240693553962097252917966381436601475868376905521188149431652726758027313722608274324844798570513400551298991767319834695025874517302563887336292009118109338740233441424499038186553240733515691356314189380548433501365106003074665881524335945134020396123112123182141662755933486624715555936691329219928192851805882213451404660201269169104601442134748760496584907296068051166349780415824614102386357821582902162321889853011039913449406621470572133618648325696294909084195916437416720067829363512437070418962212333591893312004294923249767171218586811937966056655812228942097528796433693075227430846805795409545478591166323129176842960522206280893024471720558237707074967714151015881793374814192187188271873893540713537868388699909360322815291878946369481677535062590567226520530343311979639199057872594612653500548395696823877726069426686159299809203458233138693242240303412482014173047450068897184859140678571856571366173495117005394836036038530250458487239643755367592003697082354136304771242061776127921829167080524356768439496253616437387741102006345133844539726648159918241233682444731508663772118691363109591504033475278682356515344349192731816315661033669116452971899973511336381080060752296536014720119229383561470365532082638201074597865465586796294975854625388619322596791336159569491681314810622677018226650332215486116445508383086013931057546430938598724508945947693835988253357781937984284744214956889722819083329841045481332059048148045001168255966892805760563462193796524031507644764951114827085579350027930495166798801615766723941907163090907358130476129364471552084043620204951084100688944295961425467668874167424095984191408823680369181273786970373298073304622424163162364209069846295312084594352817994724339587787738764598629753856136648025933895446325456566873253317661970489017742045647478580155265779631591585246087038640725521335482684011525813176559567689240506111425590000853590129575873060518098038202731454062353597621461966892069762239738678674391216105293585251687803965119970304241231803679324621611986040943857342903491243055753397434037357865660609282434608040131473328801583578448541012895470928898744313135595840679612679752027701379304398524516408050565333289577527246728734027625624790582376648430699677479336689673508225578773155730042589348596650221961293667328284019470659903425302035019375924582200517821679536849158858292170252253815005616204509918691012543336787257278253036813612641422461191849095883247833703520456996433647688294491414804613064288331330205409500601944764092446800571558938907912894385225242131731379599466395710242004638921492777795508844054303453914007043101465504001136368538281794339330187594491029818318171467828072821775593252710432918830958556133994755916824352234521411811397406952108763482797624842713965686178202279132393098277011546642506397336028124382099456200120329867301721716564136603592499928906110221381175415761246168044090704198010353153744865448013718549390730937475358553864854236364160470879741370826563971596316413397402176471985653720890739122443311112219439457598132125102116453876862984084288557582784526394357762137042950734112169403160514513084485686962330745608727246030487443386794040055790485243721380161065123996472722016531840998178444805238474714433632250109340242773689800364706780310064831214241478601639574506354433595715876827039926722013386837670392309428358232239196536487682799165704248045935775360391304704785148374968627896755009442102244836904244009602575103480657673966195144319206513910073726845708137582597089323206313905894056112859115564132161289073091760389430939011554446497700759790016120341501621318466088537602669998374586650102759463105096717457570244876341878833241023005924673369216874869633718684527275805359566776987106583963132931555543049894110639135109730019385156641767448722446785570010837085202785341347488622830613547124598058050019916077152345716512944558974647042262520304630448876046600881355622981536342576348571398463698166646637599976073536471700735351123564395068025294885870592789219551279638450993502733802309349495774799319676571629074381044321653057113848083437419855547476649955342063832576651432369566339542095625612432755255780238903016809256186154999793299935085411449671320078851992833257154737639624815468189306474819854766802285708897279871896547878809821161145936937412083035951132432738344103650665818095964037247375371152859940981894195283003494797576614300443929435550983921003943214558041799310636421299090865563082154624837877587096026519264811186000051245737054682207520703868097381716377267007591096755333993697027872275162504980912066728312483438142079872843093853950100761740953927941318383195913632702367025704415472143617638268912663737197104395306462353686244555243252374052816027783091525893032064846639367998794279010678117398930258839889254038230439633188870951192838367262440722104178342702308934151264425641979818627577606775654853253366191012501871222000430301189477388447217982642210694139706606694110847124586381464628067487326585204290897732845631417471566989666875803484224078369765722160062394779879573456710276801445317073987562218627027037935215570812001749512763888942784289504525934721372866815140567847677777468524287429944814394471276343080615120849197096151019168261727251397498980162011723010696032580575344478560421060545199638900251572501192293040760560755614158565566810311473580663588095856186082224641326481287869724047744357106935592093899876765864953049417531491903126867103447622228657753203306456359413179218463608830362993520283280253497827834540593023039553184986973609332524830005288040201737077786479553493574049779978690951963548478038757090785849978806785787302823469685972077249636785288033904911552816137305731101624596910002630775970227215052219680487095343399728051562890143800287004548976463558146459514472037108556160943779361022671704059686952881674308663199367289681323794553758460749688672376914989221207992649882326368952534710650024562743663866378708201607338044460454072156588044278538934210302433059311244102692087196659202323826319453456101817912273582000218041502970997863499076393465260523186277880742419400875657761062905919750385884106420071214748240429794988329633987765360314904170381876209514328550685408205398611232397043772577975681869643616855767358066736678501444197759123868714716304703937435971204939304878887350139900739535602730788728230327289473876961212893026265245916864195576913403859091894271120059480815991509428051581900023687343790424090149300917796733797035249487428649115026967003621830111303855990084824941230933433262888131722092981792695329693196645865593079552978406354897449212029660541657775697925310418908796689605162712700390693190686414031536613729119376011659371674623260400855954498064927816362263562094358572344830104304748209436956852906290105938727942082979696909910672683336637269744370883162692213035171011579775572354272906193689755534986052898578140896985805975771542177778376540782816732461773481043820018866383210009567774003587258585788589525603934218474234982459297057039634914679981560234053980371666050850163027770476230915343270894001709555558871573248973400733471787809043668185241210549820822650725938581738774014834567830204593849426634678732357543329658334967965557395029076639698461289348265295508525842305173201833733839926130165446755483397744966191159308498487047768729767209403020291309424529776111155832329286888364794538273262844989751884354141654685297431765184843874810620473525814968605358692166417446097708298649630455111999996606797752550444920753781951837640568485312038289904250970443211276777860125581955902890676328761477293785158560888455282531799721500661086841793631314699776687697860045292148765961911898351158398752156369880080890277474565041778946969397384329968257881140388589278085659778393484096169323443881247614925469190254256337428047178475352123323439891963361665036055742150308427604989198596664195888713869802340745463873420705198216512673279089049360419782859899832565680139443468610770649323001765479196381646508927289179963255327181338421829678522216583445081770688209929974440911499170830724823755801275871744462763539019896845483496490445812711050383293174185391193864009069764328169082510979886011849142561581476568533983062615941741319644115298787465636821726111749310599764754458675157404094296731718458413078888607368615841511953449034486512040267005753588326097020173146601359245444467157260669163343973946470044413836686246796617755057297050024778137272431887822597367631540682450047129280750007179135525352699805466936362327683002858254606845053563168620522397812699415641494534802829673999260365362032813535553039398760882457565741893943224951163228268676345333678005431283375060501355389188926444585948625436738063407651681379613554512387192452745040081537728965991448617108225190591958967791526564125046506621224022306562918580540637483552827142262053991841557918791668452006706615965560507353761034779770778518050282412962710178308776572196117191210529731923929093328396406846204135813267483458244591610729420595751162036970361193440075150621296700013997807865346982246647799210552490166356463473859363178059175046219630449712979540777264248818022421677588738013020724046269457018922728031709502835594467034674291462324163696095050565552512197474415129083692739142513099422693920975763340073611967481909992512979607566690388401892877869451848362091320533769886636066890366830748060753478223373073843919014029969549744777214650017137075633025403487778626010693906970039028668836161250901928439007651449149168296078890149712553117901805381749139377820550545328296447183046641081591121471238547179279110347250223259245044704875667480605895010501884844936258574161869950369762071336716390274288142400787546750929438089850649150502088396305561329151058016470947200975528274444364755475639192829300749171576136953995091216108409694846600198510559940341085397490628866456799357046635222816241447054696380301340493511474955722361328132960935213352183208933887727165581680674253454181485750187314707896788357566335935092256040111320489713068534816427176446246415504029012336696823447593284689543473727392532932791690122687539971256930823319260277588138414392184042779458000261931831933287020340600409575904849721695747983069899928647448988500264025417660522908193953188702522345105928164152154193367925511539625675698198093533143174144901734565586685615441997324611449448420626602301963263787441302126973517121040491705740185581748042621665000650669773514026695097610154883332063234374881355481223348525527879329867435270581454721608602491436961135974004683854753216550064373482556198354436153818659887906746044367260587896837730900630129199039812693552260910965529020707507870818977712917813803580582791188260103979288911698924661682067962722261374956438031703299301947890933311025798384175129883761352103587683427976793457968907420303950273897453183048070457941177473108813333355119200923236016797168381784633512183295825784209529783518540097875108860813529998473650252217280697918764385783708995789582492516636517795007894447911134122054541746354542036623203142127384255489031350751598878967452403222802044056546043231212617647573393021563512499889754606794706548052287127920592378414230748582377952244197929362760785093558642427256186652598747368609676043603073305064916681536066517390267241496942804290569190173600341842881208385897846430995423011340456133653580583991879821816984276158051177755171216867041202100300588057097027960568149812462288627211590849142807626062811392126141495722428031504311446264754886710171108002795019476495592934545805590255051279457785587726682191893742755148702578880655813675935905947683342021553524804176297671616830403589264181867708672457752223557431539986552248720768832005552459126569506283433422633211442439824200321435788753223268679680570367122077400158728434231921016934804173663711657915972065550052140198814494982396152204095110868253734881673801077675382720248540349603978559620420713805215912747908735189214779466671465993411175718569607779473824115504966629178659400061391362685645795482787493139564533401734253368944781286758805182597346121592640167146007475279723282011658744588361188366681581451277706292742262141291010885098836066937084040407820023386516830950892433088378372326239825364006174072019327871307467922557687024933365775390392252982605390573356382823724266338550628641461991885295917850091206737123062717430744637314801108681677018159070593297709152175005899784284369216779127750369437252165296974757670368148810975755140320836300172140163423719463311474502139613090281630635434676608484051259309437811919778614598518275777322734850024520091039453812285475435946514488763275338745158988609005137688105998865839072335550182620739617390054996489059747168653233770157946711455107765382019231867083676984867466461833728117892152655062488748000569376874489688440078609755119163174004214454022120525998557413671816555691243533253531975868164494609052126781038238725611910559601597034728467046082894301244235275604098088523865457701630388595733407665391136030442907201392185928707818963503112468050334181978830123275365154109870078125705305719946441563119111261721356440760845924454548033934776019495127959923832335856464975887922799129408083087400596767339961872204276603553563906823348921908378496851146667395291906631525332768501955764498711783591077805967475170062629948521601141600490919315446396422378477063365829403786425171476011848686851639854170997173306065257462661845487746357698798230043901904096023972697494085848422652309045183987016135964294291193286493943588617653705669771528486159613094556271250174171347149195569207294650423415920979913439098958338563797250789842598760209072968352007254356830162796478869283311224596171629383338942252687045344579861551898670320720981414760782967437685633456879605819319389616932795580169499844351922098282766157485240250179308185851625260706202889116093107846476133950933127582684375338854331992036754499052335857572353097698721123289142806077509669403490485957953443345238224679946713794017970414164842436140384811383469206894015793322028656957838794223908958542286859869970898879925412802290658309896894954759731247262597291639459456362363308257110749982975557150398311067543283376488143186419699690399834313201133921449012137187357284088713661643082271265611236017959709377676364944975605488032843871676458149230071478529437366076790521048994960168447034110674307118980174107571433836714814194589364814327129502946860387888095221976548155694302498677335474886054330646133521810692205355288670948090345294162840771525979967973942767021198770419317562347771346760939094055351438661611849694894182245718547084376836587156604309290911949790011420100470023264247985056470626490270457019348813993662548482364144970206715539902769139886675171262129427633070601502604896338951947316766764804475235013628632991110440867321800642832370517295876939497896944662591761333376128031024796892565640455948147745012805825113155986971733895719590738711724130215617254139441445771263530281049071495842839327933808381945663435705300205479834107069185792253929535084565458134458009211644698362524078196050613504620282390704809941987053584303386725823782925754663355150101648523650496769252031397937688337068039610664669662534999372942311837062172752753612510215583836233205158852211156781732402771857403066757402960990487044009719251179465077227852890486638117587893020656467082016988511051472375180681213537117521220285350489985125119033617674474439944467536742253267300474917870883876621417972514217685756158035688349504834921596973578587904928621782180334539604708448690129828165417369684025263198818317595811669587950644817800817155858596966603494871448765501996991172422697232800097594978305124720408819979081687094514266192657604805542080641295657830156008374783641556080368487622962684618062494132871593149646013189211410633508747606186190857067307378635016592632882996601449139223786056294845031547377297331753234651386991023424014769913204403768403928952551418064250781055648309914295335265811161539206675330462577109206148989674369113367221011611200845931467748156469261551826261529413943905894404149332408943687672289950471645273719107739684107907223218928694455811613581728770606393783251873710893828248491909213698709307731426866063030385461351717171933459410714951667744779427918283661247051781100501341038239997324400123316268981962689560719717826459143407335656063651610243747633883082963332434331769378184309546702268435770819593621676864033327397919036957205152248758556447164514427310288904197446301468157420345731023198637719687885122588049190338451774586119769951590039457487946989701774826098367112751039426238904671433729133995628564485488029891608112481539187420246207240906350553564474299476041016734559124659239478746687167849489450207571334434025006782483236991460782792526036291195309233566331813277001671733311650479649653475063552313116008280471282562360303603026076063915816442646914218579608981017917646078396369107303556189628893947808108579455156173332680825037758556509590304133328794992377931303563497246864975877659803949805712910843686870548251000719922835674077589982012112203047927985321594109227744777097191019599028262784161112311094479844814926451993120755544296845644149157051569651767412175562169755435383077711326804489522816953346451276341161777227436774000398910021304276358457743457615973769178488449803628750683514291422190456453926196148193935666500650554584482091281202811307351371413395403935317339659831801278387505563671425444952173630448938313014936600066752246570923008160422941437451880351878873252648310425434072387287027180382962585971197642415697933504438904121267350615082166221040809575423514982629552798907365864876202959807344607832328137268439187423150727623975996406558339190761995819345823916653198452370455757118848403129106848036852345417373326084532850270233547525019454850384093552326739612957673421240383129249288998046733147026818566094022014172651974806078895054407999342680147096339376118574564186085560336670717048729945341209056070876472940203364530463039874938343666764151887488235376316135089411351320021968756347444531567912407449021075118486301932231384754646645971720795361891777533017990071890967930284571022929530158503155592203805511811198623153192480541154871522640053590913314817289445017431664992460624875438670062676979252350042843563776614336359438649179356825451914788287355005188525671733222930927462667615959653349617442219626595413000460969731261512299969162614117832846096783329814072775710155068822657956905042289312858668670939450136461028390256942982460180038818803136388583948089335704465502288129091923794785951053714250662207572364177980299080760751947846897894908347773238547748591352500470456790758065113267020676146887818331420432713400673520475128641144813699920113913917130287724198339823068689157943810217064778467782246266012824084219688591569559045305937973015574882892267557447034991954286960619766057263938547946906394724658196461687149517213094661415652048409188512040690512577175821701713362890453418444684223635308045804027328802306483634064161071901049397054676467613195981886228287707990707907730996720882209177316524015413140782721100370600102788201327263098382565134387782327225696343200495183461728048665435057815817765030896313295085110190019777093344389392941317816001427039360258422602037034764186063168010629894737184220209719406023272778390897091077984704537511047233980673970139734257323685417802511958149695102705902829116517906583144577206174454975965514715292442423414315816405692277155660664790643716143043943860433437124819762890991758980464008390963507711326588397722338755691817843664702455205962476952084919381832950669158463008518698665608881295954839993452368039420701012080164016932692560417761686293946780094597838826723391863964885890789905287806450946273545099597142826413389716591504742959248202066994124465893948886987453408063262743621331464678757377875991382790659539967465994466886829968269861969246190019373965643402457693470451062030219378493805897357864650970537965726184301769578818810665999341128067116910272037149277444199297234515769757327007640633516047437325524447424734212526492708082495518663541147900688780848339295301631804903833949452259487228052044382477641975566908567558157763138772335142081056074618344773545039004612148733969620697537651075433314884260387278412665980132529695779433560014792006799938777688954058253915874334608174025285443890646060729776886313159412240109091860620577262836353341740682552130824964936283206917996662078834482494108555684786510539817091385980024739182876745688810956216412343928865426906221440144342839581420304608448670648122531459808669066251607675195015439413533088818941610272378837621679698633962271879130884831013006965310447201492298338906360981452688445912282346475409207572774345161988191636147896380682166951067102679393256765614824558819202817886728721663561523131664771204328817368061069571912150321140674178033255834901209285066553626031908982954575925226824874102336564810284199832288802926762825444205832559040575230271243781273346236839950879896004010310660157254780829784713139694995658730402475453870906686438152010287482123756933455028794880909760540715895776796828915305564718038679542909634841645580266682319970903889799071433069349847673303967473742071837496514466193378048745129870567873855057286478799036551017101178481571837021900038114583411688790025861926671615317542359733157864786716896412679011329235424830465384038651972162398663155025502928537290959316279969813480153392905312237104248732202837521380756828293986974103156156771433107604837731247492289208071465445647604888497498590752388325800762531261793769867735775189708646704733963022678171471229221261632577489848921586487132576023984748012692123334895553754867951698691064318493925185435157398945289007933780294435070414604621704178760592459828219432962209054212172004661028422502396809494315853061150372435762367515112851864868995275459742160151938224550592903861847858155443659625266533317958761003063492117048100980034446423109754392093237336931350501457410414273103517691910268429284139189059141086295598909681382885553721328263143414192298847241321961373169037581228901380019786852521371498099610852951250618915854835529285325974914019137836314349638148157301728456757667367330462930495266613991724979741907613883419943419530922447760599622095624214400186422599504332113034357297384423225503137952800590156186952926455749839606674135134733703939903318649562317077387322286771254080757069604932810104942601830819664391028363001841529350294742339526528739336254322325329186369231411657053088463170405805938794831818976890279494999383003434445104122251708931379435049369966345094139181326474224213300343974713460277487157419793959106108440871218711680376739871222240847303829733560107085106531952766914127195057184521753079517990838542734934637313341387706884805083980988481805102628008540050871802895565806382079325101144982673924348222824662637460309657089163948047616348199578436209556799494896766746332012643398225953274815218414713492396778213731448808698926845582119335644448117869197286048221217275030722102290613327050268186042938546868174472475986069567044221607135316662816611169189376347163471965431809003901224894669384914889489196108543570184628407704528102349008383256398310723566512388149551299465464056042759545210308463950713784934979308688575111064643255225837633602113441292377047274868998933329746994003572152092266147883648810017362258434074062350852537698134454230941610471019289361344753359736998838316687564905763121731377553904596776888170984804073755842801503807945958082272690752441449365696953268260014880899824443587210135312974065361584844546547954729362154509445643054990806144893535395185443062293005380952181037880739849541280764775978328162922036568513453618049656542110223339445357909973546489899448670213529592497940392645463802985349518493352207861541101939695456332398759786376832785436941871169823234619501240492864847461477117083292366420617069544009067148253327870300069104692677645526081667112267490136434408212988997353482889167157117250259506139516848532445559809141141116488209366508132519877053553944850528958435445348147583413247331298736898765556608553190900633784984741324781667324091753021073027477896861750286748132358035641297564968314432174728280790525559515544129824185588642824075106565835672584515719014277619635595547308555598295628113525119531007765708112678927251355767738353628036252696927398879636772955717680187573754513989870402749893169942322508460113818565661288417428629593582357447135606262167637204718165909128757238959746376295229117426088259339540585501983188678542884447302873446641153872108347532319248201342669377898672917192329350645651336367251399861588125797055085187684118594580091635073599309700677054120525345428274140562396580599844421057014488455163648876259707794323779939674774535171533178176731907471468535738614683518152416497832286408495122620651655302672625799283639851901168541989263045523330506191213677944775639206308599056256453635984407383567872650147221181378343026168875223874776294200594863735729011775701986374946351294258346848005117447569239306424325040711432738790371815702112014982050723280355069881724583005875509826131711492203530427097314747598178230644438885723231582133578298015223772969527142677233351412734713582026420466435319796675214013375578720321383038241076562508268103496642209121501000313277113877629932369887954079783626511451525813870612357274525023845953533627145273800779269445182131425120879806030621018923946038316546475466670798616047901187357216335949876436654981153974293352717371683607880560764813189528241706169078103029348330119613225336069016639064299855828112899886850826832107138815056220819095402917823537483331485308307937442367019439885930031792604111469519716660185837798379110721990461268775066731897253255896696615829811400893299375349580353505634595035642697880548836589030515196761302417397654995553713097949824247350768815425569330543922773332201189811953289367981967285782659623662148489216079970581197249279194399500929698630688524189585108309149247873118214132801615750763965999422092415487690425119801200335866924839965429927111545011883491017837013974482812858779071712729389141635395425462024143345966818339993210751109478579015715803652619172254396331474520039767913346741274485529247867397068343527611370368901594496591875889637442793529056649601646244564399674574787137256669297921826366760132661478572974142094513519775761016274405290098583454550491781494075228979526365413412379003409952473246054515103685650650780671549741400324760443880525353669295088509811812807487834475423598042796904071946177541719487736259804150910280098237893099458308195991418559528991664956958027170330323389463241895511242896262195693648833554003970428783487579641375887233345293721567088509893527681151466169904676515970040128903022597799058213782387168435258462161721002871410668306505136610165100684282792884050277801312300993332146149354378718285159325024179646801392072295289370307870180145839639611546231997759119360152597655969997406398508773616485525065296879834736528828478634122444083337303149001547171569011563813907242426310246098530831096151439177486291556700601556898187037694247666316317693668618190005381232061227896665420309852209409886141475657808178538785586867460156615139569778956872268258309536754789109196574342061737975600735753259393548671770423754174462307921326765440264604303881947564475052433572985597429628677537183757966934953798190282639540856859953803095247880432338777055453950438691358858988388278359576101611382948723718387750834763547705643312797736379165594637038172495400927418719918847999171478866640529059219053367157281949787587767315730537566621434224115454814894755329097796431218657389112042856778806074172524236815929425957921992222826911255516647805144054243347868406453442331488740889202488837431436208299707621414034349049439833822052009447175056655694894761685619843186365402866251147688239228050440531046641111695768090381803127924806008494938949186042216419319366416159230154402410662363769969912415892687206063674688176674647007791374909502163933537218199478814021492284494523784708186154880083774763490686973211428134919855647076197584600671081533402039802634118300234955760669544122375753406549871430563534494955758712832571421175712783772730709432116839715190692860179852294546353622099032573222339559359400904344651701660781586741345149094309607414579264131693768308826004029068610566498276707054449114855245716942443391788344585949770845399797589734678414594330347634249440625983298609891979349254055840419848520200437464382633837569104486516633530353839528918172671211634484854816715061852842796441472489970791627356072767500697408984611972821268810482820913796127943908959260444820060114198993052236809727390129827131239333143031205690169189468962521100515101283221627346374154474574672036591604882611478847793399302269801514695017888845655206924014850202941570166928262168690086272065906016307489219131055128978239088536677879103670540653604274191777884018953447482068548999410629991442521775924377760516736645862736467233566178405861283260540655687720339558888360698481101633860634572245799702463814684126227419604219628381575595881635679566963713918437739874144904312425837997031999506109058943315951535166953668431337484908759857428842421457834493007659242620074307686429203969542058009152602283218380139012653548812945908282943974109862016702484351409127768398725311573672923977037696154756642442381156855863526091981001020645818815009684960992989803741989961020867762332079058916046760349383487100846467326450268080199979056226808619511738322740036699797533525408513041462344402686317809036376329805154738347739483249230978483636995534869466867986188407625091621980472148807956134884366044801991447020421275174022714672373166851976433177965013302723723119645707757084091981574178346010706712050630292743268467989912048969186659292144193169155985040116787106123489181303224086304647163255265814475674633217411764501568482853137627025970541421245783689496228592403639675558941190300687868387100088400946603365869667799570892949045327130009699232937816600075243919015789483302354765520611730007942131313669119615682341770153433974009816231605844475080423944853670637896628713943391635786479290003532008714287458231729852877555190210494495689512923047875292474887564097938556695171613462136152999876698673252753767544402824065085899407854098299870911039491059405839601188251824515827769148562194543119000473566707113643249700152342476312734297553546669800102218859703089737901872971304399897355369646788309726159314182751856327119515369225792302968482346001354969541094245934800909769227576357043499142126173000354811348677149585025895400886348513256585111662693573695100980289045925318201591227876460840573262590891475407889481426154993568174467311651563645711489084790077481178430257111665304270232626268452976577621389150683362211194502025129124995206156232460286081689434548839520011656964457425844687592084967426266060657898887572086140633200591456945910373524806397673626204506774142823452371443539588888961485731620888684298001469662794801780471481963900867327967731743713297021624344197043156136531281445733480890553293335796924134536319498646847966108744026275983968784738306505847048836750543349989600282097336583077980546756634201097956243142785890476102039458927817848660208941825607116139750029480349321115144465677003036858164279558363074716434061837551416114881845276070588745311555718528201831766942323112673784075563029877195978049005515618005128369640201230713220162496743340957932244987498970063749710143268033051727888000928191367900366478946075458614851454575050071164117387572223136650875647268053013250808669527417652463706611040170815453734603880031504049590083490552012198919053245226746445322289817582888725586810743117044016992631398509875804428117165247991400132577256336490957549815382494063474988416649366973676655608346988682681338492055331564906081308173480504511146080734500260221085588667423199790684373629803543211854147913317068081690107420793582222948951312237310245101834250766332531523012913877216204674146030698554990329581588311009064603674040871639439966375020485931512795908668595749070675391199184458395777851620879887187834761516245859767153355249802375882602395604380239261198823642810129464989582956097040189023238502379947621491442930848479763182661275266174114774261170890910651353809880734248014999222631963590977564548619076736475225482305109682264355067468284440705706886443150452001563699534513614597123706686437835098463268101925166215397229059395293379888940635212975090335410275968555150178168593336589865732518087471321452196547997811896186397615707952561868257106630805560576104486118612479035671895432971004713469913018523280041891956669067672162521974236672788817299897428104625912818005497950401838186977789208558069418274517899730644906271921279886631159197973708859772281949760882850824533361354608269961764813300044440788766133078721029776030004471082433409104207949573864841716231595476820979202537796018296467387539837432014624319342233902365182531734351290315702109559004396228495783653142813985505684026616368137121643853562027199113824916248086307373702391428657295478756504007584760986021422260145816446222253554362751801967361745483876218534648286747530842148538435795528133540269229566948248370485390349629260443387740697024720750357106634398061949107833542845545514652211634135916591193489516254248349220423330539842959410494167327622202141551061313705323949407011734983188567778084445569550762271229252971492369992513553553673069681689595889212555707411678557657058657414251951827508714372523741281311801602609953726893422775193224841669971093758279219951566061288099398000073914854423825802320987298323957421959200124161969527883457079595669431388184031828899493947731530643967566949834768566839377145133200132581125129756849609688904985003822172818211284589991430263081873701211494966744029544115454039083039423261377795814323069179594527090547258227446335480111299912004689873110715479314630285345349306339250656993672740316285687963929400758704764307394358288585694488642412179637891453538407280778542881037579828200155487022517718740955996158127377029427416096515121333196947320205983240575775574459752465581048700025436848692346393725841344605041078258443852416516432381800707752149048882293721140369507107642318142671858047052968158800299345453344336430004786893284133896925217695868274939640430833258767286011647560668992592782697909788326654160425802519660474457795518194071187406745611625418691913978579420510049960253391508245900780676113144034706471198788712468451410982090062283938484651938044750180146278288219228622762227145718908056158993836144703557098827448413538449866726273415038816342691968751827640905886352776580462940755281974697975885583188782072873325659985055217844457126299612842537571225042523784842554976989493552017976627124140416447604222862457081884418619508028112992832100876289703573505916736962059061948409548555639006128055775716193604231983995678468463371469421050358866305603645645227701916390716651141566932948703965573287167666036759603418143581740071124022769909855855456837464406646387007829026305323890427975955753765446605423425851559109650414778567862729287652720088578826079717210916096545979063492784101836161575821049431353158950812776519230939927647878613018776419018553090528181296755423471689211496784485190681054181286464506362838760828126066474812425859566382718448414012405124030396857219326759761806008896736212717515126947367193465150927844341636611774896835732381724214755361692486004850574341766615394989201045433391202738338163627234196415000336985740375262528328201265549115865873253443233617776658146365591453581251718839250090994918082519965808375913040711077571465657960380255978824225833723847846307924700839721812462448830843763908484442276063712070008759202034073749232824289752200730803624948598631675253940333307564744801178531205917176562884237238367270557479360030373984366903110125327881922706988250849576255288878489700101847146582762799028006268555342834240413168615011623470362193479622232131070472348625187452934402145615158726806663134147487083544683447276828218081156820421057965509019886296116349254398947526137484334994011552944105120888594705528372249780948294222646772035934932782499751453158608230024139037250760467409190545878887231276603171544900311979543232837333383161980063976108243204481411007083056594956142555978578207056417096282694387055575050715404886640078443060693546686087150598480220688712796487072329333416239436396054311327911371784489739918325128433627141479569822312247910649562147011812083617294478422239751054332926016835256808812379443310165196407027919271716126186781787174134809506984678570684493053093446202609594571069389269688282606134421129180295206555983875695302455299549847524716110259409199954539563456135607372580770851307253473806994368283939360390278598577806301868117889301445294816540447637688267808558827828344267987942095436624067843263600015688521583026133062698725590799199848227759204850284458314112750785404710530732259984561695049037824447941784027706437346429155102311585582870457499634705538123135326763403267367082672606487911979664094121358805252153609090090726125899869135800153515294712693921911563401669972458965287228896455083849691110233930739859391873370996539934077807372468076651792472910271818352020942645127224669559584356773324098771044499343427154386794724287388646963321534960151080782693279090852770698101947245707814466198503303126311161659491382537691875726950517114392007282240375500531204975811041066718240926416755424018367841420288860353376409475716108600252862827550451860998346099727365356981831183817014847136625627348078607123701735303036294796615406836977413546948071097506567385223308070735106451735708145949670914285394590023814672334242710863519014944690499075668393255317621564696885478112798004253673257658386705506957392109669749188849954055505115436942683954189226878074942366923724999689361158506816360210949121380199035566511068488507485346907960367545883692314738647504481000715113653732452180569650003972077492864392914993883577433357895801943021139740427855732036006135187289573389168372688205939225419934420919772618962237682354844701236467978318068355360019232471801337265767629897991140093706136219675913177258849933229671397895382164773863372345905435812940034558617585226391030592637577244829187480558923780285666594297228306763138257133360480386245905678156844879939602414990172071397852472949136785386903965164053997827838986531106217298741183721448270833485222407497392923624480009189343770643480139386197195740882684827376224549540247375349582564021762731079991143831780812245160945600270137312700722893592035670109868721328216268066851001246495235302957781791629996574144593636316617744373747512581407984421006027732473429492660125920580907473837207476200460118140245480530436230232900113670608908854362813315205982653530636638355104204834136625774315858549815805328699635828979681141865557416545786105086206571634826984081699072639131979767603410024272197555836052076480941502222844712753534998988774424878957195346764117746365057331907648081788757196218603053252962188908968716213586836351297688791718825360118912522818598845700332980039377659753080435206881165628494355010877631065751289311871488152546115594450435895152543769773591590960021813968914868313817057839884628963894785477385228445710833668241898362584937836749917688382278270272904520702420146459141684085390326160618004802631281569043112041978066901709505988718922584945598720560148453065085955114908855245933687175039474851990892087910213606439801315403356082314622019148182140537435171610400829359253205042332616027499573678601081442781058877764720228955567250152349704349747356327145417552612661843206072422278880125222297312037527523731364520952158010913080009486759940338592930651413281122578780478381482118445842061194464465007779295778701842926608133274118993551470878980914808771110024212499181340597127811673396258195338632385534072954235568364591900887375409452027541613773041927306087828489659687892378316471129915200186755158969080703613511603003325909262423911182639776445202289636257354377156375559667038623748432177329243259719126101978437575205359504706207391950855408298688208283088177337440626580159909399758735561707806855540081211015934028235089623447119144734700928023310698011350538654457767395701852677647700088058027964414672049010886729872896123418346204976076320607087437042457303163453355814235108187430955899483865166336198108214366291440382670686375465165381723416419860178680077753663691047717688083752961215383697553183834201518344119503989100721277604677086502984964901841914268250183523932621096487165208546009408943450092892666713572538493649882823664490732083972285123009385314531862584411871078467974506166902078038978382979523914809054508875153874016038118743626531268686127007086111012262493402094922926428014093451568137774576246549842021736537451336978850002624560732973369929021028085760153289325501096324471041740964303356101684112914367175110371205042200164326103442479188516239704647111791004764912578034017295044866001290642854592934895177543753960211709882767012669185403075233550276544368638652687715705358018326513530941646541323174467638585051050597449715814256281657441204085554304309958249017963495801018714049361462162520032855578272703542539525598119087865992297357666413218691868233266540176874456583170695704252792690593243212293919754791687903733883213252155400438453005646268032725042130942075620327759116332250124882552100799205897165772772667872886702772935658736814378069233361064557848248259294979718290159216816109947451241248115126740396223784975255964236669635968192637210743856741608726186786334160729780474552234056210725220876149046872793196274053950010446522640433423164645052282430910480653436557187950139606587327847286115058899387199558193082067538616111178527623411941783620144043730963906642965803768797447817138757123639278131101933789439606250251044326911513682851250605773621378206605087674737492732738274233517311514014883213180750737400935379203080620269167027904058520800999708444640860541768322696978771599125512798091023950311680648809082081769443253972773433060307180822825810504891826282810344711602192493715654766129817971654663732658520884678540044881800162526704296340427010862889568238626410859004350724942366506872194085817043138808638241816559809173852537285636157985505037013975402307706559649875570218069191469500107295090106446834603158102921609292822879654568030097023225372555440270731519726929309439455502954210610235363051864298050173409395588912853571938882996114614201245862132812976022399216241256502753612564478944796671378146640173553145515060504979517348406012985911840969068737229922496984516085058740719810519308433298712253114014457512536277084449046462551620308098932587776418346890630183262631531251762298601971766829653151215483769434818045211377272359277769775000965856854714353839738107711815124610621912661180248513263623621685589488389214163908483572505678220982096752466287302617691492897204883124722632225754858580206098012023031756916570305653286416963057440007352338448214467220175932989922209127049111242990049855606714690745312952624165402782631192567713513860280222516310637072383687251666167320596946411860343293997442408462733992979993141526470204805526351582636048022041883538151673002370297163750632497819797048246056989615744919773903828225791420438676823423052785542593718091018588106033160295789195180533714276884591791689770707608235780439381325932214058998237924135248492672193728079978557347066003621782822499314552885969323901811844471759148788254821176369127504305585199856021713472140926454485988709866666121690377083980519053772959223666286910828872727513527559679318463314873102592920496173865022791224956822822176424003563460930337299885721698304136014643265096167140823103260449356179177899885969390643626024714213545050490556281129728314209211628507663727206815993683797347876847907607153425044069613730701927722134858183736561539268537132963301665232343298451731441018069455242824735795938196149556744025829763684902375203612062308820827024825517862399178189466173428919564090957019962398841890416689576758083109680263366326554231363024849731282334279837753869443887266902393985695624245808508303295392014309909092323509125508534198395456280143026733846762962714040142042631532614709228903538578602096302159197627570841489479345097633648216523925976748275234502301311281050410069361724781896929402340808088159741682389900828030350946145215230878915638977861107888548628954464120652881296639806999257068179303393101250793285553160687874387221798824509834750470063291845021660685724599667433817667765516203770977771259721413635566110614445747822838432758687033027539266050172315327900991553377652313424053658695319909725693340847434931758297139501364327106034710716028721886527901984472308425078376071274467557932096548509578769425867091416977361614931293080333637421316747310368332896175295485094113568876189941096694786948370019371286339938340838198992155017706644600254253452531580749466792708412235470883059896134786474771812988163238844442947999363603841864671056345816891056176285062094709059584402310080217384046492254366298849083752841239496969152474444960945619195505349407477934544818901958319422204079292412836547539552636091976763188215390783373352685969051874906832367498242725481016941770874949354793925420545328594649662688407134176750847104426295343562285468761461998988111166244498806242499124839017958793493410709991265888522124508144028095848284538049207233190559561692510558936804784321883915038974807067103670498121161815952026597480085881288098349280134858797067742490741399617238998127205493791368940350706699762464944916055669026465038038397574273267404953701627018495944933447092795042513368099498665480957650176034621031369597028734006758467748383307709841480104696033236981703783978653821323262062526491305336837187399917867326686287778759041164680303586584563025220408138793332005534670142100057360331214615338416067805290811687384194545397455538956456588023381244462989360227410691977079906794007591915800272818266869266040400739504233613641821907560144916272027588318274720320015629551668884359160245369971938222262221519266762579539090999052353089494003351411367733820538766559517144028727793689965090004423716456293785971319083288129057757883110633881015631462798913619554061277756911970331089158303052495363791922704604991682456521558733994983273210835177611179739306037652521156624156545873823707387672728682869632069436454116939941881920248858454712504549624330753805371957114984989843569623720716371557710823167455849086046082155000944077460388439410664229693613538088616475051241721882640044817715863706259689101392645276621041256229308496028629088263850729143169083938292632276507732673764483557840386252773477776009686121789251452070226974949636829501250181150343348587947194196197204699670490460724478964977476368460876535293481732796221831651683213331929295937479021602022428529237497006474665335998365390709597065065563776336115945442318101492407403053904260329539733411382981499594679155266013499204256029748139512251107457004484154936633031068901660458843417651227961891376691161072971932532062625786830618007929110260202234636801473206161721784027403628002184548299509856404523187476109178427131394262422656434192047476247104568150871948749573177641789194408803649049255494234267302987805103040553288125296856220392561569723146042750951508809343940967968934616127775485499868603987901934295523123640637676957432544522704510673259566346671910910241317837200382168082897294681068285174191741421219824936555571577437042331721275314066794964552536926401911096730857870628316002273513922582792550581639122098696226111578865164427422629608824890910411149327778039501289422569675732781005480372104198547650078135193782596005701550682164183411282367613024767807455491872197778511668940582641528600947461905613197475739601330298761290008423922286163499902591175540846275789771177430120382831661024563202778502605825471179491435423388482992415491058233533492924073764560555050615323750814808443981098986257500080832032310992109921504440551608811033044476767728670794557997991860834976092765242035270349256633272804773954054862107295026103473961960582818223617899021800601563508709874582606960599775637732474492009770882240239551764597662306098884080603068859252879002755110984328254525214348229657782186467164179849218828604742581579427450413121342872551372023883426073145285606088080070541439434999479757160103043421543620362715195832797402583663206731649269406996838253344068666846267426019673777753710268076808841277076444174478413707951032080613321825431254668600445720971794133047792915409778932398448807586427091216902436940129965063342919105902753617874213194726474729440330040100987683900704561540474903097950299629526729328739813389043253692065362698122519487940438267915978678721518856494880830777654682375862119973136593742250448246141645419459297831316579591567459779814621920114842582558245901292602960011137482100435537885629764054559204048915296575749976099041382730000581069856059980731823985463123608905240695451036043941957557528901240476297873273412717151043630842720204791683187446255670573989979002186187922780471850757325031260557240990694514806850096527278707324084733198283963255789323680276966560570477164274412189447615370861681773300433426925225065766373855459954735767659609368599414714661714212755284926593090088026942897702792120739466499113520513368275067820041898824617631050195526643904273350908453904178536628834590825904366911328015571303133697772308800689154968961324095007367561747398716239872951690302814975244325265268276104526508836104920910875342326743335888998396205603258802389975461183226562586955021183380218356936853086015087661894842009542058620356831962920946669173565830680291679661024798284150945735099228407585822093719030500105711958173843303495787869499262902703979007368521626159596134178498711917205500560623700140225158953097253391799226293430534574185730121605793420240873619677674549013332599888058837920033086869686652251607039595695723351609173649182483085140008190895024553322085612924556355592090540292618013606047248526873914298481785648388021781961681289549604339786415034425253468519640206001897977543046519644494307760222049248428930301836819431900403285388111602714369597659208896320441492030481667087695544632095376064347188433476238228950220401727603882373153447432689721580789128905797845050284611878883206740295508664634723224869914679415677869519002435355317779294657527588992064896236983971097765240728220247035228654430331106402044723690494131260179457205239457550308642180418437434178923098038000591988098636131208397217194643411063009846112427206477982481120590620597546247981825149802925777457883868106259384138840064716269601806244840595483137355594169952257313344638945688151005585462839436397649518994085606715522070351065019965359149196590959184578791278563495773400882246531875150730846482213898851676566547662356626589889868033346124289503163211094646233133889800697371287838815046877354597138409792007451602773972509937317276329869799454400049570335852855478860030742007766500631173389080166176436174549944280899392482685884714077209204825723929488500009556647700083822372126115638730171949690895246838489579456203857699500693301005170288798157492298447913054280419570004740639385788420469612693416507881684175627048861812755287743989106704295904260356586061697255154533520790627666512078199465272461229206740883409303934511082491404174993481655246587263774313119001624765003424441273024557604908679110547662004301188502759866105394038337103037091110665251237055803951257021730045026128304819650748248162502013642219603330493664711473175609103063579793222139441186829967862185504364034861412838862815995516705112146942065875681011896460792251695614343247938550744259756130698738384023820946933041487584842743109964398533740897648900302913084234989370273503752275205903334423217373961543117579104256671303886974230672512522855626498509011177904160705532270055297158928602419992087870341186337975280284745723015411735221213161214765316551917579213439314038708745454496896202634188443504720552900322998573143004418267396010145688240177907164953889706483859637949594046589233301700716881006405053395168885921228392478604008479769276740222942760063155807988309830598083993812085473275563524023458700631391124184629176578930135570417109060372515803885135880697359241183640284313435581533858123489217370981787462930365668625363972858121678487021034963224827468561829899507294964268155239442274600090373551901544562570879715294267073219396347890088569265807867726261541696015263719819503575801887654922422841551338354188329958454350375612526279595200718166555131589984350166214322261776011206312465069897402362633585850137456179776508216691250814278135200802073749361430976210177994316032508355190310345567739135159970553077477124742028876349523643018043345644081448476625882443249394757957273952069803599417900376130171770635010262225542245381372176784242762819980477128905056662667656992593483727809264680990898729699917907493446440291098317919858243792453858595927288688575700811258384599970516199149334211987356564927230191339458825449754856044901945721366037748319127927965591886539483739024507862899105188756147370198574150381985546293461453064586179385785101819583314927485197847499561150072951679430332432919975744592050621303311981665633639159793904564643370244397451095252686862074703535731646425167738554711950741814770237550051358211683673036342799082785156968260780201561946404747253848525108662018649358079330514764120590200555853975480777557784253270457531773064970954483161338333401423169310316252437747875997280663789341898961718664601563598692943458081106060802033974247055843372590712489489151952655207593582173388126142594046782748058312528419684905114305933379331727867540327016048761581123591261508190417413079244722484829333482823121362222955005313516769969492298018434534630980686735509526166135050692518923634148640781940554290912786878319116349988978586370124076360095019650537615189123977424305805797337333400775316149866839919416705063899061215258652358434164944261258398720048521924653506050960959876294235309731323000813501770789866673617496865155571387976233422459583355748439208111883242587406606418466225827029251604129281901968056840094433493869055066329995198732251556718056181173923852128335205310866284092210529831034249833761422962449710800577351031475246410542388757842417782601742013390801418101852921770484671791795110180588992046779412414324952427410547261988229125317601858998592818878058412396933668878853628859265542403729745006489622498725640007991786889845172269813111858949120630047617848026452044677534796568361134134950414523297870087602239084625552351165319065215924723433309222932905879788960508774015685109935204467115522198655962230192714771433380360558896707287450397570504998612609329795030163664972238680716313633457573292757659330723761045482180140687389795911556259597778622856059734023028123603019651157866151800246006030273201477935583179081461149419378370140638673096292667778611937521480068676265660260916910206248343319375470338591947960060299864995098399169150029852884281301185016299591192500638711616728863403694279699915466143901211925722909710000253709954678515539702311302329207886611213667017181689596956087736355863310740045126677082410714934610606782770627909945463678448573979481483056592797125790827228436746366411597484638003310580976000705095177737130221341612267994472485652427820298123945760539671935960708348947960832831201749246383904562830066561715511869587997389133700763340020278877694487428173265079487641230623233994216062070223951202640224301927056286904878631399080473183837942967772378332560264296287827305149079883506990919785787793977142580043015499259943409036976507753728143251340736927901496253833572702156982896823509613565015438006562957570414583640157149468896063181683552639351845981111384564364525950712863430670821761645142838777284747093012373400293770788554873560986573861772233344609870660908561494115724742809678457844782548045743780938368118475969516017942453703268500879694005318262720963875443676916817952831347594141642102854250161208865883460929062696641397736602514728978196942690967397544519778892670067558995887363358939589351892227874093976484531610482613447830165939106156885164871640375862479694648568474606891029465254919876237524745367942064719787503941594055209181131106042144352027003309384129278954498894201345802687428550122664483967254921753220699145115939032975351265789187434782982413722364540712337310223428575421246476697232459084732242036130388575389018544836452095620429035750013613386157047209464754479425718814086270673593021910000829650020981945846321742814001610080221524174858123391926820041301460600812961519604828039309891696045335866305317053379562164969434819403204157944066122905698719714571154083178528973735515121636504370508763378814352692681404569087545087981541102017482445030973040241632992892891289222886616956111162594663022350387596126772690960260696633492244052681092473540026246431265361102346533915079959739493562812693827909180860048193821145371405622481576750998113972313277698802407905937382996457840070045020942036402098040590617640262294162446918063350154294386906215119773691022903911739579049854419007648684095778654787663115583860868915276316447858019602668188608945380990910860160731923264346781337561680400298835898555969434528277147558056207840064441658378649092437269996469615098164359515449747501872482152917725561994151941503150463758540762347365161597427966403843400644603728880828370914465262502746698697247701660371909293953611313003546064004932926905826186044312794302686666427047074627388084814800833123785974051710282392332254326657993329715342196385438852743427191988342387059473109802909314990748825596086075218933166387820339028065512033864522708666926997002268993099731451100286807347140907749019287847444827938834013849323955093363766578059514784320050617490790860033706384672916658234443924623740457110818050734696100638213284930391758112516840187597232436865136001993719738796453919355958309431805839808616616661323679697474175394085481979219230908733186858253900460414117988703484131427184063069325350405087888072324890645549453547249085159370950963004335292154284440630920064799769408339090653700668355993591733240475836927351841391501918710107871421578128660860363620618882435568059034860528475588995349382004375714821917079248247181334960833525999978548431942111338221249639147035827607880971863834527938322511249777341793210604942605010456803237884628932715053672106191924520017341911793559900945131565748241906563981782356486130896300223591436375444861335766348233512288944713501421901434043979234563475170049709950550085552009365529562899970780238915679886302811200565990358400134663480753109685455384146905601899965864590988627490723048040479730152357492411261823317161246879640276672390738314773739409067741262773638794810696065837321502734669597415348758203454249163835595081018553452929530994231420264373311317514604471893131819836534653922553715524515149053364907668064709070531195942040452829689009242456919288275019726476037893941221745185963563158769575798804745021016911254078530123027925359226665492248156302438296253102945210696737675225884875632343024986181052215564111767423803164318050237606393656491460521891047356652558088425373318392412949321519922079953446209380915659235685112930770609112487732940436744176232147681618273784735210222203401274379625776681116554826579420703601356915532263270864265219996281794662398151705188060214901032698369566237174182276212985365330067182984597514243535237609075327844511643456775970769882923809325539378681934261878678046523213907327532972671651702734682446298362054685546750280105654149345686602320773243755053595159916477928067522206584012738599880051022071277870873389769490616796464612226536876916173334608264981301440460129955720575047745201936853263569920001421912413320757544619009389656506684105193017656711786788620591944562591564414969184459591996988526854959142578735284037248469168086927538528675806189816808442414691447927914321295066740239582236334041450334626154052313253017552455889911091042199629714610076597369346784136015040258149102867701246457308597248763967675249291084986349661525541096247773612197719988799211264223778893081395365193133570340157335295025131276290789734851179173213957943560829737248950860570313748565343372134512502104144667569875411201009592172390063428427433946902438274677480400962433446599117712881325840528151520663392149919382844789629308373120811627734044905247744936527436064378855003227711080585975941118761153253274685535236639745277848648953810258952260984025456593555923176461783976328906978849210985696923534327581011772915703777043607045780600695952731253434948427988400243794047000189029472477333597368219508270453267499166179778097599990441107905063791125439572962099223887754777338996026471201465324851249824090160724776714902779103944030474395104506586002715259045692222813384679549228095593984007187484758392593805968616330508483215659686512956024287797694461849861727145924160271694673391163514108156240289721857673721660687863263394298616148874530013053568021978378540368493570096197602062873256326421034090780671041672586808009811569833558237551647143073151396234111794609760510947602597834864160201587889405768605382758228903851458323068841827526621190693739363471207765736060945054197410717493000174642343340248866741055223359505738700372591585807753490361647883860979297473435198196975792269980788811265256194289462413574757081001998744636773046230948148163663998222664844903836306279983638226411595880364555545738016799137779317737424594286463636194561852220158300588127248207013917462466941228440157898110070194765464424933322893155630013507253308510706928702371427123546082625525297362374076282686581758675395823545559724173112817637193104423228543304467606920150999613412913251979197024070591877592885405108896352750753305796138363876869083064337718625248131000426625768771940745976942432248707282151844754610579001530163752696519605803668655957716510848662800506649080434045370450645322533121240535494002559064478251683719271773940214995238464330754317188423787220403430708354129640731998000339665352440290271979324813810673692848982893431968914381644257071267966657967566969146682755702773275801079432024631842803348726073660621590625722188740246133259208273787261242382237511533337845323139231785005908731059078425313486906273622034415477938228879400560221088929593792687814115275017765975726576251817590159861709600996170577801029187104785584174623083985209033218784571086345709790028125710458575252109593707554173157972933038018363839385324866271305258824117615813637898438414301481388992019704446631747922944607960845767624552132211487415620688251046088472532056661920073891137271831867817771806332163387679799314974591316369045319032327271290692255861411352628015091971103850516889185155622073199051077448170848015237724102829397985606582921020969877754424771133656395937771082195867137717762564411647644304745173087236526364777380529754422111976671742990780037347120359268615494273673545652941102713967998690866551011174749109211240927625327933364161875369321132059348613222457206115151943982562437669936555443716056233683485694518699479236298348408012279350061322444328412270922868391731677279807672170955645482892816009898163300445958567471411181974728517317114907688241863164042805119075180873707481576595444758477466579729821936257532827002727272423589908481927002242473485764342269080485572187699899268233086276111072998569374294405263569325419526427369392381101739481247403120456937051754280892864505753642806970653774324482498535955197755160635629388970934279124820466469305982006855755994495165883022193587530232970898909900662184174560506606276239066251603110935641346306356991304678896593715096310401050068007275356001883325086095448016165056053263136906773692512289187146804882138668422673978144688416187160669192110622843400841764846106289303193107951208610517235303812529675194370957552279372232153419917354089585981260169791057788131672562174485947469823261010671479059476980128935364166586749889297445325635128458240496736682149937588853581922755868406814880023163655157216761309338388140202649416812359189359494814039612804879646128440610132043669761369654884679457125621494178701760769239386737934356641653063568890337909494894934497694035134907760514081625517047602224777115939056981481937343996178229877358273008513276334782858592503562738669129558739800055549473604713636389661131416227554842044325010242971311022822353523810439769297280516662416024733027556810810997885685188383327112696039218877388840457416596179528910662665568374998433637826849620912044197024005265744625247625669046683683053983587096557625785553704983694605874869507184607864008927268296599281612766341499916595496783141032617776984774346446986378460948273451152929260854760349454833857064823377598314655418350200103198125126533915955276211777244633004783834031469706842062026553415027482719492274916449555146123654614830964138671870643879296648127592196388007505402475826749481899389889347266830742950101089425666250176842443675544998959189806512594334840775462869954812900652309678162658523969881090756818370479282233451249321606182041494454582051485019431991011040014921297911772265296422472883427530560651337269823391479750513851394406497371149909323306942746037789146179903751798214919369302845109185010820265006628515356146626073871039111610225445493794458696796688791074116431294856421363637785666275259123091406652220124859961340694069154031736484915589318803486139915057029972947876951638702972103521549580738124070324807016567125971796703851391749042305170594872283099867001095817884680934309277520888371199311575123936792440351703687178621709624438588331510902493357800389305399954200788381993976072027461701931875253063937429829799284119429851437113487406271939447395100916716125146578128247673954965263665854582513410979427447707378154227880544901845059900542833206134113005321490142569179133284529590046261781013916807059025869599639253843879264510928609942196529024612285422428581408239855417334131347218900423962262722049523316610169263947556228352432483300842769696366522603515451216476055314094259075472549099486919964462139550243819152487491015997838290099319225068114621388082097810934909449801269188036075285992295459812512638698222705098786368853491524105737649240595351358436300700652623710729643786490291409229437868720094195095774907581430127030533142810631839984816192106569753183883448335306524888646107311959116342085070776252250419133803725867846155643141487758155420204944251328660994238584965824865410970402312938674805754454194764052965670682721948875204387051671544630439860147713849093010434425403585455581437058735734492804960154634829700474847952533841446701797847952785937652887808365589459891162108577353469544605279456306646038561627053485217433638799886882377032267080658196865617530954421628241829291427277945839609470804046660362891169118585696912989950386166208009818810365628201273290741323259062781432890532732227017110179156950534984518926845237338976947030724436015223879552357470625140320415988848227281977401980409396460716052863997706384182644221214458082150142914977850416121427420568425096570042608553182834512465930282176699115139327029116923954848090555736352100660772669936377128915261700081400032031001104749442884658054864761000949230461907423056194080972293562099906857038280224730037592387616615864250694481841153395767323472372190821670557641418535213078458651706531555797799482294913842130879855017179928611658909489020405701051523892114169348552395993040910382801093098101433068589356906486855998639028907954932626260184370033968225033266008827788172356519695631471730356965050348884769484526745640684244345522463006666653521259249259162690348548266192832831782205440544072913309093868947814286900580433994064520700317582971839768361647441854403626358451281406442962561395011634771491991779452289494256481758539769831730621324000841067695575354271250052958193052786500883378884828541111972412270470263358425266408015231759168270874631205711220893038211220540752186671309346821876378878472436601395297684803600560091027576236048748155052536077194592980560514714181720285742957421091962302222805272345005011731134157974123198530729329741839446169317935173456207632633986644820525719836096428812003248506227828217342265503691517989693855707710795464447313687967300839643399508601276115636959163383760279422009361770442961412498616412102139251119847677540839940558554859489005610096043647537189430268458406106086769114949698229163179967386566880125510641192747153180434615466097487957894142520731341225252361488434691126691664289662567743853090424839201167199707054212891662739667889116811683518922494044509217585938818332616035144437602806866930286373839931577642051614580749092733137617073598515341367623061086308613156301842730082594757727573198990940059527169990627951382016337188766456819685707612792113088673791093665491611423520797333236713005740120155628216729028386855432565861921646778130192210373607666159772894566727205489448925374615882897191574443801393586224145468159869648353747849789882485043735344158152906275265572727053178351630225200563016542436839238594006328475636425907719366353581886148139350948373875561905087352553068840311627095930565843293412762580515318294197180285663001119013971152261488987581933464270261241114006682687486763101523053214917244876078193709134697340371152346219318520573001535829229155033938353785734761605536669513593804502554408457359062340037622939462873578405979613188331668603934773763980600932118603125664431662881907249712728418364701993530042039408411748911440829610387811547600912402611402976074482370297164485113777302583048365648600638275381155783623411978175832848876540937410130260799540965896703108402482070783063182658762934087990283781027918187063129952165968706055985129442452190138030130563257475322598712844799507339047907632421264523918494757374202320937238478126468742371113420777813481729005645717668057047050905040335498816788369695090290708215791096527270839864919617579430809624512205673793201243233953657900499425879300389540134232378314148452844935920326392972013733546030914619182160627138181889552657912815306427051666230561897109737506334467704309481613679364154005140842984510398671226474461820112167178986461437808395265806585671533542773519980229141547408419323407849952367807018278821184433842090199440726289161652759872481706167424331735577979401436054964707086562904807565901349065186827529775711761399696495307364996018439258978638380051918126604860258330153969337239828704893880988593937404284492574669382777805391556582019019198459198825434173529020085008758444276784523117660957889693291670455988124395285364657090938809234831026530265670803898453112387456590152433400390467416926088096489981480194405732569541103499864360492757368219325209361916984052810870480912109427034861773481835717688595091440105252098651299200159785341018381953924135789979038341121195618072731873402400963084089562958762410295520699794344254175663956997337078903780844856973071260704263903143741703181055789553290184928020620786693029809271011912219333179186761800896840368772266932711070673300350509734249092828666798853383202493476764766684314788281104773360989407151216344064231022958263500759907210466566843643400751071742268257474132839109828628640532147431606323251322213208428050270772151658097389046810801751514893449426576189534080025565208185357081020673294975017385466743166570065522634350321968472883147964604959459970261584735595279675549316159639934127739846913182532583351497942131644754504795724120374802608614983060304880082081037607967192665901052372100040111980352273896865546492681806202493667743033142583266482006839248879422459773515609436920075835959532086730269033330708487029673996599991894463411584968381908263529882062790373284959771656253577851661570669826569065611454274232295030425432136240649868708578808813547801338360487953521695112291819416472607010489189410537008489820647922599850752260397416018801730580751862795631747582533493252374460773624451732945113763880626817337383302669617810824519248096149008901556194503553456372773953215562961417049166718026059637025311522107353950708919534784818891372775238970060013012275228503075600863695489264286272248483481164241710538700633851021423608683130724236779468630488085690302843891891920122960845558413733133174903037166555488231095387195869508298881198872912295457515231963290181096720232845324219548626731776108992483770763180626881850550457992724577726818090679226682884987456286678537234809443926615029630232585957028881774190967765888901835346630645535646694088286343391694668077303714894101533278371278458553467689767095127339280443411609967652305387123124013295699687037369103678190433955250438027457031017855607142838583829711090138778616238858663446442055114881031061142406036198486012779515482915993649961494993603693354465080217077902544281829359020420619209722332261393659345224899135707331212355704005770222330731120790857565319053601003140314892326683686573066709789930985585083919286916414754547027548486027557357594314759440511630211853867365914433564485173521531646174252497749553909587032117775125801935023017878225025576415246507063639587206711071151092576579828812140309413440302301780920258751630717891685548810272470198712222447194079498533529460103943409464522903628259769877260592335516265770445096304259213045798882965721697807471896680919369897910452670432973246865496956080303150912286839943973468527540167483640893448526362269605017182142961352873088231695903541707084342796547604919584307525803227028483092368333775238613159781467889420200757776333490201551199542731666994712499055826600751325743555858677863844198420355401641662258590393435484638432676575898743010209351488660669071016414580967813548818356845505401635549100265694607177355981364587311839617044972449570239178139752871205424080561687994432891055421734379210826517334634899350130119732285275467884241397376980151911751513113849368890773253602034231258876659292335919539410629554932818345417830261600454065304791054349755304672560825377916475869218252099902610084422644398576471553961629230805590423448478151469754860927894100816148035576950642290635331286979446270532992393464341063223286006634994555879811609490249470788664065872540168117416367117250283972410262240052417932354733232325591927029486337537242281991578362255638457508080142485541207242476203769292165323062210680210843565940704801495508540474056858030567782138618902611002838176102886634633802579738839543325527334168261204918775749782284394241788873295430645133414240019278022726751700680575474140820149584030841137055979439881453253605210791081678292038481303780008036391733156885682688287846851856386641379125088294814779490134710970191950050562474847842750316546513841750001746863439273399661893269547971120681873311150561988718199455657665458695512612948969536084536611939601256348736932655203428059038828013480628127420220785245136445233495435209549287802983487920451989723620668890742857317916473255615370259283515938010336911521471550700397628873482034081735304648296594269155595653492098291454571179162951683269916328815796756532097990556676309258877004163461413425588971602445242179080405587675992478769285740794278048442824195339900974840090961775668779129965589953371817543222954144429856102302461098872723986043623544926281742114339019914784252299292584034619605599190609588189261534548822553031633314819334220835166305168726155159121437961037383887738656468624646402170109708802398546012188478300057631789376412820858857449313715354302116052209675379856223606189603154625826983867825354655250919331920892773179710538665218878013878245399158533419520429388805169119931203365102742732941309479230375152928574447223038884997060566876627063966446146757014821232604482299078257494780087463635062483385338315919177064313315684515730623613083748130915861670885874215567116052888851109336138026385782499399536563638742589108674925867816162494588455593965381373126474664752775848544135357796954778836215109423686796352509979983400755913197835446862444302098482087572167984564044484892488678052762008340982007251280461249385702150723307836485275692118879650320483466935086909310432120107642709575568785964050815787219696609740841061418946136441401014200301409901645039768181429898296311545768151618306317186360650554115786398225079849150376687661084585180326720212245982605582121199904699106571646426531146025980801977285752131223530390008882630654933100711952945615008083852779858216837771321613002378430114585320037260701720762921598188540403878423797133365729614545198992743662659596585844347168721304469128649209310454963506412058410568394618357440310500513143328648987621088282719433446954185910438463903240009146389609458293764281022540025651627662335526588915785408918616077462320912407770040151433175643453556734939993159005573825521106855975746633397776607500200887489764542744556567020144417206809629313769907887988999297339345549569731461869156794614499598410828947525489260641566711795712106804704542341299843613438821923953240895364067708793158241414385312991040538684347930889660127723955497118062194128406117649426717021723010685341093482218296541823885324616465379368492332287618931125007406559374929110508632177404919894461896113574275870733121864414194799455038106195346664976031572213069643839734934158190113829277536640964149520129952328736510838905938403947855432919174589172852782974032633412079841944481089618393336001585801663667712602680132990465403644534718414107496388386913868323641667395971751075593968111857671465118813123349746466200052099008432987032098790394250350806650711868331348846813146636366949857410003665735636263823809856272021548436523677362969692856385323677308823198256421352384411392500529671667983584043576375569452270053828991540609099653619719444901562584594849271813247106866867615804714198926704362889277654112009454598454676417949570894449015850589378255848987479745786102974771026769156725146054795404240233200540005439066445979557382308384177992535168153757521487505458852836432664517632673503714485660887933359537471269012959006475530084720120399152971115480380872858898714469610848387894387953870765528497539469462403286223219886036499044708593088917896200065546857796992035618887716869337810956606314665680730300601530639060484900257583051071094851807683595988361623122253705102103151395085023401853908886524239139286857848466230686020206077880886946577162790820879529245331440323963206210166518239112154885943911544977749976094594320638507852209519917250159481848168755401708632375173247733170938037549135030433010860493027873909974721902979152158263457347443658296598722005305339665989620931452235239891081479196264746243023223525354255361820133278334412286837547517933753290245809893669638245557085233378609889766931701019592730627693728811426151193815776903861472553970965220315807194579053968320593020653852760395912674236984331922158333950251400063468334523160105929684611496013552173738444137565203312630143522805695071526244724749846168438857386310269089770383408843760460342456858362864946983004108292888529101760400635047323745037281659266118855626496509471693231272997400850404443821955879186354883060570171373919659286986832310987829719949276625318907770959674154581550524891713884693501403489468377234847290030066170653879039334200872139729311820581903573451091528549620059913162191397554353912811591378299812809298970257389621566626583267930690462659100293294697028475833587221374708368292793698102209980790879186878713991169369023151383889120896108053421703149803723529343763352235129706763711333037871364029094383767236315535223111003459378769973959329670262180773870607137037862475348238344171653884699927875705404472255585467181218069423761804198377550655881386319309014541545373160301753448237680590984921425647752623702134785201282729283976328658071887120363225581813115433443256321688272066062336734703249074630674039618215717782568578744252822882646773568689206411932545010093370586126708579219578083568230485362443999980934153214606812877466118531035992480698647281783375324403529524084788300738394433368566034037205903987334579214787184837660357687000933200524337133742099845409554520135291239974046190255546411556602072959494002573055606949690785010567585934530044533893974370728968407306401038532291228016453843602723800576747691819309339407507180397831433419957839786128275262315634445032273364486671666679410185330942868741212333462305081102489591064802263016817846477396460226729447657367575826533877025277011498938753058978113839882299468356565960993650141757927161537828163830865105752241745881780213679999934025277675504059891973922984510968056649243513574970944656095070294601751876653726472832730823436709816305132341862432940655285700741148460651927320368369483270950865125284901599192942077083967911971509786500306288465385054870835810547247782103077701435172434272403089681545971782196560356782471622377529527736216900153503134228487873251363923804864512903031875676950996803977719137108280780980928910599954763888803603648518511269210675496837739426535483575198230372862870774168999111061901006249025729622676991243916148999908545788792834520069960449562545782610581184740757611120000682106038390358702933941314442866154028039951653670599182655669830285734093480845057262492447631928162197357245544702875204242631851419443290009334510880138782828173500602166469481147377874679212279019233993277799323263001434654619713613551311682148058692952347139342364580590910556831120919103562281909554808852888313513345134152241315084489133018597985179480261253371747223824135041590822522825665927671382669576636086531959076008065459494120520339531747512769484914614905159974497084639294039694216881409725589256666343834580074936200734636710563096059963494448279365641269659489104534226023838463862428477555701831152497759454263367584728339237642396813006697047447091747077237194451002952655862951260002644099012089384272293060959845506891986105070419930686539991936473194740463774672903049179946606988648559451795334500656526530443632295791069184746780187224118001132044511508741728357550574411741466222382736026646435527005988566256677669656205299416287683694584718633869596270698442862921544840607349940315650493951743983790823221064746672609036472476621604951429753640056299136749327470558317479827125729425183853573060612561976464044557450553289134141079064372466289323574545358798033360483694776396882259001682882419120910996535932178923724966759596505786685355206446484412539939018777684180130639262205641106586339111995627103458339119873918512359674680439285665577286253116819346215542353157550694865546173668385063529856958760550742224973104948231629246094172916720228250791859643678456915459661893315747741642890417602483770059674527855053389842838865406092321171890665515920726876262799359646075906232419194756311987769489498712732076230446393430575773678943966035101499272715596136643500252956055468619695983326962567590092482758207493908127945253263613221883583499105905968833335311137939194915855776029018148291160185040040436867999544578214025031341355777208027027618573763448522828936872699575352038582725370316755116257827643982895182130932451601262629942604460339488238662448805620098901481214245712076002752030869923006510888874311511839071686140501346977293114464489715100185111112002481256126816116020221055461939000154378844770860858638836930782994662347078308595702304933717452752777232339635228838924325912515896490866833549108409918400500044192546424933878546001579998979764492824468268153952864639345748633089529715654311925120690394804596023002222590248836901770944099979479924050890475945159341096167049367937090622789852324364101510774586698649902733202031862328097293558767010095666970679115334031803485611280467928454364806604162247107856793003701348571918297701315658326966816498779407680752009147573437699239654545228167901497647458910536501769050868152711964814278208363764446416665325190038266059137748950262597651556094699645788293173325225009283142417249226157559102734906727935125573743025263490046129402451908136027364947463256156956832216311535336582760504869951793006866475521299231198405877319334759691952600123672388125376321326163726775949043391693625753517258413617346297457940745862645841984879073863809863959948976218796435960443990313762467381507916273530110427582228015187382871736640983879843044782280661225182317751402758197965005034228011203295617324185911751670663574217278085707469949404754592378117789330520754183368765136178955531673607122766132876174149458410828186849836289654554954245340227718755795419385343861820717515015769210544349378539962617638338860060974870952250607954448305479052264624267182380458950718091011371737313765362947954107749279691478546721894993029033749832586351893639716530449124378344671111985674735811836310586166393116514148096325654620514954871390357993431479346445946813493771883307536712082406956482240785198293913715877794564505268951763211263541698429894129984516482791392331861561588291081251796251221066297002860376683719828589919982530880907179627454718400022777279613947723550185830633621478823091518317674626928508375537671426802043882906351615848670296060469728931923649843621598073072926861523072468750670111685709148840208968433344194755681789077996948048946176540754963879041628070553537696862338913712802087383696733637313129306376057755314313545221808258158762908667456680221917810220906779488359370750638252385619400818629197165283776902548881893010609614499987237088721872398181541463207672010365282505802466745803739175653559653105689187519366980346255997274539903288534168754421146914950166218218697492029783166479006700803133818279427808602769438243862011532886946528044462201897643450638882861177272660472655309518264561029968772063542467336075428033263602281716244886474878276406364291739705252282481254503383712053853095133945740251753352841038848738097957094205199342483617501188310869153049952147771346612863923798783888306064558603422689405541827138515921269954998737934186008336087227660511242529892469198482292091286025306013401860277347123824247860078965743321810344413084750833895762645707363870693875437399270913388064536570153173185142793285252285863289759389076796006999472076898428810034429750394123015571036684647155231127419329136117683680349870319248870704305744494317536215335435446421985681383202872408690732070954046324583515632561532088972009161549274964709660463718200184450145233386334559988078625501027752632137260342115092872665460848984435212044972211860931971828812374541409894535018118578980639317748077758699272749110359078025815937119889247208118750059410272849398343972473122643597316910885280509157295745329806145837691609467829460082575683206623641874117698835447762952532475107611087450796204746583278173867171429453421195514864645468527333309759713063790261495390369837918138543877657549400207223364684941347209984657836862366090247032550008884914658551229063347408282284460779426061227117585398256527393132488783191505667679659927282586802529732894892569782755833723365759839844680101954590708229728103504731377483566078017257071194192795308996780776323315822858362987750914783256885482594459663576124646084131613272894710847791576523638413957062615936300259667163844956876542554087382746810028450010224652836411624253027293648656614447961748600836420735621108075970802592397601211981037685460110986524047122355854530567880704957435643048878061370824700135973237602017631754360512288379750086717762011556935685220987687752485900381565602604539081704757976217540000613656400827907339004952594758323368347147223651328533888926993096263102022123062591157971518412819921046691687614879098672878817449210123401868125342708082718201271941128549159015417330516829022232407355785116092503089220558479462337566948271594737724229246630836725642429871342080068662037553407914148995924600343921650133999789201824425272908939519825725697863373951497758289104862859078136118453153616105865386362019085538447053491426240282119489976041731308042237389148561031250591115497691646599414605823793210806637537064412207149884182050095990338138758093811671683453860095425547336408176453060910652988271594314933733985021402202214232484691446378384260743674361129889236590552370912669248585073244331134692944083698491170970564111699125113964728081692702029413923328841141706979017183850653025533068830248851828070025383080452847173089154476790162435473257978530577596564613352439490521642508245730383824430206207400188239995929579313240059736741450450843921895199941081615347475214036978990261075509081927677043559915202640830728467666058879317434424987436517605272932677428760329719574280974063625319071963964658775766617409630940092948098005577212916216134742962080302240731504614845705730223668261503356357249865238785109367610054906874320755551487355386157322022668070630102721243370651949166387853980107663076775108161324094288907039814684894693995934070324863478146192228271109901574077497550478243573228316594681710438638638902972642212050091961472500436589983567715453279439442144048714428849443546754883587846228324652523920028791225866076892618565573002998757254156354390401992602571994663021343095218293923392943303574655774571931495504982011402183921025072881614937737300370073838281959439219865382715226041748281405301751243678303245550193748218784154202581422928997720783019016291345763375727718373180571427851008494732068902626601502596338998027503494416323671958350203061082502435495802668278686838365499447241260688315650460834687697031155147725396150940050284938001623696142608661566533752798537167992684497669518108471345414459614793948078666144664314573818860820014328253881620422696237290187905881975328594746482781424970297657136963885217700224209956825836698342870286074813107168500955849268295650239491283471286778558357624981646833333005961664991989677165443531725215496951027151488418256345208412209482998902699634462114836021216209818634468384998043067252584631299524364725079830573226202916524889683550034532992424459533690500800909598462116502340726047478431970649635292648084003816965467252601458714144287587053608548637501768610917084125990551082499027424236030396140106918323189732460364135096359736940095800405950943060328661747484102942516917640359836642208323936120015234896065224617594046118563855091742082301680126244435043447184533115118599166680775419949644197115158056394574201371454205177636508728741570631054760350132301782952453059846223797671741413130602966028731554690355786287479970841929617423328026592158573053830777480491515679531425782568053841800821241775061295561813435748529344584904273760688506347070304445407650075649196887235742853725963098239018312556848865712811196655321746757329411270300044426233913429223867144492670214050386546344739456389223350647017504068758245503110659469666763927515587927074601470528918148843699315940931457500877393362447063848095187259248157205357108575416737870725648306418284851199534440835938235179845505304566723523472394184101747777720067535174258710183370720365249748365320335044344432862492881647005619229634868616187740668084834157290779479788990088010667692038481825589578386914968238293787026740532759325028571747908567073934808053635686816790108393510087336221104018213663231336356538309384684379815228765046522229620469093991999003366659871061693678110226211412455878119089079438834160765140979192259568418323195345708814455188266234900457742551116533485994678226135998159335021176961618259909288362421649137123217080043261104034734148112584281020167653107741197807482655148638286000001138633831736298652113401503816590236629740477732430640338087281112862002548224075103038498112146144798401912827825457952399469187931854428476727010514573498961679613725025984370618396801182642171108600750883051802667497240623268226547597701890884228715724585911946706901274783722705184899045346812977346097239279365974080190773172800750387938464969357592631619625345232480042061860912118533114270433962716234041118634388066080049693861006918536295732742990932976344297131529518408214856709949701355461563339879886818504926952993318197242178506245942435098884225261055098211193675274771396776702044610034229471526068390077482413456969873393616400226478342099826012755745576517533450368767828660831065951506354007574187594640638215415176004948817359571297074541517671989346258815828218722432264051850653621768767486066420190345589768048417165075716472011071490650700890866453829245160164619621345569277294723890418443749884842392870066101697312089893718969695477853466882055973147116297127629710454901336712072358194160110076473394349486511896062843759700703012931989179111093771897174438754476019243883778522587056708409503276622507104472974107770384431585743853729392254630903876954480792390753706052068117241009074640149041471479157095927876895877105894694372088483294098932738821356963236874080222369178055233217129300850930499862638771538946556924545639257180383075788740184802469898133624853971028813993417496980583429201798624906495732288016353412998729101695977706847371867619339740438010745839648648180814295457920634159967952821952388687742327560067386600545546887546928999406501725324894329509694071390754888522924062342145357399115874478524995997300746910088310607532890915014278138771774736844668177585110388622223410609041857198469237103883371610522174401668335595931671475390543766034668101804713649391419789351251853478266894388321387415745975962826949674204791885660297556814729649963428864669456819013946547477932831319207304306361217074396171276364704436799253870835467232455965075528229562827210234175868041774142327898499366185385301113824100690443653119517712146451276521245636322937128184945467701595168485292719686712626679111691980521372955712751005931317075778049001382794166876630310175525199125765314828672406947246905143841427267515208662896845493009294010285047114006191361620113589674724956693797657083374496102287762211789518728061629495126401265933394126143292686622903169209252660665736439526695795880023843499018017745557589558460318845301135069852515375598001313046800960449584514054913096560437509177835048801616201922121627070071012909855939246285350608211147634065104834272377040453859278490296441451567916179416492053332733447099017926786872593973379227207215567010888349527291376376872472295745443387667588207809878937999170042256488381230305731486255166042289191329999705224153945000296815332605661572729215846470578824473645666352001311476641570410822476356835899833239397396067349944209521178565311110755128019432059166060418762139319326638343037360594817700321459737818297649990682423195769432122836451918095060963689557354796007425745900177223217232766053953661983192632551408510572031924122517597156318072690676167612123190263945337217964884719963271023892732889824201196040021287731819367105433559408802919849722650497027457036412303540999073876002577172718101051377045773260034101612892766200238928549287654315567611059162820425286593823236877275572598259292479456510503545304585893719053002133565075215200619961201414281191177782238707130299708885622595121579684923189689745104146055748387473972560838323774716577809613257115388724609474583893763076886014509500403131010378917943979380802513941908153968555421146879156469006625962187954459557529043229941673772271070537559215494905142780474848090759047127788395384602252830351666838168008532464387258484836878237687459786293113745250462164393220088269235772184158214195167308777999310892532347629399186945967956319109256308094628954951131082856089343303198830450076848261291232260423211179892395247113444025041647899897280790643425565559388429890639590662780287810423392834558651127728006686518528915166578763522856841404362626442340194527544302867311973696764935679961969370825834921123084778748497175235181258334098897885140355795815155774316441341606573339048009061878913304596771934891961966499163094579218615110164886378820114459055926971281637962489422376112449719283543061947005396014456525172450716854963706435649463459453918277469649462481597327126098490551583174599803105981460013106323455280223374902065145823177403039434990042544845582238758463546888866512539401860937399068705357974744842383317042123083693413000033299572102698050232123263662522306972450204962329039255759560429619622155468694684403573948689675155886035271485243471315184512835768673273272335864731864623945685974837619656436922009705841531802371381347835426659598528327857205877915875312156781914454361168841141504186891504771206040038891182657299447980642658007609749812546051574036248362663466267964694820020219758445686476853818270910909576753727045282306452695527173756537337796128442624934214667217800097211283454562268713864752513920964133018588149680088805100463234099605549386371866300634507854100631694934761976196190870930894631570705785111277402959606726112734031027831435445318886175371826214186189187525587245755364368507467407108186555314480400116845756832642450706390124147354366284376454909517813704706607937572500454257636699679183078235606613500645836071968334689234654033532843150469028649929949381408968070483646009952570669559067374378173140549837816288065489848011147784890823128303255117777079699887708337223341047020516654901498271549622352696519598590252220483649282959913223153974378764144394675215771756437576290431135521435328974401448575941541067683358001630999138941068857814958563155714239292197105448926463164676887527561484413828326353661650480299578726115061963118953397125610962802286157851720992994840144045202113872696470102338674089517706643082320863950552278739826423174392039138438931999646395862992474315742034000092455094593186424491283632471029135647410442147097006980632912123418542841710382920176188330394874392769049698754112007535059158393312612078208407417879624015896809224147487694808718048184065466373062229836551733149400462959886134670100266896627970527773481763560866058198977866568204018715867704161962132143766225411419639118684591313941703622319684104571326374442607870486999892346973702945048301847918076239814583781631753725382970721277647872667322414604114550524161557392906541208218536296208337048696838638017399145509261974379368961494082147083357870623704253720853909983754190670607931140134995518357239522379606663591162957353553779133167230971628851249691772620133225132123566273645834524877654265403068623704287355751132317754408022386303881463579870486911220950232139491652323048231025320734977158668258448994282029281167456912366473003767824630878485301736975718373982231651130115034318415179760093502884244363645479876333777474400345997776584735489894194407454332218134515039886491223460822878398525833960308803014423682870837112576244193699211992365828042961130368575369361051170684550858863006163281573176297748937413307959050352772301676553458360352482574460666384476930020490962117504536827081679043668990099179803778244269693461332927051765497258512602677064224498118601840550697009769375870374641519518561998704718016742833009477933873431336443995561546641144220408646258577896380571118249548960810283911406688843670389165007655981970262139528930069970747742452958039788660703713698809793776403436873311317030083996509719918853569431844238387911531236503693676857925031673632794488078708496968523724142041390229110701269350045608796987486566509408312726471354942801013763879343266955719121668648722735966064345695350098342427311841327527130955436358937840032694175501330201244640393377225962250898914930687368448899025276239403923910170897163074799637313040556416931174399871674131264738519073341507161284285887178820725311154116488491420531499687380045567941677684073931320366334727390219283460408687726391666821420210198335026480826882309911063050805095757377669344663319236366359242608001565268882644061496572303700565388813999169448878700422426799132008411246183882411524545973269164128184840031943089725438776657050630040705726635189687415383995527066937694197024448236633703798199819549136601186296454681761738223981842702082442361110802418628744363843274280315484313937338725292247691835689341131162407363090677011735042748098534988711249649066370409946677878152445316847003922247906945363423857253411660881278239206888259682385295262436040471758576646147223901993681498507487247331342183373979856341814052908901803502256439020184228999575309079855144809263823684284476374153204961108920975533669142559655545989592109631886320847600272426222314786552373956506799820027700530549308840680357958628539437263055852691959563367981407728386292211357006354263248774597760305915597856398134305817424819216504089704118529540680327845116374776352536991486458977774303408519345751239656183849690871245045669220242725263240139047149748724475139282963209939773342040056155698010411244384102240323159799672083181072988422325566383579214231779976082348086742854963208490312703088304833169506863893662401472175413546651155276813129653533732802582902870915585661825204843028656230927144258781464531369971609447075657193542636211723188957815838420258844120227966419065861114880804837724172918865214810359376797576375798407036996007994422965000507035421295280411433269713911030568597106675778451808618437925863292067525620882005670639073399877013125366197243113224928744793012805525101278287873745211975769861920849718129980627931369251208930432516861522004930952656693659108541436393809590293795419536627092287829113824302812662586781439213971812456809903360540388594882126794366937477674714825653170517742390620407494315300035970782180372792966108550666379951078411435247906566116622368901422573036164314551343412587358470401902508685211025862244988000021327162080999193144868245676905687243713636731817030007308196484417699537968150893896781403194422794513663264913342044433173857866742044217148782464843071243190152400222769867503241245354654351927519161706056514021107212730924873976767185861469497379441742668693214266665701710954073460464038809332296473364166600272158710696517692018660694365298867083083426865498929780534650178320639436817789098468719906697287213428005664247045677766031195813048418446689760527996799511665551578523670761177294979874329930178221369260545816998778613936474494830616719170233914459366213613030137218684244292220467582084795993159846707414056768375057028524894968704080262582542218286652046645517133898123359319815197560942948690001927097841913085026262942974923663824549818255738605241964954467733185547154673034012504250963468343608209397935827582046966390663122363157633899249050529588937859151046980315494237653205361560613878843166794865294981410966419222654935978453752508963865721237618975170449659281886879110975649898055230283915712739613690326992991534978239851323346716015106384718255023103058901342644558681700549890458777501397203697529338374394541979447824949102200163696310782306528463839239460138299357255191398094691466079099396583293761448092100034474312717381922309063991427462799746010454346755058027196622188025711148048543406135912697206014252210032930456024388582402042537663015576666754251628013125281854140531021022485010664601059473982234664559479418149707286760524618810682557040369206463547166111695375078316124089527149964265063240522204503718585391637731674151492411095435971154357212868339614153433661221551372028906261957009117367364743454903636698082903588593928641261316891460551615912692530419528207003318060236134028805459213415112711394916647309685487261880735564964994461037591383836194817875797231999712744319706143961013555776887339826714375748444283360242351643370685502722662646032169624728385001808511817085147658870734239900353338319874804560798617940645863683469880567052358481088872843838215559321432493458337728441483466786075749810137156879969999842650223899278952257128416077481351215814799815669477753499076579892914102252930363667162840413624839303852941427303872611997602924503135314601169130016928291232244163891790987228265557447494392172128481022672825406018554671543007380263378395015644538465903283572427592367753672637267968045020808643847724926994339693485288979630900212723886535278633595797893898655479752677335112380316043478723483402478391576688285608447656147443760746894046172231838419071818095113822804000224652937135274040120209343976234126091426151043695200966393725981394470486721345438212081925397918292871662771951756030137456908446256505544526831329694187050921886887038775391323017207453795403781988321750544969867292882749535386027564207307888674473822751863720104778508384005974100693154003265963699153941104697424101938215017253338863747643407884079507369367585143172193684905437508182080420088655933000690238687394258829743079616130590128867947019829900445758222117656506742842139706213176310417376401145603007452568896896970771207769122193264197397052218532416120550400230155346158899213852707665663612741058440551072066387589584969624693992316937059294455238272885434542798544136130431962125661830756401206623244925187618962579146072396620036785584433970309926998041215848714710380185756589060947383974900434352849970292874241711437398043494397515589884443628443673848198688371081910534462001792025187322204019825446646174887404126332371524714169741937329620792728121925721817839854334552533533146441637512881282224982341008251890145320201105681756052241761161303630701032285282368663516790412879029378778672812364293129868541934276318722962293097144601548907385769737178676234285728340642116727628657397340750769615861573515523431481869473267747001769650096666764427590265750142858004080078882449974678826531317237156000204599495567687085484110866556026022578606403693561926705966754774751506848594437090235915794169287832228040030568641447948182869391791748547940771399564227096087005425127931722678811445500418220254975227235581810711357646285558757441558027601047280846429909936038083582941175841267124564224027329489758921743953351876092052559957675417856185898231947535930136728438220434486982479535222861480288298016583297873982737488874242879751005110713810943768680755970720218730310716983179345417501764039957678349560494556686109105570102969421531399395813390666026245122769658655965617505975398497805390687934899648003833016932296602050712360488007617168511268881728195483709405749113487329685754008074170775564591532019361277107628570172965468763036322980001230916393407582420730419433864303130613245920994596768778037954269290920817577965633805179863839756767712200009620508353223993521185043084028112532919917534024830934761303527872964837911419864831778526165515969777892939529817858017779684348877320980196009317821518472284044216585301025770596578956644827912651313110813699528258911802100789277132078572625843113867561132929175460858488561656085256544099138322243314380383886507361267970988401170670387687352737067142900143488993577923561638788071710190268980472478916509390811056998980663689933247518365588019071588574184740470384608780007252493132517787155156408195322242259882858378628158843055603142099527175430431501876007646139922731283924971078310087573463030189885999364923258535576667960120528834162742541740951840286865897540441224374790306590537348817731035886833352809068283353107344299620817022114254096130526824221253311057303286607971979276564842360369830784988450371097349644145807717147643254890015556639335092473210366308229431254633131296653136000962512493241928993247823054711164066540496867075736230929330400902062146861437503314592704027887853572313480415542237357555000314963210105416911140565068296481214275370836568722205959643440615836396290679160917129396217973816703201708019320325539406654584529070010633577969352904161956279326214958335572972122682960851765522069930690436863193765654163692633014207574276134809247582162831952356629401220829412801705629131550868678625397551942520157181941384265549879462980158019525153002002218932549150187925389351927057681568520618898885260588829175419977997188169631235352071271657180309017958861889788062586326853752570360827438623838070147234342153386300698604821472948678285444424913771794823316468470063391462706847411395249815870763900077947511950133721242913485335847579569283729652841101719981256231517405381111936531634752189864652568985967190510701069356197009778215521850031519612979010939013687748461832809112403720083546587307692994666878184538531834803159871077470484469102549231228623875095270493960282660959258353687994469140010654777752865730098942642295148468196686331847731288849115664017188980762398791223143295293337611544178877899365206587973173188633722933644005184843470702975241551859944050631938232805833280720838060775428601407539404870316179902501784761989941455746914622629899016476226286888660359523598185276312565685542477524796385051527271500545122735724340242975740625052689447680575848115159627123772898486400640763567478230668755548351039520785000607301856138586885487109317920875183282107655502182419081099918829636833110848900845342802675435649236865560559475731527662707445154883157261676522862052394306249518406877231557526419739351526992064955135372149261791657454139452757359842157452934627568136667087984266233169006917778442556469039217790938891565139127515726047355342791248684675831976914453536481539633802144366104528875153293007347489161034379950461167036658773614917644257583422414378392808858926341647095558697986324538375972860423717827279528620438418437135086201506744192325410211229069897193740591957966876389792838551315553517888798952632666030736769484878218999580741702630921355446763141401927445904964187371095775727311185434774891243937789845011549986643549596055129343153033462453218199291889401600817375701854685353787262767776136707641260256906267230903988013644957630449759203902381949880587742532360241050534282985802314556145260228391581413790585557003414244854882219187518707671370169622187839300193749753763126488128159871869510616836685668474134530438858812663277823981996224600249916959676204965429325053823710556228052208509772305528930583476497750292829515252995332040479438686797547990586604991099158562957388523109001617544917179714398702811871320352682325161153918984792206619955915641713729726016861501374876376529580332443461274841271591242570452701225081594919111048377939690509378507806886202610596491149751858834566219388901456904766590549946232078290829525235126314786349192821448442246356002532782520454455810189710403061377557736269544013133362447752573007543569455168012891808371811016767370566034484862619528726325035931338432781913805895549499157313238078843356445590192968241006116069618617725136047952856437140382274557537207655327546952395502855110070932468914027114004268718229616897827018933947530216915018420095686112810263411725364599495612868396912740370423145599925881554988425952782049874382942727089741548410477266857002249835619272691168065178494209487641676157501605027061422538704381011920637943579344210038845344028804686162216230054910216232903409525926302956451194239563946250455252836649744805435772066280165153752796717902938106814239189135141763528980306058175676334479729573660743213769884291457427626308071076079653008288049264411833590267389284268515723799892135850387971377270851329943991128983590918039765365405890910674919328824351487689330575605940012895677468197972913773532319051015045970547678841864008841158899420081330302296883651225426461224319982803948846062598677830996374371083098453348932565889266171770726492580538352908803255317379677833527456126034825848279083267351105951021326161524472086753257930894604084999919595552030187511032222272689334762554827285117744030075677696591351256318347461273835576836162884948779982793917949698183570750938072615540489538409050938824991405206611822262404316980078670222913402635898827026607501801961186467698855885974731359166966021588245335839903061441059410438684125929849961006921105422120352746196239059902075229196368210941293887593834867535513285700950129828220140644968647147398140285117237884892424244073342096109722965617203945265918600067251407612408300099792165810984451802710177480498091873446857697401015398608824974745476930583529859341515616166545530068904694567922707547717305129987293664054623004807554052659085560590892848014508094662983323654386795337960909511039513016186886002803462220902146803969621168510665762273496147858437495559033745866632524964274814288787584655248969900811662969692320408629480748685314311277196258305645136718717357058579280855048269515355742679946139366577660685635032577980636236817774805172732974657313013377799762379528274073512937441303279675466098628837476486192647905891547242408460656260015179034100001759320634552268698492314712815201409343731295846521503678170284123378048233764914488368515066692520166731183646803716440818969237115392478908219366259266395885689980097624738811714662922688561604454565054007737389363045773017881259441805381011347003623210171196270748040603534847006043477500119589886856023610333764696026693075958824271542754269961945396894888066058794674381010347142892848250486806798913527005290610686849722757731945935995138668291119934608553072592714173488670296688947055681379247969903963291873340289247069686483325351102852550370423573731269540141270635596814343664137101086905787603947283338255533407181281798618840847828934396210809707077691438999301020271834828418732896044607293405861922403395735177763260297343353292015515287809033679281112023886797455850150212233400909565497801411411129501141861221336560666799967112560514859342553241391382348788739595057113685242952864416936826271343953068912870371076888007081010145788790934804638033797440546278870434780548867042511267207364366222184736045928637185989582334962192111240864685883539916342527641390290531493345257622770165241224651001233954818836316009723585770609614549355805111803021408750326368866635856384756523431455839278895763607983185947289935748339495616543040614153485543383345725099798531872529387172742441565050753888358778030763104759985398203329705105056069369094833868924869949986815101615793338415299434420068786390170627979513545919124541154943582762577253025444853350865108882898659938421431314033780549764129743044297926810335997193155507145524406462088150800305573319055548165187138356281752002483166466953129283315405212838162223713671777665331227580747184841467399212300668508691341863521722114243908394359724686316095944063988584241550788016870746765400101183237002877350621168738943778516070163418747663427266889033858414103260682495317511541121305103498516943043533544407110548077120021321740779216915677733949115971837935554935562365948135900059386928082824058687160942960147763808787108014441338337424483872529727190341207383869593600155108439859333761403899454445241596304226317127513262041726892679883098698614524875908268826066580574569481856916008978311243235753474298613379804882508194775295495986228591620910393886218194687068592286185783961034700208584340518690800284583125022644952935966856436555064112833492215748464856302728534128438733803040650825257563837753954419769100673892418790964385810346709597950138297178814118854103896167458456176704942067477285966667701974801253128658803213466508847522963926790127976676826093952886275718108642624862786247171217871583008519571828400231916173344255175804167128501393281164214272149901037612940727787488473270411851628690612444443636453403725750438324811803123986890369246571609645080289032639235435319288930371982254945330079383757598831584412143673944010582406764270140572589595312863215657360529113324461576247768682869435958028460894153398116068331582917795416471396496403432509694828647866163612361694610187983312921990128451275983671694494249628499168397918174443270013973890175117022742022074572911492349774303028492141353682216806320696275204832470108698430616163135343630348241630961683368472043989951409508792806609866744435460338672549790280661560635936027012996062032633741788609207941124111274333151610636992155901820149477174429047098701048593631759234123435391383051515717921143500441348856518466997783405916022065723373795611142306237006900620874005147201876464069888887976132998374360797446693068008754612155797702570687115286549725295222862561977751793962722424645539736612488471341861241687610367415585192057975271882935409640930456607539162877090052488529731654784573759726741966856243614703786398844522003847540707821491773366452187659581190636833417005503896113074018457468883827335613973693532840211863579739877629190858378895043194313484304748764385562156988596391514705601928794242478306270064777166552139982293934986381265162777483558871420851083378391005794394969614249556440902790362924354547822759294552318734591905036238428005659990161945774188012530945952198340474356648955052534998953166596749444262935363091529427639176536280548714940388846691144350510611432638164784761216073331349756607134123635527419836145118887909781041155502700075255228794392375817475837246717290950602001618280858720326226030720052448310760247265155543656028482656625225509815606207903630125585690563578189003578128989263129490475548737227610142120992900528049938021219832061255429000757770328843853488748066942350231085904313006208714278703902175228572405285284750673595122205987788374038104189790208786979407763349902601096001838476379047518741090884464776826499987639271402640266871514967142145095242055870983108213281779771708040069879596087863428289609926934453670683758987237340322554507585119914296373631293075827240498747980752632376416264105448630359917495949192171453164908956831332511747984359199176197664816434826036250300542973978494634930440209235110268607824988172038485282999014710040603428228010304204785247221123572505575601710768029010681671269823849301248695787753254629777306080634399038186870344122192733486260080399377101122696668354387522665474704714532592418594206867075655221458308401098768474011139733280619181665365160336062760275168591894887545313176336416796081587402508804496475228297187775384737581721319998174793343156514834157872686543580677796503626901468780395242989320689911855175921188544820526886836544557711321581165216465565583174021351731868913932665349180649324917343661381956887401176241194858429869445763428383289248258289885392833810063940806286237393564365398127916091308553642843583287809130122541076914334453265175965834650570036156429951997975104928220674726952361220577315358881034815443735779223030802917721188094629319724079129622079212587876835864204896229692442646143407938597536050776509361956096295322141313563688867111428192224731934295595552153945055470539687802313594114286835033766596648884786858543938325680936473485292858502206894439118573836752900776257162129791282508405336956704595391384768936598542628571909263365410478323765170350608852672803671782604205013281937497957272230254123277871709099152809601156923346594986179633602693313288879003602223667872922321645629086694950782653834882890318730980507350426933595022989976985443983704356389765981268517446346816266675951197873527984217409460160999499886901268125129746485699115903667120097467186144062710543008768040433713328048171205507528622174723974866099861132388171390218287942557670062955364477409591993793311028438049842949505578900241799366675067983914812869659369810647066930631768976749795722540633556593120027135419831444274818559503375581005443643985621628054696698443363796514594535122031397204580830697182308301561882166239199367766255785938352004249271571418070815644572037803708101819243535322229833398361422990369364935689888802166602568545313026449690536849797487035648006797321994774506312111646629308229588038385226886916851098903587462737078306105681094715599447672077355229916671947862027973859480815381591534643899918106876135780949640747631794601326918758422340436056624246033446752925152501863631018257828011479638710445563499640155030126771853027645943416501714158069737981993523079392700247750882298227428322375703183341887124107436887057436131383502208235087677903654027409686393668961772632647828517891074869161799060810286131909518138735156199892723281376426030181218660828870569463684945483456032176916179751544291839833974724114200438205769865169026829273724577020759414627822652155889425387419163762564404323013279176700169345955349243727660128428658558515410461610888807315563608150213531505689462490363080376848806920960003540995134538257259572556487230874209747325286253351474868825473905514269794535469479315513884985167338312566574974092003246572443087588781026882578268097246017076207413754541106252217464536980433449486826095853540313946000839215723291612247867190820371313747512403912116743020905918454273694721795293094411781459014837206030346104883637868997065357497812530918834969032849208515294004923467004202114343814291599223127699699926256538909510986563018148568147248454923623066207467482413433422494721105413082437708484030195038952862817450121686137587487615674427333861036069624108420579446454293800091772042694640050442180012496023742232835552565952246282348072777028990920154293497188733077076796812760936909507078803983819499264114757637371918191439060618002278376459953854631371769060861662019010655665833534948196034109417190930084866246494315544050298435908485149636350840991384878477311156355732474102118770368184397251997014548450702416499041548204090280702255520249303659155451483972615601775390820663924674708400556293106845625251716079392893298118724416227460379811828424063610076055021120779115070244646693703337526135088216697960054496581496302414709808622127208641223963562418046089181480359122342549117985348068492244329983444977705211668818038400470424646219536863893777195699545620783922302038317363668737654971967296255538346708364696151178298377779293553359025274651282979000960521154152122759877412832327782740430578102115762642253707780057757551215966521262111211600684355524110124997636198262503396372755700223415721597640576890763554301416254617966932695433417828399328291143144553737141248802473467953820049819582133257452483686046869049433144310918237475850428585557314809113824598756258002645731053955777322811513093191573147299768515140153067496720228748096850644386915279092220929982510710064775392938640134386910994900470208770771998998966898046368118070233625302132286709088137535895832210480265642523952217422779245200596374897095559487119728588735827863532585490479780900879623076108824785391476946047897688268616068578971049639578495446823480963405947335039257141961161625710599115677690688459034627527355287746745539654844031801512527820224026931875935945733060830728025729612331181334325320750317273066193836735215942402280845257140605295183853777178859929226341086334201829861285193380467605880969296871051451118797499223372979179084643948540898268706442076199788462674315150793978961773273129570553914596960323637745929130306979395614893478913929936436589821282185673557722786079558557181009497193557424113131087665445929021607215464247249258517825361126979040037798775895970885237182368006438966765167619478134309807747217489430739670373143831614822441103102808905371579658981120707265309981603992850980548099456295473721155149914855630939880657168913012845842319960127876851729480430014610170416373368958858860757802381568734988795044625811839959120227236956306148432300103978114762616475098094318573303278856996264201236159627769440069491529432670400683523865269288918588313025747516740547007401569937418091341464772301870385773312326102405457523124974865522151810879215951466742650709690783844731621473416306655927728235632979686920519185511158270563571227840807070553445582187706544474180980961467126626578789371420434733378930220746901535853712714496245292365822017404631514955755661970161752415360485763837548798511191151923913874960283076134568151926627895809130379649761896112574381500170333270398502030490303200336492172261670927162904527719650766962333458003199157349188027997061105467591528561437657192556970746223520849620656182170085246875313742137411024930364297698546146251477281582789593060677775266789881903434292422141625186251444864730619547785537319496479210749410185550136217436164007108855097592824407543907434363056684311252939156003554628190922685746625717554997157798449880635576313849809055243376768991205932499078052520840315102443675513348405662069182715916934841574193451033897112228862511208000115914393279100004075704744124293327721820270387182414653571752577659780734475352720877628583294271370001862856501605119919480347705643261782409009941710113906927018716514544690999468222045570548789581605469197482593367657244791503569878317192618185180778390484907757961723844795037660534968283258303032796985834836193400823609040142219971059023375754530488568252798383374890956890529615181142843935195581757298567722110260154546054081637193098393981766751107592272265289687787848821564485219883078982149584764465926999612627221350625263618376835167129294284143618216967457310334340033053175499495411260968763109337175484094318725037970654501097050898198759189931656966316925655445269649934721717150369846593559598244713992154912278219022869712825140289360343554521055062412732030243474118190271648331841422688837241431999943431183829432180784956155428341205482005249635902640895280170597598521232838164121699979782048033428810989323781727193196514867375492071925225102719553688233929617677886284977340252893026896854496726463993822112696921992158227695384116167782029453115869916932920095732730648459571679077521287076084944414544200583610427333488105453393203635551523196448840447654703247189299428359678102337166584142117490978140042783035647090239106437024095373360575829665419348406614075057281481692962440514313858303399540778081189252204789453610802692037015241917421661580948347363850861276105076229698578127080570513462525247345893550445851788861393290935292466768888206490217431757564723905454254508001187977728507509290513146155484789983314478094078997900817623079674496835630118143565429732998555946330900355941848850456003359924536146807290381310102958060958965047182327056410543654919582523585148295710343257633636106896577931142464777107517129772511925299385525344868115713206290509151335604364142362756044469411859933898925575749688939908631773201092883759508619898948435924400028441271280189388088150579982260952163704962407633276886742602146751243200134563035997059048299607694873599589905820129759028304642311366740113818340766711334801302208566927808980208080331736130078144525605002851943435335589005461628104077019113470511374712218010991767070878281219619912717536994697288015492119384585587475668229079839696928720660174666552249774850720567270221935881063459037353694579293200926121976053456180863947624825296309679001927038821623784394395033849300110600739945397266541721917897619595095007370986166485583698325476849950642339122102520730465998874974127538714456893648327107287397898467689082223523809829951626211337363081528135673712007151819759818378076644439286824881077575197288727312135426330633335278712253344635197607163442463976381592780226774624896667872420540799008226694891194678585537575387649758836777390200431873700486999123021610438951684951737447521960415948680061051936324054572848906808099876196833145272809857453343534498395695237342590871013230299282069284346421870009381531710807447724845178086833258053795678239110524655756114145547621321623104595480946268413984702272371956071017049574400281772731942511985803610315546184035495222693229206881989160272726866388767848867957434593271018817860086807152903616532954523644238243270022395445750902339995458967871740987724293251925655117315325896126239207676855261092567583003052966615899289986715719455640321706039738222969797997370028432980163510445930766145856967270081581403709203582463989005780710949067681116654592371907536507456946418402786067491102989554216304276503978758229544004117306100520421195314909902246422302635513982215797572728161983679627285239325001840694517884913403187680674767932429034590618965758500128350810432828818054762192519490192764567919348966241394435954648654477984755880471600801184114903747236577415332111547733237384235962746235147903211683561792990379243170514907428357218348458118487912970695751508946076205599921563725045535597035641210150129026756619519585620702375046990680736203700117099825466323433675188278415867515096422916316058208996970884586768403106275688930334044881437322172725384913005054457454285511869185965115670290000247437671637009361903363559672182126958706291530477463663964131521176508172799733125989117627603126014677608452321631320936331250511178422791684289836647465819527601452356377880189461465703760172606460911898638277609411883657897243588203072367445251438160581403961888822884443549463435176491276444759321276981503890792871888877611938464964382842827297104056151861119214308378244196632357299610496875548330990467164044208257242738407019308373885612199723630022931558622320887735657158014388955106013888193949470910660404556488215607452708747335813078544959866962849492305513216035327242433613602102592368993789169050961918889747690631919280596563260508060841121660681965092634951928642161726055241646128381330147110995004625604994110583122499802853222449656754935309108098986846665984197864364083904310278998551661065987385994047854927087409364328732452565230992660639929864781718883030494757127721544405066032155458451031318022029110758545044968302338491767877031647042515933653906705723582366351193095332418997973901709635186638895896252049469686317276360219884078396711916720779100493284549032330591180616443767846104957097267241281665649023170971698771234971638166319868752413863808642932097505495153795481523615271906901991394062681410216024454850281770540911266808033764710354886239023637117575148109427726051809344029797481870286132694007272609724508888567488316920064366114353058659011035178299726644135149835918425062457314198179383021369194504824243003572169109005290800060867159561939126508049759770407319980326594219845381724974284471913898344253551603174791839515491892166016623916769831838461403364073831064872691772860369369229618997566355671852939252140432390519056189269814462093352372408600218754292100327799742480427166124204528905247818414891345093800914319241501797352440394841608778214939902143818228288941682695227913464944594575347966346639631106720225025819287296749235902273870412247412268457990461760481279187523062326681189673362820390943498097841004913294206651780486077738498205087535382718022028994260869391058547451545025769977275964745273689094563459727076868624931246722901694255940317811602801777844455878217880050323419487869716695422182820604896112250936256453197054584826265610542446320689622076381765421833801388409870533320792397343745499543201090677288258043306836531867141882111835561286722308980500143757803013910078955945510575224959095836707227309359132437490623693739229794380516608810550671983685565305224233926654891892346173919515186235275743281054145034006328210521901292838725769185108850653893298664744494041298232408567008044747898426993636749611830243348538351520118597965588357934119449411340985006522149560692489246473059516493676208727175114714364223330928886465571563594636598136023844567318439050217498602078072520542146480238883114495707610484795322479744328122957920805264347556162582095873375699847952357434985206545459776029758981981004562365275278616748819014352241364314957931263195347505244461883857151947922279958157419384673427326759838909441524387222484384356269001376343786366706015959651583754528365340269820104739658363708163786009379348045113374987064304165031256120585632733988540477902195755443947966351398674923395603043862699758965239660611429199964893497111755726473308712990005240729948307262310248620137656594338388990394420427885137032999252983883403517466811876786127094231441829816979654729908443099716094216771089850617664739135517634087361219679243664569165968716366585823651556059601988258160809362910253632689744652212652136499282720151299103430498443558646468735512156721755597618315998156206500044990109872477718067882811365337241797553298613392375609326776596632011967455888893200845805834401363038625710166539233693803704528750410280553824004999270643464078190010012996100093963964312249261545461631026715256438312121275864953359479414554605419806619295842673267554378868355008546914525572931996884589264939745658510292041313157528741274575639189795513029070154264122724329401148944306942155330373516869515843904253914212987356245708967271601810387496786844692964888168498175246427548088732978930616367464437650372253849672693413844383021537370341479547639156554362719986392530730539884304430579794147582595102312366036238818313894427638356304054860479059117690033605227828262569750008164689155005024252448398484856323896181551282089847759453265381463263269356943480401653107096353473036530152614055158826789257419160877368601861818192977337720585686205441958351278371994751408223195817423513141285167691247505247875736924760149085613396769427137895309901528603521365462016063693114909671645340273838893544928694294898331271810352112566455444560604659958334684779955595412158470433870334660939714778704126054301201247204089450599372143226669660984135428302373982221989897128574371894465195971779825846953610601045461515967137936300573662227229747553195842234566524520725326118145520621256164963441473960610183221293043556139983836985197208886685384446303898546379488526193088733354073731266691899315501534838330482119063074919791127187983818774519074634104345183569087158406263899121315274351546460050713981512873323861728524001697733835100826343547376480907434508156716750080853180636640930186627177641375588453213254899960412457971574098892027574521277529521540504976061338097456270730294712219888372615991527927453850289270572747032514763777725203611270924748889051287584189278127931269437173437696590335551892961294755332815684600026521174831615295146459208702361010638138974980606711601091652382305376990115338757795210121369067413294183115459991582224702580125225132846668324725459740942312284481366102833196541010418622435346786648106449259207124143103533024446066244761050388377670209230899820802434640204044989226847195125881318437644514285774362118961896220922566761231435008387648948714499620874901489837843995139245481048992084475094603982381493062058731133751902155993482118466037203019438232798896767063193647198249125949168208260748098885739888887087266365275853172441902191269157521983654398965172809576034148330500649623511618944101428955130786705489959486921404955996369676299715792979262545718457865439178622356650502756228118288075162997494873725955185065969528877883058978267585732444586577162037848916841346389462626962169073545860236221947233117028990972724293045552012934700097717276937671348544496542158027301795652642996793556790919534605855450322424141113458266256190334358862810584690205009540068082143236007213681097198545764035935114544133894158892268189686967250670527503234291295538786719343360609587450213934400049575895960705830379158633312957656811431320758666584388210290785094804929452619787067149542127949829342621648232706811796932420573149868108256286822512399256180128413918153903870764549967416477050995241611293822025518408890550919303661083103084972698208343645124818788678262695452013765316202603532209517100724616793028335905552749909317980308752246192900716713347966607734234546704962931294303465149592789495339044611079473141114493664353833535988053039506205122858182497167497394136396917208179232323648198709304577890156878416183116178836054574027506682862758302054676044005997883139723120269572022372470664243565752856334209101812558954270251953802941522230253907387643348404213974483471316626862909019034050502735205255072662637411149372148796071873343715254641139239751289239878500534024615350190422293751421919825355991443025160324925922312778648365876167703319879978024367392667982948003423177582138788334092120764408358635383066714669298334496854498136767787281331113755435885291132668309192970611630694570184893474997466028590857662953996395996076181823599208166801699148670493091157596773575600518533837519556118086274788125967218774492494997151469233903872176459436107719401038853274848188456663068536427003862082620145028994118050137559910778196323807439658579698656716300682570014990261365350467584550710013304484509693631005644800310995914262781944940806542077661056053480546331689052640912090540478187875589887685385397572367465578745921262699840376112791703052981360023521644653772030058194507792967499556106500318087584173791828285284573114228062116313995979901780966350044306379670233786423283608691867273313788757435733459176926142308391148611556956702211141469083008742208220084147838167968779735957796255110724515963873890168226303119835274899545409032444528438918970260262342458394003392128505111880459528585529562880030716137600350647605322601577666280188034608674293877654777665999606018886101017544565609872291845576950206517286613850725375379878804791380956059242992915241701314663868900022035974156742437485617822854489047347133396752632450098835635531448720352654838049243383685874170347601693879984139358048133633659518672698601834748359204883475321296696106875944004441486175766671877306165550207654928707955822664646317253025022309043749812155893303679283326148753334658935991197610347873578357831824764235338957650295170983849255658587989400158120529693343890376805154206394529405800632835718993778688667984542526126689501100318911488059838932477611846760276255076532035372847920177079440362952754525735967561719957565102237605659342039829938214997553842888271811643420211109548538201996199979439468473584615484904488900674648645992350158627140947664394578204214972059931065638614637219599823722158067398643352962209502653759896450252896648915673251037485974796701878530155168116571035665496073928794115528795204552477189018171887620819875386352560390442798208179841363654708872867269603815514943763147029331564962137098378628973908826273775672466946171740125479145727631391999155084801415641157288234856766498316120383337414318771929393091040117599041940036476169315187731697124063207030705487875880554236142405046413089155324317871430710497898038971710041325730903555873208233262231179764169579968792207357384143239638930612274718646166460820296200814375237122416549729698906472364117097836163347893850715904397033559361223606657051665670974888317494664578819839658613541808067061577258533285236195701519535908286168536705996038900731983139877716812518651852056133029291077418521084415308153708397001859270780475956428492258769641179807081002559348537707142717920752098743489041507616791502348628366994226539058405561664377896966660625417303711572886456358842903024815176774615204893188403589148706680080900265368858763556999678676658479874777757879915050722097761332292556621509195249762232772378755901538433218752899328152716673474299853241730454706816360715322212506291476135907453448246482302619837204139531237955432300599857454891121557893422176630203079961284421866618459524068554373860887399897681174235201303249015732219860148805364957862055724581938334748207518349357941687148277989443651681065676670833114295583896157825860035407034517573180290647733318085248240115530261932042343078008244473963428170763939477394859187861707920579589361393561551812369403475285108289314562371784821435079159532155250014548525147621203741915023354503240091969028918076633483621760547747721556252332587053113176154316641326991165142874011245486645163453147101567049398355860974178995104698869327478693442554254229711049274903178709549465458501782822809074735617464433271597458509406151294802105227013299635686559320920698492616312447857832671499422366010797082012779458237407103546572424794881375767570795982489672166398894174630950063864181867724957974406534214312928803185300497941886265560362993471020751204920356304704480098955986653140845833523064439907407453742355511139196056576802075881723013890131458459543829997507403034111259815854406419559314782803443584590677397464829544716952480224127097254645927584702473834508622181675525312863958906774184307072283708522423929428784633043286197256060438713326151067314246058570429063200196082805029557406365892710179264381376208696463140258329068820279437113699895711028384851419667465709335980251720815011435324424850428871976929907306070006218381114081712272301648081782847504520645396933204818521105147330562302812009611070811942873020831705212719254573196637207013797360123387695916942315630687358332528325494519449955931274850936399188329642929156827828309787112639067584975406447838618778695969563409499189877659332999376014605107983599558862945631915464150408557262021248126953662788416956115694487041975467481668979223050073297127308943924084596662853690215771715557426193270373906936163922681743676037984321366488400071201922727312236009843211085602170348807641869361244569287112711381245223395946453495407132267898137562137162877004779370155333927596937002413343987043001383475404000110858899146257339741784509158731173742597315213907220442014433424416551113216331669313850353974763463235930818626838255572319915649944968835887364011395170950451384413150666357088533188516574622969589647865392776703074433743029837812844053835953130667380737982075457876357150521520493018012092011269538033721234324571274805208618357588179587396931567052679709878987349337089264892222952498194287118744452590794556207309774193612519586914281781634695298088722823268236923892158367096763744774424480438966648455104036670370953293841231465758641735122025689644280659771275852334356684741434634614411650754201225838599100665647296321055169239415769855307804011178774586123148672425810039013312952934866436845591010270848662066694964892357159771103087035754559063265410157854730104858244221090727832201180026323464120564108885683327152705049758943250414248047733079663149645364522470859514651883110978392904125158577453121579636004504789362088113619048951834114950040618923313485826812631459989775537117323304305381275955972803307787931809368382407493609735885976542807615768653160883348310823989550208463037435181493230882046154381090619680124092334495478580571973298324588291653427837804593256860861331597182869533645606429247546363617482741485233853627058905450607010958631542331748770436249582641691675183043839169961988675713627295130329399355386979958829935525001076866914229854004899271170391009632459599349339013080153515498406366372189464050157204090226118460512985019390110722429635832358746586363221464022236545593660699476433545289436023391014510451915630593126891257863200537365286452750203310309105225165663443024061043656511620507605219963803472183968807158397613410464317928133105103692547899561155317602642340273279094403319850156442154021585860839345512056242915544290057968721606117285426152325857422717388644781487799629101382903906065652054131726967706083220251817521741304355045537142135980176888502317970151618468618763466167221054179685701859578194040717538717642477901502311709051564054356828927667902633046654292455380313786858016349164413277450553415289748832619362578093955633951066968490817133753531643557576225989193938340865232594426733697198026458170288281898219057179490695803836232810162332303153524590718823641468004378608277584864009726665316704490067275045340288670304459525085285478350816696471490228545684119496014036501041047241278332305544470650721638595965496395142875739133812063251628921591483934930599373755037181687645516537287623377640411479660707501061614018005385781243891124342888017321683633298513482308142157459649399371105864366443442304538417414860636784814082000585235782502528346088122320865215212256061606796373818424625035157351593705853882258843356545258054006708598946231101617228283836621083577339949787793410800110913440507653492321272140507632309092759185908923649434528856570447432512238473497617340540286412933438334799480550980650516782993555944467181127003843077948373938343725999521846794609866976608607335038128421046525523768074795004976297079611816754258937715927411946480060993597871699490900604715787040597363339573146833459087468764988855735041885802386135134913466992146892960711319925304429437449084135553335417442882349577295015663434726647580721740662993102920219508719776366647024066646735268089784241400548837645252639256847152505770984031362032641385923144078284789408837865881852876734033448079923746336979864314392727124019822070806207507503474749557528970640606556421485281568533710525219516284573265282606629963829680776006093281301716878738202962249426864508385403713092947724155104710565853512402500603450336127949779943608295453199687954295972923734791621259040881302154068812781860429621188406561756755578442769271413138962074578923009188987920182411880070363812960737044915537206114275202022518435368907272930726445065331675794455209499550539608764706390826273271801928766077085726067965051390243463861924997637319053143875991030089542899146072451049050453031125833384814835195674572891864325605932716481806414629857689210854839198047364326927165898992845681259263375120274420030492105005494945995174918400797616446236959959896602733486019444908039895720378439391223399957551367660727615717967571924420841647511433948944756365401385211215969069475960707400802243684513460695989853565549367799185350010370745119352195317171890331309845447665747922895675108161541461658861582067599849395067055893010548919892278540460039920088346707306707351988021422575505353040749894974970271108045420971000902392904189591821188041120780463083032962041534110153764770115581737772083038431465769370240723174210310365006112797901426355727012058960334919820394782839064765213522853039949565520381665267889402307785213983592176263735696420191153696475243913599623716172646865784905978110812848599088984614711577610287907023875929168706204549020244859790456199088580573787693248613903754050713596930979449831130209806586029153084298498711157829997441935061159016227071519377626528816276088526680434636576184096935831971062680891054612182349224779170118248723503267559446051403830003929014033262347594404930359299531166419553280510743802387539541662932702900534716141233669264651541438450166090859002369934276674972538695241004427501742062122209345308132689878756002680886315140158992150299203270181606609909464861610041633634268174549832853957247638918935564879678443244650973647483296271783393233163514862152917812496076667657285448659257910543435674651435024627561402148475975528004841720489401294095921829554009996746360625152285643792785394363488060823301459753373182376781295162550659620783436052030003870264183818634806669350285511624447556254712411353234123451220036614789460160734259630157817817114958420227794789509909788621999028019456923646832872438120898226570352091646852896834606727546155559658689897588049762430183038786958980606115080498556755692635992445141350610737546974923004806405763903118725098244940913074877017954393113346642408892882662900849623138082797003233824886563067835785423398816602614416266413425296362811386382244441472320377267036198260111593833209949612051841652521545217391864611400553214334471429632611518680699754555564452157605156934711868349229480347408045889112508809631058569432165834370200704624226784894447459263416923327894285365089131366113693818696812639954308859196746957565433491890333020943873695833875249849895842269494370502891074597449588891427286703065399226241739040366239225840393794701932829210228982462870285905088485386493104073790579599699945575736342827741476918355922982558418276551618626856422530224693811262739286609554596731292333452454387733243243796702223336845947196522993917945941583857181694109162881703084590777045374632105426273381965956759706249089938276646656056416085070987851773983967180572820358755820685805353125260922723756144424433907823845684163121687126384432800917369211627033366129569529959968459956630853961570414651351937278243096965617105698848497001753319275355821799710843119726478781450632220610952587815929645530880345460496686410747589087545929674179441301690445997948772229333478354968890193038464016615830065266594231294282383066922217746807427020174137292505349954914386609586203487723147845637161234510468498444402946078713584957969881213984504278813784750095983831322964034952690255512643097018512353123918430713807489111560319051165896196254963346640693538212096748177864006262746252480995127841068500102155374867282196368997126075205197835954008361291932214194039045426069309137204010207013100221239265923758589971826786057569594909596747700229564044928392426172588201552761100199946255801037248224840604695878598083335615232981797641359400354744133975049544524921869416956905888849803754880990531815136843183059996867614412483407669490207524832380318583482957413387342332010759466109488479969598194906664831529281932660113269658545347063354535219632722116084364642416676852794194076113367100778478773648699597315960863101756314486239978532766179955676975925917886753776367726506055873179811130095031486481239344904694451856162772697385203356253976766020706515153293964236329938848969358681110874916287287764518053485534173356682048490608529938895967333712889204445376711228842284366404522594490205215195436022525682891460184589689988111269558833554662746232288065961406880574260134110416013132662594940694721692580680781703406163344959785177302697576623555048038553966916457017186568091634148104195165507646976037798697958501521427096239742450076820789042673527740872586738612518720808544022403733788870983155771004543884329642915275296576252264228326858496670177607449492374321395239980108959884976396687970235463935165771948557847188553973902197882908683156350687281757010403284728474105997192422111901652909558952975871332752391936403296230394163709792470849812250492574895800704221259911551039383822942885002291729539873741723166338930553696214068802709920403058340757652999932640907151589337085524847919113871550878269455845101678480831140663013261318946326217401920005389241524348930080706337045360883539726387882185340968364188902898273400803480847844836732914626281051462058109311698161019982154710955391017714451564555340686659045465314335938709082275527340412471378378565079030712076223123330654440589001556175987990149920056110509724277703532516601286378347084007968151373772062851566473293733453708102615984121805185206878788182327448643808084454024066628488699264599149523068062384491727426912069550818490270468388285086179975788660818015328378234504403141598189004849489984038781403010727315660461885795602002001323243658761122379035386089038685272022776381359077630839831218049692095138345530337698614875633871698823797566655960045833326947617810507256843486030570549041620664489416218341306179419085188058449163861314849781451285589981749108904276590259456913084348283586384005550525382532043366202289988822080346218855680414563593347737790801809597515175909940830800519639360956007633207390812603798828489282330626995581890041402842354444119272529511253091779137330760307941479089871903597575740525745026464578753336136926905605761856047818380192016491090244293994251431045618782623603844025548080557464543799153583460211425126869358718116990647673261261006096824115150136719292181764155072990992873055619829284880989628519054019579001663903922920513304780088289668736330869645939355687602110636662222188920120992761200682823827489833533080360371169595346719606947592055844379783751786560903839492163243782973466675655929321785102773877291754079301566609936874914110317808883956971869493761751114154060186595445711917553785580409406633200483657849845300682658981991424885656322234245087619887615581757627706919185419107042856791274908040883942672756226055225885676521438578897208814335092951302609695209135578628674657964819847767087932797627275656420472388937758365369801676395297484572607620852604879365760733119859465107826237676436943520835220346745474048898100044261190509880624654592590488718244318661860413930869271336168578938656134811209618628024087931900357605991280849667892397717606164979182285012109166035539425453695558428111152605660401065951844931901980963962915556717574675094627965822605722365720979891806909876798441736624624713805586993338495818322590917420259564419953097929345207950017010442504873006135239458884428199103173963309903299529032637814217846885640189848742097462532241030378958824913986269933125321102548938811320323328822649100871588674109533918136311992839670279984601968317983053781519145574526027567123241324982108559172665935998115497775229161456706299995332559849684332184987767298566710644416391593948410430966306817214177941833634851357965736419637700628969466226695593335111414933174817490140436632037641798710750056498810091329197549200973914142857714486906186252959264930955875478986642314409223583098736106601854121477625907077463534626630104603587531386987918436289710401007698290438560516334829715182316559356789973645033906691994920404451426415835814011766466109288941722752192910904011090554445250293363551585742075366827453790002368117688597614638402767829245856269548038630366934166693268974401671342250918549211590320074539381364074070297244234443040789414074137887165659114268884677227964596042210902079031993844706807806781072389372698867170222542448983718714010849469119707426358985030371558120117654829112900256857436509110607607688851617073539680560674389804133791851637154760730861339405601539645296403881662463569688099886540820490068696343502897625696933566190125936829163432296054129298835765106060467612348631792500410935409245136944017895557628987155584568963045394341858723489313677013622004102509101359240783594336758067348968199845930763963092305973353922183281926915720092235006012778369189862071231393250967536876957542161262810282643876245950465448311501411941257111361881559720729924508656951104233117596990613533026582360083048940091333004761815610674075429365938522540775303166388927889799368166234542299596165340666893638649010827759483085057066298134980955324247539814815618126294564559935449506194832760545525485067297590806540916500167493845421574425929546285591718092737713027520175603883612539763677021398821850343543298159903605762204007802313305368733287554648197640976881506186689786275610164202430537795982149383040424647191154368398786007091039871160065936051815193441869144601492577960612946166413268127055697410738453034255949275151399740293188081409702358351194157691269715276039856471329985943027327077034016426332838562101198141964176916241449662301519367528595417975684354338160028118084864819051965011657474112844463770797893609255394547417954770598343300346323349556904748009240764023240576845196315866900524869808391017538526709782888414973103408836996790770925129864610649989060365168016656645748009102427638496836071362978659768705853741737498386892177315956874915131256150290712474392761805276145993367086993786586994207751393923343312611267671318550412003519674534748107132001068527551557687857183136758775607118091483545201008754144677398980845955068362367136743902921402886511866419271465542035830220967397333316223628654054657277216574054251440499982141597713849792059229903129941113600244212392419430827655644208758371514182039921786581526286402319377912365869501127145725798852935256341304437086102596801219131354943575642618474162269343485835696956127385022262400736765399634099025638896737994332401896303406390744822352118450989090133360680715363058446968265061061073257271627998851226344180285301637285463890852551788637366778829413234474061067516019196037588858654348644228713730414859686486152428838192009067936305926776811548105778618349967696720136479277504538205701703515653283622460886813171219813930762470900591470532794811568778495282498454384720175243873603273350036090237923471247580949642542663614070523737620784949017672830299837624163208851529645725755583753548113640113563511917172981640700761983225703662117572009114367193311883508962899028510638497100982661439072485656654067548507378578041827218183455171825552640181714011441167806241445945182714807287319714278694483176522504057971763113492026117773284303210856066797489197996261385527444134200623354556579959365601251928463250479017392684099608990485919857311737143837133566019951393510876576974797340853555939185585644649094505270103244277607443179290931354499829494197147169691019574384603820622877308975699168922781525208825199652412386842998684176699019604628619558407366761004384223954957912612175994172256698078372362941671267996430335305240138733761130803489081071761532704541246743587089273259825474750041789630166334267563853864223779438107410072946019577978593918914419214193263650729026304674758501767375581388308266654881037673640464026616464234569833952100903046944158130112137153634939803209346689288667824861133707478943741197036736049541596981570454639036805018123246828224994517198310407429409556101342662069501108287519440694187202523408148474460694170870892132424239608140360986213062843628417177079062094384546101261936105716849088095385909076498872534056879148337647784464311435439296190454724456882868887883023863971981401612291718883550439676406453203603707394093886888804077597926838061815160940426429868983490321797421536487987866326566000732255236560673333140613193429764599887339748173471761654431268382938783427426684665121442864155040783474024966418516649207373320599127521955923285688800001300788887891356257869901523836692467867691591411961113011520950178659775165163852286618039869254370073916964006902109396603292530667649343872818035351870718235737978069410414058224900062988361593546085638282432407020114786388540027936802339504190329904331374250936123792575038359282307209354631340176710545157328796170902842041147987758749110520085384422062088563566553248840733708246458704902509873523799217180619485933988195974972117315129275272530785304788942908596038029157637545922180329432017939905456948079016186850245897522693988892778783016077523152070431247588202765367053872237447876650406701120842058784130102514296172679415638527451015323028270235243328228473591338620784645680660751840203351011081596198325277867156753862331034864976419815657235891123692282370837500817116251689326597828652543302442736876841611284002203220351852799380379004863376541629919525821826691963621967147631025690059023582087606256900236474994675636281089752653781620298821998162293470739396654394023740958841314196036595700436364834896259052381271877665212842779469232435453242829858860491228566683614279927067528234176387679963948924697825614448927547845137897619446983929296567643963879955480504508978893134440797567460211660200536004814510049031354347308382438460695055836572777650603639310517975915964444352137713458693554835166503648594269934806369380500304167848474628632080546289452194338744048605701178481668427098994868465042247157071886704917957986990672888390283974985157456254359166312486092708981289121772627817818185686370759805401968930513617933139037687207835845582435368638557486364513704017186359239120690502497462259862416765147342584121861219222395697559778976923935805029933809941500107862062803954438460045812540546829880648516322730490582973329139806154744744126800171200511854855918505205222237861432189303681612289706508695864030935424939399470510213927451035424990262228984615378529443171499326908920958181932271587159524990883833134212883134790486102259133252803500577979392418987367436335066466309984197316663748824042516850175297411031684429090576937501825590303990720213015208934331524615693618919338076008045453123460459438701969069427184416609407966759540995642874645548257715557268290622329155892350507328772472757374123368362331695535824443604377631951796783914933400217765316178580464957826509138291231527470764338614937509162551651958304720797151615591013368751297513006017034988503589217313958771227027868287908241216230613328974586199872957826079049873620480757832304093231485648186259004140060957571356297081322908421711697215763937892185211091285213351514500320117792441669726748024462115048674662735187307210882907699920908533220476171437155983631519164661368614320170901120504996485302933545875611326452113038611358967312715032976513944486307129696225799165594187943595819492964363538510950763090762216175519008374097023623343585280720782718348256011878809835022166156179282271768245793756344573833815717468188596906205530299486176400163199488772457711285830893224219899251818508880980220044647686534126143584454488154690878940729235763427649335804554051108599149095473095589278781948297417096123974373335478090160054861702737038038773634798558515912524870370970196950217746624868695629569322916433345966326986446886749546756640992567710924687181849339596977359416643734829025561436024237066048108232369119063652294042795854804757272133351700293767100996439397125618181301630435723603507804692670238677860571732316410994637485790161103875180239250300302506892994263189654909102359841589991638439989647335993160366414072982184975942776592033630844414695184399367988204270418821185821506108100733714964267491964681938849622581181591656255903695786918992617811261209069342352640971500797617487966926133990744010202531511315524985079577573019034459317565733230883931266148287357135324963085320234406371746935914077675057918951529699318783896954037864838788564871744726527103022451588722881937858130184170155506199765905229554478142898085800346341251835889694266940756073799826374579709050186170049684143501569980418819992171419051340840947765931503423549143508287590055343057058943187057433139343027921217899590360391690443941934912898188054359674392403080173747834013351038358213415676826706784111915885461881315927705607453688466596343144009837230096794731348888212251805812780395330394141488925265751533902278501767217653478189003328031252554258356079494200357490407585877862169632885479524611778001170908869004217495590513314974557438281022325040561502974348795868388976623205529512157890478921087988291003435272671855808898272013408123561572545576321966973391281762771291163357902891933181863804337597585207034224444108831965844726511412092047247952783237987562597242492699637592199949893191233211443964377077876125369750215885950233036206234473952825084289734739525085694336332201324150325339273012145350346211871203286524289903582088296898097727126697858222570385299310750724746478035110224118754518708093070417604245738186675931420203139058083822140000687236193279759930333178960570377224486220892559385834054690312071472872807277909436584895369666785627776411748480335641435542434176353120614090328936044519126473622014338646202169647114592597972423677510584797293591835454625122055471080005176581333652483718228716756259136795281725780956714113041385367201204400959368283362831867629742266330659715081269517453298697865673995030527381953150262397503939379800458132576451065974711644204199489690340003739654011821747084655912273001121727460337959486039323750139272317000002577558029244081046710216888890677293728904383692973305408087154142770817697632670627945109573935866813592260521230741722601745388204605455024335464419348419960063180528993326312038730905606761203872575167180081191708048004859938536093877565988076671735471627822502659936732929603051377450058914698171522437908194317314369000143100911315698352605963440184111225455868754711293088094214291308116595302529640948787535945061139709429634941695267096584235814691553859921735853735132114448322425166128345516970297009946698059307827912604548106842840146525961308780258722118226132725405186594112022621720636654289268013362174622905158699648527716481098408817597057877634077902109355437204984879656196730920853039321174466692476376210095327325990104801619828516609832335846549227531329043263295472782951941881955645888672470739435164811531810617382837425316034703622540035348037833570565582974464294912055511756569069263073454119763349523737441677512489134539441055170054857975981015477543008911514494175412728769029308702006393640388589737165222880853548164585363219076591474265615057031891005226985974083547438481298769938840951647314345661101326304583674007213464325550759111944745114656944355432319435890274152112877976769011840829226850940162524811020237489899128507860857383165095490715351400330583410575305704615731961844172883534539004356802642130306232375987343730317732839855472352439533878840338363982516250040824493030744710834130273307512918656731558084540616107498804197589354559564944312041874891757830739898912620494618580025817892528885459625383557329489539537530678227115838160825862446275527151533080803549479277200734044272546210044463784158528512104132862902067158800281509995853203689296607780229304051837956012843503691937558997557274926697323896681383800810478698204199156218601397429287653544162760805431684594077280852496125127423395574644976801097761957321740269932592760669450396878488446624939983238449467116031185328280463778292622446965018957855053954640145730987486304805875268262828415672824678250728329930673774393714258778612238297157104949104888467416593699544657746321100862742453502840809024803160899770055055865747666946641870031755674811926127105064372895688557983452892072024450062883505773969543845798224213511892392505646914432360062567646207741216970691489037575548552051186875236541908150670253301626971022413511721939292270072051343644205892662114775860676784526741253998738718277239659492432812579286703457778891512723335003308981645237309910751528986494079047598978035007597515857155385254990423100575897780107702238658145719084970881632259221585156395716520491968195972835767753212521055313804153179100237023462782432626045901999315852253688451029029953417018204195041009340686661810996245277788342427100711193819061008791557490741086550166953439424477779960272783407122472528555099285770668383716777295720577202597137338239921301304607342341217524165284875044991878295629629144090790665017512867501189449890237907466269336875479751812150983524230549705608143853077748912219523831384589998884674970112721274910190296964541068776395102739997542762513483632086012051680336827488440834692397841251139017413292623772115428926863787158935163236885087632436182195422247757583305997724871099887781487210004241503539406145577714353423908886591136821868495686332093967528845682830270398320235552229544265369258947518245412332736014946185147252229510173048022352607771618217181141045682911881277739340474232848561177857664762436520266129591452744283986953557364665750780864271928029809914202219831541153393789882419497846282714057300053728039801985370692719575879717247138134155388834001597402298148149489938592488222379530734278712026210965027242379854509385490778914651257189426304525003448122647140774974525474858152045401948491283534613483216724905423935275503186913513896460388296555812605421755812794508181011033631690323885866113987095247275008502759104430261584289364648392230966849964793439170996701277415200441891152481983988200870989573882778060157817736793692252763495475159281341161969109125355875203733003694838144171831915476748892743259708570544095898539508781901813581662863343670984038502084052539366954535014627515376550302885196714739691547433158902849592556941172044102951020085070406083393330310026420066155690480976770158212868815696619062167437397865309738589323909992261218442516199004060458776443725502594284281812189780995360350712739307536748521824406244945257938122506442069596122784804940476133817262676526994175372672492451962179538676495631360756441693784821646773279165270692486749273310722186848891834884071195881011569335659872435304797114138440847068800571773455808362589815609921855410948074339918472579499321555536451571495169418898092550149994240405480905686544759326610973401345473784404998411787456422145988538486219415765640402910902377828132394785350159564867252187956849878927121203207782040349068144840797571044862538628259081070949520371815456084210858208060713477694831425986283642298571721702845873463245810822781477570270118421297321183805847211814265725740201889980301682990893606508787489530805400070994368087040682730640209376186219892245791336903464038111198100384043129615321470466531899817118515034246706125644883122626007883758536237463026705018579952965488800280534708926202049476285027660069297459735598860147148244881247649670746669266590524735168893945236211647811772700569039636387936348312838088412081103988697801865442335687124316263306612912183823480155593203697145299840612404650721468415238752073137759050186127284483735838966217879685383276437852361373072904158971173663823405260894290405648142537846255549749177055276804039657139632256276286819518660173399098786384391461931695485843695254585245900713144033176215941610753717529128733408890280561089076141664014508962525071040281971681598317973563305711990722761947024545666726522517550116805699159811696613387553054616297980061408900883744061244334158433438805619575268512044868303299349648753780170562955748943786889816691086425749676869527086192664844024371068273561610472054583299556445601804968740573323607505536697508338753157756513837059842069690584623811133654979857247771407738753940029364533040056898329029960349736213447479105395239622345745427970076733982443919989575556667109935201001221139849218498801507411585670009676384655783619821140577060056704166334155208103341220092372167496042119814134100770629377844105962130003343064890016989720205865187988848163959435331128294388867974438782480764516392725261079314917871650259880930263699969818320482457885036233338408176384416301233106946665704567983382178823011071193970301415570856045659940841363961237607759994701369660896740545090169541503733976125936780327687014595598152953252942915620324802510949308413619156068784594721927866083000344212245990913042658364339974493033008104188303574784840778145609716212395037599601640749645118348132508071921809669682255176071255828002184810582061664194521736400792248327348625427306814683872705725085024694122689187070667631601947410396653972742651125804007628762996325555288679772688295467120536406521784377560175831979021540248996808367148840798353102926215939183817127903059473595463735003098662071816535684097242762417214925626884803837186709947041608497679037169391587064485318100785510033938237701929952045733453948610685316890325922865464923958709920818239144543207362847234118846261716429601213980382156559891450253262230940182221377807690073527713129283779803002973859892584800015761077902908488082379086889338258470710568730385107891080217197949933355149838271702829108952238629612179439241053301232870231392949649890810033013415711704824839085145129380583566213599254112443455116431481862240811614936473561038056941009873602409894573576927758411497875959587304790512456307644090874735943494179307967376970055820399741389050317655062353003146480148253310252847563001826917016593449068169480786428195239105753606596513206304110088398842130460113936258475727429906754006164317135285175210890892787832602489666022240649100337192245953913626819851415537371786251756984661584516269952457324193913411096104132464044691890249345875539885142749810424861490940779115409930361007692592042983485762286814801592130373360613283019184692077546711808957112831933582912248120244762837793987791506126666236243300576337114958891477091509122703876888133998796590645948670268737368526813950995279047396843668580844084700925220097036218572389329468044939645636430792527630722652047904914840748465776023372999717526888834245544202493562941238206434902076112500284949917929551697619279694954056058783341005517542902901077878973197073888959694629361030508918832175170700800807765439580132077351599108736687714110285104339129640186623893923367190421333723407294515826807828057046051237008475468335626382684372532041602430818512583760484524186150970079522964687039914215983994866829839583718343653768879038528562408761902602295795453079600669786231013231410340606000430199190713171879572833496532934277695496239596980869025040086003072125598623545116850950676619817813167009455507795594564272888256760150157415472126189441963111782883223423079153455290191193074387485834928879034446983606590903225784193432354133450802551631728326090231184670625671275076652128502202658637692107540242356889433640826676098052996461011778834629756464728533732420677428809893697994650034382413462539263908223796706455039279393045491871668294519956432830957630205761857186884871826130885058893068656213853513594596925252015448954104849288934289608375024984772530147048596530221228832947510672086254243964478004321469401441669384562238246657888086197319079144568808909473010975459446187081657479498515085001739541604297478562717410595280073862898276907280226721196492184208415657049091494607083252783641620416882235656550669089311160635344581876277998172051973180718460256953409195330887886350898315688289749983120220412732011840929634035915975830730950605289382342967448163333138340200216275808290641531275645497026441139668602424865978499832544115104552051143948696402746399929556614292860382775830693494544280634965618923281225380258418746395374572983276542395636913991985250127350466050971698451136247126892776231535571380391847265887168492028486119049502027048582583305602985298407513180805675034662340385856941782766945262100826687224873245896802904017769631334829652545557589376127603565281475896702888590831809139916528116033349556126501278098226025170198936257645408249691232391191155466984004414047978822152425817092787719142317436332037020746186372523014507025548189160976322091461880406379426575318068553419496708635068088065106426740409202389771711919287156141097821631458055961388217695978831275084787366262962130553332590317549903207048448396237475470666427634893691014520675404918964653448868300981401659603596986205976241218341815167848768833554431830793874581066024999545374705104639487903642415909274495091054677888813864679274837933276704719643563297364218697360853407835802098105282338804872543125366777092786746949247719852678167074865775542423952776034760953170818355969372405719069640470367150191425714072391839493971190126319666434686363319553690366818000991474610846228205394514385054888368101718233712671471928608161115956442597174810484110827754999904983356776837834731048408257355649503666268463328384647360662598118389379374072438505239096060819121895311420629884800405838974116751180870570785893905317061483867311429471911651136678817640733937679424479856429345718955140394353344566350935900920428091898721784161006062017144919223201716036955402572536681824104156057080607730028087444441748190390308525104302325460966815088723144110114194382587735622362185580620635737511600082997536127146596518657798795485638452277554713264989411767069709717710332705088591647212672628593519696452445057239383109213057784485608949865004966239423074678903516727890464873356251129521094889745377221412929193162029493062766251442950064990466973587248358535337713941476688433655957346785836749889394577299274911198222677466026237165437302164613504335251968667666991297114119834959099223976610690758659949834479229292638607529584743404028925472489360857980723752690571579094155787170772019152923490229500857085539884485191893634179433386657380322876312730036955096636697508625853279638987779106449216076884819808986558537283778830473379604450633920231306153196691632460106066567754656639270449334652319856489090272121250360376153271001618790075002286072444255032716569603730923684705266842196150862670615477101405755889841999838857375183319985634651273572519840105342637861550442310364030822070600001236912776505523184854880310682930800348403429010727318811750485950089569268703812069447527636808224228878482234443510456739977067602667133674872559450104315818767123963925595279498691917425794323569668839650947067800076318563905822505247154502405950486239204775437400379231949781883389449233994148680616245968793141930297999247417824955759259109593821320461947642065847021851703163573664627345066141309976641892234050340442652705349267970842969345694631569416364608917966875550547030788842007462049460950956959454043544483774321164651906813626758919961248941699847193782855410865726508848063371113398105305102452459761895978761220467824045563730170575106024658377736553025722148915670015136035238827571077015034836925699451052340391187579623073047056719621517156975266611227629419846591598771667531188978962154856784296867846095654928533251526660940883432982870226737788398291354385418987746206776211860015816298762708766611771039445729577036370487008923691360902186429221790345519880565961656382901613953136183264029131146365406840966412383056426530235652607817487011101738368130300025829450260624715636010520812351175342440576792982007256394495380698310355418040628086711578780557578430966063476477165757920265261346867657207311887979066678645884352042542953484023072034949316398368202592678758363255122048531785104334866831363991698388893960175687117300910186071761713030765063433414371965022062740055188971529832200208713675282326786862308782988590578032366963615702645655166941943156550083252434957566498832793563154247362835430431081958851067233700129913854835747450150811108640062359680046421689112172090245412806454621276331870442633757424505527277378728979921409585949681579461910656512577023830484546523704106498987835698258699234886413642454427326457980774124006541972080438967366049398658209016665603877956019239038933442496282590886660749556217098374612233852905850603814876251486067810905609830742282621913691321907228782356119134835204183940404975914750341046182392454232484437552898482015951464207783082769005892418045982323021096249760139018615910373769517409879982258397732440777066350602926116325237401214504501711993018864306390369587618207897803257929406788278737050930491433373427885435386217479018488348723002395973442663259817841387418672659329727435565683995422452479195609770638236998743069086818500392595959600673192636067732909614831617584960732832866024289166463744428485384149716917885566995581856847731874301695627601714057340576004284798665415965294987928145444489955234554868069766940219791987061894889370879072930389845600695870415025751675160347093403910969373601950187103826761781545631811357838192127760920945951118554465105727718527336594348741819656777115605121625328500902827608208361796417899939479163144078707848510884134978159013026510202633351932056802131714507047808207116835444790370247105084437190097322285163679821532299793062586938468783108528852745327399949598264728539973741757061717664509993403804559067400021204692253470967342649134565383542553878464658117451924343828578620247237059453011883186932867785113522469347787176672524871894950297969983783868441599769214203998102572150477872592193241135283978829562421259111937283929208735621238302283774466243767167385077192401971861950312188114470853398923904735676259406355678802035661387507244874985846134231334541061839256693259840909600896410012789439496039757302653838978357900506724372778929653993060993843412493320165190607170930538110941166613114601363444011774040451739865396449661467719605711854884012659856343985077761075936620426622788315332374493195978228719850625097950975462594348204961980870441997922846513879444122227913088332502674286739870764975931324006479077463977544777405762324240313755529616804002084695097875010370473648857877923399778906375118194500265615860525254697986479538520233174194245821546119520828483599744226840861126892325529132946348718039807236227511442235862262750843329085221659073449478630747467241098989994116359442222091420433610642928984051886108821890259469849470726935413025228390349977481937508973447551372828691662378324997669978007489200673558686828381997163093734860184796181993903370884479434560160903508827082073037512466913901536057070565432802308848964673309355873178064290511232546290239018727702556187493023008014275596632516037858190295325713112885913137497357436888472930311018216481928485820526962947084024111083621182151433534208727383633043903135172346020055663707691166994415608448735714065259498235701091779749341524381796433734845191160778982364650789482732071739632822502350306490478732150291920477081095559803279049098529231336469686041676756531380192027249288954657597119601001503201921465355788024724699660914719243278661842785898149220794205315199100334946169357495906548150094110295611705318799353020017978640665794962120669621609832119408746835106565394904910157565742806855344038063584663140677031190199926796746366513281611755325863140520067242238253128095145491891889553963779018547461847662557898206125482395847551194786139641236756580389007828471219394632770220358005949677284398801546841265836160210136616095709918422861840552106044689826115078589059591499981136274804908084783328712747632528145850841946653606531543130398931395048882892224230964301050240408056475393457526850861373453030161840237681825294935194455591498791311767670457821451838426352503568896261587749026622551360482426051147039769144120990905996896074722095464151302138660933348286538748993696451252825170679427883407694711975489503536168460320818158569776357812166764982451397789726102929433603811108088241597485986686095333809772168801872756316130177918849014354038146565922235723517643437710829528009564034376992339333757062374454491286831100582698674899686909576286206731355128022923376300019585433397792699504181707889367523702928798859694998728350281609888288490140492983038296071181655417333633263233765319134232474734633838731334795122971444750149770120795371931082985257925688894387721398939058773613459281675531723623653758104109611548993356938285331207210858039009915794648056950529233565018781944325589184306450692579872067392669316126607127086844636462911691392443127173933837412106748480033438701099498451012585235818564208867551797731789520965279407434170950785486077691402344297531887313705853972652100540896711463260425909879749821710901995820291663768641822317986829244708256292821781027671964771756469112136080306292714351583118473853183672179150794035704731385808510152009663783941172944107069761578191614950487725962334163181666534736534236203209413571040395743214292689809155352250090587019412945138076136776407030934325603804215553585598713358363855682691763400122571449912652174211697019469974748085243225119365364073205797357008597663327579028006453042705709734705697997772753178058749628947105865752408781696669062238839319400971923696325292378054365522875704687705126745389325220347826605259306367720502304055695333634228300287857000319223082459318682414839777012067128694514551528619472552204883462233436801969220026306075710391900657250996334384816334261444138458983957423500753578457546382788387275468540681271283042554719213514606864139013429273588489239009073343209946332146035964930354261444697090281099611508575469839491779211222000826171600779724997217086724673653654161883976583380507879947736318094444152658385343843103642029100399662849211144515042623340399245803132483552938708954390207642027434036806160678971251447834985236742937820808496710661728289539258564713765501254063674714333337737651968269500718598166047128087932602744077811799223638218389219576971519849659814456865556012659669322715621535302027363486087067435914729012946013584351483990404022897630025042310940325315760818385712281994858625769323077502837703858523509143936135793678222373896769525811358482775114508691748855666085596876766460928904616285882293640834976758871522035434579018321063601761723530429006387831413393637674630471888148436307694944481025872591331343260599560772681950713041814463097133286155647926720699800016370950545944257719569308241198439345753485135239003060520009478266043975943269448580748254194229361984152539971596316023716051208346283675318188878285206892675226010540433332077791874508694174306119072080577338668678953237414891217414127446725208338727292612436657726504301444048049403825278577755262100009546575191045508569650409960931566706492321125319688421448051516640407883904580932904729213163741593007741275756333217485749600524874915875858645260984906466031505259564597113554971039200644695430200958527902243948402867387881193027439105005716585297052662771737105326602141908682132057487649550960986108734489642391533716608661179900598378688233170411065215371823195934136910966447747181882335933463711719585587284504966203349057471093564188381716122172294672670046563029087323070559972998550976749873806114376323712882840419158609495424047756556017943608552847988275308419341268145796947519906016316250415462390292113951137266352328134707900980125332750180217858876297101435137327655488088171359736086164279308459310979847059551910371658964015260715115257148806698558411740020249823120030655847482575285116696981588946412537647354632910097278314645604981404249139665316319731487028784363352528145932584268269516352239115694048254419029859566724959427246203262137428347019932425774760648563389243517540105586779546542322561108702251650178091957257567740616182476856785398766916541927620198911304042773628087331613555317565362879184828610889411045546018679278622216136394474920026447521355370016071394125813144014563108818722238543666980939404648819776707855631497372091888230343663608737913654664330849439977316161412904466096022813132400440058733295281224251472407302296853871115940440939256264718517014004215031440713905130628577943818214230964395520675948112737075896031927813309672400851568836152485171828555095013563902277264182057064109494510571772711508929269154439549537112886301638614448213331984260200311658198366630641695787352329681797408100111834645390543868395652819644752127670378291087330458699234265938621297432569676323221784264507026485663308333534885151793460112061794597716262369571192354094464614219976311091675609363378574462025667995403820007025162821708646563994529768243763186587935893736941596993741112990121024934995709607265650644181027018845635400763524157804739087433291092755484046453707387627668895533266150486779614834636798555021686168246236887491967125848061313758631240398857112577440781560404959289593149833032926074747952672362692433846823440945545991128923212160357393697423580602627542874692835371182140362070190208659439188304418829630718194168678297489111311482404186299422451494007854497329768942172109447851200680666527360180518594882909410666988672167420612974644884451259886022438719604656683475560872152202998288271126822024096193345757346085887700913147467897108294715150298525995600979210728092956094412870769238480492155786924517073456374880262632866045194448226649826646973063607735932753071704237842057602205230969958006284343768467268198386801298020653493661948931207615848251701316068336701372705849453016248169745362117090288376217969552072639896068156580838146229637476767042304354894452454350263241831967329997911508791443110532975577362640627851278925285248475559867161575072033709983807983308659608621002836907480573460739738111132216373426630923090295478803601284667946781180905176458903262384975817903681458409781252153987531956037486333835691081158422720541889017441250869512362482157371124727324475827464212322728593830515849586972090294875492787544124254815397006071252787239291046304284162308956680076715484378569428859917707999359177226116777547501683172802899823454131533121101713275797127183173322569886523795781398581872481629559340038538910121790704357992046953895178676670761849484609893556803486081021390809943643146913494770323630672602385401133594020196765893003059004640817028871803629717591112882783606494685971760364740413898566828905077610995204464411251642739206969874716399559326208472393639723887978030676066748421896094681161550601817506524993778289716496522295931807032561188902005639180524645632334934351225650033695396964960598619395791448629267532601511780141904685481124134145129318066193600592598354348771329955559907142694872797888648473530239049156532870686363116027762388142879968152938781271616246206516427040463590072021276851301349947422888719111899764779647947118289736048924127365585400967682962105457885901902018576712030443321188048337073784006593274025099732531709293637739606970461342779414865826724008953666581551434502352452815822633091508357059614490885021660462296794439107441901332823343642527952540467265828744512128519516216306962545736346581108183067689239980181631699706020604382070463980487897059874072477280868961733898400369004011436984467156400334059316335227966993287177199988528852541976708338906381521859857468398117399003028656804916987038358556856233368913089729011157004922704355842222617999818730388404970804125653870314709420135015582922762583143805119140100261998926891966255017727433013922979185119088632633618162066845073768679324450633096756624311034112537202647945903656294589502627443384922874773648247404662064733907271296240716258740253548418341630026096165039333808604421137741630878584099426410851912599158772131865552353345644126342891659799362234085867917673154660020321660049020794214688149231052019379366104167640658418979569390348137973489042077756990282782840398092414509628915359128069385912591974245171668938041597087194818572540072557793146334733593053409686195975816344076981607873620488194995034114912855926602583082575347244212670850727276893350276775051553744972127995837869349884344569959760878813593823643125262301328128958738416359510422394128041225466997287721897031472616265230944558255482457664499231362626989546569938942360172765202335186706896006882632548253257031148825954192939936257504955789999277306368533645248022353816334990339831176039463055871927871287256138559253337197340449563484757836733958331063025514429719159322068697332028871798913075238658426929189327207388326044746687709506084687912020687395342964817701860846617536677644994359619814402542297345913888540197057089506376781147554853386773145612866492579035704093121761889957026670151534627055763511041128321491696684077725109078962742203844809591694859683399403018359830454921501416036258329120877490328560143973523048177243882530809422950607625484592442050989036704801592841279739559940854352654217324792503592322200746471045890839321900800446771030790364560147537622512597294724553876250271395914892516729967436745273601114238979308832881641152490168036110427549065197140193109527602886706485571115617834503805818973752344174788791536776090827464790364695280432423216592031263929759361367006145590612217015153402994011433115781328732624604176129718664534740309399211546345607455875118982271582897153619456139614757062726857869752266462870045881504205506622242148996490844967846140439097070420599101919392206161416604444336936324215230506062513252594870261429289821076415274714707973944255360470091703774784713128093184154014519346165137127096453093723965366508818378335168628385969981472294791727137589313100346719730710985069939937085857281524389894356912758389313540463524800726187412382397777307078587896650449456951501371457758252744575124302493334250479223120685637059328830477406932506309476977320337401209930970797288466010917476956044083063903685716852451651734386788183433374660674583057030093863644565885402172051979356116949783487484907698524509411962873068197525348344175259924977323461861359418691415698389249152821886347192420216338230911134595596669414516743131948495566368925857379865371067659686841226439928780734818523317140990125233759179698325668096301487916017297718935856720730492318801147528389772204729059177337949962079124134334434257116405288370649276317106744731763381036822719071614681814648894622967505250951319527318242362386848730618746986121748518611937754672555841900557134290549927976885809467623476052047763947253630440713496904563513531484089517362616041659074422772992447804597249115935099721779079279150340368121049753578641574394134714112550634508136964127809004839277568143654306487317934100880164048207623845415142663569160051114327359957628009512704609811371910901090283863767368555723229663503589999512174389448020936425741263342795066563378643323378035843175615647952823477817983722465327605275088414559825489636178455721615875806341141956198457422035054715093159225554258643963563203172388779631313107809177330543615492209419632808434127166401730138323363822763145695454127989745583186944177270194699509933138959845979013072817939314163388578168037040302988898823655061780199445501572668761378072082238017476180751735823762946409115334568920177166304355762002039111737426539834882747171529505164386684075540179213654674121561836107557364802512765040227678451477014992288257948058768030680841746891961865296520414065186156042603003419776174310288982372232237866543922054589696061693009301061476720452811863895570472560168074863169631288111696143243654524145409925875497408605054825423916857932320141386557786985811623644537368655455534351530256587214355897648800162019491234816764325023079815744975051232113406956915589730687145026508301395960916813018527813908534259535168443211631706965864806436520533603396430975109790203855855251202746039745538278697372194980453532491382754302316812823647937239186938483426961507628617054695253874003364719746615556661354716804216543881942017525881838365075103853916120820850313065175090722871971797046604259872240521882673818393463449709896055355592228515108516994273118091509343282651836375958475780845826346541445405102035374291551906081465090589347225013881100194360424259190148875642956845039247117826582517722936614334071586319516172944552617460848057719011343968435368003011212459852549740436706677272625225167069189057778012088109988113372579393691204042936634063624042221500120793883727582812496967152370877537937146421531983346751660004993554893980787551765376082537754340848390185475236695429138857355171146424528963853889963555589523123834063542162434157360521158408089860792384022470251271320689904598892361980942663782533561661759374535060959130452605870832516543802101701982384599072005867278496803813677572909676890071982448827428568060559827035109381720894765643277301403582918010341026841182205031224995534414910677604810456633072279061569009610520087406530675399694436973978357173208455056605832791914189827678727644597629341902140291486423283046871412129860369784392357438767264077751701984221130739967792522757033920352806030143870456109187196447252025565461220698121717401212419319644117991230980579263159247089232343547789035586610031629003961590058478380897475388323179185480593355837029588205753839192443121496783562020581742316526243041447008367738971463741430033754954104402346333319613217188939688559269342698441015153037183576227414138699934914526506751958572297773214640921133084998714296404844988924803026738241671751824891914185597553005873926076419142875804010552174145873945605629777573575520201189701029050241547910078955915984200353272210683438949411020812651327033196383409573057418468141713163102681445431764814372698658033387495587698347709953923985761311364959390403202113323878588373510578138198174957930270658273755976719725314190352979203592601642973518855948545583942333272030321577183838686439833143590894041152582259147521933735177080201667177051655374953115702718534383505520016040315314057527444021484469590293988070386624884003081329558443026615786871821372649143239202488410496724549003814624004160304566306468959481815288074195221006388774156978642581145943585350289747511390914024743374840683564995456541170093355722008789478320496773222520239809926640258471837141027800129659079828009854637234086587467300753042074408513088385656693623651628835311575345165989666303033746164094757255902351581013131403853267448646913982489935008977836004641657507098119832560038896502759504214916561177646082402772088984230138623404507547942443546214425153278708091270576458571996735326248530471107061298236165270176852133410547603105064059061137764083050806924183526343380157496963826238656866390156950173067943736350212483089983842172835223977074178519085942557275183465313609496189091884795662875725987920427672214372466825117979697789456865724195741564588666463877086633202618464780665835667780976267316555329672381551971490869004971938312422407680387205269157456029781089038226589457249199106741317233823605110970547832144717733669527175006002781386656378215187397587439162868359642164581979796958483074967003811240194387724655961442737178909614869378012282149533890633335228574268576464018892034890018943267513453040219074915098665784096026757553920399419255551348462278701452236636150690513533879400541847220431642250732925490314595598376141076704818756871866832188165528513769716913654140651196252228958503058536855257737253246199814782953125986770146309764892847307203165926666227602432778653485251330101888177716732699871411053757056199259890490462881193821274847420946954963475239136707538541580384435011449126102780224458619817611955247472820536331877099948161225052758387612184271244795405139970868164702798636462276385046707843721546541598432875972210477062961118977212736545281210413954761166474248852075936802452829721337869046736104953928940112703485639326316469950652366574019548145865979306048704017996079877277195817799052533861735795530299024399366295423055444599859192445526407680396894706360037885963093895062171229087247154726374823080262845650614311338225022252145856718722887337152279932903623710945014801170991545631002879247599281694819001400019792638798592966242967888783623190508610515369832098314495828550896873792356664164838142759333774943350591205247432341636446893210351349690738714300969871109295561382881412113627862784790674296608894379207947412981848728490491973719750890654021342289028356425459853169018147380956895657380489625409988215142632019612537560539518266580492631322735552320522267591698553106707521172420661745891488802682653138822364863602999916687140501384621738546933938475723611201857599945376926926621510111745170441924250018979238662997514265374373449599676797527124175184310311290437758479843600746704060661324529016612660861327027340291330529065872085090474518870809029093235770277384861887191622193410567335922123396609735286078363972071826822999205040325977500979278225579399659942772120246409730167591035131395939738542950525787278910288988849683249255204259800839668906979243251159910028398111544560480800838641562191604299487953680146757366594654748189542369600993025319327137301633181466082614505296348224032791530635343609663898374025076432640800228604825529205820682882018326657575979313417316238666940957868471318219752307025065160772864610129839094339715616723630605599592190514994365009551896428350924455941776365713477236424576802188972640316760357745962580835705822779990424325964696746291358670640736928154547234663349656460484254479058162581973764740388166424173587303030405517244530480837448839362827727278851235813607497728643095241449902887122010150926186402129222211660466929708394003377725764327504353932491511366592187255777754947583726505207338570970853065636489439826686667431613923282379685494271017151389559033354608713609049104638305816654756037433397927935524643773482297848500356501282308658704290439127340586263593245351220214219621612587393752840526438736416089013384743228546553010084453459449420721038574920870678942336372842113943427790469036417877900262121706055794243808296392381460254517172497244253278066846687272396625226904660401991132385302238284321996087485745440736553338407686941977480573160931856805340142284971630422439247479244835241547749639218713162377123451379967236557196489869518978142815143508783144060290704581925275362287003824061545791569245949125406463946494200590757626136602572475727909710264207827563922154118340749342250517459118953857003702764366519193537393365440975941379433504423835870682378496072550602310665734239734976071560103879579105312051062316421166654475518620306201168511487483092429461066268120768405132697224804418195214382431993932381798124893003729799918002756464062846345099199025862652798879336895300640862102271312894418857439358378812328472162720169640973446372193112782237367690308406844840421432595228372811958369025923255887579962050685347087302250152941682683116561580556099940162347833383809834821110971947613577624488072913612820977476606840734027804898640849792810089463992493852660770426587125975910674532405597238934354919842593098961350856953705853932511283183250804923118547131083333024523320099329146083475507631209712670407212916250882804821584086255701631317000407110898398659733429482099555049524515672634043065941018071169343246895593184500095054215544958446903048143992320926278023928716001167005975420377810590445732716422254561097511475222585493357429508777726075719846895327370228672297476070814725649867648933286189264791287659447091729700009657809601522686386340462210449219894025985377986611726906067345446334922977400070683797984428888903601793777679366518851104904447304809063828992308593125828005238339268396217224968216977807830782202316904755867485903573552387895511825026917215914697571548412837249905368863109841663272156111747749721178886698973158808743946105801841063655932813579933834458128848783498252876015580829767456975483456904380438050278262970332370731237050380908227424759250906287775814715956767179979735260438020705016232545027961613132291302845155693278574872707860543984716865504823811728830777741810720364596839204162858830677135320153188542808197098086583454776718804879540754713561053584780646402820681376096680604191627885128017840133845718256281803873967903848356848354417583541462798451938963856448287410803490665608661602831768289699094672565532045975068674678984070483515971369521998848669529043687956347300086814073189643034869370056285884680462694289019409494024623714640866274266123050048732848847230025704725841296767477327765565181281717326976136513248847307689192342928693513110559149828756756459434795482457037104900171181258542284344062236590677414790376157734286027087274264196768659080590849507449641418894491129235253443734474052484735025279434903522519786051853816080429833455165891786971811341152725958379103708015734068602410011964399355758760896652688359657086092021681010224263610349943835674305792635837434492539587228975060033959550618966676590732068277165475834018741444825813633917323554700052026551938812695881440442630317533352018365379066587582098898231490763482371912621752495462735022352843663729038818117575477691714960054020933042200519146793884714279507842382929772477946835362251613638524079627679083774737601977606939400469201627932652913271677624713041357955171598483012772826194341935896681380086850430882185593682821077719609304020229797001968151638136170360616794440954506593786885377741312113322639697168933006814035558898309448360044527417608536489014856185378869617390821605248585776921455295526610329360905198410083812959349120308964533177642839719841590482772928493505381376313655618458559178677188037056208825624260424400455115235940527093403790156727710716849211384963906745875859765047151437532171953262428074172924881437298280467082377862167550944138193638796859061320141305732949252393103302983993175634110797550231372071779440246455640304577255811472534041285180826819291056196260364948727141642393039408456828322356654451457478521082592040507071096986185098217378864894950784992601016237093107249473222729292190090833028784076484321465543328573117157129008257437973011754108547802790196631029033019955999280579809776055721912879261618055764409115305962432299135478261415032073650155806943800785775038961910434053866134868477218945173583226828073742534687557842727598421616752141353323993375409228384194987675562935420307850488956588158223127498242784743646406231807209312196672137226901509265361063867532512129130641856144788896799668150229211942509934230656556690502314798943952409010141091710023309178869492994637610049309240878150348092828210280975998984139095611335350112833745065353125649612210985659316309325435180350612278144778445794305628330989897364569153245492414364438544764110238412299409136238677365994374752713141122103866163180662405788860733353484423756453768672487896823768203797109039225855995140117122702612324082627591774265292705209512741985092068326623238989475550306376691349477411210305754209851867409281313941795452174034097402816106155491161065145020179042105783921221961435473879687534030292132257926763843291105841804371185471224168164627378801509511793212438458557140562997852823615411698968945593649341389703789215063242697748739583495385774773053594112218188720550865250365339941942743179668499650960877545968018050414438504342279547249997084664975225581347567541526164717058674006292928020808096694066567485969293845417963853037131046148926955867219532402239162886239423948345663422169372343636850784780532207304411846737668634806946855365091723101146070303142662037718617041289685986151379211000813868671354677169999368044646856909900421999563576212964987565565854232770304992665306322828148401342783538475855615419443365090330787185531299032416628265842561875999953139804090590585422008772394662957668810891305608652543495235995496080855356327965056646223097502103037131282836647587497697021171045374570895142930974905589378833203126854522956639043264536087558065415708624667839966578106504872225223965840591676017756795788697560255573911683955885818585669970331343998732611484763765350030556671214522833881318629603995121007979654067692798065279711589685121190241057857353024720495675333771856519863574533184714768661126583037442419856843695634164838072327402485233278230312406426382664691425801627279330914051267655010188119628766234542119062010683525800562089512147330379678219618797452888010002405184297165434722577989435299612371416131983124516724504606308254001435401296442110551855583023266042946589061639844945389155933508167869494805552527831564879627342765720796694778159836031154957468829850244989746347068838364867008699780554278176890496538876028680498044001100723504430934999057589022446125162481162781639620964628958330008425437601837668345726665977850241131329899911720332403814655046927040919861455156512150201279357746949709965876594427584375762664054103729689320307770751894591144056809645056870350621893368029454258779516155416353369932146360818159813960221257541202693426103581249079608977008416298069545971735023076548490875838471075825223032406330782278186718270803425663644777283475189330853876686987638689847261731288399418419031391498719582469618866130842680859469397408507714455376592753581368295103228787645384624235150114082031454185018489321715789393000092365763706188834301295091510103192852295825881831787842782295221251485004118167497576983728254768250387772141967810998657228280756462475958963606418669496709182712946026262484016575784373257468147643969318046599361561518010467096684810312876893591370551599003162068960511491762091820863623794070463465121343319253079740356865015647998173525231218934554722667677558891626002666668344778752889885465434710510991887614309901296376053629293636286046823814054528336014643756250874423427823304418923714078407873746744664202954626440145581249218610966840111346243957244337902638429168266331632367555337188071800624699216592078748747669575237845669957489055993633759873247946667515604834801735895729384692775643855855452158599960465637571739386109354954935592630149767088563526605746544715382223957144130306024912281226379109509340748448997478084969405637870609992089472084502964808079371562686691931731791393575823523885797093190315738181354519265717263098771971167699396793869474528279836735321877994837770184578077208575252548819774476678067939464855056553301016821111083053581916494326606902656261726182369031188493433993416664396514029911473526932053874229259716751456868648653758551305180539762436010136224042386263310786754600194754190708876510809383983221849783342073002118058125126083511081831481592514021045058719752375003372709498335151004847707559253262691042331154318050507572255380586126438695558226405179007568745934101784800024112510688180847543865502294846882584059058702385365566342723893007350842698632396529873935942721187921251394286669325794322325737629841975337848107487701265132299394270632790987461380821885837413184496179929748894623471878026966932988670784574119151225408636527844757792442222030092835955419136485127241523260755500227657751180678557989358941248144267868245353027410475992345221133255371007204835513942080997709211440810321481489926297157033551292777229491066344825753289430685924598641062843225459233790094073607482123787908928520046204083143364595276858554848406442140424606306663920991870484843621909510814625267085844787259585563334413211074308818636384727773833931283157684911105078980789119638161692782321063355880201145320556123853437621780748755504883459133822954326178173941981220494720139201962908177094279877737132233142208004756009209913149683666586840757986330362581982460724302397165373839820566622102695047398478732079807066101802929506278372876790795661351489966141307420567056226377363632059324424313476651381931294634405352446811966926931525782090360389808094061586427902126260412185107592568153474184237786699604142694403607806528848918706531069559825212904438703593176539189745617194959467417521933581147083116789873604356947385222483567520392813256388777424230636033474663003084747574169749326352391681956844126411651069445230424384554136000160030077715801485094555497753583681246261070128638910263963696736781627665971787656683131741219392422440815386846245598952685805576729947900363138345044595528965708694613244589773259699998036901746875950183020613074661374345605296032198724485668383957092338483981441311115680048188148089395241636878131752067574727059421229084221662136100172457964042905503023581233628738781201760805089923120342805252018349714965800319659312473512353538390840527266396886213748126336897754683381953640454271158529558219165009564473580236629065797519302990710584171848622253508868207618756896435774362026500458630337159214305347452141200581638308350775430638129873613704010534013430251116435571741333277463044783772845481054955711610303309698767709219739043313826891868717424234094320331827827477820989779556351905010486943687788328189379936736213466101088760403085486175418934651933957658582770327253242053131478716365640646931024848002709996661575089698498525888686260979708427796655191135707952455662091140950700688540717441415805267313575126298616245575740886131621767516819898918673997049885007166791119215329166648562684113206044121065974114962481696430330061121800476253642503798091864124564742099422068392559008203496041588752706586107051798974549677444429333902799467660010673581450254109517704327730811803243639544885220485834247164644679320642416961565116321109861213625905491007132688848335347638708538994700278976006314108918925489187842474982427512092953259892386559020369000611858961192157808088626004338692934017049207664750389510204918853265547392772894329111233663262691202760196369281601207745058667342447010496191043220052527324574097162768626817242116801426105701144370247229872312234188615156496521869135884373456682034998055447186834257481743644269729069225228771155734233918910608767550993851802299778332767407860989948361774775502068403178242550121500606735814759074983507485596012438690117494677193362156178641434129661006539261853610469790203715748874120546452943740692410324302046488724265535696935713441186441948772383118683983375122721942167341847190111910523749117334430777792876226875543313750911515122165359628060347906933601237471415078194859009533733493799634393522797098459507471203229404841949910369700053679223702223601659965544454666833528730673984536845829263457059720110447900113789835653195172067803984711809214862531952315945204470281383212381747438006449056792749912140483401046913204697271863183261477466159863354413013446823005197595589756696152199580008891946181539022286350487472503523652099114480140825395674480359915451317800104437796220391768111228383635974955130774741943742253377058309666798079162467748007011605677349051693683732227153108420340782259493239920490726811882456143375370888624209938276103513336827381792366499028219806042336460154792622596948416943438478996673935860331827519536350592252689201871632980476491371702500353694217457193052005859262941893052921425052895393306208406005806822598122144889594311765007582587270702359741815702124230259529691665975736770845620589214510806717650040567816311256173730731692882501897034690516529665090305329963344842788616267697404684614390040579440776098570767748993633894157869978718832539249151171066109954353699544633270205262429647357432006447023422782395913418866951301143521878244831642085025851479906865428661078521820083625458441906513075435724207203448437277952042888119101655456892335450628147513023920301172402364677758795668593413800887356569834093410749300844175872133591801530436631578518176814335136556100615940877635407613198446629549958015061473769515614822939279076665614723323484547251865469031802373108915213046580757299057569269662332313908958797787377488545587896281941584602700572224419548157876565755387800095220939844784322343075021308543133873904757267291568496891521141381658255915684721447714040202139169748702931849511764877374062347914736017203250432892942592804998521376938980911527347257187346153079878321235438159559301132177311631098408027841963184009026576859466283247297128482065018670405047723022302667397732140038251908338274284234438462900857215213399536217879657626184605355586522969909421903908488152145962520016735478552674812416583126590969201136345037157455202793076726770569716324997102232149339704825849983489661738922867599918044298553770653325776030069263725862461015117279396397104923740410704587217972417258215328609158504030464725389832297701285414894247160099111129344337424658083941968475618801660953074904260500051558490556659640830802210330719965533053115204919095359012347436493926773339124836423146833247815517217370300883624960348516370410938708615113270788424710882924605048438450845675988439395725378130849984004931100802692752938673834569707891957463584363055531143044113244759605361569363371355302850731689420166429778849819879497580768118737977251187236949363912194651025582802109201207820476087589841208382637486613191281869817655189206518851503799448669965645159572059741776836006064996972280391452985042321253771156887892219898772655258111678106243859210421838831136295811708095394017980550912654351342617689713261226302653049422264082475545662346385736126625025200660803555056105960711844622722727899451808151805463419582330626810728471552853560228371107983544790163515484212153022069808619930982625659109910132302943398915754009859149007764918352751537180339692051539475140569324446623537013252648144911227543048233815611260313917684365925486898524891112263411327979524902896609414924014589670349568440807774774463832117145981406661891208118535256033418827017315673637441601837393321245691753325298632531734736544912403921724548757866540985184038604634409234323002461771452638575904601646361265944882097858147418226637240600057745748449507757014526589084287796683328273912331805644059430234544391708141869654278566353377645657013825235631760630493229601962675685013514541410535327169776180035758993787141473067857716542819901356303953387863737536904538406467404953161023000190776343927706859503263382035780029540347228488121873287756679720409188547446337838676770378370360051089740431911827755044322691680791115422327887073349678951353422319572026898212648325826287230648910585087666199401319806406321231196407533848214252706218255230761578540821740955758142578507897185613081494007405534894014942637294905175834175413861083252485930092815627847039671516596060507510375552155285166307404071629838233375015101015208597692792182059394519794786432696339141001256857260102977582471264839577292647390234602108949995382003614567103616924062783439139817640696058031719066215257334851739685564275442246518131294515076915110860513349804397888974481478655793558030151833710611322990539487442818133283353252250051410960494677546381678853814141333411248109605191178752130173711665078340750557767075492170720421138542240776807627378992035987824327587073267462957667872612853729934402309433743625368513190073964729523389295698619732800094345682546671229883116971580888679333464004879409785966695710601532447111315512314981736553511365196058452575682009883035295290579796702028083880436596588274632709727810039754069497715973596520406651937045634080577150641477171761129536986555126415589375103565434557636915813269919793017071389047359680770233809741498555232425838242004768960527206098961477443999527334525109579582040171536706049265338313368179312526291984563880724959517225855213423679756850171527443890565299397405356330923278970102199411200583053837297873938643608789054739315380549875450638930874083513213883966017757529705173718734326836327269585653675379877517555025142873096514219442540909952118682329629610615226748991811707495473007044335855659623686188348136415542387606032363646035612977317839689252218130291718604041006484205079663390268564996478691019349355890347902280498585112305806786444405401578275375859190766853414331268604239196791137007510733546903425573462925348953992730745504543131148108161851995230053880696839830275403094652471456590884225881131971994063325323694742648266992361647932152625255014933206698535819828295287541352227274360630388387177802434019096268262654062603033079581517314817712783585089596915595050866226561336822972415402549207931646182377780843840471130170565273751755750307476360570123798803156631487394450863948952567051412976398151679409075130117653187500019743400770349103938050013127129871968277798777390864327735341982574452102581817390062070901001910137281775567437732254816967738536941110684622384833935000481418702293189774293264380786107224595766485477552757114155412145747362918826692149466437963551404532468693855074183569416234574057307953768837070017126656584581790413281476465455125654588369472717802623751995634856282541241213691378165400438552034264654811633152731795204064170042549694319171352879312392830724634981503006953941468824571477418929897929637953656509872387471302101330343807123473053087609607415691129404865662283820018085096773576333207332765158235991779342220750717182210583032119108884506198545152700442724694661477461373574522730145474542862452217471026551121150012741734943186195815901909041363725249140387882639397048226071992054822369782205398788231605649068008880729549774388196143465924512910121740662180304432554157761380363786191941236458726206802091540592516857916621827434654376390480111564451728038832081495080613715058601956047694093301393973110544443671846731379108755829498167595465687954322989856529312721475338235921514006653255164843040960186826492742078846001743452984577998904939504641860249222861935524910339540439916366817859095425796506250824646734086924189174210650246317066687068379173365691904918532506183886535927028434730445219965080024926087522005732700452371445609262755123338695741646981427535816452937173260449642955468160357894747844567975950740933169049685949957766615039326090358794202463917190103327944453600241387253512440993779365997494531001214979864566035075240001414960659606025611670109789335260559524133020687556326372985926566071228073927129220241039090458289337590771964332772723185599303443436276359118957309798104172587470797290266663837477904747339226273661527401588818768013291265617804985268047956039306054588099713686886693261731987262403039725327120023422949063616895687821385031165850951978189072188813076080162333317783363046331628722862984238133821891576916814597299033146124581305278677590778398964982050261843223445279765555915056503758192551174441050114133331854441223186696747264631577076449219350478201100849442916251686412540330003142345122487288558810972589780628537403240480576883261025209402711776658362588346999413059654251695192618647347425613952232832108754690671594884128301011336760362430291810154666070928816582592608916074043883455835270892844342961876364950230182557333607158893366166843160877735893291460309100994772530528213314057608795772055206424073513845335495263934653705384526115833532411470896737330506462495034495277956200542764457780932742002942460465101289823036333059223815771453420289040870544970310956175637719000456303200374242130703297165415938706106839537663025051962135991950508756971203629908353517504550378015016848021288705867717087566210423863161811208671464899267881642561084575436076135887160114817438047749823492986005415079012846420566301576196772315167601858138404259091179864807367863742262814960688911974155184612533951366842843674835443089315532277512361228991627485371010735919469038726456233262716207947924749408390191638562933113723660800028508013814170626512365358118971593630736830167554976676015940362202519596668493163099518852062233692156315104459154476329196573129825224445845486858506912509199279217057018258765401403562742169550616646739356023810703759228712654988277767414842809909746415468155074655006900841637662356774461513045005307714884405268484671666855049030214141837521840357720380054781093997422253577800428160622085068218959136061529384562177811509648009961838237807827988413901205214598840191516542497832681340025670542114255471707160740199040804922618962859465435310724741643519341748527766074906012626700585728850569175565845477711408454897105649470721510914087385856007871875465282029450669869415555799320298387338388365267035469467121877593227051715184902155842992081558256416080952733892299760372916167183049532066352317319639771062730037356447673536159938670602177477664686735441060050879487902928309889996109840435874606053344385419217926898931165627248346164880071101461381056659896268866893362972415401172753933724651256271049462914000896751962369393792560096590074872828634535573315060746246039617612164092942948548410629503702226270568863145094614585408811720086643970703389734840841767829297792558348589783627821602640818398238702648556929619813076540120519252111924947832762859658649041549879190913297338420305457688471558400515717192532980872933751627666086895429501822539513588636000492122357786956941878197581514410781541292775886330969156555215474646975782426451110585650337596390023570191553886694286259620120396901094279688842250266980302054951587341023145455372301186850889310222665433050993411818940979461340563570688564580246086418320243090370371567395719241855441987586626700381132646483277364841023616218961249429628604553175775559303305050538572012194512123737148456887288133075355608723903907602035482451681541790423785474830516028336809702034885397580240071867047926268759567693837008212139150918930696060837383852782340477162886993863765578096202516252261404942698710604226683247861061344320627287981418142970071311673218824926357878546214581534521538400254309948565982253951427782721865000848065744943965314320980855504225382268235139970524078402862798630862741732732461688147897532533657582728570688859700209109911741890209810662530582039341000502410666920374318826393149385636995666167663759134577471126682901355015385624325840326214691791140063856385196632347009609815515103524562522617479362880228960833026742765118411514859686830231837754866886787377138757878010284010908527686361397810255418434978257849297420274463994080535894201261181778179748716217129068959367356623778558966765764285409296957696507413082179923087563625362369704017899260513639217111042846871743184096168893438600335883507787142047688159585368630832198609150274259310684570231180161405339597689506717714603503604699821200011404546561742425062222961895434809444160496678699506892090067060767826811346234334031123247430363384064745492716996046084133608273788914193923855587579938505588673561694109161348057556141164755741830175560290977075016042807823062567148275322636324557118185624323939847383459342608152433745126478534325403111155836806979163182549506245871013950891786268563565577108092598102591936604932417333441128569693023968452026689464016969042104338524395929341519851199796229710253837310435569178987912126707980361020335990838443356387604201752576382605071937551554238015639084078346177291213157392555461115113063251566800201336881093290326268804184036337027943857047973895061302839530811217452523320932515247294660093949190529194131069577940205557109389893875865792019575918544226197811127704450180213498936747154630285309492899012630765311223584057079597877723426855088629773308624357135860021744621752542541777744439620814277874680220957429996860077038959746112698890886754374011737986313821473093776210976906872248864182850020812134859242997904405242897182380414207586630973938212355215729057935791495076387902498636946992321707979371090518413698453737125966792700911733273889376686685894437771709358170432763423169549741032277571495977016356269091433882491177911285693828353490176879159450788879983642479290224134505864995161898980890712045725426337210102798724538665603438707575747047058366949121388297841927413655295069654650963476144253605914187827153985412266763172456550016951545201399174407689684116199192314038770934201954963719534845814998964482610965557196969956144818866795729907385576150081060956070529540452333744446624733841750524028128728268099812922088282134113596067255034763554990574156675983287803919881685274721157965872597110315807615774675231146864367200710504569150025770912158226341280098865766379537815146029257383656903873857813906034495561693391716070452196349296208844130391515238378753062105357844081524407113014076481764605875978900019845009216758033610577311571440297795455721628493566084375669310377522910115211721609797709034258916987126236340734375664339439315649051517067153949898866236905746808686451509562005662164392533216819791679908610904439620377460654833010325660876538424722192002481096231593629134785741251750353154247209905885652158282230025790908921710385920720849289454220004750958623327901381936441241359508528186603582644735679533401776104054325781091085040863132149418613970479966978366480996673592506681508695926971652253269996591938271237231760956516602713140872314496850269413187019248126634487277792649857360456319231279485008363655596704867397473936198193001888530738697598362550142012831718852296578926733453756251837057263663116332920290729043180672825825855943902486141615965725880225483811593541462179987309729019032742454955908196876085340670014978125913859712102508265849050507608323459586716877668647455941079501847850888917574196095200960450163618061637354352881326271171893814720466005602748807599827500355823961916660404328213836610234868854048407585360738889445741724509488446449548736205390197331656545641794714711956028955125186034549256930081176684900340262882615899726581509300081428958851515909002736874035250513079011858058692363444089562492294499713543970578058661250316025286937931915163772223726870620578505112007046118005653071374852866444453418311321910913531778074881924778851625907269881781702831886527804243523931501504933475087406404564380292368685036657078255600399250087925780581207501280521805477506055201172207715536862712207051389664806313334333625064532306631295186896518361172024440438054811033262726251119791330297178496861862764503428672550701727526909106519326725488468117426380190030926429217613904643603855522297236017677072952934248355249570884228166765226747924394384704063780805997097481102365898496908753519515583016430981683920260233818503679941786470577364566057939067163780293243472120943077457530410790455459181511302712279965241828354433086528510280190323415872744935871035434636431501761190596503021804602498410173602708199076642225199811144089654298873025194817421701277251099391735607586964309350083825171852826126903541800617313666737675808562621571440557373668100445908366517474974589623399128249051739498747239936985214738865388421718206381773236982744852225168778309966109331522928261083723897464597526111437032271513874026231893914064931647167320484207425029840386965533051339592583920598126449006952284663700671977269346385559265749222143521493528032990573770772576003458115370856725223262257605974218104574111611305589688136701841391061465871051551163201882810041881982695032478557605532489749885574848349896898241511343505580343374673284477479068651051548804552780621549907759174250383303114462234933266350707076365423175903176621396606535062754492156420926869151669780925986387356541591642081003111494738900366639169184097886124371895023631363002455973512370160361459989410207592358399724814461735511127709080907481609657432511312539087612133036094704254879394569953916218769763268952989396008972825957094340017576253160932356587563556399525875598432650334186163848813161979854657079130186848575807152258561265925256111926198808237665657246328476215587169932665176818837984591187912694295582628847621844813114261845890150475456899118700369777836389928254213179690495700213892016649652510257720962774467614978192203125300311761554438760943871571015502190050117673334610919317249501019909870986417780505636413344599940176789812127781458066004882417456506961829923004364020632281559738534677487623763520999381048867270530835408711358869501691667342484361468552338324053406037535255621324292264169953757663563848668952984970684312096630856478176663157179098027020121659989332827423593396091481433766215266462557164437588066353310419530303532274706070227111069273434249020847766309485020931341534474139754917526603320298289348588660454778713437989532164792128481695799264266973070741132694707018725593177042694285144514879315320563533740098127675927489231916595928868332336470898289881161960668083639007241278045696234368081240512338878147789945612944603994287172869511845869434019734523207254972726927441036159730814638546264186864293824994097430852341842814837024883056395739595173927474539339375405070402363616775159916896930897999163442905586509276210300149424497509915102829585888031096910738250525092010541358638827583193953883863780026608315128376822010578349506530851154873039441386534350410637671505534380001096336924195354319860208216654140818827277935473371507303894469900155016515751937318578059845491269917817667892018118500482483336285296818733173410844300461072502087814221602102189438772436970197876952146385981845532220471979382077188331321532659303916060166541049906060368373741900061098233645847670703816894135914042766685369058478101997830818730406070758954369569746728603791359126688430899120289366338965586416743622120045673092611311818210170708180349312347415693937396429939245852479129551105673328066486462445176540873681023755603408399619869981272334559312207375187433459410244854203436622552879991025161796716852719881585639884597260039524831665141018125381332953861250452330610106697586076169293178950043169381564879406939498206516238841786831092416772918116097563739150595678079969436897261118724633338817441433667604297353110067608039522853011877271011081045638089171430911079215374739933583780119805658287429912676945142323758784758464240220911057557136060510078981224135321096773756211151891547935416623529249263885837565363753701819207599862681393639326071476966836578587524086330218989074604046064690613170971432388094447512771886293915986362323639461402164359405667583121227337464859382125466523754690047008913594385558820472443622339817930727203484982218864702812894816969110733299272320147274459109337057695566366875138357599118030655055873419329469853326428387638657192117112039685633637909874937060985774246431938663331116415814248978543789779723873726641434886658380639487085653248409127996876068483647167285260550416707059345170426405071518909034884760894068763681944490933617306940223985903093914609822492436894885078309782179604403138294488103071254785156168181165307231469159200885919909787868270822694484732275492461324854239585474589229711034235348208550873446066774247998907415589590320204088535188905135380326230291183730102357268753204235499344655714033569933178796014517331577698080105014927341917169534139692020648538658590611012975794941531921289680717518198262274254116838484313862718293742828517912952900265281821470570923928374321757862677507112291550197626405509601045895808898599682617925443224185258760160086702414632078874345227201135158003565644760052450402293708837022069500009842193355807444820425510954894469445285951430758212355037699965443121180206515414410711766118385647064779671574028297289747053693775764277892994955129799651081934366380462697091533894051429751999590017744064614621364059572189951134174437747050851005566599857841474225400118936013619844570951322437922928235969571516439511512414164975086493380683587907166775038309561064043210241317654525078549543647900268080255866610805519674377505650250240431568397113759442375946559777557421279668995914083943534675154811838665931203646768959391999509471994841644799876985246881515535529068882050292306170317515684448105199710298799754968523104672822478016723523980397271617699137535346037117749228956570706093479427287579832425598591374192080626702976692645333821474710294087673104027526839994660004854954155975291771430277991587579888835689739926433366190869227777692106418884422636726703281827087432632018038904570828967020478112191835266476830543522109881569638048189928224588669044674857100175244181857833290072170279817219617074736601143948775062263706749170991477492726341888861611089203903495684187339845705407825491648566767628953338764864473214890205447600164031608593451339862256009840146158740111233279083602146885300572774421885555704355856955684843788804224137380754753415502439008811789866397812753943267377546684558087625842883428621024799644844771249256156154006961819750074498020821545207914746610572115361531906411980825558577866214648722260655885407344259757698166333066571950148775266705661289362727771193742708467970360767513154320040748541750638311712194131265312683318733912930756919656390445725894293548226681566822091629337459557956095290360102635379403344400720875383426078786751062855810351198187011547326422955534654263650927355228938336100523452119891683312097951528984958792753346549400546834643523605218902575448208748805573590191474335299995376469172676035995916257531696068040271567428239391809435261979949628805362222319889342038714582934685101430213986630304971564353995919961874966736876778918970745276561651410614203374468747107733730186015127500280523746320301940923528381683935690711463645474123315693930709927532929874138690099720868210659002009860997495626171690879874477034227137256433891919689144091088335161269065353670903387946423735596245872532124439136660001181925050755902353767112775918864809211044078056469059984335366898955565961065391152016135677093759321102436077381064570004514880809596040485231154160360634059633380285291836643408779015285036744610364760397286464927999523435645531028616938411008138919258185135371192272518087688352282669722427220346555739420922766617802334453094571345269935186262623032214894429331828472417893825696579631247422014264649984265797772686177950335641368961303425978392570583601221518564917730636427608043778188150586101838781241637061589620730771782169760500003548636226145542399345576113426339269595726874244566102396733930299045343080788043034306168395137893563614272104890772785722659464005569481857278011676180403989024142264267837057134719708432317412612025309852347862999270733034795225925317790656018171013603211223245657829201017636840677527769135712836716251929166736416986479160756419330964407301830676320031658322570361443657557799950589774199561828692876038705454379856585581664910586930167089556202843125855866080767102851650034669875659890357297727788129281486962031465880609617660442685261325825645943876737192290820617144046056689308065374232936492140538261556513276515134359404582416473567671873622837911224949703528102900131845697921310971313144274493985254501808173194207610838524266065353168573065308179392121389930980149802446001650238629088711395699634163971036713172277840601826227212644530646040796843115079475577575376687880036123235130141481805072977714545925274240404450107595511402653405238930013878307123982302351139066345620809530464624213097411271175915606570588547201825735820842901761294562210237449207593759421038160625154317813414656324309399294741889271130476585443240966089688874218030342818260574546754000065039933758609537775949504777066136136822525067738269556704048799599008458303974927082082711098853811373318293779112505563171545406688698124359691042560429473295788171250802298842366372954719679761168774371637031691473722670248821058600863297415178550817178755877915087189376323615364820536962581566680162176651104177237343252835199399624970049917032522392589545029127593114013339045082597863069805430482425593131849776762636624595471427584567580555191976658905847218175410626721848423650441678995640162840934516806666944157912693925668987176663164591713343240583786912157892791898938198228478697442222661083819585500439644405362623723370321802579352403391847064579857599641428958575686279961522960374844618621181190355187165459403772971883713169107664971803442642927667951742354491827294165947487777054014989467600824144427476856729781780269431076900177610948941538959682014804236693496521200798728430572549550987242046288466562642149640081484044307619829712761536411641729302334559703462220802954399813302576600712644564250064393734725757830671232441794128682369684188839291817060075448102494605974718242816133041695862033212580087028907689286926863269282096777711320174479080786966344122254949157801043258840150358284445579642551372535455533753347163970124305592817106009748786740674586450848956589810260325684211319181103512109538450673256799039283372339903412217015789691175938628458859984132536124158228810732883013968610202899423434381607401216983335780266968862468278811690597743343019586217361014674774982548658833767634693894012791840049894292820603584818874801208667394030113295865569141604044136263311184621384630602343056287115616118574823594643419393608262702155846422112027043735921323693289203144826426076168896733908404740014676304773808970354262515263026630280705946795333229401933348710959972450953347920967851367828064857419799752547215986435516655192635256803522367003100677512270187854242593087529824428595483084896885445347982030516079835782861992011529709365608395453984033525564454538409319361883760471895641546648457599325001815893103597005683069999671976655757617405976949710329569131559416945922300554157919830102305703407759118008800126115507639269359384718289342101935335620733704800030781182099551230980535459971794883824204180643191162906705091149850145522391059333658719611084076033386700424528611093022322579260203179153831213182590692259365179784972957038206570110723577792884820157272924691107992825031646603203218620739148688168913937938291374505847575286451354595190107478257864774467574845347602943522866803209274435565971166411480358988953188209671208310873768455487518042556088679494738802571236026215205602701328849158123223010143834420058390317204613063892686865223352908153069488789404502854644429336470811268077795449038537104474844521024579444241002201926003483634307733794058550685495544975618330730299926328615134048948868497400181963805788813942886562190075819373082752671255474520928527465742488620173644197249783301411304044623798252511094005600831913111639504502316225192027763539989825772371192916349578137537424429780908610525500172715459640727798107254766890919121172327258832021483226083993604552759673183135238196502077729804327655584745990871782751116531643118946148291851189602513151058004208345282156882063739436217480576849051137341590000605316487410248919037657339793886890288703829576307716587053482336955608981692748667735278931153850293774205456772511713776549592055068395877484400198059626239387050050094775706709838606132934261957372535768124495473842256544756657668612724408324713015106709320020884866381594912148600225679261650149171049935455903062813162587320474629136561261469377851174314612833483476528284874585551383699594464172263271173443476658831569617191998036805686064274059798343460740169764576551890047287925228790742718827162077673615946822604810605000001890331815750829834733495923567615844094564191067934109803123917091316501403938375543934254893376163468887691765565888551342917119464086662730186784824006391138267319553048901647339298166145273266683293947888987182506868724247429050619357321841263453733545666383966686600950521140895546282252759376354653952450205151410904175922716889350221157585029538820670021561174237221185338561017143084745916208097040339356460395976073120047092514617464886469537457612285095819464051279761737574359119590591316186439633162831346981121982736563447022241409599985182127225450933531019092059465026472948891630430832480929636008188608412083235021960068789989774986801835390112442077333607070535814343397981436867266841761957060485831227851324157514669916726812973319632494381929762845652995961865394697217870610855900767589192300863285841635209985896739405826736671820186160264394721401145231719438993876075622056548089336917378129031330990219750589882466216598467850017427339594665217169975845544410819720813207240415589381696984075017316723670022334981249810291272007918256094582807121094806309267292890624526622821198212561311410699808545519487809471494778988653519698051372562090291371444578872464338034275935892796484970419985744570494452204149976043564958581365503232397879568922583836596215186816665350281073187110954350730462348273222429120009945600162617889916641620484652960623077931901862559629840332194263354461047180200083315762343697878014667019444371663304997864245497394819188638487510356902972986109134765758403282863089211714390485550581233898953388345873016073601429690898561832124055166856225040711941792991869269132899080931036417859635859800553115675294238484074469949594425427083073027300799985534486664909735263606513648241384685146019440764566455952047907621790120992175039912741849974669123202529116687930965740359335486405573914413015470966043715953825828906562243200567215096809694527302477974020057937530564279924058990914395557630006740899127249878509121669512303623587854652128575621781784141017476235426637654327227778080249407354360544266130488243365063925125880394698625515136224296326044388761069588177185180780291533278430981641615430264185754445389325090770750191751416018348226521107163079509105611613545978082468967630413065444197929921965639084676605993971795373999308779864662573846897170763087338800315418098017527265193039932615241794590373586515367681089265799051011836504517647904453675442725313805670196143362566536565251117134220202637381045852391643771398851585511827898113093626567027337869087179006673317278157243657734951900349721845146350702643816477935041118946824743962136955137454711948851587933638752313046630825814028314836357440561372926764766166140184127212534799978503555424615068206381372570617113872180248696811607255696354512057211392496581978529196361960739828027647175303731184825002983108620364005384326341082146326627377684586788049888569534014830479443674385586290886837700832821487401648658101016790801384924432801916774570022473236617733224339572167028809189917263982661999430868008482275948809275891617188219175752813246868571715795470511806122611336267754222009209726154962146753511947981406412183925566884519432774086535391705043119135772841144289095415775096468849347673178167075523630327671892149830725747442554131389010756404846132773888185176826862355813388149968379640888464433279343220258926235996746522783904673175435696317542496103112374879524861080040438052517343824325341900365597073864510812910048167301460553501599805529690445216907162345205508273588148618088459390374503184666918287770957197394909285922910347406043648296023671663597264934012656549129127573360565938139838003266488136825238155279094171797979484845160271717548303713955071178685753954483112851787711327167372652794302136497031504872062149015758903958641821292745149356219167050693124489420141089650245058994449016735276728263044168889358045208115256588661840959546888100080612682414534395668753448911379680754109906781851170438524231937023657534318374280408704374089436778845497269966621916129526552949936264536803996622312915179739099260784799306739087444402751290118582818325613804783425005690471446267989127639873076602079779580957906820195002292064738299437562794688722166473016512060498697636084450197933110021504151500997354461086081037324699385527483678685466134624378390953027850753745287016827059904383779372616346910673928721986367717002396242873732872481263309159280466739944513563976777202660472832455092642260382094571953023378114709613987657452535532278537219273583906750108751629455455453971683197432243390194324245013470241726248311670489385794546554046051415922351714337614096931422366194081692431499194463076459359604015618721398251726910738978051947046553293128860031788988355374713614736379520587397896601797203447097897896418240021281992819850706529393948691976689700891427700403466155506055557698412429052780961474914972270015456027154200892405668803120528236128110194355040568923617809124464911205111623684707456339060594189198505766890294797394681764627775918204655003669567536727483996594714599460741388855562317884139007180282840329428395752349850046265196491187384113415356104138953734130418323921292189053706342633019617505441129329650695044547033817220543305405933009425011944548335412432120824008548010531335226895265602481168718846142820845397642637153554343095898160661616565539232668921062963283170526910048615963490388062639338813091313470345073287591327521950430674548340737809945430983469733521754392395790656105791575913972680835190288486117459521857114284572956304066939405858171608055248023103116606832121520318901044098799197539875139207883256878836803381502150088191814356871281955069055564194732570945413384324649203340693616768954707204650168854985977410848076663602884625842709999902228248917320810885206477827731181732009697270900932232141311510530288398908813317135750814374513292497288345861322146000861977759186867751181548667521426300396673002902671142472130060474317598197280532202214288162426324014669960654107560790173620719209042127521418531803236741071612344689083270773093991868921075049709890105838641306447891653754025144036067935025367638532797764293676577813236946459581839675110878339024574059057268596510531853071701407458007699617974984977399578869661069183106594888404214263978466271423922835341944755741783389489600791252163817659219826254529665461010120498867156962252380809290142373597658571308947477886858328827806293426600951968017879874955069709060696587176704672401717015732683301368153885028203084198011303071096373659932713221543308217093897665337820556406039966735256558272198642299533193979010770385896861660090997040168426885180768832984570062057406064694856866880716386926788632201330980379781994518413636967973987527770286990637751731223556283608343732477810082207818878513570285485895529400469921611886167738884071865742331098967781614460198615065295822875197616041151699649403662679910191432630981888797101940355164896277874114304870119305444677237138991688210410338509051538027094445388934959409232760525238858431933933824336625826454141303155885807668296649407883113364883120666078551242269046345378952440921023449042207920913500545490114036820923299197865428706245162568376972368665168001984909535742428670333374790110867009216526894806293399770785583243645409395624311651998964832083365219240383619460518486266619684986909754179668836394688526837052359754497784387556828676624477007357131968843225797754229903450776237057756385100066504119506906020972245500609050277916210832130940318044293117045747338495142185335563007606564411074072771202991991201113724653431568560423210723797034132956079718502096243950620588288750601454587478877065607772873653246037745126016228127930702512407137825917847432359963884926260716714998159955558841553690924981673005225559297790192897527387358593542098779091337351325782843284404961918788604493947169514456294081402254407764385024507401697378362870400238598531592658599873661550406439296875361831295746509830370438988235777598436965207453774028891253627683717814059928597271452991601610802103027270930851408029662937034612119212299734066947288702142711805218589052864245409182068059381522954654663502506452210432129407053113166546124539662538770335718202029628702276743549217380156158650509448428012499739135270843321645727213800437118661082971250943828089522241761800750979398481407259164587495105075000299379012049370764225775609479835674415464614343690539286656215024064264883074898588380799631044725142020805322468314616657848038582746208682695543182736013062338899032728285787519499874112513735617175163226416339735723232749805568811519673576571071124235159841763321500761377037852337175872819304578046118524180002384981623367095253709949303936705831105639119940465700124323740220091015189047388218794044651111963919769453119277881253224029582303663022828644033725315145923506730439509988795640199608897272216640398441663619849733134983008083719996552259522658864103734907225198334990182886895404025807004702338802355560906725376446960738092234202612468622026436079683218998182381989935703803181221103959131683053583896607659691454706355429713902467898995400138261363803979168821368258930361836081241126283305946573081694098553769134629191555093645260986315939180938640203834859082206064696784371127253410542260517414722074909331934648084344607959255013479992180368748742828693433427835056060755461165128708702527236453304149507580793543417340737920698379145048819727244151184042276528957647211781017972255197266455217181590534937642161788277622242273927305529790351372785853646920751205049974616073671100161670170849222175706826405922479800003476420762018602173634516136247847206345978102486020687370961813336054129729789912576132699369004254699057735689618228786781104600416466839029548413697576092704070264382994804945044653088393981575435624197001596322065392028275096604208891142014710439242918396782448140892119403139436713110159550970477740890822341749490060534593542689632246976962596430340635045300866842358769087325998038938680197111604094222182123462729541586076022948485413551930613500093272592757361054980108761427615063755865848764893072593598048159079817707643760078763217636574299177142403955434931969425141998558801443720779086648444046158224880614802647914663120363033150322914776355687475945598974139779318989691701797869067031697589629931947411350917990738659289914564327648519483866485355548545560839780949408646126513612242694912589726017710521852562016964308690062793845117864257886949851131110294935523518469569480560970532410428115664761301769971894103878238220206465681315283837595281246894471494090980036070245555835776512529122338132919603738984322003734009546655909591815956176489727844210994466281482374140021060796101323047301731409341610701448791574760058117942732674535103151269479435179743916612152643077583574157905549212223921681702258433519371697764735537052794325518422539076950252209259635062438635623760614030170895524326642280887493902784819053063452237063488091135961560720858228148917987386037784513820248697016974528354455267121203663984307876393223539095674312093276962786335634413287384565833148055284294100699539074540291658819512698379992998013915362128137856878080530117258025036840098400287964540909221730217673236906130960596652954523291811999385011506945844948645491763277847099665081119905338891254325034769267705356686110132152071446314313226268672982580854304149252232892946024000525145641450681116423662350475236505151993986359571667191629581716566192954725345263336203604063207959206318335815427312469703064174671273593776861817631510741334236836299195218977441913127493517633230281310748295336023128758164654381860441350380440166446799857906996903736854954716262300659418155541387832157032119922238834157967891998253144421807808828594039536878895316411218811558184126851793384342760525604994296365810676823895944735855336061737618419341802780201396968628096445685355272940990939414305550767710345099271089379704016699763717930682550487926013762227867856823132091801652984476420733608382006625199913003977063151637324371214008241273397117663877867114488038295943130378300275845929439464166138580761883684515398201191455209675148036360064779886178485241338431757113549739704670144274016614621432518680119831141866544154940133179823665637868334195593606214041672372090592533843101359185055903906672005602015366646155709306721085590550386071069637641018870620696139385258218535089310404111841234212766033191323908858279356494141624251816390175418583092967034728164777123208324050362646443908324709846747310176512884728500086961812802209662439250311167609166880432413697436007074237159209037302044320695728456949321170994344725991569951818382909398710140647421287348993567443671106270937127230697275153902583734827050389132661315362772534973132309635500886487301667191293282312741641514622844163201472803061232851062354140666692916179591749478406893561842668195849228688919900491212809899845253333823090234961759042289401643113646437275310752236631880233819837699486252507163295536002577268884204386645012969798762973007182421965051391851199386784974779614796930229363149017433673231552915547426841017807588846405481917159459492542891279577521314615561531222803042919082991465329930866355583559963006490974620777752234814537952146210757689155857661505613496920560217671846051972023264813326345759673708306548018057528076229420251068459644115671901383197493387304695073568103539976241793139165622361824336616096142323858515296671976724543666416857015012187603813868813827216555860003726879368778018697703169788574938419527752297002235964545729852159302519768163398101170906059420673690674026767666461842303665410150760993600905677620534545835608983122135744527260192067303792650902486179104787857818217894361870276979141956589767835821272707623537216970792014825672671224394592572516863419237828449067896595428508651623571111314213043117880035387370218346095188911605848433454899396200087997349915614715384305468538353675650517381656629507146206836221496163732156691914759689062733035074801445458160241788066315257763226032530265119444763492177335170376281490769303009721581826061395076266690754836708316517745222190152694503532173106366759045834927965039771933707319615609939329852855707830999128715141902856991622247158556431400188208069309475499313691925910368167113489043014501174971198259137262706173337362669151792199197709614276377249861753518146349319237173100906608689793166735342322325100627102093407147525192297268292554101590456402971573042855516989555982620596170311358724249507548508841634300749556095980034372236288198227521961090089276423976911943353726142708847568868236339154152647908450933056063911161924785276099748891964871783478031065799878881742936219882408566771837734884276542768976844360918046245066734389528561834854907185893310545954420180392724085852043770677110603284300397225225037778820961141842066837247141160812333779873522497590849333882908769043074712290636925260167704498379454183514446622719991375983007112326724127381673223251218385637296716303599582514628231420638696102842231698748012220335196751617940263593862299637922724729272007000405069396122295623232356838196271790400118291242468650475339521295235104849715526969510760099959760913587985777135323108880246193910183931901031407508757188240850347671204101331033496447862650957010375181969638085100424849764911578365989712317861428449026300195345535135577009635753914987206643629876890403309199331927327218895842907933250330992527614150181446062285787901837802903124471047902950916925370854557690078954806541275134484876489759358266245975780717732830854662003218253886714123668607595597551279271258885707004659517140502753735369829360330235173088113843575629117530825483976909759943156177892809707319217577474339138042845524770801114943554511627067290760257293085308739705478596125896952795513804713369020826741009659908462490169469816002945423072782013143998317507929769850616603983765320795858265371201136081980059746954180377438312491967590013654621166567240772536085106564342702168083028896658815712699788485919484451575875797665764701515677882866334689491245242712270573346035716610006641778079162763288364371304022931664994151647808600275453780234083864097092608257582123848560176589447849075504537769246637985868363234320201852541440421793149540807007511713446732396005654865150355776078509586962344967496828025133352974040429718112518616785818004361988815455260867745604529315152681590735646588050238660769854606956932218048883356458603604531607787250669690247813708945061917625752881465580573209367919131919427995442180869353753537187278185221906862015455655286083419588585859682167538593406134662095939562640395749755352688223926819914697604767700125629512517239469201827534045074944417157335760885141864402687203792073301313936458090218807597164014596670584742231135470697631802577495879627946799718938431562088420843594224668148167137907653266013306853369681233943729894575200377865762632863701700255397917868012381035512883737223538239748552545587036199136617427064294450713887660651042378610804730892670782390971713075442744633557049506672754909869455832815453599255857503161273624852977106469709903357976262408351172254615350813766537195076946104222078702598685632881062862603794167969316185615452537154606431976523643257301342988596792922613307586475894196768479457708269777443093315878603666682834812902791121616715612125083881707366416640927802977054365455023315901944985406265578153257829649372043191795344167570461021545458872970693843783759370258320571332465920858662380607502995242758017986313392332839255684628193204851859284402748230004117196792626206564709956120421046824599334153214342842360962652779901776104220816914195529455805592947764558044312619341932321217687020156868183954544850438816397749654132571171317062307949520033027013371178426182663807077274423835833649984382543247857924941981708846973098528357396000588191616866257738166219690932271600903392353840200250398390412049429620061169821406007039112163660501976762170041483967985505412550596492177417895381016035180203981132080228394158214741666012337128528608138672452446043284857767011310137630831066187015906880397715771989069083039902974903495775481219643806145994933501122364532970821921781265217511240050641516244865797322493175274826346476668714717192168543244204010082043663011772548211613187159192715119694600799245853259450861776157773383189723355767606180501189746652027999219475622429235387170292716907009215079070359856648001067913064588491194006616815018947876816950105145564977803971665941309828652037498416530097283024056125030104691054513484210120281453856046235378937798312386569233504260173856096420983420260308382187802433359403308112341306063747678826300404592857087475697400595761853416203934003415636406793181229266531236880730750652810880015058849577308732570751206091550319674419841200117008149209525867212606730008733961822684755622217152367431476063496463121618233663363717795021992532203784578765565972575371822920105146404936979418163363595013940217599860255885712265034342606686701160350857476905588034532839474035512051906002135307519373344494099932672162323254691698490681800141028293955883430626309647762670329029212592506077578551168048431850500782681156860420662531867463731840854184452838959751206761413905456158556062937605983861509240209240237108041061006513849399284630787550689753961594536972947073711285612454909565043351107371565136331786074608996631402658422092444483147186352119886020008357060514835313862484002769778603193918319487857137982458541203463644524677108643377301078867322766243933407030762885028332137066684249263789325905732885759629258564841452066693399801436013810686565122184378423248734645329267846619837462286331454378254543164312830079193476551088061799626246540418022363500169768540521237833808535637785828974681218225095031723812146287121997274984374415921631876340704758674336054808245755393537283021853494849758826183668906148873243007757742137223322804723708901699713236447877488495117349319683365117017598359026163756705663622476474812008149249928299983184994098638435806129452140538117995402253336950643526885055258383270077212941227244402315366887134114866498035876864975447697503466081620197333661244483967731217431319395707145649203268025246930762255737417763553905173721499366160060365668073058024336060454136265836093834342221201246671132656838767523892300582247464084766536422804478808814978921561318227741681739578280366229604608850076091003127203176305795410457773251795957400908473659159802776997146131331852061665477352091297111073223379912445245409982199976200158289613164114584252415726898309481293203205515608080798631012017356291716120552667291716784545751232542543181769051307190223719627591499091678191221755892625588656817812716991949077551493466593688290150553826549056930782574773590459596982656922436365786511222692387922492735831861121208520396771469730172420068510500371002297491050351307131666560950739729712728980262522225645301447840426332274580115513247498581293774429466540023313718653985919726954701643824113009745285485049872053661795963720321948318071303905400201194520295071489998785717846371502748342884555450009789896879891991554471389964977271978422259282951716022372535604061257611183664529951424626611507537034285467582373876242080424721507099185968085548686099703460178932267570270160771996173113692012449687786789917871565831679587829919167053923000564462203042828473697461672871462867326016087056471029055257975900967004537155017096395528479085645285400133830692398602209356761542851831233339420589331478643735826696415808416139994573217457292990054227831186253631368177023523696518516890737269807752908062198372003585503155327642187161301831925111139120528575465510892236169097520883386882901956340192580681836438137160741300594990907923998453623881204932339131416731903528915795466340846415985471747464691058897706180933897544455237013531405935976382034706451100092892276418378361298157651164133326594625104945659245754519821190084250217833125449623541655320073101506807935911987858285607263359454630671859764244262710362424796553894798565116362840738433782394837889036018550438198686046692636065603001522115469423066181371845114362458382365538761066730120273447483207020715246504178940056576948175315707974279566889987909662711014917970215123876895883379900355251875859686449651632416570998171612913806392093693332637848731826176884279272830903549292943449379482626140789817880276212028705264031165702980770914446357975459771441399470081379451312453842472605493630158508249956183228220167053050830960229310489604037460495687614997964285208533719694107737852774557729499924674527525439529655269776681935817715969434997029894498403372254172511437433108636873436905816476107101663599653367588820510337405869561316346733205725566095619460621145573266160299924105131867266932164002716924549726170033916051766152753763005753147930990486595115041274257936563446960151828687951442950843356999128453777425799256807158879264134451977888412016514298531552565693353801630325836336479754717398054244666574494899003548293672216017244585429326619963554604126141984275452552885248711577626905023650843729079794772571887113353292968139084310404043752639277900093961615718986059410337214493050173386936639320745989731402240777213461399922391682440509285372786266398420206555018399928060226805172534538019569719812971308045819924700416035116887034247938416570564016645296633877512299845430593762586096475574813025569088009806928434894267231206691761233709776662095244078551378538153903044460406341793922673613864551511354803293784811706577604973350062864822809212453097784701651138998698032000957574791164014338380499280915758405199302137500473658862184555331427466281748164428934712848991695848476772415194511710354099537128115057094367889423130451035540909504901900310593225789764285210774291191681110900700567089224301027427900327804061006320958238608146808640841798539017646031359802431338110846230667673077358328281535626238039995901434960655074342298312820603891463650151257729231380557424113044507937495188507479024365355145181735505910379107520522987437194400529297979007962625409710069701910188481021337857325960795014243864768988222183012306347898009828116561739206372570651008560526946967122471560369713755890604845851038961267267283040320705483336043609387921151765183946655429627201958241922930532035899940300077660198799982077065564409918549007816589131130594666178738688855109330301692135432444585272497110549702007240576900235673367586474955123530809646668731867957719512672703191052653375629467726301000532962283058588077080655970337424528685139200915489012455355785096387244963669776800220384556243144082292309092844659857220735350822069221031506134717509917861394140549123668888578616504971720547700074120633700068115827553428905401844761084632825843959574359608097975293901759588682831405208472331554662510972335686447711369443758523166803568159882516720202933481609279249191829816143218061010903958072058453842402718118336985116534419467366423623469364606605401477316730438127585530138176415730362756175574460858611030895658162243745490302208804113659686674775250822650393820151131975912716141627498933908419962750229829237982264143330613687186354537951224019689547214623524919393944449253917801240538408367123042001362881644521130935048046167899397830891999707810642099457182511378252248694461063022770852350157582777361653424855097768451485223527717324354984855102054076560471157395997900406458763287693089269662600579456445930284521763421711340512694272849474403540695771311848524454295777397941561226190549626887259433734795871886574527076666968935530137509057752564788858318294972020679638408493712477473914175696242697805586777152084289458346618514554732963642669020832163243057034862243210196400036730841967042465043006405145124469415852126037206641511458649305960087012740534889007673616338578795905934128856880060286218545549325965232621003852728871384784025507346720100845689779159386840278153848359122526475050971243359003475695628510039731970908021346876400800396485562819202903336745314697461419268528587016565472594299195328313582917207906586167231626089080936283720854155939004386320515831767386213794170647706273511124667184712608523359841522575128828723136663538591858109974055293784393802551568372410724670016701921384788243968541584208392551017756703346002071295075992264437949173206913660103391308598094500665001684268583482133442426975543326172021789662839488860213942178969014530715169833162555457539046600547414863748812119760159673100467443752242473593034141905529815847669317921495883507388887920115881755327103003660331430444054530331870419094263581161504691944752277075637517615504792855824846154271341057488549308754264253501405399910949428411940372528052760527117365772325530099477922125596811234659472789741500826549339319965547846392713968601951778251939588836904402325979039922306727501130585895556880782505264775889678883581513614189637733101489799179116339315734193767640714502792258513373113593664608332294663316441128337592666733069326958234200424486415985533554094697588750952942741635579233777673012774739184277436330223119709570383461751425576840651412752756464123885879529072183682137345635174919499930794400050185087300318545679272564551680781513871442450883913009861341631699002818603966548387831956610246497424720638380391284402088463332857835133604490248705654801575262401618472480416899730841253495372762088536129064317951159957060322689645764694528807352255908129756130722186511170126425339296950546798140681739254555507381933075962204491445796609657021106251310425049577987146030721820934113117664558344684131695224335393237175555219092996586206056577396087054697755147354588444084264293917615458907656274469518093455054599319605387139767500761536396279849549842953545030757037471225014840169291275118350701428819377504938879063527488052594008098726182069485218124214233951648597078494819062000946075043065388105837218094410270949590544202574044380910110297699789044299134325956716017318000130364217468149291952269168624262156932499985538156772998050918445958441917173692072726361592129233463249553407035893656682016131055683600201046725074288675994397665722480046143082234964125377399909691465018463830046450203318202920750731373581637869616322698573575153040461181100572948200700665115620228931696019486935410487436677755793440089706450660632360499765001916043667600084943244485719938026634811593864312720880523070139550495859202339471617779060961496889487746244447764660460603424714678946390163935603541937391787224901020709598305316879894622502656216954422793906904064443185508909763324450201258322204329798380860064946992457103028898321798599695408622871963765054743494820882987518285397174944362506976167947902207114316165596989001510014132453288452496350095167122742612522394711473460128945257639667742101045197248807740901579919539478642533177363462909995010203170660499839212186302651743190251769043841641211926059669214302846639560885323435904060317259163989447539380790318190792512704318596662622029903311331876506568406771841444591817989400912606352874192084642133840072504191425680389521121177777290157569411626039665065008499448374308842704218753463768632663246015898092080504692846742981917974644293776841517764184866478125190437882018171072382880981915082061270344562859263997546890094706035015717662140027421209301323623939317329787448581021993796951042053496903214087964314329715553857406241879495649442246611165580316017648281817909093201240593142893578341405327859238976148377743833994631738092374044001441114847076175645928364499768335778582321558540386368794348671124180280602315442194873875693640201599431486365288459588343005790627233001535216144292999016104932711390380450842224911763151275201227487642279742842663143784396521440593335225441718303511073553533851603516803647963160192620404130287335686504709816281866317305747519142111736214957571761486571730577373262785482542288068740641288532355287285971224944827740568794594677546723204531881531990615552889210298518036161020775610322640086756711158718794716705854620427452488943692707022798395079632587772859329200610535589559250786201086860429821190423821461636527614452975899624840513295254039730716780025970153998708872050313905481439874575439510550421979434018118284496946155755457277042512105875782830581714851462856990240498326363166714395935582363423814305123914123232640512023394040646485940145963988085796562885338555145769427776132361162658161679287621228311223546792570158451362814686201057238031476794681107768039042311491804961432850881276793776739575313219541671778154339286147796791763050825710332431137365325773748718586163320448060729636953001038234655304400144176416595619444129013552644166854695840023584908472657253731833860606408629901175727582575134676120623974321449079223996558271408467759474162929358752460757624198757727317553058062487512355966211017986402648022473374627713461669951691803476374237441771982610467870838759999806468763180909235051370434945080796577397235398527670271089817842174463146939094721893770689118931303063858384032906593722852009838040214669401444825812122977016840747340655135384999611598305541353588438362632948922267223570838309108637587998879583559921789928500160644839842815562138732353223245844735333822742307677311919637967468059283039515105516780841820653137074435175076758056381792450970439645495160014434975244279804008727028173428420930329837771601115775358591184711439676384179240184309009685779754271004684713869958269993071881823154864977650931245770784698187707666674438439793148767392680641603443617630763058145300319270142014353184373540647395369609988713061684194265910889819199904220989264087657443529415555958077776290892989157350958008047723912700007127161545662218044246917684251861885950037473882237975295576786122673286944572709892294485652605464793253394186414254502532968926533752931771988298482519233769445378039390006229210921508862491235498476868981566493551390652198332242146492122077098101354773689391353418627487621661042410967207098069853842027433292106127061536860251029529891780582894053545875056612853578408911374240903131047303287299524820113796412444650178316650557473746341704382024060608315267102626378521919641022946401378668473167593826793158613571383306999566619607225972327937026203323827466072942901723563381484537828885923940397208763442270997275882125999414915103087849860386814702378293929035341851455394146554758926892436154496026075227945791308567846291847868542438595158401963454231461372396167728620498274096316388130686065896964239820847500613278045930956929252960415958809040406032806235870229889007362143257644859892096588916543189609972630253123454347091462718795391903238395885567859105873991569940632991979159489800061858422459512195996875994588320803907088494660774618426264003789710070692549066299781346932697095825168760330072005913585962404583559078771661239239577985090535961806781867220400156644381925854075707054277376283812120234284487648292725565902281830654659304774147128621356909810231152657732135988946291466205279341073418131279063113707864526224666765952145019233668003204290916977850364528769048808009647486297264819706080116848986158173474608818134718737648634274721014061170407066658403975427049960928097372565187163222996159616605494026149965717096799338197648566630800888187854725835260729391731138740132401465628793640373494079565840045282269380115800272999162784863745546011126446519017873030002154105819968600599750194919396692629421257887204648895379182557537637073517302403738595554582801488995686727630148322485054478689369543609551904235692469683782361176031747165007270641885140164467120275561450873398495696675892650048610273115446464118993184166015695188351775676319369282601910404490962713682118230496214132738098869298543494885143014248890704349810994984580308785190262368018087296996348598924573961485511095213275629804554976525626769827486797795587977332852770377212957800374496889367953843418243725508920785086121203549870273914129663943930477592695885921056249600873132717524247299037665845156088420894370019739303983279085489709182111292790301034889413851153896320765040083809109654302891193692833823959911699320029378091381197654932439899678382504039909870928292804105599973482881075802985587768677272371645235959745713998232362367273874511513943545655743363432929780007402931406959871696675030715320353837639838381121724940537223322484355546238568162067731069385462913400639968008861891910801981956155821753244773615272405289373778078128523253908988394552580855157646898845858679725487868175056892324603489009270930252589774849081038250214432938495006924297626413381825859791139488912872156406385797200220982364139503397929094170387394666040224721157952912405586949805652968209718282714428368364228169437200250174834317031026537772005725218725334838597185983104040985540419505802533986892418429977783092353610082372976054384280016329115352510430701108521443478863340339731455044412225561614264888126639944158332220837146605266007671157597630282033079476863446035492788497119554854816676425947928042777846815468669589148886449189386922532453937537208909979077775433865918118845452725940200637368216740458516011313762567562932555454700290540013739180059381065020720896660896457563421526394075627894360661253942431345020803775589760719453474060821105869223872575823347782804062260189462430458805090803511866283185295614418003513387292237916483464696045928969546511079932040887129163820277710626968342060895910315830589066590682865441732806357802649589066810507444252721382435880224437120174797613567576182920287856126686864724058985052427670487539990133735675850677836841725463842633376104805524363640966711749291519826319422397379211310785656124553548984727384696192596481137756324616960989530655773169224524581461976438014677533278800202045295695261108814772836166395502638826971151627212059653771289819843182056018182263427629572450606649028121145441507736863994490231871986168634690721059226383896020981992912587941917370908425826657498099990343387457938017057765907134732367749579515921926348905863693109903772853504269694547210155627983263587318092114122691557804782780159888981929707037464704364577065449593575925613009124225607719389229290353046397444295997402582780461506212135547397378769189854714144831050842101170150538193445676780236806767269361954603022634394897752114511376290920503567582970919488659434194469389176041623299801129968540725548939027769079809716065539495018217609815626818888879921119518575618216225603497447809406483937307327666509021124231199245142522273159949237743278171260208653630768235505625219510047595760579135872098116420497414188457096709655334148096216185525474313309760104241871151779730372415332063983787917679897484658380729767200226790797003489854612262929972058062267663959229167519282251288155202486343368808410493751480470474185950877173634289191724034366261025625889963524641592040897061639185558429121948718606432138723011037117263152418646101458154809435095452181164261612078219318928411147633238790506675862907070424063518795317763981718891391181341596044824945206994817981634962136151139955378445343027649356582427757972310445395790364760113691226739709737160229390435277618756638473190571944332170552490809450633070152594584289261880141203646115310669798527612691492197549626704053110777411232286263145373044312167162530511392708394160376082152482815643997901089380336920816422619431162830225548841869320822895778228161845974260076547555073179741212409198418146582216401537586907587044884994019412871141593557043789065720525188313873777405420922631798616825881587591856337111122479017328515762674567714221357557231257706410272940156954742556123867183595026588689379688029452622052314940602666180336012024158736760906758961861017402148770562835125868449419622585955353886937696972287366596008737036840939441529053446583293983024033419279845591313330742783646381378709652672259088252080587476794100909177694410639157681853895484253130693790109168764422781166876374662871467497657674823120711108883931823386157007713610535695805473741988379397487709993577671923767137518860264925109175950515858237590624453013705721517629184160183666608961913180063533650362037407277040037599881640525737728797927648098514892169860066828762486395376244741391076310130553330078956457593511070542450821518775223708351303563685089196028735513767012819721079984145653624379005781827434935455106664258784181167604008250159638799114056685258105292301914024608055657798639105147353808013836997819273631479040593828387970369056622390900454231778944422784112609694921631805345058137115901940958966272896027832656440892333738810460951763386279700490041157841335329276675950623321283856870418204127919168579611224944867530498194135943067490499519771636412569564667745917771525233000388712565834956421127706216956309194715110557647438789862443684821137284371328271470875698749672533558621654169863388146341505048729656083406552611912792023070647637262959389548501329778515283522855561933189988153639433387013080733222037988858815656717990465323365611558488916749663062180768671472143799550279820694234517307952203136056795255968119284189198175986853034068668815241214723642942463788783049137131987147534776011636745200505986722628870103624612435800158465868029851708185337086137684105664433575261152216894071430560579528963467344633057760048256915840056774567161625576349889359004596171889118648848015669534062708490382502632452949674065772355393008804984003838926265348988571309135498851082368860246815701881894794509328464391767582295603467646674632237403817069050866276351164610774140434613916888691348811844504795664243142129955224424675358052193960092449070249809366534314480928358060057850351777892507985160149726583851351514994499901554510161816726934769562514086080325247808374217900879873316137144084800817008611829775150296021317907065402718970546480777838369710972380581088082975614398463989547170819830238392285957415019945145676225124622505282692831249918555688231980349684418765392249763020652725988135201231159286440169090383581467110773780821433523922320215432771953784404522250488254371397728338153558830818601654051130606186818617865890616859301354024037721180594684778000077454868567468306317890812527808017250211507385066538415601570987783300899352666208256965835105764523760697813110270458233041083661115824534588656157200370013564763906743011448418009631780839608644616785814858037460267226929123537072238366453809947992333140853454635879719009444152792512564138082931085661310082258472892268473488896489983225895952471611087719874994342284777783514458020335923000047330764209954015917266867436310060317494630720202936066212700402913181674839968766523233331429449713528066306239341805484244115046386612672277152295897334065156847181832962125032488683657230514636589661487030060838652330173319077436800606838550061321137104662422759688822516384215209091577516854479204499035562608209531953770301249003826833174212130271418753518698698378564824441700091074921412989302142827765361237328766553588418965382008856312093639429499036275016877329099998445298363422167676241540345025539819710574682052535555528665797516525222942441771689984548989842401537129512825919734545338503168416704450988216987539215374125544196112884549379056568913336355669409730955184950474685649147679970052663351754282043954882233347799605806721466682954051316461463961801307083833270877022135998652031045989156206035879457197340654765144479334546788552610069383063626610045290783654289310144942101216121935632114134392101236976194830520178222846914733661511005574285604308457361276222009602906132058092144190201427388860438942638698574148909652658397365243402569866821766212016182653017594793728701117250528180408292842137818969240741966262475677466029123901796722719101520659542615758541329007315862626137807676177192046656791730306519549777428572218382643237887702953072200601395375002742449768259647620731380253740176934860857009734331101823582077345204322960575092634525496654937460256610639703486304377553300087041050292336612971222143530293051797165162113034984286766182538091587533251651671935114727412469238886590086663717855024465426771812515441118285605400648211173945092660445810920052931754678733130874877130241712822407130181076742532874857021257732952110584748357667251579425173959693850682308486336512783452671193563008054796808860223779582650600595737481847005986523279264821971568169433642553409501932018123189019469140212959113751094176510580776434184675394908792678885739368832147943484036567193236584524876154652659368350602216810076593409168891636987376145022590079493141459645637563051256693157197902065614916797088664749070132908406411989579752110189354149329992654003154410977196271740566921605295335486214833664758304961661482877006365634606779541868018707662910435851255968928701489069542093672907745786830406827962946188934160718523320251723451936170838826961258696095410563025508722135598502665698672333503178113959349813509826868322098833402923454153608615342525881712347267714546683452366355687271177981574057369522691460533889603464145078192452782730773986096256739655307336137220120443287913237992324108654098365570541081335861697920649395374753797977928403422153485323174793092286115901866253208077238665957944283141604742945973131554861339230317152054135317904195715930431952083222050495905581065433122379228946832586000646882510940850142943787935357185548139502982084825771563007582666812674829183719269544754051594393629618649715734556963503069849430622400845647643397992672324990388320712470691496788480865220787780663540614605183042048422494218133645084246214938154573394928825037267434282926374738099111997563277041023325307137243083709833635040719485611100500196050119543322805132139242066464249498704432870436421234313877176979118681051053734902468006684917732478375161083182064210454921406964716948851741829389228703492227553777374491382261017569131204174762619082413560859921016579616849693347182153013156745407296320260783916447453482779419883041030126619597901195690294178087695616711762270538514316288768208261500905661245677305668377812976705436191027027760963098828383435386575547832173748816987719578276914309000643397364887051953202071624640739412308872628738067819374541129514923774804649637579734521567026437159035613262107713913472813249474593393708285514605500275031341587526083031934188214184626067255581637546844983808680532119064837499518923415428800316558901448189486840353400512398913821322784481104825983148224150852794397535497964598399439651570275100821188437872614755717941688943233057096527321625928026181813702589145177206485777988320777681639985441978419404021201464115706383485699797822607290311120619313575207019892767606263536492505253643748706204722034839166935627637682514036708289257558297653018251273965838518609673529686878759048705073800981718135067500328969289004285669836929008241896226393998779024484568840599122401520581904068745985113798391563835044667910304169687585816102577278805975568249305711338610469230298140913437531387651952509233412070801494696934784891376083141942152294386979632302899500487836415628609922712498692601879342321985239977592575774354300264700460849892883251161880914778814660668663356517872014271351982935522576625937755791705064295405966987864650045953914920703641164435198502162997823620008371801096776642202970787984410713286345697506158465669956789111187606337620671586552666171080400977417769849303124029634140079883566099233141413279774293427838335634214903676406799363720150387754135894634713922588634372504588215255614494460343285769396827445934805359897146958305709475683500150511871356583294869162847367439014844774061237096964478083563042694625710420048521297215169270861554846512967381797408715921332263201578017391118296401682858182347622082867418826645746161508595892954414002530021235056560436017183302332070996398877947932453555239038919564829334012708681111006049515174090069738701595680482838926818108236318915562965746434820817157609886882832228777571790176818518851437527176823289013864145535122879731375539094012336327483861776962989923327109750962448161518231475116228816600861216033136411905264153683054792271630935034689353927022720303069917826147643209629042967882815504190043066225193045810102766988036924404424805527723882796652222925992902686218584239981680010833620779165795720561454397781213147213323850330696005696737028097463475191314673738366707611346898382674454414167234629086730197337010475271904146193870584041223676170541205461659470102747445880532742101631655487008896270075842600389214345296705640350339843890709534264802164182797229970943743663597069205041632105973714042377058013635452775191630021030052986477261093865273682273504322450327243227603713045493090476561548843205496756524487550629788022329621336070211027349839040343228241763117786378737201867445010583339765613159101144847380190620337592304865359124542050185071708196125518958696445422769736119304694189661959530472400370184475733202013271732248028636366991318231717285566559886087642585954897412958966847417294354268656200915972350334130685675637861145495165117742528747595528231042407961987567713306974534532587346152796979041214097247017080807682716221795614426548794773689723672190123903596746409978461855509009332303901381144284216590183601507723360913001758983487407633361142745098702039652674164639828259704872495269598242734405451132426730666057258436194389565544234624104525887914692079278055337881195956312539377673979668722565464172077591222398732905457666488072318356582395063119248696452591059075862603594428365431018959496779648817276223852286728495655684617727012320268777307906369964432597921774244478052410143590624241835896405901759324253154870155651846870779311161586877639312052338811911266526707679481836783374624513755076270784448492492667305012276762116285154103813601364903984063573193196419181183875169032338788902705402213576894918127430743753541626533387461569439350766619387916580144192625000081169746214807208823772247042633818683491613473128469194680319603259703657190646311008737166642257610819231352416364584730177582808484292695411707158835917223584312660535257863203502397460200675850239081440150238168445675939535801855334747051909640692239161171177535111634959993481242733149636971347268706451218810631089368579976435974630938554367887506161337711252940043335578721516545300101453425077731129121916702942155861745251852637863477807450928518147303241785589353402653506087901810259254436729732652708550456155670172544395663820169122963447096805760408999160373495182756249587826235766968035191208169110721924872149180354261447967994869636396827805743957864107017194541088295105119509417485464884733046225512076662647921862046136994879266003625471416474501001601510309554679318772714053048973045803152295139895236774772135681603893751216604164462355160524262230210080752589399073936678420482051013405731336329425050462123223034439136434654224814105354025759664741713184664809306744582888584869061558138651653999809237686723348874583113875689555973772283514485482717315267422161164487670841616078769162355667581489790724319988819005678378849416068680964523256315495851812541007569302210129718441621346212371256382559274944315885054528626553347929734809269970535809106349274347515407902907294586916179715541249584031912537100450417209500413182809468701593324870577982073832269769298224245541053605788851744450727328424248509253376732561190398043502197183439587364900954775934361035137058836927006472534645933174649433520525256116290205330438255651195982887330921287099495553354611455390373174519207530106619066226401863520998138139929859484180576504195149932618244069374047502110885209016331332725828187680997588315911414099320140989351329034055271465996169521835091749393052935967822765572237525128984497636934228143035109754464298853911805344828081857547348264929719555344816213476700142953530331701730007380639917238849928452644335633666855260563983333616056050145664619117679473771643301659846391051472898570234971829884294175081631581741634294470852246982799060547570069388084243805135169440722008706570213167767831268707930083095025037323404157523938441276919619007367530759736191748956262496370034412076763545573375530350338565588963448048265045213413941515241494484221478530910521043538321644643524576865984383625255137609198248415971425726654958299091628817984682144099225859333283821087674870693479963433673349341308350285906842811486639076648298086108332423527187263973980531199777686158089934180404593272527951033977088878342364974102519525896851640787789304658362173228141193745899974509854841848373213872971788561521988788389663240061557532716711158753173548971269351307125438753163194659902187242854056351284405250523405778478196391633906372354580497243114860878545565748445354937359101843265456411203417498339719424455299234075901870665330562864619206915284968970500037573924894109418853078209916973686112195105061996215919032434069697278848117207100974801663812473058802330975972610442672231671082297898713150644772984528881269546280146317506957626773626368067880643154947128320153042934670753805924707848867644969429555573391811757793498349824665964171858402578081626346603414213544966650533019095973045848397117623827685958843012555386102502704992208734148175964510069133198754161879968449664254406211355060001389034599996211024273939203662190891450423884695979975247856280250309350641000291030544752461995550695604510436083487469881200423209731909255864200713648089270814237696308091642511191245420648600584126013423464528373295376973729201309978324718000740714863708211826530175477849388819622953481378747227652958911942300484711328263811322479873231073218083082807678105732536852918220887664562902883915000052570252128194534812745181318310535235173789579454905247009513531106542000310603030856916717130873181241543781794859369682138090369758385111625013009233394925510962989773289270649377531408632202593988757136838243574907854043518990409062308445449107296457424843056116342615475157923137883124321364117811419554643497194652175181994496934908505241705348549812709388350321569847624927989669441121348337564636653664752757687320002781838740562219963815361285716226371835430079959465885882603882911749863008447243279447773782268403892350206260832377542612114600403944734768921804899783101705593091304075879687255136087262114319399740033989514577816446605022615912224834371862610850903515959151393499925613034446191779587491877491689495920895576892969461451501975508461978973821599849995498244497376485678252239451980935304207927111081890090432963026479873706303159662619372546656921661745791311765642802173769731717864966484875578827497881991166829668653686197692975433871117480988911514000654980119585752325717390738727632579483784343766664553709002094646852114648866042117430168282852798145479409059089761233394895109767500726550227101219563097251484655138628940873528925623663793417296013445865575755324409071936302440669775444588060540616443561272143166456564946406599856994891736814421859722741071116345521320195748199655284331667526683114574222668349071113927611023980892258212616273551933896507159965064216904087092299516967285183726515702651932604299199354317203209910348384717396067084381673424394869983976341689129185743054094022652925924714539710750653742296877283897458498462545775458036900732855942533073081461562849643737372299309732241624459345671559791618444423519838802325556132674960766432886981897491524136117039789534576894775594922858128470533587180597235571121419975406067203151106157635768788528563166053353058911658617806616925767363847157357709420700823981589710154525440938990495544322725423212895617828134652924624894933341582294807425660113018543507595141360062158231485150043603644324234902176152914046297548117069211238704516311581834486413449784742267733350546407346795522422921247348200506697987717468208331112864844381412984478476420173198168531771805394549786801897805577086635173377250227511238858446352571442078044486444875796566655000303230034504842602760913349164525294066452699320896622560252598700125687113899582453696674042793968900468733143670616415086967095498641261790402155096562509489024487551278405277623708972831856438077771414714406273325729709410313234824801088532492167368053349925871100602000530611245932310274770426359174886240103568248265400793878864714692748529670603585170687321931795530439927611048682561706014709243555224181961558845167808668187378822113690687061351250063314655536790144588422695855259813156745663842819841795411853498193003901080340759570613990671989151550436454159339892671116565032047474891076707673648182854109630112365088181684306283574915526029856581951620128496158278329695115945161267488527171767039935267722344049659392467102429280576269750626967574875654053880100248752900045151834891646427493411967144961498337978026146669509822852752098954236797887378874824884375299264281724710149051589430642673131869744714534012588584965866414719023688340642841120338240561869279824899048513395491678314875610751966405446471034210070155338287891649909987598964013918624543210063015358630147260391699322794789058021058434751744512898036919540930258311182126171937338443513109022713882562596242495789387636654376468226212763151985795177684623757915020605923464416175175507762059970921502598996182767201008381569269143051694028216997294971060031721123010211245341454458179481649469674830721950414661611307322436547152397383505160186654483276982931610890196482593056900516755312980626499099631414502942406454054779393995318710620773385754545586564450256089431507888806248662125154905071138988894084833909183603492320688717289296827903532881666362865038098271900581880199815457536109927887178419835156102798551989232139760864807931807640119106971480113890500060804337442933063452328063255231145053961481804266622471048770946484408405006511516978706464607635484400999066746308315395297534709743153858414431400601308421689314431107828296234743836721972335692378561989849064486552436144730117396240294650845800279044005746346328561752384837520249772535707215943444368674485638979862230653985436942817571937185700583964744271445013037099117432853231203727428112149644194966341252779123492433424828626035866334050474815044593081409855580427524334770250678563961772578602023548418153708360507340974867433300321016028937650513081337304729587515114080323910689033754506049045826765689407382331402226874595522988463788394172680007135474401109841425602844870011479743253974745929361690297719845547693585568142871426807136598440672371058544039457313750623845229234169668191611463560530891393958018347872072160999947601995447217079040592216215749027311850997655253004487993893482817018642460207169880448516279324578115670839230197593229251228061497832113774897621725447168744810876489240157492071127019222762450440398991763136396638857632358358944960858324543797986703026096098615267688517806442043241446108967006083605371540687254514318477284560799439805361172937691345368512922613655817913861201320509974385258829596062541903630556503697144846822348575918415487297854158810842335038262640494869052795811163560902692871192414272249126851856911152349809369516322296450516657561083351417416521293927620658063787578713350759275022431961160948715114778806423433809247504733287339473820763381552272336211618676569698096020227731263748498834010021368579613152236474708250850161366671218762357545046133681534858493147655252390328500606117252205161050465970099088993381902600024133242595954221535571505588306355209492967030400096600690768305965390519523777883023405448414250383070371816813926623407388412642323387218765510469648908650857420048299671172263935775322015623265828355954223029328106134212741652346124703534730550496140698851998910470232108200048763385693668574358461598680439249392262551236224368876995917452987055735830071259320535473161445229536211604003399772955181880714512359190110900849566178640987689531627137896417872804077731039271925677234965709920947427336487453271542534346046200939205043027776815113685762987945887298990988831758036293453408471857677613249917902578710278985818607159422019916094804371466351559987419284850512723782659287520051709422277967259635379380027738626533767950692620808702720431047889021637457945756365933316212503823355175510241208472805078582516953925672440413317928917821775935123089259401663070754202181091292658040694652207651834968925284998190835591690161165453545641247099661213159012771677934207887777651807472896077092821215168194731861016479826997265995194764649523366424407762318847083408816696418738238924868233487450575831546068183767929713051811428811889782859048659664952256590566382636966010321003890360770233046273390513551621367549753704885445816535516571027289124291139670743163586895691906008983935073930345583256518259178134459983068830209386157789340397673910763038060964899267468006593005548730689023237384718469594898873771928265472584172958332539217401721305961714953849328765588841414956244735282380736164301180813417825037016090398192736877902414084149182197762403157581738552619679565006889074606199336472779241685252987736810297446212340814058981321173015623530832019452823702395923134183760523453493597274867934817608638358964407101933022570097461930377135313893991145089575114916508399941684484410323464845148325524215731872143045266366085164271750958270888579634247237731523872676065763964784440101677282933287440419889731891706211668433731390281252615803418653719706665583026810196575667813264936862175005492005628754609343565608226448574320302060631881557790122601758682296789304500955676841556405527555310392650160243710942547136261738417934662459723527428077625227720354072012786685048378887624242019969958287687760043135478058286243327254033765484344988506571020979697352196683197067256138733288732417385592309518148061012646373930638926387356946811786390214830884913068543006276821883456962621748550731550057722786683664193819932035790025132979563845710896670276093092473208903470031640030790602508557113381623665739771045566173496940165226678021775021768724596262175865397567363951790661285726526546085942340961356132787053699021419292094659287133176318535781749281023587886352613179304672045445571265778033675043259068016663495583981859635879883099775975220949000587693972210831047173390226313041601801461888336860688998604368206250303124597586668380757024864444409174780968967865906892841287419516332864394672897632160491333596490743309261410200113843034353821619477386988985990653992902528904695578713487603287240903732486103847741391901313476050824284599696203773067204890840413837483768263745329332628690471537374853098760476321103966347187192765067940852096129874453355680314712013481933169163710539114152319075198557396809229885266436541510806883271578142964905327708723618340899663649473043197470213716369107526579841763747040661188669461442703074893821921521324771358058433168205999567144272905309477086738813498248845057005980701209057492483883519365328319968698753931776563041133738660775463179618126660036085986986219221164036417403141892372288085947223029476961474745815641386123482144059675145068896374180817466286046988651387865698747943016249416582982769422310818209865719340259293227920206949587933276921902312514812582166290494209687589158955956275242371477599798698162264296530380005262785935757143122537832122858542114297838163441222230639882410355995128658191911953787731313028274278037920750810623896138141462315338429299365341734106281862295741195885366874181937134933430692544393786251818242904901568156306149259515335221978400499843708562738964645492493867940089785128624587649756682528296657589196885598567346956966213506970207814860181671698856399267486529519655853441746325694801731474994454066339925147052920919331669867452274984994994766863334022765241114058624788465188567008056903847316728796109447879693364107961560403801809999397349958529573159862025559376228165473486307199609257328984831385158038822943149356764627843371076645558043800730534009244650424916927033903353505813542402206583077023825784177456753028435295969753913258494925303102220585359830333731082387949430517844864561732359969252444888144715689287204446376841535471502350569720705550661822445178382224087393207780931507132942756015334107410539609773287231851501032920362468186287736326723964375637204269010245797505954504016339128254464560519902498988810261343125465671605323212773235284537597475322074108518043255490163768266795961225086790284437643086508849169873533663618254178028980882450635112782175906079852351827004748390424562450284939480862473351753598883988787407739734556509026720932869937757664207570706681942465441383643120685447842752104125209824037444990738684930889151559264129651445666372597273000560971099371362822991354219363602080596698411111503556657600505638877820889892094540845390146833680179819616630742790673945304637883366565181586227856853756286145112716671770908167643458358667418208168021812911263299442272611352105543169877658079294689395562011879456153610831869913305836388683350382008348195388356262986731634996644408336091718867481399567837185367483073225008851621992038672640864015724530919456272026589059159996527822808860644761910153976862167888371265591684406339668829982352260689771668552634789420166974975555687142793803302738641779366606198200366010964971552306160078452830480618666592528056090368180013113018249199166220581162188858489350907096337992061919526263959560574533468301863441938542894427753425643100717799301669928394147948784311255122870360093868914266717118350037475613703582365563557280837412635173662386803669133655096778252921256740193195871193596660273063426708509184345885487043831086022039427118114696684626335208058335533061347827915113827187680729141850409600024703692385509062624820113105928064046505593011034971051353412802535756005881746759177287334530624410733853572481923645130534044296590693559650581665423695782863841809828450750324090333764154262930646892313755989239747866907407405506558366222891055190837042407342217957380953227993239839724836345951783986171459271670479700468512555461012366477217078758575605132818823033488906424082178018632518719017699232691404157641671429976417581549135770872973222144640862106436797591414724108195000746903794035238262846061421228621185306937370601115026363618436978871357093015540225778998935878671686819234138739063083565530728720334776723316101086247066399657043306332240367721767074887725415095154984417034774632023126619364510468452139470574131117770241626816325530068097648903294637052054129704988150608059004114710173479190262219497362377192834442831065323925066135483137521161374348385767187202500143824451337388063278133744821069928441158235365200268453636732372574194876707422838142222441342741930942980533476530893244519490763052262599104574533181812392741794864223407245776174438973603945761829669357455082730649988363159087738813320773786255281893215997540680675782113645415036785705351227933245298167480920865563962210089732021593683726191675131710841155160346907479917319255262112443200989643979813434807546604791952530890325492989225479447935303892052360432067537793754179673861224358589446203147496393716512732121027677762271698956138877114920461331984330380423407358673138455802595646184282141100371464191660746106063243523210548000530851808493051214297538042551176870606129444237083695376409325884210296224631715610923429610237666946398331094808015036135757403463581166578990849562217970063461375223383710961794374060760664433341551011776586503276381296682609327088406701566886100533103802540677085372643262505263290383575212107579280614471971409826617233875680124148195839867655312812141809231533736944028440023362053847046161453096132702601086772714833335898162914282416257723715781731534461232714813146371668899113805631423763206933401186549634993232527880863786513544462239373677492223507939470593248931754671353024154295693882411135304152030146411932595190118315479249819519006311065743986703413450088283837127527831898440594333339778975907001866063118720067100844104132007013824578116448437160075024399541826096045488964589492007950221417128787766281417954346455720006231972078711890866152304681318347027842354876203349472008896279373926540873841250949219785504220263490595666474331670949254831854485378805011165186104810664826035457586144506536623240246162475928367659477152521772599242486840347301320200755299648032386838361391175786408786843168843333364769668765091898852367739992274077446645974968018717056974475131325295112761786423824829765975366386678232989751027611316537208240265232931120131164136465756771536460787902687572612679346103231935890442046227365585297842194608243340432473477424903527334990290225741968920985054400919872949354626589962292941425838956282190192554602301914987790531724112440470840791527984989451757593081289767997070495045484160430957728768574604407547787865666608383813326183111981106481711395633125264070912144965313529390268350528938883845022125768174334941084240990706886807281083631617858626748735005135987204945131121492575075089055222833905343437830290328147189241799416694282456535694287239840415411494642465930091084979414672423879513819532803430298180347819066179557395608256787790199975305059521383719405475987438372269711786648924859597231490955435731525027021171390006857755745096957076884297403740138690363757856785657570981041397301542122010648202899971215665368687045166349221050783025675313074111250107194834374366993036446115956037060516498948284028957206553372166815871072276096113029384952528703489382211453825641712308457082340222446153560893767686727472675968348248057884400919359226742419335605367006654342570536143160174466242450697640154943515390151343040392013105754618894265964901838831385723454249096010349187970920049739244267198875023279007373563869758950810282978093038184006750696421062113307616976531277652553748152604097589048942146739066725241923455272360549896151106644546074359984562084790426436077551425393177835809025318303669247969254658887893278660203134225875289901914662879757848271767418188973773160296240373973144789006917804843179731731333992731301629150674552551665143013521866441892565551938980905763229273702622119407322450043109711725750850185195922817325753102523586379533765586569896043101207909552031092278051240353720287340549173780656610450722997549423080178209497010401545947966087402568775961725091160844017034941942892719396170346860501041770190482003555661125415787658328090316196626664497203814140664364529936241004205547308553111011590237972372838025208083240008481463586763901900274135815192826395531815998713157657640958556900987845939017638813506268123021892816534943868714839909175854267374552720752962369288127712968349290843959329791092758372785849387497788166226584270887227338254370861560524349155342781307198462581278632506494637196593428854642556035621496491531320670359262133286761860645502018708019161047314400139790367322016977744723442434801397834228294867651161036949858575418861022767767323262473461470070385200750279705788105855756965742842052414145047672203258240836595371361892850755564312252751622463030147475979417375517909322516609591237408202044512776423667473463784925089207118502291220235124945720384885325502574174135064596423768199763788407653179793408610341694562302919154471430820742487033901417192990790901923171768930447061909895920947923785690034289031850422896302449089091205765509401494868616964562234444471495865821182110981012400544104366424718918559508631484231801562301178011884878214000910379966384208212137525937496642487790467051587061647710568738843665042555498917107620937454424740710123435864079975146619549501451361465506270441799902832867165073753413632249343073209972881144474953629920305141710768338296631486752526431516249988302257381119201517314645007485261883108780946990994174586042587003534213294967431283293235714513758405655569824203428357882117220118892237032831769569773709535301828001361677973116631305006330499662915019576060399892544686189964503974293330734501263901835368596774825916735026589690655178926231528774704527116642352655331312190154789623483113332782149608151982123078427380777444875526202049130574354096225788439068989330831145721344730145702392343046436656362416270749143818801981074706126315150471739251257895275038986253181426108642236221101306542388283817289880939094527759730443155366845000693891088264629042108032450922618379146514095427093301667419920602298819259120956528429068046099849266420138491472285752407280384531813454358621711483896125142875398602467742945670366182720932943527845311984945443238826343204486877782800716398267507697880958953494401708099783398320855696757868122670876584189078023904209767524405643115238280286053414318356965949557544336329344527260212056392685014023322948995446314818110140599192633823114512386802080168354889793680578783535469075687793891750596798844201373864642356795594661732464368336230781567822586656626293860036657990497315056301210072471708577326239690323716373937962885310859013646738874842089959677067143381018814795685771194710822167820829155746334582285570710047431157885480542119927209044913964567910860459412549117642995691167425680444164370305767269706052531868004715047611554336301425336524182879776820448884205238191486894959633797538527360217281044142118943405495889397424814114148091315413878878157088517433381800119298598451285941334507292072217249724187214673254893942750058023555814429689959101917526351272339824342662091780086786356201393131493204302566398086074931614463743563661936510762975144583014624990581583380406749901755400555248275408874618746181114907531349996606923358993708986677014303303383381920220120152435294048769406940975687462076037642088653198089757686927579144204907261219307877573129872782877145443728933661874989687595906828577026915925554648358000320343744193573414575266364448775464079635501845205641918790136115283443694821268665771911407304094326294011774846469505846814437384720516368798807068744068860984879622717203001831172378557374674465178140981345655915441753486900622520136170171691618358929967105751656518670934524792705218347373865826730845418980018414196460908393225795954340602342121798741675158427718077816626311537023874248166809405185018456736485857586746675067941961401639413154044646735535711409088525825507815404397419458739015646093744419295805035874717747246828596784382683754179920916208480095064361122995116926898144526802283209728651707613387005608178307563987754677109623114533726267030887902997848360657882827635477582400616652783810825962618285983155052122690086322560076499758934541965191596232904632948560651994625344333578714983513767280589212062490296255416810228737157582403225319687851436299569493116663588771051522727789113760320988898155131440127893338342261046221801505995159756215947662363557831983372649048990158512389519324340296543902089908941934023365555406868818418383861174720305648286256553655554333234121314666006081300261650326160781733595524221821821668968569873378817720413678171239558654020114462804501299779464227863452315135066208244765157342853937439056309131142114638515783241577191970341144290643546679648886041355866632565414117006596595877464806299944208784179342193879268297042672333467803894424683750081706295625184073848820023590317039207947507114104925021655738229169715496084303387957149703654562004682256027917087666856411483170916878330374565598056523631494639268315946647372218057929201110104244281327831751927726778954180705198295829299097154999525769572640248103985569948865950499960609976294624648241064813945681265255546187820918256591360195330192767741396304774827591654483056422849639509868677711459162846469428203801099606859244001005130560056525508922888737358407217144999252682918851704709392102233097069847196852711602049094026840293621506217208656511127293033840289558254431216849199500434575724300047335687156684305711231998771542534838577383474691761806655930959472514179297902869023656045844899199182441561047476055652153451340539431416933125339123370698710343455980345079876856865049000018736422878981806143715774060503511070408751944097499008885380273859956651020029950247201816177598307604942826279264799837829768591684195219746723853321085862624847422300599519335527846635097443738949399426339980948163814483260950793436668152785528470540917263459270939155576246330969166805339119265089877810132491614319727882409649197545648027152794623121861757039155282302715755984022068707045666724883451077883649688480133532754230725762407879835353959298920066667580320935994639971487394346817200975027262936236843775415048861768094727307335025106329879110023750012281435217367771446365152349030314398403707397355898255330708646082720623008464007720995843609759502445965820873614952170469287591678857108178341162535565330148439450124074707309253159611018194999375961973177418409143931684385101157998316073016513405888460770790831503964073594262811000432805575296720480760337327848789164038311628145265495564706717623669140620853586638817149954474433210147474110331025877776871561808713379279913848957305089715752415654372171056927600919232402800439443325555089725701524075242412126290325593315049330441706616888088346518859350289437153197524955570018993225956212821376252466868847221709874681485177045047602080870911088473646853673431017813702962420306253387242817997509943624086175894600630177140170216130639923222335558990773809895511676307075271231358572160543138805469170243881978869591794359270297018885711825590677446739478656686761801023635646962805206150176630983052644901720458149454389629149190598840079049059745602505225850618659189835952214831638482944710019356904392804171564588425874558889691391704919818546158312889936816062705122766818158822640290521727285331801976910091194230866984792111770880831967687496842966925686173850665284238695653919099827655019593622240909919256446678193409013734999166889424750177778020128646924964251637029264569594817242097416568981034750171674751291799029649948612890515645841063013222185652545418575841090337422809517365607771246231856619209395652291509316843931591081789684121858846392654438149603093844905234516329322462119387742843967691086945123990728517781139241050100168796242374671198363533656410229220939793116449775015086893500043033342674916370391991817106035586338076624493610904612430252740477607342443230575362279553579325796015050604841672672464890368362898409917751717982663240906585094513192010053642132999482015842641454454430026963909130609912167928605376598979563058175416033571052892439240226771305565251382517252445654504972614636025925988408166309690852119831855363563043530260328940370213568947813750611721446046954675839324625029613812015150390357765447798854805786786933621859781901244788735680230541867838229735056162451033677111474457522028836712707252767504166401078652409661325374900133626524543749536031422380709018109542828262681288226796582728101892288966621812110307638283092719289617936515915326410978419855378202287814725163771316766980820787909271286959525233937433523599261741020573520638059705376403734396562834626301250898151405671610226855385843715294049718150426430449596051710304627458537718855384109817117575753418647224265725687094507091906612245862082507797426476950788940762384840253475710481050309508094201680091505986847441481860220448271931943982793311470535542183322685801997437870260112178257967370825574578166491741292983887125528408636450663471656171887849868757807468033726840128357698218473708132444918838057510696545424946987394155391262235877009635428177620736342958668807272096858815141246690001717953257916894909685413029738508276644378735327726446183824753504248778633679370561991986093577403941183872643722600718101494982799357227660535828498467815640771027985725316653132425218918073217284839695949344268802415414792342425948569833036271694042102064966514516167016044782357556699940334978646918053458255055895275787721026398537815586922356186361176969481456297227844972824242126596217141856533102847150307802969623488695247641383645557453810012607411727753313812928678566998904535899398401114264224754374561218471459923567794838438148206302635568186645851890825044287224810027347186891690453826905254278549251020056674152158148200878587293806506653739037063275369588858520422277752974041303036580587429735724451995404625779664606086744324337988832795960173806528816524238471691144584812988402406444182235289262967449504500397321636550007873959345914905673959548660747916881770630731927490030415116062195508290988452941012618157238100978439881999323203111555614490623761699685717291590837911299767968906246368328527045916914195323218291110850493001202377884781509701717953332046899840356441445311979485832659185392033134415419773612477645192113353313601226844835115626276018143417467498526840621994248421478364603423580854558958785804736055623671804590787258314188349160428339904988388098449004604830719220423100191451342256869967707133291527368653405442838871586648794193851658001468667087585161223954099153857950459635740057627111775583464908200807090073652613288761160477914393786577462902924066020880937454494635476360060770605165249905491371856667056320848377187023067194005475703259344698386428761795113942824692898912059810923383787059240020535985366972344635714660364600876651850439357158490946965383019870764055670973311119545319492711036244450728610364187328422429970769424196620927989137819979013541989125310287543912658329601333122527369448003967487491539490814200198933080940535634392396877893569070345538346472317644302675014096429569139854132905691406032932491665746921735800259803561324381275820609696248906521477753721441094055896492228616045201948819397299018396284807501461498654368567525255810039545644130508032189458952066282661877628868289460876001441648683375741990413829711002584583999719875412391008419843629916523103045719069755071942715097329129710922058096101193452936375606756284240533704946548057485290515570305403258307091871968689322227167501366769700940397468385010628346530908432600818589564532358544156956032984492235727095755825068304420108548082457021520497048017199792461741130938932461833032856361837549432000401926060418337847354506512345926453629047010418074704073437186114617688381025679268206836425792495396005785704220891779194225357149311879898866715890812319921532424577245029119575746763122829652875304845188004896706877243873519333856523787949641629951388999845415094812642426480986478146426705768684910077061080292767571157313507964074518374429696985428594524587897484423227113826294894454374478479710390742793357291137705393022860373290490022202080787021457488692438757665114006901640580869102163695210852489350388582198383763899795612755256483297804526888892752400927700209863111565286005251672901769711358405077681365383151941344176616578537832046488735746346053190945684260170958151581151292932088029456804123243684257644923472309460534428235282605593344374163381269180853204511037062613621508321357796560081589137814329805181095176608636729565305141430507810907441630976908994555558680217729341594475078213275986764996682434829766718209084746140277909111610908725846935978687217407371866520147856408297074602261846657129454245421662619303882781442528351924442340672527587383842166246152735756782651584062554179446646176691901953429689301563696693373863197966392949429563254006173336534427586873305211214022531478765667696103461963921633216554469190615520648382646918531384537374575866957050023704346996477149212636156324609096293180594088821856983123004530454663430222223002427863934348148006628648141128310937601488674103509144975672488086645845733215620587343251625611125961543823847628973817088894516139436415036015590010654931227127015702737907280981081601229499875760546412862936263616693274027690992791727963251739115100725613936736754965276512928974970199464034733289445365700954672097552147133967612492186961141927822481177245040686223289534931837064144995618754281104725093691052080035456824721568862861047543387006576292217696763297401480446411324075418058679574849292764884320262054005406830238946021414248406483980340670345107195334095366941991121712228030335352898294428768275097912654844155069526433197062362431060890622148031517614331945619801703273604317049455848513548893642543208464703590831954194559381742627711244291322512487980297963235687043255450184903830523188407658851490717549739389962358721142948599427172151546591623670955583160709143386875969252875498507941740082639040066440027889159783606645579966141125073330069882389425296406626279585729693296476038124956072194671612170386502717716925778568940524665950778037540110515817563430283239320030130145176026649184343912345421206935267705924120000745098111434893816826065373783723852182165362599759043748706551085799102282986023291380093999039729721384929654642433088742030419157290694952045058361085301183160456768610937082658934331268074045922631349082413192532429638077035239735886563875989756737913633480721667508994448192236781734923923299217914401372000547962907360711463211336697023807098913962918942521885452470315650757415710308024232583612625847231527504793263399792408793251268367975278063305443027956572347008694530017445449764088122587686027324165353980283498711428951688238647307737091916219638853370242142201760093660842030781331668059631936313607999389968763644324418413644228267182954221396747103108603528209523538844700153955298681148701022133227102540305813567069943763133300209759157449414612551110535171403872773933781265684888217497466597467258618603335120893902394354043942978742111645970440495335089398585428057913694597654870322628368462401384129352436391682357351925646934012857635700344494008423155531132040556888851673690778311561743781375431055260782290109082266013645040641327041268053186641188840014789587942357870008716900568706522922500586950787132027449586039912918978177405907094203781449990830081856952644983570582027315170068887695979816930399222771304914090741333142109506282047822145942234110605292912262473194277531566763678182788634534515108865720232803885848206803245630081155974889687276501757399628263553468632560559920504298442012337133873291485701074094719935411078082751705846858786242031738581511154385050912701935841614103739451802949364849894440013058853427195994944441544284519979860291991691144450992497404686679221634601686075521261219176486823740995394673299660650840602122750967239791107594482920254412909739351422967813744921001413960327274210647355015256632622148492684245463209887634251244194653915367988466319340552435068427897765300550023876323285230401529105265191325837069292073189611154507279843519166320565159535393317984164416089402173792175679062238164441806606756847042126582483178203889982750905105999592818240084200970839813695427867866411313805380476943453616996091531692235514560370510526849090827130993887101783494219953870570075755279578543095511925848534856609927318816046149053573462942713634088921642885843160880465485415515849221973119697473390211644860505827438017528654253111791335933809490659632450960214537200160887941724933151808867181763911420650026190788760991552231873115348182481945354384932033005995135151817388725316365269538593907489280898086329291072614175879664830672453426390766335825503706971561679554024041316882163452361321963441051658616993206525664190458206994463593794350077577301151529023279635132730694938620972520576678406197477279295090911748597421501499875614065399361790189196327836111014945762697294262249493935346063676181294075302939841077709178269138450251775792088817046884834374349716709755220814690153212932840541891594258471478125758704294152458893713010718964707986432401528067717140147897205113162277415785363173495086039326265278168466485279047782710106836668982193890722439833896399249454493783787387992541612344351854092781766679061442672734050846250584654303638001968430948157945113607283484988460416495165071684982388308866864610857309170834390846799286063461992145351100318666802810093759703547839920410254827840555507302564272815607428163336938505859792800206435722208194310922397143468437825957835012232864962259056266793067532578822794078577455896244673693331620766284932249904432895401620245894610417007825104472154617055809381329052576929301427898388775030656075233956784028532166501725061303540694595459688432113646003186347248840677950852602000687414698658337612892973874058233355455602622974044318801526473269874861362721859415596605017207282615234210365390691697790667881906781234281543615145441386590555017009723977623852236399406736916303865112709610720713573842595405598951525080369829978066475327720952126617856445125934392810613229889510064179880852825672732885863316106971677741505794944202138003845317713236221910217754971148483796792635775814652029734874720028497842561061639593563014318971675913893883616862274565392819264981845538192168097421528948436120846590061686826423842784890571615366474277559009043278031841195950935836827723535135005318278001560288713579420902034851735865565745257990217830302913479747270398494136084304434245084758135552944604075981390808281459104787529229018517374087274639686679444539571427383012760649524757011024497612355057880819215746002764716657656220969296933817445568173726315285631875447557521584231640868435390609073319180449002041363017319749456449560496021639989574402766420613981041632646111354187154567610596605823759024457096523590941430944480079249038743092927841215131485716025329201580568385977698605864144699547162804748541384200102258293799364213058746621582299084877864245252354596063551464679645103115002562172227478251678160062132830259578202133569524648665081218773539317505348196769637881412184893294426261057850797758964290296361174585618308433518777693231731271443475518864699878595162243265355630020898650808295150850371566837301194676362273133457831072199860674091236086521222073722323883779024981172685654289753136155831178804480600650899302121239567461648328613205546563776286067685405742388584195628333898710350548576720669979461139547012253630182227504691537744431116022763392649886229900816064354822837757584108703567933589658562240039087286004113743312860455933531749131378229651494487857106633501347733627201584440876061944682428955855846396105414099384497393006417736003515630378992420125320377251274999459051612811416387684162844549960933926029309661194527923829976558666834232932033228983611488559545015014440577872697956004106334968786128943161897064474326869952264994564061409240802904642029999202288596187115238871091234631640479968967038481043888956521923321417943758852698542969997651877902954647327220734301523079956740051954297327918861838323455187390426305871772983460899932300115289286143074839847866348085912383130972520367346545477015330038958957436356012082395953326197177111262530948873234880032478088704780806628345033665879970293821086524552150607378000983891781698066032866541886679125966518421543032688203813542373175800931258130237491151647990630590483649131298788438631424190473124669926474148842394225473122164174974737380702832020242073177887092420640032286909417914485151878495731244788349386055130888046934570560449315480450591525257205935850148147097843186614120704001008588380289342433665529521304643658093882615008372236507604977802660450042026509777668697685635811253700041167469227804028251085995830222953604587006511726383969044377289579348905838154117986789065350910426706429649505649683875354799686597283863200497013674938392101311560807625793897014111837981594051345796048162829828505649902621512289609113621808585203429492418964776725835774518183448496224522316561744255572948760973012046846238819562085842186997039118836024644392199130863582556402954185351774528069337111660516576556090824891867020088562010835225106888041371333871049942457893461604926284740350508718319158069402872749618587996845232409607593203316084220784347115100383043728454908561430580417402037962876638034763069121518457882787837789404837114402503339372353817838591273372088996851863287752191487863811746481220181192841483742916890733586810557721446905115657024087892022480703176754563689664091281416157542873969334529667392315412866785991806035692144585166599534628324929868180779720276669252844416927119342591791595943931258030300196149137255867753761936422709036808064006080040199181801475546117688518188359077115264723075926835922782018899783153498581296789656551352688349195338898898988439667571765117267290954593870611169440601946097024577162194007592698502817340542495000448088042002131548589225930782170392207857113885158635837004112631642838979892464570471918222851408974555264922388667703132171223324521030099276658774758736748737237505447749455985756693121354347439758324367452236215954115025283013443667470956297341472551249846563535982121119838465104831543128639710290367680784288308666998345386729305446417987894542419033610019202021816459285509636696209315991136356275439622924723741402807946725257426724322873271475892106219591109887238422302562345909676061814270342261409585938747088974943194027176171014829804036951777754413231850606896583205305736162756576221594096205890756313688541436815620080518240823658239720222965830424477579601342741186953885584870020111612369842170593007936757438819237269428725243112801242391953272036273151319199570047743706756229072176642501533641151841432950056771759713545750338788796514186006221823768824038746537050881337758200459622337380974166708716861290204868722488940778838210603382062932178976952193750056145394977905998471825033187422466021556634946260157941548824576921102055367424608879265105625489402511125526154540967174773246876526304136328973891613768491492244537873871026857811502817947405756043966133905672871302696754334617365002591647600532410861762400934930189271752773696983646380602004570976743353156939831435789741321376415929065388439213322334780993803551088746832116033184783844275820558666563925460447599299871036068353489104509212648484588077940304757317830486520745260703259853731347340341188901867266234505500296171478976818003321187432622625434649771330966779630845743111353719391155846227603243568107036836088542493655700368923901379577621375663599801467667761934594190225246027577383797426202212360741743991460175850266533941655249958743646198775546615155763746410033910437993828337830417445021080213323423887171763509732431306638031270938675840234599784842288596348753592263194869217141539460611032405922597158121075288216184735286321114036317828812478246309178983372750120550184650937891878266286512278459659255374009050199671180638840301882082997578723768242145915700316679190798935063386474787542835932882719040729157456144796283554125406214510855660749129312291047242698736327905434755342237234715406904510716660758537629124845964592762681404410409213750323444772359065972945447674827449584568402189444369605180309483580756663397266463359361538576486580399333516571987860593034915930042389891873468038046743333116555737447501269195364201110473732575737756354550213843447556661319757373046528191276060562109669834056947438573937037340169694739269075212389272336009350482821114846819992887485378846493946301435237172044851017796828523916075530398398365354392170399764203406013881428536451963368731942917274949016339848540615397619617859612915726996937494649147853989037381969666184001664693222023416513005418013641604243747473150340236477845021701967366976087046036177373060301175185977005229883005536781228333113157076447802445704398914967570550613750442921885603762555588413118896030972747637291034037956393872506913987191740315014204453363237926315280661642035354404639693955960648628103141070409307752796557667898668182782583197204383191059508179144995664404765446603813447970818339747885125969574968308828614236712480675474352455107162606053308510339489141260551787712293349367653111700384674634074592662507638153791571716159726300757316774333225732080621601723236987779631044691882601387582663271131074455816816251605484409950520941447688494406006785512833400611331205149440879295884733870817556725570077081708147940762747375213224441278017775084106677971994815034385755878046189857017011199849304678078531238396101561040141172556609822657180316016573602795516121663721939253854903576515455336100548502525368524621606624393705840213227170871354263744661525855005902743856920822701631830474521772177423501022844603896226716165433451542286651068734633107478542588052105256618355366509794910306962461025323244290875454539034031496006081466651998376013077452245543864608171505890400845542542807372922799518672013728432768823520225815543384729425780120457476294462216172139202624704720165937968691883913442684104752620546946275243739872995573091991092888874093241131732531679010492315072093636806262041846373992999028001034795197758981024954324884181628913748187648188551954557104522189628166457871930806423313681677566431691721309780787817530224347401017446605595925402656968922093838829052700010318888884444483910661730534101400991521540085765968276053421308015031798019470633367279723316750865278210737000939678436145201983065005557773148461744684879116269200555693225174828808409701896496391709892188189536933151949165035360676409828974966993765888955798906662035117196878345803083298343099818700798455942436085175007308866746010760320936400574474642404123394351142884727030536939824641555694069692157198333118014345437320780939814316242819637828291688780464407728243710443967495274866670871002246632255694273012305026088488103680158549630993705880348564035623792127442829510039208093852236475566885158302146210243785874575972657664193866631727996285778099483808556033816437441899794750545350701474376372960826586612732826522484300208555367954662604589518123867804019992545756622951709253846855746989894504431953730524245754950018843220794534625154439058620430270045100539354209374788830284658619247914042651572176902968295463050194742417888767603133422807881168372414824054917315102463814911824429764967687593005960628036753533015606446464933105956729550112772441045139565828735451733830986835449736033448275845472456605386651367273348404589813428026538315014355805746501839828543498081026164180024810829092202513613339528585684970710992400306117008036143967587476705910783218344778794288846176704712599471688315967521613868557070898659105816482214870564201750853443546910418470522912522655307273925657483162946870428398380891135488664368415550236937277424125343185863403275536427262663950502085234651867620450064450574496031729165840616626911378770815278965319306342419821319602136331234201113311529697872759175305525084679278539303591351960928960995006060164775612734929121825266143358893020753467287446139197088274204018073697688044782949760031553280311673428000007653425418588375432221401171019311620297687043184565901505840954415747547769314126463212119071699604516352153362113466549296787246202827815547233877004327548280266261827307721223338523015922542872457260023695201474632491887566461715381502753696755501375700419410157960074542156599135245609008155566833800489551189742841771522685171127150245501160379484059749055032040131005378409556616497711905488234993071882730263048615956006032574345446137954728132714094076935557634628042860213214402790759199954434671795536548265848982164183196820474294014697067834705497679379068188779766323855862616636301260773202879028902894522615141122468475892213054014615033943731764931182252973627115937581145883753562521966499829370374950192267177677385611168416366175102735198037915081790766757775090212374393821216653998509338933036997472449662651486355949451808025521655357392032594032794953152499657382477634164869093061332569417903637322420465327868646333309630220568220132073952162569164230834855953387591482890362295128865911139821975441627924847606967816336013515096313233488209938979586020824650108220365519634013575837871205310469579637151036861875177332735439969930429976664490344366140349973570115758752772177622359988718835621144349085529221462458953138837167610289007833990917477485266791438704504642978983181663170979247918763442007332464634534410466266569580599974858138418980911980945607982949006262797203905243649232598328439979399452185861245688077430113530179535596015688446314237680738543063191790726985524167899975232772410654933797638263007089311538006818972211399829445100321947797238429833978981104824770698302446209576294395107664435265176042606416623433801300095491575054534241050901312149147001572163250613021899199448369330110239577185754561855975081799402680854322558618292742204213742671267119680557802871962582407321876192218356210960393444112907576252980390397575225756336005939772024709328581511403743921280945075759947291650025586031552539575480279714727169252054050267060219287287736971604110863154405746220785215429916283261337804549524260841970047155584451463862701454526409036653588752149016383382964035363620963809165368790612332092060364363087204502995657788270134597816287388845429099720882969314818043077506570018917890975623358853955823216274271889982157044616175084190000038026573013323331068641953242268062819198261470573530573538163635326014911036393864623854657850266188937173863584253630572966794371457716666508689448367437670550084966250448809207649767582231227240036079766984140317474177628289520469936353216009884128430898164981304612188001970206081601969300095625795981603422627129508268462006941849798168919085701563123420647015780941864324722579963902756516075049523098416214189431434634143206591435341963822963194620025496373426065188142900847170177102123227069277909029197995644272979757748139951792370732569104861823138420898782554267172164508324742214922729658004661576400164148767643052712025027754444236814650044355051259393303368682106055326049939020647578569990978395180768904204534772665105079631925264310129742510180905079865130283643542855408385976685954356565413311815717338582317129141949309732969511702218805502626240478631327957944311206214601064668225492544392402780266867877423274179190760511141903768550127292142798263491979872676731966638296671858134871303820381554253997035180651260094901372653034399263169632484810276955975036947726463523001741508608415894363793822436689308626713713164662776885993880112875578970201865824434904700063111967225452084758054814039699208396016613784800503680067214781306720410200070138076088863940696649206054345307851523452337454636426734392345459186629556270762026568119900994248766415190053612545031039152564666340840292621625357437310868375924632866094307478319327539984580763052014258808471929268014777516966845945383544966608171176187838741688213603505748300748006554878944342657207573626996270385619196511252116801881893563273127279754434074350392529357923174234897658190311618747945436369026234287087750306127184792582410132340729541439358105805504013109810658252393835965251934399247288147280892895165255511170927382488332944643839223683351915214535463096907040082157966409963112925884933105244052959659737012293415756377240292270974046565158877866585111053094736793076413487745708192485945596292448154740637594225840290374286481594481806892593034805889076218929923764901670039120104495524168931667850528553208738259104120627761241405422464448195155742211494784215631356285561214727616991198926606787958102712210380122374877611041185004427892092696039935548016138878530554479568691798310496161937773667430142846746329866049978937048309524237398668191638621064486624858789880542780746024697369862294649512360118053694123970693489169060311959635947614790656398029188304630758547402159252589529792130435135913973719267160939322080339664937232618000337253384186714806315784728157082586055980479118603653557721654168750806588910570969249159079466810672182864490431023668225870828505293574663123990024779764449575577223073594115820242770006217406020462037234341153141765919540162150686446641024939100887608728262619375334794642716704174820201338432002160266578839933700401565080216133679632768877872420429482533114256025313248390286430808541842289545601218141642180595617072651482744093756198200478127789928435809353608182038947602371441474515095295348020764929303570866268089200555494504980074729758892448683046547537074248834875290955257138761935647518725189942679116647255409519335886155488675905473847504164220880284399731234654574796209664982153832885906108399093272463611892179837002630261016282688341453091137862543652933799406560879491989797506699485752340211938775920826315789359623935555297197163688119652545095725197675609685863710639117974831157857952843860606763542597639135400193817385728110356547121074113759066051437947756772463552253534210286190395520901161174173863223623747983611841772514573471254514847105668155999570728864338270059550218990722815041873369435823978313627984389876026034874120839515021405736140805698377324737849572094405987304167482644252059657433937897887639215253557834244440588297997413940280848699394812891700475543300657566736256685646225171009952689571921615618945362119773213434801946803066957285064258573170185585564806715730119847186957743571970364835912979029699785300238240612229844972506908441401084343014364516661152239988000833187844444891539624218777678858051753765159529807322274320428424259993263475713820307752735214152554233433544360156972962076281549057695534018120104075082693003860992505235055061298329292077458629856973011758556925640268104166351509330935363670412972981236273842667229303861935187684765077475483985464893435339710800832015619937520394465019519269584765323814843128711916795948865400851343918969902470126411848638087461205031889680678576756165925326226637212061018352685067600826484854628729629736510476862084833293215136464293011568220538565605011194419158987815110150533271598552958303432855173689100617692529673887082569113413132490958720132731574864941942371175125899073045174051381211584979980588745886166723259397669157510478560572888030063231023764596613643844914833040171795768001122927253947158867968712100641969518211800193859425724367718967664313496475875171878750229645135328347318987481705695551866309048230758780025814297794394573912151624388575163150759527121485056584398104508428040873425262111654188609006999539994610278899832540188846101394314410338887791946739421034354241819647616512613244816055335506987098283537106156255453300695949957060629678670122085934331919910023710362960512599241756097242456078275682842068589564153203319618388394900467088279755458690597995097632993850471628923418859727416948763925076785713431978416953654788051189431772999356945823772930135663438373024746106034963508108468104500632158800924087566462660384147454261085400552090393513741276642370808629536594049074944003575080754662977912738872444272567693724543134001654114339334497344249992082200689910796933872990619989621381575543177761530750396436830082576723136531470389844722366525750901675821114887830740299182643959460354327908065625662790304494901638964225722392412602917949188495376348738452918184675083692621608062339794284206520969079741955456672154601087321174251777251671645910510740550594575358015281791673169947393090054262430658631278485635499511479523889717662693343022263439602729365579277849474734381138091190871595176372918338472055840123044806757140970507940942839681257105394300072735885143050885272234571006719352405634550969721404522832382129788367967480375271354812193834078932691815661804633260840928044463052929524420241169215175151122776246019934715516894916255586752555461553461619014236493779051620052979921766374348350848007321499703259948196532661623484290551941995855114184771481302037162943539737089950179481215540091707536828112477078173488003211440698235682995765244490802044518765231727625907751425340431742090507694197977581719191677089965997667045218818579422471775196198824070259578903982915818787702611226075175984698616030657690986554134191650552656881376159208453628586793501302527144162604538004089065015437790982520140615688426724600867307226784603352573140764417284566177583931307979372773542415176911830265679491416457771729654059910853667627516062546364785393910815019772407334076552987965174368707162650751975231792898275683892184310058423887182168476207222853256273649211739426661970320712474857960147591664966098766676635679195840241226747463656456198600659100094236948987822343313744121410252539928101084720329176162964548303286784728983150534980392403059920382233742882965087878988861903141740951105903009027667222496143445906401865887281053303847858650885989692579778000971452565559509631650650933124330671618911310848783172169554161790432782016764127279738246204955084279097663842914792842442419871300604149258805987970507553884111356159340700398716211646283663365787193655231041251063620521226982357673836380949441335764164341199757254607261706849973217580797724162797667017255168610036555344175405968037279326798712763710203156580762853763654475262878236311926588233280165579614928323526156363496645957242438857883175575421898660288449220969711455865879184112251252331494825560621403421032703272002694800393547071206255172278794618635547393952878645509611738295760591004140648563546849435684157829919845331983506860706794493869136236737809665605353125304125263088269410099842284168804409164398717332360710710465025067416624450771227961109517900559047051053588902473437918628065687189930727153471258592341549131469414456140305470997477096405267956159128297828639455704229486391066718432141747832927914937308771843536448030657725498965697230718244424918607504725750474692770973231736005421279676633082879688488893354371827261901279484714308674761998085191533484880756321694705110988708898153459788835595345842163230117704404777069561192250631118894626305574312412825602845166574992480849978285607910751147145655618225195483885620764760094090828406760850054495437484643188915252126141707902783049352703130225069934887943459917260873297229864735037328703176461984160152802415026246211650923479893534123843660717668121738782503084935227314802354704938580928950546486917943780266902866350526163285964333740810949812958629701469505288950776869724694208051435594601782640313023076192376963345591745372630730112916860488865268535500995074206658606819557097980661542086765560280992811226565597541121191134813663839397820908858896081299357085797370369187798231636109892998285459851518511913897388021441152783258473374569816097146219373582819105514749893657887620553448423192369237912842291414987948964567171895796430279715271727852816485242797637160981758719581303847937830128809962823811933319235687471632275229739752161532912080038075442571547575221676144246963988132391823072571566978753715581300601280733374900700000682327537591634407794344237216257133165999357229644453145257256579874837607705802486832826554549089716513405474262121917589984826548157728706817922760076144746416987938600189585345883479946870290009440298136576724285225834311606387752633751767062495890835959399594360938377431946289720657592113268496410106320425646100519249688621887420691690061868818076062085808557834622428529721947820415328047097878571913480347816599584859712694346383897157075318960478885795992298315008518456128306828627858755995880864446199802921790196478616651312395022027228725273609117642745877309975207293864920350826956398583098523886944720992148623356025865204180942257286125323906535761645037771992890834866746532035527318925987341341454686594852018094615976907307768461867872954297505654888239945082007050504836663691833196737201449749196130722714087158698826655046543062808778446072588160616286978915033045398927980612600344760111254655560584794479317679785647169623297209816391416118304370541184661189777248433373247875712155390500763094738603963779115873269718650499402202670385497321029459982833400411677778947338234595154419551537162351922541605175438692541963005360897491541800039620297292061117942255061939944296119174858462755299915449187787994731520130043563500445742929064594151017228193316770866553482920016078698335839287881450383906912600416261348294816996169019324510216447351886301784307124045510819944450773041167010734115415389058906028095390889455813208243409115728605443854202662029709743044951160707963118930637159532650211353643444326368611288521544431313639965582448110217628885417768872335263450470527868097993767556846244581056930481618065530911060904675651486034529913482384151686026273023338990960042601272096380555540626521126544212827181291188402005017748750951223450377855333779795514638243968262414658387536444176961793249573086240800024545717267031901251944325101284574720380171345125090884623748659217583342223784905034711910095026066247070700853425846972914716592466082904918848154091907059164524685524577049227221433655855883132460815694581336053016588385341580423205989898162182317749450957551524588736596594527250970757028989901394513758665806797103566561456716824992149583754541725934743634858307058001357731695137641981911150679721790099669808163053290076631355129306280002740780029967551081899441648884106774307699185566703434593615018373625225942143625518682126090125548819011818153486290373329616534011385225359219044819423107395130394479420389114280849127634255322094506291540560294537518372466181860262512113419795969433931836889248750518166774811616274313016525811518996289286997511906032015933729766382039545365603073184158820244707343161591078073319034134048772285218828257539623580054460509520718057538955510672166253938190610971043683397436617968124601898159759315380920726938107985441099404491852548438430082853186468951749014418812382752287953455669075752357380750288609981883283063399854166898109839069109143380763614899423066860637833517011067219666718059853785687178838962907592301822237392961432958122157764895622826319998039788279484589756500018498988023483302721314067440409225234977015067387241142171946003992380711964127732854935211462997097019277257047628550261086176446220501950149601165374496296020887102361312273061933126325275688076487993525989435456523375070450127889797536405908735327707588743150063852974526762417526793962783179900832515564891387049397393798742974987562880624123039784500362613178061843448425786053699351760471591018188777457728577707424628897454240340659935508014749738317106250503646273196859841926258417547912548612143562193341561639723674797525909703423805445452021921621939255001280674600616889767359761645977797757353640416523870769272970822593872966045088052619553493152847113652771241258891472593799676771223389798063987742588820414890050950791421902165250632272459454019227375041253148380107624617347252405947733134182863254234140310395718903513792637183682718965700358921070923190023206212038897806642705059265505321324316580371980808280600057031578632272982257066586254007688277740922336968471545558155948851238310498698355205266844713812512581002137732915591665584083513626535234518429157119305649827586760377851097643693549715381350140688846021618429067322094381146553132170898121676668578087595920112732688907490813683781474635396214007478361847325830394275570982686459878242157889010744835385183126849793371944723003172575925460045080553793803515282109678155176236024695538423978200868955194483451459963512742951772733470821611513475576881869097992096681527157113407171954494676626708079643504979381894248033554497137531537784552593621992923941840131811091036474823159916941359761261975699203684691816562925726411312121047349364253011419107937720025779263439365295988171882153637232928538435158801866072302099889444130623014561453567614543209127061221315777442298695970052807878385676148257372275777428577333610404490029384547971485890061400104427401508420578844818275450069167859197926429292543028524510694808900284805834998717649217307035240500906677296640752004617910687613218744356490933754241991670938892271120096871792770036910254692690723602229861577999822151954814024971233184884652631733273781244837244177084042423121171579660232214731385042491307726380008558754162982207861098981631558353297369079286861758547923797521093341838298079674712539794904195345572174025741526120546741169887872665934312311597976396875582833971363054077788133950814038961259036287988539329024176593419241299883246488281445996792578768104192125496160881636697060804647240746365625308500343733364855354786082908688166723659803462117841340510109785244860159287299381436260781643270138594228101009225180442810111080319967949282600625443415229799214641558001747574342411445131535447575936009864073497309400821381812473263440101872510658799652984167878320365766869130711225906622441784360335029421400241368038460999196295307847206399490655333065616971695099421027461834710031566485543011532973974310134702452144673517040528252280026800358609354714870671368178550368172594570745359705947247178363517989600476626002568010203864551542642191667191043342502874510021820774695244034651678264735621108574774492109000618265388951232349136662674513475250814145164408239357188977785016404415970208235132073609127598666489550812402366320424425577511048139267378483095231605861264596478306257164435352356522571378566312174264194420481584745302266609320180053669407824542660946640800373862243025486444039998680769478649754894510144602942473074757538591199230661771203105132315170424409650953047605480202891441978086423759800861339220253208762385088041455127401096300250982192218885921875413816564784515118958001509927650725585404620814356172927857865365347686829800185653978878905921756520611297935192569061332779739765152900418966540343371340664360378902995228439827700458532642403125354169402129343196093828527108304454916575781554607911751961081355275639632096874332356343860982522690518892358521074710958561632354813938211578082769882802526794599895775394144611286456073666903394853014800044471512822440562860874144695501144431314993980823071030563141882811358516756100894433398560505572343756651917282639971114900988568181982184787085011415206406120578967456306159027337245234821273878506222896405542302124622360176758029349800532712582816106961304880360482328379784727982423435660368545533654569135492540361441067232157114997307182419045046430124063879715328253800838138354141251788369416612215972745665498423075226323528182532332398665330364068584191334892031924301011598374397416558110552983257436288980388739106337829720238438719736360831032461991991692431618563600125548094439893365407647860068231703960420609880591975039987882801496242716823908273110317598087425879503163188132449860401042749062626265625813379699220758615002595956988083121706874107758091276978417925649849163568029214445578092144920193391105977892112283920201467131722683731947252485889254262895947013292401847766374212141987967510986152567040360398198138095257505635435525341876801600339354451851793423250311191882672123548293072710123859770538612647917317227963279561162947266595348445377463905471300029614189618040201330914185570050630930428903820323003424487320631295027123957235463098946601551970967998225690121606830707561044958609209881995748955400337504257992681293534016275944726990548066126251683795906484591569706180469740626342726693079386269359171909728188927460567206030553328212929345695976517143531112103789260004344473517648930216165603456460760036634759301164238577864178812732781797580049065593313765361412844820504554716338749263653404662796393151038072551543104640375846463433995690182808158950460715564733887939071311058914742964609307454752474093727095557407792233193164479631030512528160359556290433186603705225752790317832685170653093542288429567712886332495120408602625338603264598839830406811942473141911706651934230336337795251297221622728693236391253900535716519738564724124623068123390258337064571691693171604829472540545347642507541771668973326353974957187765501514445358120970386531660267300692396675137635401336564251811687559765463977725547838774836307095802496686060087164971232065258869272112647721400328798042023432004025906310759724010059834483663951239898323295145196408058523795761961099036671871190475336687724921089094246882879229568514449144860895983765083966809977034351061750920974258531303742390702707789367225775440649427251153811015292852568191536743114844555334015877169352029592953940111078155709850203853700923224777888638257846606752767091397238771434422516374502465714587471454779529399386126076772318533537237541366105471643646950511346977568729291376707415596050578505143941515249524653543356873408291489099886181796187917137879628565778883244416277028715258306938136365092226909806411536132463689692086657285231813996720232631640184249359992115352611953571945501611076471346716892479994265034005412840813089984210076693787781858407980702134409554005966112192290600919733660627282671556380098705932156972603933354814928787735522446432481235395281186176388010399188607233993586227357979732390591231700436564141279839011892326576412757614417758709508472889913492159972134900584999364402439947922226866286972880145150207057996914168385892710201841266409838214383148486241894867969826080868873054328622085949049565236993508302435170323241736568962543647879771211929291287962122988441102975708375313925305937551682088447379578801500109295246813619954636633023988159961913802468541835181132647908370760012435680371537020632011933855998831649793148431834180204307428317383944151355436873232848013037349805787632459228608107633992665329517015268387237354309224968536424098026658370977157059036482690394622888000956738027314026500424126158323570081225310245783615453886437417589531087345070478622683381079477616778856128297288927605104348851573746917973036424204694527269079478473752894656490451023509180378262868969915025870509109285976633013501864788351136543846484222496164817099133918821524620076491352622130593629764560329186731153552240936063490057245246263221327361333474886809243214597123852526607174258556091451044214576956703232949001603351417859081990595404563986936931104903012156471267902567434050468217855128090247971212171503760549979230579111245282619756930090278702715475867150023885784513036492088656358301074214842326465223178351147670469890707276153763535346405835681905855775830408033142995148414102193207086715683339345947820528358247469117110215790631359060782485649428639803148391722142109059348509339045239969588814315493805565222792585184428719946625689174356676928615187086090090185462417568142719111427689482164337324455201335789696190280492532640817552914027962479737441402965207807707605984746396246472144785588394134673003744429406538522655106830295435347468351034407453142995858018337391440435342372418789814328018592581746499082816399511859562055379597879348250877516795845728535160705714739498261498060173527146184197482836994348711919458915863774462868247787681474862260333151292299797412850055347032638091109986827726636370274333384835854131790819078444706896867074671460657053364919999792481811856154110168605970034931188791835527990618241988691207625422557879285487058954070195508236314338597734619093208066814455647072391592782842995690932284870647609084086344230523733689294894821661683719853408056696266853076049618287642852310095926315981854158790513239956875840114149008704078458631460165531460356177428150148414143524130333649820109005948012828223757436201379024404605327522508901489552574706117923828461915966866724382406789746283570771757767472086296053263802504768464739681012674796361352839615277359985920668769055197878332342110266884768482023921937850362671585726830630350940215329466947774810623703946037379452379399941738835268250407369166668957495915330999537482568190275135131635709804874232341977592238328018247017355706974654001054817125182191904087657887211414507374123435189992642712889956132684699152123473627591643859431057184317073639611848781888414626050179543691269294219747381769399831873133583787362134316360731387980450419310498998143500677564663014727136840664587127146598909201811725412346071759715345339020859159648152171317606578219465892898077855750715638466535176161934819650594999333859970000810110721557344423540216804854672889847289300976338518776956139722214923202441073875579267406235770435815938965742882446275881722894987759608723779656606788825373563683944923090786691549466680351830455808079935662860093889868658285964227760885910608134543708353849780547034251468966447303887169297986571584502960560019945436740386917177233888976194273658222204262518558952792098981976372525697130070189017645345586839134193802126645750469352357723848894552181354980752466803023529591120059725483673469607094430515273006686664621411067172666149037029564677571385998747730062238962692442039902204412570427769035832776898989939885209143757151679626413734525085750367999985708380984307911530845409670752591565688612124500933806333150425019923482760080801888038347452175439420847641287392878838083096244642081103424155190443761079857724513361136043525495342307070059977733934272088712589578683688983421498342216956920714576494251436187661933452029826907615822956304021935145642661984940392689220903056162834601369616157383343074460022595885612561085918918327230859421940181115705197408613169335598703347850536180845222056273383933840132978930326661684964897881156128021367661953284654055771537771850720800111212100455289002504644082212807352941319332093450215420909481250373297389769602696215036230511346406936775398285920271287247755770810984906570641973816344283078037098766219688120993619296007993717885984775688005557908896879572614460125937588297412819305117263104682759567093909082674914203521821176289270168147649273378080067819030540746933999225679068085232223660698155944535128370744676461476537628393712208027171883378894839615811707516937095453728482442508087321194644752351620756733261844584879979850259427031478306688246147034295096846874893087272094311315744072305972766577926893883920385568339447062308980792010408260635864423359543352990984023895961701334271404991721028801414392071665468990243554472953138652663172706115767263747817836790493180560941078393325175909319219265329058486106882508634944587056866444507254348294233058705297201430492012043280501641985086689568022822571866926959488290611048628408382847103913169033749964934543794857671271578844733704589048647851931673917184894899158013705813809053612438246351247963076235843608111650494673293125561775680099472264928273068637734649925252339031434166831649691763815547835441046621066804409205660999163823405372421731665728985077165117260515298675267883610665915738186017110792765930374743417329299357985618437202235562433830607958104320698743382755719817025147292286048825421358736797566394179520961470328780874241248301706590531753509803568865529632157745832733367364405910689493263547267664453794441317465936062251965986226939843656733546607255731464416046750918393209381971364550430942246536980982627678026739588196727375849118516603262386101468799792469588505704634558419259232609361801166147376607622903183684414261571433563080781398100795977992409237424733089190346462104532488877160005584992839229789928683108399700796589345895424608181975133239972411610187345086783825046298760271160733703784815258701001168059635679254742777324592853132890188875691076375300373027253300464258906339482055387962380594370751832081005418467268229343223076957905657930553156925894949682819578689705653045543944169119588674402421009952176020125599131203569622089459025497487403665889525863272093272093644494489580464234902835449265689695231754247051786714915097490473562195441562010653692593077445671237023124761949995867597483285512550764283819783931655852877585508704881085813781538463489730138955169887391422672900111548461187908925941545531159804638334376929737605600502542049042563104610946137934903335218217159029873756505232103109879680895949373141297945303022446839574414813964032245013878013325116269349992920230544118283055095823731994361985612535390571100762759088475833506377657840815374563763507044728057344012872951359430761745257221791278880545290814738867518018595294341998891200767944578928888606617679885681514526462895479214247614696651349576870335236447329758898693623544025386980517127285872142087144375609986436752233262251458984701846921804829691441498491836789740913930793027363080111098099674612299300930049498142027311616208626095909912140852041455010639385049178894351340532861532754663286509255033650758452429966663455872140515159377098525070735964220920362988640980809342609899031511946008485791680376340395885979383589837232236311873691602220214193348982925631899667267762601550973765087539373330372539873847530433648182936879248015939033430866627180727689397662918352510520024252163498344291545839123530688295568502183880963465217461337506077601079641284115587542963133754391230035803188945374586355177821103405197831507532581398447651380037983645605063275336508503511003234127928522794115688174177385081132296258785199237380965077024693099412392792521862684319198542474233805860947677952561819558537061343761680193859421913356443166305901347885885520532397707286522884403022870496015429542309220994923709784875788691993474143800951728968881411520189597281494230033207494375278963410423794065248371207807093309009544216498604911019958299774014216739111970529947907616789047403514599580024929078151558942308401025418254349307840235566514023242347276058657413234722538317957465921937666515990885523960326117758265675001333915098127202655535883019001209917494072765335357965855926945732886621957170115038751046747406988167443705638111330831460968833706755114675457657828802847231630946522057025438769559900418428748162892561622935844871218161081960072755708583717570570824445664789320630492577397981316581687502575651577059648273335105116647211912200248941281579452956041612870592937641811278546347043441909167735049835277374747731149430518586684235041035066519411508875907370782278268662764790522615337066296903817295435390976620270383495339533149947895804091975035183114266798674889676700521584033439295295603281068433580676102391782168231325212252115430572894618825382872759949710027712970652756257471717862771041086527938893777919679995339921531865015780145887356644492054822101377893260414842915743087776494714525054870816293015680039840552300902763484343364935331886950930882664824243551261899096331807730705151135602984919201418689496609078942792490123656067827594202860025037421386117201380305618452974849635425159343728727476462181437132593645549448735814136519209460348529291533492452452123630939454554289988998760643153285326048740876065147663683186628201692973653355601878711157714208977712001401342590535206359253196919988544982000523020058527862701696455556033636404187861041957250284365026883829466419188227674836099316597531503358897306347435474556492214461216552190304271270329424997935042717301118105116409224369633662477166777745316556447033817587953840330870825662170212312005981511010251117032430053244274122834519754378311284529150384788085161296492403655721372658273916757605135957247274562118352064205829673968543939906294266267259185961573908339376408235000800193046030334934159269918952634494600247776233366954269113858945626959835020808952469580999826808508139666130374829685488242247624324595677351046065520408387093562055959185962379966025753852192856176106817073033333237554613209839046621907690114219154582657257389414878052882851393809929809146747310334052357913520048057850284542933992018997508403405497180737297751763112857260337801585064983223447544194019022549729396654439111460251427125969156892172364655135947726278625252816519809353385816648859405333637350203799859781297387100252870938657315187880464076851012755273725271596008673113806732703982538177082607499899225362874784392448511450912564758000299446332470525958259583895622466877153325547852221473067834621866911444306514007058036639713159740349169436117670445373881616914130008571585381824851201684639161962616693488853423244743152084415727042782293224508973335858675228596957154600302425127129713912824690262737075658620854636484383429166769732861688479514157122416239575943940461416199534036669469639371415448602880446824083181151085079181346595211719297538391496523222628797662458812609500456739061543931611246361387187829091638472134677397015601634789102683392577427270826243529265755938256578716539558053052470545968910708252206855935466171993138029725435410972074585688165070221361158558930988670365611931033364673371292344551547435580253468019276310690785547455754565805724374983827388503195203590424788709021343141251752253522650091050378571880575558736198627488513066858672227052472340535203189885884766330075556686385052082197191547143253861318055657731944245419329244857309809996055607400495468736172352342110981430813316041883274282566107375195956054055895445020588163012578519536311285623534600892611112537651696180269176608388296982175150869894963037024064291150957522893078359685648911570597068140210833429487266016618506142260432758425980890086136412215964152568608431438064171581598460699616415530442625743711087749277667633699561347572073339919183121967689551568676489086900427425552132371642919341355091093310463680206415596324610622073365855600477711079760226445066178075584037383310834254102073162334616983581531681059533390707130706925657980047804141274061505925728251977562780615282917899549475649275237914214293394325543699154423350446785176819834941660321199165600561733729123333848851261721641009765308871884587230479050544656084987286613360716973807758784352612758548922709970728732482186556619937017286049444382753549765340886981016930949868873940288937773715919023003382010251720139769638690908800764637730760092338789749917624107238621496591701101080889623452080344311589421600446673145606078007909936556791923829703222527058364939994410356911735421836466971483620455402158812172295537388431966121379005213906478773282412263766650164558245536539232533471168590452777016744709544124155565538290789459402831689988217896887708901093966783534556770268380076998192354516842169684071296866362584567010575989993011369928756813681713776675714546363524464219952951229812669233472198125166643983805302171283988828323136219948130389512246053521140490715232757257639304285448924826103283600113205733046630964428266057459290554168506473785806624778042336253230941652379981181376546511788162235933175704955940260031486450092581839239033205720858944115851232562280717659291054934065972353020803184730816144698069917832227855531526512047465043454055585785348479209663212691283615687257504803844091052695333184961744157222724722384748067051878489816211866705203680592264703822007253341869453848888107193920392681864533200138680905859497525676976397665727915873440489479188414170510063808290634892866556937387134348299698740343723616955600065824348979474087846512593818695770271944333262153095475189300790022829197925481618985494492215281909436621466093984877211867903125873477779151854166397298583558097986372998063774977874435055423966579144534094995173882254576434563831563502691585025829799628376485080675970787172468945069769422709528832851594766593118285507992430210968267621609220468920407082378927886862941965227456694179083544621160587860902297476790965922708284383724102703855504667744663656994412326057603550132057145827277112155170656783088690470301322678435486466677520542260841804277182512121272195168180937968819023717770532556967004939348167624598925425823852373636938077225619722601092195616990894618390490169779078370798461626215265208090111289779575823833434266027763697101503560091713592811832315508086832097089073119729435696900508632045874554969755514111319577350400624664081250621827852205908486106488765041331729710790037558671817239617081493078371263582653573165414093626812253914721637372532558088520800948284241774155306115513347322305583706132341344124477907361159409297524198291852813494830980289909974190098097012743682530650088067192769006734938013208274723211891826430509930350060618019964685720155297908956660211932871720664151746073036525087837909391114223737582554867975922145627265612089851116450043651679900680572269743787405888688016496894837255467005086095241855028636306846523063071803905243354005860047561003005263206288505653749561024548647893318386435360341118316899604391386895181040600549117485152915630527330059301260759659867817342905938155020439681502635237688131365063719530014216488767777861069412831976533199092536727661114679712793426122275522473244598545700408141831224671604360359663773271767044308431224761586413369404835374219136701020205571934088644733057279370038605646724210762220834093888739346931845099066598698834130572855647802205501627610624946343546081609466859779048742822707286997398899629193663854676951817488701281795897723479333183055235249390073135696680380932344718934322755659223961504518633666807422791065982749688967238857896191469215604758018524611082597691062123138852763982649051716940378887506134205739385842375926363234843986668528040752088079540659538614744405625662906262762219265898308398429505420498124566183462518513449922980920376800251911114162788422885314918163637167811264386210248040089885885739060181057119528130982770968336093524619645958504467155992696107983391469467055221233150864523304049320467762757134478102049948760724700108077013723715924531092634623331123715172945551345898742705120689523668943244035983740136262524872979945503750707368559505619654776658918997692178058507763732572752953452369127702334287458539608122839920841759122378875396100158948271926806945471967674353396191398697008562709902715219204396664927323754753770423757534401483870825737569654079881294518601634868339853835405791088832400267069239483892858761056836917967054676606184039830169053285598446532605229586954000138091996932180307056251651457048440092443984306562617500161718064157745647210327560774419049432469079989720445209990265837721774897683809975245931712680290035719323233771858625736996781454369438601226774276644923485625678370677798425448714458611700241573238172930217920250975218071027918713509106555697322505093007868577712697749177099257732688417177947484569726852666081142428333689503053021287809754338263545782293242586931503657325402224104782684460179952124885159750126694218336893546815267568206115689957665258496864732515814575326250361941096708778350446124021954800715809942393668057862642381625734024608375698493773808819509304059990611853950621438747085536834300278061259803748103685100308211039790169466331825804119677675547835689608953209726094327223490738864684688133510309035740341718767890687757461671381219566092045105691212519604740834032974556054963332379361818936342223114781063625255829769472580449264411635290959409046714987863180222583425028386219488041238408044847563300693313407546077171419734175546724222815591895147182347948347025532281756272782997047570573433620752791149507067577750422722714773479592393990603666333449916015994319664796719229786927157488748368022630123861569021480444890436263703504122734139686831578848511518887933308032833875387726272242568508848831704533236908271353708846356207284197662701680864202849671454754080479167930328569653454545947360928050307291995537865179069158907763818693615742295687014347187244065151101666736973312716250175652244310353964000595832668908198498265936665172489109382178500144540928409394953727213853087142683935354189715574124397897551090894263055129854666739519634085322289204102540919192295965337308309988040850114930813770973365479300821657035859683770247154461907576405822027076348030725848362694894790983343190720640860448985188285873261564039935736969643352609178625374916095621683986299598920952684739845881989400595293246559867511935511569067951034182178328372474030334138797839220876945895862010398130422770606233043517351827230409153228302459226973200340688704864906750703372181001404496055555570294877745028264709339045548407687328239765473718836478677090702202153467256391663550910799818044531101191272577018629124464048036662328633534329202942051784590955264338919666370885720453909636735036752132173141276196099635865591582892990132238511819322551262243206154297967180228395566289565227560707388930720627603338284564903722988326582869591142121437942330392507771395498483011338144885489591615430611908897673868461593203513918787137588246494605961080855892048168019598145738507800109668910633449770599724918926639027114905506771960481132544925750005782386388331497948234794134439934227745348485104105616042609309126336747786876500101070831080566078489693406947789860130897292438849839030290421192513607111326315199678678993055206892849732141809882885272105566471889273584917465169548693667262560654116677895714952231751287439298399814247597527777082459709154427999934013048256315859558718203797125764206032273561562242978120598192406021196885559028919691580961095418125444409266148502776915664015730981444819156062240158379629702007441295926882854287935331794717669098106966018296649795581955902222356497438535747218392685614442968546562809516967734703177084639058613456726249287233911478887582977983931326456404896106183178854757655578436667201357893464602798918976254424096671603480602000428844472512077286208177553676341083845335325354247116527699619711165547682004099098992194087332785087450091792909788849069888578965489548433041791624212351783065943506570036413546817001799943916899347060063493809646333093776656353142743517131210907032884137495337536079596226495103969709610076906679371483652209737705515472505222065239194781037629289182100898210491540938394436135286519013323935927935843166923237565205003862989287878260525875636854117445986242808411936055925700438258932265442602224031592402502985580659881742953387781469231839217129546255428836015685192792268904639920040065088651591049940248542807949416809654582246728033550243285508915396607664631285329624507081571780482387128280015353058023059212149144848900928362593006206940252677065436454554147754418375740780492746567726089773469272047712074509842046895317937675707982376233949209178069134263729130760654932814913753186275276376412420248931942134662649699500997448890742142574452871626209869550705918263066739308909829313519532631931232456032739118454932690361720553644435305560265015580226204893388060021535628124028116706948702306284327749810907563368617744014401672476909773250452193026141068521551784030435019961841821110246311037312679385270900567807567471128649181379629803452487157239771747921111097725767339907409152608163906713425267354888774188816617161487497096054737168727506281729205592884606914733265683850380273122048746124656252312452442413103363799356712777771334311851548852631667031718704715914955842923786607636113287182385378822399899198413368175684466870867681301912983828555219259104051845842479123518631945449343558933291449915360815547765514716650714239469441240059457803476078251924085100802442224311755570278593991512676352250710070171448447279220122227504018748753723826745303393490518641546834228750715685865296311105311924047840472974332507351323707872607406940496416428642488863644585356796288313156280391992489294692601655114011742550866450444753549140146876107690251612643466107962401544295327822180811040927712035221692803277021575736400295950687468148692562761792179490878239590136447865087391141849509425673754218204488273552928707538643195275301956355887227189391163853736665225141758557644830449922575360249277001227538449167162005226092347710475601328413316748385653213240078499865404386967926107917201236675372576276107457452057794260080479688157633250828772742410633752418773863081448629526218936860338338156863161496281005560767955624807628768538652494763111056452021022082204383250620730139669350583607575696455434412837723578507360419900457494030353462915824947055178249333034368084905490217798879822401564969769232719411488633273275926305598997077869441003516332835520968755451841145756910794651617891809763592731613044928676546392429531218248222736393400117907680430149390821545865774652284244758797983780128676404759080523816523598966880951147656241174281292182550308285187461618429213918626862351246438115527889888490433318516875607977612307163677771028866023513324281502773727236039757499803519236755007937921840209325105390802567543859469925799147091867515219143440239435734724281585128815465583572743798644279749415881679618007476132426230406731338155611658085849741779411718616339029020557035407035337731903497361193974072313050287459374234278641578463313658214945900622541131155580222244613954617494778139563160859758281712371253900139076838908424635696421769550704825295420812752835852013573615628419561340366728239658200337155012547894947079114990100789249022555189428755295513062070005714230994978437324229028157560619631579024736583208793556875545264048952526214873915296053975472064622885783910179624919001948402702228665386613863122933570170960952529273667238950068072768764349599961911562283991749503053112843510163109575128220472502934138880339336885464082659930954112422043680200223084133364534428113203380521052404534929539520769445603984251380278141591357521720276000047541892247544377680282648903034247834735618258748268074632870733906982105088645268125157669243145392939669131294568854534319096066587339729851142170036403189489529206654541096707616794698867532853338559615700997503417153182206137225328650571947906594012095151873303192237904460898953562278103384913735555386519129274603662341996904153739515062880251034635445114979850620648391376433106284461273562796507321774863349037378123484569407679640216692103917081546938487636188479335525081557925066339128078896054944804652904863912756318061923978569167567348894609709643743535547968267130600517048828579710630039667299707217141117259508611784532705755967504412373230996825217965600477910958701704315373868165113366628283504511791981314670105107347207259252816713703713172391469537823736686741016429905471518456890209230306845044452377486134742967989139172489881920189318598802180091809630069895492786187373450811951446404145264971396229856941332876240295838403330171926358150350602239876977538801799502119594005933707260877879213244760919530721867336273803478064599995242170521223727375314093158861205606382441478270882789798355711110401788578973321699389259925301947368742256196650337318244617905345430128220024466823567949853410123960161529811569679709275031724114896980391274599598171916680118094330699857218714205634589960981239728345812813683512688930068600430281708601614364525190821530044039988137262798638941686773528923682386925471145957929063923219870661186159917017649636518920333573598980440784966384535288040442560562698130931519445004403333780869311994463656416939785320770694579244556247593978799285020137132382896877907144757305197807688874389192982171862331897209020462865349293389153531618268132886239378790361269796558730555351126880105453412106391525067155241623278073172282179373882206437419334278183020869565131393885795148889086592836913148767525682667104126286950725866266267257545786129020142662973531833923602097259853130039212196620469416863963356902251061163084783396147192474376928485407592915770609771526524110805272094945355859368199689779629872858846850035438659950796965497287618290247839819436119072931685456286151333544972237719844651345818530666063582874250447558505047539480706090624431642679129504532348128228864550228839546085893428239026123005303618415518178752610884421088771965717540777732110428267294406901522860537271053783631881988939566945568845884875895391080034955877641082173161570886103821631177308814171632009254193658475168824490988741628810299476334819447276457294922121432952281252678264434201761447291630358179217316322485125626351781681929819054387739858719223241331364201620552314027387936095858486276075880284446153444655525930731118097670847663599855245429536764467574911320184715879479640834808884458271631836560361938987198274620918790160703407752869086038237193548683658993059260185820932114080976251926101088287508800618615272400965524754006107138862615180748534993962198007891579351896389656046854230405185329464951538077272019566555617307368473695834058282212100542462674813079044586365804440412169166352115766821634951509293143487132431896942095656117591025154031175511160563146039056316827034743127119395716195732101258996894613456037021959408560917626284985526603234889198656466401686452758948188456350545348201512549870431823048059527291449737009479235539261351343504160381455135616258394815093419471162308424439359216262122414681666042888823201314340848458346878129457161075670040028216021437614724533948417059695046082958560524289266758243728437080702454642938606914219912004839116873572259325154161864754714428295524444114234411211244961611053597542221317826235416001759920098050294716518051535056642837245645599439607870053358326240285494122420150711026770730487687875240130150477027635051182445141598675699936927665763822971839477959611906186068170116204942015649839501868711999532739055032123030479920638387744917642583675771856003173831106444645088709026604611352189868392980383637159545153116701671929597600016337828871650365644580960365605338069249713282689088831330301329938861202265037883072075753886597017885336084912536698908639738111295311835605828219396464802031963949510617398751022201385585449242159690604194483067907327317098809621689122650992689658760967334964007216162458844943928473025916503635776220186048382404409702201486473732486467371162682978965208392276849384948522619047226858832263334772477752729745123810436684836927825247560222069689319861142760006509312358897608368181275349292024486811708696758554336503953905578717016211088813711069893269093584697378848018002694997487971168867423411458312821768849459477816873713050111668900817297285028640488761591279405894550329429426103983046539049176551550798582189834976137515696237893200397678717206842394224541614683888877200628036706623519220323455796893968493948310696080987130225536242140756256024337886333678659458588386133335854891080362788499496200188139920519465787923493521248055160968209575763521106623828467030548824450911675451928874749046727332201275983885315840841629273125750912905250424407962693262786023094888842384128161343028260116300461715923958778172356662821350985020977777462322924995329011995202215771882693329754581836254868176030171878736484071084538828980502865005934862023899947485382683727308073933375218117255818941992002055127388520095836003539872704738912174656446360715670555891859442616240312162048490350977954381390065142934592857964091120297052689666551626505526541593286014024235610357828622825737935982649107986094612792313317072801184202681498588061622591808348584252829035577322738181317391637593298826350575712540544142255028709280155169216249593893733488625490147917092012389293560227023078655767554456935065634410309471039878475775942977615060454144753353880035452564306395307993743164850949588213438627357975741332726749771110793734157580964804187912787823142716645155230371791650133894669063595171615463858506932682924943016737620904003985264225209047070647922072152988022358967858191166843862774547555730813464741060904090559456764699477421311724666881559746510044346343837247096638126906779062492896899343784101779545263900929611399679354483605672373900311021691939437922703994718354888538692480369608079149091214435460273504242846277654104453913380200622363749073550324397654181819271972132791162782709333998763363939794934689660290069878175603038858960949889043177738442229264677722451552385520043560448335651908902610831664625935325399837168438008740633316016898214200960553895998933908337588497764004937959624102959736337500674631139698324878550246457550537981430553137154609132058921800121707406548776376294754436434018080454621866924087512202432785382366917594590897611787551742893198893295553745769807295351238686187918700907291178837857352423906369629232116545561937239991275780912520520354490621420024020889216018691150253023566073283001188782345403713119712625962568686618473076055981214320894274660510222199524589360855075691406597667093905707553340419180401989752851886477834209368025723111898451587724991663345381591514018765708247084272007214851782378462756325071258721997526066344162776624430584180360387264443052612927592360546384577643680890482381343785469741787707904878556594699849723627321077019930978720048500710306817935716223242755846680782801923525785046472664557354851557243126513470948307017146373397882119531523467859394370657310683187560544388920263163754668252556349578953513269830876288857444974686947950570250055577080853827170209167343341621322718784223535711171184554767979703357596226510830103145975901608943963718419458072033159981456495008608918642728825445333624038528067389939511879747258460597103663466830646409885420344588274975730441712179908482689510731942998182166272925684624592905845569983809306481822922208519209224241257544630260345562547098844740460281137398298241225833248377495549715717654036338528612751243074437772341867571942022960010381210389907295188304122767104981442955331695824493598179582701362598431688559554988524968827032027220585653236523477695275006932014296862742442461292303090949289855150811883613572293336174381799586889360073914696805397357198918773784983363562113534096517121553157526757282459257608738205336429860683496003143862127871283541006821585165063342057181913554620469970794396217652219510468100063568307587815008095043193994650511098086810785634344772326622086240139282632469546116991090263655299019091980048888424605125808555502446936484254547113131904065670119239390448860967833091330616354481058709166395130956211917927927541516202187433113590314884146900351467624225930925481492582472694496919821000349053692420512224697129474641126674360347172540115015438665328380620285963143420030090079450510905626898132309451640604332387549540974241628918902372366482755731710305776818579411615824848321671977337713414873110468092023608304351095437175598003479423207710931420818308510259408355394746646795945828378932255182462209240668788588373283797282982200884180176479760367886690534277806301238209781876433849551830628868783862187143225429158787328526674971535516168275435052181460285300787865107930421772255150666138799832939230284501503989370051999170173771426472697383122815562386431009413130840662335832283724990823742572450605381124540614123677520096130926940149264554421178619956444694331669387001188740774239629948548163021929368682933393071935383305566838271985448391952020754178141684421143588300920712375758238477110255723716177409828071920207575400357853395613430480882287750119065397386347054211947019597212558909089662821987187972176533906506561929987093663040352950418235790833622997336047157869608800562175723189437061677451831471794745166373756142728599314792213554321646556185095972792791097962807782705523808760600519973204814180051156954126916242511282417495915355595622747194915295572174403073266146923818448062739566168955768479883246070006345504140490043644783373331729828471507913048660652766176269639273270081041012419899505207996812756174837591970309176477600978114602182719088305213748887251181967877420570553529478917699256964396045639515250972476806952354955926306928984356132311500482014383865101371953538599312661632685990344889797724821223703699284709359807502439708072498658003059322732442385994037772414211986608302627707811884001180791032305803297324350244032048905067563112747119895456836164324394622946469682331430337427817908469781739239401827815463305075741786085089899208602330888379948064986578070177052554040249989830093546973572772204050731960011507579397424545922405578927435051122405004663055349214859685194062417390109757933681422804394717023429912352759778649197523968519530947712571797709546346543030446545676764867383217511393948208295916564004700749297010085152185679258430687086514932303116057728932712013225710551322499857967192112223728746590612828062841792541518110686325237411670026897363524459911110691033873193554236730879799977621125465610695210463398470656569455667723897975170855953347589182199371473736853743123407596599241981306140515795349874320742488190771010045060163362647140303096309721082113174426434048621743553710700480067009485996697256634566958954613330765648294337124665112961085459647291958041798822678546284031484257502974092500508632116616154691298435979290919299281724670078143785842531386270820501865372938077281741349920663959036950155680730724336154691304894168931668276334114567484604261937874884958706818581121719683089825638521837310513402228297914910793745531177263761446859516103647614775179988745436683377706440485578618956335141181671412400049444488999678156421742217914129351197743606705817791776407520119380799571724049541158243957090945071098720435328053999259275780739661853366089053282381473874639305347846533673332008398335780094346056545925082615755488947875202488125487697969846211063857149341908258618838575346214495172114538485476037447069741783083766322645370456077116296633273630031579009965084676959257677642632906903304634270166044519453696544869792235255845588542040256092555367040110699013960505774354177172872620627073574169825431669327596710479218331648929470727125023442554702128261009857180197393469964119935280385518123056718271413193742270457222233175800751399216413085835650957629214836036810145663974248072297343622318759557265128658562696769069683339145098835634749985165971020885962806011852568575843914194679048008399653744051112006587341985258263470551133414160706377135130059700656627962167372829035283159489678746776003951213543026055592747119753772783449964519499946942184485922706751365618830554183078530891528755518987348953475729669130653402939768830604903898627023188484081264774607417589385979899847034347750687819430307518672642850472900869611257032603386436731770273689572899066656228744230478624545731463657384378002464401043924763407058593786634235913704222470466920483960523932123119680795004336723390507407685309733761012805435825630178275146075496055952196558538900905111403362971846699663811578080555914824799588793207913749496652402286749125798178551245314065298849600748136993084419720682014428465692829793648468565319833395365506744692283156008864469331273758056901448127315248851688956138010996114500902425051827234672894489124883045164681778669245635701978800874447572460393013541372058370988875937477684337207237898929372414652854948697552014981961377634641589439731364414990082444504206331968363412088792296622622581307263535968035401484644766719808123648523194372872693473379037968655957096670168467305962465029302810569226696719139251879254827198890184638023750570201672690464327522301805794689553548672394786692848453088377745269609375677985058993417229130571919493716812750186797210826491579472591340004380995115962495260393751541572709096346068490785691751397823754817658096148673897733648859602244504232160943627268447134421187161114518075118296373166888704157968113904156517479828178872042169793320172312168237386600045090177844912874686089079530909311684786352231422900449328743513479935850139810589434784260497184201264760101150628157285944130458460648609206072989760159379130575202597664108211197009457956193405505316444221548181743145020518064138166513457491734869277437381463265244030887957943351109121731349573213617876598694923060162099635200173313869549241428546384273127208269875622608486248969570159764200038207623202568895256623836910018680614900216043668952024266853714393832612357421449387718135827921254399981087527882539664922552926993877957458170882604851306268079402313260338455228113534725300724676644563391249564400808531016338979497812017030500902076922153514781615682414929706664596625702709783681824202961605626092176254380858914475030739316083287103140079658725286090714791282206580090831652262731529133010963333988119801063486973352076486637451263447151754877114468661574359464054455559335817757282794372554300086293305813892810081036122494116906755803016546871895118431724555450464638135714621678890025756550643817162111509487824920391666629140915066718340800995513511196095371355579387410593725315947849205415066286041042001328806114510388118010290671467766562327031146608595529944037392182399553261477124758840711303387700121548262991515947451945827657362531350767905236819776738022175521617952418311964517320298629973452588250305092124637178149838854254430535718258340583945501085826950712684553746993039106758553367921001280726902116628954323225172908304953637187788788334977201097189979251252489105950191483134475077784633705220024735842874366253433065837346893843128559727522005790013518030258655255909010528319259579401875270593605412946800384200369286056046231197228292833305690584793921824979507524431108492909819809790780423292927669837409664611107995091784806599767066802973304250775222564295856635617253684287559693876183054068335968287858905265410455899911003035697412887126268726072712890618052873065094912855025446729603588586536570097305173470103433855671627769511582296043582721271789067293296508765128259264222905986344896361827295037911745996874472490798895075681895106863580109072056111595899886841179587807431928899170885745542713439346640864352340627288856923006980247145137841860808504914948013464790487949186612911811201304920468832480287460486930305016345180620388843416573836572629830393043452365688624458003868132752443002271371791427743985484299469601526888157139787120024090222918106838368329250290481871720123461727774107407066703594924924405757102899628730448904719698184692499436423946100232793452930708670061292908853576322468369884287946259912313132848759300465363865219428053450231283704617369194179336949380788646534443069225018448548252422118339163148859725872177291244385105748561137184039405592635025881844491328526394131621514272882803855782701522297400098607517190178304652648833030224723349830056018227676134144767393725216165409227313481402249308509193988212902839839413038757207257660226382278269323124695214552092088744317007546876465475573953977877098452520193152319160380393688213126374713746833932737556955965768392153448954450058132518429859696214819697373838564101674346192136206353302186914951522759526352562159614274289707096452454091056136800777592776231223215629392237892213079171294311516592166363292708507566487540728939046338591938890674594903504968325728539302283231447615020071566304576418449209929701595478419231761050630509239925928767599424200714871628306103084744984849962517959582781409896263676395511298159660420552013910084422748779513731798699905974342689419627874537221839827757897208033310253969571549688146716769246071583552426519171957612879581096009283818692416345244632179816464711331515963631821942793335020116259626608574714633058577389115159560323618547972151225038309617828406062015282289688803766193288794576476095745659185849682904716320250212906262812804150614709764284901493415492740162333150910891279666213254635111161784365345650801630018984279742087369646875683133800434208753155827006305743230053727426682648520593429783864475586436390156824861422466519488347233730989920485816386122572137337845775581970709388244692483861147793475843018518030518843890578931892733846750649072353052238307059543583065739939528719244538185544703959942013857568473273201656217097186907921979937441090033404599772768876327791096517642294846606896102224198018953619277862852181089243140242898130210302853654043902380566218673486510710856275814625192917389552876198123836179109179415367241263517411464088145881680804859294852746389546564648063991568839445562088904489345442178909690763820600247869139708531952530518771394584674091525087016954986176946101820852432610868699682425629312348982150529012284820054182866581715307314642567452807451407425679342440513226350383164607177899440802743600829838503219472102442890575829048780927993358918438314768718510403667732911942452829250462544922043608951469441603436576393457279573823707005997496904338589710163628971564599931101421977096681180622359763092719350669262129295901600484115140127305651819896356433819984331525557848254021111286820329107304102441920205263789826401521111540919837101755093284662231679750363215087830800121413890859506757135135390242479182220122395070887503700497871158157589341403327557662800095921153294556192175804425157332199252728648358834398784457597418988658848830117612214166949537076234560846796809964519167600412040846678055104398971451907559082459134118016546487793554205900802821856825164287444705706793384459782772922851087992871064395242049429666584871543052428487463703373515806708241557422753060828402517138646162554331321851481479606021344193375909297220826768179265826068503911358767882988147002006728349222800270479434701170446277451058638261644053558678504630714338216588872483442940112906422498110679895206892191691736817842632611842189541528238868325884160710236460715144442058263318785551962652967244596742656995464744308357122992303512347652229867970843531072894032803251872604673906147558633297669365495472443295508711288667271894927108032584511526087548724990115776090578121599145519538958727671562592948688857362124538987809059529952493945916038257109039738928174968799639194869793149732902744220911185212864361045310715511584321017995849076538646945323053316569856739132450349244495759608200271916887360058630460571368464688838704684963717878677866377867128643215397575590538944770278838220433501794580436934639435440546229906363892784809193895237154098725596137750609465721304252121288918012248441346650566905382040958001277205091331720179984006173857016346523520914225048809194197217690858772788379403914344084184932473045815378059204373204810174987592527082216887101385431808231516096602403197908767558791034841764725580065393552015012826088442586178094287738733855656159325853605192265907865900540502055008886477619109269159533712789375484034441881164109465536582371702093930882399720050577963541300632273258021840116499701394791705131164951883254994414359085277418350625412296799321476434560813836287605469076273221079740489705998860499081941668524634310266984118639213895543851638139323261468271816980694844775399490968032573078763006964895426964095518452991842828811169991555204450068926401845009867916380454905401190212660196105486097493401849638025950323687495234466946480634824034688348326279537937008727367186729481066919816492708869782404517700553468733118564629108939018937472660752586858526196005811215181577541701029337199903405385081121754406834789034501815892550921333335151236593480816459589159912112278360729815885644652501923029849627628907226637579097151028110326205290019253537614896708815264756353523332755835875614897893291912251326695221036904915360013163407386428583171215782581266280010042495628397114959285014705158536285046522702628123838947028893895205298464084719286456322335684211346967507353069450527271651858529165594793309286264238951321053609071478731858936949125433447403539641777886269970442624334636905232861139067158827493377058918347945398226566692476147734389506883466240351375241378860929484690877481154092994221066914555335890184062186024207810804835888499633063368296008030561459725568602619824089440486229532137381686013521729735654614586355694449850374572773351019549191671627983289346523187504848646351072547330952849942956111381360821342778052395814370766871535228222399527029340566972188916112796982136119111964408508228543637371587981176787796598572278384870394243754594653349259236373132066744563373329870037504058292548413875384405194668720666536499850002762908015660705808728943553909763363881153008703048140106030899739558622883227033068224471036301136037307541742077831286705607345066819713857382235391804791996040088646109071157639248502937507217739590451443641067009192566978761477385811822135828528514199548824788414690552079506409650073462706058283451453622346991761749893148950966693605448775358882465595113339910326224642635579646678526483242702588311990327466827570164836210784265263267422678707107681182122433446601581130517378310058609100152961463726391118758029587661390614616125372386599123359801950738884955625505047869500011206782889569479219648945261629346530486426556335798231230776038894589448844944249034881117441452161238182866554538046097073885679518796673943371230798582715415112393636805797440381410709747381779843101528708612215228963818928854730082819714061912756038397736968923004241555403081126065159018891804978401542538208550552259041552977110584294532166910539294821637174756174511338125999229209862926334051402021172722928205781735627120592998618220305650439814465411162704194059151574592376209272178357448620536652661763211059956843691315691679468242772621446528049261668021099820552597532389219157954277039402501278541098258284539620004897683105979565772103269285008112928131664479046962503313420727868449646154542433632587774708537718038100361624654498020461425024899472858566943542240760834688312383274890732902618766538350939471667040714172582522688327041617206145451782285306815786669723174822935558189168736578027120021995183122016786654815581753490803720378889009372446912131569543964683526643714510108820122296947304416093001510761479385581508426511713036058156778469757613342715041719911607634185601155070118623084268123793047848267243681632855408484787189383946832913153860825619605722598741561147071217862325340558343684467913338847148707043212086904035264267969672555429358863105217330380459154558748856335063455554231336606097462195026441398238503332451614456635655615602868422628448874154736129783128732510730574988713213631174229615328705351762615642531007322093877449311262919147152518980039786024366234786641873850574093772344584313158662084995241561401343248741445268686941408271974341913633961025720911054568804269679421135044390052789609512178382351217888483186171155219307332330517836959200401319359781828436806483750006184260253752778206467844592856332189025123309218522152936609794407408567408116848485891374872132649427165018974371640358334799249083693531190244152792363216389782705960464978207528537862160854751961091731826270038398928683935069007400690090120106794531511593103030458390044230200500133861633187076163248118710532459269787760046981508310503789611795192697662796774886506505735275358352404731618535699936499994209010903082163933370756551297211820678768619672674380979836275265040975615710744394500273551186936108468017646343083167934658370998187251783759389681770452457135978764644721521887488368044575586528774145642004338078802123963792460415630786247004947943946348917714191264380939848950822033711702248991789618369724764449427317416419742166380873413658464210777519751300412429149882423460526346698483520226382485952279770046329217165314849645557321219468613971544711196534364849144375475760587760017538288299124581691147221372456608722527497096030882871059370995769499866858341904597537003164728961805939598257216708697017916226575952558881374755262902443357469711589940318876371971609275083739954110633773448712705751790492513316142221355778158861191231350597796613170137965889226619886155815396002071400124513710712331818429961589169707566047490054365914918193229980866503142213374868132602328091662169934922975744151111427923733165474212133267967708989037260088316960568713001933862434608719649272999078595803775027437467423254219660794602415483078298453456164982290063688227337556538899621846375620416902726226673799691787371132237250780934270688529532152318401738212685780596009882771021733605281890086775331297985414830813831926071069196020456947520955120455558815348387340473507621909913615419385595642467393947131800726500671235763661907437344949277098835584195102529230625629721177873009393428750060262323363989670281938435245294937800251689068122894355931650364351759318917744775985087732080350043353424558756202585415667378538925039060195893585148002559225680936372368191027834357123464814326742025666117520733430654183659545905192609414081781928508505107172667018025264527959213104706767951755726541466544939128729981200034707210640961948325627496468312126676333281037720386984838711611259923957270407751842892466289501434341023689068620747770685823467731927555086143247322117422193327880993186434163747675890811419260344400116656524822244009721757994207907628472185534149230041384991110882285742847516278312273287177732971621732053882683192183853172539094040797886862060435982709798165488577119659034158406390471462974942989299740293033476519764027277245680708986887882808782002199143161891371463494570083610609740740142257921380380771701144986868890955862720798276069001455766776931805644524934094920806837390473726850622528509359281426250459068770927607113922362848992162915783715087040967552093202529708484236432386502443826479616533559904487992921093678520322658315476049000492408755206986198031198067976452416010497728990834537623590775948915633533788544334268277956843266318094161914656771165643608232661800921299915002664472222277070743795730996730020565749801930722806145035321028522320717891842128757602512385259651504999792943912385899456459266822673454977517137999653692039439009963768221532522094566577592983007894733745433166915719687745999924614723520301837292984014437957577264102442046294357160686740002896159533575850301689618148321244084498271661915535649945225489100244577611718452264664433544232998890033151689299972419899175929012856539729192601067871764204273680701708768983746691804350655841450684608699419279813777815150369050449950272268045319352445396666611300736016832315662896783417407761466493540924700489992682079381024589546622593224928549849699773005039337947683728823691036649860576581115517251307546934369950322565286523031491639770065863284176617518491327079535332939955520995375502810621560028334413668825915344803229925350625740939338615891201762939345234047805405617319368433010230591091224918218210769407072951964902663359050438326089609239937874800475657864702440396998751394203874667727689681454502025223285050745772954443833606779446426494435814861220246158556053688080080851175574866775486508616800434237928238195955467230026288880830467532187026385322624551564197527176319790909370321759766140731875522362550862175568925059487464931369888070089890242328832499132581479131128023925203797952768977267202440042254603396453844872940236204453741167683141992085463956757269799022500996539735243159536760457579818971680602429750946692276477176257954277694823785474946777373131396553115575723926785053228715638755099559223732454124065253347218404374394885632467254768650055302156669357510646995281271169635047648377084342885296074125667353922801772169842887374779911362583988936538570939253838293732966324619476993691312451561826278845817294778082821392997192297889972343111805487252017751040789960755368728628103959141184742469949253698842858796622112787279506256416929409743486510132672831255227664342407608657595632843543320367765670897718777150308269617142614002992362844188005927914992016402778609717269458833424723044430971895785198579491829697561637696853285600126810191371000871945354268668499488049872004037056290432375190040307123895541774814180662175840088372100328857551948510994383949031264830514794360084670473948936014726935566098219728029913683388857631546886335162687012312089625311745721914542451737222892045133166482844614755441946489710046386233576889385177615151661979670485419659161108042891969785382437669633721350769984040349937164039841264165967104668996303187850411899385100750833055865078344083484738308338801234731492718827821891882930922843444538589553739665576225630601458864079600972522126423985924510483130245575407820503922648668854801593569059792020383647326829809030166610114418232899962933594383197224221380177848144878847092067772444928182302349142241814295327107196387718235303098537316405206005798818222050595166244507958384363479412714464445374479607776769165659529034462475147146610003181553544730881898384663483040076259636883192525317448675085168223055750460133028660800899378845600728336163642107006666646964355659321755971577357448731438364879982115065079466805937039196476007566581681281864082355251150099603953341569289059027705654658711768523288467782931485424149025124190622900658803720524899352432301921798685854229308126353548894981580973629681985833210042346711202480500277712120830259977487124967859020280191109595360584985590211071260786868980395212203248850689930564188842189315241558674932430615628481468898756085510191690363492573503085211393661541906173833240948867851105029648312149983309540286143253850646151464055466462431044587586281498862455451030017627497931811778378468327125181185457140255248663269232048961886637212735450708918598339053361727528537556963810442914683078379297337341009175944431950092375107871790593627888612633468866092226431175730334087537993078348774462377793415773984432092759653713609003641792790559756479947931296450118296236091118746891843620503535947286172798842644989500203757568503591743727021111304624777467969740344740975380914947592468099337155043152700370823494093089382092342757877018562467333706378235607572773270682260683741797081118947300350698657475987338876065670986113637232107763575989435132129748128667569896822599611493725618459237502187793355291926604057984328661294955789288238941597310321394221557049433897602297983390432991999559506667836390011863118864198137663583373170763460659630791717382954226773497677516875803005533919491890079484662548399241718325351034094710340419792781832914965231003845279797458844924946049221269976719454368618551809491721932097043270857751328552629502114569404966063942941129591030297881928809208187628244395343140575359573902185084572179742732646229273012158918191152372429427665410758501208306418558186383727547929101021793373037131360004102718023379749331153060032981125615598027461730395464232987457331749927542232067338136971017796798837449799470038064918508410083529123766256838089710773566828584276129412925120120715255605278438900852914982622007903502870160440565057320267631669024180474599447163433370903042381577329880602679889995592289077865921394260678382504935810661472180279488665846864378874496460226035422454213114795322724306479593922069325398374167012969647139458850905219134621220369536008565208630091319635024288469961639469582569610707547975648204974662011948838897622459103063425251321856330168324024234857816985606731596047332969440049263385614889375397576757892483800595784209775270425725119229482531779714297396864912195945226361302381108870715987879299794171381999733790705824280393119709517851424952507383860121027614860745061455302810717589028426493683263352747258795650123491472386946571705362051879158152854575012884423879580173626240366538292577344019182412589270548623198565768110429908110378422474794250807637568269647110224974997186606541799727374044088851236066216282917660995442276011979723797834894975535858615761773012903480426624284886997099580930009065890166720940053078780230570803861776732940971943605296085268836386991801325289593745161684464725582504776647367421610750490951359416133201330891414282020973637945593960194916741939520305187732192313529944398861858191555155365971572683955480136554340890315475726969478108474423478529310422790672497619736705196344424665050333936529994122131297332258261555435852014954435232040285607603512867103392586285952365235237963046284615668278490661705238672622818304908584693906264954605200655217917029383352623808061062109830004531446766300446388273694440699598116780418166739903769441082437376125497666684801229234633832948450424013617053080737704349749844196935121614323800844052226077036536072142384022119649944880719300271041692294962332539780226273561720375797934973074032831685436606725157221960288230396095176659136314576525385817979190656816528271455411231096622797657214426334180804954870507864568701461473014675868394995703836316569808624123976441447499534791199900997360783909045951814257959030639331449105886606366234108873462102095768723974748708668050249313392459620261553273357878262757333449522720195377399566656482729800671114100338949687862584880518171721209907722735356398119301864883854241288848777030422310089788352051317805928195402250872635001729116612222567542783194888445300842974696417006187189375940505786975787912824780723718084636764398431325910371698380896141363270996213348713705002556412787991769022541209796327071571125750499584231812938920305885365009145152191098980118732246284209881832721059835005358542960316314629111476333404777001548315729849523339736471103890090391729404807060763604158295944200987419203204686308505747317939912049009497113879162876853800746909872763471623746320496715013485289138262155524264832116088961523356963564452939330045597379842539019671517667694018945755438914986580316662979863779188001215588358737142883809434812742634895467719370376595755889673951210119352126142459069869799110987844826126171604786554836162420747038850438539966877184671434488829686144592564926466864386129165644775685958173725447908461913691332242139554389287153866427900852547451945921312959636193028049238089929959762772851033129347210015923798274153675686896173284431850152044626262868487100295339224719744727765134542252294708075278046348648932151336354588999002166316947665083000889311226887834584204675265271410512588597269858034329340115535255997226249240430969677461064929498481842454034266834122202655199397679465112479256714704550201389309823466543036769704823798028258504550909035049236732334386948646525522565119364858344256246875710368955810510949158495994722495973293252763354862780270442019830594595379554491579009329088688601093371740459059641539448648091564519667715427986138511850748025730909415422587242147902789810363662838967109652201174026053403369382035285327125483494174951435147732097032140632518751482199170206064408453466951087072890043518987041640098386707298247039140835016248233158135000593848089515061849371282687536245828841643946482803267356639249764570245371177067639378447175237837077136060663206324407547409375296736869059538863544870496279132209235658403188213341618288768912799274479723820583660552234794086861055410071793285168454727183206697951484818795611086284796038471442772769363079733951306966412398305539446656988035422489883325953750602747654362027424089939774971049819414316312286948054338554863165910945300510224183684805604370727210463334887957841656783943215686409589905951692835000388670055165148023239986329540711591790252214969429873632169915197674394738450022397762069159366559474707943489783212119803313303906372729633492487926671623641247607490545760764190615418465752453360769820843381886316237676333379229080109924755018557925005373096882309534878812549243579965580042387736699530631971212069119342839759203493099111549744651698918405381222418278722623696903686202006221237838144581544143156289299512534316243364245807724989597772765176922971370724303736684664274160537807816282265486394983363800731406611946584290802426993814653262112841504750669300397637071379258904662784105789779571563853700102156583538721840119374627632791817716102396347979150419093078893042727801854286992830689934996200168216467825019002535535024355563728800474169829215791522066733384576250131005733400176980206916245323622244482206018730904114980199052623453772983433235334315590939258882202008769030784447825118591700937879713533384455902571790618040178968837495350893855956706409721755959684921503456431797476023349335014750944407551568609846000756987701742031899039246960279950151371436361344774982285914452409354164909042308476955067964864374253307497896174353700660765405928538662980578581083216925227540603707576823802240197456496317224729046928900873808138811858564750214477637304862042797096599738353526154538734699174638350527773984286259978116867806312518751063981806315849407340886246294539209558164198632860974738330602319565989777998868978722727087229218335251077462885873974304834487519357503692320000579228607422657306455196262565160599359779280353342914730152145337977275308743518617862650933095830075574223166578127511027282824663363908253348302570701473403010683541730699316963860495105887866921960550804886787550866802537145243393440010034583545293851881653650711688356210177771944748108498649711811883652097542130953479923122592634859336125235155903130098895064166684342360767187031206648399888292733836165756386622760803511131380166599363347485227421258482416422722392886156120848409745868288643257876820721592283526568840401833125835834880460512094686378598674500171421396347590576745478870032257254553129376725532656402665501846179632878496115365252175381310478838955933019880558898248455589379801845106453217112341674953849749991831459652265147789509407141136767145933121287072068400586346095310686750115900962095039194205067982003121608540891255658098511104334777043287391994373783942114139437895479219365232069555915388656482169611798228498732364028998064382470379581582711073828369380982299522448960081617528872437896173848848078573758962683498132160125604194417749420586940935900959407637679946466044053648128398780134135730212799911210256139579308399282170452649564092540073176520558551949640939130819460247618793431259974341530040996846064058978310094432996769691589869759458446309108389966030603343153509232327216849173817093034678882682706560206571620653433870434255856109629808015153344045768110750063729528698115276559765426606841637124686564523811414442076216627436613626829852709413403555993470749353893713735715624252555810338236028715413841024702507482513554398331464594397374631666556761736798796411156927748536989566114563229761776473823462848931625114064949280136280171453919756200123888528245911014165168139518514962823865437385232207174927374419324567572658704803395404855805273864600399826302097155918773410472926394302192890604124357969669279014818370028228126451969945772281805999159345947373729196583947914112454168244313172998727544650157416377503188105861756764634214103191694165969602102378324004383711095985014650751649576493510805230232661596956436986298341967126061011515954135536764070617839417359748788947587261209194700832551267544601242303499834942735783874061912652686353667178663380308080810251252625186215429073399425077687520628032318111423346428300525708534482281509512451862067477527044490371454129279376797737673765769752387347544530463145849920556827080345911852218604256846839651553230241324461085634099807778524299633443304425399073707730846845345659923264955281278119041180319783685283554355575794416594782334135575419256775149883097307573913137870843366378277984100740501202352780509960884235605753712219355862485594881061716145131694000602007540845305789147829882111635938710371739747854807032379926562253823122323441863608558333042430017769312683427075705573280701254571990630620302687413330558895626087408021056931061008235400714879535784200762804193103400071599237791262800073560627021118882122560369936685078086385919777548322209835871517369484532568921811375283694476340121955976265644729097159071458635678755292204661482410121445141636723694573142466899276360249811922755807532461802206569701485684433151169754200897587268285101169736431208073456802896952487095078369825382819733863255025865610083263389159890231531883519222205150307612059133612952270656420704533351588114220778615786110015874897991238603849805141691859239208493597062887335020074807704094603458036136624494160506826649997396176754920530150939284064668287861733315382487575569847340597027772018507091243087105654433139840291073702889588476830387096537375866891608543879007763177758447685670865215461267393516815703076084977352203069765492102420531955704652668403938852607571262631069056461818634906565961370713929717646429815897120229815325837072909716471466072234963742614939511401590499832931817591976445763517981615223920964212134949512569733905969735156393569630000087775313513262840084367412631688936881099681655669575823894840746870768616991004133208923907288833073615479372528483529073052798170720225945792332648210709656134588555121362090002787273940085292923349830412557633819098661759985542017932777392049964741957520125864891532360036458944297013621063883852987435954172854245393050947763243546942067822316955629642473688487269873480516159098439171156512637241848871856965507459870852463103395685809530117143174282828444135960400480814974511806228179966057435639293008646139774982517745656552070319119528432384290693300225281423085146556756586146146196745823783746375225204455501433808901689560426232939282612984794996728719495297782989874778777411714719451664748406091358868339622755392859448286185204063859507294105568078418737578745215820814348585250735670236953488084804664262729108507077201093258825214926446085284112745562183117295172636925187052315147671102405682315515136414358422514269704359173257453744061501932128327597601767575278117155328803191402786115351262514014405377378268646787043518268386253845559619045768536169505790009289090858980371256330618756792549008999495275229781190066998131492923007109539341024762486403825511366532463438394042588206942342869221117306126234341076343355031910927624862706043810585288038729810181959888866220973333244464729111707069714460542717076728124735100177375393215075646198987217907048753926551674071181413950310154193552764703846595923993374642436256915043044743821246433180827521795215101037839321777726307397931449945210511873160411988344426571197015490599332235715975261346538013810681995436283417626679606322754691280938331861171634162367174713549630445418829702829113853564749606474175423564803633496516456411696353695422756957118398733723479273042686227292314404423070874177832722132710155970655708074844489673621102440660302750306997835726000281681299344833072380841145136791773219358809444461856543676240404709040786814338461740203028960917250876441680393558643353289346636069288394662002921605172265819282233266831265879095842428253517475286577996182576592069683930901620222486413673885941876035292557153357866502045837340056654836192782946562676944657734020417328957761473903066315905545018731196087924127363943072891416425844814199694063787041172812579178393801918356392869249004257629114346591183567777340895576253726421796465751817456697909098173946910416213146698249548720522065130296731835796008381309044287111168872344939346811035086600941611314719329033090363736121315333425581918224843075034005238017377876286498453430753637171593902721779127644525411431584588249746155167273526220190989670644544270282155213645022820224652836963892241844235027385502376736125771939193611002194940881640887876372826464559346837545590512138139520340735870296899439121476646830664129886519900697355115114576743626158425781037756624436943782559851285382080991321851501775334865653598586990301100402933043894259783303325524926725891063102936907218274876357938985638611885582386206123991013211952631519638718145960990075228708394813104803927015579074635847407067063045664422341590080377882363314559783486722828136459367289513394316195238584760401039836875495906894101885065047184819688299915918863094826793284263269575554118004669835375056044929344038030991871885627716341078718682382664483095081447772083862102725433558575355857240457362190045484694356626777274156150626686098469147505723077367023106175050195000142354585438660468093534622655824683313287059675194313567543350770580410053000697907615165081533461102242760654286780186826022697680428465520038294408050231580225917816412431478624376443685588782813920135828814305121926357681761683108175156968769331920724527237268039890948454047574355188974392527427530167445876439738094170872315677398920867156746636553032391890328045226759525554583563412100707923480260276925878523388244937064546826737494227233661679304635704913954493305692291700076440968370171003434070673403372225736510802627838189305169048736797760147425471515432815614718993765309732499826399970614017332270122936512705374948938414070771558940033458903757835197982505629402379582417976145250837762948981961159632635084930275063959725055023471624667817404803900683719578350087646869083438124745076396094020804840360819713478525489558029966358095880009428797059702425313193173352305867228204340798892312715703829975789117032102395986628102353804876230194904739604512535718390288473151941474670060442477530767489222671182712972686023296007915353098282357947264145622710921449299936431825953931468723521246061438796997100320070589547658949713486511574535923729937945597072763472956511773580153888519435587691448018781151179222145735917231460036584719695833152182276413240713353907587393466801228689817343817179007459825012716139990732358793531618052777472294025318441557971501823744941764461421484648632132483852343479265045425113788169677302921198473335304001602740821119328955981662590161942794177009650845951941323992829432790730450280699490688668402808989402838662883408201302759049320713461664325632111011586195303519977066071813004320503580014075674898430007966709947908993139749342613445128623779353161577336400754317992075716301751815082170631148771798292903170879891937090311783814937853212212673626933475878046875992956968547693499780584668331767006868405283872951499448654849310819021036416217435624452076896084455937357536733841049366569959269136745577994859775383750895549577050933403348441982065919964398675023123008757729162305884541016901530769589713206272926741593979876620408657878529320540054061780637072238733941443666156819964487747494478330674259089638872605435254091114977822233855634997742240731994151779517622581809694590477044883293707164713673074555427982906668418989987733478851607962083380554638495890493184493547170570103948388679766455791968631392783320707865554850919370402906800160971227440151755207613729842328769329575992979290331189311583669594119791826112216277592659678296309680311853791076394994814860646176833981245255653951744942951914047994295648887245880629289996857618298283577104433375399861824179586658304492841751487922069349792027980323852499886427953446562314116292685828450661642699459937847908638042145115086978607998011807707885386744498479547343478444609384702961655947577671043350974189208339082806708797034664932009848879047946251087267429361734735167349149567679706476543172695280701719186278981523163810500405720540320821404116880645116199746719093094865610359806732692690285370109622933836170490543335955774239625401961769281563274037245087292380933370611840484544066613051426698699825445278694732187240811691473654819627070924687009208199879666932519671475776602131824170620204147914143349051159299906101501648411222018735676524912054962562946194450885990664607298664106842093493793140849567033246801308154425001761822507019767444521797638086769745905521425379259356315065298645637464938971649132147328891589059432114029443246857337289640392994003570637773185274091724781870545310911220171043340972303799299344305945725381648379633517269548426599741564756207690825645343864117029909586104426045585196276845652866092429531300455197045236280529837433866854252960071682646135954613564136628663941236558711551268871858784693830473910749029766932788068759821098310655383463968839343928969848814436048046429975374604749793114024000381092294474345276321027057998993452042398937422160765760332931845151256305010752379324946060684431601905956263936089431808862426666717505518354695116738107969251841863472940275213573987712320608747019758813874804267634089337153948527106389924590324253064990931727246834421889336591065351039411138301516685177521026102710827005541169021757729773919118137969466621646152562756796126320897653048671499998566684764874160319474656868388956555018702535271704941111808208224804579251621111542855885426883879655868110487618016757166769115599215669655098474919257006145953696809894277108901225135137109854258322907091986932916215236768096999725804945670371918058141081023962457577326481994068477347793281633414726933575400124466370208502665587911056363990662331956917147481925249050435980035731582856517107453532351027782917912173351762571460150174863304613791907967620822085795557879931060132909316052127931626429815232337824214995704073072188501155782695765264992546856733159727289987392420351459803643162301919641297047821846492125801076645134794367987843162173117017347778399623065518698566615051972338804567043113967125459153381160204538152414018425480701126491133772382429817180825787474961108492101435556249909757027932709197352502663469715229866698894706023643276863591035301334154170213090193282012117783612070078864083201497501307205049756518948051570427263170327961221174324333046686400024272814574964080911301449790215616430504136216394691158558123962871482272744773564044047003022960961461449295151211564454022045257625973526373482904794697842265413830211029490136289930679443829019245008784217856256836258062794377067066113302107439343809771699049950808286831129689673651206892098271329488788380626633021722950694229535376674796012745841228848740366206772058662220675175451785477734969724811474551325999188701290701520599650434761808822866455087494214404602250963625666425518426302106309316738519810561031544862312676225546162597474380826063162782941854160556376173435592648284076950049354915115388201012414050299729174983592174645277231091562886901403965153089501706383568761688048060817486170258683012039927258564530738042462191842527178996056714077066661749211534739697772718291632460921300307181510768117317002362598570886958334206957076651309829126524468131406623320851631207138010035295981961538927389251744533178623704244951081571941441716683741860362534346724302978939672523140553163514256231658154782364209477663616977993044450702549722452391881987082668749335019012094258070768284161481528016843835185460349633631529529679385782597850885107466037830722470552684887815605964740348310713755522181791564949830042594189322218591308184289430646473177107180762467563096398067217432647586677292924158459029167861778455916108016101347323399892435004283940898110036368584912713402517175811374723362877003594754610373548895640625775814152479290967510564555150782803985517137912582312288440198501357303136230289504449927295844270797372697919127787989634679496055731534345408757972632626917633259721718275729243764835930852107469331427176163414477785461040267992284686447238007978554445437500824635018246611062235124141540234567069917479837870749038471815829259080216377189402348410290421972412013123104540367427317915778084764460561524610800192303038916576988196804245060185098606121667348833820280030854741258423017676626098488246387582155587544295251331540702141124740481775236986557317781187545593694331563091336665495857988632606924430092702883775980288607243436023139845747904015050905790787653908679484270028438268815775052288758629405608498286738090603543917307064874311806847981286606426362950994535782884305791001431243455779058233989163149900567253727148896385354453038779591749569136729871443644683020925782063333616875059257074804787951462654558540995686935086261182799609437348822149365727034271072373353203904145525524403546062624579584568164989246758659639737293525887509283436770188161493709702209978584926563417483922340904153024680790528582975431689912556069805738838401584614687831081704221570468256210424391428820321036814370181546433880053318562186557756341191788068863226897754688726375893794742750012866518326062587980838249789337410245998949194926158655992829091399029688487728005344078502511425032813549504769111821957136749279817779561852072059975653333606929789399098409074164047825683542892596073947230572306353842100815547758560550412978504542271558287718117672686174851957487497464706492685481259506073634116000528227570598036735721331136919224498574070203251194549905468537982768654850150643486021695202469996847188625979649611764103786276205905993671448518706527927543526454749222820361488661280135078825500199090665555813241953690182692134631624504826052554101577965806619751430529495961320900597230382208408032536551868713260037250109299017579683790987609729434618755302977715913542892927979377899034318835537833525473142675749871815659075320984772526151099494962565733243398681065385522932432734617573533960192307395078721087488821636919206715073915783814639339598695895940868825796886035070419351994901456668767054474994368796935126936720243983551218190165826283327611337313638641708910642721432792148064357364396197107736774939215910130785879175795967784327510550986510360720847859065399010122239147196797551765361519357794964241874414702754279442537565504575256420634594987602612885166830316794868859564652180077414021865572223172066602966116555533550570574945560648529523750801797990796704361835123802374682720238260975296329229634165439666445217992811083853472992471898821330561251094738679583165628972237268202663009797217512505275652364127527497959749440583072013573976605252829021530629263655774235172999808524407526683971859976370668016268163440888982581167839300030848187484273446825306948889212431656487478883197326160835015505898403104077935062383622945491332450896050833401169026879403590535717464722255859330701816706414703951291774602593128428201504643780026263472322330207661336613083805286806954672473765194506147847805096171494801316750081988159474787278897834982945624327861682968020658375841285465718890846863426395093387154408504006844716317341346826802900589568644533693174838518843792616853433013744994508585092621327517037293699348435979541698092037880399866891635203126658988715958660740593304338420649923527836132816031567461408797857541541632133487930547591634070538006027909349040528534814089292269890043157892528943672921587780250841595700259808546167638368982988361996315069838917459855849252015789881597935415215488510854717975990615694876591756888109677419217525262033720356932032161559265017133280804646658033462865023706618998649375920883879378580239776140792633217882262481460448768098093840195879363499499321745289454146931783615782598218501953935400427283825108900103596633331359647576085944868349807393030500912939310135440209941259506430476422066462885939183802729731739711848904411945470705370421134121503850955642988756680531191304744105482010905829857061119239510196032631618578955106424400130347187918787614433022576103484623999605242803224144187203718763247982223788494481208782215615049865302802708587432140670964123870188145395326372446243375155876209117098125705050436989179403069393429533046604449639512144521080478677888427128707242207246274579702242342546004553071419327209486691762664077047595676043324623929521983099423021701661074030581254721976335491779823657574129834355592059973906816612922384724367027744361942055743430496631916740261903384491142599472551662577957200564086134960789472676483810083172691013527545516174529403302431274743228850868440295825877851950941026611340412176572792153322686700534914075953443290139257961630439312051976231064716774597779735057182497370945418189950185250878988738785625044701082657672357517798507883452651543394474535557535177282392287931911864185228691877896398063943814986228999619931371015050062430200541702289724918125179022957789328385169851327772903580080712814835400852971797494951370753211639765856986545751858386467136539081358946802586489984167056532650240270458432237179470748566304331045414059388575058600612047472135984701711516217627511650201904045130936029479714026842869002757459897859468544655727765146485425273406275324045219702569679190016919564844727367059207318392691465621086100607626488567940135765714915043099632731202724705885945948094055736924139315812891572816907562975787752591516488865400020744293707330415949875932051378447171350979637423811737256065280809693999885484059731475279878199928933167748061740040566276805567907374638831029103162076564274231011320100647469119654746465443118977978816639513708901023229666141792129964696939517139589060688632929385200727420953143100304631705573709789721461677593015771865973660323673084251806847501147606119941389455437608828929843654316575718037253230551208063146124596239015788465743865439938767614936916114230644639331509856710720105049925407583138244998371801539822657251729245069765526513050279397381366419270120932611531929574214851115143527451437576593434471234795982959394568072450636489572813686630411812742769095044218921550454635426962054139192083609692514278338693941730734834472706125158555805553169952852333813509627253378785833556767279253283038912782517325033736481472095534689340459090214614881740022667610842879938858979733788972217312230113691177740504657801733596085471659654233788918139481657805580300074037350875702967759502743065008769621583830368617341855855776010918421415130875219231867684798275565774326646515185975450156313484642475246076835762429563602066647829515279686111243193735460298466272668532983169824483193840303372564394643731278237831494610208387940790133228457643310415478368046486739596264432370076053955524575952169071730963653804047574349600289083342218389826623268313512049941208251662742597394171338489761181787296556115233571898157008323444553748783327946103027979550819204879114087330468563180308394272254127434504070644622508328828549469346290598158093524360332021855708321376453565218936493960514079099530078421809068134649553072841332757330591637404454640059265199326824325161453630240336072479595932632727177164426253787204780472792502723831359229768514559317800814597097491254338951041799954935959597165797721480629135994393066018546335464699594901245168932014079507052407423124486031078384119214787648634473494884644363098740062059675998047772707601284583173851754574722080806161520399808826939933042877451363921455039593476305766076214377408700849487481142403684991738524662070721011352095348062517878669868883556286674429971527690158762547062907463333779637752639374879027493448910235918221285912267027320581335380049867815495112252606580912511387698052543221792884297669478176124098209671845272090897586686507875476420660087724779818732068260292091999095154485517164478957328208400193124806076007375934143501082601363020710017644301570247774381669712370117821336922403029159786103890429399573778522148966580948990493639260599781999195268824625219483826925270032619258483088226207849330384538494593292234019093464856937245904907782321182547394933266387573339059834399240927712395470180675843563446348247790253881206070697538591047209284435100979249933945879219094727550875019743767975350541917687091679932027198496761638020396925047067151458010040841769296858280186238600959751360501482435350175539220117582038893229500389674393746101509501746149420063803141572433782808652021215735382875100567116880571728217327045274293885939568524332149642763051542352616514445073668095207617049308659486000165879441763604866341607802538670254353108105174128038670418041522857150319484809496974373254190687937532766077493748308700560897796440639814913662616411846207594472429897219502130170308203480980905611777673123951115141568160099140619899576546465249459922722674019712664527433239169771064219267757350811912214219018393482998271352999249953915511784738170762147739349518739861348669098412776460388933750892829704823275718524179562299779035179895897659097567298631697994525525382711547902235372644081978416462209197107460522748308591994385101107311026163477238579367993262906891560772654354309910323016607542468528895938037979734721408724388439435764450164732777529517598373283022013439146423032111367258934975962718240159791935195964399059569296005179557668219486696973234174621857043566937476858457882952019114040161943938987142544164386377247400758533480826672609965771399600386564123327271789110679535755854484779505157978713898215055045785517771505081992926732440593569406016756124332162584871560517795027611331502694231491434731995323077056188935085445025400956414838048028756109271164543831780264536113013432549597917185094072547344168742401352074899044735754447153876440855217703806442963595951959355674447062582246129109745488074492947364983406364005228075703886706338163237534770749928505167301375657985015581514857067874556432764956317852540162384808258540847709399491293793909400281371423863225948431857713984229148982414220506005906937512877708274344034972352674308914007524572488786529999239269542402826852699144236897265214927411653074152232415129688353933352339502682484644749619410278901704386076276961145616399563918326957637805381895454372099932585786467732983816629272181076966265635215673182711153601875674339543377977945737394769959248655774202571607860681917220708626232787276235379144127374519575894350344863300577855220716278243071761316870530635066023067577777220457028202407086251150204044489677751656901551134388200739413064331206882038418734626707048393591684452193067580638458357490274683983366129614125660130735699710309301546566772392661185766427751731350705679213388316886010376049183945194971514434591593527867440765433434972422777893428588288222889826846172644600814002210444206543398641974337878753047843787130031168702665886462289598803850031819478433781844968332581424967156865848083476261927722326809938307956630990863334733324650406957609565496896263892443910049514267813990936887448176413244005273138351042039973833303457859021588274713426176533149968545486631760126977045581862522527065824140615652897733723631607332013280021934088402573648976104212245124387248326293287801202954534186592223991171458396747319036808493782839451522137735430433145068146992519802656540463736517154049133449097165224510778293524690242743826444331590621904946638407557482025586676962699623605021722881497967686852401712730237814340490535030389322808634829183389864219300365369660616334085772044069863910846340422479893082476898080579024908288242315152981361900947117580112806595386151356319515528396889469815038953632769354626775211480782117819739859372401808103953016934765384594165596304053727291550935300629255677859868690298012865860205429446028835191122602479347213928518761265501626981400175134357632582862166265233537592013451302175385585920340553413156819848523017202106530091960657116743509389801251534145722754686621107242106306346726354791769558991961051053767692747239565014064907409092540655358713065202485069182030771106688768497949218866082319173514213646742062347137864103171531139913237985961932208795145278455489147517391059735966348882546862546960569781631232092027148738883360577389138693870512335224143540562629158005630199418980992926903227880092914962856985667091357839444314366702999061034513917318017671986365337417123199792698298345808015788407428578476366254126736325435011141197592853071186171545129990088421826330800536999017914647449125884262751266932225032251715437081722142440422170383141818012885840919980868326372086904350851415687918351071041941832884187788851564086419811140904419471938395331992889997166648983682142602043294226726284063992656177976259014386203472643502007091204185165971379163235071936752458798745997668400766182390043731225169583077118918256564774332859379121092546223148452585457756382024617562747340625695246046960167262300598023259551606661206235460213774642672365438588837178942786712245654863520822201329422231814411414707727730384839659241356183297306425659372950777636992922518367003420046163468975946164337653710352455392261760613432075597952725989989168636569315201217422593175255602844301792817968926005140707470031034922360680758032440189205995485601845696932868929148989236204600040438672036100281273818991472707402250010193845491170550165710166399088096134685988771890416151796435230671832215304528574716645269379937375402726380360097551992206865270481969947196751107377734031578026777581156858109715624095778802877532482604618322590759288896802179785018901359966608068998862885629490303582520844440350202443626720848027072602058214989880833076035350731492264178235419193481819437409882061135067810049598555425488969167163442411880997039767493010556419496862690796013581070235058037740904808629125362361589196235497870325851346949027895823525061233386248433232478356693951911307492283300400400281598983007676742109892848895046540625228916462317830309170875380692718475851224844693286482307990871933312607633302842556304816840171919720079172911298952966229048299469059390545563420267309555375264059343709048865940637810242226303254213950153362329011098479127430523559244766986325655741521919840289525865185841023670662086938292385008306744771024541414877386590194300715378976004009566054652578891129777548306865573592510709529209330883082262200333985887563187870384598114134028291294987091955614801993773957561255408803215096191969013483405734727959752997026790818463791123544205240647655906232824450814097339910234690717120141327787785465987882288636277120520212573287262624057073017650907691159122918063723596917950918493404151121496481748175525061664770478742141617609360540996194327961559706556855866095323518475637326555398912763675069626940729625148598676407902045605275400147157608190939013453884589460784269196261981375815924355075256278500560267983612341481654173559997021959551125744087269499071660545883869285678245315657209620413279499497446481281180199042982746665722204693657019040320482105377506144136929948718365683144572705685257700032807597288208626004562936832684085562412843623848707702179151710267787563283501606940037142038994933173767984432717201180857627613857917695716346124492010856350514446159418499861073858826459784711065566075874293677065870103896656145565692369863241573808103980558240894343026263521093023163132201364995522677302650590963217223239959485018431187124177240865714228517850897461227322262941481323117119346189626822246179261947322485863690398731625808123004435974321154873007951668222176411634901585540091497709889629400596315003130745249491213175513990663768363677238477763579199808286146917048520324405513222945581380083238121213782028324187298766428490019374761781110306939701555365624967984167305525670142210884947005140234091172537161373516777937549575539511142768654708738373030296887867041655356646239547784598618157108406134923922776760029341743198820547448313921962555716644423309448810424547315953087025121334945834546866742093296256723650218144561429889436713411388556620890268420352887714777686654393530924900987643794060457618349066230528784162922319694250564537021392005870121398457452816221346553570208947490143034573169724482040021710279533217925717147071457785914736682068142412861599335091067517118575223513912877166326748431149185266281632902692975301010319995880627045319891184866035129248353625638927645321812714853461359861974147034606684995371835228458258483529694042317425546807144053961082439533312853212169879445498074588787205044122194098733707934526952072957992631292789875224480195804221611048757485762171579768013799904457241797068240249740875975431385576359160796818196728457080244835267784571502243278896286606900077937952133811588830359240768545016696544986030369959576508229023617473836307616951188045705159353169410544546844535261697208765371475217597215023528972949109482065538838360488371967588689954443071766511294116564712247985714528367408581500674102035413345626287198511018160352504364633779885323369253267327805457702403621394795027879981611587255304260645778872494590698460484645887926697064838919600861271196098252943824545368007576479758572382005728310396765629544382103848127438127889657813869967581441932326790436696949852397601340206280311558655662107710507350191051207365676549782155779120854779148788043225655896930708994868908405844917506365086833603582126986010951859725457624103900750205827532751203396290164569220888877903799918724940660588703963983609647554744658352828051407723571242009903976083702441673064339259705957779635175084492079367465762160071987615772620229908283054091054767716189029789301141739958510153430221788800326401161306119795586760345273359110837145121789506295216226569990645887790404386412451539346386367455284291756410092292281232561248072398616781298712463622202391829170784998591274933501377147664928104148288028372946724043247876740031106354427474427140825700897905887202312458170234840688832012447900608819623837982091038457517005572551987731362551485958002622951777397423708339282466457349430275437185036797714152669678560900921676491216049054098123973321648036522655034450504751560138890942491386304452233460443389452841928541531329298850022105435810479924990216623614685077260496100857297311669448578422459219614558407532223305393090966800963660239448668427572972366261887241763393204476044797672659300907274339703702723853264766296493196554691819347907674561099676921600896679858268768740247433393467150172820946758480059601140138059850451611631155326699227138549576195654317466762176873341484762948862116668748999081664134067220874950920448119016561622674137562695388117377432588311645991001576836694190316834183984275312569497441477041954333524312115563977252406439632032235882732782298442587827691422043976560000073523308101123335080972459455427440147778794474758922781744889052436234940134133508655714129222863781492171547284632835290552047735078731864625315103231858059218565134453844234555666435117424756376312062569839005900133171496267445687474291008890032952585110560350859560695959977788986602999819042214513073727334220847297172088815953670893453858095642370106427951295102383435653403462088973143163208358305331815390587681310432131828181723446131794869078683805175194694872541753712098042697260033197932577496820989804539550541281400029333700815572897422034770933973135236896018988363709837676244825634859111507598242783411779590805949078182889798516376973192072716060916494263503990711324627546027212796226790253111046506885431788581030840548167888706073267590674916293543425285772897239098641878771223257266728556397873150099821730707090528780236870252878326071855545777721114323854100033391611365631252111498147866130246801725512244528491681922948715592165959138470429632731942263826750136566648869585278903468423503656980955332479374788027297418189841066269948845235005565987840962572713296378628232870850006283362337401715134904610261864617132463934178358537288475926523040785554618390414198450531519020332404599544484259158164087424889147076244483635102464677555904709333682394416258161441474475933888498424114651055058596175028569461369658830691871486079157003610640222302065805081418166918801922847807683084721734097128589775989235980806744810146078504846779470485567358338807958455653531302980489880924424029608816892423787536223602227746730739882373351131239665292225401813185086640665831082117371839372640548419998230407943185379006080762085269975111576029016143197188801179906407530481752550761072863654706496306598803514866240134903409169353267679515758082751106745633425936784039751365557736464343305605365123843513891991230145822211008507147966205421508039493866152376209011543607418917055715214372885587097572948841291736434619754632906545311462878466380161118840874921534347036147589998580308512684811536689497250001100441875138099974720700837906644991187931428807018703966542278254562406217957204652144199951530866755254344530869464259162471223233438863485645183378148171716281597733346936841732570717004747054086346216018731104134724458680239104059091451321661068784742498551365511066181522653759786743518693584280054340241239704808687689187126939284637778194008097082865744434099922629078251957602658606836300772397671637159270089576211803647574840880575345478878309631358373020795875317507322677044975874308832829962108832815699360761912124504937519998507216755722511990423694329649129696108165625438257269423250572149971281913075617598543943831010127554753762277140178143356873124668248277215094874932194516841494028442664840027013164850462339516939547179995780476907617817776202416446660832850557022232045013235039363662400399630300601508111490452815024718112997887421862483375358770277662731464280985848631225917767135018955894427468793126215309137128575622696008191557793687991479252957923149718136199078394294183487762412856945174482513005448760981518658733275828002856125879207455646939408356335606419488937168584084399552002606338019085409431902571117879372387336829950241431858093381677303254855100156975406217866883409843268199643997306608996504099483452499488604991254474977312864319724863295280301106049164418792754395554224744905836218250191599159330005422766148365943174668772724315552494916481623566741260105007937236479833386614320328118964101106082971335987242086457016889862313042635834516022028197077472963347418550463829140591763737532705165356088590990702390726220725321355413705762449014398266639451976028021897521863973777626472425875036673152303016388877112286971619231537414399348164791873606055531160519265365087424809476667873016214142116777303935088054852425660128822252852017115648503862661746691524158671006278080204220886837066913032655551536080245425005537260678735771970980488688683371449344554105875325231286336580410362531492281558261142103390617930913791948012883852956095751264258902604704699909732673055891981038626496406296071145564036051701799527569070150302402078214673521687235766348026622373339565335836703244466034298960158422076407356598533674650938341478995799582123063394772226785520637173916783028364338146339537040698482337799307753731019941676162060488063776923965640783562532392016812382341501246474441970099859291168457774766559666236227188843468978083534724885060534794415312599262014825403682390212583193450344571152303123823532895651211140863892415298380305220222278981435852206640527700832323791630621893731979065319072274341213525370567267537040288433675733743938835137821116574295766697242472797233535662639435381212976573686368952163569372360193118365186690576790648759911571414059548797457425103090142935220702378280395850363110588551848689696222126006743668947270526196431927332278107185905861818078780470082115234268178991950325915433530154442007945505055226871066368033345413434378684485705251545431937454775928990231280290756132357382639731815455733278175214691133199960567909999848894501784315501499190122726086572525212943971606541147652511009614611894221320174031733840852441084295288025513406394789317072911542620167562586998454475517368941820341410851003239308279516046516715258477434252845805618501822057842711352577648306375833582237021556800333411490673869945948901741580442584309897548737492720774622524436669645587362617537999392333072192489899429246464877366585138071955244390499423618411755356491050181272037062651905751865889238456886689319574946295404052208692862402156061403931012772415087078234611232802822903955637682126542035004285893875007736291165124866529122144505738968785466913627190484022915271112310845740216230593749170973740361224031821170862025582193070724421314236608302368425380478247956312051081654338149837877640922590219439231037808421319435071603165742373610959046945270872823884546245133969933399908368753915111981905923774014660063366599392740536316514353681994279176934511615701791659628447494083468325249809642112334935559918578685340174717262163346684093080858814490734650346636969097740260046578420377012577483029811794816405785943319911337813247469859341319026148504900161716902872641121696904828619419483856170478686513103238202776693819002321164587805486013796870435144324894259818690452310235446309375500769156346112582065811798062998073430201511487427735875055605862495289659746981178746564171120453785299417957602695210800408638918258965047487571340267437939384757887011535296843619727318293600222084631524762984375400001776348033984779575958904037500316088694131104436849103420526219904958875404196385224540408282130745764839615013014507267319897784645442225409823728686228706121160093772368133317019251297122851261296546794679216339902248628062674405591472149834572935139568368022985507137073272364349524826063141722501801163951618816228612705053596509119551031960418397522469919358093997902228510706254015879308279665539792936628529463707632512430024712450942470169938433160289198565509132337822297266641445142755736560436825580357651653971243230679192393358594040012020859283658404903440523129213014630040119136271230593810063632439811536464542334622778989530147082926340224491955795991855510357151413412090165988680914512453267609240799881787381985493680457037806166904134466015364022337498648065864633540083219524596203195102194629333075178821207119624020302557186017842068144693626232311101988587926682718957407636267001324074938313172853625363757781703668424533059252571940089207538151698968434432989168893267399188259290718417988382817079464155135786841310993771789098189952187897380278286812543233645926255637918275442138993316790135775965704312194775216978231097388886927776680960510150992063628027704541163988230152403775437569738420876842042101364796452892487035485001372895718230273931855095317546022271767770933668703151454119547538571465104093769731525947454437311456332775071644604670257431074189949137155238078887121657364130859558620908947937951083985136974884884080643875412071841189206893974896434670186264497855294595525752289987653325502186478316788693221736100325921087091514718615558115284762196184675976969673883129886770380984645559351764116466895353669390564455794600643565759975836709983382753788397371397253911577898699745564883525856660103885486519326403198237343901561088639006182718070564811287291642557710736164551570738581151477770955023597829121128616040162723641505121617404380635510715649916395500877753545750514473679751772709328845003571524745549671226567880564247588085972570766648587153065038619972293618638926708185863830422055523174363681999037429491034877423975286036956044481656621718751788069451958113256889053445338519819265920906650036072683496565845506866769192219755463531538326939359393671986029618323290014085694419417756796860044924354305547078977956548152070478451225421349454964448747267330066209036549116571216415904758192300722854403103825950765987537558757268282128429412472085821876898517590364219608619815868420568943404491746420433831449829277003752896499069925952035878750078240627815892780379130141994141885489466095119893995675131663883117724306163929335445782290692867509646848696172166383286485886971540979321229170757966904237393586473565925759712705489650966467201318561850958052877407993625900218081486804187548493162012389764029211823318939536003129556583937270510243021995413445225085430713071582902253847472640781173169496598356245421483383824304853374529295521746308056650349364991149013047145484911249033212562357694059356883911894895916118716826001697798030810633093661577880417513803746729530643178940698808342431085549157941473534535039070863218418761069310744664199386997367086825349239027632101079403182247628974984700930486907613420724320714647547253668679348228704109632750618124630461194402055085945098347949750459310797489796444928154297812966603519235744873284595804512790392902001993586853372780384375705367847434657153139114127142703841380436830037637116871081474632357514844289844284898367728087449794925042122048218994255368654645414363127898883964686007678330314009439158788500983438240953672664352226074805055267148391766270715812686601435097926895202952221106330820583755708189092229343010253878950170023926261684570405643478790481061264953375986379672367398432717486107696100286489087456050158497141915530515292126507672497911814135158634968195265260554929978507017640467327409685175725551152763379011041805865365252881885517134087109154174597741557085368991042076336366059615106893729513489712312676849756377813764126607242175348515714444248818545923336061204805092154071749154537112139523583349614945180254102345598185134993289587530562202655408403087010933143283894637851348752383085339866254001646620569849049854166608234253829454990943922399039293637939018858625251678055025601421541873485252063367720389868887605518586859731270857599589605487098244750463418448320824578845681264614827708468214959917491155526892078052822044332303278376952574813630994241166738722469834998168824475880940124119946973266873021965862502998330195848384504942169323257244617602676059870235938115774028746461368155974102193100113932803066143956321929751511435358156143147366882066484477191578102687283838590713940361877947310104349220964587867454504996744670864862407179736051691884569202029581906798111666906793704268157615274700594436178333837800924353838043469450586769411668339011869301687452886817023393793724376579161481851622253821789890878206080344175624281477876224648371184865052518739137335076980633608021141007432016281524339228455745193071307397880280730731239306688488392934307511235785355191925605826613079730455263128858199447337030349033435682795933727742318156456186596750236566365944163354994069296022126511965061631344796334228684370942483220654884976851649984607964689029498718295413773475111737994571323838187296572605508796274480095257280680342296934869230506559420834972476754229776997302678324416488352718209273874522320730059140231833692646545359882311768966619330653818925655078323430673088048964143859265222589595463942437594121641169407167054965000567057790094029494384022543009727818025617878127568914468385445616487297782514715359470306474589811475832445608816602369483607913506785969838215270979258882587752415452703206679222212028765215265440278545853729534304533403138468021875391462428781787516388750883457577563054543175933258776865528062474612126267794483497539345648783581419310184240708416979953213690975357580967396889384134304864498589206607646739456259140310513548006971484196914343345646576958782869682749073722006323611979899426676684099143540109776443236185336261720511437967238443695964315537439236991569090608696638043638583911731122271645799008000198505558370423273620503618212423402049471388950016095684317705125327582455948843970391478246522495483692882617051069184244458299429834357928131443595413989833570814110357812687577654577948322560916891441717682830942676432335638898531508807648736825600281324277709729523434374130876462331768879524036230032573767211044957213944031529378091959049452899546888745153380207302232615104693712686536583730356446931348681682053826514411204660563044251576323907090020246447266918046520697935769069400368854565617485518590913410680046182131884452937309615991468475018538102201509474735150686857262668504416176627507848885468581433101614547317646485006504522779628729980843524595567409951368803045774987928599485452118546737483552856061177199788966360262596997861618752434211085443394071343111478035944512888676624825122686934993159576301279091745664854806128454356231733676501880282692858376371681533005998057300143931123747526824238086358522217254888155623492868717424539442930715199519408850306239545864345427829898342965624409257962671509635208433076383506629930207420698826499591125078954218457524928209342527784704375158415539787131982950377033490316744367798217688663949436935022775692565152878194193024724448840091097348771448857189289357740268303280936430790706338359055771068233964039864849483184389309633815574664403231769321749489684718396547423855507605161265689900626006877158138812153861879869961421299122702397387788841777808257355878335286080809673446577294478437653024947336601606449861199289567123454977271316902105589376319675828382359766695418596345597703112631771288220535227286778698302433712497248875185095731310401167966932640468485509653132643284292540680224035372552478470389939903510738636366549582537109358125002395173945757108587445532956134786130174195891100392850227160744579848937272635199011272133289555069419711489510320034928500759941106982095622053819485620712779194810305331853821103303559845124766743644590798315535651183240117457839095212575884306289169611910403318752763767013488288397111382059974704728808196378631748355299889250766230522932395804248227586000004460557442156960386840167050869454960946428332789225629737421661769401433315125863109699786398962786211634885473124222813753100427404571222260821298816091327623754983194570090021487860168584453480152303522076970273927967512045212892311997283313371894646225052685630112855749565028119847682260826288448489887635568562422965261225404698357020778425299244648308147678576091195575023850606572454265626495541341571767710674879412014388294183493002376469069790205376841895087794540950648119495457762551658012971492577808636615889820316388494139108866628262595827069628083137361739164466117353872651034735795135078449584125748417517842816613272742876455759145704495446118264587964759374880527087105279704252753368088151053618348043426134679027533858444305959316097319521919341250356318468471082418333092671769341416393506666688165860813193219920370103442719780459240961594987994678884850100455203268455522160212176276309966146685612400308162757886728251827139947073416548441393891751056362763089396259941025328733180380344866155495324247926140884018248821351148900177325636842053558665976547563151688158957163953653663030362797061939110175694644097563454938128124956320872964658697648428630125607120861658153804520195591222588985396564855795042736106059516506599112854944765678818122365579264518760531992984818846235722145500189061418924239446440500796901540554312136079897873012485768674732998190945664268587960730162634928964856290869374727938664852140462416374907217806680495881172802488487591519278335162375610309973477838785831457178598578402175472165729744834420392000403244698889482506171470051955437178884403369278114812554228591503965679498992169407957162396631580009895675937295971048019960215282398316513378723197390894890106225662588915321245815099552800554243205453554008028056919602123000136913134309817842185611024320802440214951952020124083351827985003192829874771308005868569877933536567715269522775105022667149954754771453007256845380930943248170562447481418661354187742188167952824377288685538268636484882019499052536400953501621832761134996202695548854332175472383497355055937305876231795285493130801052401965908125559911576337018273910527733277480561231934859227321599087579291502040824311964291578053923426657753041962029978226177634803520628595280895353405288002136051562686269891092800566504862607436788474302045092326830858670459371490815496884465972372777922383747700973482719983107813041119084243655236056480906529731042855552710017683228666557290851324792971211740916294220870845100221719033789157562204722439646876472904662265501511506821488212567995670602701996424890064082956252255529016509511339250002031916704117361789256316540353681371318683127155598540523288159932733971730060087715622701400900441651454443084380331696802338633206380319717092326331843906321332370272675172716712694421633622848722131094751725487768555617421697033816733697517680006638630613911646219247280315747095504294963159348088827695268354423422464589791750632553542436117027921506871538742152003284971356231398571329126405876722508144772559883740626741552796796084354417081720922355487070857339502044911702069640406838145129808099237896043194212110579477789081270738956984782304664642156262182316488010511652684884904502718094637128898286059565844590306406697039901614690498343716242050898471391646282288063470584393132100698412430060859300764710154945881022446224123322450608825191256384832284600373609584668071261064704802970224568660863534100228046060704257587377210385765061478358594354687810471166854121812557877979435308419361021664928661941736721571397248484336706527476205496743132536405127948626903286826160572462404655150695095159447570396592508992987152850444803614502529606949113286187272930170316284730916537941263427508427108036700636983048897405852923545563582130632450004076354661327116834235965181549587946337487011614070093355633002866667513057974214571697383435776494063096515318440711185451959908529130501267447249630827774999624531685867198069241903808222910523410676556762952593748953481251258636521811438353992047238763854901633456897889132978846713398472917524422707871202368682397240836856890306391525212074466674597686737154848036202586105898718809555078131010383620482718689740949149758609665064199149790981181904106322750449265370955905769172622676344419119464261557834075916818378778312828997543989534526920817468879980087221703210786893220688469789411615179170727242653680875118733330785903726288654876725347888047899868567370988544688136954004327457990727370809387758030679752354407344320148181998223924603554613374789655892667785504392179948755391718082440405224571684209028767750348304025726742087482603587553662138873271531615001206865289414197329119694509793523614664966163981694274432889650067535482656845424200631960812931433752240790097858801532395395337051956545804945071484312120160740855580957502553068111413064189283708813652895398481222415463844514129099500339651885510944907766773972676102361800678023230056402543369182299127344089057248060144510871348930937571638349588217705772017642403250548383875361978410008358224727156902881837321077563710063245204398749340338628914590587770145706328341271690848070332173982677264128813817482088207058789405146856143181365130137619760881667157570700190222332439981574218030997410373250379158532233319575954994636815768043479455041602506739788998350130145664237016764736869113186225661351279022349218579014510543600146127696347184238368731336816215680468970959711014903090652389116299249277407948631393814517626946161512662314120630616796656220962929473894100506790204602274184605100217478270062166342192421601624071652710679358762636146826629737354667522083119106841469110027189445348698695709942649278805518827561570767768290139663427841247877755978965377829307286470812840162631543032648857660659828806058282744517221655770711955904494709030776119542395042389799900523143840933543208744856431110038150719796209377958180043427516711090728515124103133424161342295282496716570425574604833931883045766971493312969554185294357154101998169329797189420957810492500252877766319592255343815258133872264204408964734670266640667869679393631358379744638354836392077093213727202142483388156336086618241310030683861741502598125928194204438396834301556972351827405015495463339268823809657698473064211465789930030524835300997716094493772060603148165105591372697177997229189183620210362274997163395629312902440327713410316104178613706447290110334488243913063395064770285528946399485066111902352167985348160323536914551124104810408120452958765143600512135017466531050479756833995843931509795935136805046543805191229364475205630452604889892120905840756398566340038153069614536092629914599343360066211805125649142585030194853651197886909886047735335707030104838821260531680694995358653186294997811319945214716713962791846642342960960116760815462109968362943432250793421823188062815015609010463845164215115293600924432118381602031861476447943370409148869109381242422413701299100230862658203318640741375528594848210347170444224492866308941635856859230693529809658706271673479596920615390083666073864945603032676926784752443513475584839730263436993678226151760473184888320528452017317729233894948035810315279318919583618723722336856485576821514088990058183521039070201768366822354326615430221906960409675279526998085222627478625595319247029643762438176874700641031991817560850437235142914387423622719326856209855046651135669378228819203787368626444248013872564396655984457622471189312144108893836854668647375441627454544603029008329404570977152946962951190944476800016540974835987480782477021966105842906724463933222326062741681311796603692266348602469216663046829105724076884107438533476760224942733682005319179502717685481016281235458278164501133761970769507247769280508917048803101336706230709031214630492590458212141850431846335937210083774141192335499507333770581785339254386160440053019182760706500476623675728967011891644605397160998822012230584124822963234773491911641647723905698304162223501051337036643432069253977878226702600000235480518417081535302439307997335986599390371819402771291024713291745057909376118999264573509959321742180375268318035206374920753304274466746698501072039148619153181197743338404792960087334904817684962012768607883515825783935437976396515750332038912573566450409803463457145865577454695078050605119518210595511426603087193825244347005605559180587895570508756524455379740476161192435820561143066482622841265103935326772554454661462888971738429382519377351603670398312384174079446449100482606465080664625599884734223541798405951246418630120741016892759188986609579190408851275056763991494579301350722155554259161967033404440476326767670785759514906749763552118157009440979009647200899854462648816304870414723883443627324899556948595349495686465110351860213709353344268876363750896993371179758562322551117834344104792440895540160941643084416121516648892312329467709026079530217724332412609073477178415271400033875877389381994862803178351230079717323796558545130771851650333672285892987650809648357371361037370943180206039549528441674296187389930210793514475990747408491974015501999612571545850990159253809253799281184528481580056863161764497897230411985007109268301592607075047687993760278883157413223710777121248871102516058100970224291914537600009046210562396585833481921545365380805275465057361321133001675233718793266255129516955665280797201853891362179380803154296791614888943389842300169767060335118700238991286370830225621619618646842228324340922634678119201159169382617290845784049160336007467302747955331290627734274776947528664255103207792511114557160080542275450889001081625458673034099645549097814830627842646361116063250912129235282339649524132820714151974489919513444978640483214278204798485607856777505977437631337333694735072626599464261465185192281716198074497464152060247748699925599463279888316087259290370958260991159218199180193163259604282592068804198589673854797856548733676973532477560827320565961133358552722307230420250562834103576398000070147085611550064134598526304690061106342374815404209656623851126805793367052212915945704555939124312772136515723665062515885670253167226653454242981977928019366697793569425096700436000375354064962150279446301191420328012540738204894756868093308674667130168648886348774341356213853334542120973989420137636979760472003742437322318906108141884594822160058433046508133218889255793438740005917124788349601182999464193094717739563911969595833295818959743288993989748056412507502070685201138082511694997150888097492608304490565501178750719859212342734700484018302570954054636869579111272241567271564188238230544801777915470123877569805366027402252379665551177879407665852385275445576709162110578461999202851738285179583978510838796428288769687563768493888991904820794764846535342581801781579817414886315064606809847082385024131781846325007112226085543031363421808465106899673069445456893254585632225734893926788596140441551523779890128071200718854656611235639922545754773207333764760343527558684973220073408534648566456573196108152240336369753501418852736549294179194977531300485873015621299591839120012908922954616108490705616165881113917791614456880610120427941434920239362949565500274140452953465433582445146218921847609572570013652435410754864941610100719631146667477206814325856754303311820689924280260651413438969680922597661474287728027522061516577512777212385908100006020231943170137055493039294955435122139078893411930991410499319893136638269385504057122410691404091665954189627398927104709261537416351195638859643268093303042686441844346990398423266449988749855529474575421480365655652755602884384688072761224800397427017492419179850230262463555991060216493940859381210134337684206416281323906869002839826895337161248183535838865123855363854175299184478918566068047193057329718389539680785402199846766407438078847607197342102405646652534928556965851007250582031928814093149078482488074832080809117856375000852642974831947434748899436306363533636224260047898941261030996656714299158846659147596206799176932973645454271137448097195561184597107575600358706239737975032766608248480035012294910042771878518825433321908629411234722270020867058249650878987279726940638547624880504961841524747230612298877750754654299304124868943710501472805521704903798008575764618620325397905419560046121628302719987000796824020399660988152327037156537067763941143292494314811493835518292667004368642861633716147869611329631959639000157900563888702071300292977797731309725105859868451398648759148787646480133900384430770756632842534499277163971700500995828086886457114149589686832643073740529917523101652000349548603993725580168680773192918846875471118788841308798429989295465869334793459767779478138072685798088378727429607827660240953260349834689874020882636471978780480020745449008540771481863479476805301992967510130439740044859797910262359641021784620379155614613042593408729980465792917371161511024125847480520734151665843738875404431691066781760771930109710386896493238475812163581617514772226690968283007093799282379723860737630227014578138525038738318126905645310255796383382649542515840506243271172744907124635352360552986441936184468077096932279709660724880257924060448403192130307930888731880546026471459715572982980971764456150721479117483417319795445343016028140530645765104144011249298173646659736168275840515140697999632167738074152356804247263317739391162824701710522064970194948104011083292707995936237137682866585026215155897753455195774284638605756872393835515861742219320728010029117041473614082502540069772536061938679710440845289181268796498056743261972491401645208890104611637600275548773124795288369818954496084541650721291645447267570731200427148720047487849432028808273848860059073559391281385077533976372472363425633221131666042433827345640110854982220986214248728559457665866219575025304516261676962537889705760809381041703007462093856261007374457455785654835703755319876146884105775399715267993972802891508534187137529657229811059174207206294137020570124932382126371884338478802386318041931275728500638883389813517866885048147870050697244532751779176596261067511303322428884594324407949201062002795252743963485437824625683964054784262876303032622946058211414241441952194212541647016145100750906730931856576094616982807127549943593566895771605405510098615879427799968810255041342737356531643332480382988466831445776182518498117287743524702824474596139237395104667958877615283115478467111990409159548325140119295217052132004137148614279720422220867621664761595466848526935339853004386633907943269793366193212481598527169313319519074286058221767237925871510841742672871089737182856804206618153857262339413242080116311992388406245087636470565764155616165042178947928970285313116286215578683304449728640116852325713579098479653612496739800132576650233913538940514204421327925076153926201917831847324098033205949658441265974767805533859407707983806754962636908689154579171223470279315390855184951053361984153230869446739882574443084550739734380542616483832478124530879894571827898488215266567507004273871218732220929594912661954348033967444647570393579293316264853580854104125023199868605419987649952398077860565436148236978940431219780712632607493204234896975182805307043830438913470970951840097354431730869067832659904194315032828269147010894450815718917012383427324901775119081307408503588119170492946346324003672679654476815165687067387646267516654828469747817428495481966643233499003496354123892572958257847921970327091712911701347402808676474212873201758359012128379536435419629429557702811332691713916153079883932166897270803815940570611244750240001380459269737644625525638985228102936594821824511284393232397886805186442730991872170349129315934428272864215230052280216600668293495583850585179274628286140541837692486893927651342917594500768218063399268242794210343549392074868022981619261273866554424504803335093162878125215265175107033722204411868812734347362455680492402780703233931048830577647097689891390613942426656619558087650032900196938153442961310096696389370048840136056805793646225797131341355291368094403182753526545383048100426130569593804404890641194365749707093335447851466281320446219361065864796612457705160902745684762521589276594900345746825712553352455487999689311643031152848201370703083419045628287086999658180806018928158080883978690010378432273604408680692666132073681725186954369655231652503674289312571412135295121917007368648582794792703634757138035420481312158415807047967035859886786419030347184977273054344622239010020318846385711731132587280414664270390243525240691050589710965036025170963836538061802293736030912497492558504298271719644113118339199849443195405285193766077244296030068101593642616804123503204695351909929305602803507467889934171735691028934705798722083673820005702836437955866059809539713677559607140209317323040638954303543134449716989553617399610700056587763159064258563707325118137467124479091962618882925984898621355299750176385032299218461539608368432075480375957366254884336090536423092586494486192277455515889215036057683773679526153132109512044257997803664563347975703281180426213032365225909565433789620472694615162575056081846331851286735562069584744413553004206211033420838245552446545354252471532873932767399336906864520220215827682827228456226787358013282798706385480929379901169257699420065914378984334665500881804107642040884283965874908427009831721855856896703602555616071438281879773466050492935320978160536761884467538506187365960271459272638631049034832465128958744602116283697247825007286634576966109829725444755178348065149292224831713845615976381231615187147920987609842864411046294188737233641213086246543730982939018179504681683957679610630063919189390207095007812497878910357243648916337361398298561612530329170121268793098808409724507111568913241398695762626800083382302079748095132820306577559374726550640806988598690797897479687906656543637555002600999249107973974751229410708650712186985433804579070883945530591240146022012155183354221061190529930082837918934390363273783101139073057465448356150095564045864765090096129305903324107113422312887977224305990378273159850275171164094349360955630780300124342865963582534743242024892652381003079597930575363322041178117856461050574534100858263104404298682532283183761823698046652368249774683622339454016344281995264810999744208338038473314034068981347119634342444991852234235639095822745982322292795094230462078978048270120821177380228480668388922523374100942220860266994808544041467961935775219262037485609282086744193515619815106645465430743303504263398445520127509093732554916887964312749723621214977822608740616097377945111438500024270699290855398044066136851579652625999215772261095500641699791395849423640904784361293575258301311224606418973997309238635602526294681008731813801537844371927263261205038309719185566918885835264845653324275250848608291518325332328638711557885534714394591586108958980030925741312462335748343609505248686059014566522648034141454464143369511072367360815054730196003728705792438187423021143467947996720383207921549000338773439798286960101371736923149582142956602224167908610854205347254313180042979787615588427195956266819228130731350691481771155419631261208639942113239769247955329198645974273227346309578750651661975345405329289939041513944696227360381705246724775525065632088670104361361293019798849577145026978230502628358271243811174083510005313183863218820867702053499684531897122187386692482804420853347233292602374000884010679018811708814467865352688162935670429842215376207897499563384526190122136298121314767700705031375455822549909327897556325554481164178567379076094398722363619873660073342658015571567840808911466257639658679600347981672428097835823203071386946306637856228555451593053114619702316698397422389138071892440808028820703327094431653900249173881534453905480487464890483997122557800808418689188796494845708183113060996674220790867321184268394145709146172698502604427356439992852155036311535193315427706600944341178306884093924861373778316743444507387487713492473229798343058612669107478996704709514926285020336702828234102367404970793560178394810915805770736024304583887464016567743148223062315235152994014463424788746463748597447706615424417805200771829616666357139394141263922289293811165025789679182335293360099474503946537041195298183862616397984700264053041687021437697377741769806937032335459916797931332150494218886643182743210150237677648753087702196635221042623539229371509245368341474338629398958949794637892264718406285507962432224930891187877235495413532429274074319739612800473015338390099135506602415627662447352603405595750592822643983734060207317447106648109172016472757524961938405344490115821443053302284097507515529739373413716277766959690491854856317058857364903640558845280962882357559258556611966457479436398651287770512689395633857167444883645066220290612053131484041469421154919087506523034893763006170669419106684695949585142022288549345380332756896698260077970957219934975776728023589625108898858434003387143342452897414332962911824922327166046850372184117879068954320077802907846026240595183913073593433447060069196337496673622334052709064301181385580485947975473201316376823705022815680684977630549245008585639712284989645176197625081802036796406300587855755370963044508859179833852614706671021796080109050850564568282640177245177613469205727440559338122893059885866611737911587003497435009370876986854306043558892111236149482322272769716764543413667215821690966227625163407938837953835031011840947472445613584084132277194357891409330880773923886382808264150793946738209813309185026670618258164647885295594820236109826341929934565728774190213267359482975937509819325215459332078904837310340771263053620647267817793026397714123537866618296484850411780428743147089235318116440423067247285872183845978826541667286354606517655891294895187605503169229700711432880008882968817107120963764099800335321985163726973977656692955185364657921949134931711739279665416653680428402630134900672012461303946319492006793442142493841072258938477724492302830203606172263187099011905198774387630174296933618430670391640754475938448231062203514262668042298089362470700316885142017014738128768036566615120026588077948893945457846368580783231036246871181058815740833119388265221445847093183074665158520036387893694766439987465822955431233877756570964654314675049252944725439506382628112248481921717099070141405936699360202620278647753101825291908045587231538259131459326007639994807873261127353277142531911904282488045317587164855947546552083463447879955373495880635598450066144663610445583293042252064007614846174098046660573309215823765480506354507040517709127221465685912380544431223161183124673581110751440659294107923644592529416923997773120696314649859281338982890061080627370849552439669276395238110511260029547624571230381300385843421436116022594151423748931452439210615983456461865257678006537346941957136676990702190383643568290429743161017378698858576651139351488352262600171194443997895007945689836985921052023152116208979079356859236299846990963166235251806039258756112053746437800643082758645655994538534198419821891927570769406175875704583069309780735995556098294071623333656235514256674260698211346973876510053978768814582149466397080680724349147369845948250513349674732196707979470623455421054629644506298471411850139429880181262531937120844216252298815529593059153994302482861140145471381135906203171130700406804957544581452548006887696735133010862836664206577637290092548661513842473150483513177857672963736949566223529144467526912467186128537875183495850508545254307430166889970565578189051484225633098405541781317600554819320840290067575340095773624143149452030822784815578792496164977119570996618855699403682302577277540723611179057606717584493218575506066950076049890793886457869421079108757609560652446965604651530507644766812541559313782400176678512705802866548068541269935451794738419654402709950499928387871150262381533562648392142919786952893340865320773814502806419780375932478882778103502486631537370697097888102636485249088822215698533010052296007023202857821043441064620128046147202009213404630390019419283707732021868268316390045037270054172877757300397641583907032135373176631291689570473758633915552755626793370404185737487935791308041657460652159362923134982903828027021296106423421133972229946850042057364022379382241734274732363491577200200717940915408707041427728926317424947462973379705970476322944781204170265450797716222095856678625763005014479600975135094756629430567719182566639844118808334669525155414943945177169435349638921893626142983265207400851488231677519873625846624676340351320714878536883396939894644570928052324819524093037200314671257489342680184019348444341596166107749603851642757565441906041882806687365572155285890818702594286235914506375144262503008292180741870732264028375201113383192872579798266689930512670812329126777107922652550695423845717622746575237078870723003201964886961722852319448448071137727261188148031542121267445509513726558981919433518189668553014283756062872554439625204954537529505255369343741132076093090242062702529630469543106372592560345287845389875418556476045906454563441308562330361422400998673365893400392801209665664738171205295492229933890516741049449989572767019701360704068375261515587999248028160028500646037505571317599811786394271341239673959055199540131208158470057468331645645950308516555823534078813591459502021989150414329173182473527182019523570093578939616332462057112397745126413310223050984355470003728412374796089223235022541403624468433463413672583221756728497924103266410313889729181910595347262107483391298808906683699643124202918718688228024159057862383372970785714306657003562496532435757029140271356170232719210872506733812008033181496127635415262023157794422902311258685895425187842096818575778895081302646011178702798231975778052442975750606469916597195755691381645547655579621987567937934622692762549593646030944729713815559769331367418043280180874087514600248883903764694679174532609348745481057935977884243015041105629477437216024134745393262396469193097531067583557538175182340465642005498594796990257254067613360507725645054614449016878664554735196394778701364274004246949335158337629744415975480611049955324726418796071065358664393228775244817873412243433307521488692112337599878160532227225619199008060920195177695863129498105127555524082821491517681670317422223968693903425259950457643596690201401382499056032940279707659834435873494120867866089723194863412011779842771571560667934141422765407473559166278089657059653644176771178887394529702178040654151161892410961529224805753726675550952897780306464568971116995972850203776553852932345697481109038549279680569195064627547681800491627601176347288924316178204657673516517521971289566529673154266571545116296645174830617100199960206505258536538256930383033172852907089897835250569378716616342001811472192500638825917030251478359857792555094885325482786522868588355407766174422746652502195930512279589097198549958047309005995940782505586815552091294641501280913565354709922632570580417384792398271565863368689232272992263973607032786226776709670298981397273677163401263281714330211340174234082925547229776914637542924468519816363874800385081239146091698467737579595946315735770964781946941751510928466250782407744502499599222717476322749665561789521789235092782479991685511817164847153123681945870559838075489755790751708771910162065211702556551612802354285535693198180826094881823099024864889171465485092093979834320546396021525256822009784903721254389752093965482949122602630104137786297122702714588155178716035198085871524911782650230912177703897574356615534314343028707438657496609059281365840734225042466812555018032494397278502116725753306578099470091935558918907127047943628617225493390864973518797814884731944438332760566806123060645574475981087236589373388597695254214271399758684043257080824263127917997491791191417535205922204043737583136325688158566907496975476743817697880345485804246750522198013358282728721738703766375263518851692721647950208671156425341613250111777590650378885189959933708717774091575139183101134547920329618923572755344875654360729786415139472466524283603193574534495654295601671040366870896167551955511356819956856116613444493891783042308786789979964339578263565391127921364451240068214106413546333307494232868110010025951466703393268173365663791801749918068881567748939639286437220606335996508278765253391976872382231225330771130924215533819316694689098175619465250541295297066624981419953743967050082246442779067708567205744503372762684512733195673588449755497563284019993531394546158854259471238687523054487110646076587127832606146327354395126055844004710260423880511335457318244491847217226453073399859871386809795114941116318269373644077142650388610446866286977155063979215822267102852949490750352688337329516636037685361538315514800006344570106011220195796414315125289365831658050442139610606474276549885557188217979614487410630178179668664109479684722105826552823726711837822194891333840932802999917871003907120946797375290771485322336148833103487983269925394551835743407886937349693641519028786450017561428106839366371457452833383179029621661921967839004828994678667239352740848151648859172112057127296635321563029602410050770498878759488722661543934937451126261180362177466633703055452564616878399699125038867698884899392977267323314893207532853459296458938608679702680064434044026786873019732610955999827045512113022990339760536202241464096290249675764939204790245457915378161587524626480766487026402863409707071086923321623082139527044988578057980885806917404156699200100113382050984889233136366137197516691853847690993497948739485681158140564340426135248846196065401565272652022659147472065412215456311763976077515572660663122885343455066993289028585893729196118402607840695708680941058862966859447321072667821061929604986619504546397775242535942323177469196752231690726944846641126191159007502208736075375308536623315800217249468506247446996655343926747963907793602227407251589473004797358075250054927473479170658573047229496421398900523391064534998924498402935286256024524722980273066343522396680390849107952480295305250334742766654282223546963985407294282651539599280754724553144269370733159394089942176312295616934944268894505074713124531049674170117156094333913752366411142624942067603885347434871714877986744710099974256267279634006855546034913617979252668996821829464079569659646977742020758855718975797460141303504397063992788645793051558124874336516977106745758008542267740449960773834222032407745811889249430516062706614176142401426514760349929586263265925067652776211320047067087175203183604165934110631490174853543481580803380355804406856105209688987778327441887353346335183360602573886471497800961246843745568390076631504113946698849925716937963939272331962614363551539867978990870555776322581758063907992741230946573447534913586177497360476444166337116729598378917889829513048733484111709437286666328401678676521627012213695180752298617778251119236776139768974357519875627426859435203110559237560859040018127310665959043059638553361270542503325703121503757295764350015795574072224123953398445486109826106432145757418393843371156990162771619356003082444632818493869713311641165047321354688058634056199998621426768738764413070600870229587681626576754466592819926569128647389478522406526143837294535609969612067288907223952275539177781322518541672576487027983519513117758559770466640492237546250014243595137583163292617702059613199194936890212897775703686894831706925077935221768634525108543055527555714454266312442258479805086208125442829828311874184123352692639904169198149070738289042718718605204893875482044484127164850623580088118710418249089415538172283232091160314324778120092708111605396360556894461599767192285415555757838416413380396128851468984665502653384148483546364301152308034431396675887911349187912025823979265512209847095137279450947198871950449591049136571885018192229864950591925272349447620812655933662185040935371302083908153069063298047078270436364236173415977325385037027662914087375705317378545801985062028939859679428133108245480710456573783278456815409626929179619578788577745012496251503671477150626459371947838282542435494582044753974737829521230831414900930972100764097609211511766946847245612538323028715537769526006231192014747128503285127257796150036215577576136191522409168925980622450418497989901691350085203034945566546905347747933385740241202563912930289228174763568973174507963541895709003362833527531035900767661634477082420683664563827874132281167318367848739430975384720649142867241057611359458271026027923794477671836080269115333640887967922487886031870967984651785221439700507943539105727303477050297616616681499578142239485236415470782793949276023056124674442514290104089594693872890530108705150169923614444444861638962543148444246799773446860344188589410973844208365294948552678236818163462374954278070954934198787504130515978218022516406076872250649173347658121562224768398427795728564705879500173048042341059580098946628273766922667682080172802135127235398626987819568536418690058494960141252044726669774391722265600181594352306303095857888029191986494003796481070889454030486765130146962738421549181274733958806200493127303815798394983312237238992818727741826081786847311683285576793557272732424600562095883727537308832064417644068589731235941127842833667450633948912779563774337286843796812718895040540379728495991790819379174454563185529909071559067291881508912540567148221587060668539898530484162829733394714733806744556076570580215642715128052273399771824061667897243902825878878702949416338218941887197626549465256484872413133200647963729464508310489678869196003562936241118784917077426715945674991989540069764357753376263271654356143384425511857713802468466706130148693650552857378452795767353100690500414310650360646236907938843489796617306596610246543023530668361261588623447717378520110580865517730823984304739565176336098762575676886520467352284974025786470553953761860736565062022408741259861409976377431247963186246167113631892840581561876122930179577126032165633258992208054412957547249199392702092717903129458065814842051400076445657153215776758361278296294077061320480395309699627684997652695610816322968048162818028530128410019215663061892547971723000846113225624606090866229324577874441756243554328281414595156267760611689474037878146043081195498130770646080256491195927459996549062965993286427684670264096736999085045613000054278075536944220392089888556067962706916151720559797658899407020647406273864900581358295383064245554330357670769750199738714409128614562990302116340168649622660713172681491377008236959085534250259931283505788447070393498605139720662931199115563327045857334144389560908527449063467843364434813399436599142321032118930137769219420192084295689013413497442769414753138533309519585597190833615706472891400814524611896855590502057116939113038703271378599343350843807169633559011385363796901290943492958715109755721576212940951167149308457782795249899037057890173984463336945903632758011020821891496864339901263350472907153775369369246721483825843664804223422167674597286153206750996837872736617158218925090154985408103886689175221595356670051157182135839657166544039725638762444374694769601537579602356359170192055210355784938569257474106196971334652113903330704696170076927182872771469763339765166919648368136377129189296906899430180008863174493504897096308599472329869520111111700677740411729937132113053145290343977942666189595631159313992030039302403975418274781837528725391170079057506051364823021931517237531993389291014446749822176851723188078902146738618378175371818975932762288261392220862975869953208123554168946846524561569744378383423074635019577687769196817201897220739380799904702810068566540978581048564997439625151442008550305348344703599567995442415521944038593132742492418687425911450562863167830696689966472147052421006670689914412782323655253351297635199821366608367553854586262551708838835289113570716538001593317613913109092555034726669435002134925127877026015777243162245572184686349710747849527420056958999595643012168132872633170234228015266578355292952644815689884970503087078276211990370118773438715363172341204955523784394852943394671647905408764858821034274873076712598509539060136690786366378353591548675336311885167199126915950421376009989544812436606976683837097211334215147644630513630510433236840304421163266404335005558378999787985109313150400040204200063017444322586687845420358555871704516569943390974521958560873826535054778037727549722826686770674212591896755983790229576838766293721828521319595811189454312847784986447435474060477319179743691070370986000222416275556792224940304517467697425178771113875394450816507889457445628299752795070989452999046726637401558419687533347222517491510187079609520332978700323959617670141507147689967667305828402362316164756984492003877053244849437551920551400776547619684569836078683272242622600940101961570301411958271274239420963764806379316016659582917938897317495852247892052208809967739601524542233441428450738310222446428577522885530252189650355761162867453679232450559742791921716757034529372169781536880975847560283481512642402257775562253004752426958830623224564009427769899539636585457186134815645541076357996708308576716912364993514479638327580237999261354287672944137944443259876635631311400634094351914398282775880538892896430732548773837391238453683772638251832901299886522063630156432180449691177534794309554413371897726284997366657600405077417712250639913335063757374313698041325143308046148065739231886563735862226578957272986938408574961355921796376331698006241790846893462410806689031809684155788941000123216479387505952001994636531364834960942997601254801105855727770704455294257268691180257889363240586874526198819543067418542995992265158431307685048390894388741599888800327032134144449910071680789799316746419938286049723252100826556684353153615466819290111473146021745213683542710343914242380045153449803855622067895503987556619655158387168266775084962004058945952916115178445537863960924984105018343159234042477529965950186778984594459613120914170610247071998060182802610713267370675560909308990227207215446466822771445192684682920630162691380886682381557149086678597293013192149713047388171491961122495095418713126644721196875860912426151205940774372844148818289050619396667950772175437019884710354687130232527408595550183879357458375205854102849740402715316874940124096949749069808747166675538564588999749063168743530279028070463060699256438628607023100342223226875450050305721038083104867460219046837003382836304303734614491048659265573625514361858073698947191225656454731132638360684554064191693940998474653802588203043584806674910754378652044111081722803233895357888392837135737319060806204125494016659861893517052192753249318768556990575107270608731617279541871157628889782110850105681361853318055601635623642993038227649879186416764378479586855704224902860261873996118953848165098233956319836460721234578399757537409171023570019080310535206659092760404675471114806642098204148377016801671123472730484680620867657644399795375161561485482629756803297807578892670528334570295072846681121026987751772928959753581404122276647555237611366189927839526972276542773165625029553412444814648380783899512610607546351408677062677120835025692735563255536253536815502341406483582936574835416869116325332332652990455219331202279564882199877327133560110669293752389412737624437697867114105320225108176325155919534239325882087282184895350184517070084603278550670555047920405371264471153044353215387957872779806638293124505112685311534927652727670768343897025094312406614632473982235545952247955181002966381340962715191034143297936703299529639175102309817046754931999449202371396986264621306005152662911707386635587742828427520775704437860472949797482632875873031189627510725302966209319558658297368997776946517304726732338760655309025651836636697227952089497137070541062082615654861294279391016853264295575178774730361019827690771070447195252142069322262182863236017795150454182373755716688827020436130611267452667762699097241188266336437323950459832175593510841689450153372101980214900399644773473331815729592192874147459198103823880194221868137757820855679453215763995535822587997377854457099834889408069240865161283798824604134995038865660628293583746248778477965291933010384997128668098003961367478409165364765642961595049477430463945275872728638337466310236124520964764064224709321048072616229232003995368397209034304276349742934759065596906102571622323668141424527228765327026340499500983674803120407052664447111120963418515622834095425585413374144299768039205316707137110545644168644054551167670451210168355943943934221320716745287867672256428076846631081645332091230890411157042791855550845193395253901367529100229055858864591342291837858936349046393187340015497841676104035713187565181726212636977854736716107256520157398678140462516523177749363792151574174806886408411348411643134940026069962495543918748188495070599653560258032103688847565207379930328752459093832142751041491380254949885464380751153050002951942679174815640796464485384020624829647714332483393113230325243449897641286379399454015910572941864195882880748525421612592283872741814938663909805797286716115259890919151514901782883062338178509524690288049141293136958900662444963825790697989100608447788254960017713153489966857562538443367703801434848928031535340307034448828729159909884527296262371599541203179297038828445604591328817887788137221171815205530664323960671199714242946310376919934191593800665922190014026368226731615603879274312820002590598199091687461860134184285202200996656099979400517752936629155330176510204660842593135369853520912238866865656193084597797644324504581981276736024394050406488521024951246943726428617531655288826052925991160199852235508364864875896988009541628795727648093403321203284519595348747275635930762483926801282134514231131758924691903153037710518246886451492811933909822450942002836487379676497470220554361844401936001642670091971312247044176434600057407112132513629005198537421039578796607626344787805958686928622362201726606548268113681509033482238251357909034833188430147959757200302642862909547353181833821975630419055055925298469878819336895454640199428406824310740875322264472568254687791350981920753299759746307968774304436469370466134123884975278373343845198233787051026269618914185127590970313909810544504357177383749793995091386133516380660668610326983490270556823776568919732772091975463785381635428131994366287576903911686801288486819616540062064181880734337744174248044711498028234679097995030986590478987050340205589460768878138655603255948326621184526733507976271301288347337335171967711430124019038880262526348433574664476079515901153905482910705222076871513482867157079630912437836472292848277961989112973975903913950551581430508578065554037613699646512275987410227849822623388819762430691888622517364703477823593970967151350765988160592583809988595191865584131483022909584467087631305506919112232693769526174948191832893100810691142772475136505162585166242910031379187284263895084099458750982135217215612655646746696114039898598144203796660186175237477472618024003533994713596364650705792264872502244771947545324628429329598366284680013938164798907887230155610587265971343200558028937159656377171133989903954949409615259434589334775045226149988447284765174829444514143839052877264687245662032227766365120726998189173640393879355021984601438979895305357574639694281192354764870215165568140136893780643236442755997406011272679665271274705006322212796530886582276824382730973175903467408884528724559119047286532034185913196828429396265810789944605872470073191679955875898422920113297543817754317248341091865333822711816236154956152066655583778783921980387441520693311611962334838490113991079729484303840574607980343809998212212358238939491445632811444567598715024803698674937319999707920414814575978599226750150877047466073198421410451678698965048992624990752890576910530169376094819789774161873307938737441333456419437553962872010192775841381023021070071342311842618588766421311798546190481004537212215303174792902273447945248692151265582717124012182121192412644869296371130100196032087855235188442078122715121303236180951004175091503254638725284136844051660350645084514512608530334990698277003176763940512236269182309208976548960873751321714142314621596651253113320056850268830165880950610951930632080342939122767281993672664158814687553723427702848902663836944480547502928278258050961170540772691257754442564655659316011589419122085191259707801769414286856099164318099248796371170979753071519943343457597815345565156816030823044657828206112138147399495912967269838981201228091513073242391882923385316871302020887173835960344832625655309747384263327558332597878079726004756776127194101031520505504794928833021925127479012617723261570882818720396074340284359344516902693363440359915573279599849544040439832184603017362116917884711700620515347722182395809940637032753846358828633863065878642324884681431914896287304677382454675388221916705815314291212063225309502800189258309369649820823919521373113642296408673431346837313258484485466630062752579204308299935999153763336058329984990803831933621852538447062930561209635901761278613968904397145847852962073137007869501378048606683257748685632744881896061600752825069940475646917293830927916819952126318154001992731915293257180504746922966869936321140325517747623087783965301663643496402514664242694616788320571101484237496291926935112615176432341300202222667512936109403253376945589746652146400963233618721171975994445601168450323932083420326728337841409371032171001205193073776726707518903900344385002036280701839995978581325242805238169999260992933933727424065793954309779768153056977331479324332289302935763680533287221038516471780668593320010120691821563339186671792528807392729963503117614211130162974603113956178190341292651708040262764836156794618294595125642014309806024575156697490748818514483706713962556377997968163538970687393486681412549302340943677838859695076963827594966174273528093469194799823009451476232121245444887347158554195425197234533507710223433213039177140455327294865199857249745178743825892359445800792935604865284648561818822179574639656982262215732818726333676935551718524983272248019955982097228160783645823635959248662588045461740807005737509299396574538972468354898181356565983402163320757059322971310732908740909779647789655513083784324206294628792353200981025613000132577065780881351149463602154893354981937778225624797864579643444661167466602051976672922572905599315868608155429499595959821622539135436595458969373669451643852650904448911244656076093885635035901377498211246002933883372346256411455363213134775394166673628430782976937900621790207738803176766275800362801269694519672424588610668891218264858830650229016456712973361260087612995591583056407330415102675556460604979450665218141062669840719087990386325745713305247855915103146662894593054953748734945327234978199629132314617220220366786732164009798569713643070668407180251582449909558691491105463466841532708416664520175638256115977715024438797051889500301116194510550818019702761430487872225394994810887883121934672728635492701417774295818853061695662862298531039528013301173781497512980447312916106072421704691770648405658900601906416268025358151055823509176330927096910755627619800075352671607548926781257699030685564864371818601929819652658467898942039941304795893130911849405199794909565543184431632452096621409452285293390906658975053008298807220334712670263493009889911910020834888591748147710831006381248001296796653174062269715129847246922354443904577199122973170456753551729569226206258103913330831499912382211601755524444602818423380227542253227625707040625090313900485026489102999905733407594598165751372960945217930664964744174827218072005147100964815819583226304168834364497660208934269668961143260068463955960482570646358945733126213474939013962196222278832135063231573940883230677590384785685021570164879790463844391663174123487826434858466215776317769635143570083661424074181780113050991184514075865655069207184201144458364038792914192819816348725438677364735422054391449178556777829684516250196038971946627788402149135646011958582664199558050939888347796145689742831226105718004257479698039640794013801189214536283227480413906333731182657816399886997140055516712180548448186822798307734438863424745295884600172416537063082738743599150605249548158123617363554479224865916787859798702239385473100458414666654757107970595858444583383372198955192899284001585429431068225719438396839925188750985852021090925786144789075995939803494927784964019379908342053160807375010257990043157515868583615364987816723807135296715333602102427765964763372753858334716128902976652060547576479139609061819808299100241640315072370110377804702952543611515371524634051848315497047679437597314573420181621579549360235700977966955336858774289218504883494053585105177675994872807014573261887112040687987921778699047092725919737864758858131852148533515310972582677808631360439419495827140744801416692710046703931683290597523266957129094547510494777530725983683063726117179327465988313206460915250518262759674979562571875057126428935744634907599458966694658153049802679463772905192160126791325021759703673539744124349754033738523642682300411917689185613781184957376178894199407251349230018953594268519649246867124013148640829969271850750837969532848620695042874246154500581988311855839433473493143279494091164297816346079132737334422618903690210053858590994654192420583732784985359900858645942741633919412094278505457238791813065267712875272724332742391878690742573739359481703046897474078029583951084561082447220764042006340578686218314931657474066303989216387405590108788891733953222829149957138075804932029594020903705554960242191005188193689675035219611281215031597679566979160812220451517159796209447642835063609957441098093485805186127002652552477594682605017052282554314049893623527471950919461634956685945915801295182351670309325777378511093374026500283399697983648995027862187142595142037281328183633162808118325925012203652523631920648615368902513675906763414537795192696304790055987739573021051036126746075331288516515303721669987897278155981972136904041680645782191132474557739752798009259972224678457433228360455001971289306833265801306034408488998927316545326421049859598682195748473232822100824891736884799624944710102920841205533887241734936506037498331772872038480250700421959589778275318989748627046649338270984105398007583735350419519557456354871739007414211200419747705787896023894514623221021844283943625269324584388077415532412240407910120293815970205461481619319022557159605524681676415955743511926797573728613025071741513023205363591870433734855675085014837533726196572503628876720919983392772901442648117919615439927085107430640950682790354864239393022658080104472142830832211355918134390185009860881627890089214126373540461279399366707330746664199437304082155627084508790255535166474962836445355794226038921818355421570507714878919241178059171093061557213492735987469586030335805663243533074462563348310888083761801115795858207011644083499141768134111039703453610155826461475872391648380194893664931957329113819576445456689955851870951112559330836815765568171918872068154996710742935439674925500615237327599104613765080408506805539941761958041781088015348406525513244393073157106021151517398845063066449843331367299164587820232047299683052995584507260081425426631840302106536459786757948812875582583213034559581256627662346238703367179125309790603606892394760180413650445159419809960051419102577909440845871252376237833038417767103582363727532754830498108782683991124641195842685394175717620430233506819136685096014593711490889513914066777432819971983024186144684789722052149585760646437340159951634766612835182028038388281781747117211007314618320288146284123279611618350997460123708217883719015503044569043875936905083415175698606296296530562718866157888816290829842117722288155514405139427139701325325601271101122787773857935391084151153992823763181918462199433959752858486314537050747765512968137437067615551637757926854821164488019093945492010946476898578410908513221144356912191970772625565170012128662832445079627846242609501859954741317384192131568389521405185798850260911210209239501356028371395315923296349737441295499633055613446085926858459019954008239861199085970450878467167858308517216722591134110566610750016140207388528365045161688976757560289514530998512810599108951496305221030884065455554893734078012551026446799900744624698125378275504588460133465017154116523023631364881762835688182488364008872590073513300310202256311240864394659793251470741442835903403093890618291560124872234723679253997387961300216808721001306548016751953418464255281891942402559825031499559687439333235578940541844899926598268748175971771540078818840804132013976068120304846626882404156300293424395142911134452354331199031387696941001609099648828861767049645507914617143833860230885631371132695048766326012072252112659264340967692239248865158755950373895630936801889352011481610027227861986155079112429519065188713459092209485414892384199186157164204730477252832699390418167137145236928740842708162483829995036606784526501874815523792540944177653534047974129105829365718822241847107383348798493422203835570210620981545627056997307012442048333537709400648971362308948162050680268249673795079065449857772143991925619692031183203395233271490416264580806104121320440239989245093535017115120534069229912205476459506758038833783284399551336660279618590273647282954522467039196553947139008478901371984246146792095122461466250068615371066230535648994426283169134754247321992213456227657947855901431730827955454121039097213756161203589682525691180110485219176802094252117079269695471269190582973696324047438887597728656641802171091448979986309730642922341103445675235538386323314024863311936529933286655538587536311251693787507989245590482176958740569851617297759112811098226632877246955875889376754072964937579645230373729164416749523101974472043803607038935022128332488125062087554411163558701951460608617958532906806540800251024261553216556685484829654133806526614840758949610337710341004369438687108676243209265599989997477413009537212062971848524991735782028614188937058483094890856233585115930955629062844561658920151244450042281367398541590476390273306483624036110006385927240673575962347747260699711829178552361728654672169115803862445617793411773707470532293706502108167568348524836255164375969718091868584374749900651183182592043722406386249798691489107836407209115410405818713809589439051493439318153118900296561881438566648921592694430410603306345743792829800377045115185553901717592069660330955909156985430071412322142685175753379640751517484478211975165501221151839705056580987852686864728769361680291703911027028772703824397501801612671238506672896739381655491583552035096098208688798431794866188938913062201644337401034488264437068412340827999173865283720629533646050630539302146827303758320887222570605609570629481013706505084215228557675766068496494136520538814558428556309603792738890565350917437004308699558280028164456536570189097324642941570562217693258875511559560520538325838558164810874982775175354291038527927759792868938479772945909983168968061435718222640307379211585915369518610227928701417335149654276648050762601799021189874011161249889631393475178501111452124438962510206331785811364834430329155961417189029093937646132700982991341362335792258533938684381959189235837302824174130921283631487875472192161441641126273655661381887723699538871180939650211190884534437910221183426195368643939598670122671346153568692019043547464296742106063467208616958677132011078723439622902031777149740617091149615358881593903357135813568947312780063774990296031840147752568146452841890075569144937769626042624928971199479658065716340541731555898861941566224252678194869066294382688397154920954910070629377813001673004078604714961691289853720669165406927175236568312612982059717250127795824360360943724068485315172097899672804478115705026418099521379327286225277725600520765733150389465453482180693249661040842166992162760870303642120504011018968439311596978030069091030018020166932253865340100144740089470295991108109445547968718889103881173311215878866195978172157149419290696945436798205855734858993734343454828836462941193495123907334368509303461452026464935923988840589630469975384831720008705452861212297605497123031588258016437011974717015979610436812029763087343762518159137134253862426475216576368543113223398655862997986068978796897579904333274378614961271833646552931817327013973222489458495337693439337082123795393906013087397370546962250552157003059718164995392096036111365010340559618782625172927943312107365662212883381740860620285977885702908287579573133858757793690777370919851995348997215981007005769422517554231552104066247273727024206941412978738876686641738925115494517224612941328602803994717514318320249015465375026806818429582674030020405965012799625009027146554266283176739447353324051188363396086526324712028214580637262854291574091969164207293588249750880002970239542193856869154395310782351694675685505616405693110032836163122595671122531958468438091116866840130107880854005474154971753862778967961241818321557858965663270899764951669725849611989981152365364471898832964270800101482211080997338170402192449729086804344236371297760885002611455169822326041313362784258449448426452829024296161570974516156208410700286792504562161623701372836579718481716993320234352276605581817938229709521706169631967572093866007774857634656587722988948068015853884510667849985587257933392787588719041445733588962681871106413177767405925510550253408074582023239116344382833690069199219870673807272751506668919741519642420304333809049627731628461905776008731311062937475878728699484933315826997415578600485658276700535943021630394386584776671358351003498230923647971489820508918928648405206053616940429433087872548957107110381320456598847049649739396976120904181411027621439931738231730060723644935434372259054783999219097201523459748939176650298204693913061718014120900455662538258867537351051434327207445193795881077226096926907913045888177987302791406340116291539381439368555252763532366240897227594964506955492745106932678753770373038062653714866735720137639471300746230375807688878460489144681393550242171160438884406044300092619339964343396480885361654192638898412571347346214495318620843233128120504312483564533028301589993170169408227066182829902095949102612511961588776971761109297858364490288862725928488233840729287524717815128853437717999526591358840710712698551317258077841567477055549924445741654161909439067835431621603723737959641049814581429343196083585734377342038190847773761260156988014120521489890119253683532199895086054507616450580610804533843613643393849878105551585921204966039385860972735437084402532840517986607775921460900930671591774760393299415540460937646563187132877632198378008364491477676728282975284934458374180291273549957783475664514404387363332580466479423323444119460193643959672977238213097504385459397281424436810884095454452799905856929332420676983189093188264733694934032414794721135573667492489303264935206526697703536662574868313586554520338017200882833876735292349701391618822989693884872371752279911624199424621018934890885763704451701676959334264937838167450931481279632894636493419010645103446524672353631315258667301197472524499948060625907083709738161848048411738090114889842071097046550695278979937180743706898967045750934161623108116488137408584585125900136312114013008519175377066212642007248483936444399669391104919716203966368453077765107588252654152806438639536776618601845218067377005995070740647881772186442478065013341961276427290541455417396151273228570351343991485664892013783832800330986707623691717552589517134248059441491499953380586368271080524044459014121609470883977698199026222072290962913913461177610007710772881868960113096442593396969513628789449707108247015200856102772900925067385852891912920704751512618193595217677448866801928455915096220522271683542533017606427103399439275305808206121386223272305923752936033617913418903788137080562025476379180428018175348061127912438301580933212213528768237605365631155762715590929832469015436281765788568733212153785214508326227840931049593441121233500810629821688556224566310604125120167675869712572983453460531607148588018028236676067573918651968613568614812193385705419627620055276098367464312861384044333142116376080294871344494402762415101503102248273709668062248393059380314644516916236215933075780726796713143754596105552500970035345378215230582729022962363804327039087687113523456631017590917918047323893351034608370334311138567430481675840256956907662051789023086096138562815673492432519548952057902700996645391065770912215312928848624343319693120775249024835645711062196393233548228023950093471370048603694696755443079193363017311433981952045998617422752591696457861741087090091863068120338182939770749481988427840770100699919623319300000691865594160865616343180902931405036118669448948993475185597954921158776651297244481854768835322214578731159189774419752299541610185900573785779485970767636037390115867953218989463399825128648431353392458435095517628688645453248008680889656497609835316516998191382768665478453414386173460136864658021977796698074222024727245597709201408573951354217990840243960623042052926582756582003566298483984338619193330542376195289003881996244115729418530091407649422426062040399314011516735905394876714129687390193793764702521491674869584189320227767284415958316776497515277192882245273123869330227821984267893940885790840098492043694551102130106476830581551095595206244334225374153369785025342072620222228862637047594361723068880996101167718952601297798355539053714700327933423817739704377780347376378410727908944465378376167214933313668954834526990939893325280577077383812811043844744931632971430075133796012683342917936711269268455842140046328097104612950068577934645620094180188730535936816336617337112040866999577351840622963759439633542907098769862961075503224639547182492267772625724621139900960647136160039813710836735071495896468585360789775322801584153096720028713061713303243615237796542967191683262592402502331695034766483811032667741281446499626529169359494573851830281638759394686720663257786907459368582702905110236451772984926980179674441295607129983114940387976971508895323145720625744355707130755233855304714097560935405366907939372402612873648675070712582183769586196272388066294769111022375960132565940810147800112190265318502786663205938447045345991654304283184333125315993409393674823403730956335007648816041381763286045139455264108437147119710556297442469015074356689092109322248883312175256201403017549410959701859078086713596777401355433588455998780459646908941787679757090719171793277419672340151214622231526607585717366540646116219682843228908487936734205456392494443424559056078960981609845716000589882615156991917254183777824813996859804877957979846595279328263123778278970761946889470545410886513102645307200450834459810357475815692736072861247790052434606075929484793900326321753546244681702482504535593433102883421776357937850707138245753879267075376344497261133397460120765968582351864597850403588830822443480084141760914967308607396202254669490005581825840929020894646992535535290415141061953627157619041419570311975376375572980659768161811207653925547188109098826989712966360227395993231367409981073919098326439070906453907121726483992484644185129539938051165521102406860022204637816272250336747904625363025694565919134190930266064061063549476744145326702069693683603540086423538716824942388197278955351114960801245335888186391339938569496293456650507930452617757769941634892776493198918330348136596928963750704863954375515342483028821259428283678717393562138675507426929439773330291349481749532108868217123932400904413035727527682439822704352491273648862455098327842172082214101433048974526217813988796013532654825022309275173077311802277446897894629568404295149215726544605861874879512958430678257134848837233584038392421504503149929765049555003476917335448126217476165226459948435363926453514192367964233672428190835438210869882994783382349817412297382845062941420662276645133752916362404483516602635438548776381891609746877889442019016792227365869737160573309913660968046990747417535945261886844459083329664180075744005600897790269248614838729205327187301127661103910042056976242001906591932671375966904184663549311246765813674791158867254151495852450403085198547158480716044048170002940253480477166506949550673897027734483906576280497576142954914228130276207621798277809428071067335308988528153534389743030019398316256480006315419789136306539952578732553587137654566252586869690165490980744843766149555353872129857817514767170162711654416847769123908708494875026743853029139071691168673383503457081120291551629936305832080762444440579278070373616750877563893500751617890705225263671813654862735859278397099635113746263637053439547487574097739861554771395844649280416835113325102598366894960115577774030160120611182910345075825441926122427178946520246592601928974027954243013907992449139910890709137869014454481793019206232229083774035633650309425707001808975924749905850964039641759136043421097780139953593987054326532134066874645558656246925461165401060851665456568537589046590517743721133470155628184007903922265952666502168585623668308582144520063440889628587673004078107510504604813319525257163951296979488996675576523852281642662617402831514844818377170008562774598026038808920811687911010362785375219832092221773071452579670226188303091276273795925737824535315769231535214246947886341642654828356067689254946881966306989183524444790833867696223103496648639628042999548115094646646154210362934598273336802899673525883699791121920114754432960582500222121343759613126504569595234318942668061872045638162737022170427001413709994268475647348400554894770377824080428570380016218510741317194114185224784624638321834868761735247392769741879166205783642723533891152777567575443074135787244327456356417097060908728003299052634165040178291344675372057335795211744904500811935335111297068521229769275450289655683084961677569197049537263440499872633431844945373869488532135154312748079162715308714727693389740939225768897766318877278939728808902920070266585351705796935112215759992387853959547144125413919831526728861316268639055128645246166834349261138575138692057000331943037601048735705809559215830819181922742114934776377032599424215721544631596885714111583419348783025463761409910197810482963179061134113503851864334765811722789695877978724997286980786509365114349114047873091763729246061997805618040810496115894215714626754056975627085990619418825965762781208127902050636734607108580021819439604014914860429956234580859703765498804796464427347848164536995453232367641673258934770973668283325811294116666586923790167443322622733776786675038934365157645824231876163239474673663955453275273181924896734963043284613324413724875945796742595030885497519623483184247915627919801644597532805053167749124719964653859241697331238754239232638372084310872083839590495008092860203244722258396301607124703632296401253083307887000637561089338931089765142731577367127864115855455987837890551457943060327881300704419804982219254157703309284947064872357953402358111887897891763871497924126039968940423791396530683891872892731108758326798239935415731979380645268637027234287438456563759284278983370516840969044000965126486169007378848169757717231153721423528313157189373118675072920005630526210010652667481369585705421599978312418208645749302096444132170376717095861502042776105797504495441433073241416326396178901039177433244736836845618542016406442824976122441385249905551030551353374436482019237524753936649265727001112239174086242508142151424051763353909165372123203377127655524090646748576148127919195045763231251119830219292955286698489927007507872884583622967303260186924846098031039386214392022123735423454184464715903189360971196485526560177386519465803533751051424968193978152678831865846720417237198717657991964623732166144778836295375444398494549815624552909102754557281150875952326867561214807165323802297963898788873475782027165812228097898382695581033768181228181028994096752960403872999682714550676800752560386550708387221288215479657308370136968051998362298418828536048969201939283651648707426199401972616287269816044744753815809496388303196155335940041618487059151834665502752850378098773398219973363301598243349087068830111322570353343412371784599170708117454556016844836311104063893863721109390234284011279966790222811094208879297546352363646741378142709170332960702374350050628561584541289192592944226561207033888109707674925102150138938703133457039603625486486033082687489928683847207400161824006488838568369370950288636122465190017533836279268948730277744496289575692229414070931053430832608096218272816200311354060606747511905018555659666326836289610776262653884768065607290986721662428352639588982676436517763113725572639054548967709468492375020611522816077883389651290518398170835758101424382957043241666963420379672341626375615865371052368672888121909668627248103558568575909894923259708639791374193445182599874006943358672586510793120595883416949996290808288627122158813892070742490018325926409273384554752375543218028624063920089837391111009347016660848196411239420940936254219983748951139266380842335589454969578117553351076516764379442458701421021942099384113871365009703753987332218843228480869215900084118289145155870383445866769818669695388665035347933235626336604275209456762936702253143391547947683399007485808492562754285523249700166573766490058625420231681775805083004316788201056961993505828086861110310351358614717012837563928167800915649768237678670312119491848310237993174339240383045155639648431342500430483419859088586317497965888153110721718980912965106932268335846678155980776801241224637747078020209870054942408270950413546111613666714868949883966497190171211149115915787443975778724190530094613042302295410720558648069663118350198495581601912829778961210902705555468333342914888101497771416853779207973801184058825256839841056341636250756044028793673077553368322803607016523494930604970540170173219015128868003013917380705764647360909670357569543664502448250459401948848878471541237670776406768373061107556816398277506112026082924310532384094248758461927996912470713700612049274962795276884146178557555788921284163797281684517434297591554450606567979538191910987769365517611691023507185633225282522892939027630157048900597467817227146116584619891721292089319828437847868491576056259798263952948461080384993729720132331902821160672847031851800593193088640641071611186603810918923921838637872899587775621229217439537871938378204149797801976746079696371141131554896741383395801186572798958014870290716796097708403131514219061555168407874862819695319243189815014474649082762373753442419307463674189535362178669977780530750121536965015374850278718871187891174011366169633345685304955655292784308549526219139692592530870901717229267666680167356355758974889422355884816439568193868079202700036661503361631407260608380674096385343709426234524133398659745485228087648440500231866740366722821663917007387292735123669306620661638435957394230481926281152104365974434828227852059518897927741780867394148954491399116794897911875055659499237041912006738879283221440968208016903379143531707908409078070474099860661839523755547371037825370087061984853788345669820622636593138542498189885510862410521092408110393232890148231631580304776927187470038758892065388934603867970808800243509265695975776337611130902120267254219087395517246598335626792295639507915220809120387349237135869794471682663514932296759787737550962131098690388891027460875759493300523010785549092676878172747672008823746311253899679677690711483588167576286369380925230060819965296782646365451587618361922346048927404870420077051693295033672721661120519038875905400959196612699855089427770227706255564348806783023175143923266681095428091947056081421194481723991706425894817630966642532587255142890755998700574451738514312768485051521187481240681224738261840392387757852330948344089673013083783532611492596851417891752469010162262440664742109275791495909232943661077781320203389309412639342450904593585730349369238328319921294840783533184797777258051609484512774035267163507973617396348025450440039564540816137938063375308038674755279237357599769076970715601572304005507356230886432227937331036659004409628077670931482786966212033828824644777004084509011442381226699240356160667658124682609414720911632721220948306647243755969214214508733238079922169859022851695394491168042462312786953841946680752960378091832629700477675656374525704568021619408403092610325089503439964546286587174477308553331070186993082929565308333841016381925164776621836339828394208596859167286222379048434723323866384025546863732065208125840870787177265062111608353661606306348557496502328569720468498328757007429241833121640385250344241096542748439935007326622214502140006778976641465105673062198319199455298301843035858710071490986862220268763091409665432731434617254124966821760231846609285174030096281518301080734421833645627734157188791670863830145226202162996407298206604136712487737965169567670715891747589601470466844067464042251564796165405429473935779531917250555083870188161105532172763410030929113583491257284673973854157662783349241869339096622276179250885214330300282823272049554524377457304353582447391147394570064820266702615346966173199894598807723796704164351521464783275412471187169383221641395873355371042435963286131985022488687497417987378623701664908304908614018895707463259627017573764321255805057145101965301424857949875629759278480371352501927799767608520472431243020693984136462348758300178801237103776746288350341369445989293761108887771089549324804808057823230276029779936066224117420058106203580748815714656743844430952335828878881873447187865409565779823492681661491216424848499248204829478191900350109113382046501468048236004041743811139943267023484815262428363647895660559707213067194226974775887200728921928632285208353308030509656730842055758531746340645473546329274818631620835304218621200732331429053219595162754428231351610345821914805242529557018845616009202857933802320454158766285624902819484320227437788738286618033626033232713381289409712711426273253380466432995393730960506768051061352079706993699271524893585237107049311757728742753767540702065560180828917339311744015482791635238630974009510428581233804724248245246269939409692549393094968732412379543866459403339494486907011186116706622828628658733423860144941246066285627140306256532048942052573932721395900526756479565894274666751227306759336732447653823920218210619571860086602575598211682629475202574589852280165328089925865539415770326764858378162385664750875517300970927888451270039903571796214003488593668748193997813301637201843246643804361525025116766646249049238181662228547734202476005821068464028719909071381677409120487107342484681756343613588723978846017463233257885916261454863789279247817996737637606077133098042712450341362685813796846928807216058034084315959469148933879071948426301575503347802064726652184737592250591273339693111068026963510780556248183351050352694680360319845005947264640941475381761713663972401476857807109362717919621668884131058483156286037934842845833338668724993478342256605317763935571644274992938909072125747468891004591673930624863619645480522250486244875373863809731110153670607079971485600721250541623362402476191614885636978036173991357024463340919941343550507066937397476357364265042679336967834491309156638599660002361885423692592032305804583601432736947306606261008299498372719010001353002507323379804929956655864337948970663588290398841239507790077780772634067764638412683961164493046582853633869631666677317214348226714708240217101946700641124911650577827486014113228806425839708392156974512113747759877202618329121382650133193380592338596582361856099330057845207294131295732962238511103995272418162624651070552196444358677948820097179746217922400200041073234916484701692805181162428819626928367165138517630591995497815072109409255173631870151974069553871600658880095269375381433719576051946449575826030507487044929520849588953075728828447456372556441920632682467261597483897829802192510909860310345603881801464534803935816969455676429347282817220167508061475809294219447243490294122065053269535703745621411685664636135854059886390297334295931443264826575641995792045879969088744163365801237018216947422735838312396072794965400776092315510563338903557365593958414093804997557033257093605294397170872173189385010247075801681941932248125464949081414086689574862342133760141722773984867140447787156214978396319923501117642236669290004546875934626628724645177402678077176853186219459607230230150836331457911428943609169192771031385559291302338549244338091357712411459996998993169995481009302081544751645568271184152898978796834526092762834256088680956041481300313464303813848658103750661577003822489204872698479298447076946622341418219523788823661680959459770486064223231982017616184328108172222819065292522262177751373893565179899877634010279207812153821985566286254213301093666016837980277595406918893300187268738588151563962308421071846610077146667271621748870897170004923605360162960411547154168486505526089948939948376742101898476266020447230206488826935579297920287953258072853594338000772018826568677667774046369600908525185376425666479502270140675604434315915299360045554591686413017369893483023964903177210862037742248551675215679802889947663179058131002674518149746946285221081838606922431396820129959514510800291677633297275226734475602635997386755314943843734012158516462984213672160232272651321596828955378570960577169705609461511754962886701851640063094958742664760045863558064190695217822733523038928898281010882195333677159216889548898744378151274873728676652941218330990615468200763134297336143986783611240368191706237333098608414194760080071135085149566348893861841287072162139002891553076015937939648899199101873005320476477669942410031138419819810752713299423702330531157042137450948995526546583959213351923304800285714751189187541161308643774901995097210318249541242071895253416309665260714267854354472990791994727088862367553848523176632906906580272394011400710309808965522419532235066211308077942139964384767059042127165940436288040779956708255929050559787901003647786390275258863874464382983255663139852506481076870546873233624926123457340037488513851533221872743814819600202258108168390299878967021893499179988438621772952367390955787904240434092801358726728084158097793717872613972335236971781414319919788371527902742316650175545855568454974159312367995000735633263508214144809532149917925304823725951685535878547184420726783315151576835445854837661329022202183255623036098324956519952227600418999170777708260634727248513382847254355358975548811851348297276201329323866474768414030800064141801294213190092323683550325498481783196013230751240217341481145447260533258085970720174339929218819615278313683570299662342737547324336370367353543227693609024858760160179683018366834697565881326354945816313718701301245636728586206438162239016309384255234477398125786573378474021590558728226174081321416766876459656541536199538511343415785860538950828745887638101446078711247408283126101962599133616623181451082451932739175019835482457597782442568837692145747309611180788149295262174464217378699237660184156975004236187658793269940027431719013685126591448355437221094582199077289346290133108091759741618679565392060937956922853419530805848652339555441284464043783528628668483643077805754314174527552367769943284545987969200702687494586090347916344010094843982564557191674951118086998567482261847232415432030873766020341468218025617754415075704569668858338015829913603937053902998379665794173217968363183784574010665716210915819361087420680572905715294705432095388143904870662709039791083716122137828441120795693469338899538304003846813282235747096154811639798155240467443881412316872152800628203700701607466650532156079526032286383607312822683486791175069305818104973549452445340551782713317269797489600135655207170260425691971759214726792857411930203524901842320518889135335730047722897533025742790986534295606156994125787627348508210636716512625837387960531086848752869768216007117196820190351332190007487767165928575915768852005573765003325071831399861445375168536384537457746690404347384731875155360883879335621814865553091798329762100580255930152671263710920865656890442667549074766267487330564928701024239162486365372215813828601148085943774960946708789571418111394990057632666193293908052916102148652509149878861328961100329653812129957594966046953821451011754476989333605451098755098774110449812932597873235851560036510404653333299810811347190892339483237754016307867795586052469408598380759236589306031349996967020966458890384086169252081885396999939449593074664301112592113093434553787681575575370234875308777526792025314274134403024636012088719624143105340868894308658380529730299390665950651165005373776721933295481450101931878880616521253847621240580750862433380649613088279587147115095356978777615991270677221763306553192327368671634989880605327879819932773113674194523491102379556146490139039921261946333410271276863488852104331256410671060057809009001211248231808873043588375662973336613857347258056041575559293282426817086578571119917594501561920264001835899662524172658661178418232171789182968317164006102260412767633192920405751077961115782996006614702117142873867904974556161746364759217860646763029310730707151906399000555946847853775911513997017145384739214628870315129567532830074629939288860034951891973339682730437582147172298396759634028128252124716308284145050842075699641165522297488483440785461570472493040797184949454104631752824086786544454789505938110198364319884695617152420657833923440295706666701449247920516926502284702393786717844851076331769153306214858772653809896957269899378552403466892538474028405091895428008284367337414839281735968415417264885443684832372006023150795794953051742928350933956251842318897339240260577655617355475935686800182375836528799274838775308016814909029133596968661208521388168760063899107797316902157676232910530168971851230035845487150561528655280294210725597749547719615943641389922317567925091893239818514673967814632612106677512046337166799993519507491788126647370178899661807435367534329614458954228909554987881467463168580589631080034954593304910468863393338177096566408392217471591605587161872313382884435032542324005974736591688996198735457008564221056352156186057128453626950444327339045586891929631400855327964321353180438364818145130705259945142594721833633689884519283589411969912387330933852367562093203352715254254667396601245070284785264554560440240513704546916390117929335927022905036310031773084710550706290340352187364045019943435281518329315530183432537070177476876921642721379488713757942713552836904241587077770411549120434612563593648283176558939842018271843911313320017323198612542314346380957047806591304821212197243965269782130523516561291040063133986375696013060711269102208155245068149824360791971461011590006640598455724298666128779598224163871964488360049745644849628899472980382300514103867660008459720552906581491168070262329508347863594905490293907666798912309356960979797115402729315097775014197079005566434859805691096450637527237222003872416637271891339759134578462340655073356867006736504949569228645829910219427762737096383849834936217881552870005493493940210731695208043762526729406935717531469758770955475080950730576290770582684189321276195032374416516340696228060984651507928009611836934777975188627998191736539128523747464465347754050146187775647560663255961274989875203328039945202817942847501070718738432349558234419175516547263073710307075094255379676439147298517434790620504813243223899236692775379111942212115791075827695747145628845137819243054178923193447090175945466020719350177221164246792415552170505634472248609290490119093200990513076306395373550344780888821039424446558204376892844285765027152791309080515447739536739895807024825056958913030282099470334158815967672602263405336995002933624110973844993935158441673162432344211607452901920167889648701122344305209140829314597997070759663408913007302645338263251338987960159079648180534678625842533571028603605629266314009812237167004204503493226714826042761328230125002984854237121365544950321724547683190113835923881290848194269770326371397525899336392229594669350784048523371011891593346731510661288226846382999809717886597440433672084724322676017321466095461574918968459399897185688567276995441862497406064686029299977862168800153454545112290888048497945128349921359672953591678187398102139214855895111886456600199479368970270497516180146174587349959409874384251935945904770296817099075968958795727025652706061890077624898199896939403541220897184183392207924181492799108541809063519790343521974681864020713496318551731380262373880205077100706817356786682560138293307747849360188286261116273328269873854750263365623276277793975763494548471834289923312142675612716426548081388850929147491298499204567167521008692117957143758733609061373844901773442315178771171608056158078204315974187171860846370841600500868861371741573363921495501726728509533971713069937654743422105861525666821071493639792784348240649513500590627809526563421575107827402789782638400366853765575770225980619567111366223667111320780352146200519945266348424192082363151918652688999238354781060524158735169431716667438420273899285054115961677666953732592812478607457429354328195563784029961288949060146066948880028490397858420159024497970018327532746674797850762987443609824838684512017460837385891271302614880389354769302961467646701355412669772183395024457576330149330067750435260857403613154493678082515700605661683313566132462481152905150425336694968875690290901532679495822593791506709851211529187515547733567292609163990387522112418345340148301301621100777179934672507329568401872306318366728092313895146193251881025716551849130197515832978917710168493753817562153548523213975526612589823745711838435457446481336047590909280237228617379707325304314363612768386647035941478141536790039227974327242921695994971214139392667014254809130420465189168361509186674457656530781847753344825828066168284670175899370248054303256883362932460281980338393875354925478889035238177757663244116253005240938365077838134088966523966529910210346559453665559994535216714578398426360410291737301553736507620884881053932972396342537782418688930587402489640591899764634466968664283475295184540121097648775689029998974890882902241130486179229919666471757674007341309412077874563216113067229646532602340930273202477414680668631387071015917539123561367909719918426039272088464077024249226402082949799562234890953573666957742971408932437807750926244149770074839350834068645552551381919783729570096160604145685709225459361164219229848836641626209703646043002629436551257950849970486636968686232677645387251992111317856016675836414467534284602015841357264122420783335842194824284767045568818612084334754660149937018088290688406093966431850588020785127594443492047394734599557773216414654933222658520233311164706254402726414295734908983956002874953750530613860246704298570497510668172726839661048507162643039429038108099861671722622802298521938644204840794457742181558370084001440001368972318052219340584524251732040514247885895842794615496923637127327659546595095801645442057489892378993251761353441819869854136771064757841677061581203394581980823921755018017193680523820577316113801258546782031624061589674953765381387176016243749378845443883202948565486509745816219086132902053283133313681119413675245246280455625944723010284306745952018522975451314589554746444231761305666485393851308985418054836757840093080918972385382452738508341407813220146947756253256873170894693153333025169273238680222912759278547509198046513302150251459491261111559969648888846742987884684054958334954522730749715535093027859818999177405800987404863284586605397687859736481914804654680449075522016551558036315511851515422241108670635354286041989713734551264623518760456501322032471231432615678836533143847751016979379794750437974455248615116724649231903563046338387123258997183665055910695137075888651535793401517509028294299103343558774509130256065674049576377892054271966740052728715649607366785649443491308173796060704712254696339969544905700968085596710510929144804781664055783716415555601782111631945864638756652417833463386362649888970469288225550604432048143695363481210929737546039902841706411767978824772052032421255987866858749171126303624411302395459427228599090714873725654533185111523567737660043009340182062127812876110360391848518680442501786270609838051426473050237606168435327927779550827356853381333381498788524122398224022252436539424649445752202952420095315589867111032699386584016294518827609098844976963941002605144489488698432422865477338479092284064368467988785531077913288075934639457581742427211274749720783504061265875377945703390456414580067401615950148407171014617724033630854463962936191488602659649484714752962541043931737136440777415037315703100450912501148503030799107041412686196859987276562984699885249661654653432707212733909268143625350042606462174158079312572968487422301454491848952478924629609270052159638729263633819481523674370073312138586766675697932193059767263940838986087421296379674230521032069230010996051402765414335073435678362990923025353841347347049607955019430586991519105240437098382898050086516000135976384952218048097745111928408206619499008813409471384105477328481819619211844860473391786250828057298268038073903135188320421718703967490269500273331976331337468476510338866872615378645054875043852342662785503569742127834119342114796162070256030432716045073348896942617235455567991287479113523580370432294192573387302933552157343335457551625217570186940545447795904901762599653425152156765445167341286715554074093543384417585097928770886047474126965274523514571559559176248599411664583396436002245608441276244253397990020864203551152439898155760798304146033129887924148755223437301721153211265179107242732370838729678953267347692225714189225923834469864497318230658529601341524286058080654644455573069251784224662079293487995750363263360302120459303437132584765368012886982943027307877798960611365949892272776406318807514755901453179939636952699109684240720198369454186871615530929552519656712044237209559305663505417007219158379349026115642668638564128808795144557383145159324789410233339279440811141907378668133927213377287968599841318877617271594195560055634433390796793850207887663922028882478201900386070659938930837216383179779067738159199224919333284048352870813937827890344063292971776381965920343882829453022731646884114927142148149027996139993953540468013608315991783757969380974199072671253466975801342835065153684904513846113289903858988098556834989567160409289498814712835288865879953478000190319686900712618009948518491139104926288036037307704317369654036593196848561263526652499573248867855077696042846745326923887712651197321153850072810949323558862073419960905086478039476675255757318150223411687778490930483218678572443324530504726336789109773578007989061612699854989161081690107509960427065951408344522768841743576590575158093714632248755932896614500499766430281740008847907482396128527479234097051375959707755819634678161298554989226848920100610256460956296717087804532392064424692887603716767173746270180740908668144048988991978817614591060840378513105257966057635861162638370890317444629646818518018818579755063848516927068231594053729072751375388315089435150398733959000472066724838370144716508505021034872472594334876249322282083253775275419525891950250754287970228896412597324396220913560486267896057859655784271796240194899744707985906906367074476830834525822439693002017925412241403632025325246446343375663624719029890854506211621864233447977554695470223952929692582845727296530708260924114217269045332416475587300756800970283309636961561126548973224288536721980971184972614079886564798897346549405706495190217878120251533794278263596686336794726292067468456075544822502271656911977302089959634144472806601487076842135239331925390886946178817306412769035178428013952817566366326959667254231216558055568127603120123186223231720812200240301826031437071141725095307797826236472139618878951613881871240119459181370728083880682996988039644119696486529699524268080766847356302773036472271462327690861520750778694851902830412323958817772354636416174081050245470545301835514333924738209215554003541727458692873692779528483206550259388076581421587296650672311957642756123915789404260108723408902929854781928539188525014040401189803425574304568422490630826223578855815654146100546408437562542870620704482774197657837600198154071786962599138913383882167479300710461734961044843893003369350711492034686037816814619456743650508406234758131510388656451907870449460085337661024484139214652607026597311670603975480795990136924231842288814484226906361729113594476882856178745089372332594359120276310379599354255653205049149897115821718107432159402928100981672266094896166845716936213496438474230707570014620855774696611639149416165671514299889882191690747723262173656922730641645472443890681349649420053688921646772648598025389027119106358026942396296537515158431670724065301989057226960084328036268434731938310060389044564488868566953709598702536328260946556449350501633171076512399197230235949102223741365506894580467383894283095713657601770023511248678986608747800003403682178848217428412593108800937603609669192455168057165950801930365327640318288726523989249190688552616963557836851794459706234627175884549370598237411854816484041757129919696646562870546463322362461438775511692536771537629288362349576575479691066394310378750713968694094571997659226684155217868529579961329703340451059539770767883934669768507698856699932655864897115328869735544641066830441387739012512530277357491504996539956814020819897042250975453931403266678485628980383620445603602914397077604455420110695927284145549140003227778251728105369944301333056407597039450783686438599386965750380489868811917168880245624428843566856449044148834731144883535925729106481391074394698742902923232374889408199349471717954109169281789554635049351392054946822445494061076668131008323392483945972975429114715642157220758549243180007497893860820046458505560353700794270379109566165651835364211954544610243511824631694127475812503737130238720893661415121814027064327725194160583198378923499688655734270984330785475975629552605192803407259524721861288634750605478911341330397708644931319664936379259522404823092317977714177178626822292645089629440386321267368727116469916528909608803393807513618652501674017748142345615484741626227041869306548083478295454915637630610785200382542765583496244714930040143094020890166639732168330883506281879738251773877969555555368050975739057404176160556386385662028349123818256931027345742500893973757696473116669878899031958621113131495377155794013337797724625159793588393603827372846436962083134498339089861173115395175098691925452909477228729797274347831340223227501252501087806834302866767747594094156998634041070046446676944069300367778292303754199284221329641312170607292413028735395316884275558631671040149965318986704679214311384391540153761943573928783319245207135257431575934343699212313031544335995320570691173712309879750925739909619191522820222791380037122982863410072915360175297250832706089066709085259510447029266329629502158606494755933142256750227210773370324267169632810658807663594756581550630005729353670244190464449234864617187911778678791006877853044516682527022352899327238719812424041024636824599969109927688819800388138533231866771161988853762913174250608209852867224930237249031890388779118388975497706293468479074330850150823804500254269179587177705015161025258977860690318611078431118009490401331678979669218241276180424184431858981213594371145960166101447103625071040278689479361931635958125668616456593244530705346005336691073132708212500139134787966125334282620429273526842934595897002123971085265559991231004655891764892946768329523000646205795856973186907355291930825115081581593641939015041425592536759576142691182712698929434424812576389045811023283960475399438662519416508453345951893254989338408284043393391065793657334370504816853227508198443978662959489386151929740350219649808674177352830163083806071645265894522663524360799092401020930380517135675061181609575692157361268983972992197760761399984222017394144879110800440176151610030728858000323336354280305859435106953452921623829680628190308833135758709703240227521562154863122819233650623776030501475766170168353974231732570079847158882365375441841069664267203245880361569190718287953333661627564631815188874457637191707368760757388987305996974693764296476011130823063647665713706134810182085252523385655485341017702865366146566011230741644702739644519935111560738006980781528174646656259360724403999843716095940964310935438104664090189225422761702774298541280815247539518395498612013040364481772388600803341570081982475156255712978742292346422716734620957758993286329436869452264815054682425953174940255852603127299938863415251544982595601471218155845532172504935007214579837714461360634063132346231778113338216511428513467744621774011382184631851751276546541335714689630691056341617892737613443115980274240074639182840572529351854638343117146114066389114881335952940143280897494828793494958761277066669317820021524528442873778560707855820606477717252647093594244789202874478150820805212035271640567242165249376225972651795517783175001298293783816551467834648359515710440074671610844138728374370584789903535980442909282110267325940396148995980552449617106269468520912710133794647178106324555569921340473733487007705343212004542985756596054690394992134641613565814862112408330864765584052442767838289171647269667641861949656229624408966184016593292909882670104328768792827575279135871530331457754449989905537874147991992471636372920999689844698051036661245848917041773953732011741154961282445519149799310767277015653881983616317789967424040906435569186705380008939888990505958802021931691458384411338655673337380149482211539093962212393155717626281731360832955571137482674500317331316350871593580633739965552152352021599442441814166389301344696518846455870040335824764354311560961427427598800292677834442784823181910586935862293366276063985356728531253300951121123508432110173554562349875308097556928875654462583305722104559737008982690731518375781161867787817019451754363138494033233479183792856587268795083566488068944505409009754879115691485821232861529924421106330383975357558901189708284167684302293444588414496133566168438702388592811723339598785885048899769804714021292092649960127511573712662700082762654666896547880431359610994309410146191686347237767019935193288631966340042901957172806682992377537025021671024461548156285590341336496095270627608376628679117514782750504306425944086569311679350631982990527402087488182177084705906537062844232810975069069432196733231363168758259663853210656124694463244755617754400192737334778151133167787033273906926453102874894772504521990446001503658115948700147057544261699599929456154956216045016382716234268626488100255980660144318902533292761342042870446273960211924024648653575576923459807638015728567652416991453288459373366555797837648641795303629467858337666470277186450757060489726938070551762739290141046970897766710249100186831899463881917541956946685143701679508179184470134013556185704241851091101152423819049890416434829312797491805852800490546375461966056528734211407573260832640541401189306991042834625059130117552420827372697762435117034070972152374269253396432956878156480421768612327967376701064191411783228334350708016155328638513939985643313443230296113813236066945241454308646664210691311526233272916083895414165283255896274957232873022441760067087178133060309483689190063572748530954230644775774288187102961133519198370382632799987887197559384365018150892888738199532637268145909098803340866439971673976707807203712924676240145776673386363605431249184495284791466360019740635203430088928459773290995373838524928956599250552421789973209370681716679941061073686791709492138089771917501861595207129769196571318339017347458343193468687840095610437555564134236365474254554888921867399214821889792343861127144901710240445380637960907339683948944815756591842304389563985024575544313840057245493420155656239495597724572007538861169543371259599048801654894152839094766472527139805923704636623200838790127963139216943405702727650722945146202632613419073034599594240313264142640145431424570685586934009459757504501858248008772089848472403183130799966292252127018835061972904334039114972286532155113065852736212400483809016802364366138557630398941428755389941200651617284306021989353161393200335831939830381570829313924384648634388692280062214295415374382560244169447417061548503068708648734676000729970030806052856475376374770664171494352873881965377001948321731377826961927933539508617431136984190205948112140952056235575395878666761514383644485136699878951350013623457697210038689920027141491955512881699237708515888902054279280877392660443530205448779527899795359426296818273106168090816834328640178247924389357760424008353413353166572132732605124446728238785205155331280944721510702332182343330271759727399500644841815504970170372576402346812742542859962610014667605807875403577146234355315128861450366469171690822332902035905944954767979311607887757464541984664211311061349412528060283785322096166021542536168851308608707124991601452577502342411268684951988275114319920183427797401548069980550631572707688832475847608731124081093266286292292919557505722306570966623831334413927823365125410077991559334154387415859889181404002502934758376330553994665043305862681976474853829796147509080494472764233316639554445016653850570823981366212344744913976089967758414459296041093346705195965679449394695340589518620160651216919875313454011222085906790760386178466688912998215113994080009676858513670056258112392187588925461338431659108374679909445388351173977535780069742695814952340397655030709725570454097627240264867063360528899779075705051874910064232128874094668971752028794471143719275890539139333903738239516986116785164444619350159919131025383520558663430425766308847480265724031189377737368731437103730010418139527708239646878691307344905148911973414825004416296315214405173994469211303587462062050111904622049493132010575881912670543495223189238355753012620893403646030379909875732860821089736706008444270035715394494990061592501912736530515989034933195349021661601600563145975362010864343911709945146855615975235226436778019267967855564810081760222229460784762504181228722887228244462402314738245297352511068400092303952839749824084213672076593151633962133230327411334056895934356262184839717870139774691496300646628783717654133535690328679997555432495022258907523741976723768922741688648861209778886573840936268031571205372912440838723388012136044888934380911917948502496901307119697968221212133205914051033356526660116396000041378078344246807856453217117277687863240508516387601143638572503464169754270598064547519894351144129399744273786483993893501987075224449227744425472678530570877774016716271989701227511816663180656443972267942149475948090110493288561520181188389890529200381870755365433239825226913359331017242048644247245274508202718337310831884731583044401583095727588904749424148488324240838857081203397996453980164160991218312573734917967997454768617963334086006465748786638275125499075954361889883203406981750259400028353993038455635790740822368636601308212564401219980726574674579064110855398068809507755350516152815589458135287513512224095167174627269074345710711836430627113264154329155224299902811127003705149316603697261103748504556257009840463416224996890491708045876953144593821837387526604856958733975980855000738224620670456204087093575406058278058148585956634709931247923237258654677406059120913309093926261073180405474837075776425321884329851913709160099792610284668589211443635078010219959535105176312099621925922100329611188799967344712628243326824465498182872520815483371245349554377677434481326334848267101655869060871403792452685628197072826011429730254180193364269559736149684737345768918600246249791706732392809103961608432831723433397718718957990441924858491095267629928259992869087709075925212467590575231460085412721640526581073483460706884473035030199161086798050790597656308256610908770065775702930661254010504524123395813877156235784706527941891494355153439236704212976070436206690203136854078244895853480247527267964534469844800006758837506224855222599570759817433398288503407835852936320733970164028631183057493921539009355893088609633926496738402021881547759719910830496589925524037242968468287838217226881637538710751715400291646315400493375974067535635922119844500282451175543911275633297855654771550598796832959565056689716900817698536690483517394059349434412632336541154923722175586590665310855261423256795527176591375789023874185463045231305295468541299522360577185818883322397325714465397523657379143669479177146595444693617085980066274243597307766524807914284237791884261925075773191592421555553226958345132992377230343058243162913227446970749184389632973137787728647911582902986323572570002225371404093903521803250817450094481534655930023008743528598281390860066351905458279114768861517872307415623764875479375699186535278997772873655508237503870543328993039950219548989572346885960951326724898797546552723554402005105725662767804316034428693353290764127720217010511822181920095290878714458975432314738146784082154874749358210332691692759313074154110054105202539091855077390239874374754575107829508442590330422704146079296873375802777544373078464134745108899542134588897258748492559539078278321751447573486693353390318134426017819857974067773098575133623166841620728590871950238564647918729607251956838661144000272117464008804684116286529870928974296118219279023889723322176229850491371084872917648007982314744491964645672382000680175408661686912834224812290556360138452072125402853289365548549170896330404807416995981388224399087239790479794467187124839334989388236585656000813890273783931022686105427646519352415808974825626266153291567388369404458298952729104157173428810736630989856312797665626203557819293542824572886259959633780722253513434094085021620777218964514833809645026098817772722827332675643457693239050410745006146409068456510154440336913794967323290791912782389988342931614329324385511555580715683773780197833385712754863980441580287735084051301414417506334346326905467880222685720062344189756955828270985929771364250439685957379684969220897452227307014206200950338101511905489096341286519231334621104010539378946920888001928102208924020478598136159187679092267294719896523924813100253568881332431491469540697563564227679061261526321091980280887033813933037564970334191009465553033949826564359458305610404918406562847318579043572461151820104618982035003247014591187654062110592368282948535529348943338879684662802236978841683562640749323684047829636993074211942769123177184414170199360141529404157431372589549621629253155612055357066001194236954290987061088069992302923150098844335072866763430751373366596626642347012344346362545123784697920526049575307614323669449257361952286961344430034959221691759463444658065654365720867821959565989070092564555432715515281854646580906939758021271583437870383812634668442900564261538997072792445492697066285168720293131036451710821329723202263579190521551317071004424023701581508374898969851523475095288718783239620604762542086665412383640416636970223223047674437161793595802268912493210850943877595198471603393638615962245707698840545507618148877023849818247992846641584707028448927503953188786087832765495991029354113272081615498411752563331181952506930536280105805591027164188472844988882809366297187182146252235310044620563005571006357751487929891968708303832979583790157986359954811673298085655996368536608117367507046110572769215588551186062600768560761613090944343153579086879287518457226160336799538013267011193049808186503651825457852656240214846561870044604415653846872468944065367022528554876543536696793012947591427720772155137154499420919716432782920823745756952360529865043439051023096776580893639794458491638929267898448119936379068731606274051888197677908138065785534993711036485181242474399383358041245453828329215584028000404989103668782709736187032557813042860232808104539584225331572674020974931685318139087819830270452022802329107207867781644364273026254227446102882639555477434437413507089997306469744616679154687690824991879859370486598460497885375444997775266081643746886245852132718933341482936226375400302302976104390308267207185761881418222695725806134120345120525661408871351067712980933295419094031179646840044611497924381871966792845985242555301812597174641102464712652197401273011307782603864127339955418206763938439722327942973499789915961382596437112559029513541658778283275007457685424872046660153251940044811582455199502455306512436125474666248112879340204678521494151792937953944360028395095614202035500865179701136527115623693715939960292895882267972628125859851441507451011691051243206813597857462264581592646551445075380502319686392743009901975233966532725747216013473030549085827051685256509328387618130831355943765000178140424973764242068122910485613187239488527298038135408996766737071801184062835421077084837286740399130642591281323450999612273114648353734578936349435677578736005176265613206763746134775184192576419606522088000222310047702196528274712683972000142245228508940838041890707332517498150454863194688500439392298139107736337131543545264308282617786623680912825458435302330458476919564904066656695754406764452900057634540048309191417466671712209562364116061000221456293787868764301167811340090858386460153473175312411098929885024191554559358973405251371504015527869243425422786707514570816258162907087879581706329555863127341106987812798224685302899894457478366879772973849634617934036993188641458350108400810581791193779726124209180692758885443966085917349901842159741909652974637849298694280441092575700621921678735702757681360721573180701218948942598223012231858146173027408794505374392903398820365868704973634988902869574435926803918348916102116161061096343926023821933079110514216527711155301790064604714494890349152672451160224366036157513001485162649745615314769756750136560417360383539461680183286078123233420375853696131378696800710879269233346705574643957445132695386615404849819484478051279258875232766183056614261087208848832027671589528332094460997450246931817350253757306633133837464344802079215945050234884683681559037792496097211854092464076805271262521384785272542263972099748227231335796874635605285186960812760145885107258453778704039010192744943345095981650554367127399808777894261556158871507028053726133610000801783090547151068597759449199936125003296180236308408309328537227880411736852904043580726776324408926431086006480999409483352582934707589581429514898524697603108089698579615982930462616926836662316407056273525870860517406900804393595176610990909989512062987100794311930817649677049512103072947269413560634333502720693455284689154002606522629692483952927626269916925252910540301733566153191970066637617732773726834679970903521667834919058436692646953693732345888980550068288270599831067885068984105887428599041106686235479492533819472231370623617246525937557741637260983726780441875115062197326273412643742754578648802063099204685934479901846463657337411950125994964058823524311755719322952520007195737382441804947769284918602884950139139507879369828599194682966829372842965642141614078201060642019031922583657034497614519192399140405577688021237172778889023572724281611606678233500548560481207591657183050395786932103833866189259916234635832017139939174769149575198654337531860765329571421863858422126905784298044420380214823193958538145305350127315528141820265201232717048495808640949995624726594901376054139586725699582838729201436785014261131990184303341468380543266497445579626864496533425647371021685363602432054608512223917961973826178841544461706341327228740291404891913841903924811125292630259611906288809995253147994313002168721306452529214694279596124543458991891778553432448195858170226675046990030169368095419231989736980893066426100441376002177054799495612370782703340129155581669812178572996813966132420884759702519692062053130937749440895700311987831316590020953111922693908798375584289972188080246627712275250394968961470743833500087872165683446158059928012803400889967633848537926286015203576703262282807704076960159414116419569920583313730676686745992416949219233392452582262082518413370611586496662624055513775001467243697154051378909801730130164182812129034390669084667618671598528418220299583221915016091369264497314343493545872360950810036704959038753235646899475824254383447288072282713861622273318699074601635687683421904230073515573245341446932394689141940757414493151505596543442290208907693422338658416905727745172613738625337147481098546953205444099194080477108616490079662279924031050362624365739172890189520691992452967043897101632134900910415929641416234050161549505503428834506812398806266988520309564043355423655089757706386078076961632613130101799555968812692623058071488258830199821173828216162151289515036331526361582447926990101100226010549046767007919250041613112875880732397487649179947485423672286537199228295905863356047048357673560928923702012248265988153540922513300706289661601581527016393565052153967145831183070618857260579239418569891462426587859691194052115837399801946229982761411536165772291081039466762652489600769041326790671285053127695478628644944874667517491582425076794232859924509518645487896984360474807375402683777817040377322623261674829705183675701711777125995348391031407613330763300211438677661529385683778651370356350093974866869326160028394794459469481109146406873786500947148896929090444458434806194156491937424569152333041010323106527835155408748655264518073794193530833848930892546052380454150081226577491886263748111916700993396637589150014914994255792550273586317418946760203150253366283053569910111526475762997495971860132703438820771422414217822145747440671163093157267591884665033992997771432235413587963918619158190083864351873675445820069064700105418364367463692406909763517811175940467223020702506473843134641490314978544052388302055668759477742859485015922900544478082184220390729425363271631331065668181188809959253689078115994922908601833536037268250793197774365414032507776349540034154050054737362721279661252686068746162621069224900609495390123072069668661495992734203551111415627339303275136055206053602554957584508027533534234166270218652614720072107258438268591867448597638678277169283575642914783686700177813880202427249700511654393907319405119531429255600742248836598334629253016345084666114169296473845065086572107962884232267164443148816517802732816374495808259216648069431579678494495504223833063077904171076069510952207505808540652227930713406050666120677931336191563972072326144298155477824770477222689208450504351879978623515022905503115855959670441096948737562749670908381173952937665417596631762390757214984075486204690011070165997758870447920689351620189506650412352592742330417071565282702390667775944590668395293000896335966088559541966849919853433323322263376145184521825807775812040136823423134154553196484597774656760642105658279736654536459938322788036364287827438593229196692616355307098254684203868353501107163725160495878213353545848503130624462752017939130413090707085975650790459460250701229016511527942376453147148626240884647224509278968943380967232196577533472167754568398394829714428110429903073797113689356829470211130454538827017603224156683967570963018688701215482280118692014916363728573935955170886490310420365448300080762776830974252501286686786105721345506450273676836124442525513668967317805964719112310091662386464624853866745900512632409503820839884184703785830111810123642673225529562167836166003433963272585975584726261580784574494675320267854299527791348013306144924443845349562981741591366888612676206514004752186774390523371921001851261313262631060442165315467435698827490754236384782470040721347254394577430240186987624480749757423587421255411353378888239226526368235423263230679110966777022124537561254994164844340959349460744479527377858226998825094921293473667361717315256154119676151307047781919038796315553841310813602332465277480398565607692894143253755443453410262705884914189453814149873749990789149512728559622102158119201060754875716375953438856430737925323674878273627854910295635074089312072184266130455485627811960904116615284528305688440162770253950821757241186034044133593373715991110971253361901764982450341403461436088265588129594308767757345471043370169362867412543114048663760474992033383838758206701471045334609051563043032759923745405595632479930087288437131250903383004542738151665655913635742720186656406794797923851725489714815178746203999424968372093893959633367916127471009510583047234893148391440632173842796626803142208391464271611658541974656271404255330839189660283429557904779617318330025130071167657617928758045780937976786839708547077223670905574473186761566932823045748339061061275502827209309641467988162726685278732733952058565389589673768231154259977970140970568513422757036258535284705069458828951771135393158671493389849280557606329618863974084086998483228783017965175010444391887754044285318674307031728043613502243659663774859784574236555025439672010942677733279188009178315749867512194947992135295959610770971950759714573939434740954687199187923541689018277252000149983497058318542667576512374362902178132647469328244629431732093265012372961323335668211170606944277196957032500897664310291457825908181293405481218174279877245323200585681591826077071733668421897191189009036887391296486327626584453175196653802164786234497426641146295314190640987974987597957208504495651372479095228263231321237407288267123890548701849323615740877366113256809092897492062153934146730645803191967938020314807438927441198792083477548502369577054896443352629808528369983939431875889501794001994605288016094203867390239860662176857254999947329066038791522509300322889749679568204059546060087069462493339201072926254473066506996113674431410534923744507891396611148112233692102108901292917413562844764269800190207582181215320126293637062825243455452307830185139710167820775430535695760777366980470275077180603604717475736731079033148087175502740399855338141543042609114194326241109001501399743152728087158283950017329725409357687783064046916479811014382043383699313043614920951115720296239551575309545695197605846971776412831013064911972854415065689029598194733915211488366807749890538830466476631258275011313378961313245256929930355231059881643603286675494291967590159100080497628327703171242773791935545398535778521532733542106075219819595600290249100448932520515391826467290736404319371999710656971187418936627879231150813215542373902546551921286983418447230849757687625959463600068197211989165894363546545506401986604119091766352483666031797016863424962457612262278851657267814573408064714010324164933822245268205329024263200855644387932739567501433588632961679405990637718536835003260470650125072002226748983882389824058804692672084803375032849824976329935146906107873474669632493863021859772452533621987058357250889949041495796270273117870801899148072234660574515081871465046912582019837196734085634174314525244003833311100113125038491699574918105605282205773675370603965750889306907766222584629975399398052591946192516327012776084501648182526484841629634823813418492886601666283688531928762836820584628014601826585652920645765951944445318574488485515518998233672943342334562271615849313659078716672080683342621063042910737951313295533800859831709286613216361500008654933141199887453003984901906524127449707938255681213990652225199104446109669670378297597805090786757799142936952636077559000868726901500597256985484554685070210273346148792486015777482920106738690977656700303407905332408856661201271047754661956623351114994218737758760223028783019407552203135270648024398651721682951861638696045714580736108736249657012681672107402105850957381260285031570419655628213834105559056784518540969762449124304870002829966498196951434334255759563540941680330262089979978558959651969750409692600394634738824981027454997506857820835393573640173943784382911885714733458214773744958816832321467932962048036192662597633126639314048610950196341321587659880641923882838945312003202614477167759326176719515717512107708667934987535859088662572204261943627772119376971839548183962850302352832860736607311007471764327537648113105101642186170227433348767491720466524148511034727644839551299035588481216629743535487835582909804187460839236365629372863054211707002588876482280732005843453856371424145571657524219569784314533623888428026461841499839523411786045857755080965273939933498210252406070862171944656198124269173787226483437487309505268327955019717541054765328093093098135127274214774364635075089619905378121092072168378173601323149557842760261304992540259329828529276233531570614372562912738866889405265117673405024953659575213696609379101294760368626490560636620527282339548623365875478656618343727115137742018137012298812768796865372922136859960765601077555349079373057690953935500400586086508229150690517580401929012159530113713405105760801065579657484286456031148063946241590841295274874608884758945139655104470271178370888975454335170118488198044810817924415677259462393102806119336896298994736437609778999021524996076268049199411150805421064089623444773727708124494260867032918241404028616242916237806149442402270358061129152695784384770179101285842908360472899291687671993441301981087732007866981103316534386143552315410653955628519588075786082391492491359140819171492134924759546784387965442355789016231899038442389776578698167685656149435594762169143405612577773459455186711410625131043737143182786655956649717065987010587278182387766637650990495470549272422738239223333880812022485117554120702267371017256244594310057840561828472219725170588029909083495199345393866108413798101047875099517502201585653902042792784639778431964403673878989968472271080227965656558047248279737357729258431420851090759405761914377923999846901587910189574310591570365326934655690458106548110717949854850505992662604002038511110807519611650107977331471802825144935585371981944500207288481737457004363573338886714136531787250680235394153719653692534381467644103454381950240384272318695614789913555098083938380819524400540649954173495961445272707511050864239222250040286721083844487497520910774965119587794326133343681841828386150843923856690258517202069014707196680960877415780284460073903784868531614148762704001192767075611980578543868103936212268838543168557619732067092623358987075480906487982348120349197398363019044857406172342897612691661753434189739964839871628768365751991878809635787681186382330580708920626361847582309479461205034471921371778314192043303309015364012164294553830465879673781612147411826183367336206478091545899381786821162277549564041420583102420402712235490751664173323661005934698026952498419351012885288221003944706276564982756660751655403551559957401777259096432389443005883521994336318419055340951465782223250290625091552136864922853741172430430489912368950631958705980701142781791056579319849395495407344639431209163474384335504844640886994483578337590087638345021462271556266118955152806722057716585669515817695419051545253407153205196000768143022112916788095097648558030677453678604206316460529429903091299079766936446980699696089083694833119170668080826243128162092392521180101489509739263472480403614957225413258928816820056710367595984065469546126062879615020347437989118239378837916256440602160466849238090385476981382639279573845537800961893224222777754221762895077116220072186489800585511967797394012356265986806801202926092086821778383778117142224901597671168972136735771348776769914516907583317567020941766135721561268568762805907189232387429747916408846264790760521628302799673150529118796869857916007716822889660854459457333344526716122769007994572871139051542200464359899756647510925809503360195434361110108860573565631681961664732697829009232760670681806575397538152738737529289498388525922595709802048241354952144246297265331510235781862887770546016297305812311094156572301751176534160862388952820587657728366358901020998916927421715566606120469956906380674446153942527809670804233718939578988305187596954404556677161446667744461458752310307700209446658528171521154596572566948382903590353137659532900069909701188118621772328385487059588788588456180565359173075584081190852019076045479689006493276208078954333886961771461384816112917869736356897958553914361401618358176319418474954770900032634285498118289939020252393821873593144990549419371535470462658484539338701301732712617591138584993935624957326726259998794177762579158685050014364393099909264614912264902359590805268158845549306068947585578605132991648335886259317382160839385711522082596674938127778050650316594333336635773244247658717659420005578394786359365282793394545291077987776231573213705538183697431581571333585060586322369038659749788644075493391106962804252588383804964540522772643538315447155301349031450439810263657471266561952267845081032072830128465104120900707219470276744724375876996295039766877181427563220235981769998187514538538650609973859257322927417994575623399857075668655107895755473279501301870188636349942617250487860697221479355901608186690914603481163217016808407453914870868184342424252641054235967028715356872901604944394634569856707118142451268681547556775248514633355767012622318414881963202368020074527174817188957047115788927858919275214304196567269393189120050221933164830389441513877273023760146197035792762442610814523667355104369210768743268368980416010420880263504109603371886732265228306296415394496087259324608119801211094960284010133358500667779075069378877355303396154154130522724820681417519035440244708654966438019430423997953443076439914196414691346665634595103536402331947611027273658212790286001561416460243032691066191550880880037895297847480073712774461440735047363660575511251494491638610533238785351471176253271279908842064890209653812495658636633059816787328084611997662439800585940361267487010002747655708202486069270581823160823071423590333755757483859225358295533117462947382074518223129386107955764960645125155059616588658541630749951892221133568453668096040549895348531007950116906121338361768598628744251094090347870912347056334899262240606463202805656228080239851606010325541979737311641779123339332354891401583665751506217970716717830836521301741066040235787770080324487287330072464547491554569316855967523615475562678726681048836657815740935913222951949758909569992829195733344669974053312630607650258405077624935097343336101641820766112217195947285604918067567262072135289403269078866945356389730648988531990048158144572428087329945387727371025571178033306186777235418605863461661758992791129025204898541282401770431931398274949041759522927753009298964772909594399406882877791612629928460247276426298791767666463986960341496128791579994533693575587490278000864308104956921861989329452751865428502153000094486123119211257915828767323702042614342928183239890348914228017764129780986269282033610870689522088758594128482192678074059676396656748966857399491029484231520956366175537279907834049331159702812410705867863052502298578415864991757116223249123958824830256151264658195385268670551513970544306246336060397950237066864927332810176034754874151145081159921896482108300956680922678196668751596425240908372360401662657935423036843482309917707603761534500123006109107700055647914424900606198387945718158656085579999710466229564259703790856131282126737004344508409265654688396013885840595701514417269636977584410304236145212656604326875261790968124802919548663853421896935979920202400751528017340297692815567311713208593872971536751694297455289792949973245167578859763504105648067221534137171135491296658879976117724293055648137397470218022084051468719379630733879727873254732359421575796247299772873015025001775076000836627070135585568550347782446870468885171420088892427465250282035184417370097254774284834663596996752753998883929553145856157013403147714686810642145439371051583903824163949751845237342589541904623520092591874407048312898974260169040872594836754651816091115748463883226440291962064767426146255710578941039834147518769336945244540960822239601381647310812145451869561749547971524232416049991218056611030564363169327033412967154955499522310503135537339597828119677896949282312538706101309244167366007605948088538727540966717017109711431140230420179208477330839833678185376586287794795588262293030844181178079704235729052324967186223405190297909627716612458764365825070804577667724664909183152880148233846953234136841677953147098575579944582777555695937036062225347002616676142882418637503501966898621364196889890969849780890481821286630360106399998238298838130442977465916546573830329628848027350485852635988791053049942085183450828088852242408579161237066672519130363313534452261223710883807717315076787341844544083583448377445580136783456451946805519695127845177883832524008941864046351915435913133630672081802038805988395033112876585250691239515916074148411845923418899045505896814755155615646939214044572151046297660411351480261414740569459712663568731976904800632584631771084758545414444912033902837506313384713031307115857850119074592971048557498829977884980128342091466048478148338958231763009738666165595098540868673805291204944065303504249254133773913206472263232168224591080019320330566889894904682667579691283901387753586812857740199016465394178431065758302800848487221702701251462044620620892183853282633751452232709192963806958736238933243520999143283274930026100581538190988223167025018622662977117121420442267323080300809169683585761803038316416442269593856063498384626144321260014858360740931689447645100956178476033516011576646859998601996842932053961544791504366513073801062778253097122841954368894611914556035021379735394151336072403689968443583051102357149582671640156175363726999176631523571811719571782548233666838990419717121085656097266208180406215778535304824676097828381416500260318212228014553070788629786179905746381148584932023858337017080685228591407462195356181714221104553305190041666046041294095522089099246588920852334348087745933115485699603082028993510567340904322692705950212752107934869714661296338250035508128513077947073354742962392482107757178672808641650540359007329896806315821175025719475498759111013984919920361022911281513232071924932335193232690714819364321145419704188179511486747123826450155561099430971995386728414038982733171436427123918572839220523187990240744425800500891750105786785193841647514453991920512045041353544098402440633495293973091495680929547402333951453214308940518970950033999537074046800884364582624006551352329937954048057215869024156301729987045988621267449895269260099837973945215419541086781337220786010009363102328378666209121675826436415762458148866607321183071109914365962558535910308461546539411171142895287191597834330008479031589967152346938004326620104412817037266839148020209820118543806648504292708783308718757587531042921297218951673070685734682401924439135187565255487121954352292205103877139201096236308950848939784061543629729165677104433988013032605642495633814465285155972566048942833802559338706499573092607461135677625182628537343291822721889180681371775824742119367826010992093505544881167436551416587055013943476602082529117454292333502778262788360733202245777077016558338307512162751105128623113049687506201822517871219688527190289207031459916145927726232379852584305536220149104421693914497636090812309401192998815674058825563298874595822218070794553570353094663003233932489588975928962232402083755934187836033071508964151673625153681206463567063042908439430762439436420720157057126975782977886991403811801400490231961937340763664481284412254441123800806773006287816784660950061302635235672885387514634638943200538981259744625696898631581317949488570949244144194122344508090298412559863112308153281942888309643272206147236487339646925364376468371153164962491258230365613481302359313511615827540614333244393733186677539563293928466355669961487016976686616702570229025714977011190881707698961018694645023991829697243059678327675023602958095267477112246572217559947331648895522861479723621762375954008870702856577912710623572713730659967947815729004166223975471986220116169310646568039024484807957439477522984696212036757352659111876943519368928171247436569355158427082843564322240627396476467049011911820030697822765380694826444519477542866443701665470977399420114035793187286839804042602678691621708159182046642188034927324539348236353698961066730275985816511768245441224352735485647031091336652841369627220201423183546216801466498442911559393677616465330980570655297418134363143087481204595376600868744702880866303060708579659953065856278845388308808030900558403407455660898544999942786594800258679349321162370361764109531860663987359533682068284075019723167988451145447407741951562530159163250961797778980619600460093054711108527052423598569893996970468678532428543851424422034822021296519001065248834575621791632765929864202236388498602302582969946720785268165709846208435971363611223120038048789877957139867285836371268354555827788407315428361096770730492484747089393825495656912306609124851515414526751723672270541642934305255790104170365472756435674321718703338548376301396918014156380939122776029934677208050198200323548425805002376578979353785943860600773591156687196635361566043035655217545359036596904340706621214959424015094409550784213408746406039346559027407099796795279292224492769585260689892127779788462055150062767137881998447566806599182187350389915496685003456730885690402374473013826615470333525617449550941996609409411326683103375812323355120151843982832453173033954501171913628616644443611844011446337442904247625986103779647345448255009663242198732083257808118460279794657860877507878098954899392493143476830806023695220059576345824118671662623507314686383700230419354285871025085410270161419030564821862990985267710048262610936102103787841232688736338639901116779344709306995020154033747285622334330269587967262672704937042078099035278484301460904683531859059353687603443944673475046525332329544324911117114292305542662728469817925475909084253284150725492763860404531475031923376359826665915731360496991225405454900898317103433689453848928104179989949597417037162351335645702147524403830887003761021103984370019249340575796898673160569473698542224076557911930675020765920434588958739215199539711603077251891718853030482814938751510542670737523818059969536077823650702315458485162213336712396091043007175884204391824156091003812642215209673109402619202266034249931440079368845843190563371595040771860926441699729776420795675891282648100277170294627525061632818376606703766500640159871253921842513165893329519859722553724893248711245878165364841637230903153153076301423035209600870950100299980566055502165606493442341403157309663611197122497175023862179675707335343313174400457770720646452815689489584313951928438213132568893438044521514384541445828061399035714911511036951463398048476637735550479565565421153432253523475781951510801719210869006845010794883802055475866749651425782206821867333851534087812536556769968486869493956060051606851834667362397361022126577422188059471061057139171632587255626599841126012574606745248544071728768028741709324657540500362681712408064165938440704719651885808593103442366711592982213804303154733064819813840500220550484688529120555475048704265665638235897685289093051452053744980524675046145365269684787614457104263354840046502920310542660286168861932773820274069581611408863280768033376357094360219482839464224075682888637639850598152284022844545837237014620064886215924063641589238381064803349096821603722313408495018969923277295594161779812844957211241633761615805683348874393980696774990412901598433089796341608558001477075358859457300531557160271922466570803780045349283472908281757724201037603437492310845526904885916144707980758387226722463422155894502294708488882219980100021633513469295891469154363988943423104571392240964330056771745319340599043784814390874533573700875038853686292084143292565666459535447656052671667713287486014628966121059451008408493997254213436627795777197681606431851690675350739958119707810862609991713274191992668060654553156558094779716112727472537048100868416696721146974807697098959181948921901000434550578390655481036827378768697739302116579872012883824262665454876486435945822563952008548809707655644612373745332210150013296640937972190228269306422614635767354062826366636053347986363399085826975365660260607601161668115187793506519034862656559985831849068403962535527789956414371948758099654024402462322965745060709493623600921364328267513556179936506951233190158027148152535200275430201361065278845320499993058043408369922863000590501487801544735960728523046778211495373422388062216510482811245304135493584129291433648030910488784957657027136580901259175671760544365222332353814849022704226360407836804685142210622038726606322139908875963588881055148789391953710880439670161409737567035778931409794685791270810390917381575578646516875627178764858360121332561066657775212566071619921941804384101763075165663597760963175080177527869054624375017127292760267232522379641753583689263775414302889232471282531999409165290042360232841895648704579240938205602367301858866871188716748809590200362447401847157109635783619145320282163146074044185251316765692094005729663008265957429660727537228528559039904205856755405318673908807266470759856090457881977861686544538610869933465708264686038079931491264716290632713236743385049750845456861722492969393772024448870835014883686737759135003944774789685541975219073821689475274534943007096428042927801194691074624448439464354062680108371747939931903424167681738092441169150838582133683114434741430373580085942853241343908078611503407102008016265551862028310259418997597667360330952052872972744519247363728691913322133727154281714706346053432345723853759109244310545241859068107801222247383846844195971530950151009417144783406527038354794670828595393305925144828061583435724817532667235360494759432778643767209822562463044171052543263668519219810686220080626393296352626831568243164614952690098031231971160745133618739965350934870665099247278050787867691472682063852752440311981329743006039196113596036384084006690697951211596050070654443874408986082766230695499953831997478235565028039554125440842178349143037314350647787693620729017998136702037322425465550799818276576324210211427264972027774052688794228528440244546304645999297891677533092875314136855465825678792141001497015405609411590036633909987035300383832570835182638748025439657560352892574764766234784567445461141102982506131412424930639463148113927168186901063888328043036867131947382182093652966128437120875419261524699691359597880789882932885625425150928839271372649099077108569095111259752477841298268552152096021567616912866253630912159327390273582009410147254226242244351632781760939047063310564988405120919791953141468459632684419440671214028420734958428605667455167426671397277490888456961059160414504808474774068936995354003322653701659799260073433838674510313790569122524751031596601738716879210587358833142070335829520294621444999261418407484304784818778108312329598668751353466569951858473019519344169648135749397036841418901760555354246581360194731330471712944720337402584558680704810093034407258855432018217263081576722055488870914028871226229555105413759457631299810279330679826489440909229390217140529497815505832547719964239823729034529144589077220572628895539648106041811447064432272639670259931748366849201789465625686027829464901199473137282283734331569084765781248276167637498239580917502357790203569454836775268294758825358860141704303272806540624455519373424541870241206100749786706025566185389045154063992017580657323044108744161801480481298660023526764517162103689644618290790087885003843289202597923352394333877867179978586654122697724110062453406064842740737333674429259254747373028257300325103820442938023313803181948501050484999755885106754985475094733019683171940237144013994276382672575221280099138747203261771489201982485250341959189603118320062279502236742426450121590497225691466252348446437295490155193901827168528074403312816154780883359515619987410690142729374049298121761660351359058330881352228506519961213317901797935670174326928793603052748558711747590928483053977898688543714990850754017857271731653712066088799980442701831510617910157197524223691830857236240093534487330326539840245336009877941398810731839486317696715786823233958416920089360551109201130248836263017168956960781761361948710302601348091243000408879068503527074754909076405551789293958463752438084268984245482454663427011217250924492969773803906148018579850614754362549910003319386475433105089690020038636063520598034517767461207427155003908426913501783546548593060323141350920876376894327241593709327296939904215728677777095679523354248370023345638028748717882048343799344388438713458173367292880931509949616789147521002999278866913483653178036657803766250246278510615171741448027715746634415643205398179058737088446569430193447740064038705611776597104618650356603046603652670094049595899720622115147574379381489723758853481544921028010851281087502884528561535655142562985842546355452535119371594742411563658058218279579360947501944828860151360689384029635579788092852396977003243133894214798591867195550371501782597688988234813841162779015152357316837260110329446664829178118728529068245509485773653226493935155484077311156420372454696279440391184088903830344475848222532834939411769737755354077711900606379512858104939244685552128408722081123985341463270334364661365998666078433910827053528084370469473613259800523124788772514116419019134794501234965114054536996359674915167607868405344121140082889401129147783427588191925325877558096336804654660717742187924218174016312505494346026628201036598093670083490476999898944709572463872969291428417058354461616935299992102903017071265837284026490586590470332474828819852574278282459662235417889343323746755949966672522746418205318697849477369825690622541513948699580823000591421892453905103705151113662361130085828055416137824855278234814216964333677282580186684137078819768453148222112476230291529091752526219328817142734190055956714871756774626848930648065238272875180231529819462887378416294060501251372389566236225358220426439438198177151706968677643842454348296727221707074756985248149416978560122945341059099621030814530885033573762976137666714015679179611604737989830362533693096559074170841305273494346654714798195022292660410928972719447591128943116786441671852122956250101035967056027122535348233032436162704989733796747996514333147708521586773160309412196249051752984306187532562453125150381803401386084770752022328290768152527820096319839908194988494634765672238150144867303477689454537204552492038246176902874981477498099663927935803470168008039013438381695561633840636621708607467569881798022914953854750019626220009552565936566187700298985498508004916118328837447193025589510455656432446771467889410319505805888210793064643502894573824018903999052274016392002628955137520727406915348406673112537413820900214507755383215386940974010088308731420334517566582511379742715631324705145138193414874825796704753309027297655909041729042181748338895977115029233680533561707183674697320074532919481826996750712381638441693780309396383390367945028270303703853074956815294737417988257485767938736490479918577892124560103504257839349770426639348625545431279172384540410429148690127932183043168073481696342683803448786848670802542633654030506817490472262366095360468150706239763282982564986481791798266436455420313863475058579931492469986073407937067438606946752385583361690842023737698972366734266567223578385311705599994615261530138711999494048795191026259279956292520097254502210646300362743603934313014304101938685892454809110268585136497005385052719626793002001032524337340421992174838701264720643810547813004606695144437196784009676034127829528500440559118767213390406165039806618502660709969455298489826386968075888662082061239710056566184669483718064131766768301405602633943991725486460695674956069382705778950559987066866181557159311208171361166207691223030842302357739129753764858444547518319442576517206116877879731272762236610321728068313086216908408616439391948254436159438429041089531266853949446599647517062472761459722449897865402904112112770271754643590371389978682578750993734239696376111380150498480358778407455608561383073485499620310197171147706775254083614223832732493906991284518132988289456723882459624198297487723240189805164832131652361736268867664768867857561155729028347164936101725182270935875892276232439340875498235894752415950102813885332587367324885455658596264134556737993274457269875215707970367054630047135461963445118146242143999308482970388199679673619771364051327437901725217104862690364739951509362969230806004400133503471591584975734029102630570402632177477482173250170934418710758614721469533113708724946942633614518970594465882103558941060220314651458387830977156822386595606000762311348638410488346870796083286755610906612083313666312549351199423396005483047305993368620518271057963482377078148667594795186432036157022464490484737982064400127091628201373511828564392768726539011443668874869647730318829476837338345779811312244571223661245214733909669539169927158950429821298178623913836128238322642123524287342980861436718193309304312706791473118135201300441172120931734900343237167036097616251091775868385586427703896308133935903427157595145412139499873447758337398505354891175785380382424530854689081050525058022097090287957044344257991537781285116193877308914563853407725531046572094358449539936368905655198749127057086424244536273337685217664239177404507787521953143026708383997923869898937835774772564733066858632047264675448782332898957376352085820841988198831950180197130658901050696063548856348092744834809703937032293487908742406546576703030041694964022456752892206298675804967440841080768662789265087754806822240227154800553785505155854956520827679339992416280043899903583899715322988084058740226015047588539727833708061372280740119456562177589573300427114041172123749283896743989741359177892805765700974956044527322847674037302140978321787490322431067599063740173333411587414912400410651996745505643563396939040975773222191704134872435292994210845142283618010803483736794514709720210760192560190491102035226216783598108115818249900056973831971094127144379292035029878940426553694548076138863864455239166596888421236272140937289556970509847831777894915724560091016835949331761484810454551233245584432867049750269350078488911367920778753885949457086174648017370949162697652268635387451974694142218908842689451065361115740245643378350530853194601722270719199268806270835135062615753055341771126347566841279983841194346761240252007384886733520272594181801894883674511214844756027615298078689878644254811318806211832868559334854334971821511164639788957496143488061973638477089599527718533616064600822368118219750741118501818720004100176512485936532504283375603968996423996909409274310678259110684547605133906103133926519021495207946806983896076733515658700706727328908738903913496258329483958345099915612673391161349054394794373920838636115006408384579435057406416225562072748117964709920472550481167274912547682448632601068441034461406502483161473358582376819643233152611679996739955981837639246431208964249670960940813316883375135520896374933521392387538667932260662697060724638037165642614880225890138235487151881365694650559573471677621227586303573130150408899560261690399651416920961087754866066460253317581694156036428525570613231020696791927642845664164045884458574043691999042818977461575266221986137397526163027698907800401171310902911039852086943316746526194898151162791960779870001218755730081126857909691176888481431154129314820428461418955095038524295369581735638648726724664851187283382796317362274704632903380996463046354797938948224471139018890347393284469594788948561499839653512556889567481264589510334461079684871991391807423316879079995067722380632772875650620394567210701522789249441214892144888403053803755391297992944987581798506541601703288823595770179233786870635188397864972917434220169584243563179054372535346406862079833212524475531607724049542587757089442517241840025088819118587423795609402260601413296423521285029057953607911782411570975886943177225999027327241944074573508847378354787576260856972461819256287147364462937431681728199673381359618328042292675921993811472378159589586669770171792149910303380800379260620460676769983880833518874848724595505289966910393686765515006995003241902927536999102184202190440649990148529629250208964802907103340919593357541595909760719790012242389676352841310517553593162009854108416853650943098227394608124484416618842992131679325745724908756041256755090403255031179695515602754507122483908807271063147036409581935297140188746700078529802334341198903378552630701628657036700495235127709944777150241757632125516449527965747384559488239839628587625376250177772420096646850557473443669610677622162074156561396382715324295433304131965320564151744954165798325080691554160928653724506371668518216255543713636994584252269759009287291768088097872964795983498180495131864603195816265665208023963235287517415372397278229939957439401712842188865333002441732646955438501511984190856556202795083534974892015134901857759318829993373068484986580278915974619857236261455816638472825684485083733081640100901558462921487318740672608823024845285650333018248729328151120455151266914156612520404297184407365737777981799763054847521378390925211757557213297546405570826514889901462170486640843176899934874513535388868832600623543262091700120619437995452427778682351743235993315741075331418978140353932828625463829927619404303519766722320663108923649456629109350985830325300065025909303504040900727980885473470056067302237527583274857950626020542523611133209417907502372710100222649703002582334250120164882169271247670216550339788976997644122951332724491933755122739165386277340800739926771504587658860789041174358267203430649915964617182097347162049971677696499381056540080047794486479805703200300617094468127567312569050105789315845590297849667850736731741268950382850749741711267734109396706773636185809026251628012266474406606516822670270830184245702045136188130871585788429897374239579963427299827922233421809865612635972452520943653384595626610318567301789335543931703997420654598516089883645815131188477620374101943418954353699605973099338044304295636205008254876359044016622792882539070342384358359277293672203994441399349884438929754615874112686505779699600226896059614812747815754846857452284070137995915759889946708416176408377249385047678244601613798335183849349337102459256502363470894558184758816469135922064770730124767351951322389842912854947865064384694222241924011523640398512000737052353487744787535270238350034555614733920464384825363868793551531645242822712181721814262818572601610794095259391054057397594584949674036447184379701128213970941069595490808830720775329155367858782895019665743475866903214542113593468653087625475621800303768379328794944201277370872750535309778382153660359790420781690897585958662357727079112966109054816954946986260484127287035095226274377094719980403234909093317212120574556871570158619253109812975046461927894662085934742304538761083812050610994878691737529530452429504110552832759802629743480458015048716821656676681709517441186530714271686560480448987368194201248413367082552714531064216569904917703535727049909774121690830754643669893228178296431383230542502771335194453461815150409633125088678779559995251218389060892295777915906250440479749509116561933848122723355618438255003388491970006331883102645173430120961227848320989773680135623177558302276486574978512234904348859837487511142085686962214241315194381416804862311067267889829177809817428570683847613058465749214092938755938169597249426900919413057869818057234650006486009482732314665127979403472315716388324990499701897436555015696245381671849629272405635676046988274428950891671018560675533161227694571127154287216204824266746118285323935770425459452093457251445381552266091800468016606775276271518966857169367061735394619465949273576492200830214352167539073372996007614099409557380166065768902485764057336022256830502177710202941255948118078662307606206222555169895120486322697672070428863181601755864765182432009595227511947708921957722123721112757156954219161922824888266034779679208789599021530231403870441020426011537393418689107932576182358883534096778319829028638873290304674911903518109091127745525464913959835399123758749866776205863921360052860730542983272779189528680276139201812305891073032082174646587943042455308277488894416126101295644091149314280583635752506660734573851958336587130820583599505008180836058426216624344068656117323512388910642159908664036281452696251671497296259928528258545677408693177841991435141002892048909366343212796284410292462974860955285160993409053416996145026145023361128980292890952493387801981656690770517204033879966331590165723990922126583949279610524761210762601377780311680796069327825690073254763107903196656280880420419508598399082222917190483759311613425818572133507289053309435519153236231508586542043732803696772210381374577561432800389901060802464391460858661612875678881265871146773192210027659701817772277032965376896711680187698955332327633181142504895263050173251979608988693795486196360888827345145477387351971417786237822010286809028926815746715947362208076536907829697912986943201892321917143556042621573990622705406140228394841285085969833914527579915908957772705470889690647273684173843417481093554400957186577700466260148984111565992130377566624298644862253673194518323664924498586082835533086315604388747137131947881736275787906054345185706279151061627264068889260605158586229142393904631806421572782762057121975988111087184383654324293466054173613893472836122378247934973436208811216087090659591805780312794699161770727224758760541101639045664459806738478357642360133555751832265664121167577066300392905700160014954702980300582211685730457151869355260341891740830898103149706767419061841700483766095848657250606810437538638721984975958582682749341899277116895449380595644633645480800784978923978727507487400546374950324082337822612354256974091310467602244016038382822177156463882660735787222051073864165742239032531617319217463406391899780445748959334011079402195478951948010866195686749449157341443670489212300029592770412551565964495579688087530081224807975736201122765805458673521839856706404465307062470042069928865420386997673702548956121462313485247179886880793058316800876996769329216345097937171230360355531428560556001164308794822769833172850341023790413025603943120758214272521876909665726292348349132116735991491258298606244260175959045885640420656676312971547919283417754109601110379813930452506260803562884663868080996119529637673495731456214713209329625455437765390639163500647413727667987752616475678738996885573835016280576772734221274487778486784577517557770926363652514108430854584631209784139674262074203066481136723450390501184189023567519941378412872614876976566447984317594900069993205911834386352904587059922514409487893106541545683712757419713253006188653784824704905385256897540058534583285377065248322240874192397574360100162322431859398538549856605094386082195638062228012978288046989202285790296205128710485338257129197517520708639612485958899596358168325064298137574080838510671310361690575319885685340225997480495083950485660435909400740300473702996661926354067409957175385413892838092395930449453499287544516547014725409616262728892668943263407018228472156372171882873259750091852202214603500733466545787877047314657456852198551763030554692484763086470677750547560828230526931901215760452287779912373061586932759408113721282769348171691267869996602775442587028883527313077021003619220464617286573640871339713046566840354499780845303658347104415859210744513195638225989959155554431178221813477701575429441167909479291361839401379417217841522115974717457682531806174666861985925993179426697754539409379298070702132958262299327498072718602779749232989273097508853521684805005463692816633902337371400628863616340294999671221380471987990187209646658930456586717926285724951055624148697665944669266128074328873839735962382757773738086218890875214054521238943474897397719489730352377774773280908594517248378527907228508531919557907609302223688749599504243849136651683783228961010150587118383746569214439927780385806336814484520165946566441054583189173435987624413126300898869070210297700529387923777735705496172305548900075512402205320923491433367272064919478802506272179571754067449177341049039638708738018816069101516510370648349105016632231567329095188170706449898344773811525422312051295308271941984828019575004562505417201929173424950804916318452564880807173526959184835369144954820814911734447840380791000795327404496959696247725463032785005197386603795498232651960509568977672026350029172862424144824270206911104182236855019397671561876171821300307920901918508149380747975417859983374322551961752254882328993181688285244751198548725916598110316469383175347798372728684742727185573606359972524239596060496976221933955079061966717410977949718235421237139150478689178645450027919491017970210907012729137649089761915508691229717647280640748042667318150827040741702895857288857676443328018775554513387291810821784770459318641691359797079328830575686476867279463272639843290422313487146187183340018772627717887024256177315396755929386658598862124359335531260431975753308662234007890558736392172364163384517075572354263956090429431473127277422318616544117175883433650960716568959354908857355072009185995370426694032254680305118580833455788804693592658237739125036905665683460631333547053364173850552867149056335654252554902003884350733970387610322356359196510355975065660007310975240701361892282258808875235815050622729257556886983612261953182208831800339076148141800723144527020441266927176151581029909449945422136178004136124312205926399509063370525993750362209142357424096965534612988827551783012528418360346543100006541142205609130713342949925135878609427020361344665106617758263396494503029459814940132953107595554280858183939491455880270152107872987698954974063669401776901240598593823687636521183151678717743166032284425972065464810615920785541126728564134536011650251230399748292723233667134176817903811571232900741439185156580853912534482425313629365181336832444103302103981632263701499407289211322984721423147673629571162807825109922633439199891261351410952558594285269499081355504926500898507028182746629659113377295389375895031114536993475559323838962299252684572308909476543182698725408248673837224265765803917537784766756824552940642493062684453953937387385470054965964685369847335091680534164637958577809056688133098893823896591521460799015855581459147862771828703828448732679023226197093820811689739066727061287840282058611805191579673289327514349489563284255735779872141867950919816222525027352010503247417623504384401571415950151186403161128537081684469058147675702025194969081767667134663727148084576751410309321439682556261062452010368208624624828432164093543932117111604532812059234239573805859044742025050006089010665615491514823261408178988657535448967470185735634560453630334800572989859137600260831145995754875296501062018171098066251484915596106980949238648237689364722001241481245930249835372501950754469829248809547112050812726646852685645007872518845492796159705515570440400143196396709422687589447623944833563134592347591696274625919979834115331269359280458462711936475474562636621128955575010587764531710947081188787164341617489147861688578770876444992656624207191831538361605996029773270838870239419371900511860874595984528758066852005649392227666031115352932816189530087421612402270974649774590009131301976569752346656437430732887413935796777338434549429601282999898421750959814414965220668420257518791811093941315182501091475533826634412957380646173008995466568416209024934834921982494248681577464104344344024680819176423222106878304020683211522664878484314623788914558906071607138956099466989893885797466314455313449216210091866265686605565490624009839131494352025017031419005644926626783665134626678058928484464477212236727594577903815384959558148035648774317445784396999629204603908966208861961972930643574040010680575147743247180330301278740557459869690010481126935997723689691559931869717568021286784861780114924883891815467798214370737204615226274915939126331968825958754526740031582488244268446419752304974303977693895816398552330862509503411962668990681916880686731717870623682652776155300348442385712166759967060635531513352002839030276806258780547399584086278815876939557913817497040532019815637493446870588638707924327828576476208081418156495240742481131176011942548371492928552780322152990955181806392086440203856897297755168715734184757691519899512740434667957696233359496250163799706411977292980107516675924253045223345472188180406894136407627778146555718580524067555450463602105835122198208325107394378216344780795721214932736174049249053960665810386385103647304792515983353505822849584288550728329455665552733804403880809089018334707649864318558112320565311766137937238076513022553316139910656886876056788150901054846469122142629057718751970579976012822453097284132245098041413948996837131528935512420269292402201370440633789237518339773902230018581785184330615309572892133048944472437314211136606212949154256617193202387917118015878297642039250565055028527919131786707065385709069615426136989636570597432601948979371657040764513470465579652362808161927842411208246392575944312937025516798125203828722002704937611520150247456961826718901621319297889401608014317208715886413118865614985397683966096619906459424164829143207530207057689633737914870322917231184682392084943535265984856700226080342009328186717423892554194685142998838527505022405168116444097881165711500887954673892353653520590995309142749126607384947534840675614535025203705141761221996920968688160914559011275475714719555651559425481822394332952928560897697370268139602488807215893053157724985400997497083677212108172458438575424662776254603238859282676582675591793449975631108575139601739191777205444746179531245762220388055048633033644209259837843948522592724505880186609657896877659576498391256000202671614484913468970423670463753917047375780632963618605072889625899429249352513070752614039082473855078611846131369169984517326821273050428299889500087873522722384509089854958577985638140804411900864855008705282075003668510549451668007142411184951382034591346465247633090454275767429980978182511406608317850892297909852210705765832060844691663680106273273518179198161857822742168118628866067172656620742738147190175507936800847728261491579463279647023539855562893109342370260405208272308024566350035443759710003659722526394425038709117344597558452247669084488842456978804869832195918029716084544874895551366467143269580645705885449212173927796334686507272551530760176519400869975075712930365433934159073368204842117773046545516829260472271899001226365030826144415931167819311598254250669891123725762721434452062634972341485899116444527406768855488510632469481276666103610085550238998124942547520268692502673287340921629576451895681439484681598947916673323372794132291865419927925370643013723922062565068326058810267604041171948638481273102782543758523285843919428716168014347196127635585117129076131636594811928450902676195739674208613386886411159368254833128096657274057867910368403974195521112639572219331933056590166419865054598315046176640379661526098732405320196740744741592259095619291075753517950576067212207815349320880284045548777171303275193071124880903641078736989662046478758272156303704976052750073244109691629066868972735882695332282376493799319496096422807892671203379577924493929093002516889521151145344815391155441726874406260904420201258924524393133063391738351141104967783593104642501108059649504758239525510542885774160550882024747007447244142754166144036909362609127043783370751880197412537454120164257680884240852020235945414792538906055042590677476601003416517728338341765626305906155667806610441054660411784365551192494356745473753473268946247696479233516912050424124491690265480340069178459768820160048623547716130756995556650028892875612592197900425354856867560172016966000560591661604679171585402011363213969801178394187648420252231435517975420442424648493121730016224743102937851929427554344438528784123311106781021308824604989406963788375150627508019672201543390213702584507875867351705632343018565487395109779967068504288255403104588143370615110001369906709532341649760504512611005369361674931492278525034852096218858394609819428596162211588019907942250841162428767031739433310178257081821546450208803224637784437365759469113103597720459089008798119257326965697767908553235861170317861862704003336499028241949402272814376776410701191583062222550960242080838451635215742421172588968784399077479662481865072270357827730490083984018230536604587260614831189911414048631148739825587711977859614357348212609495931825426738318060542005528096873816891613581171806996486432982471950636558947264994360999573591185109357827028570724146889948661892676336280836321896899878634703789621104797159626206591428920032308920763784672330196726606626698663746329322495056546777017294544239557909663778440578409839976702131963679248949225336255883713577621219451649518637520089862832067355046210856552888320021602517080921829646009943168578147010679893140807544296506460666307236091607119398690864920859240697872415846065854160962239779138520196361457266451116008019149847356526483885589550631106919968077956787392958964242904196475607250441736656744013623732810342591740092407743669090704470461923001555171473123068213436470472189903767251391389639574882774242282236366526091326682957452705045765789915365481972842956862478158742507336365635237942323154829310709462956624429756167421166288364470079104173102599072704728591654080867510423713657327086950889936047745880080854359444535633352213390831687757269302780632092774983251741478427122434860803625190992008106799449483098526768923856226570466407888288040179920531183721282423074251407889607063613433170551051016551299703939793238612838708687122143109377691372172342926174826049068336511801814607189485406923628402574794112337006697746689040843869544943397539185027715014213023189258769446019781689637317995816967107260954536562222109902509760685020795187039408077829651825609524962268986641322725376864336775428270077931478453342145150406678734042026709767678370754284008180157991775171277627698047647914781229260024468060928778028028591533271069344284641997537352062119861635240149015349460570969147181205212965219699993691361971031596307107823726900749199341672954829062049380058094879047613376083803425380259911077983237004119827172962567113991416559985961813866166269637384999976161940841220063684750025658180731163986197570619697498624869189995936251851076435503656308864691034860743114298663651139755603522084171789900451350408490275099696843224131374384196526189615164925706411388048431535990261368273511301312334147060487274851939867664610222123569609158419190398005641579183557078720700596755361964075047361678895216383709691881094578395505377333692505627484944693173786238219808023446084611546546612604598074026322791582029950939593536057490250725478824471192305583382495518044470622060841547415328707143363340489867667214072293422796200367899118022671339509341264294680308318360690325967782375911937077898733044116026334505670108264270897847835205234650718307756453746023438565593171832685514735882317007703070607359395610153677871839785781104462488917446095300512863127167254196866187111370248828407964556555457788784520669810372158477663755188784832179386041475906095100471932217302067861424174981163517709272756973187858616834700453571811708485354965520432722689959477044063711436639337063588212822753575352441178364574807103499794899688550078881337833455319672514627830801763295579457207832310358645822061038633909084541334033077049455643813380768760031779988569625275718453137658882546372902672554168773087189793390314641824939133682858599493849458350687639968740398240880624572127341417488541476519320691981603104349653337327311874218859149252938855210968548499832416380856822747712687040407463189162925750247382794399289402272222458185989777054432543611358394938644317573118833065007099560423428028503451278657310251653133849016795738473585852554568521462190242913260031161981276650788218249435087767924363230583935810396978292270293375992926985817141842844691866154121512603892992262679620046108499854042063419528384179257917361658929313881774211369520912738985169659139026897872742461979982795741620325148162947771640507944073907332717602829670902869345955479871948268703602355373320804614905837473430466274037736935473870233471432365995614132263410047342300882550539427184406469770634467628415724443286240249356940966033740798244715182607660995849722123846698043654375623451562006379677098735305097755304477407800812978409235032471029820502119704540771780638568862134822298295923385134653525241367354550603348055349695876822049588850352460580256175124651727027626660877623190382659625381208498813530456144847272114759651483603498307163569620700138301895199182292025299351435770162335745129534648101242358018200434739160667419642468486757491073456482277891142600791572388540802140854442120818076182027532437667962093703383394418058737405696312804561149934281899189963926499753508776991459558761129377557354142239146667905689067920033463890784309325509445039570876188693078317380654728945926986156552276992758978070030238788276599830386511338435249267250708028052285602449937982923310714081745818168301545810034930183053282867308078906093393461477812480762511181751514224574634850447336246200088284083026020807476481359927780997056130628284560719494175370036898265924327321888898542545878667987345394001552090364058639487989333769137779099221643088261061956048015597400029933945247187536184715958145960640697568838420282023967051109713559404986948337934764335392643231123951156108549528052213259393896937191724152246180380793848438134315121821922281203544919164448935513973799010513971735025706625241909394576107000527241595180184111059576251390812683106759034361902637167303753114073082480057969773969055975370092218784401262527686150421272723655018431117693147889054657417099880323894478993065130282429730447122925465546470329629920041499973309530160776405531190637228453285541143860869079842469597832243172418792041263027851302327894359511489456388262989537665268225397397646664322559348194264883400979034687705548974140989316042876693081290233529935936612680080267672314869495111457142715072491911082269358385464263301807998488200094753664588158559824871069321510800390030538739266416306547065456554828241643950704849456320746501264301241165761421540524243553931210632667619525341575684969013893791958174289031819085543888556058527642756490376601632154671778026461020517896158784636744917695386841377296909925323819368048467041517927239164930983814626295653959233839137026783080462355052214940288952997279467197977921308676880257036144469721873375055378199186380525871194792942835237109103289716171449004078640333753355292010884188210937953818810295194178893166075316124157029988892518168063822811685808091035395203275079939030709244245956565622634323078338646990684293508633834652372982788119669345777280749442048456026072411208275117127774812001416147696954640545164119627193309202001257813282993718357734467668560124292256608838309190217355080798256023311198551628293725191243966151378398846963681792718511841461030332582780602617334237003583070029793181744980397649719243658877515793393780716645297509974146413149470629796774887015712628225801377882253708299055328605762626207619700084404864685626532059947311708347209942644163106135144485634034188413676199147182437101821855650112783477784044047262816173994527261165151809386534199484690710513970220872234821782369175832084301071034544709323178724229429056419373183610561383220453740292490800925986000666362506380788809225888382118488079937306729835697308967313398082663225968966700407345472749326363448301152847884426716167422475041720363554421805255442288614602715712620732472910010341786897086554241885292316041350498059589338171604280688631679030874572077109832662505180294522724141079504176451980410249767511988857268839006717205059199446754259839841729629181524176539964653275975494158148755950067551335028428375889618032177776716603575651454939335771714998040862144187254390822278125050062770695381801037829629948626809945143593946224589394402240060213873545361772123698140778535281691470843439653420372740546858576157843957672943330535953173362574371760904133172053420725909409992816998380175187835723415144754243589083435829322741336604063131794275892543751863137602660998489678218263921166381029954947027575060531035168681044837786261200353557190564354695810033937331172842088205860295465981516235665396542724934732305325063111293940125734571692294281377102866447166461082190198331612994141804852771472059092337183359087930763886623180683428418739514629679822544543019677446857221190930609145866915755265330567562067805190158829823693012156659347954431729011858527783665208315926437272932617646867407873096813317261508074760920797936347428594305177714360765961480873988118210738830503214327007542086072582918286242022457747644675927674840628671643663200965203361971216104386412761667914177368869623219853238153714590327246945927904926993920158071545540591784890403164358578652976104895654977323427796079507807533373124073113747875873371714057721332675069568638365825627694538476734151678577822366573754741256119285909580674413483721891006187907888088274903653370763008181979189551999626460557519178455950452922249979186043828802730573734314353095129669119649030048765167657473975227354033217648099345499104580461581840802636280416521822037536101710364619876058064576530825627346130590459747449327410997244386661598418079201052686773056389387367641570914131010560103376718956509900139175213554096605344982961289164031862142642599074441569534580486748348516804096193833252766270670075307562506533722377199100919976232177247984005783389059569475762622315545699820564064262138864990515831619427561503824783416075313956471388573536496645579612651188322929673783726943027270983082811815893164555393097596714732246792637947618254011908733154244448143109687066029123371521080488547293232080844377229693359378402568117913608758076918323249893306455305068002800095945518295146258383671075965997474527189563935735615808918769844260327453057898211040601131960906151011315499290470943316097129403483284158303609121686504929200329581808872462193850125202025783931154173790564963681851742651461619994558767457343395016637545311800932477005426934738347925285415054529988765692410200228844031150302669766584272251747667482977902498268924412305908321733116196403429147416640533637622814946171399788870021046312743132885812209867554094039676460841514416191246476305415708400298723234369565048154806313863444868633967258376020901785119914438661237931034734629921724949601812734827775179338948836261896488773262123231867767975210037022648547792546881351387021249531930495051719626230538427623781909243870402387119835787962079082010658880635519269845180708562623860956109304537139965210496240625532347439399997330385570956269988199527945682321025095998000794107925146991664077249193853497057945397085745200205757394415645159335061637940142228422065338953633337942493403618971288512902793973641748166076389694485637305888663317387316023444196812403984134704671228002064055569062403145956287688220807206647464069550705154617999456000208325979632905841115645446979957732349398328039672817713102100237399716875848386617602574324832526450755920504973204142295591373633884651996211314661620474458902485479762562336430836343657212236265609981783290246490821526905613838196089780380542879732453142062804871364782214383264516638310690104345793728848266653750756691364632464352322703722773356544885485161243676890215481806497225731866131011513594594012108260761543752721547690855867312934650026173757957576569893268841628402814019578928029568555336307211883854718360346217496392897422393912211931553338259137700118870574593375778417375786254126394021401398745349208724611376055315325544452508884753683196609793410825958102522518035136400516095914084239142222815802366702912885998951716596358862301059796350827595909963021480370975230545424211656599929505904575115062932779832132210990944582452852596813765874225851293137516257384653830733755415259772282736759367512400681253544321217169679071770773239506222523520285787361573773684683500481474285611446994466592828486602361086669500725455932961579369520534218354102095070417693638472591601933230241905008755403335787468300433691449204344735715303068829879444253548638549124868687750619536328993156223113479018118991360079262122780310337421789036360154187793227478539704494230894499352723131942990978106129175203114736290899349278796119385974311806705823243577680312561573333787577076067844814357368566197661825882000082089488662157724540571567824809538898194633066996474725254465290334283093493851054252900597215870696565174778982253809446522029035946645015561801859419001510291538654655865209599513242998397899860971280041247217114602193346648678324900158885442127577095819159854365698975348984439027822232948568514027814944363621870317475428260211187380216010381160919497246529517806670397166722825904393343695776794347228903386712778353048577038031397067755865731887943545425680923015697546578850319782867304681879933657599434924602682074389912157705349197448035237771498685345450896390048984890755598412886446274990988821521150890258657164071123529553069689026345515887132994456708696744264327596690366896067436818489592216042311957231128602822620443045447106120826889315007904728711114022561779006856205826656978620172355924743487629423151995877876355984313421034929213498718046877431328763168508798324804755145603000629412146144656828177573735577466360136693173885911225574198059319436719689499971745310653775869526559276125492806288750992873727616797558179087072720271396782889334233384723412919319872781921237320981621724304330575317931437331275974026089765780304724609436823231730088387478511254974505499739679388668868992769740416289760458760395044256896631068559943997631821509478582257372023196942115121359486805509739829178455512949572807006824839721715581146907511690521842629835345572807004332841418033070088032439296013461482649660049933084676350657278643429169022031077148352445016307585301709299210704497179943039227524903113296547117847718577386011074513659774733630800001839377697544987977804163781218378667600489748214775314427457812409881828867019975736359330460435082620150450213447137013946026311202490783174861046547276080474519427573268499080081142730974006493406879509297475627161640887926582651485579506280921444799585938202675968257377587329402219608645253206524213608887541388899678079667846211949840091169340703291468737175079937239867047565337481401221921713255519670900013891045018447071100378795153864143945238122602643214792034000532804241982075992866357487088424037247254105372635003570899201873490290198821561249147017687914228663247881923342623466316841544187760457605703357959169463433152903413910322146579038586381804162099111270698281699140933830118184112922704349854266334309867821167910845277290039047886600143728645058971659637199720061682908395031187492772575082909471957173563409156094439301612580681763515568994113465054339123737714830817129290151820283512434290603738274167511457733156421857065583780485610143146219744116365159164083064239022612065945719135497106962473969390173764191262706903926691086866073651756702093275244088618399950514164349754755746144752303825579873490174708269930857213082020406500901922542596665034070723200028990874146507275773299627679371972294405742298913414013811621474457141698672264428784553812950436265831002782633684680903122366723516219754548503025033495956252206732778857624691783116992072157935206158493407528289607545163601380966834965813625040704605532275787711765301955102893313381610597410676220465824900427847003214522408189044110732992046065330972162588655907818913786266820349055433939265366540441825420179890493356447216141700258750920782633665330074323607210826765051986129668276975106357473563512124706009229422931260800085156249344666651898733961820189875984809099248505085152432768146665392180318150325101316893735504066109765427716425816634339991651731390909826532157279457820186257616416347866743901849480885357033629159262099017705114008438146540125940509523996350268318579689914326425085891863551562739263267331678046230898229470556929267353651049504299169020220738095511929023991825007824279810170767969548981392343429540702339114606575153556087439362096478602009505432311505232680666521559830322680186040779621234970963625142777291890082624408126233095573252981598222264356066512929628874107081896271496462205273019985633502084830892014191482788753457000772618342123306939302523799898775176821662228350873404619488734881907426372591765088870075036314644131478510775825783598819382198196153196177583302915319695683350840984767959543082451294006675247864726858471014623393933044497170038638596377847860763631165845476191377919621042908449411229364451289838660159126284994285330994442196735028404281851550235730803994983261997257266928763312414960896764688089339758872000543245457143429696648665790735716855257794940930047313705060243993362484963666137100002660041252221214537802072187868284990755965528351439577700889480309271437571591190422921677894647232676133752718826567299104675653491193945024283749980307503683429955317818034496827538925366377104438584908463987805801389851295101522691930639464394233037848883337723890593990587937855789631998364828559775440435613934009617040100793078292400069904434880328367231110175585798234247115746445025344428256916948437107044719426987388489344484762829107381389734359136459854052461684711195276350453415450654661080548489566317351014624766305809971225241437976205800029921820016433824901795951250667763266037212903895881277568052003916308704599843444958311671282269593478562293905899140588788390654569362938313930446323327159238325623871263358784239498161542015897608505885906963208010107415659736007221988327456805471744160998170096964383852503177178672922795050850067925722282081398436256848460137274227836136669771786169844909075098317191747034412984083072228558334437159080154923390564374973652750525957114317693574775449231715266169415455684853943283420367922846408125623018857843015930951555608772759919783626962289128551130374564585098669094019966008345913268449510189735463808066672536258807514296127581033352984672014702323646352916447114591204733427350048143417773097590831881021709015386408458656550935805472063998324860023894000825694749282945453610009241683369691159250308369156940580591479394863040108601545229328902259576799343781019313812855543258218881801787129157499541080767542008150498697939708316348311459121385768064547030819492495812043230011820732896426974547426308457762215459098459001111309563862022220534334819253476453851879999484220212320773328713620885161336349329601069987379463108829999785225265468936165456978618903810735713812382240444694618759733870960283079586634060737543861947494732020997389213074304432219845707509616106460758520964510893332631837372780386859519963400410038469671030652485144569756986853109048339416284060010551237407945185523856523275852615984966166761415174818033564606802522726319208666487081264331333843085386018948053285204922009801171747005161616551033592277453926525966735330135813557201828626108197614298520882904717369054389589094702121177717029163491703434691606753968312881936834969755096615048194303202929661283579705281939438621641882746357270939424675149756820309073736638183640276875746745748866320083420001140623138882166657960625218652632101538198475115446158978780050906450140584546817322986840957155096521334118660529990201617220114185121406521418874229912596030007278634865883496387552227737297661194006502749380447748982645986953767211328001845540495222626085334745194197387677380415448976678817655676402654322097567668063260183338874717123473665656627073963512786633437828167111320239146319334067094186173136659788345219386849995033845890363720112129053322180715346108755546411856987858361423706861453281960720857589670254769494570586950770427446222411034092917083430602904929773425221774375197448868924560022017440049309424769667721627501970234154133031462876442696304278243646349382763469349355177899500059688222354620640499367223271007599394431044079052435262300055655936438783213673885547658131229117332867226653774642307113593461717335907216953359501738298476124678375693116286627585416501215342034432727127660196192696178214528010350946224312070524347794000211849961343518417619595634122976477541827674640736145999148446628004457888030152909975562930878759976744470368914564369349867719326030995619639493827044395915864408558298586164910603787225186417607759379450751714320509470395348068785074736190159051158669949255612417044653268964495759543719617106129993912434167925154849181601106511613809724544454342608468383398930213224923972233709830112536570477691964222125731440855259891670202953504049466422587039664760878426038736843133903999761324791239316802817017985516078423061429977205394628489303222679337680613523616437693579214091833838725102270033787028622684080754827036069749425993078831211988177254671202540704858889891474659038388762255414905319696555903108561961119522397341363801686894122520863053362813596481388485907803893355642846842250679588497011112346254974240899573693015877503576647512906612564545673397533856273896200727543945985935401848592864488140405522182888059919753290774687242413911033163169362874178895095301717640021353254498751852869197627243907385676093699095544366466722856192634168024042212905282031739609721141474937057374056942649768897170552969324236334371113005855374393878901331911710918049852045188133717605745887091202677684415451682751119094958332385363399025091612739856900380998179919522569543737857076550503330524859579498705892460167341579245136130889696090821311098900021416410234502783234881026333717409033957146758323435883868253241995087910268362446073999571837981961652830543403325120619318022953190325076675601908330996734418502528768531810739866071831935755495722170166390290396081968822817991932681835602360654048482199606701519513751640843036164434298512590734015862300996273914393946604648655992518585302067483961633777800320608851762212712138100194047711909011442779452278026184976033621215443550234029604821979145916439908276827404827662225573117701410004309838054152071930427611581266606010232581677189514417917833297429258126164210917661211222574444562206691825190409251331017601944691174570856787807888932843522557239727128429010771129038809171668970703843117083650169879057380963434596453825914652611780824501517917803739284778258036486148296952989004940732231844020257090071008622657938946962821316904405159622153440002304567956316413884934353596058028801093990370846070018173937053608789926946480089305089462976463777807807173738233196484727977185466799368341489626562141920273903429345114700612906206086168647394400316656938694704996834536481747275907094973511546316467005263312023652788168981504241779802415491575937069512179872622384689908251458767114699686389281309698449554864702824838042122262129749703659548626904846728264877631160330003516603103337128742983541243578210263137471299249310100415191534585172386213394813707158252432365899838372186864696433939525266092838524395982659483532748512462436635696021964683030487361235652339666991714279060269535330944608442927133562911547665996021670881960578335296278396114332791044694973647686613233601474583669731119321454410925869526959651640815827205852345574519825484951229508615372014601654559604770296808510949273863845408270884260723644448738036240526120803642900102378706569253882937309026322988474817403328137692538964055995510068461185100839634483529581308624564420164971513990375106171031192305565007881284706393716944716824837841912803403170884711857591374438876267141790195015723536350661099122757575186175689497672120509030704373907526736368558455508246816253014326744676721703335791157414392500946418778072338777239862666870372051315741392033270911723675705533981502957657126613046546752641454618734310042798932657873446525327925862242111104418669984723326461338600745458483677990158488911497431929149174596870040695909304700433374865154134269693291064666058052264572033187546399354720386764329943763553875368286723470864536870084746821147703261980090966352611794276877792833326715572371564508321030511189482204439136404634975260404810794362681427726923706925204603054148676828496122011935035431206650458217046176740755974078396976566128093368035854922872849022392123214663135470172537399009035025155388992606576419293115228642474379266348651205241744023818425573179014857955429706072439810601131754176819318389888980774204815692495133972602825485206355881040549989780044647441421009866559405065848148549324297127400301099826604536557496470450132306684869033108047574687637698628294777565739731387585936926672306635623675614126114166327301153953959415261882267752203113359946933558489394585863573475414756165228638839665482776828184897786252693194447619738109438259611204357722197449770020755950031958189643708921202070859887489419569026916994481204352770814344713066887685130510460196174774741065455470559981907510101604363816286020801363833362734533592120568853927624464334169427265192187430711809980461591771670689733563451720030328246707907257757037653610779249540437843363701284171649662745859596596605418324119972595497997114528385976661361864306009597419335091415669696185474710812473260311132054254931040804345604931415601366220599213409972277489684708884039722028076073862595596081540748733563600007330553586839759837119611780650353246166758002002501721723765207084414826780647606062639774214739798562227908664810828378941015315344838558573780801786452668725309659080452898188375470856051133428891490972643212692609868854123278135537544973182561086590090424687848767129576795620649190635213385822377468363945162894316896245529648414134958598209969533097007312956563225259177953773668331751285237569722566377688857353549757147040517321613537648589697991992198842468160203257147524364470911748804990908559474361963599431760884772534194213209011341497776581095826891231000349646556252834206497661506176748190227103446136157710928958517779498153565954709420741298276369599542410863252899513908365708901620427852211496511370970634706497204088664244117474365351375584458710188619524085467292141904232283699372009599168483226041185821486965976379133066572706003809089807289305835762620707399737871430009087705335117526856674201562365143954748629324889183641822641935140639601742291108337039184854083341957745937093328278597839145600267110721494203497691213227685383401207113590867113645662385264185273061782994773914252168949766937083373818320395361307325488720820482944191586256847172491733771255165003004458469626715676299549557037029312340658650927115427372559556058390562901685671371113595645284335622171741973682419697865120795401271955908373711646571339399935935081008531499162931033915720221490035739375805531781350732153371587498248916967964177161891352352364088309379451094890421906990680508729028986280970196616076806958665644893163036787345074358333517839876066643735733319023907323261838679145240764350417430514940864468671696001724905992817508097018041890666303981736143685927043567524709253877374572651949321909857727702450108145032798649854381447441213991277751057203466256919044287742529707007151930861619092111818501455680563081450539764689713002735315528755424993722238746697734153798230619942771662464263650943352768322649486778673940728784717809354492459684363493494539679215814606824655859408353996935769328012337227377206985839106456796518685611302725754655452208414834278834195172259837857731235787673286515700757523512980519729863756481311957116181134110248346576027355830557703705544115631634245525053872719595296226271627897843997578410551313814423122680466956393508973717247041432919777887223398878599466790004338166214133553615358867584901432970064166443143930150738659425576013104340802979797666222207915288588238440229475284001510401467799887993614168978628479763173117096972369619003415840896047537745946419613701351148993923653789213195993710379759339611238822021842238211931693864145985201562926350961180461482283527027914569650759017920265504634292522288949249689479008815087727122143760052736557840820498089864315287175304681438729244650121123742458706257332300522777813551961679096687390373231021098501429745566043232811201724833354239959697371827396800763162234533457755656635624939707390368557754672832078650461869553343417557639468374700939304534017528242181894404237443091934651047832148991145201829616066338949574416197886603694311753446359258129351447055756493145152404829113468355076423820871996892216677356799244641423012233983637450787173394627004335434375355686140609768087087075259934389607623286420302775518916061699107381039887670146597610568597282614924358883604824666929586934053186729868399612172775530702137328254574852278027985614435977428028968403910829720874058500252574935841620870861738852829283179659816141605150586859145333676125377975505754257625411531215599540622873724421969984594827021103821831421515784923286359008826667197396571056811563078046942453638601390725030004808566704150208655054715669773358807607819438287228980837264039009016150927081975585952671030039742101814339180136746910670588247161747526696568936787424018952189637733166208792358470721713309812966937875983927223029714080793377837922370414218971747928960575665824322911654531461901965480194598124158571095451661816099173513766348201434463536716795843508495932185741895017095698134394898468887959228578156709202425522656388428284176374825808013257946786431167497290948375589364523847521594948921215966807340511478074609107507367983674233740759908886028522708221775206036522872799578116610861017998975557428604607477732098952550975034363986093230848151619368060378049438790874523155593900409929596427729270179715186586864992093472136207623095694879760303459381904158404608062703835532479529313121195925149042132214390067560249200029074481151623916658599938223390995762997576649959145063890017105553163109937515840828912234361784168878313480575346649530270366110576713952859699526459864261174649888277831064735379830175611499881014893779597526357145070913808892687256066165383310984147689813502836609082585628397278225365375388276963661109436602046665922338944759549060394461654803779517121575587526609322747103994977696717981353856938381730338676622128205244989986930083039569895011044844540732956505277807762389677646651048684443679663715239714060212127809537522025710119564493615715193777710160907233595353311236551009795213483159270944944983732475400587504731872984641733305446935799486688835082006790015821960019537284606294072044816049503233199598190679990913030271791484417579419052674838298946004344145586126278288441879763452575542114778032733343941568877770594456942103392082609961848560980290880131052965368355028604094178797964199898120800549895050028824321370713060399286938246128866986359093092431040730362406080433848486196165296689932174917496335293271637634165703276386177320786238657392376595356143782030508107415392836383695537717419661411886194190478160698824653222322608896969429745801578464478865793605976660046314154128746540756226892423722212067976913156432472257749344598331657100990317343653763744070300997739643106313710410960974865457886700223492248182620973506481400752384123892670489957278701520476222372967985200166702585795979563215908360117531507146819214632765516119449649871960448365947206377526676269828182470017301078271251642772762782885202239671820637697404995077840652852221539309910127778255439925305836416032995952558691482613278548244923116327193844652846241345730958889016559222756588952455382756873213805020106496164752284652959152047527803273247511431959372782588469595649944713641950252539438357712056685729785133221483355433978409727298226114415016479110189516159108788077132643334901925932420527439735922658669147479226888759240866410118031133040132488925673575900727123396719114223394514373893483177911624497511263955414315922286449743328006022909090840484416479942142954916460571784650153750969239461046284496235779524047773863234705916404066859965976361438896867674450096191298256346074138624084827823723254952115084504138823878760580370013531024043384668057090725144733166165036322677534151941433855700957508759618201522455888340367968431958309539403641397903913362494808263039111377479891511698211766024609087736769563290566291352062467747090780789321668446875133161043569490213838123593059375706011109937637060739013162538422878523634030554538315215108290021068279469911349968928814532440615209932102309348731976052508867180300725857022334483218679887933660726982903965175331994510460600675679823053080562342589976218819707397794295261873602567006824718776534047644448952218023489068607585034081402718192261712793856363271861833958746314119676714890434555232978061990717333178530899962087840713446389652068186568283185545557346213084428188452289652976399086048568778762305512906057567351588404777020332567527624375617150483131759780228448491093904841600651286121400232952795740268557303377257384209979978215439610534365606484862041581359151327192815615926863253681568542585122487964217015658255592318065481967349122773734591187519058997784031753844418482104902548498441718357772000292604167579626559097565239917191283019365803072768510213375127296845413166661101649111644633910942744847806256414635031768600937784698362059052273361289947399886799262903399803845806720811468360736696991771832516020164684180517481140864867079008962330793369603168832931226607631796636170157562420239167885875011898639130221133462198966212573134009892072011383677962833370444277417076276831210418312100092767736396132166309595547412438581853003371676671909602171043807009728584801155889879439900518510996709096788020046889134869249302678948299999022168323099855127019307184682958067631841162090943534447363767074367588286777641261182472695883565592698174000004137477420648255221455732093478657760299938293657763777801560585389429490474761280708313065240721416929168422792093583681362913882221701023246391788317157723478836942596225142907429885453078893375719217442833757076489252929902743583581124636940490478863434569619278703441073023496613308117449358912838418136659891883160653780785092679270673517384509094579001753358740480593624818444168299497072693442499783813111673843574732184973453676531909601358863840233089845368863489418281977087809836698076418181870706963202372308529198909064623555318395567411258328501688655330859416140280838500465652094218755930798448012402859448432782420636594136965336640868817520654491180852079130095047323906077829384060223357148348760291506473948729785191158190831403692794560024090484192773509192617204174255792879199628732995454355588996653446645455171748163912163802671664334105927903590892971246499997840895923042027149152801215912758557761794443832718387378278237433630451883340433477767871818911612717667084654398027051875685142721099153627970963124657249705207128939556832876013365536236910228333857658377571166910640151014058777070971766431718062935786150429943633489866732487004338877255781529772675200917283843659719263506104167724182491079071915840511605154721709994042448940847240568688027804496133408783721246623401148033615648959682723499271213615871062272066923582278737979979471329391980243648542405182126628646359433002538328722644169737655352991646684233095298577093290778916432115456618495194015471407215087740048202773757290207514502764789542076520814494131607653088712259092849275959389794931817239375999438204354551721882054258802304758948729124981617475010618353730032911214116345194775042942744193357345644334600463141498638231762587932680378623008055780737426709723294445016258177732102027874510318656957925569008089574194964936874611394741238151387972915395337732515808021040461968563657377343314902093525885962563490350146077839949557903678652819674156793969589761404857073410542600212080113358935630157789271908818650857145560390124183464185141061206609157261487982896523710917021291459123582952989636073660631639370260173996680570872999125190658084373500250025256679871823534678087934544334521958611820517996522052229674881338020974841205635756179148263887866019032486309990561967779482321899233185109063382427900417067468732651207746489216946731370111214383846071068959885022298865214040717939803473737494582064252793085763237238680274683518260388362862899151829321544645966448264817785050490518085021350937415415548666873751808832241076631196688603583298516228984095227691095157886525354439548146228070413681358773374400400029983104345194318505689248866030630289017887234099010030010088668203444026627208374280178374592176195185593786487962647256109711987236327400160692893508805077286434752657416491226529413361502686785833522554591709015293808832924698856065988390323569107073421143522042728456978653999921875031697488643521247664963660176447789374730425764879333632224946891483672930112544284270859118558268205578220476079364011832625877709571025693053785519041339951891293575525989936642686982510665502055972809433584552718885750116380097795338845076886554424211293909759398631989705112013336909282717966207570295000929919465028640117364025811366505407115590034638249001396498653753575850623366218352586407946111533040082181103036303146270890626749224950233013298593667501787307971977356511706557704587685829119169013649842955268674771325941903556203464632162193770660633579179197977832978764735341884216707365533112519836277625743929267910771245100804422940429376599969440354511450127771704606242431175457664656464803999729062880616638857853920564737579598504495033268487607891485593080436140366985099023622949634452234218632195851904416089630665103432947353669850780969622976271465143318675320469561043090698137193836054997465820227590344064691148005765298283736959597419205583757724088386554151736004684488373599411013399101224738289718427946055019998113083893264831232071153171751609919138311757130660922206735753945025879519763821403547106485415978625676090829985641979448212562616398024807126358823246927451336746751812292081011089159430193209675105074371205375532404661496104161576221616059228305848179968314860709174781486442971073455507487428164661234849511827879763024061959400066229088935984476060707438280113288313479634999152377858648083011724798980130820137970156005997283520289689945567811441051713881476020338811287140211761288929007183407786458235547341463288127146220567786140135024209973947591711827652170667712000725349833260134948265886757427078478813640745201894510034893732804190656199483554031693725596488665478272940314806978083515928166893520753370827750544606436652912847520839257608936415945296401318618020471713171943287138914847873379077945596306508376850436928561842436257443931393770230280302506959576224079224042301839134173454574421227224217906326958050881517365729300774678248330102399118566436649184869691975348516422937881472644042973062158462205296976092992588671341842722566654250849467355340296187396841652009625332633108692770051033534735006339021214573405569999986683509210572715867839801319572055042509493673305552536027530374226704360583323335409144364425578496556569831762746491264250255820315395233838030416872570042390456151553459073723511110914722908974097862896840547384556786652594428744227306036538750255893909455959540350040045681365410228785707916555674226002566252809925421172983114323776638373108203228820856248609342375906350313982987317461149698686827311813845678578023790388880476030051407348525104263676417263517257184029407507845933281934243370551089510378235510440917935483900279804358272961757618253253748260581823023818131483796354484196546051147235599618197290784192579193967734346684692617872305433012144167180645528188106278143127982316656627856141633530248350181115355310607260380276173018077819356079320612679367241603579646518266584569727127739515146060489285742509693319982597593661173420659129014184003216602004901759417716454665824660128423241182344060722278131897993863263547526803083619093715876949198084975992319869932005126992002013817184401421974494504991106317316016931817039326850633076613066941828750981309181514340819659163641720848764438705549537796366809274712292630327091378432658044591641819710601155432172913561604565643989133964538239311618207132853993142639525036592703952568569557921155891265643792791856246323194928893758559310048821982926165851086895455151160497809890417643728268547405004777514839486087567897942328065343114324557208065812322243556596588644557575968949074300635238687805321483326602860544370822042080080763745631874928861158993116109886886335107374860794183360208611217510081372512146227360911515760014893324957768720837083641812776183275663567850681739073989630617030327522851975268607175505477321524391143273537417550374842304626733343474435092642830666876850959973685756844818323706923025945078936744052764661858052055523155107127911610788912541285289291433597616545894790098965438410168352959716531999491551944518935122824133448383451021991765343974502312843925050459062011329789751597959044105611516338341220010317545340484622939013006567052105733711098187830500128325038895956089970009359674223344259285119077060729285595756005247191131034991378391562232426706839731326835445087144980253556117949474998272599768404650904441843180601150736388028625029232137889019790885144634871571231754004265329606751117344463586359966319788331802721469743733851930359367048723094654414451129652567856600225489763054404113494052281733330978044183208382435930897698381008921078342181768292300082290209125540851471426647772993865059757535802927759162351965591491549159503615730107427490100162395928523597304997856512069950589154884473500787498612163135629748626722966388858220219243495467573102719147932991615527065990965644115622935901519338593192363515158321003066673472509673138141469593384095049172127560102994157388784623331875634991607606580981058393854014527300051893530631199671277965444795393474516527332874830593409823130506155170531948240949392683549593221632348701257437164543760881679512826806930839363972885532159848646351049840589463016699618315665317932370762813861752632920995766645301322856814246368252871942957439473400890229627716702056695933574793503814783096416690831187356518082030139492438293165803620916401464219208378530030194789615726788748479631764432857766076310182581733685912749110534075504861133868782752219049148817971433982820812036932189370746235061617933244537200698684671379550774940749138249005410468460111658643650089973351240929859871857684602738226404379781943442166194745356782323303551088223737202049365186294492718711561622086423970141460862179893728063288725630989446615902564586554883324986651892007950170293510743777290372983924811233814636842341641070060914359929737433911605329026211891608637472028396453749385001853327584871231186975454821252543160077644717432581371754423700212947312138797791952588646685379956815652129864590470931360658259734665111860375285212069962386946184641574730631894916277638348646790299429400101006668626276576581945204849505699169775247075703372528516404646088437860357422027950750994060586621372763441003099921612216479607619694558993018870241689690189282294117210167499144142914780331445433047739837828937871968563229937792082055631126720939912615773659708858407969126166263797770270136977962466368277291732762631645431911347589487958409518930260785361164164522836427524463719923429854318707100096620354323355832503085851124164319157758384799472401393884759461291692622004770816250123011400055397785799287610554596692143204299580952488099105169773389073804214106754295118406709325687262141766827126707164482003133569341171749644420409148166169728216964817691920607121515790479348246552626958199026176652274604361640418003889081987857056540804360835489284045052401961744311149597916709650913328776835673437844358998491317205168358328850283613959024552229390526406719435117468904468080561312978282012079904802271255529836781577490214140698237238890945781597823031905695520487393892310482827475183115086712388530776372887003549621344878956625638974547177210001094518810265310630799200824221558897531835736155322627072331027837249321773587633954707350481617956902622711744781617311401298257601435002515051004737259468804132553662163632293422409567584782099053610434334441527299608452636415242356420247178548070448792195179536646880232335606897291916111243956741063889824619373424882264710160111708080542626747975165362115955715341888629393537056416521312902150106686804455215847542725188633576300739222186726161356088812043183413179485076236380739549663935285569686814915496306699766117639162656472168824890611071221715214931765233910371613091347300406693547172683310345965569984574304450530501323061062429110346425508362683176042707052314747449290768056101463291195243253856116628606171047044327401727294138906948560132673354427178955883202623648912319353532428688955701155089226235940109426883940870558181311243179625175573520966967637955231306647648443175342947064085859148339134115106584651537316022554767352641529401705777731051811589361834237412247706303602295377532839755232457846959361970073873905831899923103763710008854291007615217143451943465450085848976306270313586144813168552227398504543281092960470446193786536616264152733984142853538154868453849572586300095736366908417986617040407059925680758280501066770994176258514749404496334237709112719492151588964403551413356015872855814342384636466085089070653284717511746737235583211446796827409577633470105153654293655490069529005434036513140177231835684836529256552696149412127110229234154920876585172906246044865460661375634498123112467023715233470119964265925943128439989424138555040365368047862587032060350500811484890300069061764623345821384430109856049537650871123430619116064279896012052224178289014131623848800006989290735905234841110754312110363489078704443654078393549420425133630247453383094881215232557474990574717725376654657176112353719625843131085201264081374972267199676354868447839585539239518895424020434477966691104633931202748479604465204221211701494460943885073218529508939825062283438630214509621288475286153363808491461982801566482811267287599007065039907817125249930920726040052430725740140175915898843123535795721692827165856925172544594584029210009527759278057451423435229498480444225062368775308952619692089086527270597003152627844689503757126493959504657433632183562118777192321023122220878191110976080630761140911057308583035328541298746277973880353338357868222608968172238996524365229497939390738949348973409711182639404174859168891755128091967431880867605495100683460251670671049295487327417490137239623292480806906995234343541360029194088964248390511963505267429434447448243649239211494412639303087711261873454813392613746377488248909133757061687709448425732043950253667197469552082714717713657152825528727989660621809747645829209697158326531942206075113950160284395624541678798810517442273903640205081044224816087167280206386202582407481919054415851354474068556546966966664133631855969370595324848325697235597429290783229259510617652391366431248496376712671759118760691537661467946652755692528094302458683101419559224617823431101441915452930622786838503956960604997145703210883658503243198033798693859882853001915681627808441734002075879172281248055927497343482678399946418554721226046335190259358298059889925485010451968964940920067913363723753783791570299680671203263435867904562073771439510685741413067004101631687600092005567738129011127008115944514113088469876998907557247647833487316876985182521350964541750134201518942348201489174226452206992363935793030416032033796658861080001604518481529171070025952306676355838814889033334246691442248939539803952264636310920743742941644698876974340122418988432365515880684684389729659719144527857409124565109346907046055199477468198119826285501171399516798002819385709405918169794647620293930097726530335871374793128667514351950779972326832812508267050537075141326218595287249880942602094436506378206401536237692753687121632648974573668074100216980399707359837416045105730417749429756870173138443938440351317813031089592204883649289745737942409711123795673898084146779029254317145130134965098118878125129215476029121332137768214327133697322261925349879878869222365880953204705374350940098784733256879923733974182095061023931573501693051941454638216506545042676241937589909018253522790561349388117898052412752884445424256438663826693393559590420958359146512262412541201562797173350838448246650932070902063464369084421756803722874449649617594210795784184271921286074994955328369196204163432927293236744786869567546840191474953593650237941059779050300371700336439689633093082416423061852193871604755136599878171897549275422909206539072850186077768991874189518190741374985517075793940809541431827636892707132039825209934456140848874762088745728926467534340723648234043849564579446197550651475377091568948223076235193844060559772795802036385464801078829787072624786545657446922894503003846316900064818463306737943926950353218269386214912510226302330496811760652386305416837929048716217804557955985647505982358149225934831511056810987073374053432749900694420450217175804243491557709995869550508750350899277275636395689286705844900780907772754134249068732066972862380295710735508867054544834150641341233308988358575210846139162512222717429198978929936622172932682382841360254717222373393289421098274608552220284580059828593222880891298204411226833250331103468848944355931834312194064450436645977760681422560660771862034992548925281962301734761351186843660987974813064234753744663204246715480733900433380739910889419385510466953446516207052855619484764354084634839356429277093477197928508985243490745804065920262234783774304752052106686952993322633488302872386942770737798256259274377843495131878161733066547355822850571843605384799626999207668464596419853776809199674798301725722251124341818556719735174674923083299916115644348751106595313375954452354317572300333617873693738892941089563774670374809888286657878044597359226358739874655960975046211683755534638094810425304061316784286825888196393182866667884141238168497409298148670000030472607258982551496455004169456666556845404534498987573251393762601338347862870685575709644037551824159166073502815282556748378878901790143943749861754434152778184333368295566932211852084899169694739964969363871303329406688520888244616733560921873349103638924805299179645495962366381990228230331787039780550636126576817203073133925193579185515909009894336099709312185595859429630630279145663868190656401960260126417271925291232446718060287443979978699074282031100430410240088585616520004564517639329280862996925949662095109813562656613851082280344264185939309676113381254292467361807579813280677119152463104223685887606882899806760317650848663278980020063184435176208586428362088752869582801299139949251228867590996472145600048630889904225372833452006753669516608418774921443552718557661342947470984628595575018435504153730345913003515983297205414557686909363817937812706720141204794292134246203220404306479636964503649290933157338947069547110330289519054551464035379551098291399838523812444972487402220622472415628221409630033537722565825422929816675240439169102056686698529935754330359822217216456037461558117698899288515228806291259549434486881289127566546974311613706445816929092806078346359839946164097992467254242604285950442927749815097866871635623104854575320335076742767175096323978547857424977427706737436516971464677464398289797597063267740806235106511738768875106938677243210324096536070022595455000839313306290429058860773246441741541973105438444245987611000172399243017380674942127736779908488556625345623073043709241376310672966781681648330796198236947808580962961626176436515334033209949085711415683102156114494652629172512107665256794252069093007941591369668794546064050685917680594549491060946262858472399481311648064057554042154454100420150745235430638958587290592327907310425985943515416807102500420726123038786447548580541436960402082178119380087081458677554374920851154265455646249460033499408726688817946945950539020117379853999017917231510904356956426766312605601513379787445114008367559199091957214482617434133260207306734970881191933626568036807095650947392439603796017691632373205797491498442940276862864030534163824523357437440806878731237232944894517977411822886029721445301595263626934705870035731212571555528944731296143525546943108555791751000182948452657194720426310063395633161659520828851305988753908169146572511619161309013437271803938492060560753781367922443132064999305744149266327093544456633460573181914361337494546044703173682640874141888164542463409021499764498895019507460437800221400011938081642462092217055902061084862931055140740196942144496100250619740175537525075865496445477241683989234301103814380920157118067894389149496753761010871946080127835228033014565234996929552974464207984959875960896140211208139629187523776467833792657039247225778078711952552838756568760465698768346733525581414665480190295469870772860303532804486071357779865554478665545406594190791817968595854393140107810450336974035770367589189988137677111604123831419588368187048080472738463595606381006254219728083045900314067026154338827676519374113903995144989979460427232470288188926660450512222078332725321490527084288097996434200447168827084257632659091002019281761746266097806993632332505895733193498241681477329289699658777329965023625491904275211960551313609149779402713321357991533485211400732290419331061908811040843661280537160448030180970931062346983941120685627702054908484140420740187115048258929658686388282427728276281957181593557570542768590759896141392995554221130878389448483567360190748369138308559615069808284363799647486092361871310527329214768271461063493453180647073843093657251088787596823640317618355317507573279125409642709915501703300290570377520435352826430000376626948106020874511657184862027544209436556327276248425520586430365878005897860904628114087172648470655182121858832872520634228548839043936822178037352480904812054148083628114903264597187056938736291362171355879562976067473010610619223173613806764436601839415110547143668400864034487216085057906832679617813919491941009100346396540052723037520995614380331739282990428475097871897250556533001169135608801876307502229137777277449555709504918388646711735142816993242564363445718369182944591473344609850137627132765568366624778617103790904946924887464322838196342058235334393874238859482659301184480812987799635128272121556182497752186149148984269575169258297254981091841411429053651310477400766704497631286085163127889243428004070783128734734325182165409018320634016554879524092442110616101928426603789251412200356699338375240225032136797505755935980583276489182591204447640862950863764544865968475313228686454854076666475872456468730019348592030937151132023451621383325803147673437276023143045184709361572438174149837971477126705857389637772859404276835105084681733044445403663628272106811587484193807305866723195919804305725460826654219751160200540936745126560731319904666418499556252691576001188806772321621203510659461906845206854019334185955612337979748286406636518697320275328891540492741216303434915364090283827402496470865034891282284590612572829053324816513525533848463487803985765157105745380777133573383208987377209863067173681839995028460265444786889291755587133973449543341906110621932174339688853047161448613176279571079133777142432700710516866511796448140436513917297488126559397533132715801735802322967939914948555496377089992982454677114905737390481976740003008004347389872393089130014982984774703869128602089151237934680236152684972927371345602747590273765190799091875318929410978905237088180385162231690493932232210418920312839114133108289598385546752136410845718050331117454228916871991291668258795507747255414417829347928613074250886481215096540578947953788071304404293680042336724022504721946244820070076956263406264601839651634602417297356779111126186586812490649741651442924634542070864394124818094326387667474844060787717901358613319462472503642345328415903155968477768955205477706842431098065418542795005297464129934546334719574131738350876860056715862715197837278643299186973160582261739806295183514933718792080682829654626280123383024553190869677169023716763420444390743598772951366351856834295395300049733755123640434484163028415498243365189532940636498406786427420330942064902772808566477722368949960523997768901654904330385037993098309094459686520646475439695313603275316179082386870663103024164684757655576070521073161363597882743754830659432526211271393386351589477822256700842409160150226951380888039805623587544801938992594991704718485854446555775134202575726529925441865149051769058488545258684989806144940500362376861010873904051566380399270158321082541684283745704999863036757290908783388791964125964994059726296625543135003831219509312533162625984787824617310083008987375690513222957767793152598923658780850972740366514645719926152170111116897858289478526091148716414815928520843880568021336427159497146338570116186322977572142876947315190943585908570041123127525373676512739895783568465564328343952453515800336992589736991198935953709186677601696348511731861097201799883863745183840474587589814408179537811975478046303929255608579890997122236279510550262019125559991133362247859442878660401766640808244162750286992472858771098655000489358312856700466211545614306769655358646857925853146830117305872466593519080870377426586126872034333740680338466527033331839670838207658335799072812425540627488801244390874504657748508832475601681050760897355428839869475611736986717856227932540483445729821394022878006072762694188826766853056008444328258738657790810946649080385841170823908062334242715519780850713789328963992408286631359386647526535637363604187954111687848172060014661280795432067228046319380884857457367732738132685015419747125648159758169339515006653226737607910608555440900323340989164628137965392611826072627902117551503562679961552499495053222690386136812683953233698244668402850150404517573278343603387469016642606356242941501153111601289957315172779852053467648808743038933903456939798636050216808954856652026215386523894754159715640446187659243648413048665289194036260224627004596753339729182130994528424453875790476366245017022119484807994784782029978745014159343213692132915494919595256852311939329057061148421745886881553911132925647432665760590355866555095565147483689872635120465316206819431295775736699147126059668256567788231751591214441028916243022093337449110494528254530162784285261221964065715546948858493646996240273902550200442257540622442169201775417934894310883675411050765278331658172784380434293553269281381283691559800376737742367578723013406096847733217695363306580698561404080426343944793024650238103903506294004012889102929033735821817623433233100242173926469523327719304266693505153541814599188455541423816177280411690739249214789152524158225532742965417591293451839475315387170555463307125051877531147160203104802162457032903191434693542484185852542865017201835805983151681228533795791921849732806511656695336538706008476968397478727260971330724675063332321650425478820671641481899361557569977499630296442529596365921623674175296820372659108302507224121450691192076594117086821780815035577649671059720136347411384194309739036490447271912246604379600092685806225832718346046518114294514551347485671018041554552829044490905344385607641972884668239087793344966504986009672916624181613754509245443209573223302434217414130521927359160643761136238832594156797805005461474842342227600120332277832674316056024022695285365237120697239721105242397339120052539411828395329098665078024445046436209264861773485162890119609989700089523106566968872970442869906061946292316160202994704065053246651546852040386161641338057898503779016673305976408588614242074526676799977998294266242033975241026723878839331183231120517798588783032216703979302367827447961146257483598835409636581737913473613776964683547559901261859946092321902319265789825126347325570464106413498368177415509391545856426522537824362857120557363595283540572182936534030011914583843898530838428407070394868326068138762545484214036853857818027599955761682308508577941959798056190732734938722112246332774348083846792704181256622055660181460849240859081754702689912642470268855567651481096766124487049457615046706791871606089544426319920882975431807040620195501730981115222174145785175033681323205434055939423673272968888099674998411098685342685309105334910720548132027126458736793138693197400175116308480918798979052168711953868210544556935925753302502553892565104306832694342307730825793504271264786729990146315949909231469591563352920842898188900587227805533133824601627286140369174504420703927326529267135102186046316861197426254638216948318455440906257180221854270890415540454251438543175935837103425348882307633654655121255445628098754781814142375955901301834658842183028596533392458377844794910354024814235140356444547477402403637016500839184203657053229765197695876457592712025682448186321274329943083261803205229589034045813084621683483488933072008327729458532398481878343819271552882375706036486107562626906334892734617044795062689235054484815785810556456689056123963741995249842808835595431999218893175888063440909443129868428537789918079764158714572767016199283324877228780188538541797127188870177975452183164371401444878572445231793271177710019813283114594839777631591441672666553698563838414987291837447346973401013625564779583455841099262349020067023503213028598214047254487399438822500138881481832409072458526631944465216421537679319598438330143565986570461116904745281398632867402513507657823434843062923238331109659744536554134787750402758493202867146428146317866796098988841311907429682812137357572957249184275180279553247638456421242613264870625405489771136739530962875956952162789946320976665826408861918748923736385052218516904012746344629369495762067037825619062797277199269319832103850206697215430306159130758744476546422369198471374038461202449118707796970046631088627387603045189698722624511175775058083135049227587634165326935332629056237180259430282683352802092951043800764737509739889252591583708579200582576931596217909914460133611748572998265326558735318834925607395348667179708336045561449363753759448986607586517507792842638766098035705897658774760509072464713485513355855531686750679725870929785515050138654097948848928930931242035688308655130305802328362993878505185957899057744652792026077239716252325998758446298470503406793633768335994025563601061920421775698307555057751514052805776201442670977221066804817143276447032658302619930558396369445259511645016650109128166009412796065623757835522429379507722084255986172354608001783046034454682316210982060800499237102024756180290265579085609847230436515975476634746480548677035206025644740081242842196368607970308634013788323194613124727370518915001260166850026261541241415705900201374244729434209415492213742186866445202587052568884429932337946477753184890599824836105298457514237623612058766195415315192374392350643868170969673400597255063397857985025319427833723833106226195376146213232763298977791042575115947960648472510537454652594921360553350816385199602540216048608854052749004999576695679765366329300849430701896076059368031500137831423913345571896055254134440933784123515534858904113502815591327253759653816029471246724623698414687717440365911101966383577694908799513019774201347442330054183760036341074399448970632840440103588409487861862126546749238113139095399137205143401165426582765547753233234643296302922566683364474316973555432681207261548919865709162444685496556306441855762647065436690373361712261005710344481213306256010877474246324314178500064587478032188346743529093033475434914834799828298513096919898219922170199343653396483544785306915260604703915384912972999964408206654037407434202191382907440693410210474959032116195559580636330880783142482993228605250740542187104645998800509243784810188221280422648165328587534263380883773074334051224319890881702508760256622811603708955326199547982279704958399915355441979874094409360011279492592126013078995812183707701096289556782563891759306682896581329151428518671183812786114398498372872835141910687598137997029090454031987871541941211962190090051791946605848151740914341524896778387990631717322291757753848245678420607584873366312433003225575087355221510965594543642111881258987842700790886591253525595785409827317228841962919353319879610996439391027800664513280672544496325472479088365874816794538602571047981459654369662760862088927421701773566374727271700142276767181300006767958570872506314612049124164847300915663783237262989046047782630784605498734215316480279178709596648879811150414774775835513903340893984214994354682837012834124788687814141452616892040547884820450818671696949108439776229962327480111844031116687446459287550243861702614290379381958504598606843423292734485443162429004799765052470534733065101514852377800493400691198558926503157216646563431134579600436486401035590882481813817297862700214134737044794761342796769771930257774988764044528134005804353426514971087678541026219907420748729912614589390089729607992952188401285706908139796469300004016266062807373943276941588875352407622054874558997718681775037685110400154083532986703201973718495582438314035612373627598877794130959277390564476828949170778397992863685715037013869807960186458976344952497462751012770959477800151964493926714457031416975780012121620429333301580730147253863540630703359177327400764357726306394622704398808133192446520014030428044524561235951925072327855905275533263098477602345169386842799495661767093312674678412096729365435305207876683397772312705703449894568537343441153750443464821016699964205425603938357854543395864852561014141592090281433594016134138355500200671175635494232172353232993060732838458220311939586919203159141688458670001209522428731420872936639536478506308085701329930952563408238027123440315310091254161233524650583399150381607585352266690636228490491311097601060974604829538874298988457840166264622446264760315926458427926703429915439731292295242746381604841875546279100416241340444485745513736804582486844041460162830309412732640220469370630873701561883198449439966992081576497715345000102259349013381232662117820688829090938986820323670244295405889632941592858031183131858843816074813767089956117591444635761527584127385867544501196828411205804140461364623749873224235802789252246492516810582442029885665466717757421592821893263862236746394134451056541411823957109052968106019876950610690383229784375036474653515366276022229074198661111407678632679341549983212738594548072852843009140870114316926817234802346276618893932955723299951887142708847980125023907313282355667459861585281928706938884458783958037055797590684251404801737848006975432162153731127487242425477902447336591481184495537806983974132804596953576864499014305313751876072034639589750271775857397340043280120810176079909062200441798204807964107471115876418052376039925167801871620218369445013088614977271028106777960687393179700907229937614776802181706967026909489011817358720008247595650603199836736801038610144722221582114735555929827074120496455874639793044254825698637644645295993947993978391973971987106061145760426364963785930798036903827180882291396703801262290447218911826918552587074165648636706213548761719743930404099832464430726922358284960612765890791453284103974958334998976821560512632721197733638982724276411922129429542967386071241560416425012738849324561572739011997198336772957887061595374795748425105384980671812207270574650537700162905033976179142267547571445847190249904837229172708557387528759025461815465258419041106855344573759333290203655377891109536867617435489807967202052145811409869087556545988669980275072373673450646005462447466662597752737955395569783352040165331816663553823557190912142190794461859439591680712401835093232037060760295535825033687665165288326767103294733023593050637100385675293771135545882962767727658029344706370151356771417341557160682740699092824296950939579686206023406903970666282635065278375204087772643812401916282066465210489399215213066940687883173888200946029319915364369613380657562669511853844970153126223439722927542855185900354547021049719998950498055648914482963964591774376495944517944575152131211818008315865514054488027997940106164982901006282116026397177214140561383286211658600604263540434567134532892314723216704458190788415525007237044272874740312136722390936014184173094948762262133951031137753731444955568225714595851566350760518970839403678263308627712137764282336425227162766202723951551828804090464667855480113624966788063935005055384610439190410443047780331261770864452587934621069931882322476265922102458789082378360210253308310573820338746232907797692350578491294924283859070262434642904497598111312308134000059987748137973321963978115781949296894509518644566080261995890607183397911387169121121447145910573691812112736033717574831602144994701436497200392129366779304422784700107893893093424788638680417128020727018897055617938071376733890385036911872135924491352635271040655900586377846961939507528480766065225979659852421706558371338262551884349632424206095599294950161779156276158209301824577791768538897227359488845478731273314482030142981364106486292802484794166347529439652093540318510136303743636132958233694593112814576763878118069681186483872832055939527456152997733783594381495485491566887859572010187025829218275717770151010431111826410893118543863557363888261337781404973540178016832682107834542520802376776640647293149719843310524792025574375976891233427965308057151223077157509302464016642355192825808403348301332820147270207385959633134648256909585984021910101046233603136310293168484148300497053267767276872379706100195096695092338290662143257461696137393677305849085184612492406054513802766662132047508644243216215586544343641483852931974950907342168592874827317709638783568545985668245120326458533397318757579208434557194617724813076628298218685453955605689141863768470261920597975872352327141489250765308458416520890596753586781206604127153655511520747729139983749536536758275074111793719840143199010756903785665683528304013262241714954577508361943508556764570960048129714242613585478026928701478429412369463674048734138066873822566843723571815100571106775066593563939848199711195809444579817617561848832449217856988122088751800410620969251943343037356575438035652219292868545728813960581554123764481720615718770102914772209862651843279184382709203120170207738962297879217191345412836514695785961372250352199381035299041311911266447868483447350213683767235868323674758836504057843160680409940881039176913181749336300619851471840265528788368004723768916813645526411126988381085653784615678583982011677657705083099939026669132479509303728891255201422301529442384566461845005850323344497028783403065652809253843194682730256834458721278403510093653196474526109408836096402320724546097800633604488050749700582420138316200049967653244575609104062493845655528914983845511251764450347256502163074710203961518671939588418460698901062373837999869269953168625498637111004057995962630990414387013983466746438053460779208706011838370728283988087952549384923203202030674407040997745058247424824443886294025428847391741260998413185261067665697261069043897406457138895939625456768418882746705099133790516401952981130978488190706347402435791788645744464593885987341910226862273422475517581630959214128930421918501202845143470117018737844791387507527935495489003977281094903351472903680925390855121631682420287826661744363551492317999739141132164219473364039453133341835524490273751744049596586904083975709568698779437765142476789297135455259431455908984602106531213609494255851620817388055376119006415775870783672531561082309259277565536573128309492169377721533508167953771652651914821268236851032636802518979513013552612428240310726782396087432351618241502366929503068169005957913473212473556419079947023531709810635821028445681695515628058193008842223850035601727712267369452724398998069854153184258389339135886975153997110968040768193304541058762202272097306410838939807298051705542558865628180212592797973152040784023998001834459305452338435821596196358309235594808783886891106303941478510871592543549280124559926741162681282354282779701017703538206880824681493757819005900069589830737859116535405665192867184074658888024447378048955619083618620657501686759578546494967939608652764032347436371373932967585838920223955608769549582385167900790089435045947218713377492422351779736602831994505862932318797085292212062198595605585056633389707068538560408196711160342307029022523165704824024649866517928496182834669415205955493354573453902684847220178259894562219290550616889898371301404409172844279089642588386240118331482592847501200722208405380168645130029346754597208262501645773419871415561021846651230988551133226811462579722280857387912500669840056999906141921698877765929314281969238078188898113961918936834766823942056988607046277078560145632047629974377939957772983648121659703657789923227060608808161948651888954614422407634138287772141492111250152836367022094162771506698123783334145124213117766638171812582028941390204455200157087082262360007759314054129622967162178687657984449567803697896076165501293998374888281695399132305822098930760419005881356589121776042378278086692318757639521393046781697835813510156803558138674261301018467080043670243441354057351517960422674671237690247367850324402249665751236181932855776541601564773326010005792062088296620775885961346712803525320299866804829100220785205154883377866581322043295023436784846040444649293125902076024013072448480779593844240819331116725416401508333422655247087470799529877077982189351019062347491601991654587456334696856293917058497835251936578613178393957694660921332380352580662592293110856957934719157209391890104435836629109969486411570850500370635743578499130899701508996197485445286453726637785086009695629779686100773176025673246424144171041321143169932913979464751486825961009374268489023766216570176991207326285863970490761009612056262010571868702917236773364280137788338800142855173832372236548959792098071388493440357220573838014153851788011065819454566032636200065523892428651172298713926972242119052466328687565724510140708901342009176961838474037524737142965453402311552546598216258218892090806376955424313978337307281071204378846239832817085701889263862313787702140486780931110507813737484089048571628991920810562983565335724771914319277931358570576692223317502833832663344403213251182876246966191640813658642520372835039521260264983952067487863038183157181198641363636655889499645765384607938927397833718378983050934867322146165061098824773389270272759057188369384180531094998764303233701557598180611123548766186347066028610953681618293032996472815836527592169743790643354072145526163231659791683853494674994632897731430106603972911803693920513294157180835714532584876051630897831443615444738100254242556077111429867235114062115219194966293577221142515686830161749433949369634261865859623234000505250482251272466676846285913742450158808987016470106734319111544099027368848510356673792645171248021669189505472572754240012415834037907829779497849172388765941155977735865924849616719220954468717458476834871054421463569039394726435798573481050667640463096897346832677420624932272076500107301051167693336048552168188007090957823203680079689849088075715812425495987767045019826281248040567945537371776787382603499287247154114133191173351229775283849262974231809015594645246209966471393170887005697201527484145149821728914417622937559379722035593258476547535995487300098208401508110622675708558066295344925195774635486402988861266318372185950799638429032982127777958292775089606310077648265605781220851716101919045891927022408600771940154227691566875509227869052481965091839884967842532734868339443377451778195313870833928751967412644956126358161822908318892002431877692596091082817301792100956431449346094255509409622387631367182337398191754778185111578102638037203003245732506180362522569718075994788145718394018455039113894175644938049300247292727537793988431261131852385585967599462492497304309880786394826784774247674836842850457981696674788900671207355322701327959850751523577829642116805762824337711408669304552406441115835779492410449617459818326668665429483942399898470468181632904790955601524048461882570980200888474362168372366785100517486804139463283847598097822846242226724509094916159563538390521951920208395503539476319150569233891187384582162333125354069537517319282157780353242401827963167463234090647303910510409176818671589658031953308054796594429694643950835680057560393524457619886146718675684209521911739194593689689830757797266009328000820732937485857181130695348794896260761558943731210928863372650324848614418837999619643423556128432914191959325257820499541671645676655997220182940074816308609314866708432825482666873549855000227527725946735168993573666886644373383094803185592592585036821978076726091469915921533134124586092497990656722826912983929438091092135064923840413433816704035455783220652289619794470112760412409404759528626685789194939484330814393673351782783467277926478098792650136295355816429502931655234690410284990520193785512737184663734946993668633711497764504033580348795809921824181692420213998394517639394393187976332590229575787325860514402006158224060406837099055800830341651946281980524537842430765583007918945762623862198072780059358545874161822096418430625888564749712244702423904741818006061966697300269922315181370919989301279919044080965956748245882152268051609503404615793809000438283801613229385808997645979204210032269294215664971959217230586612512215406973090384121993445318193623860607685887790802211513356308780427096381486717813644307644494711583426615782799360140039578598188193592864909825618446208477973332559238572577731820748165598901784034311735756551784521316290517506974821558748300403865821628051514750477732240873775618142557055169026577116950784465153466498417280398628550692711615307931856364561358027706772158740982178432149969095105562635690549586884262670799108533371421732442142552435650767938670052985535803912659858761733689532784190791063755162608082231617904671300367648912316399353573296403366748951737013839198029881274356342481649562820538322308364990852464853707128001620204091885778383171996886832593636164313566608376730318820354968562652019900737256870171487650382427126761583108679292910238636628964902268603019029408258305937151676342912113654545048298238457603332685495240394476291050605464671317079044534594182180383413294437310889442617656542112146052845613815373951379467493819430749609012356415040758406646878184027404582864481621799064962683839345880729110312522227740892888512562540822427615505168962296748852936056563660492333248997040071290507532263661404502961557874203394980898574667729790840956705020186209617587480694636800271328589768839581350679746169759566305859581523604073349897142552005901315204540212956752248219871684920604916349603132849891191860140669720761387830755541748651301632041264280949263578569568329786506913751722690718810695092942698608513840072994294155733905840807546568498168922080884709887636278809318015357123356330908188665336701130909440752827934959522999782746623297172950400748191670416286208230820743792740870907629757137559609411914382157406462026131029048679445215372313750601705898809855366742906045263556748756316502570505265934008989275319592483882172758834194823703398720105575723305743968269004878633364804813090807294600871630050462929174367738843022640012566375870701567610377305061827036130359242361900267371694071217049470698246928666727255246180388453276596585245740634821293973268976291128088414895399562490051032314710046580922867783534027139923346902552028744455900313114563530978471866719463795536561523337503963929179841326751052619032745993669741790310561088500313410237849068697964127094982599751160178370489067338330905720642882148494751548123007390686614041101066428982249440310539100006942623649509649795481594054961363078518001795589010143236581773760275977777045388695751823116318218466888249353118240227903471186240773060847352297828633776499705475288827044809273057151799477790243517872935133127604657001510290937003197519896589010141222793117380838771469037016609145494396130404760641148888766265151293706023752582220294336775485681347348130792406301798085285479017643699966541509958660609180006218390895075013628129717312695611098882533926356349233466103246270702539783429967676982578811506714283337889265383503220218708467537610794462248068803236981682977322536557259074731444429598319025566358221805418303930916883698268258256629166164200149860221483856581840753881766820948542273776930372863169365889568416427908634372433227775295658064780731552255909690772007002123436495168208648012011013221165302545115311033865520737425499220596718742913344299888914617871583360980667904765296877143453638541390166912573646544441713734659319380013387618668870609759306450408097614935089702233224316744514270177172324107011017447343539823897225967408090343189539990280066888162332792146462134151793418238266897408932572422130237585596016033726706789325763451991834510761697658175314091679570871972417966402702360479329730635461566986358183470928152948524269959887442708631551018319454827700723482611689718477570048962513639162651946051097827626241414285800771170178195542232736972560277445917731292723943156309737277205242012514694850570712034253425541971675928651149307248340517951729037066439984212583453147013820153684409111729404667704145501847245715237872973873651255769306170663768990656251419709920386737967177439532297826650430391125459005438152279330438238041206573730934693184463635451075721818785361281375498878406745263172374995545809830690005345145935123518590414467837787048390121558648498655192225136025148066187876817224718347355838292403877389660902317598546132517847872761910896048844121093172568679808930525736046712160673340759183506659288584729901992382195666742987126754882129197275357869212073670295213442656243223015451895789135282659754616070868611733058427935143412053354098361308366163525949929544081992795175529919724625839476108869185238033212661189726205972498433133761682680981881432001724587702302871523369756530422768624875884815236872561559634793939748523506729795607772867179649399762447846038044879420959320215567693095791977204758380695475377237584167317706510533758070197324204681481023928580812088473138799191778342376377511694893656348305940307162511858653590155091281389587683628721449299968074300447612596400046887840380823134945947567482572237373629343492244122685902573838218501867155974147041971856617067694456348923238303070864678000439599804819378652622528425819692485524727938389769948861014982786826185210401882992703467817893077864399763495207821872645614800854768563557145663761394608870132184204873102592061857984577688424374117359761640852400587445852652794481934108571047337254456898236334726342632890358326674091473176430943996242721287620367075676180358019116489501901417235252982460852227316502536724846332832799022073651595179248586990539669410980378173436532575716007976248484154850652529978996313670786262907296317426333575127317211854100378698441965927979693996810765705846463874765034173148723115410333581687153510344703187135412542314164115867144075722098496822406243635218745988131215551478118648786073344301854477656526530297822394044370661376052933658402351192237536155043889104244577019665347060218005710712116933415531920545419503824485591916838003080246704469563654442528686385499220789782035592551872145927088873975350085878152960122410261441822568089215285236718117515166380492000456163392342499579664797997687354416611447521505529532095920453088707561236500312259173921896047071393380754645667190039519122194884614889757358506819720467382882227822806767892505141626780415031959434740677211218280039180847940328851160739916700795916743206633774263916156867846119762312961557958751918764621547610641970954859420810930505405351919086697683477573686063597893239055235735114239268982931156981633586335530740907468206923070689891834819149410571182406989771802999927643542245811502801415268917303070467180258804756071858170474907221710118214507680916613277101132356580859975455128498399234124270548276039210025015653060520269911563567130025821619932190790062530999367501278528369542832329194101162928941021469697736762352992619151694095354299801009985030961895481911543678359568587461479166747105504046531352886762122743247635925074191400111275291078511722584840711748915272478318116400355669922063518061342933140165405148900110282244101958198640758839306163179952963130215154087808441200938134652648412893886403355478053592919310436624775223077139895304224017733645919822095270339675786990408285308172224102712751476147936055366005575361271744438955880832844712400479731224082845941132833171957881478759758225592396007999425986916809836929517116928699013051285854157748661672154712193646311589169679920721106906883143093623964929411029156850937191573172902553202316651047614573732275774442594877810190394686793494078753032870205823652704752848852390010721470351913667477218789486359858522260370886064030008047316727342777578773491873140794699890012398722223881420539074759218349736290706064024571674517575535119859054440259187958328927501424803846293712905691302342011560533012683811918237578550101435191304104060030510101543623488384715007240731434612529438596783886409745405734310449719448178719162723875783211755294327696489423970187884150557082731719452898320554824563361222816411465436509658155311537430053395891614686364719123556002211254682910594010319331959041662414992825066402528499320582506272109522876699522418186035495008849325079442928005435842066398659367480392583827297796437598745811680948837786379536846800948794979834322412838279001115357816645814112041816163828214439104389564616364070170386996837056634723333184604621543208190915662195681191451447399106743742036258798592771019443470500154530868832826317766395724692995225714589688288779890132897951499020476084651354016043808346926316841406708826477870983867416413710344264198510769808796496158650623838908340005435279352229047192985425601117662363589550020389917112966654348559589970388685626317501234536774623615523465315062246071516934611519841615195879690352987317372769187721993787570459723816921075463914054861025530457940067469066559633914292366872287320599002763603182970002589587149882082241106345769804085047321745404588630655092243658717891955721735664131513205550996649403216910313622292756402302904924239894618392691838597228928744613017687230014920965682429270768802428991532344731958755865618851834680118670200003123726261338867561269468158590980864773902019218017416478080397995416478260759258282420960393445773121837930729447842254134610190896456323755886602158627336444906031834809782614886595333902105994916600535502260183725134314013123342496261521210928941411453362420831576381527043643268618122105432931145519471156613071079550611737766823621124185951965322057790742989537672964788161712466917866254483310370354281437864078985276009258606311207427905180657946916568590329947994515526012644487689157471755962504366937298856704344895873547016006933330312500264953578455169435295309834565073244887252683281701855620692350087099637392961545112802120813688875880064527671197094341790124228313331164073312350951521717440755828343408817768874155420730203935800443596723883285084731901863473306431039952559695001060430692450458968821853020444195535442108445572015466031310822833363005761200187604704235559058434803874841472040650490283347842135352502421291694753633734358065729580394581951467597879352222979320653413500503691197947837871193579227626962346588806373663669412989575785711495051576066586864306116639534709183056450564618410809986037273398233786334528075815147560218875919524278215297787453963958803602114043365659336659011978367614189034852675144665772570870882273817123951743975351058931955710658029420515564330100007809142381839359066037137964774564064271946000442844848032828647564590911574697766942813018164372824708936760961540284575532142634897761435266038167799982618449883637366747332087158935219104255820371227043986960796454683216838812911675730217463136818896174953730352319773291632201174146647567056591210067931594204740127906190726381262406491154558776928317414299801974205467701135188940628712537449698279722466892709335895383115504654271935347858082263389706987841992595833313810109092180666609856264928508071690537293856999030472186785496662993195835484299649447859215555219828627790514377440619353519617422472823704671229919279887451040935876302080543354984513698105298051806841751775647936974004286908835246544018375856555130914998667228096809139876249237316991483780549821999464199444321283384015859322965385050915834656752588736010844602530567219728310281382641967452735938114185637016067523612696671543563541501551651121443611811985999177315010508853356418116086264892521793189418742736555853236987928863557031100014540802089362004560588838362966687403475660449556535736551545922074933190286110385267529775173663863257615055083518074556939532318442347767933718261279416675518635746284677444786148128355341241581868568450639454539006261895952625787641261632512579821668834277540186752138661978552040289786588418993596183216179153531826822145793914256355160562581345143575720486314869023102687513671667362702186261618595565682154550779672993831268319871796293160981667555175959273063404629466184053187210738733918201690915209645642399357218914239915464943077748281188891655030299990837514455415246532793495029492989648335364722479549257281523603232397791749584868947967347786317535089437344858170076330443190300435132535903858100013698786912502784726590559506902624096022409310253850776340137322260662202480842323021843899500543198551071320134607900051134510876097887923027867644698625082139414457282470398345341332225825231687187897614530177073405852594160559271498688125285367956557119384439937750040192104397924865890851408126206376984027659546354125128567230316851750162709498197710718409963478939020874847876566853549580849520169079103557580498956936234899893629306675530010875618252310772791726147647330428727721450351417365590405737354478786233297135686186001836009792992220088617516580667888853471260581817539116800862010402744848994696809105446082829876483500349566155825518268573228764280429239823373109420309906588296350178594062989234956946176717721744933701398971762226894914183017735733445933424870513843381655241161845710438036775731124580483980511430180756004664479820039403737159408010355837009705752923656282362282620992662060723291980604677380600797574173606552206908608502055784103062623359434604275102224994634212472776484985013046956482028047286505367604925505359196859238999052599142788406089192890074157963693317734777815188893353297684241108641571113826761130435247037555214664065037818325316835768070555710729912358021294185049240764892320275774111983436166186592988874463867308891049374908702693671449807590514100619094247421364071842644637009324096426128967530090027496085292409570680201321983531373040803113798633027801766155175134066303546189417924813595368490677814888302283869000752763846785771516218408976868636690265553010677613891558429765155090740572034860060508033275514527164976590798989455435780486063975739086004778958902499205222433353725523635475752821735361122299967820086022085513100297342375162890049200154116455908557211084040228384891576478449580865781640677573751911745889421229449386888477707264297358586209713654699723455002232909563733116946055291032519281125090791423948800559500510615619870152529146839602937027855577430770469046536388140598357289532398770451227040644026932565264237843630173036060011321251260889942900876912364690171336703449726967761157318751499046174198774652540328759469985207160379785057832725456282874811876692026479109192315971255217666235127454453047834306521459880434319519419125840850114602914693565468594335971614386109246310034497845553990983346998940746190891493150131109887131152996582943392405875429115700665435898062082602807129185879994918301035047062376696171297198102963406759802356615238489767293537338950373432156269778176094695460746191626084368475011581724188900435129316613097743232375233263460140335263299094036758291681157018018196146561100844439402046785156052552694898665709744616628974049152354502516446993896387476093160541572142005587913341214447585804880306164269755877898988262491929880857686217144232400000235068332514255315490994312338022424198465558452743303056766530935015519196375747160300874272819313131655220480689302262469837097194431195773393914115537877630861335870743766324472742640023676655919218519077571933457690537006779473459311787175536819696226073289038176213240310811878979784190205721339962926081441070106382645489065066741323357657002679227503563511043620935545324382856086453409800066861556600694855886375281247020650610734267291707031799932143925072520019878007258720469921086269784303087553634807605804756334493880288813016366753847428483093094610317394775289609713133802406964080166508155329850123514208119860707429126034179813706991807209861732209918309040144252294032118249515890147124631496797672810029207880655487611075481389766684252380139213830242419595709002397518724677362426734786548051296109166455442475034529397321254666276932471528255468804237900104515109512437299095418826127975197657045364798111024345385467494711134000940570045997119765940707016669432980437569950265745194682150955039197729675314163835600990628959876445247587626188005639601115384126426403150047318137411083294320096154073432836777400372387355241674821037340137721466754220458311216885525841811927770057883031622928952494874540837702656931593313095121023731625915278054655428111059371245856843389519201439833757690898195545268710287662456385150909997812836309402457848913797302014011384463555472061355933590462594505711676615924441921917424023961205783321253157056440460260336124090858349424029575849166542401938618835391399184075331711420145457178444591431535930088841687895445475393158571431615607423049282067722627816553924614190449121802253710664260187452805992896711588926538597229895407251397214993763475304975983876023812686620822111083689319835725619177907638334837840735104992702520891148295651966035185961361197879530969353031016446131805894126472114284062367168861885923897248374119721862311646794617257272582503089851740412115597281516181428929611488097627279781922809216896330447712255800181296004423053993612223177333220351456314013149360515695057298386558194184451659543778627252930562291049992833277219283749464322213254600331349520660405665097943068742038702623433885013079841645817195707589227998166952025386258321781168357706885318740333923071080002414063501921174606192572805525256472842122637248980226273047881168403380737811755314769090101154789504771515421681214147965017311133080024216076744363169862377534483841669066862183127096719909755429912677351942500997466580259519255428832345430875754307034332044863378633534774160376145726479543165684770950344105302190825757870938116474605970254444442537115806048774668670672851803997924912094990174182526012602175968736033604490171000891960549610785117460846759195337030019281810007610018801922237963530783803437439538343708408358167430024565439330065245919277292058986120671216339320945684409732200853343114992217408472475142043317266027736840140795711869961084305943983545122239345550918155223801806020718064644921102522649800085960894685884348638506280126837610356836331846765644460227498469708589138477689208019817962765971240633658004522562788842810630532049972773512798107986395587892489619464366040167269956931746948491633236363492618563453186145496937853733106319930976186160127351420780659539550430510335087082320648568427352622840716854090048791123580488434609732351029943446242791306164284186804105193252458895332286470786866296680579157064202423282079929341624448198497283112582241771543583863030701306783291137837236527541294572629457741680163912317480743612492519648182612519927176591619151421934682710950268980984261787198498882538751195999959947089654225779767978611018894697992189404006477033675027331880536086466976139835087030545837070222697176407915979179697295484445756309178773292023071089431320716378514485349527471562775811982955435851852900476181973337395671144898545462225240301136520078755823508810106387546902487890118703275958043035245551244972805219532512680312419947350854294257674546581932414538378205839215742258806346262415939977248420912572965049271900820957197611604657956160166360822280682649489333170119091335953674867677977199416606749633446956359742050761194390554031715016995485990527367960913758595777186619376546893438547236808605037215157048396044163531263568573543919915530061564360354884774781260206440935215186554477795706840137952564657618713483694294788966581522229086897632958789639346056130425366012897302886289852891915238848760583563319046593822099685339861627634247099491150866721598963987939522620944970270677287170793726183090588614437616974806983384545027067380293204800560686648884155436396016709901233888223279554094609810676650634695862045046168253549429330807063360216210358001041469868317712627161188502062932622789041717191719742090800923172575971826287638515692352404686247558794232589992970523776916030395835680509129775216734012503286085319601824618623316519226261990009329248250843952679398695848176655262050293363769518232387917260515722632425596020467489385458546237821454790575115149563363412022644116924279634620741440326379234574657418521482659370531952505795465702960966653284154508757911034728593189362096273473571481469421137302732570563655569838605620897068962234085645705016583919875892794452345625565220849001887677499253683420913155076334638085439745891319288642605686618927169345558750668318535656955962457166557395337847563840278285490359920106317703661446745363329093700442442267160096917769756289974101986316151777781764818643703615181588555506259948437353269121775439374794479207688681493460139317100595357347194512622995106233252052355169402107162718415961421934417939682797614678900583060832661995474625721228418242527630052830245191186441812792228200055446598231692144518817064984308195567518713493710286708197329001982363075045771466351354183527592757792144155635052982701192243590940509111465861598818764789701211940998680775797234775853095430844769674158970288993172621064595308577063278645135744144268564686114956605073620098603772775366676621921733650675332310447383927023521278402667368199967771223702447814166306836051095259799464068145402891864884633379926671031491765191830555624120965975064401975327537401478592516943957232498873151362754042706877383624543206238261683360856038453031239954623919575843116985622290907753485769099751593056361440944999876916523141881246745572593940577570929250395139997600811443646160166432838468223506612322346797232490791136068409152525316210803007587423392082855007165418603067829306481476280547217516016956923531182968032564784354392949894724428984135637654467945970411619471085532443808067218841150421422778066085217849261303364681833964084752810563405428923686179511221272882411615992693288055492241751589165395558717190841714268058397342490917884095115530032496174764376145064348571766261541792274634740260541612771291321810263881785830089727158969629850851935822403515267789346399623149934959260485690167776450355373861470609173742780407333501707748848094523627288092162313192000845178874730012588775003396358355324086140294059722890533673491872626658978183339968197726545379959973932933247922247623289828180465759225695375387423765707977270675381167895833619166165915417521376244241466909584154484347057157663671539242584197896928154759290582022281791446468691177503159520231944823048369355685713383118947948275807398457813641942092290973568261843239639179315340480764326892502958072379731014582900578556552299408139924523539006423772791418527393014664550464670459894641595671581620092959349829381958813138043952782321227090876057914615573138979904868316632277130556936251176860963219884632295859509699158233326655475639578031322939521890235662778674376172964261264175233369496799532267343587412565826549566611281176136821188829673226825298530981704622509057305423867344842593435417049437751871667256137201656914643611371304021805888061383038166091660270932052820367504120891797835054513326061180135619365732419821878506222494041746038411120974811614573881542102843073643191938872017309281558250238347881786922003723563871026848871930613168869570133022894307631363397250497730976266608194947182151396947025053501544509630317128026867627256518062087007395216476523343468234841992336145108624349415042740048191965927912028431273369908777501495202953443878278479334254773102125723163431599135760462087083582887686395001460177992047696791256854522687632056961717590235938185620124055652731896247776939754208174868709783512970583819461183776870564527300764825862746736414341977826277244403058543323790319088473288871057179839822354901589008715671328455182361772561433836895569816261696246049776577572704937274753438251084664180013438332509083873281894629927873756113370681453894770623405328647208897695427485139251863287671583210011004840918390439428321819499631438439507118873796993988022632991844216827050558327061709407722380286585793239497845461559826568732556394583141691733101314488342068333004866447444328485582155324817917749392998518938479089548637033670674904116724317259019763980649021169823742537072810247914466944869129133790667512716502344130181269029856036733134709493577276288038729530925017016923520438528819291182099885171934535315130313456844486276850890430898968444927273139005340569807960989106461948570105754293357347869868365468818690424350426147827692748159116446605840933608558902494701564456643731344941866516328422969464173431294668324959888320051866572528267448464165910176112303859110229657003140150900172259081679478884736809763981134391398504291442932510237970519539339002555520358846038113689418240913560321146573379521172915102725601926494725333780620681725313102421023079625062146046578972958540587598870668823564434047716653353894275936560479512633789167221475478138452310956887509943490285895977138935787466777958719418852111599709046928274411253615730567473387553704090488444708721246184475115335772944169623910807275465886292671193390670254619452116839428405851429412540895173789042393967221102893163614755796077253787527368556202085142996211450509530950065056229319233074370283129314935671703427721720402629824185808117405558367610796606565527089941808046655818855870657201893492320777690053275012097503836678790153885105381191273460109779724735605892052702589620346949716643922333482919368694976196131743351402931777503231903861379192610911021905136648937901447715832960150955478080718770901759265003854167282978870290775681427437746233732712089751099406628709081053321950274949460741118758039839920173949748452051032731094013226213024127244316684116363141621533819790972848843669483882551816966396911963786739303212934983157020008046788215656534051781128547381920878500259761443358202491010935366039579940925799804213443876953465089818186958884392113116927402320975218635337298451713943668506667094749783053216829961160783362500474289432018089156242001321605421931852404940252751201717731205972070582613010795596004872426435171613706889284980462903425273127234649187566576463468534830159901800504940501796779925865589660134611127905135006038930880880242986403994079959730642450999039628075322588123308010495472237021759456413148499720407767929049656850244243324117543618893856690179112493066244756566424457372135011897416033574972590715388533394038324951165293281361907217893406130014753073439067819312753269351410104498782756878258205412684517033624562593183379193913642203930069492389805491414591323983515614403359485387298968383000102422180385229846898505389319433906823464059934097558194102406380071628183492522415262385451304380295708117331612859881336031423057950280291352954352062827569713901369438891395556291711852051142611574657646306653552266758982426685499502121620304876794075464741182105856543191234610580022624956359530818467915143258374928213724008712689035485804438169720898579995625349261190122350093255549787687818241004099483082572903667514409425938496977832457202822036299241520660973336913703775845111081355216403446204181725421785218603079991386100742884352291156543251149702733167487877948433811117010098975237367549973974883317588502964594875172033964676920129281102511569294116657332028541687832890611882107227711340500534819839946213414703576516447980468283102734938034743733330964894193769146972167695697702239649357876590458196229539334820913776932812110530483075732625444826940452891567535804158871371691614177528585348325489063849286429653323178147771358852172325964193070744251558101593339474425306581377558052361157391760002047424890587624582075657207113572158893002176887766802295457573775973324274550059011828621271560280337669650594863322702717398776029329711038818650758594963843378440096686999487390642492560875194178687706865105641008215600650506481930185267383902389756836440745592615869738008404883300652092887300787918190585549036796842126145534478199434182427073016148278243622162814122240495485129977679215866201470540304078917026221670762736844064300630252936890959659804141337797054035638089612073933225835249943247817191800597627869812223832309589030703668419940272211546778294012115516937005210131448777315591844674791532485880627601512804187215911950918665527232932651622734267055264172022221488618981819502344786754502173407041386275348842180091277706272844999239496314074408182106096282714253654028604150816126955265233705923758271288107908748977976047733636145686767566562335935957958909489373467992384650774540895366225018875169823794372257903306682275251885586264645011599478682805998343457650974070686370150897682522441458175790605681254755644090321594795658418907635099326411812085148861604254200685728009177101044319993446315100259694615128574894533557159521476783249670912737190440995510830377343832521776860216977892752874095774898895806401780121103093581117963814478163087258304203050585232129415807130532722604261714561015033469050043598246179233266390509317311404335016528940087935527231757304691406636369611133542273848923321037353180621889116044125267470188704917921103846464778504118111071731311050028343770443645398596753524831469013809413467008871421232875435111264720949862886868490399945059722315687156627344613187812186911403349999661638107584563717388112700950241114745909768402903247340872341047583467402091782941666573417375593873421429637280679616131930691449958687505542717931916127800997945767608970761395249803540373876034120629722373178893331186903034205625654975882705198824155417877450001684509610478881252502931662789927516897041657421448682061667601942992323896954082161943872056148748583371778277658533798283889375019391476896257446699232515081076196121435152725134664871318214576164734920446760693530810836321220057206210931898730818574023893047189840234247387157438598365865681173853113264516729539677037062337716401651806815879244896795714986707644488085119308987284092574517322409935637437047959174931284644366119627657509133624696236255651702662431881926291771778948537756204725359049496756264230641145138751061684175984719459016485809813289013857099339098589072289161226377189232909963076811374799070195873245842866862726287790230774140869835820410792506693814117596619893424795919762752718249579294137595932518066722130794582232037088818983815640708663544686829757168017204720693178512985433799740313395565609861453723714872770240550095460879587790152138685668211577206533365211101867547654280589539574444397814277517595094012839647314619554512300761837557052950951574621008360856023885682516068064807061742413625570765862305932402109255253743487184883562169154231531444190065554802148821929039713655747815997191112599232500900638646513064346726940656603710791632318147998082125673324273232590909100936169609049411084575723696594488200698750454859950677860569056398516890809300036537119575550432213574300129488231000958518798571678298440340621718306791759821968794151018873009433667354843547303037617993288258030885348463207497126690726032198139374135567385234871619107631688745690587437350311999243707968853482953204147673229577400123257626234234296650591115180166208825560709217651805248255597707544972783084625492846251291223066435822843141960421931659197048585102844080852390437478632766630725617417324372555899990429710189386333700591777306361992307980901605090780042368441169247653106792690584386092288069359447837439818837483608985535579394269994547596800749347240818659408417287956604738813057858199931798469886598962713199414835677581974818908758524515263103523357127969958294621855416581932909778798876006360116658200271907920608803302097664081560362436742631959374829552162681486156625529178149066135533453857349841521953640908613071406064441381096894407557531562252202754957641193518393079831157128328702823602824093344846234106771717485253360554095698660438360623797641753033545039055944609279461991183831495986355145312664974737246766329131010950551239712061043361456197600631776528115661413774312290023736555318966454763013290937969592768895851774726574011065558517344544719045031353795925458234199031087522109908597393657012781022225855841327029848701374286809936117614604139728430078414753737217752772388637321596429743497824568909196865570217935419979329774243594361371446298640809232446853068417955006251791045256008719599820996796935234058838851950041290139330990139754099113656368922227626769058472820292861166720695729616165750451556243113455519484087183082342643695740980126855859746824520240202976601757520849437645148825876034586223552502513926442207104564412742632143906602064173307634527921140836572849114297433165056890844915824518972947917667173026689341021666501655662462195446094377978610701135568980271529663779057277457817160001874964646460474014781830972884683331080822014443723704156537324513869283715885332742389082176990330238089059568047048208890327067464040591803581933142512603015220451405990805219505973783901119738813547536709407202392955342789281330460774164810798827897045872935551876312918686912770142364740727895216421638846877049271294157454663954597358443800328037598777544635807554024089335221357110856498192187702643433276074034847589951920193352529118725750915337031127100678861545358524532428421261679509117202354999499372003780136724921359009950396591363788734285933004516442525393611810005105006296250030498687101768071197688717506157632925595466212508516886500214386696104637986526231137863519416585409164302066116472347021594492977620915183566451747283901516811598983623563220772038822454872526599584784294339559331388672245782103083236670374018105111179733339329787498041716432638028375225599341586705190860783848630109740703102789972715557933366181452250244940712588243207045184413702083494364799488652428835665360505780472607317738000116169604284442631975526334953862485340412581499912759324995390961111426021210508888843246389430927776325694689561811281925755558139584265178738876904683018732247728744282774521161081826972336403626013656183025881989406520995425804321410078441065122159294957582856539989371381195601344543826307822881062659779370742257449467319258463484828955327348128573495650336334233064496551715530504534757784014386439714120659626678731205301769346361058580639584747913589937627457028296790746689016322788416194560186382424093732676850445328094511699828666263704344391742798139078837112713581216129686797283699880118406995595203065926174977019525488908306175553246255189603074335084387098805066989295058292249997491605111975758386692741092937849165333515619705673305585278645511223046332969631043928157204526792670698165892528977195576038987423100786915950958617434495965111323170176657575167908361717747374176210940356872643021842804035686039937386698313255853918281796739847306207408564881059075221117774359089308833962092712942136869755312232384355651642726834282417689307248291786912054831293196331274313113175447928245854666109540061317460521139400493886787834642982183157918876074711550285034230654345217042560106756566330428328182135617880095874574506438618650945972068022036921080826729519048179772562253138427809232479040107536990963333268225448471929139056839697434587710512440044039103887205707267320398972044901821060727656569289401226300231871542842674210222167121075802173671681342244015804216528380098551339886364251930634969355197854248851947405204759224627960264364559537364913629120741321963510618072715496312936501411373165843713040774201923756117543265665591430453214403936070305359664180093743862595176051922120374615752131377603929604245011455001311861548852285109983427368534587914981533015366433006989666367196432565169236533669205130588232283246750405675668900961160781577122832101457836934322956839462054345828180160048055265949496283655559645738971453539780372410495191083053655712028727342457487072879408051611749572247919608444397781681820490149240699211684249783392196243051634658784426981219189202855395786255602183092514297323169618817138285546426734618132528211169588405698311110803044586775035405458196307445118189366408060734250694373321420777018444679683474398705437441779052759041830894431659002737331054082449063477403156062055568918070186857951657406121327992921352461981772389197278067168678352834588597083616233794750977445608915588541998180712593112390759920525516950342642442960470226393142662747944817347345575445778796677253725927289118448487968916141238750680416538178143975973435326379946864603681093617685875176949812465614568002798558513312520066223525638043551091031459177401552984219010475299338857400934307091943519735222724821391695971499152105947168307328285917637333365531055716560345158658529720959372027874244440298433071695838837699042179456381398341080886024133643742547585263266662819120444765401714306102573072760619912598581451336083712591624159355733680480255340039485588643748567528118003538958290213570973606983084416838373164828207480860662532628974194706885313599307725597942115314498375590017301787043554696972762446182768543126822858888681829446155772671971662240248080764089403006066468409734129736419000560495962625037611815885086471714912779329153457151996944070058519987929618548116676561049725184763431745160349297769885166571749019191938423725349067468348629449294420491655143186593965269658000137290731421526280929200110975442951675495682657924926097946523184513186739755552534291470088246040025520624877615624693413315965246712677847125697027926065561295349341406349969533345752504024552191219609233183364173335663807000787827468449598479342694049977170425071937374738573523827038205818887631638481269089684040930950623077487413532620489799322519982517717267303027840922807262748135731030186275104287559659360614129518810213209492126347083184179601237556578131313166772641028853555712691704795585052241645376565899570650493354320898505929904614188154120183974204023530174876707040498100951052614584503567787968153332454899558257890602969612866267832701782816206425515224109199890172091961242654898222006403858490211017492829639784862865443257584209648212080753555289877959248571903072009316361721498500556728368205701100771507562599624543221621907178949743496981975729782368609283206355281784431549639039423645449354242717035294604805145962627371903078514095639492464059314783333221375868891038862868741455430148095671222107070543637248141100739216583526705124108810622802234727774469318573401006875783809048344773325033723020747772636824426604926478267796913282039260931576314993064395663323751407228690955610562281359453573387050369737176895016026813630960144953980579297656183748912493978484944817282772394115631501032271371187879338831907024867835656659808126608721173963865100914877849065558834708641284315622176770393671432241462716219758188012173505962370539943110664767435741213974871005161207138830662931082514214694183104413035876955242595352666602596847807811920834071472862551569607508608200536202062969417687146530391279591995854590088650187792822942605634687449623805840385267955956587302697203883368278431271569253326150472601219074485392336614680916550297836780497312897417367364358765788271726476354051169410148554296129548843193232251184511968828506968226810031596049354091768341555436942056248467070367600743906429819915402740603442679110693359027644331721037806288667219969590727179296835123645286286790336616918095742604837796228429320875973361997348314056916615875623583546209662811519406282613764615249232871909618769463029815012953607828272788627735146225502673473451435464678984228821200260228088526032024377942688618071713771030427207095172176642190922748957301572913302081755879971030633347967577092885979772632971785891040530940900180657962863564988089511485021060361342149822166460791598083866942133670141387003006987111412660549553235278318433996059136206694937220312899830656203185721908150953116303390880299373029094751857447090998411162163314210997595657895415918214758457622315795926115076226041509296628440954962821131556848542143491179577740979297642657337206588262053507723347233307088986393373291284184281334985385064875153439407874502496986615119832107289227860410512070034278701396444632715902719950597075008852352508102562931376149199326837142193691496178276211633228933625642367914827112874350600292492183012345195746622055703075654482257595140762060037040922028559643689567716325376078938749535322702696958249121192078793512875485460074468316517611828799588559056155791353948314773251096620416494378534924126968899448327210868760213832711161277668537314983304227260793020040845064923786210936869022060446528673188710875634086946998772389290382046394721484626160306776152262731025391665019797586426163320657700821349889567879461975617717655376652391761107700234584788934825304647673318217940114904931720925417601240860471188101859920087052711475032123384025993962515145506119561145128381137157189858683351843290945483778634595340481241789785371004097082696094574373776248699486487979900257659584123367660575659306652239828505532453480767588699058421434751378475172002506761512657470166879890556308139849523461225780334212927975752961698026534801152385919742254664270808698992601230901527880993576372518505968951338176555732380624790652920804444003049243733217426687350773903514352073392924180743922358796977293877379172614203142948684175005686128941392434624358950046330519728200931688569573330099417412373643828167331591603123004862133570994985645026201960454413170473539976213508209807248333393579074098930738067293879658364025953507590021400641082829706370192215404862869193925367712228784362942773619823040003597159684456388814385301114684228523021080721169403380204017375172161913169599927260939872283265866929121226645027207328564674216252511215567471051204017352954720741522516720090824789931087031590342608457906944489724024858634366488208556608262044661547003609333898271738583140790969252415855447490096338969138116153863829055588923043646318054559738098200027537301420827054282449696066398030855509410552258637675211649263222985447575923462120561659678323124585657984172417005636455228596856995635100426806367992034625911359068117719810340205024360909073957562805376806791631495516094583999151538792410921222750389221982818971050580796015126580236248061684503930643478376863369945260657330206724557417601677090855300422888372064409572498376019536839888747193057218109746235397782793751948766426278581469684311545266996026883350654956054678993067052141467310044051814209566237943159198374996095833466986228290823765572468664347231655649967446052691080576521214186664617345410551224353496960252896911594841179212385174936879712527688486193284352530212302229358310406486634474918196547064058892047591420758186524153814446583246706045957842449544136598985921825159252489722355504049124938884464554849027843249022373952884744236185872758626810667582605366014156561804554558706392427608922915409394776098364661057060996995819102793582050020551745179313157993777237263244538210179388511040146081901640596106942648438270848434174568287081945867201678984041449519056639743366354307261157293715993323113980989082528019698788989546301488617254688786658236095601261823767525630217311075338872009465648244400607042455120417202257443104517479903685168566082714938692737097271096276704717433719797691258165509554481896809252450096186506106004401636699631948218469296286940346572617740024213079576780080369986400067035946674232199866460823888146462106128041932436314018911937484311280316737047493769993221255354357199427393382288018098613708997863021983841514070227657558996971296063608611383839823477705388285384346327585249621901902317602450223420016978464853196657549258433909361822430752770211584606197183676818770078941746863001611460048235886188241391935018188735532209409464849567055982223969809687016399229047053932159828789862835899949299684330231704383806200771559543697070596880412867565029042371726540754360754926022561651374754369156651337567513875513794118365088049782219616330741668727135985049186183423649079065263884755558984916007797959136221823357185037519516427284378245332457916719813475990714670770492286203955352439807422484246193995226584987159770192955177181089176549824592234191566910110946799461875775348991015874259194066704379004044414335386683339954802099095476848497613826257836197458579739798494784137732189769715885548810170393656575855316254297539075168482933990086092586998139568571692802867903449889725493220281326033102455128040297948480122042667895792253124769654158982724993885023632129274067652553810223085873185582370225562417563372330266834270674721814217997421350028761919065950766154225348424623335321382016714711157013237836329421887987188184341164661977568529046436717531007667101418734436937930933036743993819826911199189395234921206436529850071955215916883091293368448846697503637827454595795013496145259153454134752753882090583111361145459352747777200411242541637774739890441750250338423719442814520304934395744001563333343247964968063892722032918385019647786177549036541904457234515302437439187606225611476383741409633447655811337807040141907819656824371561327425932475276309855721195270626715834226954609485945132409561742068895383955602079570645728715790862134990023733861226006478535386110264739532985369173328136510325501550379661838427360235171471907661173854586249499156279753182675134194538436743377589993517724022132702357209418643045504402515117092209869129292572224359563305423005171332555014217186533378782445191691734565341662273364000675639704648440352694385030936589161496403778385768670933740572728491482609160837994150169677666859637935766824463040146049783706090859966107413337668030932378002973685710875154300470674553709834783046958324708958946169972452379056748760324691252032996737708604863743777046114513774318819934923754406494724061836140487732118246261212297606751995869560372292068771521022555583852333526423061183090018755236501137742299209247185172871423808083277610410196631887098862429307154024124332531328737638368744208933155)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## L'aléatoire\n",
"\n",
"Pour rappel, un générateur de nombres pseudo-aléatoires (*Pseudo-Random Number Generator* ou PRNG en anglais)\n",
"est un programme générant des nombres pseudo-aléatoire (statistiquement proches de l'aléatoire qui\n",
"est un concept théorique assez difficile à simuler).\n",
"La plupart des PRNG fonctionnent sur le principe suivant : un PRNG est composé d'un état $x_n$ et d'une \n",
"fonction de transition $\\delta$.\n",
"Pour générer un nombre aléatoire, le PRNG renvoie son état (où une valeur calculée à partir de son état)\n",
"puis change d'état à l'aide de la fonction de transition."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 5\n",
"\n",
"Pour rentrer dans les détails, voyons l'exemple des PRNG *linéaires congruentiels*.\n",
"Dans leur cas, l'état est un entier $x_n$ et la fonction de transition $\\delta$ est donné par\n",
"$$\n",
"x_{n+1} = \\delta(x_n) = a \\cdot x_n + b ~ [M]\n",
"$$\n",
"où $a,b$ et $M$ sont des constantes bien choisies et $x_0$ est impair.\n",
"\n",
"Ici, nous choisirons les paramètres du célèbre générateur [RANDU](https://fr.wikipedia.org/wiki/RANDU) (cette référence pourra vous servir):\n",
"$$\n",
"x_{n+1} = 65539 \\cdot x_n ~\\left[2^{31}\\right].\n",
"$$\n",
"\n",
"Implémentez la classe ```RANDU``` suivante."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class RANDU:\n",
" def __init__(self, x0=3):\n",
" \"\"\"Initialise l'état du générateur\"\"\"\n",
" pass\n",
" \n",
" def next_int(self):\n",
" \"\"\"Renvoie le prochain entier x_{n+1} et affecte cette valuer à l'état du générateur\"\"\"\n",
" pass\n",
" \n",
" def next_float(self):\n",
" \"\"\"Renvoie un flottant (RDF) entre 0 et 1 calculé à partir du \"prochain entier\".\"\"\"\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"randu = RANDU(0xdeadbeef)\n",
"assert([randu.next_int() for _ in range (5)] == [1526217933, 1303754343, 529015605, 30239135, 1862745309])\n",
"assert([randu.next_float() for _ in range (5)] == [0.07771952031180263, 0.6596417152322829, 0.25837460858747363, 0.6134722144342959, 0.3554618093185127])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ci-dessous on peut observez la distribution des valeurs générées (qui semble bonne)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"prng = RANDU()\n",
"histogram([prng.next_int() % 100 for _ in range(100000)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ci-dessous, le tracé en 3D des points $(x_n, x_{n+1}, x_{n+2})$ généré par RANDU.\n",
"Faites tournez le cube pour voir le problème."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"xn = prng.next_float()\n",
"xn1 = prng.next_float()\n",
"xn2 = prng.next_float()\n",
"\n",
"plist = list()\n",
"\n",
"for _ in range(1000):\n",
" plist.append((xn,xn1,xn2))\n",
" xn2, xn1, xn = prng.next_float(), xn2, xn1\n",
"\n",
"point3d(plist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les points générés par RANDU sont en fait très prévisibles !"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"prng = RANDU()\n",
"\n",
"xn = prng.next_int()\n",
"xn1 = prng.next_int()\n",
"xn2 = prng.next_int()\n",
"for i in range(1000):\n",
" assert((xn2 - 6*xn1 + 9*xn) % 2**31 == 0)\n",
" xn2, xn1, xn = prng.next_int(), xn2, xn1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 6\n",
"\n",
"Donnez la défintion de la fonction ```predict_randu(xn, xn1)``` qui étant donné deux entiers $x_n$ et\n",
"$x_{n+1}$ renvoie l'entier $x_{n+2}$ générés par RANDU."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def predict_randu(xn, xn1):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i in range(1000):\n",
" xn, xn1 = prng.next_int(), prng.next_int()\n",
" assert(predict_randu(xn, xn1) == prng.next_int())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Heureusement, RANDU n'est pas le PRNG par défaut de Sagemath et vous n'avez pas à en implémenter un.\n",
"\n",
"Le module ```sage.misc.prandom``` de Sagemath (qui a la même API que le module ```random``` de la librairie\n",
"standard Python) fournit un PRNG."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"histogram([randrange(100) for _ in range(100000)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"xn = random()\n",
"xn1 = random()\n",
"xn2 = random()\n",
"\n",
"plist = list()\n",
"\n",
"for _ in range(1000):\n",
" plist.append((xn,xn1,xn2))\n",
" xn2, xn1, xn = random(), xn2, xn1\n",
"\n",
"point3d(plist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Outre les distributions uniformes sur les entiers et les flottants, plusieurs autres distributions\n",
"sont disponibles dans ce module"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"histogram([normalvariate(0,1) for _ in range(10000)], bins=100, density=True) + plot(exp(-x**2/2)/sqrt(2*pi), (-4,4), rgbcolor=\"red\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"histogram([weibullvariate(3,2) for _ in range(10000)], bins=100, density=True) + plot(2/3*(x/3)*exp(-(x/3)**2), (0,10), rgbcolor=\"red\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Outre les PRNG, deux nombreux ensembles implémentés dans Sagemath ont une méthode ```random_element()```\n",
"générant un élément aléatoire de cet ensemble.\n",
"\n",
"__Attention__: la qualité de cette méthode est elle même aléatoire : dans certains cas elle renvoie toujours\n",
"le même objet ou est \"peu\" aléatoire"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"histogram([RR.random_element() for _ in range(10000)], bins=100, density=True) # compris entre -1 et 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"histogram([QQ.random_element() for _ in range(10000)], bins=100, density=True) # pas très aléatoire"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"MatrixSpace(QQ, 10, 10).random_element()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for _ in range(10):\n",
" print(PolynomialRing(ZZ, 'z').random_element())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Les arbres\n",
"\n",
"Plusieurs structures d'arbres sont implémentés dans Sagemath. Nous n'en présenterons que deux ici,\n",
"qui pourront vous servir pour la suite :\n",
"+ les arbres plans enracinés : [`OrderedTree`](https://doc.sagemath.org/html/en/reference/combinat/sage/combinat/ordered_tree.html)\n",
"+ les arbres binaires : [`BinaryTree`](https://doc.sagemath.org/html/en/reference/combinat/sage/combinat/binary_tree.html)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"BinaryTree()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"BinaryTree('.')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"BinaryTree('[]')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ascii_art(BinaryTree('[]'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ascii_art(BinaryTree('[[],[]]'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"binary_tree = BinaryTree('[[[],.],[[[],.],[]]]')\n",
"binary_tree"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ascii_art(binary_tree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"view(binary_tree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"binary_tree.node_number()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"left_child, right_child = binary_tree"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ascii_art(left_child)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ascii_art(right_child)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for child in binary_tree:\n",
" print(child)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"another_btree = BinaryTree([binary_tree,[[],[]]])\n",
"ascii_art(another_btree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f = LabelledBinaryTree\n",
"labeled_btree = f([f([],2),f([],3)], 1)\n",
"ascii_art(labeled_btree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"labeled_btree.label()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"another_lbl_btree = another_btree.canonical_labelling()\n",
"ascii_art(another_lbl_btree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"left, right = another_lbl_btree\n",
"root = another_lbl_btree.label()\n",
"(root, left, right)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ordered_tree = OrderedTree([[[],[],[],[[[],[]],[]],[]],[],[[],[]],[]])\n",
"ascii_art(ordered_tree)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for child in ordered_tree:\n",
" print(child)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ordered_tree.node_number()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"len(ordered_tree)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 7\n",
"\n",
"Pour s'échauffer reproduisez l'arbre binaire suivant :\n",
"```\n",
" ___________o____________\n",
" / \\\n",
" __o___ _______o_______\n",
" / \\ / \\\n",
" o _o_ __o___ __o___\n",
" / \\ / \\ / \\ / \\\n",
"o o o o o _o_ o _o_\n",
" \\ / \\ / \\ / \\ / \\\n",
" o o o o o o o o o\n",
" \\ \\ \n",
" o o \n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"bt = BinaryTree()\n",
"ascii_art(bt)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"l, r = bt\n",
"rl, rr = r\n",
"assert(l == rl)\n",
"assert(l == rr)\n",
"assert(l.node_number() == 8)\n",
"assert(bt.node_number() == 26)\n",
"assert(bt.depth() == 6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Passons à quelques fonctions simples sur les arbres __binaires__:\n",
" + `is_leaf(t)` qui renvoie vraie si un arbre est réduit à une feuille (n'a pas d'enfants) et faux sinon\n",
" + `height(t)` : qui renvoie la hauteur (longueur de la branche la plus longue) de `t` (les feuilles ne comptent pas)\n",
" + `prefix_traversal(t)` : renvoie la listes des labels noeuds de `t` en ordre préfixe (racine puis parcours des enfants)\n",
" + `postfix_traversal(t)` : renvoie la listes des labels des noeuds de `t` en ordre postfixe (parcours des enfants puis racine)\n",
" + `infix_traversal(t)` : renvoie la listes des labels des noeuds de `t` en ordre infixe (parcours du fils gauche, puis racine, puis parcours du fils droit)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_leaf(t):\n",
" pass\n",
"\n",
"def height(t):\n",
" pass\n",
"\n",
"def prefix_traversal(t):\n",
" pass\n",
"\n",
"def postfix_traversal(t):\n",
" pass\n",
"\n",
"def infix_traversal(t):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(is_leaf(BinaryTree('.')))\n",
"assert(not is_leaf(BinaryTree([])))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"seed(0xdeadbeef) #pour que les tests soient toujours les mêmes\n",
"\n",
"for _ in range(10):\n",
" s = randrange(100,200)\n",
" t = BinaryTrees(s).random_element()\n",
" assert(height(t) == t.depth())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"l = [4, 9, 3, 5, 14, 16, 7, 1, 13, 10, 8, 15, 6, 2, 0, 11, 12]\n",
"lbt = LabelledBinaryTree(None)\n",
"for e in l:\n",
" lbt = lbt.binary_search_insert(e)\n",
"\n",
"assert(prefix_traversal(lbt) == [4, 3, 1, 0, 2, 9, 5, 7, 6, 8, 14, 13, 10, 11, 12, 16, 15])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(postfix_traversal(lbt) == [0, 2, 1, 3, 6, 8, 7, 5, 12, 11, 10, 13, 15, 16, 14, 9, 4])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(infix_traversal(lbt) == list(range(len(l))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Les graphes\n",
"\n",
"Les graphes sont des structures discètes décrivant des relations (arêtes ou arcs) entre des éléments (noeuds ou sommets).\n",
"\n",
"Dans Sagemath, on peut construire des graphes dirigés et non-dirigés.\n",
"Dans les deux cas, les graphes bénéficient des méthodes présentes dans [`generic_graph`](https://doc.sagemath.org/html/en/reference/graphs/sage/graphs/generic_graph.html) qui s'additionne à :\n",
"- [`DiGraph`](https://doc.sagemath.org/html/en/reference/graphs/sage/graphs/digraph.html) pour les graphes dirigés\n",
"- [`Graph`](https://doc.sagemath.org/html/en/reference/graphs/sage/graphs/graph.html) pours les graphes non-dirigés"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d = DiGraph({0 : [1,2,3], 2 : [0,3], 4 : [5,6,7]})\n",
"show(d)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d.edges()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d.vertices()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g = d.to_undirected()\n",
"show(g)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.edges()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.vertices()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.add_vertex('u')\n",
"g"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.add_edge('v','u')\n",
"g"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.add_edges([(1,'v'), (1,4), (7,'u')])\n",
"g"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g.neighbors(1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d.neighbors_in(2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d.neighbors_out(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 8\n",
"\n",
"Pour s'échauffer, reproduisez le graphe suivant :\n",
""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"g = Graph()\n",
"show(g)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(g.is_isomorphic(graphs.CompleteGraph(5).line_graph().complement()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On rappelle qu'une composante connexe d'un graphe est un ensemble de sommets du graphes tel qu'il existe un chemin entre chaque pair de ces sommets.\n",
"\n",
"Donnez la définition de la fonction `connected_components(g)` qui prend un graphe **non-dirigé** et renvoie une liste de ses composantes connexes (ensembles de sommets)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Exemple \n",
"g = graphs.RandomGNP(20,0.06)\n",
"show(plot(g))\n",
"print(g.connected_components())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def connected_components(g):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def f(s):\n",
" \"\"\"Construit un ensemble d'ensembles à partir d'une collection de collections\"\"\"\n",
" return {frozenset(x) for x in s}\n",
"\n",
"for i in range(101):\n",
" gnp = graphs.RandomGNP(100,(i/100).n()) # un graphe aléatoire\n",
" assert(f(gnp.connected_components()) == f(connected_components(gnp)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## L'anneau symbolique\n",
"\n",
"Outre ces capacités de calcul numériques (avec des nombres) Sagemath permet aussi de faire des calculs symboliques\n",
"(avec des symboles).\n",
"Ces calculs sont fait dans ```SR``` (le ```SymbolicRing```) ."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x, y = var('x,y')\n",
"3*x+2*y-5"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(3*x+2*y-5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"show(x**3-5*y*x+1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a, b = var('a,b')\n",
"t = (x**3-5*y*x+1).subs({x:3*a-b, y:b**2-1})\n",
"t"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"expand(t)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t.coefficient(a**3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"expand(t).coefficient(a**3) # Il faut toujours expand avant de demander les coefficients "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"expand(t.subs({b:1})).coefficients(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plot(x**2-10, (-10,10))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"solve(x**2+x-1 == 0,x)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"solutions = solve(cos(sqrt(x)) == exp(-42), x)\n",
"solutions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"solutions[0].rhs()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"solutions[0].lhs()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"diff(x**3-5*y*x+1,x) # Dérivée par rapport à x"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"integrate(x**3-5*y*x+1,x) # Primitive par rapport à x"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"integrate(x**3-5*x+1,x,0,2) # calcul d'intégrale"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f = function(\"f\")(x)\n",
"f"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"diff(f,x)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"integrate(diff(f,x),x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Attention__ : le ```SymbolicRing``` est (un peu trop) partout ! (exemples ci-dessous). "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pi"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(pi)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"type(pi.n())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 9\n",
"\n",
"Le but de cet exercice est d'interpoler une fonction par un polynôme.\n",
"\n",
"Interpoler une fonction $f(x)$ consiste à calculer une approximation de cette fonction à partir de fonction plus\n",
"simples, comme des polynômes.\n",
"\n",
"L'interpolation de Lagrange consiste à construire le polynôme $P$ de plus petit degré passant par les points\n",
"$(x_0, f(x_0)), \\dots, (x_n, f(x_n))$. $P$ est donné par :\n",
"$$\n",
"P(x) = \\sum_{i=0}^{n} f(x_i) \\prod_{j=0,~j \\neq i}^{n} \\frac{x-x_j}{x_i-x_j}\n",
"$$\n",
"\n",
"Donnez la défintion de la fonction ```lagrange_interpol(points)``` qui prend en entrée une liste de points\n",
"et renvoie le polynôme de Lagrange correspondant."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Astuce__ : on pourra utiliser ```enumerate```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def lagrange_interpol(points):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sage.repl.ipython_kernel.interact import interact\n",
"from sage.repl.ipython_kernel.widgets import TransformFloatRangeSlider, TransformIntSlider\n",
"@interact(nb_points=TransformIntSlider(min=2,max=20,value=7),\n",
" interval=TransformFloatRangeSlider(min=RDF(-10),max=RDF(10),value=(RDF(-5),RDF(5))),\n",
" f=cos(x),\n",
" continuous_update=False)\n",
"def animation(nb_points, interval, f):\n",
" start, end = interval\n",
" step = (end - start) / nb_points\n",
" show(plot(f, (start, end), rgbcolor=\"red\") + \n",
" plot(lagrange_interpol([(start+i*step, f(x=start+i*step)) for i in range(nb_points)]),\n",
" (start, end), rgbcolor=\"blue\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bonus (ou futur sujet de TP noté ?)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 4' : récurrences à coefficients constants\n",
"\n",
"Soit une suite $(u_n)_{n \\in \\mathbb{N}}$ définie par l'équation :\n",
"$$ a_0 \\,\\cdot\\, u_n + a_1 \\,\\cdot\\, u_{n+1} + \\dots + a_k \\,\\cdot\\, u_{n+k} = 0$$\n",
"\n",
"Le but de cet exercice est de retrouver les $a_i$ (et leur nombre !), étant donné les premiers $L$ termes \n",
"$(u_0, \\dots, u_L)$ de la suite.\n",
"\n",
"La solution est simplement calculée comme la solution d'un système d'équations linéaires :\n",
"$$\n",
"U\\cdot \\begin{pmatrix}a_{k}\\\\ \\dots \\\\ a_0\\end{pmatrix} = \\vec{0}\n",
"$$\n",
"où $U$ est carrée. À vous de retrouvez $U$ !\n",
"\n",
"\n",
"Donnez la définition de la fonction `build_U_matrix(seq, k)` qui prend en entrée une suite d'éléments\n",
"`seq` et un entier `k` et qui renvoie la matrice $U$ de taile $k\\times k$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def build_U_matrix(seq,k):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Tests à écrire vous même vu que je ne veux pas vous donner U"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Maintenant la matrice $U$ construite pour un $k$ donné, il suffit de chercher une solution pour chaque $k$\n",
"(tant que la séquence en entrée est assez longue).\n",
"\n",
"Donnez la définition de la fonction `guess_linear_sequence(seq)` qui renvoie une liste correspondant \n",
"aux $a_i$ de l'équation ci-dessus.\n",
"\n",
"__Indication :__ On peut calculer le [noyau d'une matrice](https://fr.wikipedia.org/wiki/Noyau_(alg%C3%A8bre)#Noyau_d'une_application_lin%C3%A9aire) à l'aide de la méthode `kernel`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def guess_linear_sequence(seq):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(guess_linear_sequence([0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) == vector([1,1,-1]))\n",
"assert(guess_linear_sequence([1,2,3,4]*10) == vector([1,0,0,0,-1]))\n",
"\n",
"pol = ZZ['x'].random_element(3)\n",
"assert(guess_linear_sequence([pol(i) for i in range(36)]) == vector([1, -4, 6, -4, 1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 4'' : récurrences à coefficients polynomiaux\n",
"\n",
"Ici l'exercice est le même sauf que les $a_i$ sont désormais des polynômes :\n",
"$$ a_0(n) \\,\\cdot\\, u_n + a_1(n) \\,\\cdot\\, u_{n+1} + \\dots + a_k(n) \\,\\cdot\\, u_{n+k} = 0$$\n",
"\n",
"Pour votre culture, ces suites sont appelées P-récursives et sont à la base d'une théorie dites \n",
"des fonctions holonomes.\n",
"\n",
"Suivez le même raisonnement que précédemment pour définir une fonction `guess_p_recursive_sequence`, qui renvoie\n",
"un vecteur d'expressions symboliques en la variable `n` (cf. [L'anneau symbolique](#symbolic)).\n",
"\n",
"__Indication :__ Pensez à borner le degré des polynômes."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def guess_p_recursive_sequence(seq):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x, n = var('x, n')\n",
"\n",
"catalans = [1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, 18367353072152, 69533550916004, 263747951750360, 1002242216651368, 3814986502092304]\n",
"assert(guess_p_recursive_sequence(catalans) == vector([4*n+2, n+2]))\n",
"assert(guess_p_recursive_sequence([factorial(i) for i in range(10)]) == vector([n+1, 1]))\n",
"\n",
"cos_terms = [0, 0, -1/2, 0, 1/24, 0, -1/720, 0, 1/40320, 0, -1/3628800, 0, 1/479001600, 0, -1/87178291200, 0, 1/20922789888000, 0, -1/6402373705728000, 0]\n",
"assert(guess_p_recursive_sequence(cos_terms) == vector([1, -4*n^2 - 6*n - 2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice 7' : Profil d'arbres\n",
"\n",
"Donnez la définition de la fonction `profile(t)` qui renvoie une liste contenant le nombre de noeuds à chaque \n",
"niveau de l'arbre `t`. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def profile(t):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for _ in range(10):\n",
" t = OrderedTrees(100).random_element()\n",
" assert(profile(t) == [t.node_number_at_depth(i) for i in range(t.depth())])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice : Fermeture transitive\n",
"\n",
"Soit un graphe dirigé $D$ et $u,v$ et $w$ trois sommets de $D$ tel qu'il existe un chemin de\n",
"$u$ vers $v$ et un chemin de $v$ vers $w$.\n",
"On appelle *arc de transitivité* de $u$ vers $w$, l'arc $u \\rightarrow w$. Cet arc modélise la propriété de \n",
"transitivité \"si il y a un chemin de $u$ à $v$ et de $v$ à $w$ alors il y a un chemin de $u$ à $w$\".\n",
"\n",
"La fermeture transitive d'un graphe $D$ est le graphe $\\tilde{D}$ dont les sommets sont ceux de $D$\n",
"et les arcs sont ceux de $D$ auxquels sont ajoutés les arcs de transitivité de $D$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#exemple\n",
"d = digraphs.RandomDirectedGNM(10,5)\n",
"show(plot(d))\n",
"show(plot(d.transitive_closure()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Définissez la fonction `transitive_closure(d)` qui calcule et renvoie la fermeture transitive de `d`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def transitive_closure(d):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n = 20\n",
"for m in range(n,n*(n+1)//2,n//2):\n",
" d = digraphs.RandomDirectedGNM(n,m)\n",
" assert(d.transitive_closure() == transitive_closure(d))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice : Équations différentielles\n",
"\n",
"L'exercice se découpe en deux parties indépendantes :\n",
" - [résolution d'équation différentielle](#solve-de)\n",
" - [application au PFD](#pfd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"#### Résolution d'équations différentielles\n",
"\n",
"Dans cet exercice nous allons mettre en animation le principe [fondamental de la dynamique](https://fr.wikipedia.org/wiki/Principe_fondamental_de_la_dynamique) (PFD) : brique de base d'un moteur physique.\n",
"\n",
"Pour ce faire, une première étape est de savoir résoudre des équations différentielles linéaires, du premier ordre :\n",
"$$ a(x) \\cdot f'(x) + b(x) \\cdot f(x) = c(x), ~\\text{avec}~f(x_0) = y_0 $$\n",
"où $a, b$ et $c$ sont des fonctions.\n",
"\n",
"On rappelle que les solutions $F_h(x)$ de l'équation homogène associée ($a(x) \\cdot f'(x) + b(x) \\cdot f(x) = 0$)\n",
"sont données par :\n",
"$$\n",
"F_h(x) = K \\exp\\left(\\int \\frac{b(x)}{a(x)}\\right).\n",
"$$\n",
"où $K$ dépend des conditions initiales.\n",
"\n",
"Donnez la définition de la fonction ```desolve_first_order_homogene(a, b)``` qui renvoie la solution\n",
"de l'équation homogène $a(x) \\cdot f'(x) + b(x) \\cdot f(x) = 0$ (on ne s'occupe pas de $K$ pour le moment)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def desolve_first_order_homogene(a, b, x=var('x')):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t = var('t')\n",
"assert(desolve_first_order_homogene(1, 1) - exp(x) == 0)\n",
"assert(desolve_first_order_homogene(1, cos(t), t) - exp(sin(t)) == 0)\n",
"assert(desolve_first_order_homogene(sin(x), cos(x)) - sin(x) == 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut maintenant résoudre l'équation différentielle en tenant compte des conditions initiales.\n",
"Il suffit de résoudre l'équation $f(x_0) = K\\cdot\\tilde{f(x_0)}$ où $\\tilde{f}$ est la solution\n",
"renvoyée par ```desolve_first_order_homogene```.\n",
"\n",
"Donnez la défintion de ```desolve_first_order_homogene_with_ics(a, b, x0, y0)``` qui renvoie une solution de\n",
"l'équation $a(x) \\cdot f'(x) + b(x) \\cdot f(x) = 0$ avec $f(x_0) = y_0$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def desolve_first_order_homogene_with_ics(a, b, x0, y0, x=var('x')):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(desolve_first_order_homogene_with_ics(1, 1, 0, 1) - exp(x) == 0)\n",
"assert(desolve_first_order_homogene_with_ics(1, cos(t), 0, 1, t) - exp(sin(t)) == 0)\n",
"assert(desolve_first_order_homogene_with_ics(sin(x), cos(x), pi/2, 1) - sin(x) == 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La [méthode de variation de la constante](https://fr.wikipedia.org/wiki/M%C3%A9thode_de_variation_des_constantes)\n",
"permet de déterminer une solution $F$ à l'équation initiale de la forme $F_i(x) = K(x) \\cdot F_h(x)$\n",
"(on fait varier la constante $K$ en la \"transformant\" en fonction $K(x)$).\n",
"Soit, en remplaçant $f$ par $F_i$ dans l'équation initiale\n",
"$$\n",
"K'(x) = \\frac{c(x)}{a(x) \\cdot F_h(x)}\n",
"$$\n",
"On en déduit $K(x)$ par un calcul de primitive puis la solution\n",
"$$ \n",
"F(x) = (K(x) + C) \\cdot F_h(x)\n",
"$$\n",
"où $C$ dépend des conditions initiales.\n",
"\n",
"Donnez la définition de la fonction ```desolve_first_order_with_ics(a,b,c,x0,y0)``` qui renvoie une\n",
"solution de l'équation\n",
"$$ a(x) \\cdot f'(x) + b(x) \\cdot f(x) = c(x), ~\\text{avec}~f(x_0) = y_0 $$\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def desolve_first_order_with_ics(a,b,c,x0,y0,x=var('x')):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(expand(desolve_first_order_with_ics(1,1,1,0,0,t)-(exp(t)-1)) == 0)\n",
"assert(expand(desolve_first_order_with_ics(1,-1,x*exp(x),0,1) - 1/2*x*e^x - 5/4*e^(-x) + 1/4*e^x) == 0)\n",
"assert(expand(desolve_first_order_with_ics(1,3/x,2/x**2,1,2)) + 1/(2*x) - 5*x**3/2 == 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"#### Application au PFD\n",
"\n",
"\n",
"On rappelle que le PFD stipule que la somme des forces s'appliquant à un objet est égal au produit de sa masse \n",
"et de son vecteur accélération :\n",
"\n",
"$$\n",
"\\sum \\vec{F} = m \\cdot \\vec{a} = m \\cdot \\left(\\begin{array}{c}x''(t)\\\\y''(t)\\end{array}\\right)\n",
"$$\n",
"\n",
"Ici les dérivés sont secondes, il faudra donc résoudre deux équa. diff. : une première pour obtenir $x'(t)$ et \n",
"une seconde pour obtenir $x(t)$.\n",
"\n",
"Le système à résoudre est donc :\n",
"$$\n",
"\\left\\{\n",
"\\begin{array}{l}\n",
"x''(t) = \\frac{{F_x}}{m}\\\\\n",
"y''(t) = \\frac{{F_y}}{m}\\\\\n",
"\\end{array}\n",
"\\right.\n",
"$$\n",
"La solution $(x'(t), y'(t))$ de ce système nous donne donc un nouveau système à résoudre pour obtenir\n",
"$(x(t), y(t))$. On partira de l'hypothèse que l'objet est lancé au temps $0$ du point $(0,0)$ avec \n",
"une vitesse initiale $(v_x, v_y)$.\n",
"\n",
"**Indication :** dans ce cas $F_x$ et $F_y$ sont des constantes. La résolution du système est donc obtenu par\n",
"une simple intégration.\n",
"\n",
"Donnez la définition de la fonction `solve_pfd(F, v0, m)` qui renvoie la solution $(x(t), y(t))$ du système, où :\n",
"+ `F` est un tuple de constante représentant les forces en présence\n",
"+ `v0` est un tuple donnant la vitesse initiale\n",
"+ `m` est un nombre : la masse de l'objet\n",
"\n",
"**Attention :** le retour doit être un couple d'expression symbolique faisant appraître la variable $t$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def solve_pfd(F, v0, m):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"var('g, m, vx, vy')\n",
"x, y = solve_pfd((0,-g), (vx, vy), m)\n",
"assert(x == t*vx)\n",
"assert(expand(y + 1/2*(g*t^2 - 2*m*t*vy)/m) == 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut alors comparer les trajectoires correspondant au même objet lancé sur Terre (en bleu), \n",
"sur la Lune (en rouge) ou sur Mars (en vert)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def max0(trajectoire):\n",
" def f():\n",
" x, y = trajectoire\n",
" return x(t=t), lambda t : max(0, y(t=t))\n",
" return f()\n",
"\n",
"terre = max0(solve_pfd((0,-9.81), (1, 1), 10))\n",
"lune = max0(solve_pfd((0,-1.62), (1, 1), 10))\n",
"mars = max0(solve_pfd((0,-3.71), (1, 1), 10))\n",
"\n",
"times = range(1,14)\n",
"frames = []\n",
"t = var('t')\n",
"pfffff = points([(13,0)])\n",
"for time in times:\n",
" plot_terre = parametric_plot(terre, (t, 0, time), xmin=0, xmax=13, ymin=0, ymax=3.5, rgbcolor=\"blue\")\n",
" plot_lune = parametric_plot(lune, (t, 0, time), xmin=0, xmax=13, ymin=0, ymax=3.5, rgbcolor=\"red\")\n",
" plot_mars = parametric_plot(mars, (t, 0, time), xmin=0, xmax=13, ymin=0, ymax=3.5, rgbcolor=\"green\")\n",
" frames.append(pfffff+plot_terre+plot_lune+plot_mars)\n",
"\n",
"show(animate(frames))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On souhaite maintenant prendre en compte les frottements de l'air sur l'objet.\n",
"De tels types de frottements sont en général modélisés par une force opposée à la vitesse de l'objet.\n",
"On a donc alors un système un peu plus complexe :\n",
"$$\n",
"\\left\\{\n",
"\\begin{array}{l}\n",
"x''(t) = \\frac{1}{m} F_x \\cdot x'(t) + C_x\\\\\n",
"y''(t) = \\frac{1}{m} F_y \\cdot y'(t) + C_y\\\\\n",
"\\end{array}\n",
"\\right.\n",
"$$\n",
"\n",
"Donnez la définition de la fonction `solve_full_pfd(F, C, v0, m)` dont les arguments sont les mêmes\n",
"que pour `solve_pfd` où l'on distingue la partie linéaire `F` de la partie affine `C`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour ceux n'ayant pas fait la première partie de l'exercice, vous pourrez utiliser la fonction `desolve` de\n",
"Sagemath pour résoudre les équations différentielles."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"desolve?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def solve_full_pfd(F, C, v0, m):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m,g,vx,vy = var('m,g,vx,vy')\n",
"x, y = solve_full_pfd((m,m),(0,-g),(vx,vy),m)\n",
"assert(expand(x - (-vx*(e^(-t) - 1))) == 0)\n",
"assert(expand(y + (g*t*e^t + m*vy + g)*e^(-t)/m - (m*vy + g)/m) == 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On observe alors l'effet des frottements sur la trajectoire en rouge par rapport à l'absence de \n",
"frottements sur la trajectoire en bleue."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from numpy import arange\n",
"\n",
"smooth = max0(solve_pfd((0,-9.81), (1, 1), 10))\n",
"rough = max0(solve_full_pfd((10,10), (0,-9.81), (1, 1), 10))\n",
"\n",
"times = arange(0.1,2.1,0.1)\n",
"frames = []\n",
"t = var('t')\n",
"pfffff = points([(2,0)])\n",
"for time in times:\n",
" plot_smooth = parametric_plot(smooth, (t, 0, time), xmin=0, xmax=2.1, ymin=0, ymax=0.5, rgbcolor=\"blue\")\n",
" plot_rough = parametric_plot(rough, (t, 0, time), xmin=0, xmax=2.1, ymin=0, ymax=0.5, rgbcolor=\"red\")\n",
" frames.append(pfffff+plot_smooth+plot_rough)\n",
"\n",
"show(animate(frames))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"solve_full_pfd((10,10), (0,-9.81), (1, 1), 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Les nombres complexes\n",
"\n",
"Les nombres complexes permettent de représenter des points dans le plan réelle $\\mathbb{R}^2$.\n",
"Là où on a l'habitude de désigner un point par ses coordonnées $(x,y)$, que l'on interprète comme \n",
"la combinaison linéaire $x\\begin{pmatrix}1\\\\ 0\\end{pmatrix} + y\\begin{pmatrix}0\\\\ 1\\end{pmatrix}$,\n",
"on l'écrit comme le nombre complexe $x + i\\cdot y$.\n",
"\n",
"Le __théorème fondamental du calcul complexe__ est la [formule d'Euler](https://fr.wikipedia.org/wiki/Formule_d%27Euler) valable pour tout nombre réel $x$ :\n",
"$$\n",
"cos(x) + i\\cdot sin(x) = e^{i x}\n",
"$$\n",
"\n",
"De cette formule on en déduit notamment l'identité $i^2 = -1$ :\n",
"$$\n",
"\\begin{aligned}\n",
"e^{i\\pi} &= cos(\\pi) + i \\cdot sin(\\pi) = -1\\\\\n",
" &= \\left(e^{i\\frac{\\pi}{2}}\\right)^2 \\\\\n",
" &= \\left(cos\\left(\\frac{\\pi}{2}\\right) + i \\cdot sin\\left(\\frac{\\pi}{2}\\right)\\right)^2\\\\\n",
" &= i^2\n",
"\\end{aligned}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"I**2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cette formule d'Euler et la propriété simple qui en découle ont de nombreuses conséquences, par exemple :\n",
"- le corps des nombres complexes est *algébriquement clos* : les racines d'un polynômes à coefficients complexes sont complexes (ce qui n'est pas le cas pour les réels, par exemple $x^2 + 1$)\n",
"- les applications affines complexes $z \\mapsto a\\cdot z + b$ sont exactement les similitudes (transformations géométriques composées de rotation, réflexion, translation et homothéties/dilatation) de $\\mathbb{R}^2$ (voir [similitudes (Wikipédia)](https://fr.wikipedia.org/wiki/Similitude_(g%C3%A9om%C3%A9trie)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"### Exercice : interprétation géométrique des nombres complexes\n",
"\n",
"Donnez la définition des fonctions suivantes, en utilisant uniquement des opération arithmétiques (somme, produit, etc) :\n",
"- `rotation(z, center, angle)` : qui calcule la rotation de centre `center` et d'angle `angle` du point `z`\n",
"- `reflexion(z, axis)` : qui calcul la symétrie par rapport à un axe de vecteur directeur `axis` du point `z`\n",
"- `homothetie(z, center, scale)` : qui calcule l'homothétie de rapport `scale` et centre `center` du point `z`\n",
"- `translation(z, vec)` : qui translate le point `z` d'un vecteur `vec` (représenté sous forme de complexes)\n",
"- `module(z)` : qui renvoie le module de `z`, c'est-à-dire la distance de `z` au point $0$ (analogue de la valeur absolue pour les nombres réels)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def rotation(z, center, angle):\n",
" pass\n",
"\n",
"def reflexion(z, axis):\n",
" pass\n",
"\n",
"def homothetie(z, centr, scale):\n",
" pass\n",
"\n",
"def translation(z, vec):\n",
" pass\n",
"\n",
"def module(z):\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Les complexes multi-précision\n",
"\n",
"Sagemath possède aussi une implémentation des nombres complexes multi-précision.\n",
"Comme pour les réels, c'est la bibliothèque GNU MPFR qui est en dessous.\n",
"\n",
"Pour les utiliser, il faut les construire avec ```CC```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"CC(3+2*I)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"CC(I*I)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"CC(exp(I*pi/4))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"CC(exp(I*pi/4)).argument()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(pi/4).n()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"abs(CC(exp(I*pi/4)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"abs(1+I)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Exercice : Ensemble de Mandelbrot\n",
"\n",
"Le but de cet exercice est de dessiner [l'ensemble de Mandelbrot](https://fr.wikipedia.org/wiki/Ensemble_de_Mandelbrot).\n",
"\n",
"Pour ce faire on utilisera la classe [```sage.repl.image.Image```](https://doc.sagemath.org/html/en/reference/repl/sage/repl/image.html]) de Sagemath, dont un exemple d'utilisation est donné ci-dessous."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sage.repl.image import Image\n",
"from itertools import product\n",
"\n",
"img = Image('RGB', (256, 256), 'white')\n",
"pix = img.pixels()\n",
"for i in range(0,256,16):\n",
" for w, h in product(range(16), range(16)):\n",
" pix[i+w,i+h] = (255, i, i)\n",
" pix[int(255-i-w),i+h] = (i, 255, i)\n",
"show(img)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L'ensemble de Mandelbrot est défini comme l'ensembles des nombres complexes $c$ telles que la suite\n",
"$u_{n+1} = u_n^2 + c$ est bornée.\n",
"On peut montrer que cela est équivalent à la condition $\\forall n, |u_n| <= 2$.\n",
"\n",
"De plus, les points :\n",
"+ $x+i\\cdot y$ vérifiant $x < p - 2p^2 + \\frac14$ avec $p = \\sqrt{ \\left(x - \\frac14\\right)^2 + y^2}$ sont dans l'ensemble\n",
"+ appartenant au disque de centre $(-1,0)$ et de rayon $\\frac14$ sont dans l'ensemble \n",
"\n",
"Définissez la fonction ```is_bounded(c, N)``` qui prend en argument un nombre complexe et un entier\n",
"et qui renvoie ```True``` si $\\forall n < N, |u_n| <= 2$ et ```False``` sinon."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_bounded(c, N):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"assert(is_bounded(CC(0.1,0), 100))\n",
"assert(is_bounded(CC(0.26, 0),10))\n",
"assert(not is_bounded(CC(0.26, 0), 100))\n",
"assert(is_bounded(CC(0.25, 0.25), 100))\n",
"assert(not is_bounded(CC(0.25, -1), 100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il faut maintenant représenter l'ensemble de Mandelbrot sur une image.\n",
"Étant donné la nature fractale de l'ensemble, on veut être capable de zoomer sur certaines zones\n",
"en particulier.\n",
"\n",
"Donnez la définition de la fonction ```img_mandelbrot_set(img_resolution, complex_zone)``` qui prend deux\n",
"arguments :\n",
"+ ```img_resolution``` : un ```tuple``` de deux entiers qui indique la résolution (nombre de pixels dans la\n",
" largeur et la hauteur) de l'image a renvoyer\n",
"+ ```complex_zone``` : un ```tuple``` de deux ```ComplexNumber``` indiquant le coin inférieur gauche et\n",
" le coin supérieur droit de la zone du plan complexe sur laquelle l'ensemble de Mandelbrot doit\n",
" être calculé\n",
"\n",
"Pour obtenir une image suffisament précise, on utilisera $100$ itérations dans les appels à \n",
"```is_bounded```."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def img_mandelbrot_set(img_resolution, complex_zone):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"img = img_mandelbrot_set((25,20),(CC(-2-I), CC(0.5+I)))\n",
"show(img)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Prends 1 a 2 minutes\n",
"%time img = img_mandelbrot_set((250,200),(CC(-2-I), CC(0.5+I)))\n",
"show(img)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bonus\n",
"\n",
"Si vous êtes arrivés jusqu'ici, voici une fonction ```is_bounded``` qui fait le même travail que la vôtre\n",
"mais en plus rapide. Elle prend en argument la partie réel et la partie imaginaire d'un complexe ainsi\n",
"que le nombre d'itération.\n",
"\n",
"Adaptez votre fonction de dessin pour s'en servir et exécuter la cellule suivante.\n",
"Profitez en pour augmenter le nombre d'itération (ou mettez le en argument)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%cython\n",
"\n",
"from libc.math cimport sqrt\n",
"\n",
"cpdef is_bounded(double cx, double cy, int N):\n",
" cdef int i = 0\n",
" cdef double x = 0, y = 0, tx = 0, ty = 0\n",
" cdef double p = sqrt((cx-1/4)**2+cy**2)\n",
" if cx < (p-2*p**2+1/4) or ((cx+1)**2+cy**2) < 1/16 :\n",
" return True\n",
" for i in range(N):\n",
" tx = x\n",
" ty = y\n",
" x = tx*tx - ty*ty + cx\n",
" y = 2*tx*ty + cy\n",
" if x*x+y*y > 4:\n",
" return False\n",
" return True"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"img = img_mandelbrot_set((800,640),(-2-I, 0.5+I))\n",
"show(img)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"c = -0.87591 + I*0.20464\n",
"delta = 0.53184*0.8*(-1-I)/2\n",
"img = img_mandelbrot_set((600,600),(c+delta, c-delta))\n",
"show(img)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 9.2",
"language": "sage",
"name": "sagemath"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}